Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

psnr

Relación señal-ruido máxima (PSNR)

Descripción

ejemplo

peaksnr = psnr(A,ref) calcula la relación señal-ruido máxima (PSNR) de la imagen A, con la imagen ref como referencia. Un valor de PSNR mayor indica una mejor calidad de imagen.

peaksnr = psnr(A,ref,peakval) calcula la PSNR de la imagen A utilizando el valor máximo de señal peakval.

ejemplo

peaksnr = psnr(___,'DataFormat',dataFormat) también especifica las etiquetas de dimensión, dataFormat, de datos de la imagen sin formato. Utilice esta sintaxis para devolver una PSNR separada para cada elemento a lo largo de una dimensión del lote.

ejemplo

[peaksnr,snr] = psnr(___) también devuelve la relación señal-ruido sencilla, snr.

Ejemplos

contraer todo

Lea una imagen y cree una copia con ruido añadido. La imagen original es la imagen de referencia.

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

Calcule la 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 

Lea una imagen en el espacio de trabajo y, a continuación, cree un objeto dlarray sin formato con los datos de la imagen.

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

Añada ruido de sal y pimienta a la imagen y, a continuación, cree un objeto dlarray sin formato con los datos de la imagen con ruido.

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

Calcule la SNR máxima y la SNR de los datos con ruido con respecto a los datos originales.

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

   17.5941

snr = 
  1x1 single dlarray

   11.1265

Lea una imagen de referencia en el espacio de trabajo.

ref = imread("office_1.jpg");

Preasigne dos arreglos que almacenen una secuencia de seis imágenes del tamaño de la imagen de referencia.

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

Lea y añada imágenes a los arreglos preasignados. Un solo arreglo almacena los datos de la imagen original. El segundo arreglo almacena los datos de la imagen con ruido de sal y pimienta añadido.

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

Muestre las secuencias de imágenes como un montaje. La primera fila muestra la secuencia con los datos de la imagen original. La segunda fila muestra la secuencia con datos de la imagen con ruido.

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

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

Calcule la PSNR de cada imagen con ruido con respecto a la imagen prístina correspondiente, especificando el formato de datos de los arreglos de entrada como "SSCB" (siglas en inglés de espacial, espacial, canal, lote).

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

Argumentos de entrada

contraer todo

Imagen que se desea analizar, especificada como arreglo numérico de cualquier dimensión o un objeto dlarray (Deep Learning Toolbox).

Tipos de datos: single | double | int16 | uint8 | uint16

Imagen de referencia, especificada como arreglo numérico o un objeto dlarray (Deep Learning Toolbox). La imagen de referencia tiene el mismo tamaño y tipo de datos que la imagen A.

Tipos de datos: single | double | int16 | uint8 | uint16

Nivel máximo de la señal, especificado como un número no negativo. Si no se especifica, el valor predeterminado para peakval depende de la clase de A y ref.

  • Si las imágenes son del tipo de datos double o single, psnr asume que los datos de imagen están en el intervalo [0, 1]. El valor predeterminado de peakval es 1.

  • Si las imágenes son de tipos de datos enteros, el valor predeterminado de peakval es el máximo valor permitido por el intervalo de la clase. Para datos uint8, el valor predeterminado de peakval es 255. Para uint16 o int16, el predeterminado es 65535.

Etiquetas de dimensión de las imágenes de entrada A y ref, especificadas como escalar de cadena o vector de caracteres. Cada carácter en dataFormat debe ser una de estas etiquetas:

  • S: espacial

  • C: canal

  • B: observaciones de los lotes

El formato no puede incluir más de una etiqueta de canal o de lote. No especifique el argumento 'dataFormat' cuando las imágenes de entrada sean objetos dlarray con formato.

Ejemplo: 'SSC' indica que el arreglo tiene dos dimensiones espaciales y una dimensión de canal, lo que es apropiado para los datos de imágenes RGB 2D.

Ejemplo: 'SSCB' indica que el arreglo tiene dos dimensiones espaciales, una dimensión de canal y una dimensión de lote, apropiadas para una secuencia de datos de imágenes RGB 2D.

Argumentos de salida

contraer todo

PSNR en decibelios, especificada como uno de estos valores.

Tipo de imagen de entradaValor de PSNR

  • Arreglos numéricos sin formato

  • Arreglos numéricos con formato sin una dimensión de lote ('B').

Escalar numérico con una única medición de PSNR.
  • Objetos dlarray (Deep Learning Toolbox) sin formato.

Objeto dlarray de 1 por 1 con una única medición de PSNR.
  • Arreglos numéricos con una dimensión de lote especificada mediante el argumento dataFormat

Arreglo numérico con la misma dimensionalidad que las imágenes de entrada. Las dimensiones espacial y de canal de peaksnr son dimensiones únicas. Hay una medición de PSNR para cada elemento a lo largo de la dimensión del lote.
  • Objetos dlarray con formato con una dimensión de lote

  • Objetos dlarray sin formato con una dimensión de lote especificada mediante el argumento dataFormat

Objeto dlarray con la misma dimensionalidad que las imágenes de entrada. Las dimensiones espacial y de canal de peaksnr son dimensiones únicas. Hay una medición de PSNR para cada elemento a lo largo de la dimensión del lote.

Si A y ref tienen el tipo de datos single, peaksnr tiene el tipo de datos single. De lo contrario, peaksnr tiene el tipo de datos double.

Relación señal-ruido en decibelios, especificada como uno de estos valores.

Tipo de imagen de entradaValor de PSNR

  • Arreglos numéricos sin formato

  • Arreglos numéricos con formato sin una dimensión de lote ('B').

Escalar numérico con una única medición de SNR.
  • Objetos dlarray (Deep Learning Toolbox) sin formato.

Objeto dlarray de 1 por 1 con una única medición de SNR.
  • Arreglos numéricos con una dimensión de lote especificada mediante el argumento dataFormat

Arreglo numérico con la misma dimensionalidad que las imágenes de entrada. Las dimensiones espacial y de canal de snr son dimensiones únicas. Hay una medición de SNR para cada elemento a lo largo de la dimensión del lote.
  • Objetos dlarray con formato con una dimensión de lote

  • Objetos dlarray sin formato con una dimensión de lote especificada mediante el argumento dataFormat

Objeto dlarray con la misma dimensionalidad que las imágenes de entrada. Las dimensiones espacial y de canal de peaksnr son dimensiones únicas. Hay una medición de SNR para cada elemento a lo largo de la dimensión del lote.

Si A y ref tienen el tipo de datos single, snr tiene el tipo de datos single. De lo contrario, snr tiene el tipo de datos double.

Algoritmos

La función psnr implementa esta ecuación para calcular la PSNR:

PSNR=10log10(peakval2/MSE)

peakval lo especifica el usuario o se toma del intervalo del tipo de datos de la imagen. Por ejemplo, para una imagen de tipo de datos uint8, peakval es 255. MSE es el error cuadrático medio entre A y ref.

Capacidades ampliadas

Generación de código de GPU
Genere código CUDA® para GPU NVIDIA® mediante GPU Coder™.

Historial de versiones

Introducido en R2014a

expandir todo