psnr
Relación señal-ruido máxima (PSNR)
Sintaxis
Descripción
también especifica las etiquetas de dimensión, peaksnr
= psnr(___,'DataFormat',dataFormat
)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.
Ejemplos
Calcular la PSNR para una imagen con ruido dada la imagen original como referencia
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
Calcular la PSNR para dlarray
de entrada
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
Calcular la PSNR de las imágenes en una secuencia de imágenes
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])
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
A
— Imagen que se desea analizar
Arreglo numérico | objeto dlarray
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
peakval
— Nivel máximo de la señal
Número no negativo
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
osingle
,psnr
asume que los datos de imagen están en el intervalo [0, 1]. El valor predeterminado depeakval
es1
.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 datosuint8
, el valor predeterminado depeakval
es255
. Parauint16
oint16
, el predeterminado es65535
.
dataFormat
— Etiquetas de dimensión
escalar de cadena | vector de caracteres
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
: espacialC
: canalB
: 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
peaksnr
— PSNR
Escalar numérico | Arreglo numérico | objeto dlarray
PSNR en decibelios, especificada como uno de estos valores.
Tipo de imagen de entrada | Valor de PSNR |
---|---|
| Escalar numérico con una única medición de PSNR. |
| Objeto dlarray de 1 por 1 con una única medición de PSNR. |
| 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. |
| 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
.
snr
— Relación señal-ruido
Escalar numérico | Arreglo numérico | objeto dlarray
Relación señal-ruido en decibelios, especificada como uno de estos valores.
Tipo de imagen de entrada | Valor de PSNR |
---|---|
| Escalar numérico con una única medición de SNR. |
| Objeto dlarray de 1 por 1 con una única medición de SNR. |
| 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. |
| 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:
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 C/C++
Genere código C y C++ mediante MATLAB® Coder™.
psnr
es compatible con la generación de código C (requiere MATLAB® Coder™). Para obtener más información, consulte Code Generation for Image Processing.
Generación de código de GPU
Genere código CUDA® para GPU NVIDIA® mediante GPU Coder™.
Arreglos GPU
Acelere código mediante la ejecución en una unidad de procesamiento gráfico (GPU) mediante Parallel Computing Toolbox™.
Esta función es totalmente compatible con los arreglos de GPU. Para obtener más información, consulte Procesamiento de imágenes en una GPU.
Historial de versiones
Introducido en R2014aR2021a: Calcular métricas de arreglos de deep learning y especificar las dimensiones del cómputo
La función psnr
acepta ahora la entrada dlarray
para las aplicaciones de deep learning.
Esta función también es compatible con datos formateados con etiquetas de dimensión de 'S'
(espacial), 'C'
(canal) y 'B'
(lote). Para los datos con una dimensión de lote, la función devuelve un resultado separado para cada índice en toda la dimensión de lote.
R2021a: Compatibilidad con la aceleración por GPU
Ahora psnr
es compatible con la aceleración por GPU (requiere Parallel Computing Toolbox™).
Consulte también
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)