TEKNIK PENGOLAHAN CITRA Kuliah 14 – Pemrosesan Warna
Indah Susilawati, S.T., M.Eng.
Program Studi Teknik Informatika/Sistem Informasi Fakultas Teknologi Informasi Universitas Mercu Buana Yogyakarta 2014
KULIAH 14 TEKNIK PENGOLAHAN CITRA PEMROSESAN WARNA (COLOUR PROCESSING) Warna merupakan gambaran atau deskripsi penting bagi manusia mengenai dunia di sekitarnya. Sistem visual manusia khususnya berkaitan dengan dua hal yaitu tebing atau tepi (edge) dan warna (colour). Sistem visual manusia mempunyai kecenderungan tidak baik dalam hal perubahan yang samar (perubahan kecil) pada level atau aras keabuan. Pemahaman mengenai warna terdiri atas: 1. Sifat fisik cahaya yang menimbulkan warna. 2. Sifat alamiah mata manusia dan caranya dalam mendeteksi (mengenali) warna. 3. Sifat alamiah pusat penglihatan mata manusia dalam otak dan bagaimana cara pesan dari mata diterjemahkan sebagai warna.
Cahaya tampak merupakan bagian dari spektrum elektromagnetik. Besaranbesaran panjang-gelombang untuk biru, hijau, dan merah ditetapkan pada tahun 1931 oleh CIE (Commission Internationale d’Eclairage) yaitu sebuah organisasi atau badan dunia yang mempunyai wewenang mengenai standar warna. Sistem penglihatan manusia cenderung menganggap setiap warna merupakan gabungan antara warna merah, hijau, dan biru. Dengan kata lain bahwa penglihatan manusia sensitif terhadap ketiga warna tersebut; yaitu merupakan fungsi dari sel-sel cone yang ada di dalam retina mata. Tiga warna ini, yaitu merah, hijau, dan biru, disebut dengan istilah warna primer. Jika dua sebarang warna primer digabung maka akan diperoleh warna sekunder, contoh: Magenta
=
merah + biru
Cyan
=
hijau + biru
Kuning
=
merah + hijau
Besarnya prosentase warna merah, hijau, dan biru yang menentukan suatu warna tertentu dapat diketahui dengan eksperimen yang disebut colour matching. Salah satu yang
dihasilkan oleh percobaan yang dilakukan oleh CIE pada tahun 1931 diperlihatkan pada gambar berikut ini.
Gambar 1. Fungsi colour matching RGB (CIE, 1931)
Perhatikan bahwa untuk beberapa besaran panjang-gelombang, nilai warna merah, hijau, atau biru menjadi negatif; hal ini diinterpretasikan sebagai penambahan berkas warna primer pada sumber cahaya. Untuk menghindari nilai negatif yang diakibatkan oleh hasil colour matching RGB (CIE, 1931), CIE memperkenalkan model warna XYZ. Nilai X, Y, dan Z dapat diperoleh dari nilai R, G, dan B menggunakan alihragam atau transformasi linier sebagai berikut.
(1) Dan sebaliknya, nilai R, G, dan B dapat diperoleh kembali dengan cara invers matriks dan dapat dinyatakan sebagai berikut.
(2)
Fungsi colour matching XYZ yang bersesuaian dengan kurva R, G, B pada gambar 1 diperlihatkan pada gambar 2.
Gambar 2. Fungsi colour matching XYZ (CIE, 1931) Komponen Y bersesuaian dengan luminansi (luminance), atau kecerahan (brightness) dari warna tersebut. Hal ini merupakan alasan mengapa pada persamaan (1) di atas, baris kedua matriksnya yang bersesuaian dengan komponen Y dan jika dijumlahkan hasilnya 1, serta pada gambar 2 kurva Y simetris tepat di tengah-tengah spektrum cahaya tampak. Secara umum, nilai X, Y, dan Z yang diperlukan untuk membentuk sebarang warna disebut nilai tristimulus (ada tabel khusus untuk mengetahui nilai tristimulus untuk setiap warna). Untuk mempelajari warna tanpa terpengaruh oleh nilai kecerahan,
nilai tristimulus dapat dinormalisasi dengan cara membaginya dengan (X + Y + Z), sehingga:
(3)
Dengan demikian maka x + y + z = 1 dan sebuah warna dapat ditentukan dengan x dan y saja dan disebut koordinat kromatisitas (chromaticity coordinates).
Model-Model Warna Model warna adalah metode untuk menentukan warna menurut suatu standar tertentu. Secara umum biasanya terdiri atas sistem koordinat tiga dimensi dan dalam setiap subspace-nya warna diwakili oleh satu titik tunggal. Dalam bab ini akan dibahas tiga sistem model warna yaitu: 1. Model warna RGB 2. Model warna HSV 3. Model warna YIQ
Model Warna RGB. Dalam model ini, setiap warna diwakili oleh nilai R, G, dan B, masing-masing menunjukkan bagian atau prosentase warna merah, hijau, dan biru yang digunakan untuk membentuk warna tersebut. Model ini digunakan untuk display pada layar komputer; sebuah monitor mempunyai tiga senapan elektron yang independen untuk komponen merah, hijau, dan biru. Dari gambar 1, sejumlah warna memerlukan nilai negatif untuk R, G, dan B; tentu saja hal ini tidak dapat direalisasikan pada monitor komputer atau TV karena hanya nilai positif saja yang dimungkinkan. Warna-warna yang bersesuaian dengan nilai-nilai positif membentuk gamut RGB; secara umum gamut warna terdiri atas semua warna yang dapat direalisasikan oleh sebuah model warna. Misalnya dalam hal model RGB ini, gamut warna RGB sesuai gambar 1 dapat diplot menggunakan Matlab, jika nilai RGB ada yang
negatif maka dapat dibuat ouputnya berwarna putih. Salah satu contohnya diperlihatkan pada gambar 3.
Gambar 3. Gamut RGB
Model Warna HSV. HSV merupakan kependekan dari Hue, Saturation, Value. Berikut definisi dari ketiga istilah tersebut. Hue merupakan atribut warna yang sebenarnya (merah, hijau, biru, oranye, kuning dan seterusnya). Saturation menyatakan seberapa banyak warna putih yang tercampur pada warna tersebut. Makin banyak warna putih yang ada maka makin rendah saturasi-nya. Dengan demikian warna merah tua mempunyai saturasi yang tinggi dan warna merah muda (pink) mempunyai saturasi rendah. Value menyatakan derajat kecerahan; warna yang cerah mempunyai intensitas tinggi, warna gelap mempunyai intensitas rendah. Konversi RGB ke HSV. Misalkan sebuah warna dinyatakan dengan nilai RGB. Jika nilai R, G, dan B sama besar, maka warnanya merupakan aras keabuan; yaitu intensitas warna putih. Warna yang semua komponennya putih mempunyai saturasi nol. Sebaliknya, jika nilai R, G, dan B masing-masing sangat berbeda satu sama lain maka warna tersebut mempunyai saturasi tinggi. Jika salah satu atau dua dari R, G, atau B bernilai nol maka saturasinya satu (nilai saturasi paling tinggi).
Hue didefinisikan sebagai fraksi sepanjang lingkaran berawal dari warna merah, yang bersesuaian dengan nilai hue = 0. Perhatikan gambar 4.
Gambar 4. Ruang warna HSV sebagai sebuah kerucut
Berdasarkan gambar 4, nilai hue untuk beberapa warna adalah sebagai berikut.
Misalkan terdapat nilai R, G, dan B, yang nilainya (=value) antara 0 dan 1. Maka jika ternyata berada di antara 0 dan 255, maka pertama-tama masing-masing nilai harus dibagi dengan 255. Selanjutnya definisikan: V = maks (R, G, B) = V – min (R, G, B) S=/V
Untuk memperoleh nilai hue, harus diperhatikan beberapa kasus sebagai berikut. 1. Jika R = V maka H
1GB 6
2. Jika G = V maka H
1 B R 2 6
3. Jika B = V maka H
1 R G 4 6
Jika H yang dihasilkan bernilai negatif maka tambahkan dengan 1. Untuk kasus khusus (R, G, B) = (0, 0, 0) yang berarti juga V = = 0 maka didefinisikan (H, S, V) = (0, 0, 0).
Contoh Misalkan (R, G, B) = (0,2; 0,4; 0,6) maka V = maks (0,2; 0,4; 0,6) = 0,6 = V – min (0,2; 0,4; 0,6) = 0,6 – 0,2 = 0,4 S = 0,4 / 0,6 = 0,6667 Oleh karena B = V maka nilai H dihitung sebagai berikut:
H
1 R G 4 6 1 0,2 0,4 4 6 0,4
0,5833 Maka nilai konversi yang dihasilkan adalah (H, S, V) = (0,5833; 0,6667; 0,6)
Program Matlab menyediakan fungsi untuk mengkonversi nilai RGB ke nilai HSV, yaitu fungsi rgb2hsv.m. Dengan menggunakan fungsi ini dapat dicek apakah hasil konversi tersebut di atas sudah benar.
>> rgb2hsv ([0.2 0.4 0.6]) ans = 0.5833
0.6667 0.6000
Dan hasilnya ternyata sesuai dengan hasil perhitungan seperti pada contoh.
Konversi HSV ke RGB. Untuk mengkonversi dari nilai HSV ke RGB dapat dilakukan dengan cara sebagai berikut. Definisikan: H’ = [6 H ] ambil nilai bulatnya saja F = 6 H – H’ P = V (1 – S ) Q = V (1 – SF ) T = V (1 – S ( 1 – F ) ) Oleh karena H’ merupakan nilai bilangan bulat antara 0 dan 5, maka ada 6 kasus berbeda yang harus diperhatikan untuk proses konversi, pergunakan tabel konversi berikut.
Contoh Konversi balik pada contoh sebelumnya yaitu (H, S, V) = (0,5833; 0,6667; 0,6) menjadi nilai RGB. Maka: H’ = [6 X 0,5833] = 3 F = (6 X 0,5833) – 3 = 0,5 P = 0,6 (1 – 0,6667) = 0,2 Q = 0,6(1 – (0,6667)(0,5)) = 0,4 T = 0,6(1 – 0,6667(1 – 0,5) = 0,4 Oleh karena H’ = 3 maka berarti (R, G, B) = (P, Q, V) yaitu (R, G, B) = (0,2; 0,4; 0,6)
Dalam Matlab konversi HSV ke RGB diimplementasikan dengan fungsi hsv2rgb.m.
Model Warna YIQ. Model warna jenis ini digunakan untuk TV/video di negaranegara yang memakai standar video NTSC. Komponen Y merupakan luminansi (berkaitan dengan intensitas), dan komponen I dan Q membawa informasi warna (kroma). Konversi antara RGB dan YIQ dapat dilakukan menggunakan matriks berikut.
Konversi antara RGB dan YIQ diimplementasikan dalam Matlab dengan fungsi rgb2ntsc.m dan ntsc2rgb.m.
Citra Warna dalam Matlab Dalam Matlab, citra warna dinyatakan sebagai array berukuran m x n x 3 yaitu sebuah array tiga dimensi. Array ini dapat dipandang sebagai tiga matriks yang terpisah yang disejajarkan secara vertikal. Perhatikan gambar 5 berikut.
Gambar 5. Array tiga dimensi untuk sebuah citra RGB
Misalkan akan dibaca sebuah citra sebagai berikut. >> x = imread ('lily.jpeg'); >> y = size (x)
y=
91 137
3
Artinya bahwa citra ‘lily’ terbaca sebagai sebuah matriks berukuran 91 x 137 x 3, yaitu sebagai sebuah array 3 dimensi. Lapis pertama merupakan komponen warna merah, lapis kedua merupakan komponen warna hijau, dan lapis ketiga merupakan komponen warna biru. Untuk menampilkan masing-masing komponen warna dapat digunakan sintaks sebagai berikut. >> merah = x(:,:,1); >> hijau = x(:,:,2); >> biru = x(:,:,3); >> imshow (merah) >> imshow (hijau) >> imshow (biru)
Citra warna
Komponen merah
Komponen hijau
Komponen biru
Gambar 6. Citra warna dan komponen-komponen RGB
Citra yang dihasilkan dari komponen warna merah menunjukkan bagian dalam bunga lily mempunyai intensitas paling tinggi di antara dua komponen yang lain. Citra yang dihasilkan dari komponen warna hijau menunjukkan bagian daun mempunyai intensitas paling tinggi di antara dua komponen yang lain. Sedangkan pada citra yang dihasilkan oleh komponen warna biru tampak bahwa citra cenderung gelap (intensitas rendah) karena warna biru memang tidak tampak pada citra tsb.
Pewarnaan Semu (Pseudocolouring) Pewarnaan semu merupakan suatu kegiatan untuk memberi warna pada citra aras keabuan dengan tujuan untuk kemudahan interpretasi secara visual pada citra tersebut, misalnya pada citra-citra medis. Ada beberapa metode untuk pewarnaan semu.
1. Pembagian Intensitas (Intensity Slicing) Dalam metode ini, citra dibagi menjadi beberapa jangkauan aras keabuan, kemudian untuk masing-masing jangkauan dialokasikan satu warna tertentu. Misalnya contoh berikut.
Aras keabuan Warna
0 – 63
64 – 127
128 – 191
192 – 255
Biru
Magenta
Hijau
Merah
Alokasi warna di atas dapat juga dipandang sebagai suatu pemetaan pada Gambar berikut.
Gambar 7. Intensity Slicing sebagai suatu pemetaan
2. Transformasi Aras Keabuan ke Warna Dalam metode ini digunakan fungsi-fungsi fR(x), fG(x), dan fB(x) untuk keperluan transformasi atau alih-ragam setiap nilai aras keabuan x. Nilai hasil transformasi kemudian digunakan untuk menampilkan citra atau gambar (setelah proses penskalaan yang diperlukan). Misalkan akan dibuat transformasi seperti pada Gambar 7; maka peta warna (colour map) terdiri atas matriks dengan 3 kolom dan setiap barisnya mengandung nilai-nilai RGB antara 0 hingga 1. Maka peta warna tsb dapat ditampilkan sbb.
Tabel 1. Peta warna Warna asli Warna transformasi Biru Magenta Hijau Merah
Merah 0 1 0 1
Colormap yang disediakan Matlab adalah sbb.
Hijau 0 0 1 0
Biru 1 1 0 0
Misalkan akan mengubah citra cameraman.tif menjadi citra warna menggunakan colormap jenis jet. >> b=imread('cameraman.tif'); >> imshow(b,colormap(jet(256))) Hasilnya:
Gambar 8. Citra cameraman.tif asli dan hasil pewarnaan dengan colormap jet
Cobalah menggunakan colormap jenis-jenis yang lain.
Menggunakan peta warna pada Tabel 1, diperoleh hasil sbb (untuk citra stair.png). >> b=imread('stairs.png'); >> mycolourmap=[0 0 1;1 0 1;0 1 0;1 0 0]; >> b4=grayslice(b,4); >> imshow(b4,mycolourmap)
Hasilnya terlihat pada gambar di bawah (asli dan hasil pewarnaan)
Gambar 9. Citra stairs.png asli dan hasil pewarnaan dengan colormap Tabel 1
Cobalah menggunakan colormap yang disediakan Matlab, atau colormap buatan anda sendiri.
Pemrosesan Citra Warna Pemrosesan citra warna dapat dilakukan dengan dua cara sbb: 1. Memproses atau mengolah matriks (lapisan) R, G, B secara terpisah, 2. Mentrasformasi menjadi color space yang lain yang memisahkan intensitas dari warna, kemudian mengolah komponen intensitasnya saja Secara diagram kedua cara ini diperlihatkan pada gambar 10 berikut.
Contrast Enhancement Contrast enhancement untuk citra warna paling baik dilakukan dengan mengolah komponen intensitasnya/komponen-Y (cara no 2). clear all; clc; I=imread('stasiun.jpg'); J=rgb2ntsc(I); J(:,:,1)=histeq(J(:,:,1)); JJ=ntsc2rgb(J); imshow(I) figure, imshow(JJ) Hasilnya diperlihatkan pada gambar 11.
Gambar 10. Pemrosesan citra warna (cara no. 1 dan 2)
Gambar 11. Pemrosesan citra warna (cara no 2)
Cobalah untuk menggunakan cara no 1, bagaimana hasilnya? Cara yang sama juga dapat dilakukan untuk filtering, noise reduction, dan edge detection yaitu dengan mengolah komponen intensitasnya saja atau dengan mengolah masing-masing lapisan RGB lalu menggabungkannya kembali. Untuk menggabungkan lapisan-lapisan matriks menjadi satu kembali dapat digunakan fungsi cat.m (cari bagaimana sintaknya dengan help cat).
Gambar 12. Deteksi tepi citra warna (contoh hasil)
Tugas Kumpulkan hasilnya paling lambat Senin, 5 Januari 2015 pukul 16.00 WIB (coding dalam tulisan tangan, hasilnya gunakan print out) 1. Lakukan noise reduction (noise removal) pada citra warna (citra peppers2.jpg) dengan
mengolah
masing-masing
lapisan
(R,
G,
dan
B)
kemudian
menggabungkannya kembali. Pilih filter yang sesuai (derau pada citra adalah derau jenis salt & pepper). 2. Lakukan edge detection pada citra warna (citra peppers.png) dengan mengolah masing-masing lapisan (R, G, dan B) kemudian menggabungkannya kembali. Gunakan operator deteksi tepi yang pernah diberikan dalam pertemuan sebelumnya.