Этот пример показывает, как настроить цвета изображения, чтобы лучше совпадать со стандартизированным набором цветов на тестовом графике ребра пространственной частотной характеристики (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)
displayColorPatch
| esfrChart
| measureColor
| plotChromaticity