В этом примере показано, как настроить цвета изображения, чтобы лучше соответствовать стандартизированному набору цветов на тестовом графике пространственной частотной характеристики ребра Imatest ® (eSFR).
Считайте изображение тестового графика.
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] Иматест®. «Esfr». https://www.imatest.com/mathworks/esfr/.
displayColorPatch
| esfrChart
| measureColor
| plotChromaticity