ssim

Структурное подобие (SSIM) индексирует для измерения качества изображения

Описание

пример

ssimval = ssim(A,ref) вычисляет структурное подобие (SSIM) индекс для полутонового изображения или объема A использование ref как ссылочное изображение или объем.

ssimval = ssim(A,ref,Name,Value) вычисляет SSIM, с помощью пар "имя-значение", чтобы управлять аспектами расчета.

[ssimval,ssimmap] = ssim(___) также возвращает локальное значение SSIM для каждого пикселя или вокселя в A.

Примеры

свернуть все

Считайте изображение в рабочую область. Создайте другую версию изображения, применив размывающийся фильтр.

ref = imread("pout.tif");
H = fspecial("Gaussian",[11 11],1.5);
A = imfilter(ref,H,"replicate");

Отобразите оба изображения как монтаж. Изображения отличаются больше всего вдоль резких высококонтрастных областей, таких как ребра решетки.

montage({ref,A})
title("Reference Image (Left) vs. Blurred Image (Right)")

Figure contains an axes object. The axes object with title Reference Image (Left) vs. Blurred Image (Right) contains an object of type image.

Вычислите глобальное значение SSIM для изображения и локальные значения SSIM для каждого пикселя.

[ssimval,ssimmap] = ssim(A,ref);

Отобразите локальную карту SSIM. Включайте глобальное значение SSIM в заголовок фигуры. Маленькие значения локального SSIM появляются как темные пиксели в локальной карте SSIM. Области с маленьким локальным значением SSIM соответствуют областям, где размытое изображение заметно отличается от ссылочного изображения. Большие значения локального значения SSIM появляются как яркие пиксели. Области с большим локальным SSIM соответствуют универсальным областям ссылочного изображения, где размывание оказывает меньше влияния на изображение.

imshow(ssimmap,[])
title("Local SSIM Map with Global SSIM Value: "+num2str(ssimval))

Figure contains an axes object. The axes object with title Local SSIM Map with Global SSIM Value: 0.94068 contains an object of type image.

Считайте изображение в рабочую область. Создайте другую версию изображения, применив размывающийся фильтр.

ref = imread("pout.tif");
A = imgaussfilt(ref,1.5,"FilterSize",11,"Padding","replicate");

Отобразите оба изображения как монтаж.

montage({ref A})
title("Reference Image (Left) vs. Blurred Image (Right)")

Figure contains an axes object. The axes object with title Reference Image (Left) vs. Blurred Image (Right) contains an object of type image.

Симулируйте пакеты изображений путем тиражирования ссылочного изображения и размытого изображения 16 раз по 4-му измерению.

A = repmat(A,[1 1 1 16]);
ref = repmat(ref,[1 1 1 16]);

Создайте отформатировал dlarray объекты для ссылочного пакета изображений и пакета размытого изображения. Форматом является "SSCB", для пространственного пространственного пакета канала.

A = dlarray(single(A),"SSCB"); 
ref = dlarray(single(ref),"SSCB");

Вычислите глобальное значение SSIM для изображения и локальные значения SSIM для каждого пикселя. ssimVal возвращает скалярное значение SSIM для каждого изображения в пакете. ssimMap возвращает карту значений SSIM, тот же размер как изображение, для каждого изображения в пакете.

[ssimVal,ssimMap] = ssim(A,ref);
size(ssimVal)
ans = 1×4

     1     1     1    16

size(ssimMap)
ans = 1×4

   291   240     1    16

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

свернуть все

Отобразите для качественного измерения в виде числового массива или dlarray Объект (Deep Learning Toolbox). Если A не 2D полутоновое изображение или 3-D полутоновый объем, такой как изображение RGB или стек полутоновых изображений, задайте DataFormat аргумент значения имени. Не задавайте DataFormat аргумент значения имени, если A отформатированный dlarray объект.

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

Ссылочное изображение, против которого можно измерить качество в виде числового массива или dlarray Объект (Deep Learning Toolbox), одного размера и тип данных как A. Если ref не 2D полутоновое изображение или 3-D полутоновый объем, такой как изображение RGB или стек полутоновых изображений, задайте DataFormat аргумент значения имени. Не задавайте DataFormat аргумент значения имени, если ref отформатированный dlarray объект.

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

Аргументы name-value

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

Пример: ssim(A,ref,"DynamicRange",100)

Метки размерности входа отображают A и refВ виде строкового скаляра или вектора символов. Каждый символ в DataFormat должна быть одна из этих меток:

  • S — Пространственный

  • C — Канал

  • B — Пакетные наблюдения

Формат не может включать больше чем одну метку канала или обработать метку в пакетном режиме. Не задавайте DataFormat аргумент значения имени, когда входными изображениями является отформатированный dlarray объекты.

Пример: "SSC" указывает, что массив имеет две пространственных размерности и одну размерность канала, подходящую для 2D данных изображения RGB.

Пример: "SSCB" указывает, что массив имеет две пространственных размерности, одну размерность канала и одну пакетную размерность, подходящую для последовательности 2D данных изображения RGB.

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

Динамический диапазон входа отображает в виде положительной скалярной величины. Значение по умолчанию "DynamicRange" зависит от типа данных изображения A, и вычисляется как diff (getrangefromclassA. Например, динамическим диапазоном по умолчанию является 255 для изображений типа данных uint8, и значением по умолчанию является 1 для изображений типа данных double или single с пиксельными значениями в области значений [0, 1].

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

Экспоненты для яркости, контраста и структурных терминов в виде вектора с 3 элементами из неотрицательных количеств формы [alpha beta gamma].

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

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

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

Константы регуляризации для яркости, контраста и структурных терминов в виде вектора с 3 элементами из неотрицательных количеств формы [c1 c2 c3]. ssim функционируйте использует эти константы регуляризации, чтобы избежать нестабильности для областей изображений, где локальное среднее или стандартное отклонение близко к нулю. Поэтому маленькие ненулевые значения должны использоваться для этих констант.

По умолчанию,

  • C1 = (0.01*L).^2, где L заданный DynamicRange значение.

  • C2 = (0.03*L).^2, где L заданный DynamicRange значение.

  • C3 = C2/2

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

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

свернуть все

Индекс SSIM, возвращенный как одно из этих значений.

Введите тип изображенияЗначение SSIM

  • Бесформатные числовые массивы

  • Отформатированные числовые массивы ни с одним канал ("C") ни пакет ("B") размерность

Числовой скаляр с одним измерением SSIM.
  • Бесформатный dlarray (Deep Learning Toolbox) объекты

Скалярный dlarray объект с одним измерением SSIM.

  • Числовые массивы с каналом или пакетной размерностью задали использование DataFormat аргумент значения имени

Числовой массив той же размерности как входные изображения. Пространственные размерности ssimval одноэлементные размерности. Существует одно измерение SSIM для каждого элемента вдоль любого канала или пакетной размерности.
  • Отформатированный dlarray объекты с каналом или пакетной размерностью

  • Бесформатный dlarray объекты с каналом или пакетной размерностью задали использование DataFormat аргумент значения имени

dlarray объект той же размерности как входные изображения. Пространственные размерности ssimval одноэлементные размерности. Существует одно измерение SSIM для каждого элемента вдоль любого канала или пакетной размерности.

ssimval имеет тип данных double кроме тех случаев, когда A имеет тип данных single, в этом случае ssimval имеет тип данных single.

Значение ssimval обычно находится в области значений [0, 1]. Значение 1 указывает на высшее качество и происходит когда A и ref эквивалентны. Меньшие значения соответствуют более плохому качеству. Для некоторых комбинаций входных параметров и аргументов пары "имя-значение", ssimval может быть отрицательным.

Локальные значения индекса SSIM, возвращенного как одно из этих значений.

Введите тип изображенияЗначение SSIM

  • Бесформатные числовые массивы

  • Отформатированные числовые массивы ни с одним канал ("C") ни пакет ("B") размерность

Числовой массив тот же размер как входные изображения. Существует одно измерение SSIM для каждого элемента во входном изображении.
  • Бесформатный dlarray (Deep Learning Toolbox) объекты

dlarray возразите тому же размеру как входные изображения. Существует одно измерение SSIM для каждого элемента во входном изображении.
  • Числовые массивы с каналом или пакетной размерностью задали использование DataFormat аргумент значения имени

Числовой массив тот же размер как входные изображения. Каждый пространственный элемент во входном изображении имеет измерение SSIM вдоль любого канала или пакетной размерности.
  • Отформатированный dlarray объекты с каналом или пакетной размерностью

  • Бесформатный dlarray объекты с каналом или пакетной размерностью задали использование DataFormat аргумент значения имени

dlarray возразите тому же размеру как входные изображения. Каждый пространственный элемент во входном изображении имеет измерение SSIM вдоль любого канала или пакетной размерности.

ssimmap имеет тип данных double кроме тех случаев, когда A имеет тип данных single, в этом случае ssimmap имеет тип данных single.

Больше о

свернуть все

Структурный индекс подобия

Метрика качества изображения, которая оценивает визуальный удар трех характеристик изображения: яркость, контраст и структура.

Советы

  • Если A и ref задайте данные изображения RGB, используйте "DataFormat" аргумент значения имени, чтобы пометить размерность канала, "C". Можно затем применяться mean функция по измерению канала ssimval и ssimmap аппроксимировать индекс SSIM для полного изображения.

Алгоритмы

Качественный индекс оценки индекса SSIM основан на расчете трех терминов, а именно, термин яркости, контрастный термин и структурный термин. Полный индекс является мультипликативной комбинацией трех терминов.

SSIM(x,y)=[l(x,y)]α[c(x,y)]β[s(x,y)]γ

где

l(x,y)=2μxμy+C1μx2+μy2+C1,c(x,y)=2σxσy+C2σx2+σy2+C2,s(x,y)=σxy+C3σxσy+C3

где μx, μy, σx, σy, и σxy являются локальными средними значениями, стандартными отклонениями и перекрестной ковариацией для изображений x, y. Если α = β = γ = 1 (значение по умолчанию для Exponents), и C3 = C2/2 (выбор по умолчанию C3) индекс упрощает до:

SSIM(x,y)=(2μxμy+C1)(2σxy+C2)(μx2+μy2+C1)(σx2+σy2+C2)

Когда вы задаете значение нецелого числа для "Exponents", ssim функция предотвращает комплекс, оцененный выходные параметры путем зажима промежуточной яркости, контраста и структурных терминов к области значений [0, inf].

Ссылки

[1] Чжоу, W., А. К. Бовик, Х. Р. Шейх и Э. П. Симончелли. "Оценка Качества изображения: От Ошибочной Видимости до Структурного Подобия". Транзакции IEEE на Обработке изображений. Издание 13, Выпуск 4, апрель 2004, стр 600–612.

Расширенные возможности

Введенный в R2014a