multissim

Многомасштабный индекс структурного подобия (MS-SSIM) для качества изображения

Описание

пример

score = multissim(I,Iref) вычисляет многомасштабный индекс структурного подобия (MS-SSIM), score, для изображений I, использование Iref как ссылка изображение.

MS-SSIM задан только для полутоновых изображений. Для входов с более чем двумя размерностями, multissim обрабатывает каждый элемент больших размерностей как отдельное 2-D полутоновое изображение.

пример

[score,qualityMaps] = multissim(I,Iref) также возвращает локальное значение индекса MS-SSIM для каждого пикселя в каждой масштабированной версии I. The qualitymap выход - массив ячеек, содержащий карты для каждой из масштабированных версий I. Каждая карта качества имеет тот же размер, что и соответствующая масштабированная версия I.

пример

[___] = multissim(I,Iref,Name,Value) управляет аспектами расчета, используя один или несколько аргументов в виде имя-значение. Для примера укажите количество шкал, использующих 'NumScales' аргумент.

Примеры

свернуть все

Загрузите изображение в рабочую область.

Iref = imread('pout.tif');

Создайте шумную версию изображения для сравнения.

I = imnoise(Iref,'salt & pepper',0.05);

Отобразите оригинальное изображение и шумное изображение.

figure; 
montage({Iref,I}); 

Figure contains an axes. The axes contains an object of type image.

Вычислите индекс MS-SSIM, который измеряет качество входа изображения по сравнению с ссылкой изображением.

score = multissim(I,Iref)
score = single
    0.6732

Загрузите изображение в рабочую область.

Iref = imread('pout.tif');
I = Iref;

Добавьте шум к локализованной части изображения.

I(1:100,1:100) = imnoise(Iref(1:100,1:100),'salt & pepper',0.05);

Отобразите оригинальное изображение и шумное изображение.

figure; 
montage({Iref,I});

Figure contains an axes. The axes contains an object of type image.

Вычислите локальные карты индекса MS-SSIM для шумного изображения, qualitymaps, использование оригинального изображения в качестве ссылки. Значение возврата, qualitymaps, - массив ячеек, содержащий карту качества для каждой из масштабированных версий изображения. Каждая карта имеет тот же размер, что и соответствующая масштабированная версия изображения.

[~, qualitymaps] = multissim(I,Iref);
figure
montage(qualitymaps,'Size',[1 5])

Figure contains an axes. The axes contains an object of type image.

Загрузите изображение в рабочую область.

Iref = imread('pout.tif');

Создайте шумную версию изображения для сравнения.

I = imnoise(Iref,'salt & pepper',0.05);

Отобразите оригинальное изображение и шумную версию изображения.

figure; 
montage({Iref,I});

Figure contains an axes. The axes contains an object of type image.

Вычислите индекс MS-SSIM для шумного изображения, используя оригинальное изображение в качестве ссылки. Укажите, сколько весить локальные вычисления индекса MS-SSIM для каждого масштабированного изображения, используя 'ScaleWeights' аргумент. В примере используются значения веса, заданные в статье Wang, Simoncelli и Bovik.

score = multissim(I,Iref,'ScaleWeights',[0.0448,0.2856,0.3001,0.2363,0.1333])
score = single
    0.6773

Чтение цветного изображения в рабочую область.

RGB = imread("kobi.png");

Создайте версию изображения с добавлением соли и перца шума.

RGBNoisy = imnoise(RGB,"salt & pepper");

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

montage({RGB,RGBNoisy})

Figure contains an axes. The axes contains an object of type image.

Вычислите MS-SSIM каждого цветового канала шумного изображения.

score = multissim(RGBNoisy,RGB);
score = squeeze(score)
score = 3x1 single column vector

    0.7084
    0.7135
    0.7066

Чтение цветного изображения в рабочую область.

ref = imread("strawberries.jpg");
ref = im2single(ref);

Симулируйте пакет из шести изображений путем репликации изображения по четвертой размерности.

refBatch = repmat(ref,[1 1 1 6]);

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

noisyBatch = imnoise(refBatch,"salt & pepper");

Создайте форматированный dlarray объект для оригинальной и шумной партии изображений. Формат «SSCB» для пространственно-пространственного пакета каналов.

dlrefBatch = dlarray(refBatch,"SSCB");
dlnoisyBatch = dlarray(noisyBatch,"SSCB");

Вычислите счет MS-SSIM зашумленных данных относительно исходных данных.

scores = multissim(dlnoisyBatch,dlrefBatch);

Удалите синглтонные размеры, соответствующие пространственным размерностям, и отобразите счета. Каждый элемент является счетом MS-SSIM для одного цветового канала одного изображения пакета.

squeeze(scores)
ans = 
  3(C) x 6(B) single dlarray

    0.8334    0.8335    0.8348    0.8335    0.8340    0.8349
    0.8325    0.8316    0.8309    0.8310    0.8317    0.8326
    0.8140    0.8123    0.8166    0.8129    0.8136    0.8123

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

свернуть все

Входное изображение, заданное как числовой массив любой размерности или dlarray (Deep Learning Toolbox) объект. Форматированные dlarray объекты не могут включать более одной метки канала, более одной пакетной метки и более двух пространственных меток.

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

Ссылочное изображение, заданное как числовой массив любой размерности или dlarray (Deep Learning Toolbox) объект. Форматированные dlarray объекты не могут включать более одной метки канала, более одной пакетной метки и более двух пространственных меток.

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

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

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

Пример: score = multissim(I,Iref,'NumScales',3);

Количество шкал, используемых для вычисления индекса MS-SSIM, заданное как разделенная разделенными запятой парами, состоящая из 'NumScales' и положительное целое число. Настройка 'NumScales' на 1 эквивалентно использованию ssim функция с ее 'Exponents' Аргумент пары "имя-значение" установлен на [1 1 1]. Размер входного изображения ограничивает количество шкал. multissim функция масштабирует изображение (NumScales - 1) раз, понижая дискретизацию изображения в 2 раза с каждым масштабированием.

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

Относительные значения в шкалах, заданные как разделенная разделенными запятой парами, состоящая из 'ScaleWeights' и вектор положительных элементов. Длина вектора равна количеству шкал, потому что каждый элемент соответствует одной из масштабированных версий оригинального изображения. multissim функция нормирует значения к 1. По умолчанию веса шкалы равны fspecial('gaussian',[1,numScales],1). multissim функция использует Гауссово распределение как значение по умолчанию, потому что зрительная чувствительность человека достигает пиков на средних частотах и уменьшается в обоих направлениях. Для примера настройки 'ScaleWeights', см. Вычисление весов шкалы MS-SSIM.

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

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

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

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

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

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

свернуть все

Индекс MS-SSIM для качества изображения, возвращенный в виде числового скаляра, числового массива или dlarray (Deep Learning Toolbox) объект, как указано в таблице. Значение score обычно находится в области значений [0, 1]. Значение 1 указывает на наивысшее качество и происходит при I и Iref являются эквивалентными. Меньшие значения соответствуют более низкому качеству. Для некоторых комбинаций входов и аргументов пары "имя-значение", score может быть отрицательным.

Введите тип изображенияЗначение PSNR
2-D числовые матрицыЧисловой скаляр с одним измерением MS-SSIM.
2-D dlarray объекты1 на 1 dlarray объект с одним измерением MS-SSIM.
N-D числовые массивы с N > 2Числовой массив той же размерности, что и входные изображения. Первые две размерности score являются синглтонными размерностями. Существует одно измерение MS-SSIM для каждого элемента с более высокими размерностями.

Неформатированные N-D dlarray объекты с N > 2

dlarray объект той же размерности, что и входные изображения. Первые две размерности score являются синглтонными размерностями. Существует одно измерение MS-SSIM для каждого элемента с более высокими размерностями

Форматированные N-D dlarray объекты с N > 2

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

Локальные значения индекса MS-SSIM для каждого пикселя в каждой масштабированной версии, возвращенные как массив ячеек из числовых массивов или массив ячеек из dlarray (Deep Learning Toolbox) объекты. Размер массива ячеек 1-by- NumScales. Каждый элемент в qualityMaps указывает качество соответствующего пикселя при соответствующем масштабном коэффициенте. Формат каждого элемента использует форматирование scores аргумент, основанный на формате входных изображений.

Алгоритмы

Индекс структурного подобия (SSIM) измеряет воспринимаемое качество путем количественной оценки SSIM между изображением и ссылкой изображением (см. ssim). multissim функция вычисляет индекс MS-SSIM путем объединения SSIM-индекса нескольких версий изображения в различных шкалах. Индекс MS-SSIM может быть более устойчивым по сравнению с индексом SSIM в отношении изменений условий просмотра.

multissim функция использует арифметику двойной точности для входных изображений класса double. Все другие типы входа изображений используют арифметику с одной точностью.

Ссылки

[1] Wang, Z., Simoncelli, E.P., Bovik, A.C. Multiscale Структурное сходство для оценки качества изображений. В: Тридцать седьмая Асиломарская конференция по сигналам, системам и компьютерам, 2003, 1398-1402. Pacific Grove, CA, USA: IEEE, 2003. https://doi.org/10.1109/ACSSC.2003.1292216.

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

Введенный в R2020a