Pengolahan Citra – 03 Warna
Download
Report
Transcript Pengolahan Citra – 03 Warna
Pengolahan Citra Digital
3 – Warna dan Operasinya
Disusun oleh Teady Matius Surya Mulyana
([email protected] / [email protected] )
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/cmykprint1.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)
–
•
Color(float r, float g, float b)
–
•
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 07.
Color(int r, int g, int b)
–
•
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 red, green, blue, and alpha values in the range (0.0 - 1.0).
Color(int rgb)
–
•
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 a color in the specified ColorSpace with the color components specified in the float array and the
specified alpha.
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 masingmasing 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