Smoothing Images Penjelasan di bawah ini termasuk pada buku Computer Vision: Algoritma dan Aplikasi oleh Richard Szeliski dan LearningOpenCV Smoothing. Juga disebut kabur. Adalah operasi pengolahan gambar yang sederhana dan sering digunakan. Ada banyak alasan untuk smoothing. Dalam tutorial ini kita akan fokus pada smoothing agar bisa mengurangi noise (kegunaan lain akan terlihat pada tutorial berikut). Untuk melakukan operasi pemulusan, kita akan menerapkan filter pada gambar kita. Jenis filter yang paling umum adalah linier. Di mana nilai pixel8217s output (yaitu) ditentukan sebagai jumlah tertimbang nilai piksel masukan (mis.): Ini membantu untuk memvisualisasikan filter sebagai jendela koefisien yang meluncur di atas gambar. Ada banyak jenis filter, disini kami akan menyebutkan yang paling banyak digunakan: Normalalized Box Filter Filter ini adalah yang paling sederhana dari semua Setiap piksel output adalah rata-rata tetangganya kernel (semuanya berkontribusi dengan bobot yang sama) Kernel di bawah ini: Gaussian Filter Mungkin filter yang paling berguna (meski bukan yang tercepat). Pemilahan Gaussian dilakukan dengan menggabungkan setiap titik pada array input dengan kernel Gaussian dan kemudian menjumlahkan semuanya untuk menghasilkan output array. Hanya untuk membuat gambar lebih jelas, ingat bagaimana kernel Gauss 1D terlihat seperti Dengan asumsi bahwa gambar 1D, Anda dapat melihat bahwa piksel yang berada di tengah memiliki bobot terbesar. Bobot tetangganya menurun seiring jarak spasial antara keduanya dan piksel tengahnya meningkat. Ingatlah bahwa Gauss 2D dapat direpresentasikan sebagai: Filter Median Filter median dijalankan melalui setiap elemen sinyal (dalam hal ini gambar) dan ganti setiap piksel dengan median piksel tetangganya (terletak di lingkungan kuadrat di sekitar piksel yang dievaluasi ). Filter Bilateral Sejauh ini, kami telah menjelaskan beberapa filter yang tujuan utamanya adalah untuk memperlancar input gambar. Namun, terkadang filter tidak hanya membubarkan noise, tapi juga menghaluskan ujungnya. Untuk menghindari hal ini (paling tidak paling tidak), kita bisa menggunakan filter bilateral. Dengan cara yang sama seperti filter Gaussian, filter bilateral juga mempertimbangkan piksel tetangga dengan bobot yang ditetapkan untuk masing-masingnya. Bobot ini memiliki dua komponen, yang pertama adalah pembobotan yang sama yang digunakan oleh filter Gaussian. Komponen kedua mempertimbangkan perbedaan intensitas antara piksel tetangga dan yang dievaluasi. Untuk penjelasan lebih rinci, Anda dapat memeriksa tautan ini Apa yang dilakukan program ini Memuatkan gambar Menerapkan 4 jenis filter yang berbeda (dijelaskan dalam Teori) dan menunjukkan gambar yang disaring secara berurutan Penjelasan Let8217s memeriksa fungsi OpenCV yang hanya melibatkan prosedur perataan, karena Istirahat sudah diketahui sekarang. Normalised Block Filter: OpenCV menawarkan fungsi blur untuk melakukan smoothing dengan filter ini. Kami menentukan 4 argumen (lebih jelasnya, periksa Referensi): src. Sumber gambar dst. Ukuran gambar tujuan (w, h). Mendefinisikan ukuran kernel yang akan digunakan (piksel w lebar dan tinggi piksel h) Titik (-1, -1). Menunjukkan dimana titik jangkar (pixel dievaluasi) terletak berkenaan dengan lingkungan sekitar. Jika ada nilai negatif, maka pusat kernel dianggap sebagai titik anchor. Hal ini dilakukan oleh fungsi GaussianBlur: Disini kita menggunakan 4 argumen (lebih jelasnya, periksa referensi OpenCV): Gaussian Moving Average Filter Arduino code untuk menerapkan filter gaussian ke sinyal analog untuk menekan noise. Ada tiga mode yang akan membantu Anda menemukan filter gaussian yang sesuai untuk sinyal Anda. Dua mode pertama digunakan dengan Serial Plotter dan yang ketiga digunakan dengan Serial Monitor. Plot curve mode menunjukkan bentuk fungsi gaussian yang akan digunakan sebagai rata-rata tertimbang. PlotData mode memilah data mentah beserta rata-rata pergerakan tertimbang gaussian data Anda. Sinyal mentah diplot tertunda oleh n2 titik (di mana n adalah jumlah sampel data masa lalu yang dirata-ratakan), sehingga dapat dibandingkan dengan rata-rata tertimbang gaussian, yang akan dipusatkan pada titik n2 yang lalu. Hubungkan potensiometer ke pin analog 2 dan 3. Sambungkan sensor analog Anda ke pin analog 0, atau jika Anda memiliki sensor digital, gunakan kode interfacing Anda dan bukan baris ini: uint16t currentSampleData analogRead (analogDataPin) Untuk mengubah mode, ubah Baris pertama dalam fungsi setup ke pada pilihan enum Mode, dalam kasus ini, plotCurve mode. Di Arduino IDE, buka Arduino Serial plotter (menu Tools - gt Serial Plotter), dan ubah menu popup baudrate menjadi 115200. Balikkan dua pot untuk menyesuaikan parameter yang mengendalikan kurva gaussian. Panci pada pin 2 menyesuaikan jumlah sampel yang akan diberi bobot dengan fungsi gaussian. Pot di pin 3 mengontrol lebar kurva gaussian yang sebanding dengan jumlah standar deviasi yang diliputnya. Bila Anda memiliki kurva yang terlihat cocok (hanya tebakan pertama), ubah mode ke plotCurve dan terus mengutak-atik pot (yang terpenting, pot di pin 2). Sekali lagi, untuk melakukan ini, ubah baris pertama di setup ke mode plotData. Anda dapat memeriksa mode 1 kapan saja. Bila Anda puas dengan bagaimana sinyal yang disaring mengikuti sinyal Anda dan menolak noise yang tidak diinginkan, beralihlah ke mode PrintWeights dengan mengganti baris pertama setup dengan mode printWeights. Buka monitor serial dengan memilih Tools - gt Serial Monitor. Salin baris pertama yang berisi bobot untuk filter gaussian. Anda sekarang dapat menggunakannya untuk menginisialisasi array untuk filter gaussian Anda sendiri. Filter Rata-Rata (MA filter) Loading. Filter rata-rata bergerak adalah filter Low Pass FIR (Finite Impulse Response) sederhana yang biasa digunakan untuk merapikan rangkaian datafile sampel. Dibutuhkan sampel M input sekaligus dan mengambil rata-rata sampel M tersebut dan menghasilkan satu titik keluaran. Ini adalah struktur LPF (Low Pass Filter) yang sangat sederhana yang berguna bagi ilmuwan dan insinyur untuk menyaring komponen bising yang tidak diinginkan dari data yang dimaksud. Seiring bertambahnya panjang filter (parameter M) kehalusan output meningkat, sedangkan transisi tajam pada data menjadi semakin tumpul. Ini menyiratkan bahwa filter ini memiliki respons domain waktu yang sangat baik namun respons frekuensinya buruk. Filter MA melakukan tiga fungsi penting: 1) Diperlukan titik masukan M, menghitung rata-rata titik M tersebut dan menghasilkan titik keluaran tunggal 2) Karena perhitungan perhitungan yang dilakukan. Filter memperkenalkan jumlah delay yang pasti 3) Filter bertindak sebagai Low Pass Filter (dengan respons domain frekuensi yang buruk dan respons domain waktu yang baik). Kode Matlab: Kode matlab berikut mensimulasikan respon domain waktu dari M-point Moving Average filter dan juga merencanakan respons frekuensi untuk berbagai panjang filter. Time Domain Response: Pada plot pertama, kita memiliki input yang masuk ke moving average filter. Masukannya berisik dan tujuan kami adalah mengurangi kebisingan. Angka berikutnya adalah respon output dari filter Moving Average 3-point. Dapat disimpulkan dari gambar bahwa filter Moving Average 3-point tidak banyak berguna untuk menyaring noise. Kami meningkatkan keran filter menjadi 51 poin dan kita dapat melihat bahwa noise pada output telah berkurang banyak, yang digambarkan pada gambar berikutnya. Kami meningkatkan keran lebih jauh ke 101 dan 501 dan kita dapat mengamati bahwa meskipun - meskipun suaranya hampir nol, transisi tersebut menjadi tumpul secara drastis (mengamati kemiringan di kedua sisi sinyal dan membandingkannya dengan transisi dinding bata yang ideal di Masukan kami). Respon Frekuensi: Dari respons frekuensi dapat dikatakan bahwa roll-off sangat lambat dan redaman pita stop tidak baik. Mengingat redaman band stop ini, jelas, filter rata-rata bergerak tidak bisa memisahkan satu pita frekuensi dari yang lain. Seperti kita ketahui bahwa kinerja yang baik dalam domain waktu menghasilkan kinerja yang buruk dalam domain frekuensi, dan sebaliknya. Singkatnya, rata-rata bergerak adalah filter pemulusan yang sangat baik (tindakan dalam domain waktu), namun filter low-pass yang sangat buruk (tindakan di domain frekuensi) Tautan Eksternal: Buku yang Disarankan: Sidebar Utama
No comments:
Post a Comment