Konvolusi
Konvolusi merupakan perkalian dua fungsi f dan g. Operasi konvolusi ada 2 yakni untuk
fungsi malar dan untuk fungsi diskrit. Untuk fungsi malar didefinisikan sebagai berikut ;
h( x , y ) f ( x , y ) * g ( x , y )
f ( a, b) g ( x a ), y b) dadb
(4.1)
Konvolusi dengan fungsi inilah yang banyak digunakan pada pengolahan citra digital. Namun,
fungsi ini sulit diimplementasikan pada menggunakan komputer. Hal ini disebabkan kenyataan
bahwa computer hanya bisa melakukan perhitungan pada data diskrit. Untuk itulah dibentuk
operasi konvolusi untuk fungsi diskrit sebagai berikut :
h ( x, y ) f ( x, y ) * g ( x, y )
f (a, b) g ( x a), y b)
(4.2)
a a b
Misalkan diketahui f(x,y) berukuran 5*5 dan g(x,y) berukuran 3*3. Pada beberapa buku g(x,y)
dinamakan convolution filter, convolution mask, convolution kernel, atau template.
P1
P4
P7
f(x,y)
P2
P5
P8
P3
P6
P9
(1,1)
(2,1)
(3,1)
(4,1)
(5,1)
(1,2)
(2,2)
(3,2)
(4,2)
(5,2)
(1,3)
(2,3)
(3,3)
(4,3)
(5,3)
(1,4)
(2,4)
(3,4)
(4,4)
(5,4)
(1,5)
(2,5)
(3,5)
(4,5)
(5,5)
Dan
A B
D E
G H
g(x,y)
C
F
I
H(x+1,y+1) = A*P1+B*P2+C*P3+D*P4+E*P5+F*P6+G*P7+H*P8+I*P9
(4.3)
1.
Tempatkan kernel g(x,y) pada sudut kiri atas, kemudian hitung nilai pixel hasil konvolusi
pada posisi * dengan rumus pada persamaan (4.3) sehingga h(x,y) pada posisi * akan diisi
dengan nilai hasil konvolusi.
*
2. Geser kernel satu pixel ke kanan, kemudian hitung nilai pixel hasil konvolusi pada posisi *
dengan rumus pada persamaan (4.3) sehingga h(x,y) pada posisi * akan diisi dengan nilai
hasil konvolusi.
*
3. Geser kernel satu pixel ke kanan, kemudian hitung nilai pixel hasil konvolusi pada posisi *
dengan rumus pada persamaan ((4.3) sehingga h(x,y) pada posisi * akan diisi dengan nilai
hasil konvolusi.
4. Geser kernel satu pixel ke bawah, kemudian hitung nilai pixel hasil konvolusi pada posisi *
dengan rumus pada persamaan (4.3) sehingga h(x,y) pada posisi * akan diisi dengan nilai
hasil konvolusi.
*
5. Geser kernel satu pixel ke kanan, kemudian hitung nilai pixel hasil konvolusi pada posisi *
dengan rumus pada persamaan (4.3) sehingga h(x,y) pada posisi * akan diisi dengan nilai
hasil konvolusi.
6. Geser kernel satu pixel ke kanan, kemudian hitung nilai pixel hasil konvolusi pada posisi *
dengan rumus pada persamaan (4.3) sehingga h(x,y) pada posisi * akan diisi dengan nilai
hasil konvolusi.
7. Geser kernel satu pixel ke kanan, kemudian hitung nilai pixel hasil konvolusi pada posisi *
dengan rumus pada persamaan (4.3) sehingga h(x,y) pada posisi * akan diisi dengan nilai
hasil konvolusi.
8. Geser kernel satu pixel ke kanan, kemudian hitung nilai pixel hasil konvolusi pada posisi *
dengan rumus pada persamaan (4.3) sehingga h(x,y) pada posisi * akan diisi dengan nilai
hasil konvolusi.
9. Geser kernel satu pixel ke kanan, kemudian hitung nilai pixel hasil konvolusi pada posisi *
dengan rumus pada persamaan (4.3) sehingga h(x,y) pada posisi * akan diisi dengan nilai
hasil konvolusi.
Contoh 1 : Citra f(x,y) berukuran 5*5 dengan kernel g(x,y) berukuran 3*3 sebagai berikut :
3
3
f ( x, y ) 4
2
6
2
2
3
1
5
4
4
7
6
7
4
2
1
2 g ( x, y ) 0
1
3
5
3
3
6
6
4
1
2
1
1
0
1
Konvolusi dilakukan dengan persamaan (4.3) sehingga menghasilkan h(x,y) dengan langkahlangkah sebagai berikut :
1.
3 2
3 17
H ( x, y )
2.
4
11
3 2
3 17
H ( x, y )
4.
3 2
3 17
H ( x, y )
3.
4
3
11 14
4
2
3
3
H ( x, y ) 4
5.
6.
7.
8.
9.
2
17
18
4
3
11 14
4
2
4
3 4
3 2
3 17 11 14 2
H ( x, y ) 4 18 16
h(3,4) = f(2,3)*g(1,1) + f(2,4)*g(1,2) + f(2,5)*g(1,3) + f(3,3)*g(2,1) + f(3,4)*g(2,2) + f(3,5)*g(2,3) +
f(4,3)*g(3,1) + f(4,4)*g(3,2) + f(4,5)*g(3,3)
= (4*1)+ (3*-1) + (2*1) + (7*0) + (6*2) + (2*0) + (6*1) + (6*-1) + (3*1)
= 18
4
3 4
3 2
3 17 11 14 2
H ( x, y ) 4 18 16 18 2
h(4,2) = f(3,1)*g(1,1) + f(3,2)*g(1,2) + f(3,3)*g(1,3) + f(4,1)*g(2,1) + f(4,2)*g(2,2) + f(4,3)*g(2,3) +
f(5,1)*g(3,1) + f(5,2)*g(3,2) + f(5,3)*g(3,3)
= (4*1)+ (3*-1) + (7*1) + (2*0) + (1*2) + (6*0) + (6*1) + (5*-1) + (7*1)
= 18
4
3 4
3 2
3 17 11 14 2
H ( x, y ) 4 18 16 18 2
2 18
h(4,3) = f(3,2)*g(1,1) + f(3,3)*g(1,2) + f(3,4)*g(1,3) + f(4,2)*g(2,1) + f(4,3)*g(2,2) + f(4,4)*g(2,3) +
f(5,2)*g(3,1) + f(5,3)*g(3,2) + f(5,4)*g(3,3)
= (3*1)+ (7*-1) + (6*1) + (1*0) + (6*2) + (6*0) + (5*1) + (7*-1) + (4*1)
= 16
4
3 4
3 2
3 17 11 14 2
H ( x, y ) 4 18 16 18 2
2 18 16
h(4,4) = f(3,3)*g(1,1) + f(3,4)*g(1,2) + f(3,5)*g(1,3) + f(4,3)*g(2,1) + f(4,4)*g(2,2) + f(4,5)*g(2,3) +
f(5,3)*g(3,1) + f(5,4)*g(3,2) + f(5,5)*g(3,3)
= (7*1)+ (6*-1) + (2*1) + (6*0) + 6*2) + (3*0) + (7*1) + (4*-1) + (5*1)
= 23
3
3
H ( x, y ) 4
2
17
18
18
4
11
16
16
3
14
18
23
4
2
2
2
17
18
18
5
4
11
16
16
7
3
14
18
23
4
4
2
2
3
5
H ( x, y ) 4
2
6
Pada operasi konvolusi diatas, h(x,y) yang dikonvolusi dimulai dari x = 2 dan y = 2. Berikut
adalah gambaran guna mempermudah pembuatan algoritma konvolusi.
f(x,y)
(x-1,y-1)
(x,y-1)
(x+1,y-1)
(x-1,y+1)
(x,y+1)
(x+1,y+1)
For x 2 to N do
For y 2 to M do
z(x,y) f(x-1,y-1)*g(1,1) + f(x-1,y)*g(1,2) + f(x-1,y+1)*g(1,3) +
f(x,y-1)*g(2,1) + f(x,y)*g(2,2) + f(x,y+1)*g(2,3) +
f(x+1,y-1)*g(3,1) + f(x+1,y)*g(3,2) + f(x+1,y+1)*gk(3,3)
EndFory
EndForx
Pada proses konvolusi diatas, pixels-pixels pinggir diabaikan, tidak dikonvolusi sehingga
pixels-pixels pinggir nilainya tetap sama seperti citra awal. Anda dapat melihat bahwa konvolusi
dilakukan per pixel dan untuk setiap pixel dilakukan operasi perkalian dan penjumlahan. Hal ini,
menyebabkan konvolusi mengkonsumsi banyak waktu pada saat pengerjaannya.
Operasi konvolusi merupakan komputasi untuk suatu pixel pada citra hasil konvolusi yang
melibatkan pixel-pixel tetangga pada citra awal. Pada pengolahan citra digital, operasi konvolusi
berguna pada berbagai proses pengolahan citra antara lain perbaikan citra, penghilangan derau,
penghalusan citra, deteksi tepi, penajaman tepi dan lainnya.
Pada operasi konvolusi diatas terdapat permasalahan, yakni pada pixel pinggir tidak
dilakukan konvolusi. Penyelesaian dari masalah ini adalah :
1)
Pixels-pixels pinggir diabaikan atau tidak dikonvolusi. Dengan cara seperti ini, maka
pixels-pixels pinggir nilainya tetap sama seperti citra awal.
2)
Duplikasi elemen citra, misalnya elemen kolom pertama disalin ke kolom M+1, begitu juga
sebaliknya, lalu konvolusi dapat dilakukan terhadap pixel-pixel tersebut.
3)
Elemen yang tidak ada diasumsikan bernilai 0 atau konstanta yang lain, sehingga konvolusi
pixel-pixel pinggir tetap dapat dilakukan.
Contoh 2. Citra f(x,y) berukuran 3*2 dengan kernel g(x,y) berukuran 2*2 sebagai berikut :
4
f ( x, y )
2
7
4
6
1
dan g ( x, y )
1
0
0
1
akan dilakukan konvolusi dengan aturan bahwa elemen yang tidak ada diasumsikan 0, sehingga
konvolusi pixel-pixel pinggir tetap dapat dilakukan. Berikut adalah langkah-langkah yang akan
dilakukan :
1)
7
4
6
1
0
0
0
2)
6
4
6
0
2.
3.
Lakukan konvolusi.
Untuk x = 1 sampai N+1 lakukan
Untuk y = 1 sampai M+1 lakukan
H(x,y)= f(x,y)*g(1,1) + f(1,y+1)*g(1,2) + f(x+1,y)*g(2,1) +
f(x+1,y+1)*g(2,2)
Contoh 3. Citra f(x,y) berukuran 3*2 dengan kernel g(x,y) berukuran 2*2 sebagai berikut :
2
f ( x, y )
3
4
5
3
1
0
dan g ( x, y )
1
1
0
Akan dilakukan konvolusi dengan duplikasi elemen, elemen kolom pertama disalin ke kolom
M+1 dan elemen baris pertama disalin ke baris N+1, lalu lakukan operasi konvolusi.
1)
Pindahkan kolom pertama ke kolom pertama ke kolom m+1, dan pindahkan baris pertama
ke baris N+1.
2
f ( x, y ) 3
2
5
4
1
3
2
3
2
2)
8
5
3
6
f(x,M+1) = f(x,1)
4.
5.
Lakukan konvolusi.
Untuk x = 1 sampai N+1 lakukan
Untuk y = 1 sampai M+1 lakukan
H(x,y)= f(x,y)*g(1,1) + f(1,y+1)*g(1,2) + f(x+1,y)*g(2,1) +
f(x+1,y+1)*g(2,2)
4.2. Transformasi
Satu cara mengurangi waktu komputasi adalah mentransformasi citra dan kernel ke dalam
ranah frekuensi dengan menggunakan transformasi fourier, selanjutnya baru
dilakukan
konvolusi. Keuntungan utama dari penggunaan data frekuensi adalah proses konvolusi dapat
diterapkan dalam bentuk perkalian langsung.
Proses perubahan fungsi dari data spasial ke data frekuensi dilakukan melalui transformasi
fourier. Sedangkan perubahan dari data frekuensi ke data spasial dilakukan melalui transformasi
fourier balikan (invers).
f(x,y)
Transformasi Fourier
F(u,v)
F(u,v)
Transformasi Fourier
f(x,y)
Dengan demikian, operasi konvolusi dua buah fungsi dalam data frekuensi menjadi :
h(x,y) = f(x,y)*g(x,y) H(u,v) = F(u,v) G(u,v)
H(u,v)
h(x,y)
atau citra dapat dilihat sebagai suatu objek dalam domain frekuensi.
F (u , v )
f ( x, y )
M 1 N 1
1
MN
f ( x, y) exp[ j 2 (ux / M vy / N )]
(4.4)
x 0 y 0
M 1 N 1
(4.5)
u 0 v 0
Pers (4.4) adalah persamaan untuk mentransformasikan data citra yang berdomain spatial
menjadi data citra yang berdomain frekuensi. Pers (4.5) adalah persamaan invers transform yaitu
yang mengembalikan data citra berdomain frekuensi menjadi kembali berdomain spasial. f(x,y)
adalah citra berdomain spatial, F(u,v) adalah citra berdomain frekuensi.
( 2 x 1) u
2M
cos
( 2 y 1) v
2N
(4.6)
( 2 x 1) u
2M
cos
( 2 y 1) v
2N
(4.7)
M 1 N 1
C (u , v ) (u ) (v ) f ( x, y ) cos
x 0 v 0
f ( x, y )
M 1 N 1
x 0 y 0