Konversi Warna dengan Matlab
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
- Red: 255
- Green: 0
- Blue: 0
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
- Bagi nilai dan dengan nilai
- Hitung masing-masing
- Hitung Hue:
- jika dan , maka
- jika maka
- jika maka
- jika maka
- Hitung Saturation:
- jika maka
- jika , maka
- Hitung Value:
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');