Saya memiliki sekitar 1.400 jpeg yang entah bagaimana telah rusak dan telah kehilangan gambar cadangan. Mereka semua tampaknya memiliki pola garis grid yang sama pada masing-masing (yaitu gridding tidak bergeser dari gambar ke gambar.
Seperti inilah salah satu gambar ini:
Apakah ada teknik penyaringan gambar di Matlab khususnya atau yang akan menghapus atau menghaluskan pola gridding ini?
Jawaban:
Anda dapat menggunakan algoritma pewarnaan standar. Algoritma ini menggantikan piksel yang ditandai dalam gambar dengan nilai piksel yang mengelilingi piksel yang ditandai ini. Tantangannya di sini adalah untuk mendeteksi kisi (tes saya tampaknya menunjukkan bahwa itu bukan kisi yang benar-benar teratur). Jadi, saya datang dengan solusi ini:
Output program adalah sebagai berikut:
Untuk mendeteksi kisi-kisi saya melakukan solusi cepat dan kotor. Dapat ditingkatkan banyak, tetapi itu menunjukkan ide awal. Alur umumnya adalah:
Untuk inpainting saya menggunakan operasi inpaint OpenCV . Untuk mendeteksi kisi, saya melakukan deteksi tepi dalam arah X dan Y menggunakan filter Sobel. Lalu saya menambahkan semua nilai tepi dalam arah-X dan arah-Y untuk menemukan puncak, di mana garis-garis kisi berada. Lalu, saya memilih puncak tertinggi sebagai koordinat tempat garis kisi diperkirakan. Ini tidak berfungsi sempurna (misalnya tepi yang kuat pada gambar dideteksi secara salah sebagai garis kisi), tetapi itu menunjukkan ide. Hal ini dapat ditingkatkan dengan misalnya transformasi Hough untuk menemukan garis, menendang keluar tepi yang sangat kuat dll.
Atau, jika kisi-kisi benar-benar sama untuk semua gambar, maka Anda dapat melakukan deteksi kisi bersama untuk semua gambar, yang akan menghasilkan akurasi yang jauh lebih baik (cukup lakukan teknik di atas, tetapi sebelum memilih puncak, jumlahkan hasil dari semua gambar). Secara lebih rinci, Anda akan menghitung eX untuk semua gambar dan menambahkan semua eX ini menjadi satu vektor. Vektor ini akan memiliki struktur puncak yang jauh lebih jelas dan ambang dapat dilakukan dengan lebih mudah.
sumber
Saya mencoba algoritma yang sangat sederhana untuk menjalankan filter median 3x3 pada saluran R dan G dari gambar itu dan itu bekerja dengan cukup baik. Kode python sangat sederhana:
Atau Anda dapat menggunakan pemfilteran domain frekuensi seperti yang dibahas dalam pertanyaan ini: /programming/34027840/removing- periodic-noise-from-an-image-using-the-fourier-transform
Transformasi Fourier dari gambar Anda dengan jelas menunjukkan beberapa "titik" berulang dalam spektrum yang sesuai dengan derau periodik ini.
Seperti yang Maximilian tunjukkan, metode yang terakhir ini hanya berfungsi dengan baik jika kebisingannya sangat periodik, yang tampaknya tidak menjadi masalah di sini.
Saya mencoba menjalankan filter yang benar-benar bodoh yang mengeluarkan kotak frekuensi 5x5 kuadrat yang berpusat di sekitar kelipatan 9 di kedua arah x dan y dan itu (semacam) menekan suara tetapi memperkenalkan artefak di lokasi yang tidak mengandung kebisingan (misalnya. langit).
Seseorang mungkin dapat melakukan lebih baik dengan desain takik-saringan yang hati-hati alih-alih secara langsung memusatkan nampan FFT ( jangan pernah melakukan itu dalam praktik! ) Dan hanya menerapkan filter di wilayah gambar di mana noise hadir (yaitu jangan menyaring langit).
sumber