komponen timage

11
7/23/2019 Komponen TImage http://slidepdf.com/reader/full/komponen-timage 1/11 1. Komponen TImage Untuk menampilkan citra yang akan dikompres menggunakan komponen  TImage yang terdapat pada palet komponen  Additional. Komponen ini memiliki properti Picture yang digunakan untuk menyimpan data citra. Citra yang akan ditampilkan diambil pada saat program dijalankan dengan menggunakan  procedure LoadFromFile. Properti yang ada pada picture antara lain: 1. Height , berisi nilai tinggi citra. 2. Width, berisi nilai lebar citra. . Bitmap, berisi data !ormat dan piksel citra. in!ormasi !ormat citra terdapat pada subproperti "itmap, yaitu Pi#el$ormat. %engan membaca nilai Pi#el$ormat dapat diketa&ui cara penyimpanan piksel dalam memori. 'e&ingga mempermuda& dalam pemrograman. Untuk citra gray scale ( bit mempunyai nilai Pi#el$ormat p!(bit, setiap piksel disimpan dalam ukuran 1 byte )( bit*. P!(bit ini direpresentasikan sebagai citra berindeks ( bit dengan komponen palet +arna mera&, &ijau dan biru yang bernilai sama, se&ingga menampilkan +arna keabuan dari &itam sampai puti&. 'truktur data yang digunakan pada program kompresi ini menggunakan pointer yang elemennya berupa rekaman )record*. da dua pointer yang digunakan yaitu pointer untuk pembentukan po&on -uman dan pointer untuk pembentukan kode -uman 1. %eklarasi pointer untuk po&on -uman type P&u/n!o0T&u/n!o  T-uIn!o0record kiri:p&u/n!o kanan:p&u/n!o piksel: array34..2556 o! byte  jml7kode:integer !rek:integer suda&:boolean end Pada deklarasi diatas P&u/n!o menyatakan data yang bertipe pointer. T&u/n!o merupakan nilai data yang ditunjuk ole& pointer P&u/n!o. 'impul8simpul yang akan dibentuk pada po&on -uman dinyatakan dalam T&u/n!o. T&u/n!o mempunyai elemen sebua& data berupa record )rekaman* yang berisi: Kiri : bertipe pointer yang menyatakan cabang kiri po&on -uman. Kanan : bertipe pointer yang menyatakan cabang kanan po&on -uman. Piksel : bertipe array yang menyatakan nilai piksel dari citra yang akan dikompresi.

Upload: yuzman14

Post on 18-Feb-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Komponen TImage

7/23/2019 Komponen TImage

http://slidepdf.com/reader/full/komponen-timage 1/11

1. Komponen TImage

Untuk menampilkan citra yang akan dikompres menggunakan komponen TImage yang terdapat pada palet komponen  Additional. Komponen ini memilikiproperti Picture yang digunakan untuk menyimpan data citra. Citra yang akanditampilkan diambil pada saat program dijalankan dengan menggunakan procedure

LoadFromFile. Properti yang ada pada picture antara lain:

1. Height , berisi nilai tinggi citra.2. Width, berisi nilai lebar citra.. Bitmap, berisi data !ormat dan piksel citra.

in!ormasi !ormat citra terdapat pada subproperti "itmap, yaitu Pi#el$ormat. %enganmembaca nilai Pi#el$ormat dapat diketa&ui cara penyimpanan piksel dalam memori.'e&ingga mempermuda& dalam pemrograman. Untuk citra gray scale ( bitmempunyai nilai Pi#el$ormat p!(bit, setiap piksel disimpan dalam ukuran 1 byte )(bit*. P!(bit ini direpresentasikan sebagai citra berindeks ( bit dengan komponenpalet +arna mera&, &ijau dan biru yang bernilai sama, se&ingga menampilkan

+arna keabuan dari &itam sampai puti&.

'truktur data yang digunakan pada program kompresi ini menggunakan pointeryang elemennya berupa rekaman )record*. da dua pointer yang digunakan yaitupointer untuk pembentukan po&on -uman dan pointer untuk pembentukan kode-uman

1. %eklarasi pointer untuk po&on -uman

typeP&u/n!o0T&u/n!o

 T-uIn!o0record

kiri:p&u/n!okanan:p&u/n!opiksel: array34..2556 o! byte

 jml7kode:integer!rek:integersuda&:booleanend

Pada deklarasi diatas P&u/n!o menyatakan data yang bertipe pointer. T&u/n!omerupakannilai data yang ditunjuk ole& pointer P&u/n!o. 'impul8simpul yang akan dibentukpada po&on-uman dinyatakan dalam T&u/n!o. T&u/n!o mempunyai elemen sebua& databerupa record)rekaman* yang berisi:

Kiri : bertipe pointer yang menyatakan cabang kiri po&on -uman.Kanan : bertipe pointer yang menyatakan cabang kanan po&on -uman.Piksel : bertipe array yang menyatakan nilai piksel dari citra yang akandikompresi.

Page 2: Komponen TImage

7/23/2019 Komponen TImage

http://slidepdf.com/reader/full/komponen-timage 2/11

 jml_kode : bertipe integer yang menyatakan jumla& kode dalam akar )root*sebua& po&on&uman.frek : bertipe integer yang menyatakan !rekuensi kemunculan nilai piksel.Sudah : bertipe boolean yang menyatakan apaka& nilai piksel yangmempunyai !rek 9 4 suda& dimasukkan dalam po&on -uman

2. %eklarasi pointer untuk kode -uman

typeP&uCode0T-uCode

 T-ucode0recordda:booleankode:array34..2556 o! bytepanjangKode:integerend

Pada deklarasi diatas P&uCode menyatakan data yang bertipe pointer. T-uCodemerupakan nilai data yang ditunjuk ole& pointer P&uCode. 'impul8simpul kodeyang akandibentuk pada kode -uman dinyatakan dalam T-uCode. T-uCode mempunyaielemen sebua& data berupa rekaman )record* yang berisi :

Ada: bertipe boolean yang menyatakan ba&+a apaka& nilai piksel dari citra suda&dikodekankode: bertipe array yang menyatakan nilai piksel dari kode yang suda& dibentukpanjangKode: bertipe integer yang menyatakan panjang dari nilai piksel yangsuda& dikodekan

3. Teknik Kompresi

Prinsip dari metode -uman pada citra digital adala& mengkodekan setiap nilaikeabuandengan rangkaian bit 4 dan 1, di mana simbol yang memiliki !rekuensi lebi& sedikitmemilikirangkaian bit yang lebi& panjang daripada simbol yang memiliki !rekuensi banyakdalam data.Kode yang di&asilkan adala& kode a+alan, yaitu &impunan kode sedemikianse&ingga tidak adaanggota kumpulan yang merupakan a+alan dari anggota yang lain. isalnya,&impunan;44,414,4111< adala& kode a+alan, namun &impunan ";44,414,441< bukan kodea+alan, karena =44> adala& pre?ks dari =441>.

@angka&8langka& yang dilakukan pada proses kompresi adala& sebagaiberikut:

1. Menghitung frekuensi kemunulan dari setiap nilai kea!uan "piksel#itra $ang akan dikompres.

Page 3: Komponen TImage

7/23/2019 Komponen TImage

http://slidepdf.com/reader/full/komponen-timage 3/11

i!) $citra.Image1.Picture.bitmap.Pi#el$ormat0 p!("it* t&enbegin!or i :0 4 to 255 dobeginc&arlist3i6.!rek:0 4

end#:04!or i :0 4 to !citra.Image1.Picture.-eig&t81 dobeginPC :0 !citra.Image1.Picture."itmap.'can@ine3i6!or j :0 4 to !citra.Image1.Picture.Aidt&81 dobeginIn"uer3#6:0PC3j6Inc)c&arlist3In"uer3#66.!rek*inc)#*endend

%. Pem!entukan Pohon &u'man

@angka&8@angka& pembentukan po&on -uman adala& sebagai berikut:

1. Pada pembentukan po&on -uman digunakan dua pointer yaitu kanan )sebagaipenunjukcabang kanan dari po&on -uman* dan kiri )sebagai penunjuk cabang kiri daripo&on&uman*. 'elain itu ada juga dua Bariabel bertipe pointer yaitu pin!o1 dan pin!o2yangdigunakan masing8masing sebagai simpul dari setiap cabang.2. Pembentukan po&on -uman dilakukan dengan membuat simpul )c&arlist* yangmempunyai nilai data yaitu nilai piksel dan !rekuensi kemunculannya )c&arlist.!rek*.. %icari simpul yang memiliki !rekuensi terkecil pertama, kemudian disimpan dalampin!o1.!rek. 'elanjutnya mencari simpul yang memiliki !rekuensi terkecil kedua dandisimpan dalam pin!o2.!rek.. %ari dua simpul dengan !rekuensi terkecil tadi dijumla&kan !rekuensinya.5. -asil penjumla&an kedua !rekuensi ini menjadi !rekuensi baru untuk sebua&simpul baruyaitu c&arlist.!rek yang mempunyai dua cabang kedua simpul tadi )pin!o1 danpin!o2*.Untuk pin!o1 ditetapkan sebagai cabang kiri dan pin!o2 ditetapkan sebagai cabangkanan.'impul baru tersebut juga memiliki data berupa jumla& dari nilai piksel yaituc&arlist.jml7kode.D. 'impul baru ini selanjutnya dimasukkan dalam da!tar untuk dilakukan pencarian!rekuensiterkecil, dan pembuatan simpul baru.E. Proses ini berlanjut sampai semua simpul tela& masuk ke dalam po&on dan!rekuensi akar)root * dari po&on akan merupakan &asil penjumla&an semua !rekuensi yang ada.."erikut

Page 4: Komponen TImage

7/23/2019 Komponen TImage

http://slidepdf.com/reader/full/komponen-timage 4/11

ini listing dari pembentukan po&on -uman.

procedure po&on-umanBari,cnt,tmp:integerpin!o1,pin!o2:P&u/n!o

beginpin!o1:0nilpin!o2:0nilcnt:0255+&ile true dobegintmp:0ma#int!or i:04 to cnt dobegini! )c&arlist3i6.!rekFtmp* and )c&arlist3i6.!rek 9 4*and)c&arlist3i6.ticked0!alse* t&enbegin

pin!o1:0Gc&arlist3i6tmp:0pin!o1.!rekendendi! pin!o10nil t&enbreakpin!o1.ticked:0truetmp:0ma#int!or i:04 to cnt dobegini! )c&arlist3i6.!rekFtmp* and )c&arlist3i6.!rek 9 4* and)c&arlist3i6.ticked0!alse* t&enbeginpin!o2:0Gc&arlist3i6tmp:0pin!o2.!rekendendi! pin!o20nil t&enbreakpin!o2.ticked:0trueinc)cnt*c&arlist3cnt6.!rek:0pin!o1.!rekHpin!o2.!rekc&arlist3cnt6.jml7kode:0pin!o1.jml7kodeHpin!o2.jml7kodec&arlist3cnt6.kiri:0pin!o1c&arlist3cnt6.kanan:0pin!o2pin!o1:0nilpin!o2:0nilendrootnode:0Gc&arlist3cnt6end

3. Pengkodean

Page 5: Komponen TImage

7/23/2019 Komponen TImage

http://slidepdf.com/reader/full/komponen-timage 5/11

Pemberian kode biner pada po&on -uman dilakukan dengan memberikan kodepada tiapcabang pada po&on -uman. "erikut ini langka&8langka& dalam pemberian kodepada po&on-uman:

1. mbil nilai piksel yang akan dikodekan2. %ari setiap nilai keabuan yang akan dikodekan telusuri mulai dari akar. pabilapadacabang kiri terdapat nilai piksel yang sedang ditinjau, maka berikan kode 4J. %anapabila terdapat pada cabang kanan maka berikan simbol 1J.. 'etiap cabang yang tela& ditelusuri, tetapkan sebagai akar.. Ulangi langka& diatas sampai ditemukan daun. "eriukut ini listing dari pemberiankode-uman

procedure kode-umanBar

i,j:integertmpnode:p&u/n!oag:integerbegin!or i:04 to 255 dobeginag:081tmpnode:0rootnode+&ile tmpnode.kiriF9nil dobegin!or j:04 to tmpnode.kiri.jml7kode81 doi! tmpnode.kiri.piksel3j60 i t&enbeginag:04tmpnode:0tmpnode.kiribreakendi! ag081 t&enbegin!or j:04 to tmpnode.kanan.jml7kode81 doi! tmpnode.kanan.piksel3j60 i t&en

beginag:01tmpnode:0tmpnode.kananbreakendendi! ag081 t&enbreak&ucodes3i6.ada:0true&ucodes3i6.kode3&ucodes3i6.panjangKode6:0ag

Page 6: Komponen TImage

7/23/2019 Komponen TImage

http://slidepdf.com/reader/full/komponen-timage 6/11

&ucodes3i6.panjangKode:0&ucodes3i6.panjangKodeH1&ucodes3i6.c&ar:0iag:081endendend

(. Pem!uatan ta!el &u'man

 Tabel &uman digunakan untuk menyimpan data8data &asil dari pengkodean&uman. %atadatadisini disimpan dalam Bariabel array. %eklarasi dari Bariabel array tersebut adala&table:array34..1L56 o! byte @angka&8langka& dalam pembuatan tabel &uman adala&sebagiberikut:

1. mbil satu nilai keabuan yang akan disimpan.

2. Indeks pertama diisi untuk menyimpan nilai keabuan. isalkan table346:025.. Indeks kedua diisi untuk menyimpan &asil panjang kode &uman dari nilaikeabuanyang sedang ditinjau.. Indeks ketiga diisi untuk menyimpan &asil kode &uman. Karena &asil daripanjangkode &uman berBariasi maka semua kode disimpan dalam ( bit. "erikut ini listingdaripembentukan tabel &uman:

procedure Tabel-umanBari,j,k:integertmpcode:bytebit:integerbegink:04bit:04tmpcode:04!or i:04 to 255 dobegini! &ucodes3i6.ada0!alse t&encontinuetable3k6:0itable3kH16:0&ucodes3i6.panjangKodek:0kH2!or j:04 to &ucodes3i6.panjangKode81 dobegintmpcode:0tmpcode s&l 1 or &ucodes3i6.kode3j6bit:0bitH1

i! bit0( t&en

Page 7: Komponen TImage

7/23/2019 Komponen TImage

http://slidepdf.com/reader/full/komponen-timage 7/11

begintable3k6:0tmpcodek:0kH1bit:04tmpcode:04end

endi! bit94 t&enbegintmpcode:0tmpcode s&l )(8bit*table3k6:0tmpcodek:0kH1bit:04tmpcode:04endend

 Mumtabel:0kend

). Pen$impanan hasil kompresi

Kode &asil proses &uman &arus disimpan ke dalam memori komputer . "erikut inilistingdari penyimpanan &asil kompresi.

procedure 'impan$ileBar#,y, i,j,k:integertmpcode:bytebit:integerbu!count:integerPC:P"yterraybegink:04tmpcode:04bit:04&:0 !citra.Image1.Picture.-eig&t+:0!citra.Image1.Picture.Aidt&o?le.seek)1,so!rombeginning*o?le.+rite)Mumtabel,siNeo!)Mumtabel**o?le.+rite)table,Mumtabel*o?le.+rite)&,siNeo!)&**o?le.+rite)&&,&*o?le.+rite)+,siNeo!)+**o?le.+rite)++,+*i?le.seek)4,so$rom"eginning*!or i:04 to byk dobegin!or j:04 to &ucodes3inbuer3i66.panjangKode81do

Page 8: Komponen TImage

7/23/2019 Komponen TImage

http://slidepdf.com/reader/full/komponen-timage 8/11

begintmpcode:0)tmpcode s&l 1* or &ucodes3inbuer3i66.kode3j6inc)bit*i! bit0( t&enbeginoutbuer3k6:0tmpcode

inc)k*bit:04tmpcode:04endi! k0byk t&enbegino?le.+rite)outbuer,byk*k:04endendendi! bit94 t&en

begintmpcode:0tmpcode s&l )(8bit*outbuer3k6:0tmpcodek:0kH1endi! k94 t&eno?le.+rite)outbuer,k*o?le.seek)4,so!rombeginning*o?le.+rite)bit,1*end

(. *ekompresi

@angka&8 langka& yang dilakukan pada proses dekompresi adala&:1. engembalikan tabel -uman2. engembalikan po&on -uman@angka&8langka& yang dilakukan untuk mengembalikan po&on -uman adala&

Page 9: Komponen TImage

7/23/2019 Komponen TImage

http://slidepdf.com/reader/full/komponen-timage 9/11

sebagi beriku:1. "aca sebua& nilai kebauan2. ulai dari akar untuk setiap bit pada langka& 1, lakukan traBersal pada cabangyang bersesuaian.. Ulangi langka& 1, 2 dan sampai bertemu daun. Kodekan rangkaian bit yangtela& dibaca dengan karakter di daun.

5. Ulangi dari langka& 1 sampai semua nilai keabuan &abis.. eruba& ?le kompresi dalam bentuk citra'etela& kode -uman dapat dikembalikan ke nilai semula )nilai piksel citramasukan* maka dari nilai8nilai itu diuba& kedalam bentuk matrik untuk dilakukan

penggambaran per titik piksel pada image canvas. "erikut ini listing daripenggambaran pada image canvas.N:04!orm1.image1.Client-eig&t:0m!orm1.image1.ClientAidt&:0n!or i:0 4 to m81 do!or j:04 to n81 do

begintmp:0Out"uer3N6!orm1.image1.CanBas.Pi#els3j,i6:0Q")tmp,tmp,tmp*N:0NH1end

Page 10: Komponen TImage

7/23/2019 Komponen TImage

http://slidepdf.com/reader/full/komponen-timage 10/11

Page 11: Komponen TImage

7/23/2019 Komponen TImage

http://slidepdf.com/reader/full/komponen-timage 11/11