Mendeteksi Kematangan Buah Tomat Menggunakan Fitur Warna Pada Citra Achmad Basuki Politeknik Elektronika Negeri Surabaya 2013
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 clear n=[1 41 81]; for i=1:3 m=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 1 0.5 0
0
200
400
600
0
200
400
600
0
200
400
600
1 0.5 0 1 0.5 0
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:3 m=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 clear n=[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:3 m=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+(bwref(k3,3))^2; d=sqrt(d2); if(d
Histogram Referensi 1 0.5 0
1
2
3
4
5
6
7
8
9 10
1
2
3
4
5
6
7
8
9 10
1
2
3
4
5
6
7
8
9 10
1 0.5 0 1 0.5 0
Perhatikan ketiga histogram di atas: - Histogram referensi masih belum bisa menunjukkan perbedaan warna hijau, merah dan jingga - Pemilihan jumlah warna referensi sangat berpengaruh
Histogram Hue Index clear n=[2 41 81]; for i=1:3 m=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 1 0.5 0
0
10
20
30
0
10
20
30
0
10
20
30
1 0.5 0 1 0.5 0
Perhatikan ketiga histogram di atas: - Histogram Hue index dengan 30 warna bisa menunjukkan perbedaan warna hijau, merah dan jingga
Mendeteksi kematangan buah tomat menggunakan Histogram Hue Index
Menampilkan histogram dari masing-masing 4 gambar yang berbeda untuk setiap kematangan clear n=[2 11 26 31; 41 51 61 71; 81 93 102 111]; for i=1:3 for j=1:4 m=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 Umum clear n=[2 11 26 31;41 51 61 71; 81 93 102 111]; k=0; figure(1) for i=1:3 for j=1:4 m=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 end humum=min(hs); figure(2), bar(humum), grid, axis([0 30 0 1]);
Fitur Umum 1
0.8
0.6
0.4
0.2
0
0
5
10
15
20
25
30
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 clear load humum; n=[2 11 26 31;41 51 61 71; 81 93 102 111]; k=0; for i=1:3 for j=1:4 m=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 clear load 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:4 m=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]) end hv=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 1 0.5 0
HIJAU 0
5
10
15
20
25
30
1
MERAH
0.5 0
0
5
10
15
20
25
30
1
JINGGA
0.5 0
0
5
10
15
20
25
30
Proses Deteksi
PROSES DETEKSI KEMATANGAN BUAH TOMAT clear load 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