measureColor

Measure color reproduction using Imatest® eSFR chart

Description

example

colorTable = measureColor(chart) measures the color values at all color regions of interest (ROIs) of an Imatest® eSFR chart.

[colorTable,colorCorrectionMatrix] = measureColor(chart) also returns a color correction matrix computed using a linear least squares fit.

Examples

collapse all

Read an image of an eSFR chart into the workspace.

I = imread('eSFRTestImage.jpg');

Create an esfrChart object, then display the chart with ROI annotations. The 16 color patch ROIs are labeled with white numbers.

chart = esfrChart(I);
displayChart(chart,'displayEdgeROIs',false, ...
    'displayGrayROIs',false,'displayRegistrationPoints',false)

Measure the color in all color patch ROIs.

colorTable = measureColor(chart)
colorTable=16×8 table
    ROI    Measured_R    Measured_G    Measured_B    Reference_L    Reference_a    Reference_b    Delta_E
    ___    __________    __________    __________    ___________    ___________    ___________    _______

     1         67            57            58          38.586           7.541         7.0812       15.15 
     2        156           127           122          62.182          13.225         13.826      9.8745 
     3         73            95           152          49.369        -0.51463        -20.062      18.455 
     4         62            79            58          43.926         -6.8587         17.278      14.849 
     5        104           109           171          53.415           9.457        -22.822       12.99 
     6        118           175           187           69.95         -20.889       -0.21752      13.123 
     7        214           192            69          78.643          1.8052         67.091      9.2399 
     8        154            73           138          46.853          41.998        -17.056      5.1282 
     9         62           120           182           51.05         -15.166        -22.416      22.813 
    10         55            80           185          40.811          8.7346        -44.265      22.782 
    11         79           135            72          55.716         -23.419         28.839      9.4826 
    12        152            53            77          42.759          44.167         7.9536      5.4168 
    13        169            91            52          58.211           27.58         47.578      15.988 
    14        142            63            87          47.012           39.15         8.5453      11.651 
    15         91            67           102          40.591          17.951         -9.525      10.897 
    16        152           183            80          70.505         -16.318         49.811      10.253 

Display the color accuracy measurements. Each square color patch is the measured color, and the thick surrounding border is the reference color for that ROI. Each color accuracy measurement is displayed as Delta_E, the Euclidean distance between measured and reference colors in the CIE 1976 L*a*b* color space. More accurate colors have a smaller Delta_E.

figure
displayColorPatch(colorTable)

For an alternative representation of the color accuracy measurements, plot the measured and reference colors in the CIE 1976 L*a*b* color space on a chromaticity diagram. Red circles indicate the reference color. Green circles indicate the measured color of each color patch. The chromaticity diagram does not portray the brightness of color.

figure
plotChromaticity(colorTable)

ROIs with a shorter distance between the reference and measurement points have smaller differences in chromaticity, which can contribute to a smaller value of Delta_E. However, brightness also contributes to the value of Delta_E. For example, even though the reference and measurement points for ROI 13 are near each other on the chromaticity diagram, they have a large Delta_E because of their large difference in brightness.

Input Arguments

collapse all

eSFR chart, specified as an esfrChart object.

Output Arguments

collapse all

Color values in each color patch, returned as a 16-by-8 table. The 16 rows correspond to the 16 color patches on the eSFR chart.

The eight columns represent these variables:

VariableDescription
ROIIndex of the sampled ROI. The value of ROI is an integer in the range [1, 16]. The indices match the ROI numbers displayed by displayChart.
Measured_R

Mean value of red channel pixels in an ROI. Measured_R is a scalar of the same data type as chart.Image, which can be of type single, double, uint8, or uint16.

Measured_G

Mean value of green channel pixels in an ROI. Measured_G is a scalar of the same data type as chart.Image.

Measured_B

Mean value of blue channel pixels in an ROI. Measured_B is a scalar of the same data type as chart.Image.

Reference_L

Reference L* value corresponding to the ROI. Reference_L is a scalar of type double.

Reference_a

Reference a* value corresponding to the ROI. Reference_a is a scalar of type double.

Reference_b

Reference b* value corresponding to the ROI. Reference_b is a scalar of type double.

Delta_EEuclidean color distance between the measured and reference color values, as outlined in CIE 1976.

Color correction coefficients, returned as a 4-by-3 matrix. colorCorrectionMatrix represents an affine transformation, used to color-correct images that are captured under similar lighting conditions as the test chart image.

Data Types: double

Introduced in R2017b