Pulihkan gambar yang buram dan tidak fokus menggunakan filter Wiener. Implementasi dalam C ++ OpenCV

Dalam kelanjutan artikel tentang mengembalikan gambar yang tidak fokus dan buram, saya ingin berbagi hasil memulihkan gambar nyata menggunakan filter Wiener. OpenCV 3.4 digunakan sebagai pustaka pemrosesan gambar. Kameranya adalah Nikon D320, lensa Nikon DX AF-S NIKKOR 18-105mm, pemfokusan dilakukan secara manual, pemotretan dilakukan tanpa tripod.


Hasil Pemulihan Gambar Tidak Fokus


Selama defocusing, sistem distorsi didekati dengan baik oleh fungsi hamburan titik silinder (PSF) dari jari-jari r.


o_psf
PSF silinder


Di bawah ini adalah hasil dari memulihkan tiga gambar yang benar-benar tidak fokus pada objek yang sama (halaman buku). Pemotretan dilakukan tanpa tripod dari jarak sekitar 50 cm. Derajat pengaburan lensa meningkat secara manual dari bingkai ke bingkai. Parameter filter Wiener r dan rasio signal-to-noise (SNR) dipilih secara manual sedemikian rupa untuk memastikan kualitas visual terbaik dari restorasi. Untuk mengimbangi efek tepi, penurunan bertahap pada kecerahan gambar di tepi dilakukan.


of
Gambar A


o1r_gamma-var_640
Hasil pemulihan gambar A. r = 53, SNR = 5200


o2f
Gambar B


o2r_gamma-var_640
Hasil restorasi gambar B. r = 66, SNR = 4400


o3f
Gambar C


o3r_gamma-var_640
Hasil pemulihan gambar C. r = 102, SNR = 7100


Dapat dilihat bahwa bahkan dengan defocusing yang signifikan, keterbacaan teks praktis
sepenuhnya pulih.


Hasil pemulihan gambar buram plat nomor


Kekaburan gambar terjadi ketika kamera dan subjek bergerak relatif satu sama lain selama eksposur. Pertimbangkan hanya kasus ketika subjek bergerak linear relatif terhadap kamera stasioner. Dalam hal ini, sistem distorsi didekati dengan baik oleh PSF dalam bentuk segmen yang diarahkan sepanjang pergerakan objek. PSF seperti itu didefinisikan oleh dua parameter: Panjang L dan sudut pelumasan THETA.


m_psf
PSF dengan pelumasan linier


Di bawah ini adalah gambar yang terdistorsi dari dua mobil, diperoleh dengan eksposur yang tidak cukup pendek, yang menyebabkan penampilan kabur yang terlihat.


m1
Gambar dua mobil yang terdistorsi


Di bawah ini adalah hasil mengembalikan jumlah kedua mobil menggunakan filter Wiener. Parameter L, THETA, dan SNR dipilih sedemikian rupa untuk memastikan kualitas visual terbaik dari pemulihan nomor mobil.


m2
Hasil mengembalikan nomor mobil yang cerah. L = 78, THETA = 15, SNR = 300


m3
Hasil pemulihan nomor mobil gelap. L = 125, THETA = 0, SNR = 700


Dapat dilihat bahwa bahkan dengan pelumasan yang signifikan, dimungkinkan untuk mengembalikan keterbacaan angka
mobil.


Algoritma penyaringan diimplementasikan dalam C ++ OpenCV sebagai aplikasi konsol.
Kode sumber dapat ditemukan di tautan di bawah ini.


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


Sastra


  1. RC Gonzalez, RE Woods. Fundamental gambar digital. 1987.
  2. Saya Gruzman, V.S. Kirichuk, V.P. Kosykh, G.I. Peretyagin, A.A. Spector. Pemrosesan gambar digital dalam sistem informasi. 2000

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


All Articles