You are on page 1of 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 = Sektor GB untuk 1200 H < 2400 Terlebih dahulu hitung nilai H: = Lalu hitung nilai RGB: = (1 ) = Sektor BR untuk 2400 H 3600 Terlebih dahulu hitung nilai H: = Lalu hitung nilai RGB: = (1 ) = 1+ cos cos(60 ) 240 1+ cos cos(60 ) 120 = (1 ) 1+

=3 ( + )

cos cos(60 )

=3 ( + )

=3 ( + )

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

[Digital Image Processing]

January 3, 2012

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]

[Digital Image Processing]

January 3, 2012

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]

[Digital Image Processing]

January 3, 2012

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

[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]

You might also like