Recupere imagens borradas e desfocadas usando o filtro Wiener. Implementação em C ++ OpenCV

Na continuação do artigo sobre a restauração de imagens desfocadas e desfocadas, quero compartilhar meus resultados da restauração de imagens reais usando o filtro Wiener. O OpenCV 3.4 foi usado como a biblioteca de processamento de imagens. A câmera é uma Nikon D320, uma lente Nikon DX AF-S NIKKOR 18-105 mm, a desfocagem foi realizada manualmente, a fotografia foi realizada sem um tripé.


Resultados de recuperação de imagem desfocada


Durante a desfocagem, o sistema de distorção é bem aproximado pela função de dispersão de pontos cilíndricos (PSF) do raio r.


o_psf
PSF cilíndrico


Abaixo estão os resultados da restauração de três imagens desfocadas reais do mesmo objeto (página do livro). As filmagens foram realizadas sem um tripé a uma distância de cerca de 50 cm. O grau de desfocagem da lente aumentou manualmente de quadro para quadro. Os parâmetros do filtro Wiener r e a relação sinal-ruído (SNR) foram selecionados manualmente de forma a garantir a melhor qualidade visual da restauração. Para compensar os efeitos das bordas, é realizada uma diminuição gradual no brilho da imagem nas bordas.


o1f
Imagem A


o1r_gamma-var_640
Resultado de recuperação de imagem A. r = 53, SNR = 5200


o2f
Imagem B


o2r_gamma-var_640
Resultado da restauração da imagem B. r = 66, SNR = 4400


o3f
Imagem C


o3r_gamma-var_640
Resultado de recuperação de imagem C. r = 102, SNR = 7100


Pode-se observar que, mesmo com desfocagem significativa, a legibilidade do texto é praticamente
totalmente restaurado.


Os resultados da restauração de imagens borradas de placas


A desfocagem da imagem ocorre quando a câmera e o objeto se movem em relação um ao outro durante a exposição. Considere apenas o caso em que o assunto está se movendo linearmente em relação à câmera estacionária. Nesse caso, o sistema de distorção é bem aproximado pelo PSF na forma de um segmento que é direcionado ao longo do movimento do objeto. Esse PSF é definido por dois parâmetros: comprimento L e ângulo de lubrificação THETA.


m_psf
PSF com lubrificação linear


Abaixo está uma imagem distorcida de dois carros, obtida com uma exposição insuficientemente curta, o que levou ao aparecimento de um borrão perceptível.


m1
Imagem distorcida de dois carros


Abaixo estão os resultados da restauração dos números de ambos os carros usando o filtro Wiener. Os parâmetros L, THETA e SNR foram selecionados de forma a garantir a melhor qualidade visual da restauração do número do carro.


m2
Resultado da restauração de um número de carro brilhante. L = 78, THETA = 15, SNR = 300


m3
Resultado da restauração de um número de carro escuro. L = 125, THETA = 0, SNR = 700


Pode-se observar que, mesmo com lubrificação significativa, é possível restaurar a legibilidade dos números
carros.


O algoritmo de filtragem é implementado no C ++ OpenCV como um aplicativo de console.
Os códigos-fonte podem ser encontrados nos links abaixo.


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 Gonzalez, RE Woods. Fundamentos da imagem digital. 1987.
  2. I.S. Gruzman, V.S. Kirichuk, V.P. Kosykh, G.I. Peretyagin, A.A. Spector. Processamento digital de imagens em sistemas de informação. 2000.

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


All Articles