Friday 25 August 2017

Moving average filter matlab code


Tutorial ini membahas bagaimana menggunakan MATLAB untuk pemrosesan gambar. Beberapa keakraban dengan MATLAB diasumsikan (Anda harus tahu bagaimana menggunakan matriks dan menulis file M). Akan sangat membantu jika memiliki Toolbox Pengolahan Gambar MATLAB, tapi untungnya, tidak ada kotak peralatan yang dibutuhkan untuk sebagian besar operasi. Perintah yang membutuhkan Image Toolbox ditunjukkan dengan Image Toolbox. Representasi gambar Ada lima jenis gambar dalam MATLAB. Grayscale. Gambar grayscale M piksel tinggi dan lebar N piksel direpresentasikan sebagai matriks tipe datatype ganda dengan ukuran M N. Nilai elemen (mis., MyImage (m, n)) menunjukkan intensitas piksel grayscale dalam 0,1 dengan 0black dan 1white. RGB truecolor. Gambar truecolor red-green-blue (RGB) diwakili sebagai matriks ganda M-3 tiga dimensi. Setiap piksel memiliki komponen merah, hijau, biru di sepanjang dimensi ketiga dengan nilai 0,1, misalnya komponen warna piksel (m, n) adalah MyImage (m, n, 1) merah, MyImage (m, n, 2) hijau, MyImage (m, n, 3) biru. Indeks. Gambar indeks (paletted) diwakili dengan matriks indeks dengan ukuran M N dan matriks colormap dengan ukuran K3. Colormap memegang semua warna yang digunakan pada gambar dan matriks indeks mewakili piksel dengan mengacu pada warna pada colormap. Misalnya, jika warna ke 22 adalah magenta MyColormap (22, :) 1,0,1. Maka MyImage (m, n) 22 adalah piksel berwarna magenta. Citra biner diwakili oleh matriks logika M N dimana nilai pikselnya adalah 1 (true) atau 0 (false).uint8. Jenis ini menggunakan sedikit memori dan beberapa operasi menghitung lebih cepat dibandingkan dengan tipe ganda. Untuk kesederhanaan, tutorial ini tidak membahas uint8 lebih jauh. Grayscale biasanya merupakan format yang disukai untuk pemrosesan gambar. Dalam kasus yang membutuhkan warna, gambar warna RGB dapat didekomposisi dan ditangani sebagai tiga gambar grayscale yang terpisah. Gambar terindeks harus dikonversi menjadi grayscale atau RGB untuk sebagian besar operasi. Berikut adalah beberapa manipulasi dan konversi yang umum. Beberapa perintah memerlukan Image Toolbox dan ditunjukkan dengan Image Toolbox. Membaca dan menulis file gambar MATLAB bisa membaca dan menulis gambar dengan imft dan imwrite commands. Meskipun cukup banyak format file yang didukung, ada juga yang tidak. Gunakan imformats untuk melihat apa yang didukung oleh pemasangan Anda: Saat membaca gambar, masalah yang tidak menguntungkan adalah imver mengembalikan data gambar pada datatype uint8, yang harus dikonversi menjadi dua kali lipat dan diganti ulang sebelum digunakan. Jadi alih-alih memanggil imread secara langsung, saya menggunakan fungsi M-file berikut untuk membaca dan mengubah gambar: Klik kanan dan simpan getimage. m untuk menggunakan fungsi M ini. Jika gambar baboon. png ada di direktori saat ini (atau di suatu tempat di jalur pencarian MATLAB), Anda dapat membacanya dengan MyImage getimage (baboon. png). Anda juga bisa menggunakan jalur parsial, misalnya jika gambar berada pada direktori saat ini dengan getimage (imagesbaboon. png). Untuk menulis gambar grayscale atau RGB, gunakan Berhati-hatilah bahwa MyImage adalah matriks ganda dengan elemen dalam 0,1 jika tidak bersesuaian, file yang tersimpan mungkin akan kosong. Saat menulis file gambar, saya sangat menyarankan penggunaan format file PNG. Format ini adalah pilihan yang andal karena lossless, mendukung truecolor RGB, dan kompres dengan cukup baik. Gunakan format lain dengan hati-hati. Operasi dasar Berikut adalah beberapa operasi dasar pada gambar grayscale u. Perintah yang membutuhkan Image Toolbox ditunjukkan dengan Image Toolbox. (Catatan: Untuk array apapun, sintaks u (:) berarti membuka gulungan u ke vektor kolom. Misalnya, jika u 1,50,2, maka u (:) adalah 1052). Misalnya, kekuatan sinyal gambar digunakan pada Menghitung rasio signal-to-noise (SNR) dan rasio signal-to-noise (PSNR) puncak. Diberikan citra bersih uclean dan gambar yang terkontaminasi kebisingan u, hati-hati dengan norma. Perilaku adalah norma (v) pada vektor v menghitung sqrt (jumlah (v.2)). Tapi norma (A) pada matriks A menghitung norma matriks L2 induksi, Jadi norma (A) tentu tidak sqrt (jumlah (A (:) 2)). Bagaimanapun, ini merupakan kesalahan yang mudah untuk menggunakan norma (A) di mana seharusnya menjadi norma (A (:)). Linear filter Linear filtering adalah teknik dasar pemrosesan sinyal. Untuk memperkenalkan secara singkat, filter linier adalah operasi dimana pada setiap piksel x m, n dari sebuah gambar, fungsi linear dievaluasi pada pixel dan tetangganya untuk menghitung nilai piksel baru y m, n. Sebuah filter linear dalam dua dimensi memiliki bentuk umum dimana x adalah input, y adalah outputnya, dan h adalah respon impuls filter. Pilihan h yang berbeda mengarah ke filter yang menghaluskan, mempertajam, dan mendeteksi tepinya, untuk memberi beberapa aplikasi. Sisi kanan dari persamaan di atas dilambangkan ringkas seperti h x dan disebut konvolusi h dan x. Penyaringan domain spasial Pemilahan linear dua dimensi diterapkan pada MATLAB dengan conv2. Sayangnya, conv2 hanya bisa menangani penyaringan di dekat batas gambar dengan zero-padding, yang berarti hasil penyaringan biasanya tidak sesuai untuk piksel yang dekat dengan batas. Untuk mengatasi hal ini, kita bisa memberi masukan pada gambar masukan dan gunakan opsi yang valid saat memanggil conv2. Fungsi M berikut melakukan ini. Klik kanan dan simpan conv2padded. m untuk menggunakan fungsi M ini. Berikut adalah beberapa contohnya: Filter 2D h dikatakan terpisah jika dapat dinyatakan sebagai produk luar dari dua filter 1D h1 dan h2. Yaitu, h h1 (:) h2 (:). Lebih cepat lewat h1 dan h2 daripada h. Seperti yang dilakukan di atas untuk jendela rata-rata bergerak dan filter Gaussian. Sebenarnya, sobel filter hx dan hy juga separablewhat adalah h1 dan h2 Penyaring domain empatier Penyaringan domain spasial dengan conv2 dengan mudah merupakan operasi yang sangat mahal. Untuk filter K K pada gambar M N, biaya tambahan dan multiplikasi V2 (MNK 2), atau O (N 4) seandainya M N K. Untuk filter besar, penyaringan di domain Fourier lebih cepat karena biaya komputasi dikurangi menjadi O (N 2 log N). Dengan menggunakan sifat perkalian konvolusi dari transformasi Fourier, konvolusi dihitung secara ekivalen oleh Hasilnya setara dengan conv2padded (x, h) kecuali di dekat batas, di mana perhitungan di atas menggunakan perpanjangan batas periodik. Penyaringan berbasis Fourier juga dapat dilakukan dengan perpanjangan batas simetris dengan memantulkan masukan ke setiap arah: (Catatan: Metode yang lebih efisien lagi adalah penyaringan tumpang tindih FFT. Toolbox Pemrosesan Sinyal menerapkan tumpang tindih FFT-satu dimensi dalam fftfilt .) Filter nonlinier Filter nonlinier adalah operasi dimana masing-masing piksel pixel disaring, n adalah fungsi nonlinear xm, n dan tetangganya. Disini kita secara singkat membahas beberapa jenis filter nonlinier. Filter statistik pesanan Jika Anda memiliki Image Toolbox, filter statistik pesanan dapat dilakukan dengan ordfilt2 dan medfilt2. Filter statistik pesanan memilah nilai piksel di atas lingkungan dan memilih nilai terbesar k. Filter min, max, dan median adalah kasus khusus. Filter morfologi Jika Anda memiliki Image Toolbox, bwmorph menerapkan berbagai operasi morfologi pada gambar biner, seperti erosi, pelebaran, terbuka, dekat, dan kerangka. Ada juga perintah yang tersedia untuk morfologi gambar grayscale: imerode. Imdilate dan imtophat. diantara yang lain. Buat filter Anda sendiri Terkadang kita ingin menggunakan filter baru yang tidak dimiliki MATLAB. Kode di bawah ini adalah template untuk menerapkan filter. (Catatan: Klaim yang sering salah arah adalah bahwa loop di MATLAB lambat dan harus dihindari. Ini pernah benar, kembali ke MATLAB 5 dan lebih awal, tapi loop dalam versi modern cukup cepat.) Misalnya, filter mean alpha-trimmed Mengabaikan d 2 terendah dan d 2 nilai tertinggi di jendela, dan rata-rata nilai sisa (2 r 1) 2 d. Filter adalah keseimbangan antara filter median dan filter rata-rata. Filter mean alpha-trimmed dapat diimplementasikan dalam template sebagai contoh lainnya, filter bilateral adalah cara yang sederhana (ad hoc) adalah dengan hanya mengambil rata-rata tertimbang (merdu oleh alfa) pada setiap titik dengan tetangganya: atau beberapa variasi daripadanya. . Ya, agar lebih canggih Anda bisa mengubah data Fourier terlebih dahulu, lalu memotong frekuensi tinggi. Sesuatu seperti: Ini memotong 20 frekuensi tertinggi. Hati-hati untuk memotong mereka secara simetris sebaliknya transformasi terbalik tidak lagi nyata. Anda perlu hati-hati memilih frekuensi cutoff untuk tingkat smoothing yang tepat. Ini adalah jenis penyaringan yang sangat sederhana (penyaringan kotak pada domain frekuensi), sehingga Anda dapat mencoba dengan lembut menipiskan frekuensi orde tinggi jika distorsinya tidak dapat diterima. Menjawab 4 Okt 09 at 9:16 FFT isnt ide yang buruk, tapi mungkin berlebihan di sini. Berjalan atau bergerak rata-rata memberikan hasil yang umumnya buruk dan harus dihindari untuk apa pun selain PR akhir (dan white noise). Id menggunakan filter Savitzky-Golay (di Matlab sgolayfilt (.)). Ini akan memberi Anda hasil terbaik untuk apa yang Anda cari - beberapa perataan lokal sambil mempertahankan bentuk kurva. Slidehare menggunakan cookies untuk meningkatkan fungsionalitas dan kinerja, dan memberi Anda iklan yang relevan. Jika Anda terus browsing situs, Anda setuju dengan penggunaan cookies di situs ini. Lihat Perjanjian Pengguna dan Kebijakan Privasi kami. Slideshare menggunakan cookies untuk meningkatkan fungsionalitas dan performa, dan memberi Anda iklan yang relevan. Jika Anda terus browsing situs, Anda setuju dengan penggunaan cookies di situs ini. Lihat Kebijakan Privasi dan Perjanjian Pengguna kami untuk rinciannya. Jelajahi semua topik favorit Anda di aplikasi SlideShare Dapatkan aplikasi SlideShare untuk Simpan untuk Nanti bahkan secara offline Terus ke situs mobile Upload Masuk Signup Ketuk dua kali untuk memperkecil Program matlab dasar Berbagi SlideShare ini LinkedIn Corporation copy 2017

No comments:

Post a Comment