Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Deblur imágenes con un filtro Wiener

En este ejemplo se muestra cómo utilizar la desconvolución de Wiener para desenfocar imágenes. La desconvolución de Wiener se puede utilizar eficazmente cuando se conocen las características de frecuencia de la imagen y el ruido aditivo, al menos en algún grado.

Leer imagen prístina

Leer y mostrar una imagen prístina que no tiene desenfoque ni ruido.

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

Simular y restaurar desenfoque de movimiento sin ruido

Simular una imagen borrosa que podría resultar del movimiento de la cámara. En primer lugar, cree una función de dispersión de puntos, , utilizando la función y especificando el movimiento lineal a través de 21 píxeles en un ángulo de 11 grados.PSFfspecial A continuación, convoque la función de extensión de puntocon la imagen utilizando .imfilter

La imagen original tiene el tipo de datos .uint8 Si pasa una imagen a , la función cuantificará la salida para devolver otra imagen.uint8imfilteruint8 Para reducir los errores de cuantificación, convierta la imagen a antes de llamar a .doubleimfilter

PSF = fspecial('motion',21,11); Idouble = im2double(Ioriginal); blurred = imfilter(Idouble,PSF,'conv','circular'); imshow(blurred) title('Blurred Image')

Restaure la imagen borrosa utilizando la función.deconvwnr La imagen borrosa no tiene ruido, por lo que puede omitir el argumento de entrada de ruido a señal (NSR).

wnr1 = deconvwnr(blurred,PSF); imshow(wnr1) title('Restored Blurred Image')

Simular y restaurar desenfoque de movimiento y ruido gaussiano

Agregue ruido gaussiano de media cero a la imagen borrosa utilizando la función.imnoise

noise_mean = 0; noise_var = 0.0001; blurred_noisy = imnoise(blurred,'gaussian',noise_mean,noise_var); imshow(blurred_noisy) title('Blurred and Noisy Image')

Intente restaurar la imagen ruidosa borrosa utilizando sin proporcionar una estimación de ruido.deconvwnr Por abandono, el filtro de restauración de Wiener asume que el NSR es igual a 0. En este caso, el filtro de restauración Wiener es equivalente a un filtro inverso ideal, que puede ser extremadamente sensible al ruido en la imagen de entrada.

En este ejemplo, el ruido en esta restauración se amplifica hasta tal punto que se pierde el contenido de la imagen.

wnr2 = deconvwnr(blurred_noisy,PSF); imshow(wnr2) title('Restoration of Blurred Noisy Image (NSR = 0)')

Intente restaurar la imagen ruidosa borrosa utilizando con un valor más realista del ruido estimado.deconvwnr

signal_var = var(Idouble(:)); NSR = noise_var / signal_var; wnr3 = deconvwnr(blurred_noisy,PSF,NSR); imshow(wnr3) title('Restoration of Blurred Noisy Image (Estimated NSR)')

Simular y restaurar el desenfoque de movimiento y el ruido de cuantificación de 8 bits

Incluso una cantidad de ruido visualmente imperceptible puede afectar el resultado. Una fuente de ruido son los errores de cuantificación al trabajar con imágenes en representación.uint8 Anteriormente, para evitar errores de cuantificación, en este ejemplo se simulaba una imagen borrosa a partir de una imagen prístina en el tipo de datos .double Ahora, para explorar el impacto de los errores de cuantificación en la restauración, simule una imagen borrosa de la imagen prístina en el tipo de datos original.uint8

blurred_quantized = imfilter(Ioriginal,PSF,'conv','circular'); imshow(blurred_quantized) title('Blurred Quantized Image')

Intente restaurar la imagen cuantificada borrosa utilizando sin proporcionar una estimación de ruido.deconvwnr Aunque no se agregó ruido adicional, esta restauración se degrada en comparación con la restauración de la imagen borrosa en el tipo de datos.double

wnr4 = deconvwnr(blurred_quantized,PSF); imshow(wnr4) title('Restoration of Blurred Quantized Image (NSR = 0)');

Intente restaurar la imagen cuantificada borrosa utilizando con un valor más realista del ruido estimado.deconvwnr

uniform_quantization_var = (1/256)^2 / 12; signal_var = var(Idouble(:)); NSR = uniform_quantization_var / signal_var; wnr5 = deconvwnr(blurred_quantized,PSF,NSR); imshow(wnr5) title('Restoration of Blurred Quantized Image (Estimated NSR)');

Consulte también

| | |

Temas relacionados