Ekstraksi Histogram Citra Digital Untuk Mengukur Similarity dengan Menggunakan Metode Euclidian Distance
Anggota Kelompok
1. Hapsari Dita A
J2F008033
2. Harlina Nur A
J2F008034
3. Luk Luul M
J2F008042
4. Nikmah Rahmawati
J2F008054
Program Studi Teknik Informatika Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Diponegoro 2011
ABSTRAK Image index and retrieval merupakan salah satu bagian dari multimedia database. Salah satu teknik pengolahan citra digital adalah perhitungan histogram dan perhitungan similarity dari citra-citra digital tersebut sehingga dapat menghasilkan nilai similarity. Hal ini merupakan dasar dari sistem content based index and retrieval khususnya dalam data citra digital. Dengan menggunakan vektor space dan euclidian distance dapat menghasilkan nilai similarity dari citra-citra digital tersebut.
Keyword : citra digital, histogram, index and retrieval, content based index and retrieval system, similarity, vektor space, euclidian distance
BAB I PENDAHULUAN Salah satu dari kemampuan komputer multimedia yang berkembang saat ini adalah penyimpanan citra digital. Penyimpanan citra digital ini dapat dilakukan dalam berbagai format. Citra digital adalah representasi dua dimensi untuk bentuk fisik nyata tiga dimensi. Dengan semakin banyaknya penggunaan citra digital dalam keperluan manusia sebagai pengguna, maka semakin banyak aplikasi-aplikasi pengolahan citra digital. Salah satu teknik pengolahan citra digital adalah ekstraksi histogram dari citra digital. Histogram adalah tampilan grafis dari tabulasi frekuensi yang digambarkan dengan grafis batangan sebagai manifestasi data. Tiap tampilan batang menunjukkan proporsi frekuensi pada masing-masing deret kategori yang berdampingan dengan interval yang tidak tumpang tindih. Untuk dapat melakukan index dan retrieval dari citra digital diperlukan suatu metode yang dapat menghitung kemiripan suatu citra dengan citra yang lain.
BAB II DASAR TEORI 2.1. Citra Digital Citra adalah representasi dua dimensi untuk bentuk fisik nyata tiga dimensi. Citra dalam perwujudannya dapat bermacam-macam, mulai dari gambar hitam-putih pada sebuah foto (yang tidak bergerak) sampai pada gambar berwarna yang bergerak pada pesawat televisi. Proses transformasi dari bentuk tiga dimensi ke bentuk dua dimensi untuk menghasilkan citra akan dipengaruhi oleh bermacam-macam faktor yang mengakibatkan penampilan citra suatu benda tidak sama persis dengan bentuk fisik nyatanya. Faktor-faktor tersebut merupakan efek degradasi atau penurunan kualitas yang dapat berupa rentang kontras benda yang terlalu sempit atau terlalu lebar, distorsi geometrik, kekaburan (blur), kekaburan akibat obyek yang bergerak (motion blur), noise atau gangguan yang disebabkan oleh interferensi peralatan pembuat citra, baik berupa transduser, peralatan elektronik ataupun peralatan optik. Teknik dan proses untuk mengurangi atau menghilangkan efek degradasi pada citra digital meliputi perbaikan/peningkatan citra (image enhancement), restorasi citra (image restoration), dan tranformasi spasial (spasial transformation). Subyek lain dari pengolahan citra digital diantaranya adalah pengkodean citra (image coding), segmentasi citra (image segmentation), representasi dan deskripsi citra (image representation and description). Pengolahan citra dilakukan dengan komputer digital maka citra yang akan diolah terlebih dahulu ditransformasikan ke dalam bentuk besaran-besaran diskrit dari nilai tingkat keabuan pada titik-titik elemen citra. Bentuk citra ini disebut citra digital. Setiap citra digital memiliki beberapa karakteristik, antara lain ukuran citra, resolusi dan format lainnya. Umumnya citra digital berbentuk persegi panjang yang memiliki lebar dan tinggi tertentu, yang biasanya dinyatakan dalam banyaknya titik atau piksel (picture elemen/pixel). Ukuran citra dapat juga dinyatakan secara fisik dalam satuan panjang (misalnya mm atau inch). Dalam hal ini tentu saja harus ada hubungan antara ukuran titik penyusun citra dengan satuan panjang. Hal tersebut dinyatakan dengan resolusi yang merupakan ukuran banyaknya titik untuk setiap satuan panjang. Biasanya satuan yang digunakan adalah dpi (dot per inch). Makin besar resolusi makin banyak titik yang terkandung dalam citra dengan ukuran fisik yang sama. Hal ini memberikan efek penampakan citra menjadi semakin halus.
Format
citra
digital
ada
bermacam-macam.
Karena
sebenarnya
citra
merepresentasikan informasi tertentu, sedangkan informasi tersebut dapat dinyatakan secara bervariasi, maka citra yang mewakilinya dapat muncul dalam berbagai format. Citra yang merepresentasikan informasi yang hanya bersifat biner untuk membedakan 2 keadaan tentu tidak sama citra dengan informasi yang lebih kompleks sehingga memerlukan lebih banyak keadaan yang diwakilinya. Pada citra digital semua informasi tadi disimpan dalam bentuk angka, sedangkan penampilan angka tersebut biasanya dikaitkan dengan warna. Citra digital (digital image) adalah citra kontinyu f(x,y) yang sudah didiskritkan baik koordinat spasial maupun tingkat kecerahannya. Setiap titik biasanya memiliki koordinat sesuai dengan posisinya dalam citra. Koordinat ini biasanya dinyatakan indeks x dan y hanya bernilai bilangan bulat positif, yang dapat dimulai dari 0 atau 1. Citra digital yang selanjutnya akan disingkat ”citra” sebagai matrik ukuran M x N yang baris dan kolomnya menunjukkan titik-titiknya yang diperlihatkan pada persamaan sebagai berikut :
Setiap titik juga memiliki nilai berupa angka digital yang merepresentasikan informasi yang diwakili titk tersebut. Format nilai piksel sama dengan format citra keseluruhan. Pada kebanyakan sistem pencitraan, nilai ini biasanya berupa bilangan bulat positif.
2.2. Representasi Citra Digital Komputer dapat mengolah isyarat-isyarat elektronik digital yang merupakan kumpulan sinyal biner (bernilai dua: 0 dan 1). Untuk itu, citra digital harus mempunyai format tertentu yang sesuai sehingga dapat merepresentasikan obyek pencitraan dalam bentuk kombinasi data biner. Citra yang tidak berwarna atau hitam putih dikenal sebagai citra dengan derajat abuabu (citra graylevel/grayscale). Derajat abu-abu yang dimiliki ini bisa beragam mulai dari 2 derajat abu-abu (yaitu 0 dan 1) yang dikenal juga sebagai citra monochrome, 16 derajat keabuan dan 256 derajat keabuan. Dalam sebuah citra monochrome, sebuah piksel diwakili oleh 1 bit data yang berisikan data tentang derajat keabuan yang dimiliki piksel tersebut. Data akan berisi 0 bila piksel berwarna hitam dan 1 bila piksel berwarna putih. Citra yang memiliki 16 derajat keabuan (mulai dari 0 yang mewakili warna hitam sampai dengan 15 yang mewakili warna
putih) direpresentasikan oleh 4 bit data. Sedangkan citra dengan 256 derajat keabuan (nilai dari 0 yang mewakili warna hitam sampai dengan 255 yang mewakili warna putih) direpresentasikan oleh 8 bit data. Dalam citra berwarna, jumlah warna bisa beragam mulai dari 16, 256, 65536 atau 16 juta warna yang masing-masing direpresentasikan oleh 4,8,16 atau 24 bit data untuk setiap pikselnya. Warna yang ada terdiri dari 3 komponen utama yaitu nilai merah (red), nilai hijau (green) dan nilai biru (blue). Paduan ketiga komponen utama pembentuk warna tersebut dikenal sebagai RGB color yang nantinya akan membentuk citra warna.
2.3. Histogram Kata histogram berasal dari bahasa Yunani: histos dan gramma. Pertama kali digunakan oleh Karl Pearson pada tahun 1895 untuk memetakan distribusi frekuensi dengan luasan area grafis batangan menunjukkan proporsi banyak frekuensi yang terjadi pada tiap kategori. Histogram citra adalah grafik yang menggambarkan penyebaran nilai-nilai intensitas pixel dari suatu citra atau bagian tertentu di dalam citra. Histogram juga dapat menunjukkan banyak hal tentang kecerahan (brightness) dan kontras (contrast) dari sebuah gambar. Secara grafis histogram ditampilkan dengan diagram batang. Misal citra digital memiliki L derajat keabuan. (misalnya citra dengan kuantisasi derajat keabuan 8- bit, nilai derajat keabuan dari 0 – 255) secara matematis dapat dihitung dengan rumus :
Dimana ni = jumlah pixel yang memiliki derajat keabuan i dan n = jumlah seluruh pixel di dalam citra Sebagai contoh, berikut merupakan matrik citra berukuran 8 x 8 dengan derajat keabuan dari 0 sampai 15 ( ada 16 buah derajat keabuan).
Data citra digital di atas kemudian hitung distribusi frekuensi dari data citra digital tersebut dan nilai histogram yang kemudian akan dipakai untuk perhitungan similarity. Tabel 1 merupakan tabel distribusi frekuensi dan nilai similarity dari data citra digital diatas. Untuk dapat melakukan perhitungan distribusi frekuensi dan perhitungan nilai histogram, dikembangkan algoritma untuk melakukan hal tersebut. Berikut merupakan algoritma histogram :
2.4. Pengukuran Kemiripan Citra Digital dengan Teknik Euclidean distance dalam Ruang Vektor Dalam matematika, euclidean distance atau adalah jarak antara dua titik yang dapat diukur dan dihasilkan oleh formula pytagoras. Euclidean vector atau sering hanya disebut dengan vector adalah obyek geometri yang memiliki panjang (magnitude) dan arah (direction). Sedangkan ruang vektor adalah sebuah structur matematika yang dibentuk oleh sekumpulan vektor. Vektor-vektor tersebut dapat ditambahkan, dikalikan dengan bilangan real dan lain-lain. Gambar 1 merupakan contoh dari ruang vektor, pada ruang vektor tersebut terdapat 2 vektor yaitu vektor A dan vektor B. Untuk menghitung jarak antara vektor A dan vektor B digunakan persamaan euclidean distance. Berikut merupakan penyelesaian dalam menghitung jarak antara vektor A dan vektor B. Panjang vektor A dan B dapat didefinisikan sebagai berikut:
Dengan demikian, untuk menghitung jarak antara kedua vektor tersebut menggunakan persamaan sebagai berikut :
Sedangkan untuk n dimensi ruang vektor, jarak euclidean distance ditentukan dengan menggunakan persamaan sebagai berikut :
Akan tetapi dalam implementasi pada makalah ini hanya menggunakan perhitungan euclidean distance pada ruang vektor 2 dimensi. Nilai euclidean distance merupakan nilai kemiripan citra digital. Semakin dekat (mendekati nilai 0) semakin mirip citra digital tersebut.
BAB III METODE Dalam menyelesaikan permasalahan ekstraksi dan perhitungan nilai similarity dikembangkan perangat lunak untuk menghitung dan meng-generate histogram berdasarkan algoritma yang dikembangkan diatas. Kemudian nilai histogram tersebut diolah kembali untuk menghasilkan nilai similarity dari citra digital tersebut. Proses diawali dengan pembacaan dua citra digital *.jpg, *.bmp, *.png, *.tif'. kemudian dari pembacaan file tersebut data diolah untuk meng-generate histogram dengan algoritma yang dikembangkan dan perhitungan nilai similarity dengan menggunakan metode euclidean distance untuk menghasilkan nilai similarity.
BAB IV IMPLEMENTASI DAN PENGUJIAN 4.1. Implementasi Pada tahap ini dilakukan pengembangan perangkat lunak untuk menghitung kemiripan citra digital. Citra digital yang dapat dihitung kemiripan dalam perangkat lunak ini adalah sinyal suara berformat *.jpg, *.bmp, *.png, *.tif'. Dalam melakukan analisis sinyal suara, penulis menggunakan tools yang banyak dipakai untuk visualisasi data-data yaitu dengan menggunakan Matlab.
Potongan kode program tersebut merupakan proses pembacaan file citra digital yang kemudian di standarisasi ukurannya menjadi (600x800).
Pada proses ini, dilakukan perhitungan nilai histogram dan meng-generate histogram dari citra. Proses perhitungan ini dilakukan pada fungsi Histogram
Dalam kode ini, dilakukan proses perhitungan nilai similarity. Perhitungan ini hanya mencari jumlah dari selisih nilai-nilai histogram yang bersesuaian karena vektor yang terbentuk dari citra digital adalah vektor satu dimensi.
4.2. Pengujian Untuk dapat membuktikan keakuratan metode ini, penulis menguji dengan membandingkan dua file *.jpg dan membandingkan satu file *.jpg dengan dirinya sendiri. Setelah dilakukan pengujian hasil dari perbandingan antara dua file *.jpg menghasilkan nilai 1,03863 dan hasil perbandingan antara satu file *.jpg dengan dirinya sendiri menghasilkan nilai 0. Nilai nol merupakan nilai similarity yang dihasilkan apabila
satu file *.wav dibandingkan dengan dirinya sendiri (identik). Gambar 3 dan 4 menunjukan hasil perhitungan nilai similarity.
BAB V KESIMPULAN Histogram merupakan representasi grafik dari persebaran nilai derajat keabuan dari sebuah citra digital. Euclidean distance merupakan teknik berbasis vektor space yang dapat digunakan untuk menghitung nilai similarity dari dua sinyal digital yang dibandingkan. Perhitungan similarity dengan menggunakan teknik histogram akan bernilai mendekati 0 pada gambar yang sama meskipun gambar dibalik sekalipun.
DAFTAR PUSTAKA
-
Lu, Guojun. 1963. “Multimedia Database Manajemen Systems. Artech House: Norwood
-
Supatman. 2009. “Deteksi Pembesaran Kelenjar Getah Bening pada Paru dengan Pengolahan
Citra
Digital
untuk
Mendiagnosa
Penyakit
Primer
Kompleks
Tuberkulosis (PKTB)”. Seminar Nasional Aplikasi Teknologi Informasi 2009 (SNATI 2009) Jurusan Teknik Informatika, Fakultas Teknologi Industri, Universitas Islam Indonesia Yogyakarta. -
Istachotil Jannah, Suci. (2010) “Implementasi Fungsi Histogram Equalization pada Matlab”
-
Munir, Rinaldi. 2005. Pengolahan Citra Digital Dengan Pendekatan Algoritmik Bandung: Informatika.
LAMPIRAN PRINTSCREEN DAN SOURCE CODE
a. Antarmuka Program
b. Source Code function varargout = sm(varargin) % SM M-file for sm.fig % SM, by itself, creates a new SM or raises the existing % singleton*. % % H = SM returns the handle to a new SM or the handle to % the existing singleton*. % % SM('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in SM.M with the given input arguments. % % SM('Property','Value',...) creates a new SM or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before sm_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to sm_OpeningFcn via varargin. %
% *See GUI Options on GUIDE's Tools menu. % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES
Choose "GUI allows only one
% Edit the above text to modify the response to help sm % Last Modified by GUIDE v2.5 09-Oct-2011 15:47:59 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @sm_OpeningFcn, ... 'gui_OutputFcn', @sm_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); 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 % End initialization code - DO NOT EDIT
% --- Executes just before sm is made visible. function sm_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to sm (see VARARGIN) % Choose default command line output for sm handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes sm wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. function varargout = sm_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output;
% --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [gambar, letak]= uigetfile({'*.jpg';'*.bmp';'*.png';'*.tif'}, 'Pilih Gambar'); aslil = imread([letak, gambar]); aslil = imresize(aslil,[600 800]); [m n] = size(aslil); axes(handles.citra1); imshow(aslil); handles.aslil = aslil;
%TAMPILKAN HISTOGRAM if size(aslil,3)==1 [f1] = histogram(aslil); absis = 0:1:255; axes(handles.hist1) bar(f1); bb = f1; handles.his1 = bb; %plot(absis,f1,'k') grid on else [f1] = histogram(aslil(:,:,1)); [f2] = histogram(aslil(:,:,2)); [f3] = histogram(aslil(:,:,3)); absis = 0:1:255; axes(handles.hist1) bar(f2); bb = f2; handles.his1 = bb; %plot(absis,f1,'r',absis,f2,'g',absis,f3,'b') grid on end; guidata(hObject, handles); function [f]=histogram(cit) % fungsi lokal untuk menghitung histogram citra [m n]=size(cit); citra=double(cit); for i=1:256, f(i)=0; end; for j=1:m, for k=1:n, f(round(citra(j,k))+1)=f(round(citra(j,k))+1)+1; end; end;
% --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [gambar, letak]= uigetfile({'*.jpg';'*.bmp';'*.png';'*.tif'}, 'Pilih Gambar'); aslil = imread([letak, gambar]);
aslil = imresize(aslil,[600 800]); [m n] = size(aslil); axes(handles.citra2); imshow(aslil); handles.aslil = aslil; tes = 'sesuatu'; handles.tes = tes; %TAMPILKAN HISTOGRAM if size(aslil,3)==1 [f1] = histogram(aslil); absis = 0:1:255; axes(handles.hist2) bar(f1); %plot(absis,f1,'k') aa = f1; handles.his2 = aa; grid on else [f1] = histogram(aslil(:,:,1)); [f2] = histogram(aslil(:,:,2)); [f3] = histogram(aslil(:,:,3)); absis = 0:1:255; axes(handles.hist2) bar(f2); aa = f2; handles.his2 = aa; %plot(absis,f1,'r',absis,f2,'g',absis,f3,'b') grid on end; guidata(hObject, handles);
% --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %text5 = handles.text5; %his1 = handles.his1; %his3 = handles.his2; [m1 n1] = size(handles.his1) %[m2 n2] = size(his2); sim = sum( abs(handles.his2-handles.his1) ); %jumlah = 0; %for j=1:m1, % jumlah = jumlah + pow2(handles.his1(j)-handles.his2(j)); %end; set(handles.text5,'String',sqrt(sim));
c.
Hasil Uji 1. Gambar berbeda
Apabila gambar pada citra 1 dan citra 2 sangat berbeda, maka similarity sangat menjauhi angka 0, yaitu 574.052.
2. Gambar sama
Apabila gambar pada citra 1 dan citra 2 sama persis, maka similarity menunjukkan nilai 0, yang berarti gambar mirip dan serupa.
3. Gambar di rotasi
Gambar pada citra 1 dan citra 2 (hasil rotasi dari citra 1), maka similarity menunjukkan nilai yang mendekati 0 yaitu 153.773, yang berarti gambar hampir mirip.