• Tidak ada hasil yang ditemukan

Implementasi Metode Median Filtering Dan Kompresi Jpeg Untuk Citra BMP

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Metode Median Filtering Dan Kompresi Jpeg Untuk Citra BMP"

Copied!
108
0
0

Teks penuh

(1)

1. home.m

functi

on varargout = home(varargin)

% Begin initialization code - DO NOT EDIT gui_Si if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout [varar

gout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:}); end

functi

on home_OpeningFcn(hObject, eventdata, handles, varargin) handle

on varargout = home_OutputFcn(hObject, eventdata, handles) vararg

out{1} = handles.output;

functi

on Home_Callback(hObject, eventdata, handles)

(2)

gui_Si

ngleton = 1; gui_St

ate = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @generatenoise_OpeningFcn, ... 'gui_OutputFcn', @generatenoise_OutputFcn, ... 'gui_LayoutFcn', [] , ...

'gui_Callback', []); if nargin && ischar(varargin{1}) gui_St

on generatenoise_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; guidat

a(hObject, handles); functi

on varargout = generatenoise_OutputFcn(hObject, eventdata, handles)

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

if ~isequal(nama_file,0)

handles.citra=(imread(fullfile(nama_path, nama_file))); info=imfinfo(fullfile(nama_path, nama_file));

size_file=info.FileSize/1000;

set(handles.edit_FileLocation,'String',nama_path); set(handles.edit_FileName,'String',nama_file); set(handles.edit_ImageSize,'String',size_file); set(handles.edit_Width,'String',k);

set(handles.edit_Height,'String',b);

(3)

functi

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

%set(proyek.figure1,'CurrentAxes',proyek.axes_noise); %set(imshow(I));

%set(proyek.figure1,'CurrentAxes',proyek.axes_noise); %set(imshow(I));

imshow(I);

(4)

J = getimage(handles.axes_original); nilaimse_noise = msecitra(J,I);

set(handles.edit_MSE,'String',nilaimse_noise);

nilaipsnr_noise = 20*log10(255/sqrt(nilaimse_noise)); set(handles.edit_PSNR,'String',nilaipsnr_noise);

Nilai = sum((( double(F1)-double(F2)).^2)/(a1*b1)); NilaiMSE = if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

(5)

3. testing.m

functi

on varargout = testing(varargin)

% Begin initialization code - DO NOT EDIT gui_Si if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:}); end

functi

on testing_OpeningFcn(hObject, eventdata, handles, varargin) handle

s.output = hObject; guidat

a(hObject, handles);

functi

on varargout = testing_OutputFcn(hObject, eventdata, handles) vararg

file, nama_path] = uigetfile({'*.bmp'},'Buka File Citra'); if ~isequal(nama_file,0)

handles.citra=(imread(fullfile(nama_path, nama_file))); info=imfinfo(fullfile(nama_path, nama_file));

size_file=info.FileSize/1000;

set(handles.edit_locationINoise,'String',nama_path); set(handles.edit_fileNameINoise,'String',nama_file); set(handles.edit_sizeINoise,'String',size_file); set(handles.edit_widthINoise,'String',k);

(6)
(7)

end

Nilai = sum((( double(F1)-double(F2)).^2)/(a1*b1));

NilaiMSE = sum(Nilai(:,:,1))+sum(Nilai(:,:,2))+sum(Nilai(:,:,3));

functi

on edit3_Callback(hObject, eventdata, handles) functi

on edit3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

(8)

functi

on edit2_Callback(hObject, eventdata, handles) functi

on edit_sizeINoise_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

(9)

functi

on edit13_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

(10)

jpgQst

% Compute the bits for the Y component for m = 1:N:Height

for n = 1:N:Width

(11)

% Calculate bits for the DC difference

(12)

xqCr(m:m+N-1,n:n+N-1)= idct2(temp2 .* (Qscale*QstepsC))+

its = acBitsY + dcBitsY + dcBitsCb +... acBits

Cb + dcBitsCr + acBitsCr;

%upsam pling

c1 = imresize(xqCb,[Height Width],'cubic'); c2 = imresize(xqCr,[Height Width],'cubic'); xq(:,: if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

(13)

size_f

ile_JPEGCom=infoJPEGCommImage.FileSize/1000; R_Comp

ression = 100 - ((size_file_JPEGCom / size_file )*100); set(ha

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end if ispc && isequal(get(hObject,'BackgroundColor'),

(14)
(15)

functi

on Bits = jpgDCbits(dc,C)

CodeLe

Bits = double(CodeLength(round(log2(abs(dc))+0.5)+1)); end

% Begin initialization code - DO NOT EDIT gui_Si if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

(16)

handle

on varargout = help_OutputFcn(hObject, eventdata, handles) vararg

out{1} = handles.output;

8. keluar.m

functi

on varargout = keluar(varargin)

% Begin initialization code - DO NOT EDIT gui_Si if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:}); end

functi

on keluar_OpeningFcn(hObject, eventdata, handles, varargin)

% Choose default command line output for keluar handle

s.output = 'Yes';

(17)

FigPos(1)=1/2*(ScreenSize(3)-FigWidth); FigPos(2)=2/3*(ScreenSize(4)-FigHeight); else

GCBFOldUnits = get(gcbf,'Units'); set(gcbf,'Units','pixels');

GCBFPos = get(gcbf,'Position'); set(gcbf,'Units',GCBFOldUnits);

FigPos(1:2) = [(GCBFPos(1) + GCBFPos(3) / 2) - FigWidth / 2, ...

% Show a question icon from dialogicons.mat - variables questIconData % and questIconMap

% UIWAIT makes keluar wait for user response (see UIRESUME) uiwait

(handles.figklu);

% --- Outputs from this function are returned to the command line. functi

on varargout = keluar_OutputFcn(hObject, eventdata, handles)

% Get default command line output from handles structure vararg

out{1} = handles.output;

% The figure can be deleted now delete

% Update handles structure guidat

(18)

% Update handles structure guidat

a(hObject, handles);

% Use UIRESUME instead of delete because the OutputFcn needs % to get the updated handles structure.

uiresu

me(handles.figklu);

functi

on figklu_CloseRequestFcn(hObject, eventdata, handles) if isequal(get(handles.figklu, 'waitstatus'), 'waiting') % The GUI is still in UIWAIT, us UIRESUME

uiresume(handles.figklu); else

% The GUI is no longer waiting, just close it delete(handles.figklu);

end

functi

on figklu_KeyPressFcn(hObject, eventdata, handles) % Check for "enter" or "escape"

if isequal(get(hObject,'CurrentKey'),'escape') % User said no by hitting escape

handles.output = 'No';

% Update handles structure guidata(hObject, handles);

uiresume(handles.figklu); end

if isequal(get(hObject,'CurrentKey'),'return') uiresume(handles.figklu);

(19)

Nama : Zulwita Hariyati

Alamat Sekarang : Jl. Pala 3 No. 12 Perumnas Simalingkar Medan Alamat Orang Tua : Jl. Pala 3 No. 12 Perumnas Simalingkar Medan

Telp/Hp : 085761622962

Email : wita.hariyati@gmail.com

Riwayat Pendidikan

2010 – 2014 : S1 Ilmu Komputer Fasilkom-TI Universitas Sumatera Utara, Medan

2010 – 2007 : SMA Dharma Pancasila Medan 2007 – 2004 : SMP N 31 Medan

2004 – 1998 : SD Muhammadiyah 034 Medan 1998 – 1996 : TK Harapan Bunda Medan

Keahlian

Bahasa : Indonesia, Inggris Bahasa Pemrograman : C#, C++, Matlab

(20)

[1] Dwivedi, Harsh Vardhan. 2009. Design of JPEG Compressor. Thesis. Rourkela: National Institute of Technology.

[2] Maan, Anmol Jyotman. 2013. An Introduction to JPEG Image Compression Algorithm. International Journal Of Electrical. Patiala: Punjabi

University. Volume-1. Hal 44 – 46.

[3] Melita, Yuliana, Juma’in. 2011. Kompresi Gambar atau Citra Menggunakan Discretecosine Transform. Jurnal. Surabaya: Sekolah Tinggi Teknik

Surabaya.Volume 3. Hal 437- 442.

[4] Murinto, Bachrudin Muchtar. 2012. Analisis Perbandingan Metode 2D Median Filter dan Multi Level Median Filter Pada Proses Perbaikan Citra

Digita. Jurnal. Yogyakarta: Universitas Ahmad Dahlan. Volume 6. Hal

654 – 662.

[5] O’Brien. John W. 2005. The JPEG Image Compression Algorithm. Jurnal. Colorado: APPM-3310 FINAL PROJECT. Hal 1- 8.

[6] Putra, Darma. 2010. Pengolahan Citra Digital. Yogyakarta: ANDI.

[7] Sukirman, Edi, Ernastuti, Sarifuddin Madenda.2010 .Peningkatan Kinerja Algoritma Kompresi dan Dekompresi JPEG Melalui Penggabungan

Proses DCT dan Kuantisasi. Jurnal. Bekasi: Universitas Gunadarma

Indonesia.

(21)

[9] Sutoyo. T. 2009. Teori Pengolahan Citra Digital. Yogyakarta: Penerbit ANDI.

[10] Syarifuddin, Sony Nuryadi. Analisis Filtering Citra Dengan Metode Mean Filter dan Median Filter. Jurnal. Jakarta: Universitas Komputer

Indonesia.

[11] Thyagarajan, K. S. 2011. Still image and video compression with MATLAB. New Jersey: Wiley.

[12] Wardhani, Rika Novita, Mera Kartika Delimayanti. 2012. Analisis Penerapan Metode Konvolusi Untuk Reduksi Derau Pada Citra Digital. Seminar

Nasional Teknik Elektro (SNTE). Jakarta: Politeknik Negeri Jakarta. Hal:191 – 198.

[13] Yuwono, Bambang. 2010. Image Smoothing Menggunakan Mean Filtering, Median filtering, Modus Filtering dan Gaussian Filtering. Jurnal.

(22)

3.1 Analisis Sistem

Analisis sistem merupakan tahap awal dalam perancangan sebuah sistem. Pada tahap ini akan diuraikan hal – hal yang dibutuhkan oleh sistem dengan memberikan gambaran yang jelas terhadap komponen - komponen yang ada di dalamnya sehingga sistem yang dibangun dapat sesuai dengan tujuan yang diharapkan.

3.1.1 Analisis Masalah

Masalah yang diangkat pada penelitian ini adalah bagaimana menghilangkan Salt and Pepper noise dan Speckle noise untuk memperbaiki kualitas citra digital serta yang

bagaimana menghasilkan citra dengan detil yang lebih kecil sehingga dapat menghemat penggunaan memori dan media penyimpanan. Pada penelitian ini, citra yang diperbaiki merupakan jenis citra warna (true color), citra inputan dapat merupakan citra yang telah terkena noise dan citra yang tidak terkena noise. Untuk citra yang belum terkena noise, sistem akan menambahkan noise sesuai dengan jenisnya, yaitu Salt and Pepper noise atau Speckle noise. Kemudian setelah noise ditambahkan pada citra, sistem akan melakukan proses filtering dengan metode median filter dan melakukan proses kompresi dengan menggunakan metode JPEG.

(23)

Gambar 3.1 Diagram Ishikawa analisis masalah sistem

3.1.2 Analisis Per syaratan

Analisis persyaratan merupakan tahap penentuan persyaratan terhadap sistem yang dibangun. Analisis persyaratan ini terbagi atas dua, yakni analisis fungsional (Functional Requirement) dan analisis non-fungsional (Non-Functional Requirement).

3.1.2.1 Analisis Fungsional (Functional Requirement)

Analisis fungsional adalah analisis yang dilakukan untuk mendeskripsikan aktivitas dan fungsi apa saja yang harus dimiliki oleh sebuah sistem. Berikut ini yang menjadi persyaratan fungsional pada sistem:

1. Format citra digital yang akan diperbaiki kualitas dan ukurannya adalah dalam format BMP.

2. Jenis noise yang akan dibangkitkan adalah Salt and Pepper Noise dan Speckle Noise.

(24)

4. Metode yang digunakan dalam memperkecil ukuran citra digital adalah kompresi JPEG (tanpa melakukan dekompresi).

5. Menghitung Mean Square Error (MSE) dan Peak Signal to Noise Ratio (PSNR) untuk membandingkan kualitas citra digital.

6. Keefektivan hasil kompresi diukur dengan melihat hasil running time dan persentase rasio dari citra terkompresi.

3.1.2.2 Analisis Non-Fungsional (Non-Functional Requirement)

Analisis non-fungsional adalah persyaratan yang dilakukan untuk mendeskripsikan fitur, karakteristik, dan batasan lainnya untuk menentukan sebuah sistem memuaskan atau tidak. Beberapa persyaratan non – fungsional dari sistem yang dirancang adalah:

1. Tampilan (performance)

Sistem yang dibangun harus memiliki tampilan yang user friendly, artinya sistem tersebut dapat mudah digunakan oleh user dan memiliki tampilan yang sederhana serta mudah dimengerti.

2. Penyimpanan Data (Information)

Citra yang diproses dengan median filter serta dimampatkan dengan JPEG disimpan dalam direktori khusus, citra hasil filtering disimpan dalam ekstensi .BMP dan citra hasil kompresi disimpan dalam ekstensi .JPEG.

3. Efisiensi Sistem (Eficiency)

Sistem yang dibangun menerapkan konsep multy threading untuk mempercepat kinerja sistem.

4. Kontrol Sistem (Control)

Sistem harus berjalan sesuai dengan urutan pengoperasian sistem, jika tidak akan terjadi pendisable-an terhadap beberapa tombol proses tertentu.

5. Hemat biaya (Economic)

(25)

6. Pelayanan Sistem (Service)

Setiap halaman form yang dirancang mempertimbangkan konsistensi jenis huruf, warna, dan layout dari antarmuka pengguna.

3.1.3 Analisis Proses

Dalam sistem ini terdapat 3 proses utama, yaitu proses generate noise, proses filtering dengan Median Filter, serta proses kompresi menggunakan kompresi JPEG. Proses generate noise terdiri dari dua bagian, yaitu Salt and Pepper Noise dan Speckle Noise.

Masing-masing noise akan digenerate dengan menginputkan nilai probabilitasnya, setelah itu dapat dilakukan proses filtering dan selanjutnya akan dilakukan proses kompresi menggunakan metode JPEG.

3.1.3.1 Analisis Proses Filtering dengan Metode Median Filter

Berikut ini merupakan contoh penggunaan metode Median Filtering. Dimisalkan sebuah matrik citra sebagai berikut (Tabel 3.1):

Tabel 3.1 Tabel matrik citra 8 8 16 49 66 74 74 57 8 8 16 49 66 74 0 66 24 24 33 57 57 57 66 57 255 33 41 49 49 49 57 49 66 66 57 49 41 33 33 33 74 66 49 49 41 33 33 33 74 57 49 49 49 41 33 33 66 57 49 0 41 41 41 41

(26)

Tabel 3.2 Tabel matrik tepi nol

Selanjutnya operasi filter akan dimulai dari piksel kiri atas seperti berikut.

0 0 0 0 0 0 0 0 0 0 median/titik tengah, nilai median tersebut dimasukkan ke dalam matrik baru yang

berukuran sama.

Nilai 0 akan menggantikan nilai pada titik (1,1) matrik citra. Selanjutnya dengan langkah yang sama operasi filter bergeser ke titik ((1,2), (1,3), …, (m,n)) matrik. Setelah dilakukan beberapa kali iterasi, maka akan dihasilkan matrik hasil median filter sebagai berikut (tabel 3.3):

0 0 0 0 8 8 0 8 8

Matrik citra tepi nol

(27)

Tabel 3.3 Tabel matrik hasil median filter 0 8 8 16 49 66 57 8 8 16 24 49 57 66 66 57 8 24 33 49 57 57 57 49 24 41 49 49 49 49 49 49 66 66 49 49 49 41 33 33 66 66 49 49 41 33 33 33 57 57 49 49 41 41 33 41 8 49 49 49 49 41 41 41 3.1.3.2 Analisis Proses Kompr esi dengan Metode J PEG

Dalam metode kompresi JPEG tahapan yang perlu dilakukan adalah proses Encoding dan Decoding untuk memampatkan citra. Tahapan proses Encoding dan Decoding pada JPEG dapat diuraikan sebagai berikut.

3.1.3.2.1 Encoding J PEG

Adapun tahapan dari encoding JPEG adalah sebagai berikut:

1. Konversi RGB ke YCbCr

Pada ruang warna YcbCr, Y (luminance) merupakan komponen yang menyatakan intensitas warna dari 0 sampai 255, dimana 0 merupakan representasi dari warna hitam dan 255 merepresentasikan warna putih. Sedangkan komponen Chrominance (Chroma) yaitu Cb (blue) dan Cr (red) menyatakan informasi warna. YCbCr diperoleh dari hasil konversi RGB, dengan rumus:

Y = 0,299 * R + 0,587 * G + 0,114 * B Cb = - 0,1687 * R – 0,3312 * G + 0,5 * B

(28)

2. Downsampling

Downsampling merupakan pengurangan yang dilakukan pada komponen Cb dan Cr

pada citra atau biasa disebut juga dengan chroma sampling. Beberapa rasio downsampling pada JPEG antara lain 4:4:4 (no downsampling), 4:2:2 (reduce by

factor of 2 in horizontal direction), dan 4:2:0 (reduce by factor of 2 in horizontal and

vertical directions).

3. Block Splitting

Setelah dilakukan proses downsampling, citra dibagi kedalam blok atau matrik 8x8.

4. Proses DCT

Selanjutnya, masing – masing komponen (Y, Cb, Cr) dari tiap 8x8 blok dikonversi ke dalam 2D discrete cosine transform (DCT). Berikut adalah matrik citra 8x8 hasil proses median filtering yang akan diproses dengan DCT.

0 8 8 16 49 66 57 8 8 16 24 49 57 66 66 57 8 24 33 49 57 57 57 49 24 41 49 49 49 49 49 49 66 66 49 49 49 41 33 33 66 66 49 49 41 33 33 33 57 57 49 49 41 41 33 41 8 49 49 49 49 41 41 41

(29)

Hasil pengurangan 128 dari tiap piksel: Langkah selanjutnya adalah menghitung 2D DCT, dengan rumus:

DCT(u,v)= untuk k >0 , dan f(x,y) adalah nilai piksel pada koordinat (x,y).

Jika transformasi ini diterapkan pada matrik sebelumnya, maka hasilnya:

-791.2500 -5.1602 -9.1063 -3.8851 -5.0000 -3.8244 -4.3460 -2.7888

Setelah proses transformasi DCT, didapat nilai koefisien DC yaitu -791.2500. Koefisien DC adalah elemen yang terletak paling kiri atas yaitu diposisi (0,0). Dan koefisien lainnya disebut koefisien AC.

(30)

5. Proses Kuantisasi

Kuantisasi merupakan proses untuk mengurangi jumlah bit yang diperlukan untuk menyimpan data gambar. Pada proses kuantisasi frekuensi tinggi dipotong dengan cara matrik koefisien hasil DCT dibagi dengan matrik quantum hal ini dikarena mata manusia lebih peka terhadap frekuensi rendah dari pada frekuensi tinggi dan karena frekuensi tinggi tidak akan merubah data gambar secara signifikan. Matrik quantum ditentukan oleh faktor kualitas yang dipilih antara 1 sampai 100 yang nantinya akan dipakai untuk menentukan kualitas dari suatu gambar JPEG.

Matrik kuantisasi untuk luminance:

QY (u,v) =

Matrik kuantisasi untuk chrominance:

QC (u,v) =

proses kuantisasi dihitung dengan menggunakan rumus :

(31)

Keterangan:

Fq(u,v) = koefisien DCT setelah kuantisasi F(u,v) = koefisien DCT sebelum kuantisasi Q(u,v) = elemen dari tabel kuantisasi

Hasil dari perhitungan kuantisasi matrik DCT adalah:

-33 0 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

6. Proses Pengkodean (Entropy Coding)

Setelah proses kuantisasi, koefisien DC (koefisien (0,0)) dan 63 koefisien AC dikodekan secara terpisah. Koefisien DC terlebih dahulu dikodekan menggunakan DPCM sedangkan koefisien AC dikodekan dengan menggunakan run length coding (RLC).

6.1 Differential Pulse Code Modulation (DPCM)

Koefisien DC dikodekan menggunakan DPCM dengan prediksi dari koefisien DC blok sebelumnya. Differential koefisien DC dapat diperoleh dengan rumus:

(32)

6.2 Entropy Coding Pada Koefisien DC

Gambar 3.2 Size, Category and amplitude range of DC Differentials

Gambar 3.3 JPEG default luma Huffman table for DC coefficient

(33)

yang dikodekan dengan Huffman hanya sizenya saja, karena perubahan size tidak terlalu jauh sedangkan amplitude bervariasi.

Berdasarkan hasil proses kuantisasi, nilai koefisien DC adalah -33. Maka dapat kita lihat berdasarkan gambar 6 sizenya adalah 6. Dan binary code dari 30 adalah 011110 maka pasangan size dan amplitude dari nilai tersebut menjadi (6, 011110). Selanjutnya, Huffman code dari 6 adalah 1110. Maka nilai -33 dikodekan sebagai 1110011110.

6.3 Zig-zag scanning

Zig-zag scanning adalah proses merubah matrik 8 x 8 hasil kuantisasi kedalam vektor

1 x 28, dengan melakukan pembacaan secara zig-zag scanning. Pada proses zig-zag scanning ini nilai nol pada frekuensi tinggi cenderung terbaca secara berurutan.

Gambar 3.4Path zig-zag scanning

Contoh hasil proses zig-zag scanning pada citra yang merubah matrik 8 x 8 hasil proses kuantisasi ke dalam vektor 1 x 64:

-33 0 0 -1 -1 -1 0 -1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

6.4 RLC (Run-Length Code)

(34)

keluaran matrik setelah proses kuantisasi pada frekuensi tinggi cenderung nol (0) dan berurutan, Karena hampir setengahnya adalah nol, maka nilai 0 inilah yang disimbolkan menjadi 0 dan jumlah pengulangannya.

6.5 Entropy Coding untuk Koefisien AC

Setelah proses kuantisasi, banyak dari komponen AC bernilai 0, sehingga hanya koefisien AC yang bukan nol lah yang perlu dikodekan. Tiap koefisien AC diuraikan dalam pasangan (run/size, amplitude). Dalam entropy coding koefisien AC yang dikodekan dengan Huffman hanya run/size, dimana run adalah jumlah nilai 0 sebelum koefisien AC non-zero. Gambar 3.5 berikut adalah tabel JPEG dari size, category, dan amplitude range dari koefisien AC.

Gambar 3.5 JPEG size, category and amplitude range of AC coefficients

(35)

3.1.3.2.2 Decoding J PEG

Proses decoding merupakan kebalikan dari encoding kompresi JPEG.

1. Huffman Decoding

Untuk masing – masing koefisien DC akan dilakukan IDPCM dan untuk AC dilakukan unzigzag serta untuk proses RLC akan dilakukan proses sebaliknya dari encoding yaitu hasil pengkodean RLC discan dan diuraikan kembali, kemudian kode

hasil penguraian dibaca sebagai blok.

2. Dekuantisasi

Untuk proses decoder/dekuantisasi dapat dihitung dengan menggunakan rumus:

F Q (u, v) = F q (u, v) × Q(u, v)

3. Inverse Discrete Cosine Transform (IDCT)

(36)

4. Konversi YCbCr ke RGB

Untuk membentuk kembali warna RGB dari warna YCbCr dapat menggunakan rumus :

R = Y + 1,4022 * Cr

G = Y – 0,3456 * Cb – 0,7145 * Cr B = Y + 1,7710 * Cb

Proses decoder pada kompresi JPEG dapat dilihat pada gambar 3.6 berikut.

Gambar 3.6 JPEG Decoder Diagram

3.1.4 Use Case Diagr am

Use case adalah suatu model yang digunakan untuk menggambarkan persyaratan

sistem. Use case diagram adalah suatu diagram yang menggambarkan interaksi antara user dengan sistem itu sendiri dan bagaimana sebuah sistem tersebut digunakan oleh

(37)

Gambar 3.7 Use Case Diagram Sistem

3.1.4.1 Use Case Generate Noise

Spesifikasi use case Generate Noise dapat dilihat pada Tabel 3.4.

Tabel 3.4 Spesifikasi Use Case Generate Noise

Use Case Name Generate Noise

Actor User

Description Melakukan proses generate noise pada citra

Preconditions User mengakses menu generate noise

Basic Flows 1. User menginput citra BMP yang akan digenerate

2. Sistem menampilkan citra yang diinput

3. User memilih jenis noise yang akan dibangkitkan 4. User menginputkan nilai probabilitas noise

5. User mengakses tombol generate noise

6. Sistem menampilkan citra hasil generate noise

Alternative Flows -

(38)

Post Conditions User dapat melihat citra hasil generate noise.

Extention Points -

3.1.4.2 Use Case Filtering dan Kompr esi Citr a

Spesifikasi use case Filtering dan Kompresi Citra dapat dilihat pada Tabel 3.5. Tabel 3.5 Spesifikasi Use Case Filtering dan Kompresi Citra

Use Case Name Filtering dan Kompresi Citra

Actor User

Description Melakukan filtering dan kompresi pada citra

Precondition User mengakses menu testing

Basic Flows 1. User menginput citra BMP bernoise

2. Pengguna mengakses tombol median filtering 3. Sistem menampilkan citra hasil proses filtering 4. User memilih level quality dari kompresi JPEG

5. User mengakses tombol JPEG compression

6. Sistem menampilkan citra hasil kompresi

Alternative Flows -

Exception Flows -

Post Conditions User dapat melihat citra hasil median filtering dan

kompresi JPEG

Extention Points -

3.1.5 Activity Diagram

Activity diagram merupakan diagram yang mendeskripsikan proses kerja sebuah

(39)

3.1.5.1 Activity Diagram Proses Generate Noise Citr a

Activity diagram proses generate noise citra pada sistem ini dapat dilihat pada gambar

3.8 berikut ini.

Gambar 3.8 Activity Diagram Proses Generate Noise

3.1.5.2 Activity Diagram Proses Filtering dan Kompresi Citr a

(40)
(41)

3.1.6 Sequence Diagram

Sequence diagram adalah sebuah diagram yang mendeskripsikan interaksi yang

terjadi antar objek dalam sebuah sistem yang disusun berdasarkan urutan waktu tertentu. Adapun sequence diagram sistem ini dapat dilihat pada gambar 3.10 berikut

Gambar 3.10 Sequence Diagram

3.2 Pseudocode Program

Pseudocode program terdiri dari pseudocode proses generate salt and pepper noise,

speckle noise, serta proses median filtering.

3.2.1 Pseudocode Proses Generate Salt and Pepper Noise

I = Image;

(42)

r rand(b,k,c);

pepper find (r<=nilainoise/2);

I(pepper) 0;

salt find (r>1-nilainoise/2);

I(salt) 255;

pada saat akan melakukan generate salt and pepper noise, program akan membangkitkan nilai random pada setiap elemen matrik r dengan nilai 0 sampai dengan 1, dimana ukuran matrik r sama dengan ukuran citra (I). Selanjutnya program akan mencari nilai pada setiap elemen matrik r yang nilai probabilitasnya <= (kecil sama dengan) nilai probabilitas/2, dan hasil pencarian berupa letak atau posisi elemen yang nilainya memenuhi syarat sebelumnya disimpan dalam variabel pepper, sehingga variabel pepper berisi letak/posisi dari nilai yang memenuhi. Kemudian letak/posisi pada variabel pepper tersebut akan menjadi referensi pada matrik citra asli, yang letak/posisinya sesuai dengan variabel pepper akan digantikan dengan 0.

Begitu juga jika ditemukan nilai matrik r > (lebih besar) dari 1-nilai probabilitas/2, maka posisi dari hasil pencariannya akan disimpan pada variabel salt. Kemudian letak/posisi pada variabel salt tersebut akan menjadi referensi pada matrik citra asli, yang letak/posisinya sesuai dengan variabel salt akan digantikan dengan 255.

3.2.2 Pseudocode Proses Generate Speckle Noise

I = Image;

[b k c] size(I); r rand(b,k,c);

e speckl find (r<=nilainoise); I(speckle) 0;

pada saat akan melakukan generate speckle noise, program akan membangkitkan nilai random pada setiap elemen matrik r dengan nilai 0 sampai dengan 1, dimana ukuran

(43)

setiap elemen matrik r dimana r <= (lebih kecil sama dengan) nilai probabilitasnya, dan hasil pencarian berupa letak atau posisi elemen yang nilainya memenuhi syarat sebelumnya disimpan dalam variabel speckle, sehingga variabel speckle berisi letak/posisi dari nilai yang memenuhi. Kemudian letak/posisi pada variabel speckle tersebut akan menjadi referensi pada matrik citra asli, yang letak/posisinya sesuai dengan variabel speckle akan digantikan dengan 0.

3.2.3 Pseudocode Proses Median Filtering

(44)

try

(45)

3.3 Flowchart Kompr esi J PEG

Gambar 3.11 Flowchart Kompresi JPEG

3.4 Perancangan Sistem

Perancangan sistem meliputi flowchart gambaran umum sistem dan perancangan antarmuka pengguna.

3.4.1 Flowchart Gambar an Umum Sistem

(46)
(47)

3.4.2 Perancangan Antar muka Pengguna

Sistem ini dirancang dalam 4 form, yaitu Form Utama, Form Generate Noise, Form Filtering dan kompresi, dan Form Help.

a. Tampilan Menu Utama

Halaman menu utama adalah halaman yang pertama kali muncul saat sistem dijalankan. Menu utama terdiri dari beberapa menu bar, yaitu menu Home, menu Generate Noise, menu Filtering dan Kompresi, menu Help, serta menu Exit. Tampilan

halaman menu utama dapat dilihat pada Gambar 3.13.

Gambar 3.13 Perancangan Form Utama Keterangan:

1. Menu Home untuk menampilkan halaman awal sistem.

2. Menu Generate Noise yang akan menampilkan halaman proses generate noise. 3. Menu Testing yang akan menampilkan halaman proses filtering dan kompresi

citra.

(48)

5. Menu Exit untuk keluar dari program.

6. Komponen Static Text untuk keterangan judul skripsi. 7. Komponen Static Text untuk keterangan nama dan nim. 8. Komponen Axes untuk logo fakultas.

9. Komponen Static Text untuk keterangan program studi.

b. Tampilan Menu Generate Noise

Halaman menu generate noise merupakan halaman yang digunakan untuk melakukan proses pemberian noise pada citra dengan salt and pepper noise atau speckle noise. Tampilan dari halaman menu Generate noise dapat diihat pada gambar 3.14.

Gambar 3.14 Perancangan Form Generate Noise Keterangan:

(49)

5. Komponen Static Text untuk keterangan File Location dari citra 6. Komponen Edit Text untuk menampilkan File lokasi citra. 7. Komponen Static Text untuk keterangan File Name dari citra. 8. Komponen Edit Text untuk menampilkan File Name dari citra. 9. Komponen Static Text untuk keterangan Size dari citra.

10. Komponen Edit Text untuk menampilkan Size dari citra. 11. Komponen Static Text untuk keterangan satuan dari Size citra. 12. Komponen Static Text untuk keterangan satuan Kb dari citra.

13. Komponen Edit Text untuk menampilkan Width atau lebar dari citra. 14. Komponen Static Text untuk keterangan Pixel citra.

15. Komponen Static Text untuk keterangan Height atau panjang citra. 16. Komponen Edit Text untuk menampilkan Height atau panjang dari citra. 17. Komponen Static Text untuk keterangan pixel citra.

18. Komponen Static Text untuk keterangan Noise Image. 19. Komponen Axes untuk menampilkan Noise Image.

20. Komponen Static Text untuk keterangan Noise Probability. 21. Komponen Static Text untuk keterangan persentase noise. 22. Komponen Edit Text untuk menampilkan Noise Probability. 23. Komponen Group Box untuk Type of Noise.

24. Komponen Radio Button untuk Salt and Pepper Noise. 25. Komponen Static Text untuk Salt and Pepper Noise. 26. Komponen Radio Button untuk Speckle Noise. 27. Komponen Static Text untuk Speckle Noise. 28. Komponen Button untuk Generate Noise.

29. Komponen Static Text untuk keterangan MSE citra. 30. Komponen Edit Text untuk menampilkan MSE citra. 31. Komponen StaticText untuk keterangan PSNR citra. 32. Komponen Edit Text untuk menampilkan PSNR citra.

(50)

35. Komponen Static Text untuk keterangan satuan Kb citra. 36. Komponen Group Box untuk information of noise image. 37. Komponen Button untuk Save Image.

c. Tampilan Menu Testing

Halaman menu testing merupakan halaman yang digunakan oleh user untuk melakukan proses filtering menggunakan median filter dan melakukan proses kompresi menggunakan JPEG. Tampilan halaman menu testing dapat dilihat pada gambar 3.15.

Gambar 3.15 Perancangan Form Testing

Keterangan:

(51)

5. Komponen Static Text untuk keterangan Location atau lokasi penyimpanan citra.

6. Komponen Edit Text untuk menampilkan Location atau lokasi penyimpanan cira.

7. Komponen Static Text untuk keterangan File Name citra. 8. Komponen Edit Text untuk menampilkan File Name citra. 9. Komponen Static Text untuk keterangan Size citra.

10. Komponen Text Box untuk menampilkan Size citra. 11. Komponen Static Text untuk keterangan satuan Kb citra.

12. Komponen Static Text untuk keterangan Height atau panjang citra . 13. Komponen Text Box untuk menampilkan Height atau panjang citra. 14. Komponen Static Text untuk keterangan pixel citra.

15. Komponen Static Text untuk keterangan Width atau lebar citra. 16. Komponen Text Box untuk menampilkan Width atau lebar citra. 17. Komponen Static Text untuk keterangan pixel citra.

18. Komponen Static Text untuk keterangan Filter Image. 19. Komponen Axes untuk menampilkan Filter Image. 20. Komponen Button untuk membuka file filter image.

21. Komponen Group Box untuk Value of MSE, PSNR, and Running Time of Filter Image.

22. Komponen Static Text untuk keterangan MSE citra. 23. Komponen Edit Text untuk menampilkan MSE citra. 24. Komponen Static Text untuk keterangan PSNR citra. 25. Komponen Edit Text untuk menampilkan PSNR citra. 26. Komponen Static Text untuk keterangan Running Time. 27. Komponen Edit Text untuk menampilkan Running Time citra. 28. Komponen Button untuk keterangan Save Image.

(52)

32. Komponen Group Box dari Value of Running Time, Ratio, and Image Size of Compression Image.

33. Komponen Static Text untuk keterangan Running Time. 34. Komponen Edit Text untuk menampilkan nilai Running Time. 35. Komponen Static Text untuk keterangan millisecond.

36. Komponen Static Text untuk keterangan Ratio. 37. Komponen Edit Text untuk menampilkan Ratio citra. 38. Komponen Static Text untuk menampilkan Size citra. 39. Komponen Edit Text untuk menampilkan Size citra. 40. Komponen Button untuk Save Image.

41. Komponen Static Text untuk level quality.

42. Komponen popup menu untuk menampilkan level quality.

d. Tampilan Menu Help

Tampilan rancangan halaman menu Help dapat dilihat pada gambar 3.16.

Gambar 3.16 Perancangan Form Help Keterangan :

(53)

4.1 Implementasi Sistem

Implementasi sistem adalah hasil eksekusi program yang telah diterapkan dalam bahasa pemrograman dan disesuaikan dengan algoritma yang digunakan.

4.1.1 Tampilan Menu Utama

Tampilan menu utama merupakan tampilan yang terdiri dari lima tombol menu yaitu tombol Home yang menjadi halaman utama dari sistem, tombol Generate Noise untuk melakukan proses generate noise pada citra, tombol Testing yang berfungsi untuk melakukan proses filtering dan kompresi, tombol Help yang berfungsi sebagai informasi cara penggunaan sistem, dan tombol Exit untuk keluar dari sistem. Tampilan dari menu utama sistem dapat dilihat pada gambar 4.1

(54)

4.1.2 Tampilan Menu Generate Noise

Tampilan menu generate noise berfungsi untuk menampilkan proses generate noise dari citra dimana pengguna menginputkan original image yang berformat BMP, lalu memilih jenis noise yang akan digenerate yakni salt and pepper noise atau speckle noise dan menginputkan nilai probabilitasnya. Tampilan dari menu generate noise

dapat dilihat pada gambar 4.2.

Gambar 4.2 Tampilan Menu Generate Noise

4.1.3. Tampilan Menu Testing

Tampilan menu testing berfungsi untuk menampilkan proses filtering dengan metode median filter dan kompresi JPEG. Tampilan dari menu testing dapat dilihat pada

(55)

Gambar 4.3 Tampilan Menu Testing

4.1.4 Tampilan Menu Help

Tampilan menu help berfungsi untuk menampilkan informasi tentang cara penggunaan sistem yang meliputi cara mengenerate noise dan penggunaan menu testing . Tampilan menu help dapat dilihat pada gambar 4.4

(56)

4.2 Pengujian Sistem

Pengujian sistem berfungsi untuk mengetahui kinerja dari program dalam melakukan generate noise, filtering citra dengan algoritma median filter dan kompresi JPEG.

4.2.1 Tampilan Pr oses Generate Noise Citra BMP

Untuk melakukan proses generate noise dilakukan dengan cara mencari dan membuka file citra dari komputer yang akan digenerate, seperti pada gambar 4.5 berikut.

Gambar 4.5 Tampilan Kotak Dialog Browse File Citra BMP

(57)

Gambar 4.6 Tampilan Citra yang akan digenerate

Setelah citra dengan nama rabbit.bmp ditampilkan selanjutnya pilih jenis noise yang ingin digenerate yaitu salt and pepper noise atau speckle noise. Misalkan noise yang dipilih adalah noise salt and pepper dengan probabilitas 5 %, dan setelah citra disimpan ukuran citra hasil generate akan ditampilkan. hasil dari proses generate noise dapat dilihat pada gambar 4.7 berikut.

(58)

Untuk noise speckle misalkan digenerate dengan nilai probabilitas 5 %, hasilnya dapat dilihat pada gambar 4.8.

Gambar 4.8 Tampilan hasil generate speckle noise dengan probabilitas 5%

Dari pengujian dengan tiga nilai probabilitas noise yang berbeda, hasil perhitungan MSE dan PSNR dari citra yang diberi noise adalah sebagai berikut (Tabel 4.1).

Tabel 4.1 Hasil Perhitungan MSE dan PSNR Citra Bernoise dengan citra rabbit.bmp

Jenis Noise Probabilitas Noise MSE PSNR (dB)

Salt&Pepper 5% 2671.99 13.8625

Salt&Pepper 10% 5343.31 10.8527

Salt&Pepper 15% 8054.3 9.07052

Speckle 5% 2632.39 13.9273

Speckle 10% 5231.09 10.9449

(59)

4.2.2 Tampilan Pr oses Median Filtering dan Kompresi J PEG

Proses pengujian dari filtering dan kompresi citra terdiri atas proses median filtering dan kompresi JPEG.

4.2.2.1 Tampilan Pr oses Median Filtering

Untuk melakukan proses filter median, citra hasil generate noise yang dilakukan sebelumnya diinputkan kedalam form testing. Selanjutnya tombol median filtering ditekan untuk melakukan proses filtering dengan median filter. Setelah tombol median filtering ditekan maka citra akan ditampilkan beserta hasil Mean Square Error (MSE),

Peak Signal to Noise Ratio (PSNR) dan setelah citra disimpan maka ukuran citra hasil

filtering ditampilkan. Tampilan hasil median filter dari noise salt and pepper dengan

nilai probabilitas 5% dapat dilihat pada gambar 4.9.

Gambar 4.9 Hasil Median Filtering Noise Salt and Pepper 5%

(60)

Tabel 4.2 Hasil Median Filter Citra Bernoise

Noise MSE PSNR (dB) Running Time (s)

Salt&Pepper 5%

24.686 34.2063 59.7858

Salt&Pepper 10%

38.7538 32.2477 67.8771

Salt&Pepper 15%

78.3621 29.1897 60.9103

Speckle 5%

(61)

Tabel 4.2 Hasil Median Filter Citra Bernoise (lanjutan)

Noise MSE PSNR(dB) Running Time(s)

Speckle 10%

119.526 27.3562 65.5097

Speckle 15%

403.438 22.073 63.5898

Dari hasil pengujian filtering terhadap kedua jenis noise dapat kita lihat pada tabel 8 secara visual bahwa filter median bekerja lebih baik terutama terhadap noise salt and pepper dengan penurunan MSE terbesar terjadi pada probabilitas noise 15% sebesar

7.975,9379 dan peningkatan PSNR sebesar 23.17718 dB.

4.2.2.2 Tampilan Pr oses Kompr esi J PEG

Setelah citra selesai difilter dengan menggunakan median filtering, selanjutnya dilakukan proses kompresi dengan menggunakan JPEG. Sebelum dimampatkan terlebih dahulu pilih level quality dari citra antara 1 – 10. Lalu lakukan proses kompresi dengan menekan tombol JPEG Compression. Untuk melihat persentase rasio dan ukuran citra hasil kompresi terlebih dahulu citra hasil kompresi harus disimpan.

(62)

Gambar 4.10 Tampilan hasil kompresi JPEG dengan level quality 1

Dari pengujian yang dilakukan terhadap beberapa level quality yang berbeda, hasil dari proses kompresi JPEG dapat dilihat pada tabel 4.3 berikut.

Tabel 4.3 Hasil Kompresi JPEG

Citra Terkompresi Level Quality R.Time (s) Rasio (%) Size (Kb) Hasil Filtering Speckle

5%

Q = 1 7.24714 98.9391 52.998

Hasil Filtering Salt and pepper 10%

(63)

Tabel 4.3 Hasil Kompresi JPEG (lanjutan)

Citra Terkompresi Level Quality R.Time(s) Rasio(%) Size(Kb) Hasil Filtering salt and

pepper 5%

Q = 6 7.92589 97.8346 119.494

Hasil Filtering speckel 10%

Q = 8 5.89843 97.4573 167

Hasil Filtering Salt and pepper 15%

Q = 10 7.60863 97.4156 181.449

(64)

Berdasarkan hasil pengujian dari implementasi metode median filtering dan kompresi JPEG , maka penulis mengambil kesimpulan sebagai berikut:

1. Berdasarkan pengujian yang telah dilakukan median filter memiliki kemampuan yang baik untuk mereduksi derau (noise) khususnya untuk noise dengan jenis salt and pepper, dimana dengan probabilitas noise sebesar 15% diperoleh tingkat

penurunan mean square error (MSE) terbesar yaitu 7.975,9379 dan peningkatan peak signal to noise ratio (PSNR) sebesar 23.17718 dB.

(65)

5.2 Sar an

Adapun saran – saran untuk pengembangan selanjutnya adalah:

1. Pada penelitian ini citra yang digunakan hanya berformat bitmap (BMP), dalam pengembangan selanjutnya dapat dilakukan percobaan terhadap jenis citra dengan format lain seperti .TIF, .JPEG, .ICO, .PNG, dan lain sebagainya.

(66)

BAB 2

LANDASAN TEORI

2.1 Pengenalan Citr a

Citra merupakan representasi (gambaran) dari sebuah objek nyata yang dihasilkan oleh alat digital. Citra sebagai keluaran suatu sistem perekaman data dapat bersifat optik berupa foto, bersifat analog berupa sinyal-sinyal video seperti gambar pada monitor televisi atau bersifat digital yang dapat langsung disimpan pada suatu media penyimpan [9]. Karakteristik dari citra yang tidak dimiliki oleh data teks adalah citra kaya akan informasi karena dapat menyampaikan informasi yang imajinatif (dapat dihayalkan).

2.1.1 Citra Analog

Citra analog merupakan citra yang bersifat kontinu. Citra analog ini tidak dapat langsung diproses dalam komputer, sehingga citra analog perlu proses konversi analog ke digital terlebih dahulu. Hal ini disebabkan karena citra analog yang terdiri dari sinyal – sinyal elektromagnetik yang tidak dapat dibedakan sehingga citra ini sulit ditentukan ukurannya. Contoh dari citra analog ini seperti citra tampilan pada televisi atau monitor, gambar – gambar atau lukisan, foto yang dicetak dikertas, dan lain sebagainya.

2.1.2 Citra Digital

(67)

merupakan representasi dari fungsi – fungsi kontinu menjadi nilai – nilai diskrit, sehingga disebut sebagai citra digital.

Citra kontinu dinyatakan dengan presisi angka tak terhingga, sedangkan citra diskrit dinyatakan dengan presisi angka terhingga. Karena komputer bekerja dengan angka-angka presisi terhingga, maka hanya citra dari kelas diskrit (citra digital) saja yang dapat diolah dengan komputer.

Suatu citra dapat didefinisikan sebagai fungsi f(x) berukuran MxN dimana M adalah baris dan N adalah kolom, dengan x dan y adalah koordinat spasial, dan amplitudo f di titik koordinat (x,y) dinamakan intensitas atau tingkat keabuan dari citra pada titik tersebut. Citra digital ditulis dalam bentuk matrik sebagai berikut.

Contoh dari sebuah citra digital dapat dilihat pada gambar 2.1

(68)

Citra digital terbagi atas 2 jenis, yaitu:

1. Tipe Raster

Citra raster merupakan citra yang terdiri atas persegi – persegi kecil yang memiliki warna tersendiri. Citra raster sering disebut sebagai bitmap. Tampilan raster mampu menunjukkan kehalusan gradasi warna dan bayangan dari sebuah gambar, oleh sebab itu tipe raster merupakan media elektronik yang paling tepat untuk gambar-gambar dengan perpaduan gradasi warna yang rumit, seperti foto dan lukisan digital.

Gambar raster sangat tergantung dengan resolusinya, karena setiap gambar mempunyai jumlah piksel yang pasti. Artinya sebuah gambar akan sangat tergantung dari jumlah piksel yang membentuknya. Apabila dilakukan pembesaran ukuran gambar dengan resolusi kecil, maka gambar akan kehilangan detil dan akan terlihat kotak-kotak piksel yang berundak (jagged). Beberapa format raster antara lain adalah JPEG, GIF, BMP, PNG dan ICO. Contoh tipe raster dilihat pada gambar 2.2 berikut.

Gambar 2.2 Contoh Citra Raster

2. Tipe Vektor

(69)

Beberapa format gambar vektor antara lain adalah CGM, SVG, SWF. Contoh tipe vektor dilihat pada gambar 2.3 berikut.

Gambar 2.3 Contoh Citra Vektor

2.1.3 J enis Citr a

Sebuah citra terdiri atas piksel – piksel penyusunnya, dimana nilai suatu piksel sebuah citra memiliki nilai dalam suatu rentang tertentu. Yaitu mulai dari nilai rentang minimum hingga rentang nilai maksimum. Tetapi secara umum rentang nilai piksel sebuah citra adalah 0 – 255. Berikut adalah jenis – jenis citra berdasarkan nilai pikselnya[6].

2.1.3.1 Citr a Biner

Citra biner merupakan citra digital yang hanya memiliki dua kemungkinan nilai piksel yaitu hitam dan putih. Citra biner juga disebut sebagai citra B&W (black and white) atau citra monokrom. Hanya dibutuhkan 1 bit untuk mewakili nilai setiap piksel dari citra biner. Pada gambar 2.4 berikut adalah contoh dari citra biner.

(70)

2.1.3.2 Citr a Grayscale

Citra grayscale merupakan citra digital yang hanya memiliki satu nilai kanal pada setiap piksel-nya, dengan kata lain nilai bagian RED = GREEN = BLUE. Nilai tersebut digunakan untuk menunjukkan tingkat intensitas. Warna yang dimiliki adalah warna dari hitam, keabuan, dan putih. Tingkatan keabuan di sini merupakan warna abu dengan berbagai tingkatan dari hitam hingga mendekati putih. Citra grayscale berikut memiliki kedalaman warna 8 bit (256 kombinasi warna keabuan). Contoh dari citra grayscale dapat dilihat pada gambar 2.5 berikut.

Gambar 2.5 Citra Grayscale

2.1.3.3 Citr a War na (8 bit)

Setiap piksel dari citra warna (8 bit) hanya di wakili oleh 8 bit dengan jumlah warna maksimum yang dapat digunakan adalah 256 warna. Ada dua jenis citra warna 8 bit. Pertama, citra warna 8 bit dengan menggunakan palet warna 256 dengan setiap paletnya memiliki pemetaan nilai (colormap) RGB tertentu. Model ini lebih sering digunakan. Kedua, setiap piksel memiliki format 8 bit seperti tabel 2.1 berikut.

Tabel 2.1 Format bit citra 8 bit

Bit-7 Bit-6 Bit-5 Bit-4 Bit-3 Bit-2 Bit-1 Bit-0

(71)

Contoh dari citra warna 8 bit dapat dilihat pada gambar 2.6 berikut.

Gambar 2.6 Citra 8 bit

2.1.3.4 Citr a War na (16 bit)

Citra warna 16 bit (biasanya disebut sebagai citra highcolor ) dengan setiap piksel-nya diwakili dengan 2 byte memory (16 bit).Warna 16 Bit memiliki 65.536 warna. Dalam formasi bitnya, nilai merah dan biru mengambil tempat di 5 bit di kanan dan kiri. Komponen hijau memiliki 5 bit ditambah 1 bit ekstra. Pemilihan komponen hijau dengan deret 6 bit dikarenakan penglihatan manusia lebih sensitif terhadap warna hijau. Berikut pada tabel 2.2 formasi bit citra 16 bit.

Tabel 2.2 Formasi bit citra 16 bit Bit

15 Bit 14

Bit 13

Bit 12

Bit 11

Bit 10

Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

(72)

Pada gambar 2.7 berikut adalah contoh dari citra warna 16 bit.

Gambar 2.7 Citra 16 bit

2.1.3.5 Citr a War na (24 bit)

Setiap piksel dari citra warna 24 bit diwakili dengan 24 bit sehingga total 16.777.216 variasi warna. Variasi ini sudah lebih dari cukup untuk memvisualisasikan seluruh warna yang dapat dilihat penglihatan manusia. Penglihatan manusia dipercaya hanya dapat membedakan hingga 10 juta warna saja. Setiap poin informasi piksel (RGB) disimpan ke dalam 1 byte data. 8 bit pertama menyimpan nilai biru, kemudian diikuti dengan nilai Hijau pada 8 bit kedua dan pada 8 bit terakhir merupakan warna merah. Contoh dari citra warna 24 bit dapat kita lihat pada gambar 2.8 berikut.

Gambar 2.8 Citra 24 bit

2.1.4 For mat File Citra

(73)

format memiliki karakteristik masing – masing. Beberapa format yang umum digunakan adalah bitmap, tagged image format(.tif), portable network graphics(.png), jpeg, mpeg, graphics interchange format(.gif), dan lain sebagainya. Dalam penelitian ini jenis file yang akan dibahas adalah bitmap(BMP).

2.1.4.1 Format File Citr a Bitmap (BMP)

Format file BMP merupakan format penyimpanan standar tanpa kompresi yang umum dapat digunakan untuk menyimpan citra biner hingga citra warna [6]. Pada format BMP, citra disimpan sebagai matrik yang tiap elemennya digunakan untuk menyimpan informasi warna untuk setiap piksel. Susunan bit – bit warna pada citra BMP membentuk pola tertentu yang menyajikan informasi yang dapat dipahami sesuai dengan persepsi penglihatan manusia. Citra BMP mampu menyimpan informasi dengan kualitas mulai dari 1 bit hingga 24 bit. Citra dalam format BMP lebih bagus dari pada citra dalam format JPG, karena pada umumnya citra BMP tidak dimampatkan sehingga tidak ada informasi yang hilang. Citra BMP cocok digunakan untuk menyimpan citra digital yang memiliki banyak variasi dalam bentuknya maupun warnanya, seperti foto, lukisan, dan frame video.

Citra dalam format BMP mudah untuk dibuka dan disimpan, tetapi ada beberapa hal yang harus dicermati yaitu :

1 Format file BMP menyimpan datanya secara terbalik, yaitu dari bawah keatas. 2 Citra dengan ukuran warna 8 bit, lebar citra harus kelipatan dari 4 bila tidak

maka pada saat penyimpanan akan ditambahkan beberapa byte pada data hingga merupakan kelipatan dari 4.

3 Citra dengan ukuran warna 24 bit, urutan penyimpanan 3 wrna dasar adalah red, green, blue (RGB).

(74)

2.2 Noise

Noise merupakan gangguan yang disebabkan oleh menyimpangnya data digital yang

diterima oleh alat penerima gambar yang dapat mengganggu kualitas citra. Gangguan pada citra umumnya berupa variasi intensitas suatu piksel yang tidak berkorelasi dengan piksel – piksel tetangganya [12]. Jenis noise yang dibahas pada penelitian ini adalah salt and pepper noise dan speckle noise.

2.2.1 Salt and Pepper Noise

Salt and pepper noise merupakan noise yang terlihat seperti titik – titik hitam dan

putih pada sebuah citra menyerupai tebaran garam dan merica. Salt and pepper noise disebabkan karena terjadinya error bit dalam pengiriman data, piksel – piksel yang tidak berfungsi dan kerusakan pada lokasi memori [8]. Untuk menguji sebuah metode agar dapat mereduksi noise, maka noise dapat dihasilkan dengan cara membangkitkan noise tersebut, hal ini sering disebut dengan noise generator.

Gambar 2.10 Citra setelah terkena salt and pepper noise

Adapun cara untuk membangkitkan salt and pepper noise adalah dengan cara membangkitkan bilangan 255 (warna putih) pada titik –titik yang secara probabilitas noise, dan dirumuskan dengan:

(75)

Dimana :

f(x,y) : adalah nilai piksel citra pada titik (x,y) p(x,y) : adalah probabilitas acak

2.2.2 Speckle Noise

Speckle noise merupakan jenis noise yang memberikan warna hitam pada titik yang

terkena noise.

Gambar 2.12 Citra setelah terkena speckle noise

Noise ini dibangkitkan dengan cara membangkitkan bilangan 0(warna hitam)

pada titik – titik yang secara probabilitas lebih kecil dari nilai probabilitas noise, dan dirumuskan dengan :

Dimana :

f(x,y) : adalah nilai piksel citra pada titik (x,y) p(x,y) : adalah probabilitas acak

f (x,y) = 0 jika p (x,y) <= Prob.Noise/2 f (x,y) = 255 jika p (x,y) >1 – Prob.Noise/2

--- 2.1

--- 2.2 f (x,y) = 0 jika p (x,y) <= Prob.Noise

(76)

2.3 Filtering

Filtering adalah salah satu teknik untuk memodifikasi atau meningkatkan mutu citra

[4]. Filtering ini bertujuan untuk mereduksi noise pada sebuah citra. Terdapat beberapa metode atau teknik yang dapat digunakan pada filtering, antara lain:

1. Non-linear filtering, memiliki karakteristik beroperasi secara langsung pada intensitas piksel dari lokal suatu citra, sehingga filter non-linear dapat mengurangi efek noise yang bersifat acak. Jenis filtering yang termasuk dalam filter non-linear adalah mean, median, dan modus filtering.

2. Linier filtering, terbagi menjadi dua yaitu brightness filtering dan darkness filtering.

3. Noise Reduction, terbagi menjadi dua yakni intensity filtering dan frequency filtering.

Pada penelitian kali ini jenis filtering yang akan dibahas adalah median filtering.

2.3.1 Median Filtering

Salah satu teknik untuk mengurangi / mereduksi noise pada citra digital adalah menggunakan filter median dimana metode yang menitik beratkan pada nilai median atau tengah dari jumlah total nilai keseluruhan piksel yang ada di sekelilingnya [13]. Median filter mempunyai beberapa kelebihan, antara lain:

1. Mudah untuk dipelajari.

2. Karena nilai median harus merupakan nilai dari salah satu piksel pada neighborhood, median filter tidak akan membuat nilai piksel yang baru. Dalam

(77)

3. Median filter sangat baik digunakan untuk mereduksi noise yang memberikan warna hitam ataupun putih pada citra seperti jenis impulse noise yaitu salt and pepper noise.

4. Median filter merupakan salah satu jenis order – statistic filter yang terkenal karena untuk jenis noise tertentu median mampu mereduksi noise dengan sangat baik, dengan tingkat kekaburan citra yang sangat kecil daripada linear smoothing filter dari ukuran yang sama.

Untuk mencari median dari kumpulan data yang ganjil adalah sebagai berikut :

Keterangan :

n = jumlah data x = nilai baru median

Untuk filter median, data yang digunakan adalah data dengan jumlah yang ganjil. Disebabkan karena dengan jumlah data yang ganjil maka piksel yang akan diproses dapat berada ditengah. Lalu data tersebut diurutkan serta dimasukkan ke dalam matrik baru yang berukuran 1 baris x (NxN) kolom, dengan tujuan untuk mempermudah menemukan median dari kumpulan data yang telah urut tersebut.

Sebagai contoh, misalnya ada sebuah matrik citra berukuran 3x3 yang berisi piksel - piksel penyusunnya sebagai berikut (tabel 2.3):

Tabel 2.3 Matrik untuk median filtering

10 7 10

9 11 12

6 14 5

(78)

Matrik tersebut harus diurut terlebih dahulu dan dimasukkan ke dalam sebuah matrik yang berukuran 1 baris x(3x3) kolom (tabel 2.4):

Tabel 2.4 Matrik untuk median filtering setelah diurutkan

5 6 7 9 10 10 11 12 14

Dari gambar matrik yang telah diurutkan dapat dicari nilai piksel yang baru, dari tabel 2.2 nilai mediannya adalah 10. Nilai 10 ini akan menggantikan nilai 11 (pada tabel 2.3) sehingga warna pada piksel utamanya akan berbeda dari yang sebelumnya. Berikut adalah matrik hasil dari median filtering (tabel 2.5).

Tabel 2.5 Matrik hasil median filtering

10 7 10

9 10 12

6 14 5

2.4 Kompr esi

Proses kompresi merupakan proses mereduksi ukuran suatu data untuk menghasilkan representasi digital yang padat atau mampat (compact) namun tetap dapat mewakili kuantitas informasi yang terkandung pada data tersebut [6]. Kompresi bertujuan untuk memperkecil ukuran memori penyimpanan sebuah data serta mempercepat transmisi pengiriman data. Kompresi terbagi menjadi dua bagian, yaitu kompresi yang bersifat loseless dimana informasi yang dimiliki oleh citra hasil kompresi sama dengan

informasi pada citra asli. Contoh dari jenis kompresi ini antara lain Run Length Encoding (RLE), Entropy Encoding (Huffman, aritmatik), dan Adaptive Dictionary

Based (LZW). Jenis kompresi yang kedua adalah lossy dimana informasi citra hasil

(79)

nya adalah color reduction, chroma subsampling, dan transform coding seperti transformasi Wavelet, Fourier, JPEG, dan lain-lain.

Jenis kompresi yang digunakan oleh penulis dalam penelitian ini adalah jenis kompresi yang bersifat lossy yakni kompresi JPEG (Joint Photographic Experts Group).

2.4.1 Klasifikasi Teknik Kompr esi

Terdapat beberapa pembagian dari jenis – jenis teknik kompresi, antara lain:

1. Entropy Encoding, teknik kompresi ini bersifat loseless, tekniknya tidak berdasarkan pada media dengan tingkat spesifikasi dan karakteristik tertentu namun berdasarkan urutan data. Contohnya Run length coding, Huffman coding, dan Arithmetic coding.

2. Source Coding, teknik ini bersifat lossy berkaitan dengan data semantik (makna kata) dan media. Contohnya transformation (FFT, DCT), layered coding (Bit position, subsampling), vector quantization.

3. Hybrid Coding, teknik merupakan gabungan dari jenis kompresi lossy dan loseless. Contohnya teknik kompresi JPEG, MPEG, dan lain sebagainya.

2.4.2 Rasio Kompr esi Citra

Rasio kompresi merupakan ukuran presentasi citra yang berhasil dikompres / dimampatkan. Secara matematis rasio pemampatan citra dapat dirumuskan pada rumus 2.4:

(80)

Misalkan hasil rasio kompresi citra bernilai 30%, artinya 30% dari citra semula telah berhasil dimampatkan. Semakin tinggi tingkat rasio maka semakin baik hasil kompresi citra tersebut.

2.4.3 Data Berlebihan (Data Redundancy)

Data berlebihan merupakan sebuah isu penting dalam kompresi citra. Data berlebihan ini dapat dinyatakan dalam fungsi matematis. Bila n1 dan n2 menyatakan jumlah satuan (unit) informasi data yang membawa masing – masing unit dalam gambar asli dan dikompresi, maka data berlebihan relative (relative data redundancy) RD dari gambar asli dapat dinyatakan sebagai berikut [6].

Dengan CR merupakan rasio kompresi (compression ratio) yang dinyatakan sebagai berikut.

Terdapat tiga kemungkinan yang ada [3]:

1. Jika n1 = n2 maka CR =1 dan RD = 0, berarti gambar asli tidak mengandung redundansi diantara piksel.

2. Jika n1 >> n2 , maka CR ∞ dan R D >1, berarti cukup banyak redundansi dalam gambar asli.

3. Jika n1 << n2 maka CR > 0 dan RD ∞ menunjukkan bahwa citra dikompresi mengandung data berlebihan sangat tinggi.

--- 2.5

(81)

2.4.4 Kompr esi J PEG (Joint Photographic Experts Group)

Algoritma kompresi yang telah dikembangkan dan diterapkan pada teknologi informasi dan komunikasi multimedia saat ini adalah algoritma JPEG untuk kompresi citra [7]. Kompresi JPEG termasuk jenis kompresi yang bersifat lossy. Tujuan dari kompresi gambar JPEG sederhana yaitu untuk menyimpan data yang diperlukan guna merekonstruksi citra digital menggunakan ruang sesekecil mungkin dengan tetap menjaga detail visual sehingga menyimpan gambar mendekati sebenarnya [5]. Adapun kelebihan yang dimiliki oleh JPEG antara lain:

1. JPEG mampu memampatkan citra hingga kedalaman 24 bit (16,7 juta warna) dengan kecepatan yang standar sehingga hasil yang maksimal dari sebuah gambar dapat diperoleh.

2. JPEG memanfaatkan pola pada citra untuk mereduksi informasi pada citra yang tidak memberikan dampak yang mempengaruhi kualitas citra.

3. JPEG mampu memampatkan citra grayscale hingga warna seperti RGB, CMYK.

Tahapan kompresi JPEG [1]:

1. Encoding JPEG, Pada proses penyandian terdapat beberapa langkah seperti berikut.

a. Konversi warna RGB YCbCr

b. Downsampling, merupakan proses pengurangan pada komponen Cb dan Cr. c. Block Splitting, pada proses ini citra dibagi menjadi 8x8 blok setelah proses

downsampling.

(82)

memampatkan jumlah bit dalam setiap piksel melalui pengurangan atau penghilangan detil informasi (frekuensi tinggi).

e. Kuantisasi, merupakan proses pembagian setiap nilai piksel hasil DCT dengan setiap nilai konstanta elemen matrik kuantisasi, dimana nilai-nilai setiap elemen matrik tersebut menentukan kualitas hasil kompresi. Pada proses ini dilakukan pembersihan koefisien DCT yang tidak penting untuk pembentukan image baru. Hal ini yang menyebabkan JPEG bersifat lossy. f. Entropy Coding, merupakan proses penggunaan algoritma entropy seperti Huffman Coding untuk mengkodekan koefisien hasil proses DCT yang akan

mengeliminasi nilai – nilai matrik yang bernilai nol secara zig – zag order.

2. Decoding JPEG, proses menguraikan kode untuk menampilkan citra yang dilakukan dengan invers dari proses encoding JPEG yaitu Huffman decoding, dekuantisasi, invers DCT, konversi YCbCr RGB.

Diagram kompresi dari metode JPEG dapat dilihat pada gambar 2.13 .

Gambar 2.13 JPEG Encoder Block Diagram

Dalam proses penyandian JPEG pada Gambar 2.14, citra masukan dibentuk ke dalam blok 8×8, dan tiap-tiap blok diubah dengan DCT maju (FDCT) menjadi satu set 64 nilai yang disebut koefisien DCT. Satu dari nilai-nilai ini adalah koefisien DC dan selebihnya adalah koefisien AC. Tiap-tiap nilai koefisien DCT kemudian dikuantisasi menggunakan satu dari 64 nilai yang saling berhubungan dari sebuah tabel kuantisasi. Koefisien-koefisien yang telah dikuantisasi kemudian diproses dengan penyandian

Quant izer Ent ropi Encoder

Gambar

Gambar 3.3 JPEG default luma Huffman table for DC coefficient
Gambar 3.5 JPEG size, category and amplitude range of AC coefficients
Tabel 3.4 Spesifikasi Use Case Generate Noise
Tabel 3.5 Spesifikasi Use Case Filtering dan Kompresi Citra
+7

Referensi

Dokumen terkait

Pembelajaran (kegiatan pengembangan) matematika di TK, seperti juga membaca dan menulis memang sebaiknya tidak diajarkan di TK, tetapi kegiatan pengembangan.. tersebut

PEMERINTAH PROVINSI JAWA TENGAH..

Bagi penyedia barang/jasa lainnya yang merasa tidak puas terhadap penetapan pemenang pelelangan ini diberi kesempatan untuk megajukan sanggahan secara tertulis

Selаnjutnyа sidаng pаdа Penggаdilаn Tinggi Medаn dаlаm pertimbаngаn hukum menyаmpаikаn, bаhwа permohonаn bаnding yаng diаjukаn oleh Kuаsа Hukum

Tujuan dari penelitian ini adalah mendapatkan karakteristik data volume pemakaian air PDAM Kota Surabaya, mendapatkan model peramalan terbaik dari data volume

Dari hasil penelitian ini, diketahui pula peran organisasi berpengaruh dalam mewujudkan penurunan tingkat kecelakaan, kenaikan produktifitas, penghematan biaya, dan

Simpulan penelitian ini adalah penerapan model Numbered Heads Together berbantuan media gambar dapat meningkatkan hasil belajar matematika.. Peneliti menyampaikan beberapa

Hasil penelitian ini dapat disimpulkan bahwa: Mengembangkan sikap Nasionalisme siswa dalam pembelajaran PKn di SMP Negeri 15 Palu sudah berjalan cukup baik, hal