В этом примере показано, как выполнять стандартные измерения качества на тестовой диаграмме пространственной частотной характеристики границы (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, который автоматически определяет интересующие области (ROI) на основе обнаруженных маркеров регистрации.
chart = esfrChart(I);
Выделите и промаркируйте обнаруженные ROI для визуального подтверждения того, что ROI подходят для измерений.
displayChart(chart)

Все 60 наклонных краевых ROI (помеченных зеленым цветом) видны и центрированы на соответствующих краях. Кроме того, 20 ROI серых патчей (помеченных красным цветом) и 16 ROI цветных патчей (помеченных белым цветом) видны и содержатся в пределах границы каждого патча. Диаграмма импортирована правильно.
Измерьте резкость всех 60 наклонных краевых ROI. Также измерить усредненную горизонтальную и вертикальную резкость этих ROI.
[sharpnessTable,aggregateSharpnessTable] = measureSharpness(chart);
Просмотрите график SFR для первых четырех ROI.
plotSFR(sharpnessTable,'ROIIndex',1:4,'displayLegend',false,'displayTitle',true)




Отображение среднего значения SFR усредненных вертикальных и горизонтальных краев. Средняя вертикальная SFR падает быстрее, чем средняя горизонтальная SFR. Поэтому средняя вертикальная кромка менее резкая, чем средняя горизонтальная кромка.
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для корректировки цвета изображений тестовой диаграммы. Пример см. в разделе Исправление цветов с помощью матрицы цветокоррекции.
[1] Imatest ®. «Эсфр.» https://www.imatest.com/mathworks/esfr/.
displayChart | esfrChart | measureChromaticAberration | measureColor | measureIlluminant | measureNoise | measureSharpness