Mengapa filter Gaussian digunakan sebagai filter low pass dalam pemrosesan gambar?
30
Dalam pemrosesan sinyal 1d, banyak jenis filter low pass digunakan. Filter Gaussian hampir tidak pernah digunakan.
Mengapa mereka begitu populer di aplikasi pengolah gambar? Apakah filter ini merupakan hasil dari pengoptimalan kriteria atau hanya solusi sementara karena 'bandwidth' gambar biasanya tidak terdefinisi dengan baik.
Aplikasi pengolah gambar berbeda dengan aplikasi pengolah audio, karena banyak di antaranya yang disesuaikan untuk mata. Topeng Gaussian hampir secara sempurna mensimulasikan kekaburan optik (lihat juga fungsi penyebaran titik ). Dalam aplikasi pemrosesan gambar yang berorientasi pada produksi artistik, filter Gaussian digunakan untuk kabur secara default.
Properti kuantitatif penting lainnya dari filter Gaussian adalah bahwa filter tersebut di mana - mana non-negatif . Ini penting karena sebagian besar sinyal 1D bervariasi sekitar 0 ( ) dan dapat memiliki nilai positif atau negatif. Gambar berbeda dalam arti bahwa semua nilai gambar adalah non-negatif ( ). Konvolusi dengan kernel Gaussian (filter) menjamin hasil yang tidak negatif, sehingga fungsi tersebut memetakan nilai-nilai non-negatif ke nilai-nilai non-negatif lainnya ( ). Karena itu hasilnya selalu merupakan gambar lain yang valid. x ∈ R + f : R + → R +x∈Rx∈R+f:R+→R+
Secara umum, penolakan frekuensi dalam pemrosesan gambar tidak sepenting pada sinyal 1D. Misalnya, dalam skema modulasi, filter Anda harus sangat tepat untuk menolak saluran lain yang ditransmisikan pada frekuensi operator yang berbeda, dan seterusnya. Saya tidak bisa memikirkan apa pun hanya sebagai kendala untuk masalah pemrosesan gambar.
Filter Gaussian digunakan dalam pemrosesan gambar karena mereka memiliki properti yang dukungannya dalam domain waktu, sama dengan dukungan mereka dalam domain frekuensi. Ini muncul dari Gaussian menjadi Fourier Transform-nya sendiri.
apa akibat dari hal ini? Nah, jika dukungan filter sama di kedua domain, itu berarti bahwa rasio kedua dukungan adalah 1. Ternyata, ini berarti bahwa filter Gaussian memiliki 'produk bandwidth waktu minimum'.
Jadi, apa yang mungkin Anda katakan? Nah, dalam pemrosesan gambar, satu tugas yang sangat penting adalah menghilangkan white noise, sembari mempertahankan tepi yang menonjol. Ini bisa menjadi tugas yang kontradiktif - white noise ada di semua frekuensi secara merata, sementara edge ada di rentang frekuensi tinggi. (Perubahan mendadak dalam sinyal spasial). Dalam penghapusan noise tradisional melalui pemfilteran, sinyal low pass filtered, yang berarti komponen frekuensi tinggi dalam sinyal Anda sepenuhnya dihilangkan.
Tetapi jika gambar memiliki tepi sebagai komponen frekuensi tinggi, LPF tradisional juga akan menghapusnya, dan secara visual, ini memanifestasikan dirinya sebagai tepi menjadi lebih 'tercoreng'.
Lalu bagaimana, untuk menghilangkan noise, tetapi juga menjaga tepi frekuensi tinggi? Masukkan kernel Gaussian. Karena Transformasi Fourier dari Gaussian juga merupakan Gaussian, filter Gaussian tidak memiliki cutoff tajam pada beberapa frekuensi band pass di luar semua frekuensi yang lebih tinggi dihilangkan. Sebagai gantinya, ia memiliki ekor yang anggun dan alami yang menjadi semakin rendah dengan meningkatnya frekuensi. Ini berarti bahwa itu akan bertindak sebagai filter lolos rendah, tetapi juga memungkinkan komponen frekuensi tinggi sepadan dengan seberapa cepat ekornya meluruh. (Di sisi lain, LPF akan memiliki produk bandwidth waktu yang lebih tinggi, karena dukungannya dalam domain-F tidak hampir sebesar milik seorang Gaussians).
Ini kemudian memungkinkan seseorang untuk mencapai yang terbaik dari kedua dunia - penghapusan kebisingan, ditambah pelestarian tepi.
Saya tidak yakin bahwa Anda dapat membandingkan dua dukungan secara langsung karena satu diukur dalam waktu / panjang dan yang lainnya di Hz / radian. Morfologi mereka identik, tetapi properti penskalaan universal masih berlaku.
Phonon
Terima kasih telah mengingatkan saya pada produk bandwidth waktu minimum. Namun, seperti yang disebutkan dalam Phonon, mengurangi dukungan domain spasial (~ waktu) tentu saja meningkatkan bandwidth. Tidak mungkin Anda dapat memiliki penindasan derau dan mempertahankan tepian dengan filter Gaussian sederhana. Itu sebabnya Perona & Malik mengembangkan penyaringan anisotropik.
nimrodm
@ Phonon Seperti yang telah saya lihat, dukungannya hanyalah berapa banyak entri yang bukan nol menggambarkan fungsi di kedua domain - Saya yakin keduanya sama. (Karenanya, rasio 1). Yang sedang dikatakan, produk bandwidth waktu diukur sebagai produk varians dari fungsi dalam waktu dan frekuensi. Bagaimana normalnya berbeda dari penulis, saya telah melihatnya disamakan dengan 1/2 atau 1/4.
Spacey
1
@nimrodm "mengurangi dukungan domain spasial (~ waktu) tentu saja meningkatkan bandwidth.", Ya, itulah tren , yang berasal dari hubungan terbalik frekuensi-waktu. (Di sinilah ketidakpastian frekuensi waktu berasal). Namun, fungsi Gaussian adalah kelas yang benar-benar meminimalkan produk ini. Mengingat hubungan terbalik antara waktu dan frekuensi, tidak ada cara untuk melakukannya kecuali memiliki dukungan yang sama di kedua domain.
Spacey
@ nimrodm Dalam difusi anisotropik, kernel yang saya lihat masih berwarna gaussian, meskipun dengan matriks kovarians yang bergantung pada gradien gambar. (Ini juga merupakan metode non-linear, VS gaussian smoothing yang linear). Tetapi, gaussian tetap digunakan karena sifat-sifatnya.
Spacey
11
Anda sudah memiliki jawaban yang baik, tetapi saya hanya akan menambahkan satu properti berguna lebih lanjut dari filter 2D Gaussian, yaitu mereka dapat dipisahkan , yaitu filter 2D dapat didekomposisi menjadi dua filter 1D. Ini bisa menjadi pertimbangan kinerja yang penting untuk ukuran kernel yang lebih besar, karena filter terpisah MxN dapat diimplementasikan dengan M+Nmultiply-add sedangkan filter MxN yang tidak dapat dipisahkan membutuhkan M*Nmultiply- add .
Manual imagemagick memiliki penjelasan yang bagus tentang mengapa penyaringan dengan fungsi sinc menyebabkan efek "dering" sementara gaussians tidak. ( http://www.imagemagick.org/Usage/fourier/#blurring dan http://www.imagemagick.org/Usage/fourier/#circle_spectrum ). Ketika Anda memiliki tepi (diskontinuitas) di gambar Anda (yang sebagian besar gambar lakukan) maka sepenuhnya memotong semua frekuensi tinggi membuat Anda dengan riak di domain spasial. Anda juga mendapatkan dering ketika Anda memfilter gelombang persegi dengan fungsi sinc dalam satu dimensi.
Sudah ada jawaban yang indah, tetapi saya akan menambahkan butiran garam saya, atau perspektif yang agak berbeda:
Penyaringan pada tingkat yang paling abstrak dapat dianggap sebagai menerapkan beberapa pengetahuan sebelumnya ke beberapa data mentah. Ini berarti bahwa menerapkan beberapa algoritma penyaringan adalah untuk menerapkan ini sebelum menemukan rasio sinyal ke noise yang optimal, misalnya.
Untuk gambar, prior klasik adalah kehalusan nilai (misalnya intensitas) sehubungan dengan posisi (ini dapat dilihat sebagai fungsi penyebaran titik yang disebutkan oleh @Phonon). Ini sering dimodelkan sebagai gaussian karena itu adalah bentuk yang akan Anda dapatkan ketika mencampurkan benda-benda yang berbeda dengan jari-jari kehalusan yang dikenal (ini disebut teorema batas pusat ). Ini sebagian besar berguna ketika Anda ingin membuat turunan dari suatu gambar: daripada membedakan pada sinyal mentah (yang akan menghasilkan output yang bising), Anda harus melakukannya pada gambar yang dihaluskan. Ini sama dengan menerapkan operator seperti wavelet seperti filter Gabor .
Anda sudah memiliki jawaban yang baik, tetapi saya hanya akan menambahkan satu properti berguna lebih lanjut dari filter 2D Gaussian, yaitu mereka dapat dipisahkan , yaitu filter 2D dapat didekomposisi menjadi dua filter 1D. Ini bisa menjadi pertimbangan kinerja yang penting untuk ukuran kernel yang lebih besar, karena filter terpisah MxN dapat diimplementasikan dengan
M+N
multiply-add sedangkan filter MxN yang tidak dapat dipisahkan membutuhkanM*N
multiply- add .sumber
Manual imagemagick memiliki penjelasan yang bagus tentang mengapa penyaringan dengan fungsi sinc menyebabkan efek "dering" sementara gaussians tidak. ( http://www.imagemagick.org/Usage/fourier/#blurring dan http://www.imagemagick.org/Usage/fourier/#circle_spectrum ). Ketika Anda memiliki tepi (diskontinuitas) di gambar Anda (yang sebagian besar gambar lakukan) maka sepenuhnya memotong semua frekuensi tinggi membuat Anda dengan riak di domain spasial. Anda juga mendapatkan dering ketika Anda memfilter gelombang persegi dengan fungsi sinc dalam satu dimensi.
sumber
Sudah ada jawaban yang indah, tetapi saya akan menambahkan butiran garam saya, atau perspektif yang agak berbeda:
Penyaringan pada tingkat yang paling abstrak dapat dianggap sebagai menerapkan beberapa pengetahuan sebelumnya ke beberapa data mentah. Ini berarti bahwa menerapkan beberapa algoritma penyaringan adalah untuk menerapkan ini sebelum menemukan rasio sinyal ke noise yang optimal, misalnya.
Untuk gambar, prior klasik adalah kehalusan nilai (misalnya intensitas) sehubungan dengan posisi (ini dapat dilihat sebagai fungsi penyebaran titik yang disebutkan oleh @Phonon). Ini sering dimodelkan sebagai gaussian karena itu adalah bentuk yang akan Anda dapatkan ketika mencampurkan benda-benda yang berbeda dengan jari-jari kehalusan yang dikenal (ini disebut teorema batas pusat ). Ini sebagian besar berguna ketika Anda ingin membuat turunan dari suatu gambar: daripada membedakan pada sinyal mentah (yang akan menghasilkan output yang bising), Anda harus melakukannya pada gambar yang dihaluskan. Ini sama dengan menerapkan operator seperti wavelet seperti filter Gabor .
sumber