multissim

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

Описание

пример

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

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

пример

score = multissim(I,Iref,Name,Value) аспекты средств управления расчета с помощью одних или нескольких аргументов name-value. Например, задайте количество шкал с помощью 'NumScales' аргумент.

пример

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

Примеры

свернуть все

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

Iref = imread('pout.tif');

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

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

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

figure; 
montage({Iref,I}); 

Figure contains an axes object. The axes object 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 object. The axes object contains an object of type image.

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

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

Figure contains an axes object. The axes object 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 object. The axes object 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 object. The axes object 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 имя аргумента и 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 (getrangefromclassi. Например, динамическим диапазоном по умолчанию является 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 может быть отрицательным.

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

Восстановленный после форматирования dlarray N-D объекты с N> 2

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

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

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

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

Алгоритмы

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

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

Ссылки

[1] Ван, Z., Симончелли, E.P., Bovik, А.К. Малтискэйл Страктурэл Симилэрити для Оценки Качества изображения. \in: Тридцать седьмая Конференция Asilomar по Signals, Systems & Computers, 2003, 1398–1402. Пасифик-Гроув, CA, США: IEEE, 2003. https://doi.org/10.1109/ACSSC.2003.1292216.

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

Введенный в R2020a