measureSharpness

Измерьте пространственную частотную характеристику с помощью графика Imatest® eSFR

Описание

sharpnessTable = measureSharpness(chart) измеряет пространственную частотную характеристику (SFR) во всех наклонных видимых областях (ROIs) ребра графика Imatest® Extended eSFR. sharpnessTable включает частоту для каждого ROI, в котором ответ спадает до 50% начальных и пиковых значений.

пример

sharpnessTable = measureSharpness(chart,Name,Value) измеряет швейцарский франк во всех заданных наклонных ROI ребра, задавая дополнительные параметры.

[sharpnessTable,aggregateSharpnessTable] = measureSharpness(___) также возвращает средний швейцарский франк вертикальных и горизонтальных ROI, с помощью входных параметров любого из предыдущих синтаксисов.

Примеры

свернуть все

Считайте изображение графика eSFR в рабочую область.

I = imread('eSFRTestImage.jpg');

Создайте esfrChart объект, затем отобразите график с аннотациями ROI. 60 наклонных ROI ребра помечены зелеными числами.

chart = esfrChart(I);
displayChart(chart,'displayColorROIs',false,...
    'displayGrayROIs',false,'displayRegistrationPoints',false)

Измерьте резкость края в ROI 25-28 и возвратите измерения в sharpnessTable. Включайте измерения MTF70 и MTF30 путем определения 'percentResponse' аргумент пары "имя-значение".

sharpnessTable = measureSharpness(chart,'ROIIndex',25:28,'PercentResponse',[70 30])
sharpnessTable=4×9 table
    ROI    slopeAngle    confidenceFlag        SFR           comment                          MTF70                                           MTF70P                                        MTF30                                       MTF30P                 
    ___    __________    ______________    ____________    ____________    ____________________________________________    ____________________________________________    ________________________________________    ________________________________________

    25       4.2391          true          {88x5 table}    {0x0 double}    0.060224    0.058884    0.051757    0.058482    0.060224    0.058884    0.051757    0.058482    0.10732    0.11267    0.11185    0.11178    0.10732    0.11267    0.11185    0.11178
    26       5.0254          true          {88x5 table}    {0x0 double}     0.18561     0.18597     0.18667     0.18597     0.18561     0.18597     0.18667     0.18597    0.26028    0.26236    0.26224    0.26241    0.26028    0.26236    0.26224    0.26241
    27       4.7131          true          {88x5 table}    {0x0 double}    0.070042    0.069599    0.066239     0.06951    0.070042    0.069599    0.066239     0.06951     0.2169    0.21863    0.22086    0.21904     0.2169    0.21863    0.22086    0.21904
    28       4.8996          true          {88x5 table}    {0x0 double}     0.19485     0.20418     0.19669     0.20168     0.19485     0.20418     0.19658     0.20168    0.26447    0.27531    0.26004    0.27188    0.26447    0.27531    0.25998    0.27188

Выберите четвертую строку в таблице резкости, которая соответствует ROI 28. Отобразите график швейцарского франка ROI.

idx = 4;
plotSFR(sharpnessTable(idx,:))

Распечатайте MTF70 и измерения MTF30 ROI. Сравните измерения с графиком.

Измерение MTF70 красных и синих цветовых каналов немного меньше, чем 0,2, в то время как измерение MTF70 зеленых каналов и каналов яркости немного больше, чем 0,2. Эти измерения соглашаются с визуальным осмотром графика швейцарского франка, на котором значение швейцарского франка 0,7 происходит на пространственных частотах приблизительно 0,2 пары линии на пиксель.

mtf70 = sharpnessTable.MTF70(idx,:)
mtf70 = 1×4

    0.1949    0.2042    0.1967    0.2017

Измерение MTF30 синего цветового канала заметно меньше, чем измерение MTF30 других цветовых каналов. Это измерение соглашается с визуальным осмотром графика швейцарского франка, на котором кривая швейцарского франка синего канала понижается более быстро, чем другие каналы.

mtf30 = sharpnessTable.MTF30(idx,:)
mtf30 = 1×4

    0.2645    0.2753    0.2600    0.2719

Входные параметры

свернуть все

график eSFR, заданный как esfrChart объект.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: measureSharpness(myChart,'ROIIndex',2) измеряет резкость только ROI 2.

Индексы ROI, чтобы включать в измерения, заданные как разделенная запятой пара, состоящая из 'ROIIndex' и скаляр или вектор целых чисел в области значений [1, 60]. Индексы совпадают с числами ROI, отображенными displayChart.

Примечание

measureSharpness использует пересечение ROI, заданных 'ROIIndex' и 'ROIOrientation'.

Пример: 29:32

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Ориентация ROI, заданная как разделенная запятой пара, состоящая из 'ROIOrientation' и 'both', 'vertical', или 'horizontal'. measureSharpness функция выполняет измерения только на ROI с заданной ориентацией.

Примечание

measureSharpness использует пересечение ROI, заданных 'ROIIndex' и 'ROIOrientation'.

Пример: 'vertical'

Типы данных: char | string

Значение частотной характеристики, в которой можно сообщить о соответствующей пространственной частоте, заданной как разделенная запятой пара, состоящая из 'PercentResponse' и скаляр или вектор целых чисел в области значений [1, 100].

Каждое значение PercentResponse добавляют два столбца к sharpnessTable и aggregateSharpnessTable выходные аргументы. Столбцы указывают на частоту, на которой швейцарский франк спадает до заданного процента начальных и пиковых значений. Например, когда PercentResponse имеет значение 50, обе выходных таблицы имеют столбцы MTF50 и MTF50P. Эти столбцы указывают на частоту, на которой швейцарский франк спадает до 50% начального значения и пикового значения, соответственно.

Пример: 30

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

Выходные аргументы

свернуть все

Измерения швейцарского франка ребра, возвращенного как m-by-n таблица. m является количеством произведенных ROI. n изменяет значения в зависимости от PercentResponse. Первые пять столбцов всегда присутствуют и представляют эти переменные:

ПеременнаяОписание
ROIИндекс произведенного ROI. Значение ROI целое число в области значений [1, 60].
slopeAngleУгол между наклонным ребром и чистой вертикалью или горизонтальный, в зависимости от ориентации ROI. Угол измеряется в градусах, и он возвращен как скаляр типа double.
confidenceFlag

Булев флаг, который указывает, надежно ли измерение резкости. confidenceFlag true когда измерение надежно. confidenceFlag false когда измерение ненадежно из-за следующих условий:

  • slopeAngle меньше 3,5 градусов или больше чем 15 градусов.

  • Контраст в ROI меньше 20%.

Контраст наклонного ROI ребра задан как 100 * (IHigh - ILow)/(IHigh + ILow), где IHigh и ILow предполагаемая средняя интенсивность высоких и низких областей интенсивности через ребро. Контраст вычисляется только для красного канала.

SFR

Пространственная частотная характеристика ребра в ROI. SFR f-by-5 таблица. Эти пять столбцов представляют значение частоты и красный, зеленый, синий, и значения яркости, соответствующие той частоте. f является количеством выборок частоты MTF.

Яркость (Y) является линейной комбинацией красного (R), зеленый (G), и синий (B) каналы согласно:

Y = 0.213R + 0.715G + 0.072B

commentКогда confidenceFlag false, затем comment описывает причину, измерение ненадежно. Когда confidenceFlag true, затем comment пустой вектор, [].

Каждое значение PercentResponse добавляют два столбца, которые указывают на частоту, на которой швейцарский франк спадает до заданного процента начального и пикового значения. Формат каждой записи в столбце является вектором 1 на 4. Эти четыре элемента соответствуют красному, зеленому, синему цвету, и каналы яркости, соответственно.

Средние измерения швейцарского франка вертикальных и горизонтальных ребер, возвращенных как таблица с одной или двумя строками. aggregateSharpnessTable ссорится, когда все произведенные ROI имеют ту же ориентацию. Это имеет две строки, когда произведенные ROI смешали ориентацию. aggregateSharpnessTable имеет три меньше столбцов, чем sharpnessTable.

Первые два столбца aggregateSharpnessTable всегда присутствуют и представляют эти переменные:

ПеременнаяОписание
OrientationОриентация усредненного SFRs. Значение Orientation любой 'horizontal' или 'vertical'.
SFR

Усредненная пространственная частотная характеристика всех ребер во включенных ROI с ориентацией, заданной Orientation.

SFR s-by-5 таблица. Эти пять столбцов представляют значение частоты, и усредненный красный, зеленый, синий, и значения яркости, соответствующие той частоте. s является количеством выборок частоты MTF.

Яркость (Y) вычисляется как линейная комбинация красного (R), зеленый (G), и синяя (B) каналы согласно:

Y = 0.213R + 0.715G + 0.072B

Каждое значение PercentResponse добавляют два столбца, которые указывают на частоту, на которой швейцарский франк спадает до заданного процента начального и пикового значения. Формат каждой записи в столбце является вектором 1 на 4. Эти четыре элемента соответствуют красному, зеленому, синему цвету, и каналы яркости, усредненные среди всех произведенных ROI с той же ориентацией.

Советы

  • Наклонные ребра на правильно ориентированном графике под углом 5 градусов горизонтали или вертикальные. Измерения резкости не точны, когда ориентация ребра значительно отклоняется от 5 градусов.

  • Резкость выше к центру изображенной области и уменьшений к периферии. Горизонтальная резкость обычно выше, чем вертикальная резкость.

Алгоритмы

Алгоритм измерения швейцарского франка на основе работы [1] [2] Питера Бернса. Во-первых, measureSharpness определяет положение ребра с субпиксельным разрешением для каждой строки развертки, или строку или столбец пиксельного перпендикуляра к ребру, в ROI. Например, каждая строка пикселей является строкой развертки для почти вертикального ребра. Затем measureSharpness выравнивает и составляет в среднем строки развертки, чтобы создать сверхдискретизированный профиль интенсивности ребра. Функция берет производную профиля интенсивности и применяет функцию работы с окнами. Возвращенное измерение швейцарского франка является абсолютным значением преобразования Фурье оконной производной.

Ссылки

[1] Записи, Питер. "Slanted-Edge MTF для Анализа Цифрового фотоаппарата и Сканера". Общество Обработки изображений Науки и техники; Продолжения Обработки изображений, Качества изображения, Системной Конференции по Захвату изображения. Портленд, Орегон, март 2000, стр 135–138.

[2] Записи, Питер. "sfrmat3: оценка швейцарского франка для цифровых фотоаппаратов и сканеров". URL: http://losburns.com/imaging/software/SFRedge/sfrmat3_post/index.html.

Введенный в R2017b