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.

deconvlucy

Imagen de Blur usando el método Lucy-Richardson

Descripción

ejemplo

J = deconvlucy(I,psf) restaura la imagen degradada por la convolución con una función de dispersión de puntos (PSF), y posiblemente por ruido aditivo.Ipsf El algoritmo se basa en maximizar la probabilidad de que la imagen resultante sea una instancia de la imagen original en Estadísticas de Poisson.JI

Para mejorar la restauración, admite varios parámetros opcionales, que se describen a continuación.deconvlucy Utilícelo 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 de ruido suprimiendo iteraciones para píxeles que se desvían una pequeña cantidad en comparación con el ruido, especificado por el umbral de amortiguación.dampar De forma predeterminada, no se produce ninguna amortiguación.

J = deconvlucy(I,psf,iter,dampar,weight) especifica qué píxeles de la imagen de entrada se consideran en la restauración.I El valor de un elemento de la matriz determina cuánto se considera el píxel en la posición correspondiente en la imagen de entrada.weight Por ejemplo, para excluir un píxel de la consideración, asígnele un valor de la matriz.0weight Puede ajustar el valor de peso 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 el submuestreo cuando el PSF se da en una cuadrícula que es veces más fina que la imagen.subsample

Ejemplos

contraer todo

Leer y mostrar una imagen prístina que no tiene desenfoque ni ruido. En este ejemplo se 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')

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

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

Simular desenfoque en la imagen.

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

Añadir ruido gaussiano de media cero simulado.

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

Se utiliza para restaurar la imagen borrosa y ruidoso.deconvlucy Especifique el PSF utilizado para crear el desenfoque y reducir el número de iteraciones a 5.

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

Cree una imagen de muestra y desenrosquela.

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

Cree una matriz de peso 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);

Mostrar 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)');

Argumentos de entrada

contraer todo

Imagen borrosa, especificada como una matriz numérica de cualquier dimensión. También puede especificar la imagen como una matriz de celdas para habilitar iteraciones interrumpidas. Para obtener más información, consulte .Consejos

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

PSF, especificado como una matriz numérica. También puede especificar como matriz de celdas para habilitar iteraciones interrumpidas.psf Para obtener más información, consulte .Consejos

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

Número de iteraciones, especificado como un entero positivo.

Tipos de datos: double

Umbral de amortiguación, especificado como escalar numérico. La amortiguación se produce para los píxeles cuya desviación entre iteraciones es menor que el umbral. tiene el mismo tipo de datos que .damparI

Valor de peso de cada píxel, especificado como una matriz numérica con valores en el intervalo [0, 1]. tiene el mismo tamaño que la imagen de entrada, .weightI De forma predeterminada, todos los elementos tienen el valor, por lo que todos los píxeles se consideran igualmente en la restauración.weight1

Tipos de datos: double

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

Submuestreo, especificado como escalar positivo.

Tipos de datos: double

Argumentos de salida

contraer todo

Imagen desenfocar, devuelta como una matriz numérica o una matriz de celdas de 1 por 4. (o cuando es una matriz de celdas) tiene el mismo tipo de datos que .JJ{1}JI Para obtener más información sobre cómo devolver como matriz de celdas para iteraciones interrumpidas, consulte .JConsejos

Sugerencias

  • Puede utilizar para realizar una desconvolución que comienza donde se detuvo una deconvolución anterior.deconvlucy Para utilizar esta característica, pase la imagen de entrada y el PSF, , como matrices de celdas: y .Ipsf{I}{psf} Cuando lo hace, la función devuelve la imagen de salida como una matriz de celdas, que se puede pasar como la matriz de entrada en la siguiente llamada.deconvlucyJdeconvblind La matriz de celdas de salida contiene cuatro elementos:J

    contiene , la imagen original.J{1}I

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

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

    es una matriz generada por el algoritmo iterativo.J{4}

  • La imagen de salida podría exhibir el timbre introducido por la transformación discreta de Fourier utilizada en el algoritmo.J Para reducir el timbre, utilice antes de llamar a .I = edgetaper(I,psf)deconvlucy

  • convierte el PSF sin normalización.deconvlucydouble

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

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.

Introducido antes de R2006a