• Tidak ada hasil yang ditemukan

BAB IV IMPLEMENTASI DAN PEMBAHASAN PROGRAM

C. Pengujian Program

2. Pengaktifan program

Saat menekan tombol “Buka File Citra”, maka akan keluar tampilan

untuk memilih citra mana yang akan dibuka, dan citra yang dibuka harus

bertipe *.BMP.

Gambar 4.18 Tampilan Buka File Citra

Listing untuk membuka file citra adalah sebagai berikut:

%==============================================% ....

[nama_file, nama_path]=uigetfile(... {'*.bmp','File Citra(*.bmp)'},... 'Buka File Citra');

if ~isequal(nama_file,0) fullpath=strcat(nama_path,nama_file); lasterr(''); citra=imread(fullpath); .... %==============================================%

“Uigetfile” digunakan menampilkan antarmuka untuk membuka file, dan tipe citra yang dibuka ditentukan pula dari script ini.

b. Tampilan citra asli

Setelah menentukan citra yang akan dibuka, maka program akan

menampilkan citra tersebut ke tampilan citra asli.

Gambar 4.19 Citra asli

Listing untuk menampilkan file citra adalah sebagai berikut:

%==============================================% ....

[citra, res_citra, nama_file, info]=buka_citra; axes1 = axes('position',[0.120 0.37 0.25 0.446]); imshow(citra);

....

[citra, res_citra, nama_file, info]=buka_citra; digunakan untuk memanggil

function buka_citra. Sedangkan axes1 digunakan untuk membuat suatu

axes untuk menampilkan citra yang dibuka dan kemudian menentukan dimana citra tersebut nantinya akan ditampilkan, dan imshow digunakan untuk menampilkan citra tersebut.

c. Tampilan citra hasil transformasi

Tampilan hasil transformasi ini akan menampilkan citra yang telah

mengalami proses transformasi.

Gambar 4.20 Tampilan citra transformasi

Tampilan citra transformasi ini akan muncul setelah user menekan

tombol “Transformasi”, yang sebelumnya memilih metode yang akan

digunakan. Dalam contoh di atas, metode yang digunakan adalah dengan

Listing untuk menampilkan menghitung nilai transformasi (DCT): %==============================================% .... j1=0:blok-1; j2=0:blok-1; [J1,J2]=meshgrid(j1,j2); C=cos(((2.*J1+1).*J2*pi)/(blok*2)); D=C'; citra=double(citra)./(blok/2); ukuran=size(citra,1); nblok=ukuran/blok; brsklm=1:blok; [baris,kolom]=meshgrid(0:(nblok-1), 0:(nblok-1)); baris=baris(:); kolom=kolom(:); citra_transform = zeros(size(citra)); for k=1:length(baris) x=citra(baris(k)*blok+brsklm,kolom(k)*blok+brsklm); D1=x*D; D2=C*D1; D2(:,1)=D2(:,1).*(1/sqrt(2)); D2(1,:)=D2(1,:).*(1/sqrt(2)); citra_transform(baris(k)*blok+brsklm,kolom(k)*blok+brsklm)=D2(brsklm, brsklm); end;.... %==============================================%

Dalam listing program di atas, membutuhkan sebuah masukan berupa nilai dari variable blok. Nilai tersebut didapat dari function lain, dimana

function tersebut membaca popup menu saat user menentukan blok yang akan dipakai.

Output dari listing program tersebut adalah citra_transform yang nantinya akan ditampilkan sebagai citra hasil transformasi.

d. Tampilan citra hasil rekonstruksi, nilai pixel serta penghitungan error

Tampilan citra hasil rekonstruksi ini akan menampilkan citra yang

telah mengalami proses transformasi, dan kemudian direkonstruksi

(dikenai fungsi invers) untuk mendapatkan citra seperti semula.

Gambar 4.21 Tampilan citra setelah rekonstruksi tanpa di kuantisasi

Gambar di atas menunjukkan hasil rekonstruksi citra sebelum dikenai

proses kuantisasi. Tampak bahwa citra hasil rekonstruksi, dan nilai matriks

yang ditampilkan dalam grid citra asli dan grid citra rekonstruksi terlihat sama. Hal ini juga tampak pada error yang ditampilkan. Pada MSE terlihat nilai 0 (nol) dan pada PSNR juga tidak terdefinisi yang ditunjukkan

Namun setelah dikuantisasi dengan nilai tertentu, citra hasil

rekonstruksi maupun nilai matriks yang ditampilkan dalam grid akan menjadi berbeda. Citra rekonstruksi akan tampak lebih buruk, tergantung

dari nilai kuantisasi yang dimasukkan. Semakin besar nilai kuantisasi,

maka akan semakin buruk hasil citra yang didapat.

Gambar di bawah ini adalah hasil setelah dikuantisasi dengan nilai

kuantisasi 100. Ini berarti nilai yang berada di antara -100 sampai dengan

100 akan dikuantisasi menjadi nol 0 (nol).

Gambar 4.22 Tampilan citra setelah rekonstruksi setelah dikuantisasi

Dalam tampilan di atas juga terlihat bahwa setelah mengalami proses

kuantisasi dengan nilai 100, terdapat nilai error MSE=460,97 dan PSNR=21,49 dB. Semakin banyak error, maka nilai MSE semakin tinggi dan nilai PSNR semakin rendah. Demikian pula sebaliknya, semakin

sedikit error, maka nilai MSE semakin rendah dan nilai PSNR semakin tinggi.

e. Tampilan report

Report digunakan untuk melihat laporan secara keseluruhan dari data- data yang dihasilkan. Dari tampilan report ini, user dapat melihat dengan lebih ringkas data-data yang telah diproses dan output-nya.

Gambar 4.23 Tampilan report

Dalam tampilan ini pula terdapat beberapa informasi yang belum

terdapat pada tampilan program utama, yaitu besar data setelah

transformasi, selisih data antara data asli dengan data setelah transformasi,

Besar data setelah mengalami proses transformasi dan kuantisasi

dengan nilai 100 dalam kasus tersebut di atas terlihat sangat jauh

berkurang, tetapi nilai MSE yang didapat juga cukup besar. Jika dilihat

dari kualitas citra setelah direkonstruksi juga terlihat buruk. Hal ini

disebabkan oleh nilai kuantisasi yang terlalu besar.

Dalam kasus ini, user dapat menentukan seberapa toleransi kualitas hasil citra rekonstruksi yang diinginkan. Setelah itu, user dapat melihat dari hasil report. Berapa nilai kuantisasi, besar data transformasi, selisih data, dan rasio kompresi yang masih dapat ditoleransi, serta hasil error

yang didapat.

f. Tampilan pertolongan program (help) dan informasi program

Tampilan ini berisi tentang cara penggunaan program.

Gambar 4.24 Tampilan petunjuk penggunaan program

Tampilan informasi program adalah tampilan yang berisi tentang

Gambar 4.25 Tampilan informasi program

Listing untuk menampilkan “Help”, dan “About”:

%==============================================% .... h1 = uimenu('Parent',h0,'Label','Help','Tag','uimenu3'); h2 = uimenu('Parent',h1,'Callback','pertolongan','Label','Help','Tag','help','Enable','on'); h2 = uimenu('Parent',h1,'Callback','about','Label','About','Tag','about','Enable','on'); ... %==============================================%

g. Tampilan pesan kesalahan

Progam ini juga akan menampilkan berbagai pesan kesalahan apabila

user salah dalam mengoperasikan program. Berbagai pesan kesalahan ini antara lain:

Gambar 4.26 Tampilan pesan error

Pesan ini akan tampil jika ukuran blok yang dipilih oleh user lebih besar daripada ukuran citra masukan. Misalnya ukuran citra masukan

adalah 64x64 pixel, sedangkan ukuran blok yang dipilih adalah 128x128, maka pesan ini akan muncul, hal ini disebabkan karena citra dengan

resolusi 64x64 pixel tidak dapat dibagi menjadi blok 128x128.

h. Tampilan peringatan

a. Peringatan dalam memasukkan blok matriks

User juga akan mendapat peringatan jika ada input yang salah. Peringatan kesalahan tersebut adalah sebagai berikut:

Peringatan ini akan muncul jika user memilih metode kuantisasi “Blok

Matriks” dan kemudian menekan tombol “Tansformasi”, tetapi belum

memilih blok matriks pada popup menu.

b. Peringatan dalam memasukkan baris dan kolom

Jika user salah dalam memasukkan baris dan kolom yang digunakan untuk melihat blok matriks, ataupun salah satu baris atau kolom atau

keduanya dalam keadaan kosong, dan user menekan tombol “Tampil” maka akan muncul peringatan seperti gambar 4.28 di bawah ini:

Gambar 4.28 Tampilan peringatan 2

Di atas kotak untuk input angka baris dan kolom tercantum batas maksimal user dapat memasukkan nilai. Jika user memasukkan sebuah nilai yang melebihi batas maksimal tersebut maka peringatan ini akan

Dokumen terkait