Skip to content Skip to sidebar Skip to footer

Konversi Ruang Warna RGB ke YIQ dan YIQ ke RGB, Bagaimana Caranya?

Gonzalez & Woods (2002) mendefinisikan ruang warna (atau kadang disebut sistem warna atau model warna) sebagai suatu spesifikasi sistem koordinat dan suatu subruang dalam sistem tersebut dengan setiap warna dinyatakan dengan satu titik di dalamnya. Tujuan dibentuknya ruang warna adalah untuk memfasilitasi spesifikasi warna dalam bentuk suatu standar. Ruang warna yang paling dikenal pada perangkat komputer adalah RGB, yang sesuai dengan watak manusia dalam menangkap warna. Namun, kemudian dibuat banyak ruang warna, antara lain HSI, CMY, LUV, dan YIQ. 

Saya akan menerangkan bagaimana cara mengkonversi berbagai jenis ruang warna. Ruang warna RGB saya pilih sebagai patokan konversi karena RGB secara umum telah digunakan dalam berbagai peralatan eletronik seperti kamera digital, televisi dll. Maka wajar jika hasil pemotretan akan menghasilkan citra beruang warna RGB. Pertama kali yang akan saya konversi adalah ruang warna RGB ke YIQ dan YIQ ke RGB terlebih dahulu. Untuk konversi ruang warna yang lain, akan saya jelaskan lain waktu. 

Mengenal Ruang Warna RGB

RGB adalah suatu model warna yang terdiri atas 3 buah warna: merah (Red), hijau (Green), dan biru (Blue), yang ditambahkan dengan berbagai cara untuk menghasilkan bermacam-macam warna. Kegunaan utama model warna RGB adalah untuk menampilkan citra / gambar dalam perangkat elektronik, seperti televisi dan komputer, walaupun juga telah digunakan dalam fotografi biasa. Sebelum era elektronik, model warna RGB telah memiliki landasan yang kuat berdasarkan pemahaman manusia terhadap teori trikromatik (Wikipedia).


Gambar 1. Skema Ruang Warna RGB dalam bentuk kubus

Setiap piksel dibentuk oleh ketiga komponen Red, Green dan Blue. Model RGB biasa disajikan dalam bentuk kubus tiga dimensi, dengan warna merah, hijau, dan biru berada pada pojok sumbu (Gambar 1). Warna hitam berada pada titik asal dan warna putih berada di ujung kubus yang berseberangan. Gambar 2 memperlihatkan kubus warna secara nyata dengan resolusi 24 bit. Perlu diketahui, dengan menggunakan 24 bit, jumlah warna mencapai 16.777.216.
Gambar 2. Kubus warna dengan 24 bit

Mengenal Ruang Warna YIQ

Ruang warna YIQ,  yang juga dikenal dengan nama ruang warna NTSC, dirumuskan oleh NTSC ketika mengembangkan sistem televisi berwarna di Amerika Serikat. Pada model ini, Y disebut luma (yang menyatakan luminans) dan I serta Q disebut chroma. Konversi YIQ berdasarkan RGB sebagai berikut :





Adapun konversi RGB dari YIQ dinyatakan sebagai berikut:





Konversi RGB ke YIQ, dan Sebaliknya

Berikut ini adalah program untuk mengkonversi ruang warna RBG ke dalam ruang warna YIQ menggunakan matlab :

function [Y, I, Q] = RGBkeYIQ(R,G,B)
% RGBkeYIQ digunakan untuk mengonversi RGB ke YIQ
 
% Normalisasi RGB ke [0, 1]
R = double(R);
G = double(G);
B = double(B);
 
if max(max(R)) > 1.0 || max(max(G)) > 1.0 || ...
   max(max(B)) > 1.0
    R = double(R) / 255;
    G = double(G) / 255;
    B = double(B) / 255;
end
 
[tinggi, lebar] = size(R);
for m=1: tinggi
    for n=1: lebar
        Y(m,n) = 0.299*R(m,n)+0.587*G(m,n)+0.114*B(m,n);
        I(m,n) = 0.596*R(m,n)-0.274*G(m,n)-0.322*B(m,n);
        Q(m,n) = 0.211*R(m,n)-0.523*G(m,n)+0.312*B(m,n);
    end
end
 
% Konversikan ke jangkauan [0,255]
Y = uint8(Y * 255);
I = uint8(I * 255);
Q = uint8(Q * 255);

hasil = Y + I + Q ; 
imshow(hasil) 

Contoh penggunaan, saya akan mengkonversi gambar RGB menjadi YIQ, maka saya mengetikkan perintah untuk mengambil salah satu gambar RGB kemudian mengkonversinya dalam bentuk YIQ :

>> Img = imread('contoh.jpg');
>> [Y,I,Q] = RGBkeYIQ(Img(:,:,1), Img(:,:,2), Img(:,:,3));

Hasilnya :
Gambar 3. Citra RGB sebelum dikonversi ke YIQ
Setelah dikonversi dalam YIQ :

Gambar 4. Citra RGB setelah dikonversi dalam YIQ
Sebaliknya untuk mengkonversi citra YIQ ke dalam bentuk RGB digunakan fungsi berikut :
function [R, G, B] = YIQkeRGB(Y,I,Q)
% YIQkeRGB digunakan untuk mengonversi YIQ ke RGB
 
% Normalisasi YIQ ke [0, 1]
Y = double(Y);
I = double(I);
Q = double(Q);
 
if max(max(Y)) > 1.0 || max(max(I)) > 1.0 || ...
   max(max(Q)) > 1.0
    Y = double(Y) / 255;
    I = double(I) / 255;
    Q = double(Q) / 255;
end
 
[tinggi, lebar] = size(Y);
for m=1: tinggi
    for n=1: lebar
        R(m,n) = Y(m,n)+0.956 * I(m,n) + 0.621 * Q(m,n);
        G(m,n) = Y(m,n)-0.272 * I(m,n) - 0.647 * Q(m,n);
        B(m,n) = Y(m,n)-1.106 * I(m,n) + 1.703 * Q(m,n);
    end
end
 
% Konversikan ke jangkauan [0,255]
R = uint8(R * 255);
G = uint8(G * 255);
B = uint8(B * 255);

hasil = R+G+B ; 
imshow(hasil) 

Demikian penjelasan singkat tentang bagaimana cara konversi citra RGB ke dalam bentuk YIQ, begitu pula sebaliknya. Silakan ditanyakan bagi yang belum paham. 

Referensi :
  1. Kadir, Abdul dan Susanto, Adhi. Teori dan Aplikasi Pengolahan Citra. Yogyakarta : Andi. 2012
  2. https://id.wikipedia.org/wiki/RGB diakses tanggal 25 Januari 2017

Post a Comment for "Konversi Ruang Warna RGB ke YIQ dan YIQ ke RGB, Bagaimana Caranya?"