Recupere imágenes borrosas y desenfocadas utilizando el filtro Wiener. Implementación en C ++ OpenCV

En la continuación del artículo sobre la restauración de imágenes desenfocadas y borrosas, quiero compartir mis resultados de restaurar imágenes reales utilizando el filtro Wiener. OpenCV 3.4 se utilizó como la biblioteca de procesamiento de imágenes. La cámara es una Nikon D320, una lente Nikon DX AF-S NIKKOR 18-105 mm, el desenfoque se realizó manualmente, el disparo se realizó sin trípode.


Resultados de recuperación de imagen desenfocada


Durante el desenfoque, el sistema de distorsión se aproxima bien por la función de dispersión de punto cilíndrico (PSF) de radio r.


o_psf
PSF cilíndrico


A continuación se muestran los resultados de restaurar tres imágenes reales desenfocadas del mismo objeto (página del libro). El disparo se realizó sin trípode desde una distancia de aproximadamente 50 cm. El grado de desenfoque de la lente aumentó manualmente de cuadro a cuadro. Los parámetros de filtro de Wiener r y la relación señal / ruido (SNR) se seleccionaron manualmente de manera que se garantice la mejor calidad visual de la restauración. Para compensar los efectos de borde, se realiza una disminución suave en el brillo de la imagen en los bordes.


o1f
Imagen A


o1r_gamma-var_640
Resultado de recuperación de imagen A. r = 53, SNR = 5200


o2f
Imagen B


o2r_gamma-var_640
Resultado de restauración de imagen B. r = 66, SNR = 4400


o3f
Imagen C


o3r_gamma-var_640
Resultado de recuperación de imagen C. r = 102, SNR = 7100


Se puede ver que incluso con un desenfoque significativo, la legibilidad del texto es prácticamente
Totalmente restaurado.


Los resultados de la restauración de imágenes borrosas de matrículas


La imagen borrosa ocurre cuando la cámara y el sujeto se mueven uno con respecto al otro durante la exposición. Considere solo el caso cuando el sujeto se mueve linealmente en relación con la cámara estacionaria. En este caso, el sistema de distorsión está bien aproximado por el PSF en forma de un segmento que se dirige a lo largo del movimiento del objeto. Tal PSF se define por dos parámetros: longitud L y ángulo de lubricación THETA.


m_psf
PSF con lubricación lineal


A continuación se muestra una imagen distorsionada de dos automóviles, obtenida con una exposición insuficientemente corta, lo que condujo a la aparición de un desenfoque notable.


m1
Imagen distorsionada de dos autos


A continuación se muestran los resultados de restaurar los números de ambos automóviles con el filtro Wiener. Los parámetros L, THETA y SNR se seleccionaron de manera que se garantice la mejor calidad visual de la restauración del número de automóvil.


m2
Resultado de restaurar un número de automóvil brillante. L = 78, THETA = 15, SNR = 300


m3
Resultado de la restauración de un número de automóvil oscuro. L = 125, THETA = 0, SNR = 700


Se puede ver que incluso con una lubricación significativa, es posible restaurar la legibilidad de los números
carros


El algoritmo de filtrado se implementa en C ++ OpenCV como una aplicación de consola.
Los códigos fuente se pueden encontrar en los enlaces a continuación.


https://github.com/VladKarpushin/out_of_focus_deblur/tree/full_color_version
https://github.com/VladKarpushin/motion_deblur
https://docs.opencv.org/4.0.0-alpha/de/d3c/tutorial_out_of_focus_deblur_filter.html
https://docs.opencv.org/4.0.0-alpha/d1/dfd/tutorial_motion_deblur_filter.html


Literatura


  1. RC González, RE Woods. Fundamentos de la imagen digital. 1987.
  2. I.S. Gruzman, V.S. Kirichuk, V.P. Kosykh, G.I. Peretyagin, A.A. Spector Procesamiento digital de imágenes en sistemas de información. 2000.

Source: https://habr.com/ru/post/es424987/


All Articles