deteksi kematangan buah tomat
TRANSCRIPT
Mendeteksi Kematangan Buah Tomat Menggunakan Fitur Warna Pada CitraAchmad BasukiPoliteknik Elektronika Negeri Surabaya2013
Data: 120 gambar
40 gambar tomat yang masih mentah (berwarna hijau)
40 gambar tomat yang sudah matang (berwarna merah)
40 gambar tomat yang setengah matang (berwarna jingga)
Mengetahui Fitur Warna
Fitur warna pada gambar bisa dihasilkan menggunakan histogram warna.
Harus dicoba terlebih dahulu histogram warna yang mana yang bisa mengenali warna hijau, merah dan jingga
Fitur warna yang dihasilkan harus mampu mengabaikan latar belakang.
Histogram R-G-B
clearn=[1 41 81];
for i=1:3m=n(i);namafile=strcat(int2str(m),'.bmp');x=imread(namafile);r=x(:,:,1);g=x(:,:,2);b=x(:,:,3);hr=imhist(r);hg=imhist(g);hb=imhist(b);h=[hr' hg' hb'];h=h/max(h);subplot(3,2,2*i-1), imshow(x)subplot(3,2,2*i), bar(h), grid, axis([0 768 0 1])
end
Histogram Warna R-G-B
0 200 400 6000
0.5
1
0 200 400 6000
0.5
1
0 200 400 6000
0.5
1
Perhatikan ketiga histogram di atas:- Sangat sulit membedakan mana yang hijau, merah dan jingga- Histogram R-G-B tidak maksimal bila digunakan
Histogram Index
clear;n=[1 41 81];
for i=1:3m=n(i);namafile=strcat(int2str(m),'.bmp');x=imread(namafile);xd=double(x);y=floor(xd/64);u=y(:,:,3)+4*y(:,:,2)+16*y(:,:,1);nx=size(u);w=reshape(u,nx(1)*nx(2),1);h=hist(w,64);h=h/max(h);subplot(3,2,2*i-1), imshow(x)subplot(3,2,2*i), bar(h), grid, axis([0 64 0 1])
end
Histogram Index
Perhatikan ketiga histogram di atas:- Histogram index sudah menunjukkan perbedaan warna hijau,
merah dan jingga- Pemilihan jumlah index warna sangat berpengaruh
Histogram Referensi
clearn=[1 41 81];wref=[255 0 0; 128 0 0; 0 255 0; 0 128 0; 0 0 255;
0 0 128; 255 255 0; 255 0 255; 0 255 255; 0 0 0; 255 255 255];
nref=10;
for i=1:3m=n(i);namafile=strcat(int2str(m),'.bmp');x=imread(namafile);xd=double(x);nx=size(x);h=zeros(nref,1);for k1=1:n(1)
for k2=1:n(2)r=xd(k1,k2,1);g=xd(k1,k2,2);b=xd(k1,k2,3);
Histogram Referensi
dmin=50000;kmin=0;for k3=1:nref
d2=(r-wref(k3,1))^2+(g-wref(k3,2))^2+(b-wref(k3,3))^2;
d=sqrt(d2);if(d<dmin)
dmin=d;kmin=k3;
endendh(kmin)=h(kmin)+1;
endendh=h/max(h);subplot(3,2,2*i-1), imshow(x)subplot(3,2,2*i), bar(h), grid, axis([0 nref 0 1])
end
Histogram Referensi
Perhatikan ketiga histogram di atas:- Histogram referensi masih belum bisa menunjukkan perbedaan
warna hijau, merah dan jingga- Pemilihan jumlah warna referensi sangat berpengaruh
1 2 3 4 5 6 7 8 9 100
0.5
1
1 2 3 4 5 6 7 8 9 100
0.5
1
1 2 3 4 5 6 7 8 9 100
0.5
1
Histogram Hue Index
clearn=[2 41 81];
for i=1:3m=n(i);namafile=strcat(int2str(m),'.bmp');x=imread(namafile);y=rgb2hsv(x);yhue=y(:,:,1);nx=size(yhue);yh=reshape(yhue,nx(1)*nx(2),1);h=hist(yh,30);h=h/max(h);subplot(3,2,2*i-1), imshow(x)subplot(3,2,2*i), bar(h), grid, axis([0 30 0 1])
end
Histogram Referensi
Perhatikan ketiga histogram di atas:- Histogram Hue index dengan 30 warna bisa menunjukkan
perbedaan warna hijau, merah dan jingga
0 10 20 300
0.5
1
0 10 20 300
0.5
1
0 10 20 300
0.5
1
Mendeteksi kematangan buah tomat menggunakan Histogram
Hue Index
Menampilkan histogram dari masing-masing 4 gambar yang berbeda untuk setiap kematangan
clearn=[2 11 26 31; 41 51 61 71; 81 93 102 111];
for i=1:3for j=1:4m=n(i,j);namafile=strcat(int2str(m),'.bmp');x=imread(namafile);y=rgb2hsv(x);yhue=y(:,:,1);nx=size(yhue);yh=reshape(yhue,nx(1)*nx(2),1);h=hist(yh,30);h=h/max(h);subplot(4,6,6*(j-1)+2*i-1), imshow(x)subplot(4,6,6*(j-1)+2*i), bar(h), grid, axis([0 30 0 1])end
end
Menampilkan histogram dari masing-masing 4 gambar yang berbeda untuk setiap kematangan
- Ada fitur-fitur umum yang ada pada semua citra yang mungkin disebabkan oleh latar belakang. Fitur semacam ini tidak baik untuk digunakan sebagai fitur citra.
- Ada fitur-fitur khusus yang ada pada setiap kelompok citra (hijau, merah, jingga), fitur inilah yang harus ditemukan.
Mendapatkan Fitur Umum
Fitur umum ini biasanya ditimbulkan karena latar belakang yang seragam
Fitur ini tidak baik digunakan dalam proses deteksi atau identifikasi
Fitur umum ini ditunjukkan oleh kemunculan yang sama pada setiap histogram
Untuk mendapatkan fitur umum bisa digunakan proses interseksi atau dituliskan dengan:
Semua fitur harus dikurangi dengan fitur umum untuk mendapatkan fitur obyek yang sebenarnya.
,
Mendapatkan Fitur Umumclearn=[2 11 26 31;41 51 61 71; 81 93 102 111];k=0;figure(1)for i=1:3
for j=1:4m=n(i,j);namafile=strcat(int2str(m),'.bmp');x=imread(namafile);y=rgb2hsv(x);yhue=y(:,:,1);nx=size(yhue);yh=reshape(yhue,nx(1)*nx(2),1);h=hist(yh,30);h=h/max(h);k=k+1; hs(k,:)=h;subplot(4,6,6*(j-1)+2*i-1), imshow(x)subplot(4,6,6*(j-1)+2*i), bar(h), grid, axis([0 30 0 1])end
endhumum=min(hs);figure(2), bar(humum), grid, axis([0 30 0 1]);
Fitur Umum
0 5 10 15 20 25 300
0.2
0.4
0.6
0.8
1
Simpan Fitur Umum
Fitur Umum ini disimpan ke dalam file agar bisa digunakan pada proses berikutnya tanpa menghitung ulang.
>> save humum
Mendapatkan Fitur Setelah Dikurangi Fitur Umum
clearload humum;n=[2 11 26 31;41 51 61 71; 81 93 102 111];
k=0;for i=1:3
for j=1:4m=n(i,j);namafile=strcat(int2str(m),'.bmp');x=imread(namafile);y=rgb2hsv(x);yhue=y(:,:,1);nx=size(yhue);yh=reshape(yhue,nx(1)*nx(2),1);h=hist(yh,30);h=h/max(h);h=h-humum;subplot(4,6,6*(j-1)+2*i-1), imshow(x)subplot(4,6,6*(j-1)+2*i), bar(h), grid, axis([0 30 0 1])end
end
Mendapatkan Fitur Setelah Dikurangi Fitur Umum
Perbedaan fitur dari setiap kelompok warna akan lebih terlihat setelah proses ini.
Mencari Fitur Khusus Pada Setiap Kelompok Warna
Fitur khusus adalah fitur yang selalu muncul pada semua gambar yang ada dalam sebuah kelompok warna.
Prosesnya sama dengan mencari fitur umum hanya saja pada setiap kelompok warna yaitu dengan menghitung interseksi atau nilai minimum pada setiap indeks warna.
Fitur ini disimpan dalam file agar dalam proses identifikasi tidak perlu dihitung ulang.
>> save hk
,
Mendapatkan Fitur Setelah Dikurangi Fitur Umum
clearload humum;n=[2 11 26 31;41 51 61 71; 81 93 102 111];
k=0;figure(1)for i=1:3
hs=zeros(4,30);for j=1:4m=n(i,j);namafile=strcat(int2str(m),'.bmp');x=imread(namafile);y=rgb2hsv(x);yhue=y(:,:,1);nx=size(yhue);yh=reshape(yhue,nx(1)*nx(2),1);h=hist(yh,30);h=h/max(h);h=h-humum;h=h/max(h);hs(j,:)=h;
Mendapatkan Fitur Setelah Dikurangi Fitur Umum
subplot(4,6,6*(j-1)+2*i-1), imshow(x)subplot(4,6,6*(j-1)+2*i), bar(h), grid, axis([0 30 0 1])endhv=min(hs);hv=hv/max(hv);hk(i,:)=hv;
end
figure(2)for i=1:3
subplot(3,1,i), bar(hk(i,:)), grid, axis([0 30 0 1])end
Fitur Pada Setiap Kelompok Warna
0 5 10 15 20 25 300
0.5
1
0 5 10 15 20 25 300
0.5
1
0 5 10 15 20 25 300
0.5
1
HIJAU
MERAH
JINGGA
Proses Deteksi
PROSES DETEKSI KEMATANGAN BUAH TOMAT
clearload humum;load hk;n=input('Nomor gambar = ');namafile=strcat(int2str(n),'.bmp');x=imread(namafile);y=rgb2hsv(x);yhue=y(:,:,1);nx=size(yhue);yh=reshape(yhue,nx(1)*nx(2),1);h=hist(yh,30);h=h/max(h);h=h-humum;h=h/max(h);dmin=50000;kmin=0;for i=1:3
d=sqrt(sum((h-hk(i,:)).^2));
PROSES DETEKSI KEMATANGAN BUAH TOMAT
if(d<dmin)dmin=d;kmin=i;
endend
imshow(x)if(kmin==1)
title('HIJAU');endif(kmin==2)
title('MERAH');endif(kmin==3)
title('CAMPUR');end