Anda di halaman 1dari 5

[Digital Image Processing]

January 3, 2012

Color Conversion HSI to RGB

Konversi RGB ke HSI bersifat reversible atau dapat dibalik. Namun bisa jadi ketika implementasi
dalam program akan dihasilkan nilai RGB yang sedikit berbeda dibandingkan dengan nilai
aslinya. Hal ini bisa dikarenakan pembulatan dalam perhitungan. Tapi yang jelas proses nya
memang bisa dibalik.
Hal pertama yang harus diingat adalah kita telah melakukan normalisasi terhada nilai H pada
saat konversi RGB ke HSI. Untuk itu kita perlu men-denormalisasi-kan kembali nilai H tersebut.
Untuk itu kita perlu mengalikan H dengan 3600 untuk membuat nilai ini berada pada range
[0,1]. Namun dalam kenyataan (program) kita menggunakan sudut dalam radian 2.
Langkah-langkah dalam membuat konversi HSI ke RGB adalah
-

Pisahkan komponen-komponen H, S dan I dari citra HSI

Sektor RG untuk 0 H < 1200

( = 1 )
= 1 +

Sektor GB untuk 1200 H < 2400

cos

cos(60 )

= 3 ( + )

Terlebih dahulu hitung nilai H:


= 120
Lalu hitung nilai RGB:
= (1 )
= 1 +
Sektor BR untuk 2400 H 3600

cos

cos(60 )

= 3 ( + )

Terlebih dahulu hitung nilai H:


= 240
Lalu hitung nilai RGB:
( = 1 )
= 1 +

cos

cos(60 )

= 3 ( + )

janshendry@gmail.com| [EE&IT of UGM, Indonesia]

[Digital Image Processing]

Berikut ini adalah program untuk konversi HSI ke RGB.


clear all;
close all;
clc;
%% import citra
% load data HSI yang telah disimpan oleh RGB -> HSI
load data.mat
H=citra(:,:,1)*2*pi;
S=citra(:,:,2);
I=citra(:,:,3);
%% menyiapkan matriks RGB
R=zeros(size(citra,1),size(citra,2));
G=zeros(size(citra,1),size(citra,2));
B=zeros(size(citra,1),size(citra,2));
%% RG Sector
id=find((H>=0) & (H<2*pi/3));
B(id)=I(id).*(1-S(id));
R(id)=I(id).*(1+(S(id).*cos(H(id))./cos((pi/3)-H(id))));
G(id)=3*I(id)-(R(id)+B(id));
%% BG sector
id=find((H>=2*pi/3) & (H<4*pi/3));
H(id)=H(id)-2*pi/3;
R(id)=I(id).*(1-S(id));
G(id)=I(id).*(1+(S(id).*cos(H(id))./cos((pi/3)-H(id))));
B(id)=3*I(id)-(R(id)+G(id));
%% BR sector
id=find((H>=4*pi/3) & (H<=2*pi));
H(id)=H(id)-4*pi/3;
G(id)=I(id).*(1-S(id));
B(id)=I(id).*(1+(S(id).*cos(H(id))./cos((pi/3)-H(id))));
R(id)=3*I(id)-(B(id)+G(id));
%% show image
citra=cat(3,R,G,B);
citra=max(min(citra,1),0);
imshow(citra);
title('Citra Hasil Konversi HSI -> RGB');

janshendry@gmail.com| [EE&IT of UGM, Indonesia]

January 3, 2012

[Digital Image Processing]

figure,
I=imread('bus2.jpg');
I=im2double(I);
imshow(I);
title('Citra Asli RGB');
%% mencari perbedaan citra asli dan hasil konversi
selisih=imabsdiff(citra,I); % beda absolut
figure, imshow(selisih);
title('Selisih Kedua Citra');
%% end

Hasil eksekusi program di atas adalah

janshendry@gmail.com| [EE&IT of UGM, Indonesia]

January 3, 2012

[Digital Image Processing]

janshendry@gmail.com| [EE&IT of UGM, Indonesia]

January 3, 2012

[Digital Image Processing]

January 3, 2012

Wow hitam sekaleee... hehe..


Itu artinya hasil konversi dari HSI ke RGB berhasil tanpa ada error. Karena nilai 0 pada matlab
diterjemahkan sebagai warna hitam.
Perlu anda perhatikan bahwa data HSI yang digunakan terlebih dahulu di LOAD menggunakan
perintah load pada matlab. Ini saya lakukan karena saya menggunakan data dari program RGB
to HSI pada artikel sebelumnya yang telah saya tulis. Pada artikel RGB to HSI, pada bagian akhir
dari program silahkan anda tambahkan save data.mat citra untuk menyimpan data HSI pada
temporal storage data.mat. Tujuannya adalah agar data tersebut dapat digunakan kapan saja
dan dimana saja serta untuk apa saja. Jika anda ingin menghindari hal itu, maka anda bisa
menggunakan program HSI to RGB ini sebagai fungsi yang akan dipanggil oleh program lain
atau program RGB to HSI.
Demikianlah artikel ini dibuat agar dapat membantu anda dalam menyelesaikan permasalahan
pengolahan citra digital berwarna. Semoga bisa membantu.

@ Terima Kasih.
Sources:
Digital Image Processing 3rd ed. Rafael C. Gonzalez., Richard E. Woods. Pearson Prentice Hall.

janshendry@gmail.com| [EE&IT of UGM, Indonesia]

Anda mungkin juga menyukai