Measuring noise, and especially raw (sensor) noise, with Multicharts.
Starting with Imatest 3.9 (Master-only), Multicharts (Imatest ’s interactive module for measuring most of the well-known color and grayscale charts) can measure noise and Signal-to-Noise Ratio (SNR). These measurements include chrominance noise and the intrinsic noise and SNR of image sensors, which is derived from raw images.
Noise is only measured for charts with large enough patches to obtain good noise statistics, such as the 24-patch X-Rite Colorchecker. To display noise, click on 11. Noise analysis (not for all charts). The noise display options are located just to the right of the Settings buttons. Settings 1-9 measure noise (or SNR) for the grayscale patches-only. Settings 10-13 are for all patches; these are of particular interest for analyzing sensor noise using raw images.
- Noise vs. input density (RGB) Noise in pixels or % of maximum pixel level
- Signal/Noise (S/N) vs. input density (RGBY) The luminance (Y-channel) is used for S.
- SNR (dB) vs. input density (RGBY) SNR (dB) = 20 log10(S/N).
- Chroma noise vs. input density
- Chroma S/N vs. input density
- Chroma SNR (dB) vs. input density
- CIELAB (L*a*b*) noise
- CIELAB (L*a*b*) S/N
- CIELAB (L*a*b*) SNR (dB)
- Noise vs. pixel (all patches) These measurements are of primary interest in characterizing sensors from RAW (unprocessed or minimally processed) images
- S/N vs. pixel (all patches)
- SNR (dB) vs. pixel (all patches)
Here is a typical noise result for a JPEG image of the X-Rite Colorchecker. The plot is for the grayscale patches (bottom row).

Panasonic GF1, ISO 400
This plot shows noise, in units of percentage of maximum pixel level, for the R, G, B, and Y (luminance) channels for the grayscale patches (in the bottom row for the Colorchecker). Noise plots are selected in the Display area, and the details of the plot (noise measurements and units) are selected just below Display.
Chroma noise
Two types of chroma noise display are available.
Displays 4-6 show the noise for the Y, R-Y, and B-Y channels as well as total noise using two different weightings.. The Y channel is defined a little differently from most of Imatest (based on the paper, ISO 12232 revision: determination of chrominance noise weights for noise-based ISO calculation (http://dx.doi.org/10.1117/12.582447) by Sean Kelly and Brian Keelan): Y = 0.2125 R + 0.7154G + 0.0721 B). The total (weighted) noise is defined in this paper.

L*, a*, and b* (CIELAB) noise. Although CIELAB was designed to be a perceptually-uniform space, it is far from perfectly uniform, and there is very little literature on using CIELAB for noise measurements. Nevertheless it is of some interest. a* and b* could be a better measure of chrominance noise than R-Y and B-Y (above), but it is not well established, and there are no weighting factors that we are aware of.

Image sensor (RAW) noise
A remarkable property of RAW (unprocessed) images is that the noise in a pixel (or in a patch of identically-illuminated pixels) is a function of the pixel level, independent of color. This property is not observable once an image has been processed (demosaiced, white-balanced, noise-reduced, sharpened, etc.).
The equation is quite simple: Noise = (dark noise2 + k pixel level)1/2
For a detailed explanation of this equation we recommend the excellent introduction to the EMVA (European Machine Vision Association) 1288 standard. See http://www.emva.org/cms/index.php?idcat=26 and also http://www.emva.org/cms/upload/Standards/Stadard_1288/EMVA1288-3.0.pdf (the standard itself).
Raw noise is displayed in the following three noise displays, which are derived from all the patches in the image (color as well as grayscale):
| 10. | Noise vs. pixel (all patches) |
| 11. |
S/N vs. pixel (all patches) |
| 12. |
SNR (dB) vs. pixel (all patches) |
Since settings have to be exactly correct to measure sensor noise (and there have been a number of refinements in reading RAW images in Imatest 3.9), we’ll review the recommended settings for reading a Bayer RAW (undemosaiced) image.
Reading RAW files for sensor noise analysis
Imatest supports two kinds of RAW files.
- Commercial RAW files, from DSLRs and other relatively high-quality consumer cameras. These files are identified by standard extensions (CR2, NEF, RW2, etc.). They contain header data and are usually packed so that m pixels are stored in n bytes. There are demosaiced using dcraw or Libraw-derived programs.
- RAW files from development systems. These files rarely contain headers, and pixels are usually stored in 1 or 2 bytes. They are processed using Imatest’s Generalized Read RAW capability.
dcraw front-end for commercial raw files

Demosaicing should be set at RAW 16-bit (i.e., no demosaicing). Gamma should be 1.0 (Linear) and Auto white level should be unchecked.
Generalized Read RAW

To use Generalized Read RAW, select Settings, Read Raw Setup from the Imatest, Multicharts, or Rescharts windows. Enter or select an extension name (3 or 4 characters). “raw” is shown here. The settings shown above are for a specific system. You can test the settings by specifying an Output file format and pressing the Test button (lower-left). If you make an incorrect choice of sensor pixel size (Width * Height ≠ total pixels in file) the Test function will display the periodicity and suggest values. For RAW noise analysis, set White Balance to None, Demosaicing to none, White level to No change, and Bit shift to Auto or zero.
Interpreting the Bayer RAW (monochrome) file
When used with the recommended settings (above), both the dcraw front-end and Generalized Read Raw produce a monochrome image file that contains Bayer RAW image data. Whenever a monochrome image file is read, the dialog box shown below is opened, and you have to select the image type: Standard monochrome, Bayer RAW (undemosaiced), or Demosaic (convert from Bayer RAW to full color using Matlab’s relatively simple routine).
For measuring image sensor noise, select .
Select for analyzing sensor noise.
Image sensor noise in RAW files
RAW files have the remarkable property that the noise in a pixel is a function of the pixel level, independent of the color. This property is masked in processed files because of demosaicing, noise reduction, and the application of the color correction matrix and the gamma/tonal response curve. If you’ve followed the above procedure carefully you should be able to analyze the raw pixels (most of the time; I’ve had difficulty with Canon Raw files, which have gamma well under 1).
Here is the noise as a function of pixel level for a Raw (RW2) file from a Panasonic GF1 compact system camera set to ISO 400. The gray line is the fit to the equation, Noise = (dark noise2 + k pixel level)1/2
Noise as a function of input pixel level (displayed logarithmically)
Here is the Signal-to-Noise Ratio (SNR) in dB for the same image. (SNR(dB) = 20 log10(S/N), where signal S is the mean pixel level of the patch.) The gray line is the fit to the equation.

The fit is remarkably good, though we noticed a deviation in the SNR curve in a case where there was apparently an offset in the pixel level.


