exponenta event banner

psnr

Пиковое отношение сигнал/шум (PSNR)

Описание

пример

peaksnr = psnr(A,ref) вычисляет пиковое отношение сигнал/шум (PSNR) для изображения A, с изображением ref в качестве ссылки.

peaksnr = psnr(A,ref,peakval) вычисляет PSNR изображения A используя пиковое значение сигнала peakval.

пример

peaksnr = psnr(___,'DataFormat',dataFormat) также задает метки размеров, dataFormat, данных неформатированного изображения. Этот синтаксис используется для возврата отдельного PSNR для каждого элемента вдоль измерения пакета.

пример

[peaksnr,snr] = psnr(___) также возвращает простое отношение сигнал/шум, snr.

Примеры

свернуть все

Чтение изображения и создание копии с добавленным шумом. Исходное изображение является ссылочным.

ref = imread('pout.tif');
A = imnoise(ref,'salt & pepper', 0.02);

Вычислите PSNR.

[peaksnr, snr] = psnr(A, ref);
  
fprintf('\n The Peak-SNR value is %0.4f', peaksnr);
 The Peak-SNR value is 22.6437
fprintf('\n The SNR value is %0.4f \n', snr);
 The SNR value is 15.5524 

Чтение изображения в рабочую область, а затем создание неформатированного dlarray объект с данными изображения.

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

Добавьте к изображению шум соли и перца, а затем создайте неформатированный dlarray объект с шумными данными изображения.

noisy = imnoise(ref,'salt & pepper');
dlnoisy = dlarray(noisy);

Вычислите пиковое SNR и SNR шумных данных относительно исходных данных.

[peaksnr,snr] = psnr(dlnoisy,dlref)
peaksnr = 
  1x1 single dlarray

   17.5941

snr = 
  1x1 single dlarray

   11.1265

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

ref = imread("office_1.jpg");

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

numFrames = 6;
imsOriginal = zeros([size(ref) numFrames],class(ref));
imsNoisy = zeros([size(ref) numFrames],class(ref));

Чтение и добавление изображений в предварительно выделенные массивы. В одном массиве хранятся исходные данные изображения. Второй массив хранит данные изображения с добавлением соли и перцового шума.

for p = 1:numFrames
    filename = strcat("office_",num2str(p),".jpg");
    im = imread(filename);
    imsOriginal(:,:,:,p) = im;
    imsNoisy(:,:,:,p) = imnoise(im,"salt & pepper");
end

Отображение последовательностей изображений в монтаже. В первой строке показана последовательность с исходными данными изображения. Во второй строке показана последовательность с шумными данными изображения.

montage(cat(4,imsOriginal,imsNoisy),"Size",[2 numFrames])

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

Вычислите пик PSNR каждого шумного изображения по отношению к соответствующему первозданному изображению, задав формат данных входных массивов как «SSCB» (пространственный, пространственный, канальный, пакетный).

peak_psnrs = psnr(imsNoisy,imsOriginal,"DataFormat","SSCB");
peak_psnrs = squeeze(peak_psnrs)
peak_psnrs = 6×1

   16.3560
   16.9698
   17.8079
   18.1843
   18.0656
   17.1682

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

свернуть все

Анализируемое изображение, указанное как числовой массив любого размера или dlarray(Панель инструментов глубокого обучения).

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

Ссылочное изображение, указанное как числовой массив или dlarray(Панель инструментов глубокого обучения). Ссылочное изображение имеет тот же размер и тип данных, что и изображение A.

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

Пиковый уровень сигнала, определяемый как неотрицательное число. Если не указано, значение по умолчанию для peakval зависит от класса A и ref.

  • Если изображения имеют тип данных double или single, то psnr предполагает, что данные изображения находятся в диапазоне [0, 1]. Значение по умолчанию peakval является 1.

  • Если изображения имеют целочисленные типы данных, то значение по умолчанию peakval - наибольшее значение, допустимое диапазоном класса. Для uint8 данные, значение по умолчанию peakval является 255. Для uint16 или int16, значение по умолчанию - 65535.

Метки размеров входных изображений A и ref, задается как строковый скалярный или символьный вектор. Каждый символ в dataFormat должна быть одной из следующих меток:

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

  • C - Канал

  • B - Наблюдения за партиями

Формат не может включать более одной наклейки канала или пакетной наклейки. Не указывайте 'dataFormatаргумент «» при форматировании входных изображений dlarray объекты.

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

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

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

свернуть все

PSNR в децибелах, возвращаемое как одно из этих значений.

Тип входного изображенияЗначение PSNR

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

  • Форматированные числовые массивы без пакета ('B') размерность

Числовой скаляр с одним измерением PSNR.

Неотформатированный dlarray(Панель инструментов глубокого обучения) объекты

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

  • Неотформатированный dlarray объекты с размерностью пакета, указанной с помощью dataFormat аргумент

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

Если A и ref иметь тип данных single, то peaksnr имеет тип данных single. В противном случае peaksnr имеет тип данных double.

Отношение сигнал/шум в децибелах, возвращаемое как одно из этих значений.

Тип входного изображенияЗначение PSNR

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

  • Форматированные числовые массивы без пакета ('B') размерность

Числовой скаляр с одним измерением SNR.

Неотформатированный dlarray(Панель инструментов глубокого обучения) объекты

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

  • Неотформатированный dlarray объекты с размерностью пакета, указанной с помощью dataFormat аргумент

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

Если A и ref иметь тип данных single, то snr имеет тип данных single. В противном случае snr имеет тип данных double.

Алгоритмы

psnr функция реализует это уравнение для вычисления PSNR:

PSNR = 10log10 (peakval2/MSE)

peakval определяется пользователем или берется из диапазона типа данных изображения. Например, для изображения типа данных uint8, peakval является 255. MSE - среднеквадратическая ошибка между A и ref.

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

.

Создание кода графического процессора
Создание кода CUDA ® для графических процессоров NVIDIA ® с помощью Coder™ графических процессоров

.
Представлен в R2014a