chart = esfrChart(I);
displayChart(chart,'displayEdgeROIs',false, ...
'displayGrayROIs',false,'displayRegistrationPoints',false)
颜色校正测试图表图像
对原始测试图图像进行颜色校正并显示结果。
I_cc = imapplymatrix(ccm(1:3,:)',I,ccm(4,:));
imshow(I_cc)
title('Color-Corrected Image Using Color Patches')
创建一个
esfrChart
对象,用于存储有关颜色校正测试图表的信息。测量 16 个颜色校正色块的颜色准确度。
chart_cc = esfrChart(I_cc);
colorTable_cc = measureColor(chart_cc);
比较色块图上的校正颜色和参考颜色。颜色校正图像的测量颜色误差,
delta_E
,小于原始图像的。因此,该图像中的颜色更符合参考颜色。但是,图表现在整体呈黄色,图像的对比度降低。
displayColorPatch(colorTable_cc)
使用灰色补丁改善色彩校正
您可以通过在最小二乘拟合中包含灰色块和色块来改进颜色校正。显示原始图表,突出显示 20 个灰色块和 16 个色块。
displayChart(chart,'displayEdgeROIs',false, ...
'displayRegistrationPoints',false)
获取颜色和灰度补丁的参考 Lab 值,这些值存储在eSFR 图表对象的
ReferenceColorLab
和
ReferenceGrayLab
属性中。将这些值转换为 RGB 颜色空间。
referenceLab = [chart.ReferenceColorLab; chart.ReferenceGrayLab];
referenceRGB = lab2rgb(referenceLab,'outputtype','uint8');
使用
measureNoise
函数,测量 20 个灰色块中每一个的平均灰度值。
noiseTable = measureNoise(chart);
measuredGrayRGB = [noiseTable.MeanIntensity_R, ...
noiseTable.MeanIntensity_G, ...
noiseTable.MeanIntensity_B];
连接颜色和灰度色块的所有测量的 RGB 颜色值。
measuredColorRGB = [colorTable.Measured_R, ...
colorTable.Measured_G, ...
colorTable.Measured_B];
measuredRGB = [measuredColorRGB; measuredGrayRGB];
ccm_cc = double([measuredRGB ones(36,1)]) \ double(referenceRGB);
色彩校正并显示结果。图表不再有黄色调,图表的整体外观得到改善。
I_cc2 = imapplymatrix(ccm_cc(1:3,:)',I,ccm_cc(4,:)');
imshow(I_cc2)
title('Color-Corrected Image Using Gray and Color Patches')
比较色块图上的校正颜色和参考颜色。一些测得的颜色误差有所减少,而另一些则有所增加。
chart_cc2 = esfrChart(I_cc2);
colorTable_cc2 = measureColor(chart_cc2);
displayColorPatch(colorTable_cc2)
参考文献