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 con el algoritmo de deconvolución ciega

Utilice la función para enfoque vibración una imagen utilizando el algoritmo de deconvolución ciega.deconvblind El algoritmo maximiza la probabilidad de que la imagen resultante, cuando se congenera con el PSF resultante, sea una instancia de la imagen borrosa, asumiendo las estadísticas de ruido de Poisson. El algoritmo de deconvolución ciega se puede utilizar eficazmente cuando no se conoce información sobre la distorsión (desenfoque y ruido). La función restaura la imagen y el PSF simultáneamente, utilizando un proceso iterativo similar al acelerado y amortiguado algoritmo de Lucy-Richardson.deconvblind

La función, al igual que la función, implementa varias adaptaciones al algoritmo de máxima verosimilitud original de Lucy-Richardson que abordan tareas complejas de restauración de imágenes.deconvblinddeconvlucy Con estas adaptaciones, puede

  • Reduzca el efecto del ruido en la restauración

  • Cuenta de calidad de imagen no uniforme (p. ej., píxeles defectuosos)

  • Controle el ruido de lectura de la cámara

Para obtener más información sobre estas adaptaciones, consulte.Deblur con el algoritmo de Lucy-Richardson Además, la función admite restricciones PSF que se pueden pasar a través de una función especificada por el usuario.deconvblind

Las imágenes de Deblur que utilizan la deconvolución ciega

Este ejemplo muestra cómo enfoque vibración una imagen usando la deconvolución ciega. El ejemplo ilustra la naturaleza iterativa de esta operación, haciendo que dos pasadas desdifuminen la imagen utilizando parámetros opcionales.

Lea una imagen en el espacio de trabajo y mostrarla.

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

Cree una función de dispersión de puntos (PSF). Un PSF describe el grado en que un sistema óptico difumina (propaga) un punto de luz.

PSF = fspecial('motion',13,45); figure imshow(PSF,[],'InitialMagnification','fit') title('Original PSF')

Cree un desenfoque simulado en la imagen, utilizando el PSF, y visualice la imagen borrosa.

Blurred = imfilter(I,PSF,'circ','conv'); figure imshow(Blurred) title('Blurred Image')

Deblur la imagen utilizando la función.deconvblind Debe hacer una suposición inicial en el PSF. Para determinar el tamaño del PSF, examine la imagen borrosa y mida el ancho de un desenfoque (en píxeles) alrededor de un objeto obviamente nítido. Dado que el tamaño del PSF es más importante que los valores que contiene, normalmente se puede especificar una matriz de 1 como el PSF inicial.

En esta restauración inicial, fue capaz de enfoque vibración la imagen en gran medida.deconvblind Tenga en cuenta, sin embargo, el zumbido alrededor de las áreas de contraste de intensidad aguda en la imagen restaurada. (El ejemplo eliminó el timbre relacionado con el borde utilizando la opción ' circular ' cuando se crea la imagen borrosa simulada.)imfilter Para lograr un resultado más satisfactorio, vuelva a ejecutar la operación, experimentando con PSFs de diferentes tamaños. El PSF restaurado devuelto por cada deconvolución también puede proporcionar sugerencias valiosas en el tamaño óptimo de PSF.

INITPSF = ones(size(PSF)); [J P] = deconvblind(Blurred,INITPSF,30); figure imshow(J) title('Restored Image')

figure imshow(P,[],'InitialMagnification','fit') title('Restored PSF')

Una forma de mejorar el resultado es crear una matriz de pesos para excluir áreas de alto contraste de la operación de desdesenfoque. Esto puede reducir el timbre relacionado con el contraste en el resultado.

Para crear una matriz de ponderación, cree una matriz del mismo tamaño que la imagen y asigne el valor 0 a los píxeles de la matriz que corresponden a los píxeles de la imagen original que desea excluir del procesamiento. El ejemplo utiliza una combinación de detección de bordes y procesamiento morfológico para detectar áreas de alto contraste en la imagen. Dado que el desenfoque de la imagen es lineal, el ejemplo Diena la imagen dos veces. Para excluir los píxeles de contorno de la imagen (un área de alto contraste) del procesamiento, el ejemplo se utiliza para asignar el valor 0 a todos los píxeles del borde.padarray

WEIGHT = edge(I,'sobel',.28); se1 = strel('disk',1); se2 = strel('line',13,45); WEIGHT = ~imdilate(WEIGHT,[se1 se2]); WEIGHT = padarray(WEIGHT(2:end-1,2:end-1),[1 1]); figure imshow(WEIGHT) title('Weight Array')

Refine la conjetura en el PSF. El PSF reconstruido devuelto por la primera pasada en la deconvolución,, muestra una linealidad clara.P Para esta segunda pasada, el ejemplo utiliza un nuevo PSF que es el mismo que el PSF devuelto pero con los píxeles de amplitud pequeña establecidos en 0.

P1 = P; P1(find(P1 < 0.01))= 0;

Vuelva a ejecutar la deconvolución, esta vez especificando la matriz de pesos y el PSF modificado. Observe cómo la imagen restaurada tiene mucho menos zumbido alrededor de las áreas de intensidad aguda que el resultado de la primera pasada.

[J2 P2] = deconvblind(Blurred,P1,50,[],double(WEIGHT)); figure, imshow(J2) title('Newly Deblurred Image');

figure, imshow(P2,[],'InitialMagnification','fit') title('Newly Reconstructed PSF')

Refinando el resultado

La función, de forma predeterminada, realiza varias iteraciones del proceso de desdesenfoque.deconvblind Puede detener el procesamiento después de un cierto número de iteraciones para comprobar el resultado y, a continuación, reiniciar las iteraciones desde el punto donde se detuvo el procesamiento. Para usar esta característica, debe pasar tanto la imagen borrosa como el PSF como matrices de celdas, por ejemplo, y.{Blurred}{INITPSF}

La función devuelve la imagen de salida y el PSF restaurado como matrices de celdas.deconvblind La matriz de celdas de imagen de salida contiene estos cuatro elementos:

Elemento

Descripción

output{1}

Imagen de entrada original

output{2}

La imagen producida por la última iteración

output{3}

La imagen producida por la iteración siguiente a la última

output{4}

Información interna utilizada para saber dónde reiniciar el procesodeconvlucy

La matriz de celdas de salida PSF contiene elementos similares.

La función admite varios otros argumentos opcionales que puede usar para lograr el mejor resultado posible, como especificar un parámetro de amortiguación para controlar el ruido aditivo en la imagen borrosa.deconvblind Para ver el impacto de estos argumentos opcionales, así como la opción funcional que le permite colocar restricciones adicionales en la reconstrucción de PSF, vea el ejemplo.Desblurring images usando el algoritmo de deconvolución ciega

Consulte también

| | |

Ejemplos relacionados

Más acerca de