Pengolahan Citra Digital 3 – Warna dan Operasinya Disusun oleh Teady Matius Surya Mulyana (teadymatius@yahoo.com / tmulyana@bundamulia.ac.id ) Dari berbagai sumber
RGB R Red G Green B Blue Setiap byte menunjukan nilai warna yang diwakili tersebut pada suatu pixel. Misal: FFFFFF putih FF0000 merah 00FF00 hijau 0000FF biru 000000 hitam FFFF00 kuning
RGB illumination Sumber gambar: http://art110.wikispaces.com/file/view/RGB_illumination.jpg/34175247/RGB_illumination.jpg Diakses tanggal: 7 Maret 2013
CMYK C Cyan M Magenta Y Yellow K derajat kehitaman Sumber gambar: http://3.bp.blogspot.com/-Urth6mtuA04/TiwNCR4HaSI/AAAAAAAAAWs/pPaNHCEBxXg/s1600/cmyk-print1.jpg Diakses tanggal 7 Maret 2013
CMYK Mixing Sumber gambar: http://bpiinc.files.wordpress.com/2011/11/cmyk.jpg Diakses tanggal: 7 Maret 2013
RGB vs CMYK Sumber gambar: http://www.12on14.com/dpi/rgb-cmyk.jpg Diakses tanggal 7 maret 2013
RGB to CMYK C = 1 – R M = 1 – G Y = 1 – B K = 0 untuk warna bukan hitam K = 1 untuk warna hitam Sumber gambar: http://i656.photobucket.com/albums/uu289/younis-des/vgn4nq.jpg Diakses tanggal 7 maret 2013
HIS/HSV/HSL H Hue S Saturation I Intensity / V Value / L Luminous
Warna pada JAVA Ditangani oleh method setColor(Color c) yang terdapat pada Class Graphics.
Constructor Class Color Color(ColorSpace cspace, float[] components, float alpha) Creates a color in the specified ColorSpace with the color components specified in the float array and the specified alpha. Color(float r, float g, float b) Creates an opaque sRGB color with the specified red, green, and blue values in the range (0.0 - 1.0). Color(float r, float g, float b, float a) Creates an sRGB color with the specified red, green, blue, and alpha values in the range (0.0 - 1.0). Color(int rgb) Creates an opaque sRGB color with the specified combined RGB value consisting of the red component in bits 16-23, the green component in bits 8-15, and the blue component in bits 0-7. Color(int rgba, boolean hasalpha) Creates an sRGB color with the specified combined RGBA value consisting of the alpha component in bits 24-31, the red component in bits 16-23, the green component in bits 8-15, and the blue component in bits 0-7. Color(int r, int g, int b) Creates an opaque sRGB color with the specified red, green, and blue values in the range (0 - 255). Color(int r, int g, int b, int a) Creates an sRGB color with the specified red, green, blue, and alpha values in the range (0 - 255).
Catatan untuk Pemakaian Constructor Class Color Untuk nilai alpha tidak kita perlukan, jadi gunakan construtor yang alphanya sudah pasti di set 255 untuk yang bertipe integer atau 1 untuk yang bertipe float. Gunakan Constructor dengan format rgb yang terpisah, agar anda tidak perlu melakukan operasi untuk memisahkan nilai-nilai rgb nya. Constructor yang disarankan: Color(float r, float g, float b) Color(int r, int g, int b)
Memilah RGB pada java Nilai yang didapat dari pengambilan warna pada suatu pixel adalah suatu nilai integer. Komposisi warna RGB pada warna adalah alpha|Red|Green|Blue yang masing-masing bernilai 1 byte.
Memperoleh warna B Untuk mendapatkan nilai B, ambil 1 byte (8 bit) dari belakang, masukkan ke variable penampungnya. Dapat dilakukan dengan melakukan operasi bitwise operator & dengan nilai 0xff untuk menghilangkan nilai alpha, R dan G nya Operasi akan menghasilkan nilai integer untuk komponen warna B Contoh: b=warna & 0xff; Jika warna bernilai ff352A37 = 1111 1111 0011 0101 0010 1010 0011 0111 Maka operasi bitwise & 0xff terhadap variabel warna akan menghasilkan nilai 0000037 1111 1111 0011 0101 0010 1010 0011 0111 0000 0000 0000 0000 0000 0000 1111 1111 _____________________________________ & 0000 0000 0000 0000 0000 0000 0011 0111 = $00000037 = 55
Memperoleh nilai G Ambil byte ke 2 dari belakang (lsb) masukkan ke variable penampungnya. Untuk melakukan hal tersebut, lakukan operasi shift kanan sebanyak 8 kali, sehingga akan didapatkan byte ke 2-lsb tersebut menjadi byte ke 1-lsb. Kemudian lakukan operasi bitwise & dengna 0xff untuk menghilangkan nilai alpha dan R nya Contoh g=(warna >> 8) & 0xff; Jika warna bernilai ff352A37 = 1111 1111 0011 0101 0010 1010 0011 0111 Maka operasi bitwise (warna >> 8) & 0xff terhadap variabel warna akan menghasilkan nilai 000002A 0000 0000 1111 1111 0011 0101 0010 1010 0000 0000 0000 0000 0000 0000 1111 1111 _____________________________________ & 0000 0000 0000 0000 0000 0000 0010 1010 = $0000002A = 41
Memperoleh nilai R Ambil byte ke 3 dari belakang (lsb) masukkan ke variable penampungnya. Untuk melakukan hal tersebut, lakukan operasi shift kanan sebanyak 16 kali, sehingga akan didapatkan byte ke 3-lsb tersebut menjadi byte ke 1-lsb. Kemudian lakukan operasi bitwise & dengan 0xff untuk menghilangkan nilai alpha Contoh g=(warna >> 8) & 0xff; Jika warna bernilai ff352A37 = 1111 1111 0011 0101 0010 1010 0011 0111 Maka operasi bitwise (warna >> 16) & 0xff terhadap variabel warna akan menghasilkan nilai 000002A 0000 0000 0000 0000 1111 1111 0011 0101 0000 0000 0000 0000 0000 0000 1111 1111 _____________________________________ & 0000 0000 0000 0000 0000 0000 0011 0101 = $00000035 = 53
Operasi-operasi warna pada RGB Negative: 255-C Darken: C/p atau C-p Brighten: C*p atau C+p Greyscale: (R+G+B) / 3 Remove Channel: Pengaturan satu channel atau lebih menjadi 0 Swap Channel: Menukar nilai-nilai dari dua channel
Negative Negative = 255-C C adalah nilai masing-masing channel warna yang diwakili Mengubah warna menjadi kebalikannya
Grayscale Grayscale = (R+G+B) / 3 Untuk menghasilkan warna grayscale, dapat dilakukan dengan menjumlah semua nilai R, G dan B serta membagi hasilnya dengan 3
Darken Darken = C/p atau Darken = C-p Membagi atau mengurangi warna dengan suatu nilai p agar terlihat lebih gelap
Brighten Brighten = C*p atau Brighten = C+p Mengalikan warna dengan konstan ataunpun menambahkan warna dengan suatu nilai p agar terlihat lebih terang