exponenta event banner

Коррекция цветов с помощью матрицы цветокоррекции

В этом примере показано, как настроить цвета изображения, чтобы лучше соответствовать стандартизированному набору цветов на тестовой диаграмме пространственной частотной характеристики (eSFR) края Imatest ®.

Получение матрицы цветокоррекции из изображения тестовой диаграммы

Прочтите изображение тестовой диаграммы.

I = imread('eSFRTestImage.jpg'); 

Создание esfrChart объект, хранящий информацию о тестовой диаграмме. Отобразите диаграмму, выделив 16 цветовых фрагментов. Изображение имеет синий оттенок.

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

Figure eSFR test chart contains an axes. The axes contains 17 objects of type image, text.

Измерьте точность цвета 16 цветовых фрагментов с помощью measureColor функция. Функция также возвращает матрицу цветокоррекции, которая используется для цветокоррекции.

[colorTable,ccm] = measureColor(chart);

Сравните измеренные и ссылочные цвета на цветовой схеме. Чем ближе Delta_E значение равно 1, чем менее заметна цветовая разница.

displayColorPatch(colorTable)

Figure Visual Color Comparison contains an axes. The axes contains 17 objects of type image, text.

Коррекция цвета изображения тестовой диаграммы

Коррекция цвета исходного изображения тестовой диаграммы и отображение результата.

I_cc = imapplymatrix(ccm(1:3,:)',I,ccm(4,:));
imshow(I_cc)
title('Color-Corrected Image Using Color Patches')

Figure Visual Color Comparison contains an axes. The axes with title Color-Corrected Image Using Color Patches contains an object of type image.

Создание esfrChart объект, хранящий информацию о тестовой диаграмме с поправкой на цвет. Измерьте точность цвета 16 цветокорректированных цветовых фрагментов.

chart_cc = esfrChart(I_cc);
colorTable_cc = measureColor(chart_cc);

Сравните скорректированные и ссылочные цвета на схеме цветовых исправлений. Измеренные погрешности цвета, delta_E, меньше для изображения с поправкой на цвет, чем для исходного изображения. Поэтому цвета на этом изображении лучше совпадают с эталонными цветами. Однако теперь график имеет общий желтый оттенок и контраст изображения уменьшился.

displayColorPatch(colorTable_cc)

Figure Visual Color Comparison contains an axes. The axes contains 17 objects of type image, text.

Улучшение цветокоррекции с помощью серых фрагментов

Цветокоррекцию можно улучшить, включив серые фрагменты, а также цветовые фрагменты в области наименьших квадратов. Отображение исходной диаграммы с выделением 20 серых и 16 цветовых фрагментов.

displayChart(chart,'displayEdgeROIs',false, ...
    'displayRegistrationPoints',false)

Figure eSFR test chart contains an axes. The axes contains 37 objects of type image, text.

Получите ссылочные значения 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')

Figure eSFR test chart contains an axes. The axes with title Color-Corrected Image Using Gray and Color Patches contains an object of type image.

Сравните скорректированные и ссылочные цвета на схеме цветовых исправлений. Некоторые из измеренных цветовых ошибок уменьшились, в то время как другие увеличились.

chart_cc2 = esfrChart(I_cc2);
colorTable_cc2 = measureColor(chart_cc2);
displayColorPatch(colorTable_cc2)

Figure Visual Color Comparison contains an axes. The axes contains 17 objects of type image, text.

Ссылки

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

См. также

| | |

Связанные темы