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.

ssim

Índice de similitud estructural (SSIM) para medir la calidad de una imagen

Descripción

ejemplo

ssimval = ssim(A,ref) calcula el índice de similitud estructural (SSIM) para una imagen o volumen en escala de grises A usando ref como imagen o volumen de referencia. Un valor más cercano a 1 indica una mejor calidad de imagen.

ssimval = ssim(A,ref,Name,Value) calcula el SSIM utilizando pares nombre-valor para controlar aspectos del cómputo.

[ssimval,ssimmap] = ssim(___) también devuelve el valor del SSIM local para cada píxel o vóxel en A.

Ejemplos

contraer todo

Lea una imagen en el espacio de trabajo. Cree otra versión de la imagen, aplicando un filtro de desenfoque.

ref = imread("pout.tif");
H = fspecial("Gaussian",[11 11],1.5);
A = imfilter(ref,H,"replicate");

Muestre ambas imágenes como un montaje. Las imágenes se diferencian principalmente en las regiones agudas con un alto contraste, como los bordes de la celosía.

montage({ref,A})
title("Reference Image (Left) vs. Blurred Image (Right)")

Figure contains an axes object. The axes object with title Reference Image (Left) vs. Blurred Image (Right) contains an object of type image.

Calcule el valor de SSIM global para la imagen y los valores de SSIM locales para cada píxel.

[ssimval,ssimmap] = ssim(A,ref);

Muestre el mapa de SSIM local. Incluya el valor de SSIM global en el título de la figura. Los valores pequeños del SSIM local aparecen como píxeles oscuros en el mapa de SSIM local. Las regiones con un valor de SSIM local pequeño se corresponden con las áreas donde la imagen desenfocada se diferencia claramente de la imagen de referencia. Los valores grandes del SSIM local aparecen como píxeles claros. Las regiones con un gran SSIM local se corresponden con regiones uniformes de la imagen de referencia, donde el desenfoque tiene un impacto menor en la imagen.

imshow(ssimmap,[])
title("Local SSIM Map with Global SSIM Value: "+num2str(ssimval))

Figure contains an axes object. The axes object with title Local SSIM Map with Global SSIM Value: 0.94068 contains an object of type image.

Lea una imagen en el espacio de trabajo. Cree otra versión de la imagen, aplicando un filtro de desenfoque.

ref = imread("pout.tif");
A = imgaussfilt(ref,1.5,"FilterSize",11,"Padding","replicate");

Muestre ambas imágenes como un montaje.

montage({ref A})
title("Reference Image (Left) vs. Blurred Image (Right)")

Figure contains an axes object. The axes object with title Reference Image (Left) vs. Blurred Image (Right) contains an object of type image.

Simule lotes de imágenes replicando la imagen de referencia y la imagen desenfocada 16 veces por la 4.ª dimensión.

A = repmat(A,[1 1 1 16]);
ref = repmat(ref,[1 1 1 16]);

Cree objetos dlarray con formato para el lote de la imagen de referencia y el lote de la imagen desenfocada. El formato es "SSCB", de espacial-espacial-canal-lote.

A = dlarray(single(A),"SSCB"); 
ref = dlarray(single(ref),"SSCB");

Calcule el valor de SSIM global para la imagen y los valores de SSIM locales para cada píxel. ssimVal devuelve un valor escalar de SSIM para cada imagen del lote. ssimMap devuelve un mapa de los valores de SSIM, del mismo tamaño que la imagen, para cada imagen del lote.

[ssimVal,ssimMap] = ssim(A,ref);
size(ssimVal)
ans = 1×4

     1     1     1    16

size(ssimMap)
ans = 1×4

   291   240     1    16

Argumentos de entrada

contraer todo

Imagen para la medición de la calidad, especificada como arreglo numérico o un objeto dlarray (Deep Learning Toolbox). Si A no es una imagen 2D en escala de grises o un volumen 3D en escala de grises, como una imagen RGB o una pila de imágenes en escala de grises, especifique el argumento nombre-valor DataFormat. No especifique el argumento nombre-valor DataFormat si A es un objeto dlarray con formato.

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

Imagen de referencia con la que medir la calidad, especificada como arreglo numérico u objeto dlarray (Deep Learning Toolbox) del mismo tamaño y tipo de datos que A. Si ref no es una imagen 2D en escala de grises o un volumen 3D en escala de grises, como una imagen RGB o una pila de imágenes en escala de grises, especifique el argumento nombre-valor DataFormat. No especifique el argumento nombre-valor DataFormat si ref es un objeto dlarray con formato.

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

Argumentos de par nombre-valor

Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.

En las versiones anteriores a la R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: ssim(A,ref,"DynamicRange",100)

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 nombre-valor 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.

Tipos de datos: char | string

Rango dinámico de la imagen de entrada, especificado como escalar positivo. El valor predeterminado de "DynamicRange" depende del tipo de datos de la imagen A y se calcula como diff(getrangefromclass(A)). Por ejemplo, el rango dinámico predeterminado es 255 para imágenes con tipo de datos uint8 y de 1 para imágenes con tipo de datos double o single con valores de los píxeles en el intervalo [0, 1].

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Exponentes para los términos de luminancia, contraste y estructura, especificados como un vector de 3 elementos de números no negativos de la forma [alpha beta gamma].

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Desviación estándar de la función gaussiana isotrópica, especificada como número positivo. Este valor se usa para ponderar los píxeles del entorno alrededor de un píxel para calcular las estadísticas locales. Esta ponderación se usa para evitar los artefactos de bloque al calcular las estadísticas locales.

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Constantes de regularización para los términos de luminancia, contraste y estructura, especificados como un vector de 3 elementos de números no negativos de la forma [c1 c2 c3]. La función ssim utiliza estas constantes de regularización para evitar la inestabilidad en las regiones de imágenes donde la media local o la desviación estándar está cerca de cero. Por lo tanto, deberían usarse valores pequeños distintos de cero para estas constantes.

De forma predeterminada,

  • C1 = (0.01*L).^2, donde L es el valor DynamicRange especificado.

  • C2 = (0.03*L).^2, donde L es el valor DynamicRange especificado.

  • C3 = C2/2

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Argumentos de salida

contraer todo

Índice SSIM, devuelto como uno de estos valores.

Tipo de imagen de entradaValor de SSIM

  • Arreglos numéricos sin formato

  • Arreglos numéricos con formato sin una dimensión del canal ("C") ni del lote ("B")

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

Objeto escalar dlarray con una única medición de SSIM.

  • Arreglos numéricos con una dimensión del canal y del lote especificada mediante el argumento nombre-valor DataFormat

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

  • Objetos dlarray sin formato con una dimensión del canal o del lote especificada mediante el argumento nombre-valor DataFormat

Objeto dlarray con la misma dimensionalidad que las imágenes de entrada. Las dimensiones espaciales de ssimval son dimensiones únicas. Hay una medición de SSIM para cada elemento a lo largo de cualquier dimensión del canal o del lote.

ssimval es del tipo de datos double excepto cuando A es del tipo de datos single, en cuyo caso ssimval es de tipo de datos single.

El valor de ssimval suele estar en el intervalo [0, 1]. El valor 1 indica la calidad más elevada y se produce cuando A y ref son equivalentes. Los valores inferiores se corresponden con una calidad más pobre. Para algunas combinaciones de entradas y argumentos de par nombre-valor, ssimval puede ser negativo.

Valores locales del índice SSIM, devueltos como uno de estos valores.

Tipo de imagen de entradaValor de SSIM

  • Arreglos numéricos sin formato

  • Arreglos numéricos con formato sin una dimensión del canal ("C") ni del lote ("B")

Arreglo numérico del mismo tamaño que las imágenes de entrada. Hay una medición de SSIM para cada elemento de la imagen de entrada.
  • Objetos dlarray (Deep Learning Toolbox) sin formato.

El objeto dlarray tiene el mismo tamaño que las imágenes de entrada. Hay una medición de SSIM para cada elemento de la imagen de entrada.
  • Arreglos numéricos con una dimensión del canal y del lote especificada mediante el argumento nombre-valor DataFormat

Arreglo numérico del mismo tamaño que las imágenes de entrada. Cada elemento espacial de la imagen de entrada tiene una medición de SSIM a lo largo de cualquier dimensión del canal o del lote.
  • Objetos dlarray con formato con una dimensión del canal o del lote

  • Objetos dlarray sin formato con una dimensión del canal o del lote especificada mediante el argumento nombre-valor DataFormat

El objeto dlarray tiene el mismo tamaño que las imágenes de entrada. Cada elemento espacial de la imagen de entrada tiene una medición de SSIM a lo largo de cualquier dimensión del canal o del lote.

ssimmap es del tipo de datos double excepto cuando A es del tipo de datos single, en cuyo caso ssimmap es de tipo de datos single.

Más acerca de

contraer todo

Índice de similitud estructural

Una métrica de la calidad de una imagen que evalúa el impacto visual de tres características de una imagen: luminancia, contraste y estructura.

Sugerencias

  • Si A y ref especifican datos de imagen RGB, utilice el argumento nombre-valor "DataFormat" para etiquetar la dimensión del canal "C". A continuación, puede aplicar la función mean a lo largo de la dimensión del canal de ssimval y ssimmap para aproximarse al índice SSIM para la imagen general.

Algoritmos

El Índice SSIM de evaluación de la calidad se basa en el cómputo de tres términos, en concreto el término de luminancia, el término de contraste y el término de estructura. El índice general es una combinación multiplicativa de los tres términos.

SSIM(x,y)=[l(x,y)]α[c(x,y)]β[s(x,y)]γ

donde

l(x,y)=2μxμy+C1μx2+μy2+C1,c(x,y)=2σxσy+C2σx2+σy2+C2,s(x,y)=σxy+C3σxσy+C3

donde μx, μy, σxy y σxy son las medias locales, desviaciones estándar y covarianza cruzada de las imágenes x, y. Si α = β = γ = 1 (el valor predeterminado para Exponents) y C3 = C2/2 (selección predeterminada de C3) el índice simplifica a:

SSIM(x,y)=(2μxμy+C1)(2σxy+C2)(μx2+μy2+C1)(σx2+σy2+C2)

Cuando especifica un valor no entero para "Exponents", la función ssim evita salidas con valores complejos limitando los términos intermedios de luminancia, contraste y estructura al intervalo [0, inf].

Referencias

[1] Zhou, W., A. C. Bovik, H. R. Sheikh, and E. P. Simoncelli. "Image Quality Assessment: From Error Visibility to Structural Similarity." IEEE Transactions on Image Processing. Vol. 13, Issue 4, April 2004, pp. 600–612.

Capacidades ampliadas

Historial de versiones

Introducido en R2014a

expandir todo