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 contoh 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.

File source code lengkap beserta citra yang digunakan pada pemrograman di atas dapat diperoleh melalui halaman berikut ini: Source Code MATLAB

Tutorial mengenai deteksi warna berdasarkan komponen hue dan saturation pada citra HSV dapat dilihat pada video berikut ini:

Posted on July 26, 2017, in Pengenalan Pola, Pengolahan Citra and tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. 23 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);

  3. mas ingin nanya, saya ingin membuat sistem penjejak bola mnggunakan kamera, mengenali bola berwarna putih agar bisa dijejak itu gimana ya?

  4. saya kurang paham bagaimana cara mengenalinya, apa bisa dengan Background Subtraction dengan Metode Pengurangan Citra Grayscale?

  5. kalo menggunakan video pengurangan yg digunakan apa dengan apa?

  6. Maaf saya ingin bertanya, kenapa pada program ini yang di thresholding ruang warna saturation? mengapa tidak komponen hue saja? Terimakasih sebelumnya

  7. Baik, terimakasih banyak.

  8. mas mau tanya kalau satuan nya H derajat, S persen, dan V juga persen itu gimana ya mas, soalnya saya hanya mendapat nilai HSV dari range 0 – 1 saja

  9. mas mau nanya
    for n = 1:num
    bw2 = L==n;
    itu fungsinya untuk apa ya ?

  10. mas saya mau nanya, kalo mau mengubah citra ke grayscale tapi langsung untuk satu folder citra itu gmn ya?

  11. Kk, kalau ukuran tabel nya dibesarkan. Perintah nya apa ya ?

  12. cara identifikasi warna pada resistor dan menghitung nilai warna resistor bagaimana yh menggunakan HSV? Terimakasih ๐Ÿ™

Leave a reply to Muhammad Triza Cancel reply