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
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; ......
(
= 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
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