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' указывает, что массив имеет две пространственные размерности и одну размерность канала, подходящих для 2-D данных изображения RGB.

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

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

свернуть все

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

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

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

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

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

Неформатированные dlarray (Deep Learning Toolbox) объекты

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

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

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

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

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

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

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

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

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

Неформатированные dlarray (Deep Learning Toolbox) объекты

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

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

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

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

Алгоритмы

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

PSNR=10log10(peakval2/MSE)

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

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

.

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

.
Введенный в R2014a