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

Table of Contents
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. Kali ini, konversi ruang warna yang akan saya jelaskan adalah konversi RGB ke CMY dan CMY ke RGB. Untuk konversi ruang warna yang lain, beberapa sudah saya jelaskan di postingan yang lain.

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 CMY

Model warna CMY (cyan, magenta, yellow) mempunyai hubungan dengan RGB sebagai berikut :





Dalam hal ini, R, G, dan B berupa nilai warna yang telah dinormalisasi, dengan jangkauan [0, 1]. Pada CMY, warna hitam diperoleh jika C, M, dan Y bernilai sama. Namun, pada aplikasi printer, warna hitam ditambahkan tersendiri sehingga membentuk CMYK, dengan K menyatakan warna hitam. Alasannya, kalau ada warna hitam, warna dapat diambilkan secara langsung dari tinta hitam, tanpa perlu mencampur dengan warna lain. Lagipula, tinta warna hitam lebih murah daripada tinta berwarna dan paling sering digunakan terutama untuk teks. 

Gambar 3 (a) Penjumlahan warna pada sistem RGB (b) Pengurangan wana pada sistem CMY 
Perlu diketahui, konversi dari CMY ke CMYK dapat menggunakan berbagai cara perhitungan. Salah satu rumus yang digunakan sebagai berikut (Crane, 1997) :




   


Dengan pendekatan seperti itu, salah satu dari C’, M’, atau Y’ akan bernilai 0. Namun, ada pula yang menggunakan rumus seperti berikut (Dietrich, 2003):







Dalam hal ini, jika K = 1, C=Y=K=0.
Selain itu, pendekatan yang lain terdapat pada Pratt (2001). Rumus yang digunakan berupa:








Dalam hal ini,  0 <= u <= 1 dan 0 <= b <= 1,0.

Program konversi ruang warna RGB ke CMY dapat dituliskan dalam kode MATLAB berikut :

function [C,M,Y,K] = RGBkeCMY(R,G,B)
% RGBkeCMY digunakan untuk mengonversi RGB ke CMYK
%    Berdasarkan Pratt (2001)
 
% 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
 
u = 0.5;
b = 1;
[tinggi, lebar] = size(R);
for m=1: tinggi
    for n=1: lebar
        Kb = min([(1-R(m,n)) (1-G(m,n)) (1-B(m,n))]);
        if Kb == 1
            C(m,n) = 0;
            M(m,n) = 0;
            Y(m,n) = 0;
        else    
            C(m,n) = (1.0 - R(m,n) - u * Kb);
            M(m,n) = (1.0 - G(m,n) - u * Kb);
            Y(m,n) = (1.0 - B(m,n) - u * Kb);
            K(m,n) = b * Kb;
        end
    end
end
 
% Konversikan ke jangkauan [0,255]
C = uint8(C * 255);
M = uint8(M * 255);
Y = uint8(Y * 255);
K = uint8(K * 255);

Sebaliknya, program untuk konversi CMY ke RGB dapat dituliskan dalam kode MATLAB berikut :
function [R,G,B] = CMYkeRGB(C,M,Y,K)
% CMYkeRGB digunakan untuk mengonversi CMYK ke RGB
%    Berdasarkan Pratt (2001)
%    Dasar: b=1 dan u = 0,5
 
% Normalisasi CMY ke [0, 1]
C = double(C);
M = double(M);
Y = double(Y);
K = double(K);
 
if max(max(C)) > 1.0 || max(max(M)) > 1.0 || ...
   max(max(Y)) > 1.0 || max(max(K)) > 1.0
    C = double(C) / 255;
    M = double(M) / 255;
    Y = double(Y) / 255;
    K = double(K) / 255;
end
 
u = 0.5;
b = 1;
[tinggi, lebar] = size(C);
for m=1: tinggi
    for n=1: lebar
        
        Kb = K(m,n) / b;
        if Kb == 1
            R(m,n)=0;
            G(m,n)=0;
            B(m,n)=0;
        else
            R(m,n) = 1 - (C(m, n) + u * Kb);
            G(m,n) = 1 - (M(m, n) + u * Kb);
            B(m,n) = 1 - (Y(m, n) + u * Kb);
        end
    end
end
 
% Konversikan ke jangkauan [0,255]
R = uint8(R * 255);
G = uint8(G * 255);
B = uint8(B * 255);


Demikian sekilas penjelasan untuk mengkoversi ruang warna RGB ke CMY dan CMY ke RGB.

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