Konversi RGB ke Lab

By | October 25, 2021
Print Friendly, PDF & Email
1,198 Views

Konversi RGB ke Lab.  Pengolahan citra digital banyak melibatkan beberapa format warna diantaranya binary, grayscale, RGB, XYZ, Lab. Penggunaan masing-masing format warna tersebut dapat disesuaikan dengan kebutuhan yang ada. Paling sering digunakan adalam format warna RGB yang merupakan warna dasar dari 3 komponen warna yaitu red, green, dan blue. Namun ketika kita membutuhkan warna lainnya seperti Lab maka setiap format dapat di convert koq. Misalkan yang akan dibahas kali ini yaitu Konversi RGB ke Lab. Format RGB bisa kita lakukan transformasi kedalam format yang lainnya, salah satu dari tersebut ke format Lab, berikut penulis sajikan code yang dicomot dari https://www.eecs.berkeley.edu/ dalam bentuk code di matlab atau juga bisa menggunakan calculator online di http://colormine.org/convert/rgb-to-lab.

Untuk mempermudah penggunaannya, saya akan membuat sebuah function dengan nama RGB2Lab.m yang terdiri dari 3 argument input yaitu array serta output argumen

function [L,a,b] = RGB2Lab(R,G,B)
% function [L, a, b] = RGB2Lab(R, G, B)
% RGB2Lab takes matrices corresponding to Red, Green, and Blue, and 
% transforms them into CIELab.  This transform is based on ITU-R 
% Recommendation  BT.709 using the D65 white point reference.
% The error in transforming RGB -> Lab -> RGB is approximately
% 10^-5.  RGB values can be either between 0 and 1 or between 0 and 255.  
% By Mark Ruzon from C code by Yossi Rubner, 23 September 1997.
% Updated for MATLAB 5 28 January 1998.

if (nargin == 1)
  B = double(R(:,:,3));
  G = double(R(:,:,2));
  R = double(R(:,:,1));
end

if ((max(max(R)) > 1.0) | (max(max(G)) > 1.0) | (max(max(B)) > 1.0))
  R = R/255;
  G = G/255;
  B = B/255;
end

[M, N] = size(R);
s = M*N;

% Set a threshold
T = 0.008856;

RGB = [reshape(R,1,s); reshape(G,1,s); reshape(B,1,s)];

% RGB to XYZ
MAT = [0.412453 0.357580 0.180423;
       0.212671 0.715160 0.072169;
       0.019334 0.119193 0.950227];
XYZ = MAT * RGB;

X = XYZ(1,:) / 0.950456;
Y = XYZ(2,:);
Z = XYZ(3,:) / 1.088754;

XT = X > T;
YT = Y > T;
ZT = Z > T;

fX = XT .* X.^(1/3) + (~XT) .* (7.787 .* X + 16/116);

% Compute L
Y3 = Y.^(1/3); 
fY = YT .* Y3 + (~YT) .* (7.787 .* Y + 16/116);
L  = YT .* (116 * Y3 - 16.0) + (~YT) .* (903.3 * Y);

fZ = ZT .* Z.^(1/3) + (~ZT) .* (7.787 .* Z + 16/116);

% Compute a and b
a = 500 * (fX - fY);
b = 200 * (fY - fZ);

L = reshape(L, M, N);
a = reshape(a, M, N);
b = reshape(b, M, N);

if ((nargout == 1) | (nargout == 0))
  L = cat(3,L,a,b);
end

Untuk penggunaanya Code untuk Konversi RGB ke Lab dengan cara memilih terlebih dahulu channel RBG pada format truecolor, oiya jangan lupa untuk menampilkan dalam format gambar diperlukan casting ke uint8(). Berikut cara penggunaan Code untuk Konversi RGB ke Lab

I = imread('gambar.jpg');
if ndim(I)==3
   [L,a,b] = RGB2Lab(I(:,:,1),I(:,:,2),I(:,:,3)); 
   %bila ingin ditampilkan dalam figure
   LAB(:,:,1) = uint8(L);
   LAB(:,:,2) = uint8(a);
   LAB(:,:,3) = uint8(b);
   figure
   imshow(LAB)
end

 

See also  Penggabungan / Concatenate String

Code diatas diambil dari link https://www.eecs.berkeley.edu/Research/Projects/CS/vision/bsds/code/Util/RGB2Lab.m Penjelasan mengenai Lab pada link http://www.colourphil.co.uk/lab_lch_colour_space.shtml

 

Leave a Reply

Your email address will not be published.




Enter Captcha Here :