Pengenalan Warna Objek


Komponen Hue dari citra HSV (Hue, Saturation, Value) merupakan suatu komponen yang merepresentasikan warna dari panjang gelombang cahaya tampak (merah, jingga, kuning, hijau, biru, ungu). Oleh karena itu, komponen ini dapat digunakan sebagai acuan untuk melakukan pengenalan warna suatu objek pada citra digital.

Berikut ini merupakan pengolahan citra digital untuk melakukan pengenalan warna suatu objek berdasarkan komponen Hue.

Langkah-langkah pengolahan citra dan pemrograman MATLAB yang dilakukan adalah sebagai berikut:

1. Membaca citra RGB asli

clc; clear; close all;
 
I = imread('stabilo.jpg');
figure, imshow(I);

2. Mengkonversi ruang warna citra yang semula berada pada ruang warna RGB menjadi HSV (Hue, Saturation, Value)

HSV = rgb2hsv(I);
figure, imshow(HSV);

3. Mengekstrak masing-masing komponen citra HSV yaitu komponen Hue, komponen Saturation, dan komponen Value

H = HSV(:,:,1);
S = HSV(:,:,2);
V = HSV(:,:,3);
figure, imshow(H);
figure, imshow(S);
figure, imshow(V);

Komponen Hue

Komponen Saturation

Komponen Value

4. Melakukan thresholding terhadap komponen Saturation sehingga diperoleh citra biner hasil segmentasi

bw = im2bw(S,.4);
figure, imshow(bw);

5. Melakukan operasi morfologi berupa filling holes dan opening untuk menyempurnakan citra biner hasil segmentasi

bw = imfill(bw,'holes');
bw = bwareaopen(bw,1000);
str = strel('square',12);
bw = imopen(bw,str);
figure, imshow(bw);

6. Menampilkan citra RGB hasil segmentasi

R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);
 
R(~bw) = 0;
G(~bw) = 0;
B(~bw) = 0;
 
RGB = cat(3,R,G,B);
figure, imshow(RGB);

7. Melakukan pelabelan terhadap masing-masing objek hasil segmentasi

[L,num] = bwlabel(bw);

Label 1

Label 2

Label 3

Label 4

Label 5

Label 6

8. Menghitung rata-rata nilai Hue pada masing-masing objek yang terlabeli dan mengklasifikasikan nilai tersebut ke dalam kelas warna yang telah ditentukan

for n = 1:num
    bw2 = L==n;

    R = I(:,:,1);
    G = I(:,:,2);
    B = I(:,:,3);
    
    R(~bw2) = 0;
    G(~bw2) = 0;
    B(~bw2) = 0;
    RGB = cat(3,R,G,B);

    [a,b] = find(bw2==1);
    Hue = 0;

    for m = 1:numel(a)
        Hue = Hue+double(H(a(m),b(m)));
    end
    
    Hue = Hue/numel(a);
    
    if Hue < 11/255       % merah
        Warna = 'merah';
    elseif Hue < 32/255   % jingga
        Warna = 'jingga';
    elseif Hue < 54/255   % kuning
        Warna = 'kuning';
    elseif Hue < 116/255  % hijau
        Warna = 'hijau';
    elseif Hue < 141/255  % cyan
        Warna = 'cyan';
    elseif Hue < 185/255  % biru
        Warna = 'biru';
    elseif Hue < 202/255  % ungu
        Warna = 'ungu';
    elseif Hue < 223/255  % magenta
        Warna = 'magenta';
    elseif Hue < 244/255  % merah muda
        Warna = 'merah muda';
    else
        Warna = 'merah';
    end
        
    [B,~] = bwboundaries(bw2,'noholes');
    boundary = B{1};
    position = [boundary(1,2),boundary(1,1)-80;boundary(1,2),boundary(1,1)-40;...
        boundary(1,2),boundary(1,1)];
    box_color = {'yellow','yellow','yellow'};
    
    text_str = cell(2,1);
    text_str{1} = ['Label: ' num2str(n)];
    text_str{2} = ['Hue: ' num2str(Hue,'%0.2f')];
    text_str{3} = ['Warna: ' Warna];
        
    RGB2 = insertText(I,position,text_str,'FontSize',20,'BoxColor',box_color,'BoxOpacity',0.8,'TextColor','white');
    figure, imshow(RGB2);
end

Label 1

Label 2

Label 3

Label 4

Label 5

Label 6

Hasil pengolahan citra tersebut menunjukkan bahwa metode yang digunakan dapat melakukan pengenalan warna objek dalam citra dengan baik. Warna yang dikenali antara lain adalah warna cyan, hijau, merah muda, jingga, dan kuning.

Source code dan citra yang digunakan pada pemrograman di atas dapat diunduh melalui halaman berikut ini: Source Code MATLAB

Posted on July 26, 2017, in Pengenalan Pola, Pengolahan Citra and tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. 3 Comments.

  1. ass mas. saya kan lagi penelitian tentang pengenalan pola tanda tangan pakek support vector machine untuk mengenali identitas pemilik tanda tangan yang saya inputkan. saya cuma bisa input 1 data mahasiswa pada codingny mas.
    nah yang mau saya tanyakan bagaimana cara membuat database biodata mahasiswa supaya kalau saya inputkkan gambar tanda tangan mahasiswa lain bisa otomatis mengenali informasi pemilik tanda tangan itu mas

  2. nilai yang di dapatkan dari programnya dmna ya yang mengacu untuk mendapatkan nilai dari

    if Hue < 11/255 % merah
    Warna = 'merah';
    elseif Hue < 32/255 % jingga
    Warna = 'jingga';
    elseif Hue < 54/255 % kuning
    Warna = 'kuning';
    elseif Hue < 116/255 % hijau
    Warna = 'hijau';
    elseif Hue < 141/255 % cyan
    Warna = 'cyan';
    elseif Hue < 185/255 % biru
    Warna = 'biru';
    elseif Hue < 202/255 % ungu
    Warna = 'ungu';
    elseif Hue < 223/255 % magenta
    Warna = 'magenta';
    elseif Hue < 244/255 % merah muda
    Warna = 'merah muda';

    maksud dari ini apa ya mas?

    Hue = Hue+double(H(a(m),b(m)));

    dan

    Hue = Hue/numel(a);

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: