Fungsi filter2dalam Matlab melakukan pemfilteran linear, dengan sintaks :
filter2(filter, citra, format)
dan hasilnya adalah suatu matriks bertipe double. Parameter format bersifat opsional, yang menjelaskan bagaimana menangani tepi :
· filter2(filter, citra, ‘same’) adalah default yang menghasilkan suatu matriks berukuran sama dengan matriks citra asli. Perintah ini menggunakan penyisipan nol.
>> x=uint8(10*magic(5))
x =
170 240 10 80 150
230 50 70 140 160
40 60 130 200 220
100 120 190 210 30
110 180 250 20 90
>> a=ones(3,3)/9
a =
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
>> filter2(a,x,’same’)
ans =
76.6667 85.5556 65.5556 67.7778 58.8889
87.7778 111.1111 108.8889 128.8889 105.5556
66.6667 110.0000 130.0000 150.0000 106.6667
67.7778 131.1111 151.1111 148.8889 85.5556
56.6667 105.5556 107.7778 87.7778 38.8889
· filter2(filter, citra, ‘valid’) merupakan mask hanya pada piksel-piksel sebelah dalam. Hasilnya akan berukuran lebih kecil dari citra asli
>> filter2(a,x,’valid’)
ans =
111.1111 108.8889 128.8889
131.11110.0000 150.0000
131.1111 151.1111 148.8889.
Hasil format ‘same’ di atas bisa di dapatkan dengan menyisipkan nol-nol dan menggunakan format ‘valid’ :
>> x2=zeros(7,7);
>> x2(2:6,2:6)=x
x2 =
0 0 0 0 0 0 0
0 170 240 10 80 150 0
0 230 50 70 140 160 0
0 40 60 130 200 220 0
0 100 120 190 210 30 0
0 110 180 250 20 90 0
0 0 0 0 0 0 0
>> filter2(a,x2,’valid’)
ans =
76.6667 85.5556 65.5556 67.7778 58.8889
87.7778 111.1111 108.8889 128.8889 105.5556
66.6667 110.0000 130.0000 150.0000 106.6667
67.7778 131.1111 151.1111 148.8889 85.5556
56.6667 105.5556 107.7778 87.7778 38.8889
· filter2(filter, citra, ‘full’) memberikan keluaran yang berukuran lebih besar dari citra asli; hal ini dilakukan dengan menyisipkan nol-nol, dan menerapkan filter pada semua tempat di dalam dan di sekitar citra tempat mask beririsan dengan matriks citra :
>> filter2(a,x,’full’)
ans =
18.8889 45.5556 46.6667 36.6667 26.6667 25.5556 16.6667
44.4444 76.6667 85.5556 65.5556 67.7778 58.8889 34.4444
48.8889 87.7778 111.1111 108.8889 128.8889 105.5556 58.8889
41.1111 66.6667 110.0000 130.0000 150.0000 106.6667 45.5556
27.7778 67.7778 131.1111 151.1111 148.8889 85.5556 37.7778
23.3333 56.6667 105.5556 107.7778 87.7778 38.8889 13.3333
12.2222 32.2222 60.0000 50.0000 40.0000 12.2222 10.0000
Anda dapat pula menciptakan filter sendiri menggunakan fungsi fspecial; Fungsi ini memiliki banyak opsi yang mempermudah pembuatan suatu filter. Jika anda ingin menciptakan suatu filter perata-rata, anda bisa memakai opsi ‘average’ sebagai berikut :
>> fspecial(‘average’,[5,7])
ans =
0.0286 0.0286 0.0286 0.0286 0.0286 0.0286 0.0286
0.0286 0.0286 0.0286 0.0286 0.0286 0.0286 0.0286
0.0286 0.0286 0.0286 0.0286 0.0286 0.0286 0.0286
0.0286 0.0286 0.0286 0.0286 0.0286 0.0286 0.0286
0.0286 0.0286 0.0286 0.0286 0.0286 0.0286 0.0286
Atau secara sederhana, anda bisa menggunakan :
>> fspecial(‘average’,11)
ans =
0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083
0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083
0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083
0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083
0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083
0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083
0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083
0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083
0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083
0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083
0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083
Yang menghasilkan suatu matriks berukuran 11 x 11. Jika jumlah vector di abaikan, maka keluarannya berukuran 3 x 3 :
>> fspecial(‘average’)
ans =
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
Sebagai contoh, filter perata-rata 3 x 3 diterapkan pada suatu citra sebagai berikut :
>> b=imread(‘peppers.png’);
>> f1=fspecial(‘average’,5);
>> c=rgb2gray(b);
>> cf1=filter2(f1,c);
>> figure,imshow(b),figure,imshow(cf1/255)
Hasil yang diperoleh ditampilkan pada gambar di bawah. Perhatikan bahwa filter perata-rata mengaburkan tepi citra; tepi di beberapa area menjadi kurang tegas daripada yang asli. Citra dapat pula dibuat menjadi lebih kabur menggunakan filter perata-rata yang berukuran lebih besar.
Perhatikan pula bahwa penyisipan nol-nol pada tepi mengakibatkan border atau batas hitam yang tampak mengitari citra. Hal ini semakin kelihatan bila digunakan filter perata-rata yang berukuran lebih besar. Jika artifak tersebut tidak diinginkan; misalnya menyebabkan kecerahan rata-rata berubah, maka akan lebih tepat menggunakan opsi ‘valid’.
Citra yang dihasilkan bisa jadi tampak lebih buruk dari citra asli. Akan tetapi, penerapan filter pengabur seperti itu bisa dimanfaatkan untuk mengurangi detail citra yang berguna bagi operasi-operasi pengenalan objek suatu mesin otonom.
mudah ternyata ya gan
klw ada usaha belajar mudah semua koq gan
hihihi izin bookmark blog , izin share juga ke temen ane
widih thanks gan