exponenta event banner

Правильные цвета Используя матрицу коррекции цвета

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

Смотрите также

| | |

Похожие темы