Filter 2D adalah filter untuk membentuk suatu obyek menjadi lebih terang (sharp) atau gelap (blur) sesuai dengan ukuran yang diberikan. (aku membayangkan kalau wajahku di blur, kira2 tambah manis ngga ya ....??????)
Filter berupa matrik dengan ukuran tertentu sesuai dengan keinginan. Tetapi biasanya sudah ada format baku matrik filter untuk membuat obyek menjadi lebih terang atau gelap.
Filter berupa matrik dengan ukuran tertentu sesuai dengan keinginan. Tetapi biasanya sudah ada format baku matrik filter untuk membuat obyek menjadi lebih terang atau gelap.
KONVOLUSI (convolution)
Misalnya diketahui citra asal adalah A sebagai berikut :
dan matrik filternya adalah :
dirotasi 180 derajat menjadi :
maka untuk filter nilai koordinat (2,4) baris ke 2 dan kolom ke 4 adalah :
- Rotasi filter (convolution kernel) 180 derajat terhadap center filternya.
- Geser pusat dari filter ke dalam koordinat (2,4) dari gambar asli.
- Kalikan nilai filter dengan nilai citra asli pada posisi koodinat yang sama dan tambahkan dengan perkalian pada koodinat setelahnya yang bersesuaian dengan filternya sampai dengan semua filter terpakai semua.
- 1*2+8*9+15*4+7*7+14*5+16*3+13*6+20*1+22*8=575 ==> 575/9=63.88889
- Sehingga nilai 14 pada citra A digantikan dengan nilai baru 63
Caranya adalah dengan menempelkan filter dengan center dari filter sama dengan titik koodinat yang hendak dicari, misalnya di (2,4) terus dilakukan perhitungan. Coba perhatikan ilustrasi berikut :
Gambar 1. Rotasi filter dan penempatan filter pada koodinat |
Cara ini dilakukan terus menerus (menggeser filter) untuk semua nilai piksel citra asli, sehingga semua nilai citra asli dihasilkan nilai baru semua.
KORELASI (Correlation)
Ini adalah bentuk lain filter tetapi tidak dengan tidak me-rotasi filternya (filter tetap). Korelasi disebut sebagai bentuk relasi tertutup terhadap konvolusi.
Sehingga hasil ilustrasi proses korelasi tersebut dapat dilihat pada gambar.
Gambar 3. Perhatikan filternya. Tidak dirotasi |
Sehingga hasil perhitungannya adalah :
Linear filtering dengan menggunakan imfilter pada matlab
Kita lihat pada koordinat yang sama pada gambar 7, maka warna merah bernilai 54.
Misalnya nilai tersebut adalah :
1*8+8*1+15*6+7*3+14*5+16*7+13*4+20*9+22*2=585 ==> 585/9=65
Perhitungan ilustrasi lengkapnya sebagai berikut :
File excel perhitungan di atas bisa didonwload disini
clear
clear all
i=imread('kelinci-potong.jpg');
h=ones(5,5)/25;
i2=imfilter(i,h);
imshow(i),title('original image');
figure,imshow(i2),title('filtered image');
Gambar 4. Kelinci Potong.jpg |
Setelah dilakukan proses imtool pada obyek kelinci potong.jpg, maka diperoleh nilai pixel pada koordinat kiri bawah terutama pada koordinat (3,298) yaitu RGB (90,105,86).
Agar sama hasilnya ini link dari Kelinci Potong.jpg, mohon didownload.
Gambar 5. Nilai Pixel gambar asli |
Bila filter yang digunakan adalah h=ones(5,5)/25; dimana filternya berukuran 5x5 dengan rata-rata (dibagi dengan 25 karena ada 25 pixel) --> perhatikan garis kuning.
Misalnya yang akan kita hitung warna merah / RED saja, maka hasilnya adalah :
Rata-rata dari matrik di atas adalah 54.04 yang dibulatkan menjadi 54 saja.
Gambar 6. Filter Image |
Demikian juga untuk nilai yang lainnya adalah hasil nilai rata-rata dari matrik 5x5 pixel gambar aslinya.
Columns 1 through 11
17 24
1 8 15
23 5 7
14 16 4
Columns 12 through 22
6 13
20 22 19
12 19 21
3 11 18
Columns 23 through 25
25 2
9
Gambar 7. Nilai pixel hasil filtering |
Data Types
Pada matlab diberikan perintah sebagai berikut :
A=magic(5);
A=[17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 19 12 19 21 3 11 18
25 2 9]
h=[-1 0 1]
Dengan perintah baris kedua, maka akan diperoleh :
A =
Selanjutnya pada command dialog diberikan filter :
h=[-1 0 1]
Setelah dienter, maka akan tampil :
h =
-1 0
1
Selanjutnya diberikan perintah untuk menfilter image array, sebagai
berikut :
imfilter(A,h);
Maka hasilnya adalah munculnya variable jawaban ans dengan tampilan
sebagai berikut :
Gambar 8. Workspace dari imfilter(A,h); |
Kalau kita edit maka akan tampil sebagai berikut :
Gambar 8. Variabel editor 1 dimensi nilai pixel |
Data array asal :
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
Setelah difilter menjadi :
24 -16 -16 14 15
-10 -16 9 9 -10
-10 9 14 9 -10
-10 9 9 -16 -10
15 14 -16 -16 -2
Dengan perintah yang berbeda (Korelasi):
A=uint8(magic(5));
imfilter(A,h); % filter dengan korelasi
Maka jawaban yang muncul adalah :
Gambar 9. Workspace 2 dimensi |
Gambar10. Varibel editor 2 dimensi |
Dengan konvolusi, maka akan diperoleh :
imfilter(A,h,'conv');
% filter dengan konvolusi
Hasil filter dengan convolusi adalah :
Gambar 11. Variabel editor hasil konvolusi 2 dimensi |
Pilihan pemrosesan batas tepi
Terdapat 2 cara, yaitu :
- Diberikan nilai tertentu yang sama untuk pixel yang berada diluar batas
- Diberikan nilai = 0
Hal tersebut bias diilustrasikan sebagai berikut :
Gambar 12. Penentuan nilai tepi dengan nilai sembarang |
Gambar 13. Nilai tepi yang direplikasi |
Gambar 14. Nilai tepi=0 |
Ketika batas diluar pixel diisi dengan angka 0, maka tepi akan
kelihatan batas kotak hitam. Perhatikan gambar 15 dan 16.
Gambar 15. Image dengan filter tepi=0 |
Dan yang menggunakan replication tepi, sehingga output menjadi :
Gambar 16. Image dengan tepi replikasi |
Bandingkan tepi gambarnya.
Gambar 15 dan 16 diperoleh dengan menggunakan perintah matlab :
>> I=imread('kelinci-potong.jpg');
>> h=ones(5,5)/25;
>> I2=imfilter(I,h); % filter dengan tepi=0
>> I3=imfilter(I,h,'replicate'); % filter dengan tepi replikasi
Demikian para pembaca budiman, sedikit sharing saya. Kalau ada salah mohon maaf, kalau ada kue mohon dibagi.....xixiixixixixi
Terima kasih atas informasinya
ReplyDeleteI love it whenever people get together and share opinions.
ReplyDeleteGreat site, keep it up!