• Tidak ada hasil yang ditemukan

BAB V IMPLEME TASI. Lingkungan aplikasi pada implementasi program HVF ini adalah: Perangkat Keras : Intel Core 2 Duo, 2 GHz

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB V IMPLEME TASI. Lingkungan aplikasi pada implementasi program HVF ini adalah: Perangkat Keras : Intel Core 2 Duo, 2 GHz"

Copied!
9
0
0

Teks penuh

(1)

31

BAB V

IMPLEME TASI

Pada bab ini akan dipaparkan mengenai proses implementasi mulai dari lingkungan implementasi sampai list kode MATLAB yang digunakan dalam pembuatan aplikasi HVF.

5.1 Lingkungan Implementasi

Lingkungan aplikasi pada implementasi program HVF ini adalah: • Perangkat Keras

o CPU : Intel Core 2 Duo, 2 GHz o RAM : 2 GB

• Perangkat Lunak

o Sistem Operasi : Windows Vista Home Premium o Aplikasi : MATLAB 7.1

5.2 Implementasi Proses Masukan

Masukan pada proses (gambar 5.2) ini yaitu berupa citra RGB, yang kemudian akan diberikan noise pada setiap channelnya dengan persentase yang sama pada tiap-tiap channelnya. Kemudian citra yang telah diberi noise akan ditambahkan pinggirannya sebesar 1 piksel (baris ke 20-26), hal ini dimaksudkan supaya noise yang berada pada tepi citra dapat terproses juga.

Pada proses ini juga akan memanggil proses ‘h_filter2’ dan ‘h_filter’ (baris ke 33-34) yaitu proses VMF dan VDF. Setelah itu citra keluaran dari proses VDF akan dihitung PSNR-nya dengan membandingan citra keluaran dengan citra asli.

(2)

1 Im = imread(M); 2 size(Im); 3 tic 4 %pemisahan channel 5 I1 = Im(:,:,1); 6 I2 = Im(:,:,2); 7 I3 = Im(:,:,3); 8

9 %pemberian noise salt&pepper pada tiap channel

10 I1 = imnoise(I1,'salt & pepper', 0.02);

11 I2 = imnoise(I2,'salt & pepper', 0.02);

12 I3 = imnoise(I3,'salt & pepper', 0.02);

13

14 %menggabungkan kembali channel2

15 I(:,:,1) = I1; 16 I(:,:,2) = I2; 17 I(:,:,3) = I3; 18 19 %pinggir 20 It(:,:,1) = pinggir3(I,1); 21 It(:,:,2) = pinggir3(I,2); 22 It(:,:,3) = pinggir3(I,3); 23 24 Itt(:,:,1) = pinggir3(It,1); 25 Itt(:,:,2) = pinggir3(It,2); 26 Itt(:,:,3) = pinggir3(It,3); 27

28 figure; imshow(Im), title('Citra Asli');

29 figure; imshow(I), title('Citra yang diberi noise');

30 Itt=double(Itt);

31

32 %fungsi hybrid vector filtering Gambar 5.1A Listing kode masukan

(3)

33 [Ih]=h_filter2(Itt); 34 [NI]=h_filter(Ih); 35 p1=psnr(Im(:,:,1),NI(:,:,1)); 36 p2=psnr(Im(:,:,2),NI(:,:,2)); 37 p3=psnr(Im(:,:,3),NI(:,:,3)); 38 39 snr=(p1+p2+p3)/3 40 toc 41 clear all

Gambar 5.1B Listing Kode Masukan

5.3 Implementasi Proses VMF

Pada proses VMF (gambar 5.3) ini tiap-tiap piksel pada citra akan diperlakukan sebagai vektor, pada VMF proses yang dilakukan adalah menghitung jarak antara vektor Xi, dan Xj dalam window lokal yang berukuran 3x3 yang kemudian di iterasi sebanyak ukuran citra masukan.

Kemudian dicari nilai hasil penjumlahan ‘sum_m’ yang terkecil jika ditemukan nilai ‘sum_m’ yang bernilai minimum maka, posisi ‘r’ akan dicatat dan nilai vektor yang ada pada posisi ‘r’ akan disimpan pada matriks ‘Ih’

1 function [Ih] = h_filter2(b)

2 3 C=size(b); 4 5 for n=[2:C(1)-1] 6 for k=[2:C(2)-1] 7 if b(n,k,1)+b(n,k,2)+b(n,k,3)==0 8 b(n,k,:)=1; 9 end

(4)

10 end 11 end 12 13 for n=[2:C(1)-1] 14 for k=[2:C(2)-1] 15 r=1; 16 17 for l=[-1:1] 18 for m=[-1:1] 19 Xi(1)=b(n+l,k+m,1); 20 Xi(2)=b(n+l,k+m,2); 21 Xi(3)=b(n+l,k+m,3); 22 mXi(r,:)=Xi; 23 sum_m=0; 24 25 for q=[-1:1] 26 for w=[-1:1] 27 Xj(1)=b(n+q,k+w,1); 28 Xj(2)=b(n+q,k+w,2); 29 Xj(3)=b(n+q,k+w,3); 30 d=Xi-Xj; 31 mag=norm(d); 32 sum_m=sum_m+mag; 33 end 34 end 35 S(r)=sum_m; 36 r=r+1; 37 end 38 end 39 40 VMF=min(S); 41 42 for r=[1:9] 43 if S(r)==VMF

(5)

44 rv=r; 45 end 46 end 47 48 NNI(n,k,1)=mXi(rv,1); 49 NNI(n,k,2)=mXi(rv,2); 50 NNI(n,k,3)=mXi(rv,3); 51 52 end 53 end 54 55 NNI=NNI(2:size(NNI,1), 2:size(NNI,2),:); 56 Ih = uint8(NNI);

Gambar 5.2C Listing Kode VMF

Penjelasan dari gambar 5.3 :

• Baris 17 dan 18 adalah looping untuk vektor Xi dalam window mask yang berukuran 3x3

• Baris 25 dan 26 adalah looping untuk vektor Xj dalam window mask yang berukuran 3x3

• Baris ke 22 menyimpan nilai vektor Xi dalam matriks mXi dengan ukuran 3 x r. Dimana r adalah indeks pada matriks mXi.

• Baris ke 31 adalah fungsi untuk menghitung jarak antara vektor Xi dan Xj, yang kemudian hasilnya di jumlahkan dan hasil penjumlahannya dinyatakan dalam variabel bernama ‘sum_m’ (baris 32)

• Baris ke 35, nilai ‘sum_m’ disimpan ke dalam matriks S(r), dimana ‘r’ disini berfungsi sebagai indeks untuk nilai ‘sum_m’ pada matriks S. Kemudian pada S dicari nilai ‘sum_m’ terkecil yang posisinya ditandai oleh ‘r’. Ketika nilai ‘sum_m’ terkecil ditemukan maka ‘r’ akan diganti menjadi ‘rv’.

(6)

• Baris ke 48-50 adalah mengganti nilai (n,k) dengan nilai mXi(rv), dimana rv tadi adalah posisi vektor dengan nilai θ yang minimum. Vektor hasil proses tersebut kemudian disusun kedalam matriks NNI, yang akan digunakan untuk masukan proses selanjutnya yaitu proses VDF.

5.4 Implementasi Proses VDF

Pada bagian ini akan dijelaskan mengenai implementasi pada proses VDF beserta listing kode MATLAB-nya.

Data masukan untuk proses VDF (gambar 5.4) ini adalah matriks ‘Ih’ yang merupakan keluaran dari proses VMF. Pada VDF, proses yang dilakukan adalah menghitung total jumlah sudut antara vektor Xi, dan Xj dalam window lokal yang berukuran 3x3 yang kemudian di iterasi sebanyak ukuran citra masukan.

Kemudian dicari nilai hasil penjumlahan ‘sum_a’ yang terkecil jika ditemukan nilai ‘sum_a’ yang bernilai minimum maka, posisi ‘r’ akan dicatat dan nilai vektor yang ada pada posisi ‘r’ akan disimpan pada matriks ‘NI’, dimana NI adalah citra keluaran dari proses HVF ini.

1 function [NI] = h_filter(a);

2 3 B=size(a); 4 a=double(a); 5 6 for n=[2:B(1)-1] 7 for k=[2:B(2)-1] 8 if a(n,k,1)+a(n,k,2)+a(n,k,3)==0 9 a(n,k,:)=1; 10 End 11 end

(7)

12 end 13 14 %---VDF 15 for n=[2:B(1)-1] 16 for k=[2:B(2)-1] 17 r=1; 18 19 for l=[-1:1] 20 for m=[-1:1] 21 Xi(1)=a(n+l,k+m,1); 22 Xi(2)=a(n+l,k+m,2); % vektor Xi berupa matrix 3x1 23 Xi(3)=a(n+l,k+m,3); 24 mXi(r,:)=Xi; %matriks vektor Xi disimpan dengan ukuran 3xr

25 sum_a=0; 26 27 28 for q=[-1:1] 29 for w=[-1:1] 30 Xj(1)=a(n+q,k+w,1); 31 Xj(2)=a(n+q,k+w,2); 32 Xj(3)=a(n+q,k+w,3); 33 34 alfa=acos((Xi(1)*Xj(1)+Xi(2)*Xj(2)+Xi(3)*Xj( 3))/(norm(double(Xi))*norm(double(Xj)))); 35 sum_a=sum_a+abs(alfa); 36 end 37 end 38 S(r)=sum_a; 39 r=r+1; 40 end 41 end 42 VDF=min(S);

(8)

43 for r=[1:9] 44 if S(r)==VDF 45 rv=r; 46 end 47 end 48 NI(n,k,1)=mXi(rv,1); 49 NI(n,k,2)=mXi(rv,2); 50 NI(n,k,3)=mXi(rv,3); 51 end 52 end 53 54 NI=NI(2:size(NI,1), 2:size(NI,2),:); 55 NI=uint8(NI);

56 figure; imshow(NI), title('Final Result');

57

58 NI=double(NI);

Gambar 5.3C Listing Kode VDF

Penjelasan dari gambar 5.4 :

• Baris 6-12 adalah error handling, dimana jika nilai vektor pada posisi (n,k) = 0 maka nilainya diganti menjadi 1. Tujuannya adalah untuk menghindari pembagian dengan 0 ketika mencari nilai sudut vektor Xi dan Xj

• Baris ke 24 menyimpan nilai vektor Xi dalam matriks mXi dengan ukuran 3 x r. Dimana r adalah indeks pada matriks mXi ketika nilai sum_a bernilai minimum

• Baris ke 34 adalah fungsi untuk menghitung ‘alfa’ yaitu sudut antara vektor Xi dan Xj, yang kemudian hasilnya di jumlahkan (baris 35) dan hasilnya disimpan dalam variabel sum_a. Yang mana nantinya akan dicari nilai sum_a terkecil yang akan digunakan sebagai directional vector nya.

• Baris ke 38, nilai ‘sum_a’ disimpan ke dalam matriks S(r). Kemudian dicari nilai ‘sum_a’ terkecil pada ‘S’. Setelah

(9)

diketahui nilai ‘sum_a’ yang terkecil kemudian nilai ‘r’ yang menandai posisi ‘sum_a’ tersebut diganti menjadi ‘rv’ (baris 45).

• Baris ke 48-50 adalah mengganti nilai (n,k) dengan nilai mXi(rv), dimana rv tadi adalah posisi vektor dengan nilai α minimum. Vektor hasil proses tersebut kemudian disimpan pada matriks NI. Dimana NI adalah citra keluaran dari VDF yang juga merupakan keluaran dari proses HVF.

5.5 PS R

Pada gambar 5.4 adalah lisitng kode untuk mencari nilai PSNR dari citra hasil promrosesan (NI) dengan citra awal (Im). Listing kode yang dipakai pada perangkat lunak ini diciptakan oleh Gabriel Peyr. PSNR dari tiap-tiap channel citra keluaran dihitung secara terpisah kemudian diambil nilai rata-ratanya sehingga: PSNR = (PSNR(R) + PSNR(G) + PSNR(B)) / 3

1 function p = psnr(x,y) 2

3 % psnr - compute the Peack Signal to Noise Ratio, defined by : 4 % PSNR(x,y) = 10*log10( max(max(x),max(y))^2 / |x-y|^2 ). 5 % 6 % p = psnr(x,y); 7 %

8 % Copyright (c) 2004 Gabriel Peyr 9 x=double(x);

10 y=double(y);

11 d = mean( mean( (x(:)-y(:)).^2 ) ); 12 m1 = max( abs(x(:)) );

13 m2 = max( abs(y(:)) ); 14 m = max(m1,m2);

15

16 p = 10*log10( m^2/d );

Gambar

Gambar 5.2A Lisitng kode VMF
Gambar 5.2B Listing kode VMF
Gambar 5.2C Listing Kode VMF
Gambar 5.3A Listing kode VDF
+4

Referensi

Dokumen terkait

Teknik bimbingan kelompok yang akan digunakan adalah bermain peran ( role play ). Diharapkan melalui penelitian tindakan kelas kemandirian belajar mahasiswa melalui

Model yang digunakan tersusun atas 2 faktor perlakuan, faktor A terdiri atas 3 taraf dan faktor B terdiri atas 3 taraf dengan ulangan sebanyak 3 kali sehingga disebut

Penelitian tindakan kelas ini bertujuan untuk meningkatkan hasil belajar siswa kelas IV SD N 3 Tanjungrejo melalui penggunaan model pembelajaran Kooperatif Tipe

Hasil penelitian ini dapat digunakan untuk mempelajari manfaat kecerdasan emosional dan perilaku belajar mahasiswa sehingga secara tidak langsung mahasiswa akan belajar

 =umla, kumulati& >aktu tunggu ,asil #elayanan laboratorium #asien yang di survey dalam satu bulan.  =umla, #asien yang

Penelitian ini menekankan pengaruh due professional care pada kinerja auditor Inspektorat dengan integritas sebagai pemoderasi. Lebih lanjut, penelitian ini dilakukan

Deskriptor diambil berdasar- kan jumlah panelis yang menyatakan bahwa suatu soal diperkirakan mampu dijawab benar oleh siswa minimal lebih dari separoh (1/2) dari

Gambar 5.32 Hasil Analisis Levene’s Test of Equality of Error Variance dengan SPSS pada Sesi Structure and Written Expression Kelompok Kontrol Kedua dan Kelompok Percobaan... 72