В этом примере показано, как настроить цвета изображения, чтобы лучше соответствовать стандартизированному набору цветов на тестовой диаграмме пространственной частотной характеристики (eSFR) края Imatest ®.
Прочтите изображение тестовой диаграммы.
I = imread('eSFRTestImage.jpg'); Создание esfrChart объект, хранящий информацию о тестовой диаграмме. Отобразите диаграмму, выделив 16 цветовых фрагментов. Изображение имеет синий оттенок.
chart = esfrChart(I); displayChart(chart,'displayEdgeROIs',false, ... 'displayGrayROIs',false,'displayRegistrationPoints',false)

Измерьте точность цвета 16 цветовых фрагментов с помощью measureColor функция. Функция также возвращает матрицу цветокоррекции, которая используется для цветокоррекции.
[colorTable,ccm] = measureColor(chart);
Сравните измеренные и ссылочные цвета на цветовой схеме. Чем ближе Delta_E значение равно 1, чем менее заметна цветовая разница.
displayColorPatch(colorTable)

Коррекция цвета исходного изображения тестовой диаграммы и отображение результата.
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)

Получите ссылочные значения L * a * b * цветовых и оттенков серого, которые хранятся вReferenceColorLab и ReferenceGrayLab свойства объекта диаграммы eSFR. Преобразуйте эти значения в цветовое пространство RGB.
referenceLab = [chart.ReferenceColorLab; chart.ReferenceGrayLab]; referenceRGB = lab2rgb(referenceLab,'outputtype','uint8');
Измерьте среднее значение серого в каждом из 20 сегментов серого цвета с помощью measureNoise функция.
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)

[1] Imatest ®. «Эсфр.» https://www.imatest.com/mathworks/esfr/.
displayColorPatch | esfrChart | measureColor | plotChromaticity