Konversi Warna dengan Matlab

By | November 20, 2021
Print Friendly, PDF & Email
992 Views

Konversi warna pada proses pengolahan citra digital sering digunakan untuk mendapatkan fitur tertentu. Warna sendiri terbentuk dari pantulan sinar oleh permukaan objek. Biasanya format gambar umum terdiri dari 3 campuran warna utama yaitu Red, Green, dan Blue. Adapun ada beberapa konversi yang bisa kita terapkan dari RGB seperti HSV, Lab, dan yang lainnya.

Konversi Warna dengan Matlab akan dibahas mengenai RGB, HSV beserta algoritma matematikanya, serta LAB. Melalui pemahaman konversi warna gambar diharapkan kalian bisa lebih memahami pengolahan citra digital dengan Matlab secara lebih baik

Format Gambar

Fila Gambar digital yang biasa kita kenal ada seperti jpg, jpeg, png, bmp yang dibedakan dari teknik kompresi yang digunakan, adapun untuk format warna terdiri dari RGB, alpha. Untuk mengetahui format gambar di Matlab, kalian bisa menggunakan kode berikut

>> imfinfo('D:/bunga.jpg')

ans = 

  struct with fields:

           Filename: 'D:\bunga.jpg'
        FileModDate: '14-Sep-2021 22:52:38'
           FileSize: 1148730
             Format: 'jpg'
      FormatVersion: ''
              Width: 4344
             Height: 2896
           BitDepth: 24
          ColorType: 'truecolor'
    FormatSignature: ''
    NumberOfSamples: 3
       CodingMethod: 'Huffman'
      CodingProcess: 'Sequential'
            Comment: {}

namun bila kalian tidak punya Matlab, gunakan saja properties windows seperti berikut untuk mengetahui format gambar

Bit dept 24 itu berarti format gambar tersebut mengandung RGB yaitu 3 chanel x 2^8 bit. Arti dari 72 dpi yaitu ada 72 titik dalam 1 inchi persegi/dot perinchi

Warna RGB

RGB adalah red, green, dan blue merupakan prinsip kerja monitor tabung jaman dulu yang mencampurkan 3 warna utama untuk menghasilkan warna. RGB sendiri mempunyai rentang 0 sampai dengan 255.  Misalkan kita ingin menghasilkan warna Red, maka nilai yang harus disetting yaitu

  1. Red: 255
  2. Green: 0
  3. Blue: 0
See also  Library SQLite untuk Menyimpan Jutaan record

Format RBG banyak digunakan pada file gambar pada umumnya dengan rentang 0 sd 255 itu artinya ada warna sebanyak 255 gradasi warna. Berikut contoh penggunaan pengaturan nilai RGB menggunakan matlab.

 

Kita coba dengan pengaturan RGB berikut

Untuk menampikan komposisi warna RGB gambar menggunakan matlab caranya sebagai berikut

clc;clear all;close all;
a=imread('D:/bunga.jpg');

figure,
imshow(a),title('gambar RGB')

figure
subplot(1,3,1),imhist(a(:,:,1)),title('Red');
subplot(1,3,2),imhist(a(:,:,2)),title('Green');
subplot(1,3,3),imhist(a(:,:,3)),title('Blue');

 

Warna HSV

Perhatikan ilustrasi berikut yang diambil dari wikipedia

 

1. Hue (Rona) adalah gradasi warna yang mempunyai rentang 0 – 360. berguna untuk identifikasi warna untuk membedakan satu sama lain.

2. Value (Nilai) mengacu pada terang atau gelapnya suatu warna. Value menunjukkan jumlah cahaya yang dipantulkan, sehingga bila nilai value sedikit akan tampak gelap dan terang

3. Saturation (Kejenuhan) atau Chroma / kejenuhan yaitu menentukan kecemerlangan dan intensitas suatu warna.

Untuk mendapatkan nilai HSV, kita dapat melakukan konversi dengan mudah yaitu

clc;clear all;close all;
a=imread('D:/bunga.jpg');
b=rgb2hsv(a);
figure,
subplot(1,2,1),imshow(a),title('gambar RGB');
subplot(1,2,2),imshow(b),title('gambar HSV');

 

Khusus untuk di Matlab rentang nilai HSV menggunakan double yaitu 0 sampai dengan 1

Cara menghitung HSV

Cara menghitung HSV sangat mudah sekali, berikut algoritma yang digunakan

  1. Bagi nilai r, g, dan b dengan nilai 255
  2. Hitung masing-masing cmax, cmin, delta
  3. Hitung Hue:
    • jika cmax dan cmin = 0 , maka h = 0
    • jika cmax = r maka  h = (60 * ((g - b) / diff) + 360) \% 360
    • jika cmax = g maka  h = (60 * ((b - r) / diff) + 120) \% 360
    • jika cmax = b maka h = (60 * ((r - g) / diff) + 240) \% 360
  4. Hitung Saturation:
    • jika cmax = 0 maka s = 0
    • jika cmax \neq 0, maka s = (diff/cmax)*100
  5. Hitung Value:
    • v = cmax*100

Berikut saya jabarkan kodenya dalam di Matlab, oiya tanda \% itu operator modulus ya

clc;clear all;close all;
R = 31; G = 52; B = 29; % values are divided by 255
disp(array2table([R,G,B],'VariableNames',{'R','G','B'}))

r = R/ 255; g = G/255; b = B/255;
    
cmax = max([r, g, b]);
cmin = min([r, g, b]);
diff = cmax-cmin;
 
%hitung Hue
if cmax == cmin
    h = 0
elseif cmax == r 
    h = mod((60 * ((g - b) / diff) + 360),360);
elseif cmax == g
    h = mod((60 * ((b - r) / diff) + 120),360);
elseif cmax == b
    h = mod((60 * ((r - g) / diff) + 240),360);
end

%hitung Saturation
if cmax == 0
    s = 0;
else
    s = (diff / cmax) * 100;
end

%hitung value
v = cmax * 100;

disp(array2table([h,s,v],'VariableNames',{'H','S','V'}))

hasil perhitungan persamaan RGB ke HSV

R     G     B 
__    __    __

31    52    29

  H         S         V   
______    ______    ______

114.78    44.231    20.392

Warna Lab

Warna Lab pernah dibahas https://softscients.com/2020/04/04/konversi-rgb-ke-lab/ . Ruang warna CIE 1976 L * a * b * (juga disebut CIELAB)  yang di standarkan oleh CIE pada tahun 1976 untuk komunikasi warna dan secara luas diadopsi saat ini di banyak industri untuk kontrol warna dan manajemen. Dalam ruang warna L * a * b *, L * menunjukkan kecerahan dan a * dan b * adalah koordinat kromatisitas. a * dan b * adalah arah warna: + a * adalah sumbu merah, -a ‘adalah sumbu hijau, + b * adalah sumbu kuning dan -b * adalah sumbu biru.

c=rgb2lab(a);
figure,
subplot(1,2,1),imshow(a),title('gambar RGB');
subplot(1,2,2),imshow(c),title('gambar LaB');

 

See also  Belajar Matlab

Leave a Reply

Your email address will not be published.




Enter Captcha Here :