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.

Desblurring images usando un filtro Wiener

Este ejemplo muestra cómo utilizar la deconvolución de Wiener para las imágenes enfoque vibración. La deconvolución de Wiener puede ser útil cuando la función de propagación de puntos y el nivel de ruido son conocidos o estimados.

Leer imagen

I = im2double(imread('cameraman.tif')); imshow(I); title('Original Image (courtesy of MIT)');

Simular un desenfoque de movimiento

Simule una imagen borrosa que podría obtener del movimiento de la cámara. Cree una función de dispersión de puntos, correspondiente al movimiento lineal a través de 21 píxeles (), en un ángulo de 11 grados ().PSFLEN=21THETA=11 Para simular el desenfoque, herramienta el filtro con la imagen utilizando.imfilter

LEN = 21; THETA = 11; PSF = fspecial('motion', LEN, THETA); blurred = imfilter(I, PSF, 'conv', 'circular'); imshow(blurred); title('Blurred Image');

Restaure la imagen borrosa

La sintaxis más simple para es, donde está la imagen borrosa, es la función de propagación de puntos, y es la relación ruido-potencia-señal-potencia.deconvwnrdeconvwnr(A, PSF, NSR)UnPSFNSR La imagen borrosa formada en el paso 2 no tiene ruido, por lo que usaremos 0 para.NSR

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

Simular desenfoque y ruido

Ahora vamos a intentar añadir ruido.

noise_mean = 0; noise_var = 0.0001; blurred_noisy = imnoise(blurred, 'gaussian', ...                         noise_mean, noise_var); imshow(blurred_noisy) title('Simulate Blur and Noise')

Restaurar la imagen borrosa y ruidosa: primer intento

En nuestro primer intento de restauración, vamos a decir que no hay ruido (NSR = 0).deconvwnr Cuando NSR = 0, el filtro de restauración de Wiener equivale a un filtro inverso ideal. El filtro inverso ideal puede ser extremadamente sensible al ruido en la imagen de entrada, como muestra la siguiente imagen:

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

El ruido fue amplificado por el filtro inverso a tal grado que sólo el indicio más estrictamente de la forma del hombre es visible.

Restaurar la imagen borrosa y ruidosa: segundo intento

En nuestro segundo intento suministramos una estimación de la relación ruido-potencia-señal-potencia.

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

Simular desenfoque y ruido de cuantificación de 8 bits

Incluso una cantidad de ruido visualmente imperceptible puede afectar el resultado. Intentemos mantener la imagen de entrada en representación en lugar de convertirla en.uint8double

I = imread('cameraman.tif'); class(I)
ans =  'uint8' 

Si usted pasa una imagen a, cuantizará la salida para volver otra imagen.uint8imfilteruint8

blurred_quantized = imfilter(I, PSF, 'conv', 'circular'); class(blurred_quantized)
ans =  'uint8' 

Restaurar la imagen borrosa y cuantizada: primer intento

Una vez más, vamos a tratar de decir primero que no hay ruido.deconvwnr

wnr4 = deconvwnr(blurred_quantized, PSF, 0); imshow(wnr4) title('Restoration of blurred, quantized image - NSR = 0');

Restaurar la imagen borrosa y cuantizada: segundo intento

A continuación, suministramos una estimación NSR a.deconvwnr

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

Consulte también

| | |

Temas relacionados