Anda di halaman 1dari 4

Pengenalan bendera negara NSSD

LISTING PROGRAM Callback dari button masukkan gambar


%mengambil dan menampilkan gambar dari file [filename,pathname]=uigetfile('*.jpeg;*.png;*.jpg;*.tif','pilih gambar'); input=imread([pathname,filename]); handles.gambar=input; guidata(hObject,handles); axes(handles.image); imshow(input);

Callback dari button proses


%library gambar yang akan dibandingkan dg gambar input %gambar dijadikan grayscale [a,map] = imread('argentina.jpg'); aa=imresize(a,[400 600]); j= rgb2gray(aa); [b,map] = imread('india.jpg'); bb=imresize(b,[400 600]); k= rgb2gray(bb); [c,map] = imread('itali.jpg'); cc=imresize(c,[400 600]); l= rgb2gray(cc); [d,map] = imread('japan.jpg'); dd=imresize(d,[400 600]); m= rgb2gray(dd); [e,map] = imread('korea.jpg'); ee=imresize(e,[400 600]); n= rgb2gray(ee); %me-resize,me-grayscale, me-filter, dan menampilkan gambar input I =handles.gambar; i=imresize(I,[400 600]); gray=medfilt2(rgb2gray(i)); axes(handles.image2); imshow(gray); %menampilkan histogram grayscale gambar input axes(handles.hist2); imhist(gray); %membandingkan gambar input-argentina & nilai nssd diff1=imabsdiff(gray,j); p=diff1.^2; nssd(1) =sum(sum(p))/240000; %membandingkan gambar input-india & nilai nssd diff2=imabsdiff(gray,k); q=diff2.^2; nssd(2) =sum(sum(q))/240000; %membandingkan gambar input-itali & nilai nssd diff3=imabsdiff(gray,l); r=diff3.^2; nssd(3) =sum(sum(r))/240000; %membandingkan gambar input-japan & nilai nssd diff4=imabsdiff(gray,m); s=diff4.^2; nssd(4) =sum(sum(s))/240000; %membandingkan gambar input-korea selatan & nilai nssd diff5=imabsdiff(gray,n); t=diff5.^2; nssd(5) =sum(sum(t))/240000; %me-plot nilai nssd axes(handles.hist);

plot(nssd); %menampilkan nilai nssd set(handles.nssd1,'string',nssd(1)); set(handles.nssd2,'string',nssd(2)); set(handles.nssd3,'string',nssd(3)); set(handles.nssd4,'string',nssd(4)); set(handles.nssd5,'string',nssd(5)); %mencari nilai nssd terkecil mn=[nssd(1) nssd(2) nssd(3) nssd(4) nssd(5)]; minim=min(mn); %merata-rata 4 nilai nssd selain nilai nssd terkecil switch minim case mn(1,1) rata=(nssd(2)+nssd(3)+nssd(4)+nssd(5))/4; case mn(1,2) rata=(nssd(1)+nssd(3)+nssd(4)+nssd(5))/4; case mn(1,3) rata=(nssd(1)+nssd(2)+nssd(4)+nssd(5))/4; case mn(1,4) rata=(nssd(1)+nssd(2)+nssd(3)+nssd(5))/4; case mn(1,5) rata=(nssd(1)+nssd(2)+nssd(3)+nssd(4))/4; end %klasifikasi gambar berdasarkan selisih nilai nssd terkecil dengan rata2 nilai %nssd lainnya, threshold dari nilai selisih harus >= 110 agar dapat dideteksi if ((rata-nssd(1)) >= 110) && (nssd(1)==minim) set(handles.nssd6,'string','Argentina'); axes(handles.image3); imshow(diff1); axes(handles.hist3); imhist(diff1); msgbox('Gambar Bendera Negara: Argentina','Terdeteksi','help'); elseif ((rata-nssd(2)) >= 110) && (nssd(2)==minim) set(handles.nssd6,'string','India'); axes(handles.image3); imshow(diff2); axes(handles.hist3); imhist(diff2); msgbox('Gambar Bendera Negara: India','Terdeteksi','help'); elseif ((rata-nssd(3)) >= 110) && (nssd(3)==minim) set(handles.nssd6,'string','Itali'); axes(handles.image3); imshow(diff3); axes(handles.hist3); imhist(diff3); msgbox('Gambar Bendera Negara: Itali','Terdeteksi','help'); elseif ((rata-nssd(4)) >= 110) && (nssd(4)==minim) set(handles.nssd6,'string','Jepang'); axes(handles.image3); imshow(diff4); axes(handles.hist3); imhist(diff4); msgbox('Gambar Bendera Negara: Jepang','Terdeteksi','help'); elseif ((rata-nssd(5)) >= 110) && (nssd(5)==minim) set(handles.nssd6,'string','Korea Selatan'); axes(handles.image3); imshow(diff5); axes(handles.hist3); imhist(diff5); msgbox('Gambar Bendera Negara: Korea Selatan','Terdeteksi','help'); else set(handles.nssd6,'string','Tidak Terdeteksi'); axes(handles.image3); imshow(gray); axes(handles.hist3); imhist(gray); msgbox('Gambar Bendera Negara tidak dikenal','Tidak Terdeteksi','help'); end

Nama : Dwi Sasmita Aji P. Nim : 115090096

Analisis Algoritma dan Parameternya


Akuisisi Citra 1. Mengambil dan menampilkan gambar masukan yang akan diproses
[filename,pathname]=uigetfile('*.jpeg;*.png;*.jpg;*.tif','pilih gambar'); input=imread([pathname,filename]); handles.gambar=input; guidata(hObject,handles); axes(handles.image); imshow(input);

Preprocessing 2. Membaca, me-resize dan mengubah gambar library menjadi grayscale


[a,map] = imread('argentina.jpg'); aa=imresize(a,[400 600]); j= rgb2gray(aa); ......

Mengubah ukuran piksel gambar menjadi 400x600, agar sama dengan ukuran piksel gambar masukan, agar dapat diambil nilai selisihnya saat proses NSSD Mengubah gambar RGB menjadi gambar grayscale, agar setiap pikselnya hanya memiliki satu nilai intensitas gambar. 3. Meresize dan me-grayscale Gambar Masukan Gambar Masukan dimasukkan ke variabel I. Gambar masukan di-filter dengan Filter Median untuk mengurangi noise jika terdapat noise.
I =handles.gambar; i=imresize(I,[400 600]); gray=medfilt2(rgb2gray(i)); axes(handles.image2); imshow(gr);

Ekstraksi Ciri 4. Gambar Masukan dibandingkan dengan Sumber Gambar dan dihitung nilai NSSD
%membandingkan gambar input-argentina & nilai nssd diff1=imabsdiff(gray,j); p=diff1.^2; nssd(1) =sum(sum(p))/240000; ......

Persamaan Normalize Sum Square Differences

(
= nilai intensitas pada piksel (i) dari gambar masukkan = nilai intensitas pada piksell (i) dari sumber gambar = jumlah piksel dari ukuran piksel (row x coloumn)
imabsdiff

digunakan untuk mendapatkan nilai selisih dari tiap piksel gambar antar Gambar Masukan dengan Sumber Gambar. Lalu nilai selisih tiap piksel dikuadratkan. Lalu dijumlah nilai piksel tiap kolom dan dijumlahkan semua nilai dari kolom tersebut. Lalu dibagi dengan n jumlah piksel.

Klasifikasi 5. Dicari nilai terkecil dari nilai NSSD (asumsi : semakin kecil nilai NSSD, semakin mirip gambar tersebut.)
mn=[nssd(1) nssd(2) nssd(3) nssd(4) nssd(5)]; minim=min(mn);

6. Asumsi lain : nilai minimum tersebut belum tentu menunjukkan kesamaan gambar masukan dengan sumber gambar, hal tersebut berlaku untuk gambar masukan yang tidak sama dengan sumber gambar. Sehingga syarat lain yang harus dipenuhi adalah

dengan

= Nilai NSSD selain nilai NSSD terkecil.


switch minim case mn(1,1) rata=(nssd(2)+nssd(3)+nssd(4)+nssd(5))/4; case mn(1,2) rata=(nssd(1)+nssd(3)+nssd(4)+nssd(5))/4; case mn(1,3) rata=(nssd(1)+nssd(2)+nssd(4)+nssd(5))/4; case mn(1,4) rata=(nssd(1)+nssd(2)+nssd(3)+nssd(5))/4; case mn(1,5) rata=(nssd(1)+nssd(2)+nssd(3)+nssd(4))/4; end

Sehingga dapat diartikan, nilai NSSD terkecil harus jauh lebih kecil (sangat kecil) dibandingkan dengan nilai NSSD lainnya. Nilai threshold 110 didapat dari trial-error.
if ((rata-nssd(1)) >= 110) && (nssd(1)==minim) set(handles.nssd6,'string','Argentina'); axes(handles.image3); imshow(diff1); axes(handles.hist3); imhist(diff1); msgbox('Gambar Bendera Negara: Argentina','Terdeteksi','help'); ......

Program tersebut menunjukkan, jika nilai selisihnya lebih dari 110 dan nilai terkecil adalah NSSD dari bendera Argentina, maka yang lebih mendekati atau sama dengan Gambar Masukan adalah negara argentina.
...... else set(handles.nssd6,'string','Tidak Terdeteksi'); axes(handles.image3); imshow(gray); axes(handles.hist3); imhist(gray); msgbox('Gambar Bendera Negara tidak dikenal','Tidak Terdeteksi','help'); end

Jika tidak ada yang memenuhi semua syarat kondisi maka gambar tidak terdeteksi. 7. Setelah itu ditampilkan hasil kesimpulan dari algoritma

Anda mungkin juga menyukai