В этом примере показано, как выполнить стандартные качественные измерения на тестовом графике ребра пространственной частотной характеристики (eSFR) Imatest®. Измеренные свойства включают резкость, хроматическую аберрацию, шум, освещение и точность цветопередачи.
Считайте изображение графика eSFR в рабочую область. Отобразите график.
I = imread('eSFRTestImage.jpg'); figure imshow(I) title('Captured Image of eSFR Chart') text(size(I,2),size(I,1)+15, ... ['Chart courtesy of Imatest',char(174)],'FontSize',10,'HorizontalAlignment','right');
Создайте тестовый объект диаграммы eSFR, который автоматически задает видимые области (ROIs) на основе обнаруженных регистрационных маркеров.
chart = esfrChart(I);
Подсветите и пометьте обнаруженные ROI, чтобы визуально подтвердить, что ROI подходят для измерений.
displayChart(chart)
Все 60 наклонных ROI ребра (помеченный в зеленом) отображаются и сосредоточены на соответствующих ребрах. Кроме того, 20 серых ROI закрашенной фигуры (помеченный в красном) и 16 ROI цветового поля (помеченный в белом) отображаются и содержатся в контуре каждой закрашенной фигуры. График правильно импортируется.
Измерьте резкость всех 60 наклонных ROI ребра. Также измерьте усредненную горизонтальную и вертикальную резкость этих ROI.
[sharpnessTable,aggregateSharpnessTable] = measureSharpness(chart);
Отобразите график швейцарского франка для первых четырех ROI.
plotSFR(sharpnessTable,'ROIIndex',1:4,'displayLegend',false,'displayTitle',true)
Отобразите средний швейцарский франк усредненных вертикальных и горизонтальных ребер. Средний вертикальный швейцарский франк понижается более быстро, чем средний горизонтальный швейцарский франк. Поэтому среднее вертикальное ребро менее резко, чем среднее горизонтальное ребро.
plotSFR(aggregateSharpnessTable)
Измерьте хроматическую аберрацию во всех наклонных ROI ребра.
chTable = measureChromaticAberration(chart);
Постройте нормированный профиль интенсивности этих трех цветовых каналов в первом ROI. Сохраните нормированный краевой профиль в отдельной переменной, edgeProfile
, для ясности.
roi_index = 1; edgeProfile = chTable.normalizedEdgeProfile{roi_index}; figure p = length(edgeProfile.normalizedEdgeProfile_R); plot(1:p,edgeProfile.normalizedEdgeProfile_R,'r', ... 1:p,edgeProfile.normalizedEdgeProfile_G,'g', ... 1:p,edgeProfile.normalizedEdgeProfile_B,'b') xlabel('Pixel') ylabel('Normalized Intensity') title(['ROI ' num2str(1) ' with Aberration ' num2str(chTable.aberration(1))])
Цветовые каналы имеют подобные нормированные профили интенсивности, и не много цветного окаймления отображается вдоль ребра.
Измерьте шум с помощью 20 серых ROI закрашенной фигуры.
noiseTable = measureNoise(chart);
Постройте средний необработанный сигнал и отношение сигнал-шум (SNR) в каждом полутоновом ROI.
figure subplot(1,2,1) plot(noiseTable.ROI,noiseTable.MeanIntensity_R,'r', ... noiseTable.ROI,noiseTable.MeanIntensity_G,'g', ... noiseTable.ROI,noiseTable.MeanIntensity_B,'b') title('Signal') ylabel('Intensity') xlabel('Gray ROI Number') grid on subplot(1,2,2) plot(noiseTable.ROI,noiseTable.SNR_R,'r', ... noiseTable.ROI,noiseTable.SNR_G,'g', ... noiseTable.ROI,noiseTable.SNR_B,'b') title('SNR') ylabel('dB') xlabel('Gray ROI Number') grid on
Оцените освещение сцены с помощью 20 серых ROI закрашенной фигуры. Источник света имеет более сильный синий компонент более слабый красный компонент, который сопоставим с синим оттенком тестового изображения графика.
illum = measureIlluminant(chart)
illum = 1×3
110.9147 116.0008 123.2339
Измерьте точность цветопередачи с помощью 16 ROI цветового поля.
[colorTable,ccm] = measureColor(chart);
Отобразите средний измеренный цвет и ожидаемый цвет ROI. Отобразите измерение точности цветопередачи, Delta_E
. Ближе Delta_E
значение к 1, менее заметное, которое цветовое различие. Типичные значения Delta_E
лежите в диапазоне от 3 до 6 для печати и до 20 в другом коммерческом применении.
figure displayColorPatch(colorTable)
Постройте измеренное, и ссылочное раскрашивает CIE 1976 L*a*b* цветовое пространство на схеме цветности. Красные круги указывают на ссылочный цвет. Зеленые круги указывают на измеренный цвет каждого цветового поля.
figure plotChromaticity(colorTable)
Можно использовать матрицу коррекции цвета, ccm
, к цветному правильному тестовые изображения графика. Для примера смотрите, что Правильные Цвета Используют Матрицу Коррекции цвета.
displayChart
| esfrChart
| measureChromaticAberration
| measureColor
| measureIlluminant
| measureNoise
| measureSharpness