Hi Yvonne,
As for the actual noise on the lab computer, looking at the values through Matlab (loading in the images as matrices after generation), they seem to be identical (in terms of min/max values and distribution of values) except for a “colormap” that came with the image from the old code when loaded in by clicking on the file and not through imread. Does this sound as expected? This seems weird, since they look so visually different as images.
Yes, it makes sense that the pixel values in both images have the same min/max and distribution. The difference is in the interpretation of those values, and that’s where the colorspace is crucial. If you want to know more, Apple has a reasonably-understandable overview of how color management works. (FYI, I am in no way an expert on this topic!)
Also, BMP (unlike TIFF) uses indexed color. The “colormap” is probably the color index of the image.
how does MWorks color correct? Does it assume the monitor is calibrated?
No, it doesn’t assume any particular calibration of the display.
When color management is enabled, stimuli are rendered in a “linearized” sRGB color space (i.e. a color space with the same gamut as sRGB but a linear gamma). The RGB values in a stimulus’ color parameter are interpreted as belonging to this color space, and image files are color matched to this color space. Before being presented, each output frame is converted to the target display’s color space, which is defined by the ICC profile assigned to the display (System Preferences → Displays → Color).
This is the same color-management process that is used throughout macOS. As I alluded to previously, the accuracy of the process depends on the accuracy of the display’s profile. The default profile is probably fine, but if you’re worried about it, you can profile your displays yourself using, e.g., an i1Display Pro or equivalent.
As for why we’d bother with all this, the main benefit in MWorks is that you get linear luminance response, so that, e.g., a stimulus with color 0.5,0.5,0.5 has a luminance half way between the minimum and maximum of the display. It probably seems strange to think this would ever not be the case. However, when color management is disabled, colors are interpreted as belonging to the color space of the display (and not “linearized” sRGB), and that color space is almost certainly not linear. For example, on one of the displays I’m using, the color 0.5,0.5,0.5 matches 0.22,0.22,0.22 in linear sRGB. This is why MWorks’ default “50%” gray background looks noticeably darker when color management is off.
(As a side note, it’s also possible to get linear luminance by “linearizing” your display. Basically, this means applying a gamma correction to the display that is the inverse of the display’s native gamma, thereby canceling out the nonlinearity. This does work, and in fact, at the request of some users, the current MWorks nightly build even supports this directly. However, this method is inferior to proper color correction. In addition to making the display look bonkers for any non-MWorks content, it also completely mangles MWorks’ presentation of images with non-linear colorspaces, meaning pretty much any image that hasn’t been created expressly for display on such a “linearized” monitor. As you may have guessed, I don’t recommend this approach!)
Anyway, sorry to drag you in to the color management weeds. My previous recommendation still stands: either upgrade to 0.8 and enable color management, or don’t assign an ICC profile to the noise images.
Chris