BAB VI KONVOLUSI Capaian Pembelajaran Dapat memahami apa itu konvolusi • Dapat memahami manfaat konvolusi • Mampu Mampu membu membuat at prog progra ram m Image Processing kovolusi • dengan menggunakan Delphi 7 serta dapat menguji aplikasi konvolusi dengan berbagai mask konvolusi
7.1 Bahan dan Alat Komputer PC Software Delphi 07
7.2 Landasan Landa san Teori Konvolusi 2 buah fungsi f(x) fungsi f(x) dan dan g(x) g(x) didefinisikan didefinisikan sebagai
notasi notasi
merupa merupakan kan operato operatorr konv konvolu olusi! si! "ntuk "ntuk fungsi fungsi diskri diskritt konvol konvolusi usi
didefinisikan sebagai#
dimana g(x) dimana g(x) merupakan kernel konvolusi atau kernel filter! "ntuk fungsi dua dimensi# operasi konvolusi didefinisikan sebagai $untuk fungsi kontinu%
dan untuk fungsi diskrit# didefinisikan sebagai
&ungsi &ungsi filter g(x,y) disebut g(x,y) disebut juga filter konvolusi# mask konvolusi# kernel konvolusi# konvolusi# atau template! template! 'lustrasi 'lustrasi konvolusi konvolusi diperlihatkan diperlihatkan pada pada gambar bawah ini
di
f(i,j) = Ax0 + Bx1 + Cx2 + Dx3 + Ex + !x" + #x$ + %x& + Ix' Perhatikan kasus berikut# (itra )
)
*
*
+
)
)
+
+
*
2
)
*
*
*
)
)
)
+
+
Dikonvolusi menggunakan templete
akan menghasilkan (itra
,ang baru dengan nilai-nilai . 2
/
7
1
2
+
7
7
1
*
2
7
7
1
1
1
1
1
1
emplate 3 template ,ang sering mun(ul penggunaann,a dalam pengolahan (itra $meminimalisir noise pada (itra# edge dete(tion# filtering# dan lain 3 lain% adalah template klasikal *4*! emplate ,ang diaplikasikan sebagai o * ass fier adalah
Pengaplikasian untuk -ig- * ass fier digunakan template
emplate ,ang lain ,ang sering juga digunakan untuk melakukan smoo-ing (itra adalah
abel ) memperlihatkan operasi %ig- * Pass !ier dan .o * Pass !ier pada suatu (itra ,ang memiliki nilai 3 nilai intensitas pi4el berikut 0 0 0 0 0 0 ) ) ) 0 0 ) ) ) 0 0 ) ) ) 0 0 ) ) ) 0 0 ) ) 0 0 ) ) ) 0 0 0 0 0 0 Contoh (itra sesudah dan sebeum dilakukan proses filtering dan konvolusi dapat dilihat pada tabel di bawah ini
7.3 Prosedur Percoaan "ntuk peran(angan program konvolusi menggunakan Delphi dapat kita lakukan langkah 3 langkah berikut )! 5alankan Delphi!
2! ambahan i(on Panel)# Panel2# 'mage)# 'mage2# 6utton)# 6utton2# Memo)# Memo2# MainMenu)# dan penPi(tureDialog pada form)
"ntuk Panel )# 8ilai 3 nilai propert, pada obje(t inspe(tor adalah
"ntuk 'mage)# i(on 'mage) letakkan di atas Panel) pada &orm)! 8ilai 3 nilai propert, pada obje(t inspe(tor adalah
"ntuk Panel2# 8ilai 3 nilai propert, pada obje(t inspe(tor adalah
"ntuk 'mage2# i(on 'mage2 letakkan di atas Panel2 pada &orm)! 8ilai 3 nilai propert, pada obje(t inspe(tor adalah
"ntuk MainMenu)# klik 24 pada i(on MainMenu)# sehingga mun(ul tampilan sebagai berikut# atur sedemikian hingga# agar tampilan menjadi
*! Klik 24 pada MainMenu) -9 &ile -9 pen# setelah mun(ul halaman editor# tuliskan listing program berikut
pro(edure &orm)!pen)Cli(k$Sender bje(t%: begin if not penPi(tureDialog)!;4e(ute then e4it else begin gambar . 6itmap!Create: gambar!
;4tra(t&ile8ame $penPi(tureDialog)!&ilename%: end:
if gambar!Pi4el&ormat ?9 pf2+bit then gambar!Pi4el&ormat . Pf2+bit: 'mage)!Pi(ture!6itmap . gambar: end:
+! Kembali ke &orm)# Klik 24 pada MainMenu) 'mage Pro(essing Konvolusi# setelah mun(ul halaman editor# tuliskan listing berikut
pro(edure &orm)!Konvolusi)Cli(k$Sender bje(t%: (onst konvolusi arra,@0!!)#0!!2#0!!2Aof smallint . $$$)#)#)%#$)#)#)%#$)#)#)%%# $$0#0#0%#$0#0#0%#$0#0#0%%%: (onst konvolusi2 arra,@0!!)#0!!2#0!!2Aof smallint . $$$0#-)#0%#$-)#+#-)%#$0#-)#0%%# $$0#0#0%#$0#0#0%#$0#0#0%%%: (onst konvolusi* arra,@0!!)#0!!2#0!!2Aof smallint . $$$)#*#)%#$*#)#*%#$)#*#)%%# $$0#0#0%#$0#0#0%#$0#0#0%%%: var row arra,@0!!BAof pb,tearra,: (ol pb,tearra,: 4#, smallint: i#j#k#p smallint: image tbitmap: sum#jum longint: begin if adio6utton)!Che(ked then begin P.-)20: image . tbitmap!Create:
'mage!ssign$gambar%: for ,.) to gambar!Eeight-2 do begin for i.-) to ) do row@i>)A. 'mage!S(aniA: (ol . gambar!S(an$konvolusi@0#i>)#j>)A1row@i>)#4>j1*A%: jum.0: for i.-) to ) do for j.-) to ) do jum.jum>$$konvolusi%@)#i>)#j>)A1row@i>)#4>j1*A%: sum . $sum > jum%>p: if sum92// then sum.2//: if sum?0 then sum.0: for k.0 to 2 do (ol@4>kA.sum: in($4#*%: until 49.*1$gambar!Fidth-+%: end: 'mage2!Pi(ture!bitmap . gambar: gambar!Saveo&ile$=konvulusi)!bmp=%: 'mage!free: end: if adio6utton2!Che(ked then begin P.-)20: image . tbitmap!Create: 'mage!ssign$gambar%: for ,.) to gambar!Eeight-2 do begin for i.-) to ) do row@i>)A. 'mage!S(aniA: (ol . gambar!S(an$konvolusi2@0#i>)#j>)A1row@i>)#4>j1*A%: jum.0: for i.-) to ) do for j.-) to ) do jum.jum>$$konvolusi2%@)#i>)#j>)A1row@i>)#4>j1*A%:
sum . $sum > jum%>p: if sum92// then sum.2//: if sum?0 then sum.0: for k.0 to 2 do (ol@4>kA.sum: in($4#*%: until 49.*1$gambar!Fidth-+%: end:
'mage2!Pi(ture!bitmap . gambar: gambar!Saveo&ile$=konvulusi)!bmp=%: 'mage!free: end: if adio6utton*!Che(ked then begin P.-)20: image . tbitmap!Create: 'mage!ssign$gambar%: for ,.) to gambar!Eeight-2 do begin for i.-) to ) do row@i>)A. 'mage!S(aniA: (ol . gambar!S(an$konvolusi*@0#i>)#j>)A1row@i>)#4>j1*A%: jum.0: for i.-) to ) do for j.-) to ) do jum.jum>$$konvolusi*%@)#i>)#j>)A1row@i>)#4>j1*A%: sum . $sum > jum%>p: if sum92// then sum.2//: if sum?0 then sum.0: for k.0 to 2 do (ol@4>kA.sum: in($4#*%: until 49.*1$gambar!Fidth-+%: end: 'mage2!Pi(ture!bitmap . gambar: gambar!Saveo&ile$=konvulusi)!bmp=%: 'mage!free: end: end:
/! Klik 24 pada MainMenu) -9 &ile -9 ;4it# setelah mun(ul halaman editor# tuliskan listing program berikut
pro(edure &orm)!;4it)Cli(k$Sender bje(t%: begin (lose: end: ! ;ksekusikan program dengan menekan &G $un% pada ke,board# maka hasil ,ang di dapatkan adalah
!." #lo$chart Pro%ra&
!.' (asil Pro%ra&
EP&
SME'8H
!.! Analisa Percoaan Dari per(obaan diatas bisa dianalisa •
Semakin besar ukuran image ,ang akan dikonvolusi maka akan semakin
•
lama proses konvolusi ,ang dilakukan! Matriks pada konstanta konvolusi akan mempengaruhi hasil image baru!
!.7 Kesi&)ulan Pada per(obaan diatas bisa diambil kesimpulan •
Didapatkan hasil gambar ,ang berbeda pada setiap matriks ,ang digunakan# ,aitu $$)#)#)%#$)#)#)%#$)#)#)%%# $$0#-)#0%#$-)#+#-)%#$0#-)#0%%# $$)#*#)%#$*#)#*%#$)#*#)%%!