• Tidak ada hasil yang ditemukan

BAB 3 PERANCANGAN PROGRAM

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 3 PERANCANGAN PROGRAM"

Copied!
20
0
0

Teks penuh

(1)

PERANCANGAN PROGRAM

3.1. Gambaran Umum Perancangan

Secara umum, program aplikasi fractal compression terdiri dari dua proses utama yaitu proses kompresi dan proses dekompresi. Algoritma QPIFS yang digunakan pada proses kompresi adalah sebagai berikut :

1. create domain

2. for i = 1 to total range do steps (3), (4), (5), and (6) 3. if range blok > tolerance then quadtree down 4. else

5. transform from domain to range, while distance (domain, range)<=rms) 6. save best transform

7. end

Rms (root mean square) digunakan untuk menentukan jarak antara blok domain dan blok range, sedangkan tolerance digunakan untuk menentukan batas keseragaman pixel yang diterima pada tiap blok range.

Berikut ini tahap-tahap yang dilakukan pada proses kompresi :

1. Pembacaan file gambar untuk memeriksa apakah bit-bit data dapat dibaca 2. Alokasi memori untuk proses dan penyimpanan data domain sesuai

(2)

3. Gambar dibagi secara rekursif untuk memudahkan proses encoding dengan membagi menjadi empat kuadran melalui fungsi quadtree. 4. Dilakukan proses quadtree hingga level enam, dengan asumsi pada level

tersebut blok range sudah cukup kecil.

5. Keempat kuandran diurutkan dari yang paling cerah, kemudian dilakukan transformasi pada masing-masing kuadran. Proses ini berulang untuk setiap kuadran dimulai dari level terdalam di kuadran NW (northwest) hingga kuadran SE (southeast).

6. Hasil dari setiap transformasi tersebut kemudian dibandingkan dengan domain. Jika nilai perbandingan tersebut mendekati nilai perhitungan rms, maka transformasi dan posisi domain akan ditulis ke dalam file FIC. 7. Tahap lima dan enam akan berulang untuk seluruh range yang ada dalam

gambar hingga diperoleh kumpulan transformasi terbaik

Tahap-tahap proses dekompresi :

1. Pembacaan transformasi yang disimpan pada file FIC.

2. Penerapan transformasi pada domain yang dilakukan secara rekursif mulai dari kuadran terdalam hingga seluruh daerah gambar tertutup oleh pixel hasil transformasi

3. Langkah terakhir adalah penghalusan gambar dengan membuat nilai rata-rata dari dua pixel yang berdekatan pada setiap transformasi.

Gambaran yang lebih jelas tentang jalannya program dapat dilihat pada diagram alir berikut :

(3)

(4)

Gambar 3.2 Diagram alir proses dekompresi

3.2. Modul-modul Perancangan

Proses kompresi dan dekompresi tersebut di atas akan dijabarkan secara lebih mendetil dengan pseudocode, begitu juga fungsi-fungsi atau prosedur-prosedur yang ada.

(5)

3.2.1. Modul Utama

Modul Frac

Fungsi : Merupakan modul utama yang didalamnya terdapat modul-modul untuk proses kompresi dan dekompresi. Modul ini juga akan menginisialisasi parameter yang digunakan saat pemanggilan kedua proses tersebut. Nilai parameter yang digunakan pada perancangan ini sesuai dengan nilai yang digunakan oleh Yuval Fisher yaitu, nilai toleransi jarak domain dan range adalah delapan, dengan asumsi pada nilai tersebut perbedaan pixel tidak signifikan, nilai kedalaman maksimal adalah enam, dengan asumsi pada level tersebut pixel yang terdapat pada blok tersebut sudah cukup seragam. Matriks transformasi yang digunakan dalam perancangan ini berupa matriks 2 x 24 sebagai berikut,      7 0 1 6 13 2 3 12 15 8 9 14 6 1 0 7 19 4 5 18 21 10 11 20 12 3 2 13 18 5 4 19 23 16 17 22 14 9 8 15 20 11 10 21 22 17 16 23

Sedangkan matriks rotasi yang digunakan adalah matriks 2 x 8 berikut,

     5 0 4 3 7 2 6 1 1 6 0 5 3 4 2 7

8 nilai tersebut menunjukkan rotasi yang mungkin dilakukan pada sebuah blok dengan melakukan isometri sebagai berikut :

1. identitas (tanpa rotasi)

(6)

3. refleksi orthogonal terhadap sumbu tengah horosontal blok 4. refleksi orthogonal terhadap diagonal pertama

5. refleksi orthogonal terhadap diadonal kedua 6. rotasi pada pusat blok sebesar 90o

7. rotasi pada pusat blok sebesar 1800 8. rotasi pada pusat blok sebesar -900

Modul yang dipanggil : -

3.2.2. Modul Proses Compression Modul Compress

Fungsi : Melakukan proses kompresi. Pseudocode :

Begin

Read the size of Raw file

Call compute sum to compute the sum of pixel values in domain Call partition image function

Close file

free memory allocated to domain free memory allocated to image End

(7)

Modul Compute Sums

Fungsi : Mengalokasikan memori untuk jumlah domain, memanggil modul Classify, membentuk domain dan menyimpan posisi domain ke dalam data domain.

Pseudocode : Begin

allocate memory for number of horizontal domain & vertical domain allocate memory for the size of horizontal domain & vertical domain for (i=0; i<2; ++i)

for (j=0; j<2; ++j)

for (k=i; k<hsize-i; k += 2) for (l=j; l<vsize-j; l += 2)

domimage = m_image[l][k] + m_image[l+1][k+1] + m_image[l][k+1] + m_image[l+1][k]

Compute the number of bits needed to store the domain data For i = 1 to total domain

Begin

Call the Classify function to sort the domain quadrant order Store the position of domain

End End

(8)

Modul yang dipanggil : Classify.

Modul Partition Image

Fungsi : Membagi gambar menjadi bagian-bagian kecil, memanggil fungsi quadtree untuk encoding

Pseudocode : Begin

Call Quadtree function

If horizontal size != image size Then call Partition image function If vertical size != image size Then call Partition image function End

Modul yang dipanggil : Partition Image, Quadtree.

Modul Quadtree

Fungsi : Melakukan proses encoding, mencari transformasi terbaik, mencari domain terbaik, menghitung rms. Menyimpan hasil transformasi terbaik, faktor skala terbaik (ialpha) dan offset domain terbaik (ibeta) dalam satu file FIC.

Pseudocode : Begin

For quadtree depth = 1 to 6 Begin

(9)

x=x & y=y to x=xsize/2 & y= ysize/2 Quadtree quadrant depth+1 If x/2 & y/2 != 0 then

x=xsize/2 & y=y Quadtree quadrant depth+1 If x/2 & y/2 != 0 then

x=0 & y= ysize/2 Quadtree quadrant depth+1 If x/2 & y/2 != 0 then

x=xsize/2 & y=ysize/2 Quadtree quadrant depth+1 End

Return;

Call the Classify function For all domain block

Transform domain to range

Symmetrize operation = apply rotation matrix to domain block Best rms = 10,000,000,000

rms = Compare(domain,range) ; If (rms < best_rms) Then

best transform =transform

best_domain offset =domain offset best rms = rms

best symetrize operation = symetrize operation best domain = domain

End if End for

(10)

If (best_rms > tolerance & depth < 4) Then Begin

If x/2 & y/2 != 0 then

x=x & y=y to x=xsize/2 & y= ysize/2 Quadtree quadrant depth+1 If x/2 & y/2 != 0 then

x=xsize/2 & y=y Quadtree quadrant depth+1 If x/2 & y/2 != 0 then

x=0 & y= ysize/2 Quadtree quadrant depth+1 If x/2 & y/2 != 0 then

x=xsize/2 & y=ysize/2 Quadtree quadrant depth+1 End

Else

Pack(best transform, best domain offset, best symmetrize operation,best domain);

End if End

Modul yang dipanggil : Compare, Classify, Quadtree.

Modul Classify Quadrant

Fungsi : Menghitung nilai rata-rata pixel pada range atau domain, mengurutkan pixel berdasarkan tingkat kecerahan.

(11)

Begin

If range area Then Begin

For quadrant NW to SE Do

Call the average1 function to compute the average value of each quadrant End

Else Begin

For quadrant NW to SE Do

Call the average function to compute the average value of each quadrant End

End if

Repeat until NW < NE < SW < SE If sum i < sum i+1 then swap position End

Modul yang dipanggil : Average.

Modul Average

Fungsi : Menghitung nilai rata-rata pixel dalam satu kuadran Pseudocode :

Begin

(12)

For (j=y; j<y+ysize; ++j)

pixel = domain image[j][i]; sum = sum + pixel;

sum2 = sum2 + pixel*pixel; Return sum & sum2

End

Modul yang dipanggil : -.

Modul Average1

Fungsi : Menghitung nilai rata-rata pixel dalam satu kuadran Pseudocode :

Begin

For (i=x; i<x+xsize; ++i) For (j=y; j<y+ysize; ++j) pixel = range image[j][i]; sum = sum + pixel;

sum2 = sum2 + pixel*pixel; Return sum & sum2

End

(13)

Modul Compare

Fungsi : Menghitung nilai rms untuk membandingkan domain dan range. Rms dihitung dengan, Rms =

[

]

y x y x domain y x range , 2 ) , ( ) , ( . Pseudocode : Begin

pialpha = 0.5 + (alpha + 1)/(2.0 x 1) x (scaling bits) if (pialpha < 0) pialpha = 0

if (pialpha >= scaling bits) pialpha = scaling bits-1

alpha = pialpha/ scaling bits x 2.0 x max scale – max scale beta = (sum – alpha x domain sum) / w2

if (alpha > 0.0) beta = beta + alpha x 256

best beta = 0.5 + beta/(1.0+ absolute alpha) x 256 x offset bits-1 if (best beta< 0) best beta = 0;

if (best beta>= 1) best beta = offset bits-1

beta =best beta/offset bits-1 x 1.0+absolute alpha x256 if (alpha > 0.0) beta = beta – alpha x 256

Rms = 2 ) 2 2 ( ) 2 2 ( 2 2 w rsum w sum dom rdsum sum dom sum +α×α× − × + ×β× +β× β× − × Return rms End

(14)

3.2.3. Modul Proses Decompression

Modul Decompress

Fungsi : Melakukan proses dekompresi, membaca file FIC , menginisialisasi gambar awal berupa gambar berwarna hitam dan memanggil fungsi-fungsi yang mendukung proses tersebut.

Pseudocode : Begin

Open FIC file Unpack byte; Allocate memory Clear memory buffer Initialize dummy image

Call Read transformation function For i = 1 to total transformation do Begin

Call the Apply Transformations function End

Call the Smooth Image function End

(15)

Smooth Image.

Modul Read Transformation

Fungsi : Membaca transformasi pada file FIC Pseudocode :

Begin

If depth < 6 then Begin

From x=0 & y=0 Quadtree (x/2, y/2) depth+1

From x=x+xsize/2 & y=0 Quadtree (x/2, y/2)depth+1 From x=0 & y= y+ysize/2 Quadtree (x/2, y/2) depth+1 From x=xsize/2 &y=ysize/2 Quadtree (x/2,y/2)depth+1 return;

End

If depth < 4 & Unpack = true Then Begin

Read_Transformations(atx,aty, xsize/2, ysize/2, depth+1);

Read_Transformations(atx+xsize/2,aty, xsize/2, ysize/2, depth+1); Read_Transformations(atx,aty+ysize/2, xsize/2, ysize/2, depth+1); Read_Transformations(atx+xsize/2,aty+ysize/2,xsize/2,ysize/2,depth+1); End

(16)

m_trans = next transformation

best transformation = Unpack (transformation bit); best domain offset = Unpack (offset bit);

m_trans->scale = transformation; m_trans->offset = domain offset; End if

End

Modul yang dipanggil : Read Transformation.

Modul Apply Transformation

Fungsi : Menerapkan transformasi pada pixel hingga terbentuk sebuah gambar. Pseudocode :

Begin

m_trans = &m_transformations; While (next transformation != NULL) Begin

m_trans = next transformation;

imageDummy= m_trans->scale*pixel + m_trans->offset paint transformed pixel to screen

End

tempimage = m_image; m_image = m_imageDummy;

(17)

m_imageDummy = tempimage; End

Modul yang dipanggil : -.

Modul Smooth Image

Fungsi : menghitung nilai rata-rata dari batasan transformasi untuk memperhalus gambar hasil dekompresi.

Pseudocode : Begin

m_trans = &m_transformations; While (m_trans->next != NULL) Begin

m_trans = m_trans->next; For for i = 1 to image size Do

average = pixel of sum 1) (i pixel i pixel + + End End

Modul yang dipanggil : -.

(18)

Layar utama

Beri nama file output Beri nama file

output

Pilih file untuk didekompresi Pilih file untuk

dikompresi Exit Gambar proses kompresi Gambar hasil dekompresi Klik arrow down

open file dialog

Klik arrow down open file dialog

Klik arrow down save file dialog

Klik OK proses kompresi

Klik OK proses dekompresi Klik arrow down

open file dialog

Klik close keluar dari program

kompresi dekompresi Klik compression Klik decompression

Gambar 3.3 STD Rancangan Program

3.4. Rancangan Layar

(19)

Gambar 3.4 Rancangan layar utama

3.4.2. Open .raw , .dat dan.FIC

Gambar 3.5 Rancangan layar open .raw, .dat dan .FIC

(20)

Gambar 3.6 Rancangan layar Save As .FIC

3.4.4. Image Viewer

Gambar

Gambar 3.1 Diagram alir proses kompresi
Gambar 3.2 Diagram alir proses dekompresi
Gambar 3.3 STD Rancangan Program
Gambar 3.4 Rancangan layar utama
+2

Referensi

Dokumen terkait

Untuk mengetahui exercise Half Semont Manuver lebih baik dari exercise Brandt-doroff Manuver dalam menggurangi keluhan vertigo pada gangguan fungsi Vestibular Posterior

Islam mengemukakan bahwa Al-Qur’an memberikan ilustrasi atau contoh tentang perencanaan Nabi Musa AS pada saat hendak menghadapi Fir’aun, yaitu dengan mempersiapkan

Perilaku menolong ini sangat nampak ketika pada tahun 2010 yang lalu terjadi bencana alam di Indonesia, lebih tepatnya di daerah Yogyakarta, yaitu meletusnya

• Dari skor hasil interprestasi pertanyaan sebesar 86%, maka dilihat dari Grafil Hasil Kuesioner Tingkat Kepuasan Mahasiswa MKN Pascasarjana Unpas dilihat dari

Menetapkan : PERATURAN BADAN PENGATUR HILIR MINYAK DAN GAS BUMI TENTANG PENGATURAN DAN PENGAWASAN ATAS PELAKSANAAN PENYEDIAAN DAN PENDISTRIBUSIAN BAHAN

Tujuan pengujian ini adalah untuk mengetahui apakah aplikasi yang telah dibuat pada android smartphone dapat menerima data yang dikirim oleh mikrokontroler arduino,

Berdasarkan hasil analisa diketahui bahwa pada growol dengan pencampuran tepung kacang hijau dan kacang merah menghasilkan aroma khas kacang hijau dan kacang merah sedangkan

Pengelolaan dilakukan untuk mengatur sumber daya manusia, maupun sumber daya dana yang ada, dalam mewujudkan tujuan yang diinginkan yakni meningkatkan mutu