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.

deconvlucy

Enfocar una imagen mediante el método de Lucy-Richardson

Descripción

ejemplo

J = deconvlucy(I,psf) restaura la imagen I que se degradó mediante convolución con una función de dispersión puntual (PSF), psf, y posiblemente mediante ruido aditivo. El algoritmo se basa en maximizar la probabilidad de que la imagen resultante J sea una instancia de la imagen original I según las estadísticas de Poisson.

Para mejorar la restauración, deconvlucy admite varios parámetros opcionales, que se describen más abajo. Utilice [] como marcador de posición si no especifica un parámetro intermedio.

ejemplo

J = deconvlucy(I,psf,iter) especifica el número de iteraciones, iter.

J = deconvlucy(I,psf,iter,dampar) controla la amplificación del ruido suprimiendo las iteraciones para los píxeles que se desvían en pequeña medida en comparación con el ruido, especificado por el umbral de amortiguamiento dampar. De forma predeterminada, no se produce amortiguamiento.

J = deconvlucy(I,psf,iter,dampar,weight) especifica qué píxeles de la imagen de entrada I se tienen en cuenta en la restauración. El valor de un elemento del arreglo weight determina cuánto se considera el píxel en la posición correspondiente en la imagen de entrada. Por ejemplo, para excluir un píxel de la consideración, asígnele un valor de 0 en el arreglo weight. Puede ajustar el valor de ponderación asignado a cada píxel según la cantidad de corrección de campo plano.

J = deconvlucy(I,psf,iter,dampar,weight,readout) especifica el ruido aditivo (como el ruido de fondo o de primer plano) y la varianza del ruido de la cámara de lectura, readout.

J = deconvlucy(I,psf,iter,dampar,weight,readout,subsample) utiliza submuestreo cuando la PSF viene dada en una cuadrícula que es subsample veces más fina que la imagen.

Ejemplos

contraer todo

Lea y muestre una imagen nítida que no esté desenfocada ni tenga ruido. Este ejemplo recorta opcionalmente la imagen a un tamaño de 256 por 256 con la coordenada superior izquierda (x,y) en (2,50).

I = imread('board.tif');
I = imcrop(I,[2 50 255 255]);
imshow(I)
title('Original Image')

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

Cree una PSF que represente un desenfoque gaussiano con una desviación estándar de 5 y un filtro de tamaño 5 por 5.

PSF = fspecial('gaussian',5,5);

Simule desenfoque en la imagen.

blurred = imfilter(I,PSF,'symmetric','conv');

Añada ruido gaussiano de media cero simulado.

V = 0.002;
blurred_noisy = imnoise(blurred,'gaussian',0,V);
imshow(blurred_noisy)
title('Blurred and Noisy Image')

Figure contains an axes object. The axes object with title Blurred and Noisy Image contains an object of type image.

Utilice deconvlucy para restaurar la imagen desenfocada y con ruido. Especifique la PSF utilizada para crear el desenfoque y reduzca el número de iteraciones a 5.

luc1 = deconvlucy(blurred_noisy,PSF,5);
imshow(luc1)
title('Restored Image')

Figure contains an axes object. The axes object with title Restored Image contains an object of type image.

Cree una imagen de muestra y desenfóquela.

I = checkerboard(8);
PSF = fspecial('gaussian',7,10);
V = .0001;
BlurredNoisy = imnoise(imfilter(I,PSF),'gaussian',0,V);

Cree un arreglo de ponderaciones y llame a deconvlucy utilizando varios parámetros opcionales.

WT = zeros(size(I));
WT(5:end-4,5:end-4) = 1;
J1 = deconvlucy(BlurredNoisy,PSF);
J2 = deconvlucy(BlurredNoisy,PSF,20,sqrt(V));
J3 = deconvlucy(BlurredNoisy,PSF,20,sqrt(V),WT);

Muestre los resultados.

subplot(221);imshow(BlurredNoisy);
title('A = Blurred and Noisy');
subplot(222);imshow(J1);
title('deconvlucy(A,PSF)');
subplot(223);imshow(J2);
title('deconvlucy(A,PSF,NI,DP)');
subplot(224);imshow(J3);
title('deconvlucy(A,PSF,NI,DP,WT)');

Figure contains 4 axes objects. Axes object 1 with title A = Blurred and Noisy contains an object of type image. Axes object 2 with title deconvlucy(A,PSF) contains an object of type image. Axes object 3 with title deconvlucy(A,PSF,NI,DP) contains an object of type image. Axes object 4 with title deconvlucy(A,PSF,NI,DP,WT) contains an object of type image.

Argumentos de entrada

contraer todo

Imagen borrosa, especificada como arreglo numérico de cualquier dimensión. También puede especificar la imagen como un arreglo de celdas para permitir iteraciones interrumpidas. Para obtener más información, consulte Consejos.

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

PSF, especificada como arreglo numérico.

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

Número de iteraciones, especificado como entero positivo.

Tipos de datos: double

Umbral de amortiguamiento, especificado como escalar numérico. El amortiguamiento se produce en los píxeles cuya desviación entre iteraciones es inferior al umbral. dampar tiene el mismo tipo de datos que I.

Valor de la ponderación de cada píxel, especificado como arreglo numérico con valores en el intervalo [0, 1]. weight tiene el mismo tamaño que la imagen de entrada, I. De forma predeterminada, todos los elementos de weight tienen el valor 1, por lo que todos los píxeles se consideran por igual en la restauración.

Tipos de datos: double

Ruido, especificado como escalar numérico o arreglo numérico. El valor de readout corresponde al ruido aditivo (como el ruido de primer plano y de fondo) y a la varianza del ruido de la cámara de lectura. readout tiene el mismo tipo de datos que I.

Submuestreo, especificado como escalar positivo.

Tipos de datos: double

Argumentos de salida

contraer todo

Imagen enfocada, devuelta como arreglo numérico o arreglo de celdas de 1 por 4. J (o J{1} cuando J es un arreglo de celdas) tiene el mismo tipo de datos que I. Para obtener más información sobre la devolución de J como arreglo de celdas para iteraciones interrumpidas, consulte Consejos.

Sugerencias

  • Puede usar deconvlucy para realizar una deconvolución que empiece donde se detuvo una anterior. Para utilizar esta característica, pase la imagen de entrada I como un arreglo de celdas {I}. Al hacerlo, la función deconvlucy devuelve la imagen de salida J como un arreglo de celdas, que puede pasar como arreglo de entrada en la siguiente llamada a deconvlucy. El arreglo de celdas de salida J contiene cuatro elementos:

    J{1} contiene I, la imagen original.

    J{2} contiene el resultado de la última iteración.

    J{3} contiene el resultado de la penúltima iteración.

    J{4} es un arreglo generado por el algoritmo iterativo.

  • La imagen de salida J podría mostrar artefactos de anillo introducidos por la transformada discreta de Fourier utilizada en el algoritmo. Para reducir la intensidad de los artefactos , utilice I = edgetaper(I,psf) antes de llamar a deconvlucy.

  • deconvlucy convierte la PSF en double sin normalización.

  • deconvlucy puede devolver valores de la imagen de salida que están más allá del rango de la imagen de entrada.

Referencias

[1] D.S.C. Biggs and M. Andrews, Acceleration of iterative image restoration algorithms, Applied Optics, Vol. 36, No. 8, 1997.

[2] R.J. Hanisch, R.L. White, and R.L. Gilliland, Deconvolutions of Hubble Space Telescope Images and Spectra, Deconvolution of Images and Spectra, Ed. P.A. Jansson, 2nd ed., Academic Press, CA, 1997.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a

expandir todo