Anda di halaman 1dari 8

PENGOLAHAN CITRA DIGITAL TUGAS VI

Oleh : ERNA YULIANTI (1104505008)

Diberikan : 07 November 2013 Dikumpul : 21 November 2013

JURUSAN TEKNOLOGI IN OR!ASI AKULTAS TEKNIK UNIVERSITAS UDAYANA JI!"ARAN#"ALI $01%

PENGOLAHAN CITRA DIGITAL ILTER 1& L'()*'h + l'()*'h Buat new application pada Delphi 7. Tambahkan komponen OpenPictureDialog yang berguna untuk menampilkan gambar. emudian buat de!ain form !eperti gambar di ba"ah ini.

G',-'. 1& De!ain #orm

$ada gambar diata! menggunakan beberapa component palette% diantaranya adalah label% bevel% image% button% dan OpenPictureDialog. $ada komponen Image% dalam kotak dialog Object Inspector ubah stretch dari false men&adi true agar ukuran gambar menye!uaikan dengan ukuran TImage.

$& K/0e P./).', 'etelah de!ain !ele!ai dibuat% kemudian dilan&utkan dengan menuli!kan kode program agar program dapat ber&alan !e!uai yang diinginkan.
unit Unit1;//nama unit interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, orms, !ialogs, StdCtrls, "#tCtrls, "#t!lgs; //modul modul yang dipa$ai dalam program, modul ini telah disedia$an oleh delphi type //mende$larasi$an type utama % orm1 & class'% orm( )a*el1+ %)a*el; ,mage1+ %,mage; ,mage-+ %,mage; .e/el1+ %.e/el; .e/el-+ %.e/el; .utton1+ %.utton; .utton-+ %.utton; .utton0+ %.utton; .utton1+ %.utton; 2pen3icture!ialog1+ %2pen3icture!ialog; .utton4+ %.utton; //prosedur dari *utton 5i$a di $li$ procedure .utton1Clic$'Sender+ %2*5ect(; procedure .utton-Clic$'Sender+ %2*5ect(; procedure .utton1Clic$'Sender+ %2*5ect(; procedure .utton4Clic$'Sender+ %2*5ect(; procedure .utton0Clic$'Sender+ %2*5ect(; //procedure, /aria*le yang diperlu$an yang hanya *isa dia$ses oleh unit ini sa5a pri/ate 6 3ri/ate declarations 7 8,G,.,"r,Ge,.e,temp + array of array of integer; //procedure, /aria*le yang diperlu$an yang *isa dia$ses oleh seluruh unit dalam pro5ect pu*lic 6 3u*lic declarations 7 end; /ar orm1+ % orm1; implementation 698 :;dfm7 //$ode program open image procedure % orm1;.utton1Clic$'Sender+ %2*5ect(; /ar Gam*ar + %.itmap;

*egin if not 2pen3icture!ialog1;"#ecute then "#it else *egin Gam*ar +& %.itmap;Create; Gam*ar;)oad rom ile'2pen3icture!ialog1; ile<ame(; end; ,mage1;3icture;.itmap +& Gam*ar; end; //$ode program copy image procedure % orm1;.utton-Clic$'Sender+ %2*5ect(; /ar #,y +integer; warna +%Color; *egin ,mage-;3icture;.itmap;Width+&,mage1;3icture;.itmap;Width; ,mage-;3icture;.itmap;=eight+&,mage1;3icture;.itmap;=eight; for #+&> to ,mage-;3icture;.itmap;Width?1 do for y+&> to ,mage-;3icture;.itmap;=eight?1 do *egin warna+&,mage1;3icture;.itmap;Can/as;3i#els@#,yA; ,mage-;Can/as;3i#els@#,yA+&warna; end; end; //$ode program mean filter procedure % orm1;.utton0Clic$'Sender+ %2*5ect(; /ar //mende$larasi$an *ahawa /aria*el #,y,le*ar,tinggi,*aris,$olom *ertipe data integer #,y,le*ar,tinggi,*aris,$olom + integer; *egin //le*ar ,mage- & le*ar ,mage1 ,mage-;3icture;.itmap;Width +& ,mage1;3icture;.itmap;Width; //tinggi ,mage- & tinggi ,mage1 ,mage-;3icture;.itmap;=eight +& ,mage1;3icture;.itmap;=eight; self;,mage-;3roportional +& true; //mem*aca gam*ar, untu$ *aris&> sampai le*ar gam*ar?1 for *aris +& > to self;,mage1;3icture;Width ? 1 do *egin Bpplication;3rocessMessages; //mem*aca gam*ar, untu$ $olom&> sampai le*ar gam*ar?1 for $olom +& > to self;,mage1;3icture;=eight ? 1 do //inisialisasi le*ar, mengam*il nilai le*ar pada ,magele*ar +& ,mage-;3icture;.itmap;Width; //inisialisasi tinggi, mengam*il nilai tinggi pada ,magetinggi +& ,mage-;3icture;.itmap;=eight; //menentu$an u$uran array dinami$ yang diingin$an; setlength'temp, le*ar, tinggi(; setlength'8, le*ar, tinggi(; setlength'G, le*ar, tinggi(; setlength'., le*ar, tinggi(; setlength'"r, le*ar, tinggi(; setlength'Ge, le*ar, tinggi(; setlength'.e, le*ar, tinggi(;

for # +& > to le*ar?1 do//mem*aca gam*ar, untu$ #&> sampai le*ar?1 for y +& > to tinggi?1 do//untu$ y&> sampai tinggi?1 *egin //inisialisasi temp '#,y(, mengam*il nilai pi#el '#,y( dalam ,mage1 temp@#,yA +& ,mage1;3icture;.itmap;Can/as;3i#els@#,yA; end; for # +& for y +& *egin 8@#,yA G@#,yA .@#,yA end; > to le*ar?1 do//mem*aca gam*ar, untu$ #&> sampai le*ar?1 > to tinggi?1 do//untu$ y&> sampai tinggi?1 +& Get8Value'temp@#,yA(;//mencari nilai 8 +& GetGValue'temp@#,yA(;//mencari nilai G +& Get.Value'temp@#,yA(;//mencari nilai .

for # +& 1 to le*ar?- do//mem*aca gam*ar, untu$ #&1 sampai le*ar?for y +& 1 to tinggi?- do//untu$ y&1 sampai tinggi?*egin //mencari nilai "r, Ge, .e "r@#,yA +& round''8i@#?1,y?1AC8i@#?1,yAC8i@#?1,yC1AC8i@#,y 1AC8i@#,yAC8i@#,yC1AC8i@#C1,y?1AC8i@#C1,yAC8i@#C1,yC1A(/D(; Ge@#,yA +& round''Gi@#?1,y?1ACGi@#?1,yACGi@#?1,yC1ACGi@#,y 1ACGi@#,yACGi@#,yC1ACGi@#C1,y?1ACGi@#C1,yACGi@#C1,yC1A(/D(; .e@#,yA +& round''.i@#?1,y?1AC.i@#?1,yAC.i@#?1,yC1AC.i@#,y 1AC.i@#,yAC.i@#,yC1AC.i@#C1,y?1AC.i@#C1,yAC.i@#C1,yC1A(/D(; end; for # +& 1 to le*ar?- do//mem*aca gam*ar, untu$ #&1 sampai le*ar?for y +& 1 to tinggi?- do//untu$ y&1 sampai tinggi?*egin //menampil$an pi#el '#,y( dalam ,mage- dengan mengam*il nilai 8G. '"r, Ge, .e( ,mage-;Can/as;3i#els@#,yA +& 8G.'"r@#,yA,Ge@#,yA,.e@#,yA(; end; end; end; //$ode program clear image procedure % orm1;.utton1Clic$'Sender+ %2*5ect(; *egin ,mage1;3icture +& nil; ,mage-;3icture +& nil; end; //$ode program close application procedure % orm1;.utton4Clic$'Sender+ %2*5ect(; *egin close; end; end;

ernel adalah matrik! yang pada umumnya berukuran ke(il dengan elemn-elemnnya adalah berupa bilangan. Dalam tuga! ini !aya akan menggunakan kernel dalam pen(arian tapi! mean. Tapi! mean berguna mengurangi varia!i nilai !uatu pi)el *inten!ita!+ dengan pi)el berikutnya dengan (ara menghitung nilai pi)el baru dengan nilai rata-rata pi)el tetangga dan pi)el ber!angkutan. $en&ela!an kode program mean ,ilter: 1. deklara!ikan terlebih dahulu variabel )% y% lebar% tinggi% bari!% kolom dengan tipe data integer. 2. ini!iali!a!i nilai lebar -mage2 . lebar -mage1% tinggi -mage2 . tinggi -mage1. 3. memba(a gambar% untuk bari!.0 !ampai lebar gambar-1% untuk kolom.0 !ampai lebar gambar-1. /. ini!iali!a!i lebar% mengambil nilai lebar pada -mage2. 0. ini!iali!a!i tinggi% mengambil nilai tinggi pada -mage2. 1. menentukan ukuran array dinamik yang diinginkan. 7. memba(a gambar% untuk ).0 !ampai lebar-1% untuk y.0 !ampai tinggi-1. 2. ini!iali!a!i temp *)%y+% mengambil nilai pi)el *)%y+ dalam -mage1. 3. memba(a gambar% untuk ).0 !ampai lebar-1% untuk y.0 !ampai tinggi-1. 10. men(ari nilai 45B. 11. memba(a gambar% untuk ).1 !ampai lebar-2% untuk y.1 !ampai tinggi-2. 12. lakukan pro!e! perhitungan tapi! mean dengan kernel 3)3. 13. memba(a gambar% untuk ).1 !ampai lebar-2% untuk y.1 !ampai tinggi-2. 1/. menampilkan pi)el *)%y+ dalam -mage2 dengan mengambil ha!il perhitungan nilai tapi! mean.

%& H'12l P./).', 'aat program di&alankan% tampilannya akan !eperti gambar di ba"ah ini.

G',-'. $& Tampilan 6"al $rogram

G',-'. %& Tampilan Bro"!e -mage

G',-'. 4& Tampilan 7pen 8 9)eute -mage

Anda mungkin juga menyukai