Main Content

imdiffusefilt

Filtrado de difusión anisotrópica de imágenes

Descripción

ejemplo

J = imdiffusefilt(I) aplica filtrado de difusión anisotrópica a la imagen y devuelve el resultado en .IJ

ejemplo

J = imdiffusefilt(I,Name,Value) utiliza pares nombre-valor para cambiar el comportamiento del algoritmo de difusión anisotrópica.

Ejemplos

contraer todo

Lea una imagen en el espacio de trabajo y muéstrala.

I = imread('cameraman.tif'); imshow(I) title('Original Image')

Suaviza la imagen con difusión anisotrópica. Para comparar, también suaviza la imagen usando el desenfoque gaussiano. Ajuste la desviación estándar del núcleo de suavizado gaussiano para que las regiones texturizadas, como la hierba, se alisen una cantidad similar para ambos métodos.sigma

Idiffusion = imdiffusefilt(I); sigma = 1.2; Igaussian = imgaussfilt(I,sigma);

Mostrar los resultados.

montage({Idiffusion,Igaussian},'ThumbnailSize',[]) title('Smoothing Using Anisotropic Diffusion (Left) vs. Gaussian Blurring (Right)')

La difusión anisotrópica preserva la nitidez de los bordes mejor que el desenfoque gaussiano.

Lea una imagen en escala de grises y, a continuación, aplique un fuerte ruido gaussiano. Muestre la imagen ruidoso.

I = imread('pout.tif'); noisyImage = imnoise(I,'gaussian',0,0.005); imshow(noisyImage) title('Noisy Image')

Calcular el índice de similitud estructural (SSIM) para medir la calidad de la imagen ruidoso. Cuanto más cerca esté el valor de SSIM de 1, mejor estará la imagen de acuerdo con la imagen de referencia sin ruido.

n = ssim(I,noisyImage); disp(['The SSIM value of the noisy image is ',num2str(n),'.'])
The SSIM value of the noisy image is 0.26556. 

Reduzca el ruido mediante la difusión anisotrópica. En primer lugar, pruebe los parámetros predeterminados para el filtro de difusión anisotrópica y muestre el resultado.

B = imdiffusefilt(noisyImage); imshow(B) title('Anisotropic Diffusion with Default Parameters')

nB = ssim(I,B); disp(['The SSIM value using default anisotropic diffusion is ',num2str(nB),'.'])
The SSIM value using default anisotropic diffusion is 0.65665. 

La imagen todavía se degrada por el ruido, así que refina el filtro. Elija el método de conducción cuadrática porque la imagen se caracteriza más por regiones homogéneas amplias que por bordes de alto contraste. Calcule el umbral de degradado óptimo y el número de iteraciones mediante la función.imdiffuseest Muestre la imagen resultante.

[gradThresh,numIter] = imdiffuseest(noisyImage,'ConductionMethod','quadratic'); C = imdiffusefilt(noisyImage,'ConductionMethod','quadratic', ...     'GradientThreshold',gradThresh,'NumberOfIterations',numIter); imshow(C) title('Anisotropic Diffusion with Estimated Parameters')

nC = ssim(I,C); disp(['The SSIM value using quadratic anisotropic diffusion is ',num2str(nC),'.'])
The SSIM value using quadratic anisotropic diffusion is 0.88135. 

El ruido es menos evidente en la imagen resultante. El valor SSIM, que está más cerca de 1, confirma que la calidad de la imagen ha mejorado.

Cargue un volumen de RMN en escala de grises 3D ruidoso.

load mristack

Realice una reducción de ruido consciente del borde en el volumen mediante la difusión anisotrópica. Para evitar suavizar en exceso las características de bajo contraste en el cerebro, disminuya el número de iteraciones del número predeterminado, 5. La contrapartida es que se elimina menos ruido.

diffusedImage = imdiffusefilt(mristack,'NumberOfIterations',3);

Para comparar la imagen ruidoso y la imagen filtrada en detalle, muestre el décimo sector de ambos.

imshowpair(mristack(:,:,10),diffusedImage(:,:,10),'montage') title('Noisy Image (Left) vs. Anisotropic-Diffusion-Filtered Image (Right)')

Calcule la puntuación del evaluador de calidad de imagen natural (NIQE) promediada en todos los sectores del volumen. La puntuación NIQE proporciona una medida cuantitativa de la calidad de imagen que no requiere una imagen de referencia. Las puntuaciones más bajas de NIQE reflejan una mejor calidad de imagen perceptiva.

nframes = size(mristack,3); m = 0; d = 0; for i = 1:nframes     m = m + niqe(mristack(:,:,i));     d = d + niqe(diffusedImage(:,:,i)); end mAvg = m/nframes; dAvg = d/nframes; disp(['The NIQE score of the noisy volume is ',num2str(mAvg),'.'])
The NIQE score of the noisy volume is 5.7794. 
disp(['The NIQE score using anisotropic diffusion is ',num2str(dAvg),'.'])
The NIQE score using anisotropic diffusion is 4.1391. 

La puntuación NIQE es coherente con la observación de ruido reducido en la imagen filtrada.

Argumentos de entrada

contraer todo

Imagen a filtrar, especificada como una imagen en escala de grises 2D de tamaño -por- o un volumen de escala de grises 3D de tamaño -por- -por- .mnmnk

Nota

Para aplicar el filtrado de difusión anisotrópica a una imagen de color, utilice en cada canal de color de forma independiente.imdiffusefilt

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

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: realiza la difusión anisotrópica en la imagen, utilizando 4 iteraciones y conectividad mínima.imdiffusefilt(I,'NumberOfIterations',4,'Connectivity','minimal')I

Umbral de degradado, especificado como el par separado por comas que consta de un escalar numérico o un vector numérico de longitud.'GradientThreshold'NumberOfIterations El valor de controla el proceso de conducción clasificando los valores de degradado como un borde real o como ruido.GradientThreshold Al aumentar el valor de la imagen se suaviza más.GradientThreshold El valor predeterminado es 10% del rango dinámico de la imagen. Puede utilizar la función para estimar un valor adecuado de .imdiffuseestGradientThreshold

Número de iteraciones que se utilizarán en el proceso de difusión, especificado como el par separado por comas que consta de un entero positivo.'NumberOfIterations' Puede utilizar la función para estimar un valor adecuado de .imdiffuseestNumberOfIterations

Conectividad de un píxel a sus vecinos, especificada como el par separado por comas que consta de y uno de estos valores:'Connectivity'

  • — Considera 8 vecinos más cercanos para imágenes 2D y 26 vecinos más cercanos para imágenes 3D'maximal'

  • — Considera 4 vecinos más cercanos para imágenes 2D, y 6 vecinos más cercanos para imágenes 3D'minimal'

Método de conducción, especificado como el par separado por comas que consta de y o .'ConductionMethod''exponential''quadratic' La difusión exponencial favorece los bordes de alto contraste sobre los bordes de bajo contraste. La difusión cuadrática favorece a las regiones amplias sobre las regiones más pequeñas.

Argumentos de salida

contraer todo

Imagen filtrada por difusión, devuelta como una matriz numérica del mismo tamaño y tipo de datos que la imagen de entrada, .I

Referencias

[1] Perona, P., and J. Malik. "Scale-space and edge detection using anisotropic diffusion." IEEE® Transactions on Pattern Analysis and Machine Intelligence. Vol. 12, No. 7, July 1990, pp. 629–639.

[2] Gerig, G., O. Kubler, R. Kikinis, and F. A. Jolesz. "Nonlinear anisotropic filtering of MRI data." IEEE Transactions on Medical Imaging. Vol. 11, No. 2, June 1992, pp. 221–232.

Introducido en R2018a