imdiffusefilt
Filtrado por difusión anisotrópica de imágenes
Descripción
Ejemplos
Lea una imagen en el área de trabajo y muéstrela.
I = imread("cameraman.tif"); imshow(I) title("Original Image")

Suavice la imagen utilizando la difusión anisotrópica. Para su comparación, suavice también la imagen con el desenfoque gaussiano. Ajuste la desviación estándar sigma del núcleo de suavizado gaussiano para que las regiones texturizadas como la hierba se suavicen en una cantidad similar para ambos métodos.
Idiffusion = imdiffusefilt(I); sigma = 1.2; Igaussian = imgaussfilt(I,sigma);
Muestre los resultados. La difusión anisotrópica conserva mejor la nitidez de los bordes que el desenfoque gaussiano.
montage({Idiffusion,Igaussian})
title("Smoothing Using Anisotropic Diffusion (Left) vs. Gaussian Blurring (Right)")
Lea una imagen en escala de grises y aplíquele ruido gaussiano fuerte. Muestre la imagen con ruido.
I = imread('pout.tif'); noisyImage = imnoise(I,'gaussian',0,0.005); imshow(noisyImage) title('Noisy Image')

Calcule el índice de similitud estructural (SSIM) para medir la calidad de la imagen con ruido. Cuanto más se acerque el valor SSIM a 1, mayor será la concordancia de la imagen 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 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 sigue degradada por el ruido, así que mejore el filtro. Elija el método de conducción cuadrática porque la imagen se caracteriza más por amplias regiones homogéneas que por bordes de alto contraste. Estime el umbral de gradiente óptimo y el número de iteraciones utilizando 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, más próximo a 1, confirma que la calidad de la imagen ha mejorado.
Cargue el volumen de una resonancia magnética 3D en escala de grises con ruido.
load mristackRealizar una reducción del ruido con capacidad para detectar bordes en el volumen mediante difusión anisotrópica. Para evitar suavizar en exceso las características de bajo contraste en el cerebro, disminuya el número de iteraciones respecto al número predeterminado, 5. Como contrapartida, se elimina menos ruido.
diffusedImage = imdiffusefilt(mristack,'NumberOfIterations',3);Para comparar en detalle la imagen con ruido y la imagen filtrada, muestre el décimo corte de ambas.
imshowpair(mristack(:,:,10),diffusedImage(:,:,10),'montage') title('Noisy Image (Left) vs. Anisotropic-Diffusion-Filtered Image (Right)')

Calcule la puntuación del Evaluador de la calidad de imágenes naturales (NIQE) promediada en todos los cortes del volumen. La puntuación del NIQE proporciona una medida cuantitativa de la calidad de la imagen que no requiere una imagen de referencia. Las puntuaciones del NIQE más bajas reflejan una mejor calidad perceptiva de la imagen.
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 del NIQE es coherente con la observación de la reducción del ruido en la imagen filtrada.
Argumentos de entrada
Imagen que se desea filtrar, especificada como imagen 2D en escala de grises de tamaño m por n o volumen 3D en escala de grises de tamaño m por n por k.
Nota
Para aplicar el filtrado por difusión anisotrópica a una imagen en color, utilice imdiffusefilt en cada canal de color de forma independiente.
Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32
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.
Ejemplo: imdiffusefilt(I,NumberOfIterations=4,Connectivity="minimal") realiza la difusión anisotrópica en la imagen I utilizando 4 iteraciones y una conectividad mínima.
En las versiones anteriores a la R2021a, use comas para separar cada nombre y valor, y encierre Name entre comillas.
Ejemplo: imdiffusefilt(I,"NumberOfIterations",4,"Connectivity","minimal") realiza la difusión anisotrópica en la imagen I utilizando 4 iteraciones y una conectividad mínima.
Umbral de gradiente, especificado como un escalar numérico o un vector numérico de longitud NumberOfIterations. El valor de GradientThreshold controla el proceso de conducción clasificando los valores de gradiente como un borde real o como ruido. Incrementar el valor de GradientThreshold suaviza más la imagen. El valor predeterminado es el 10% del rango dinámico de la imagen. Puede utilizar la función imdiffuseest para estimar un valor adecuado de GradientThreshold.
Número de iteraciones que desea usar en el proceso de difusión, especificado como un entero positivo. Puede utilizar la función imdiffuseest para estimar un valor adecuado de NumberOfIterations.
Conectividad de un píxel con sus vecinos, especificada como uno de estos valores:
"maximal": considera los 8 vecinos más próximos para las imágenes 2D y los 26 vecinos más próximos para las imágenes 3D."minimal": considera los 4 vecinos más próximos para las imágenes 2D y los 6 vecinos más próximos para las imágenes 3D.
Método de conducción, especificado como "exponential" o "quadratic". La difusión exponencial favorece los bordes de alto contraste frente a los de bajo contraste. La difusión cuadrática favorece las regiones amplias frente a las más pequeñas.
Argumentos de salida
Imagen filtrada por difusión, devuelta como un arreglo numérico 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.
Capacidades ampliadas
Esta función es totalmente compatible con los entornos basados en hilos. Para obtener más información, consulte Ejecutar funciones de MATLAB en entornos basados en subprocesos.
Historial de versiones
Introducido en R2018aAhora imdiffusefilt es compatible con los entornos basados en hilos.
Consulte también
imdiffuseest | imfilter | imgaussfilt | imguidedfilter | locallapfilt | imnlmfilt | specklefilt (Medical Imaging Toolbox)
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- 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)