exponenta event banner

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. qualitymap output - это массив ячеек, содержащий карты для каждой из масштабированных версий 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' аргумент. В примере используются значения веса, определенные в статье Ван, Симончелли и Бовиком.

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(Панель инструментов глубокого обучения). Отформатированный dlarray объекты не могут включать более одной метки канала, более одной пакетной метки и более двух пространственных меток.

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

Ссылочное изображение, указанное как числовой массив любого размера или dlarray(Панель инструментов глубокого обучения). Отформатированный 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(Панель инструментов глубокого обучения). Размер массива ячеек равен 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. Многомасштабное структурное сходство для оценки качества изображения. В: Тридцать седьмая Асиломарская конференция по сигналам, системам и компьютерам, 2003, 1398-1402. Тихоокеанская роща, Калифорния, США: IEEE, 2003. https://doi.org/10.1109/ACSSC.2003.1292216.

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

Представлен в R2020a