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);

Вычислите пиковый ОСШ и ОСШ зашумленных данных относительно исходных данных.

[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 Объект (Deep Learning Toolbox).

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

Ссылочное изображение в виде числового массива или dlarray Объект (Deep Learning Toolbox). Ссылочное изображение имеет тот же размер и тип данных как изображение 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' указывает, что массив имеет две пространственных размерности и одну размерность канала, подходящую для 2D данных изображения RGB.

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

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

свернуть все

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

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

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

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

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

Бесформатный dlarray (Deep Learning Toolbox) объекты

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

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

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

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

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

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

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

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

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

Бесформатный dlarray (Deep Learning Toolbox) объекты

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

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

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

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

Алгоритмы

psnr функционируйте реализует это уравнение, чтобы вычислить PSNR:

PSNR=10log10(peakval2/MSE)

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

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

Генерация кода графического процессора
Сгенерируйте код CUDA® для NVIDIA® графические процессоры с помощью GPU Coder™.

Введенный в R2014a