Saat mengonversi dari RGB ke skala abu-abu, dikatakan bahwa bobot spesifik ke saluran R, G, dan B harus diterapkan. Bobot tersebut adalah: 0.2989, 0.5870, 0.1140.
Konon penyebabnya adalah perbedaan persepsi / sensibilitas manusia terhadap ketiga warna tersebut. Kadang-kadang juga dikatakan bahwa ini adalah nilai yang digunakan untuk menghitung sinyal NTSC.
Namun, saya tidak menemukan referensi yang bagus untuk ini di web. Apa sumber dari nilai-nilai ini?
Lihat juga pertanyaan-pertanyaan sebelumnya ini: di sini dan di sini .
Jawaban:
Nomor spesifik dalam pertanyaan berasal dari CCIR 601 (lihat tautan Wikipedia di bawah).
Jika Anda mengonversi RGB -> skala abu-abu dengan angka yang sedikit berbeda / metode berbeda, Anda tidak akan melihat banyak perbedaan sama sekali pada layar komputer normal dalam kondisi pencahayaan normal - cobalah.
Berikut beberapa tautan lain tentang warna secara umum:
Wikipedia Luma
Situs web Bruce Lindbloom yang luar biasa
bab 4 tentang Warna dalam buku Colin Ware, "Visualisasi Informasi", isbn 1-55860-819-2; tautan panjang ke Ware di books.google.com ini mungkin berfungsi atau tidak
cambridgeincolor : "tutorial yang sangat bagus dan ditulis dengan baik tentang cara memperoleh, menafsirkan, dan memproses foto digital menggunakan pendekatan berorientasi visual yang menekankan konsep daripada prosedur"
Jika Anda mengalami RGB "linier" vs "nonlinier", inilah bagian dari catatan lama saya tentang hal ini. Ulangi, dalam praktiknya Anda tidak akan melihat banyak perbedaan.
RGB -> ^ gamma -> Y -> L *
Dalam ilmu warna, nilai RGB umum, seperti dalam html rgb (10%, 20%, 30%), disebut "nonlinear" atau Gamma dikoreksi . Nilai "linier" didefinisikan sebagai
di mana gamma adalah 2.2 untuk banyak PC. RGB biasa kadang-kadang ditulis sebagai R 'G' B '(R' = Rlin ^ (1 / gamma)) (purists tongue-click) tapi di sini saya akan menjatuhkan '.
Kecerahan pada layar CRT sebanding dengan RGBlin = RGB ^ gamma, jadi 50% abu-abu pada CRT cukup gelap: .5 ^ 2.2 = 22% dari kecerahan maksimum. (Layar LCD lebih kompleks; selanjutnya, beberapa kartu grafis mengimbangi gamma.)
Untuk mendapatkan ukuran kecerahan yang dipanggil
L*
dari RGB, pertama bagi RGB dengan 255, dan hitungIni ada
Y
di ruang warna XYZ; itu adalah ukuran "luminansi" warna. (Rumus sebenarnya tidak persis x ^ gamma, tapi dekat; tetap dengan x ^ gamma untuk umpan pertama.)Akhirnya,
sumber
Saya menemukan bahwa publikasi ini direferensikan dalam jawaban atas pertanyaan serupa sebelumnya. Ini sangat membantu:
http://cadik.posvete.cz/color_to_gray_evaluation/
Ini menunjukkan 'banyak' metode berbeda untuk menghasilkan gambar skala abu-abu dengan hasil berbeda!
sumber
Berikut beberapa kode di c untuk mengubah rgb menjadi grayscale. Pembobotan nyata yang digunakan untuk konversi rgb ke grayscale adalah 0,3R + 0,6G + 0,11B. anak timbangan ini tidak terlalu penting sehingga Anda dapat bermain dengannya. Saya telah membuatnya menjadi 0.25R + 0.5G + 0.25B. Ini menghasilkan gambar yang sedikit lebih gelap.
CATATAN: Kode berikut mengasumsikan format piksel xRGB 32bit
sumber
0.11111111 * ((G + (G<<1) + R) <<1) + B)
. Ini sama dengan(2*R+6*G+B) / 9)
atau0.222 R + 0.666 G + 0.111 B
. Sebelum pergi ke produksi, bandingkan dengan formula yang akurat untuk berbagai kasus uji.Berikut adalah makalah tentang bagaimana angka-angka ini (atau yang serupa) diturunkan:
https://web.archive.org/web/20160303201512/http://www.cis.rit.edu/mcsl/research/broadbent/CIE1931_RGB.pdf
sumber
Lihat FAQ Warna untuk informasi tentang ini. Nilai-nilai ini berasal dari standarisasi nilai RGB yang kami gunakan dalam tampilan kami. Sebenarnya, menurut Color FAQ, nilai yang Anda gunakan sudah usang, karena nilai tersebut digunakan untuk standar NTSC asli dan bukan monitor modern.
sumber
"Sumber" dari koefisien yang diposting adalah spesifikasi NTSC yang dapat dilihat di Rec601 dan Karakteristik Televisi .
"Sumber utama" adalah CIE sekitar percobaan tahun 1931 tentang persepsi warna manusia. Respon spektral dari penglihatan manusia tidak seragam. Eksperimen mengarah pada pembobotan nilai tristimulus berdasarkan persepsi. Kerucut L, M, dan S 1 kami peka terhadap panjang gelombang cahaya yang kami identifikasi sebagai "Merah", "Hijau", dan "Biru" (masing-masing), yang merupakan tempat asal warna utama tristimulus. 2
Bobot spektral 3 cahaya linier untuk sRGB (dan Rec709) adalah:
R lin * 0,2126 + G lin * 0,7152 + B lin * 0,0722 = Y
Ini khusus untuk ruang warna sRGB dan Rec709, yang dimaksudkan untuk mewakili monitor komputer (sRGB) atau monitor HDTV (Rec709), dan dirinci dalam dokumen ITU untuk Rec709 dan juga BT.2380-2 (10/2018)
CATATAN KAKI (1) Kerucut adalah sel-sel pendeteksi warna pada retina mata.
(2) Namun, panjang gelombang tristimulus yang dipilih BUKAN pada "puncak" dari setiap jenis kerucut - sebaliknya nilai tristimulus dipilih sedemikian rupa sehingga mereka menstimulasi jenis kerucut tertentu secara substansial lebih dari yang lain, yaitu pemisahan stimulus.
(3) Anda perlu meluruskan nilai sRGB Anda sebelum menerapkan koefisien. Saya membahas ini dalam jawaban lain di sini.
sumber
Nilai-nilai ini berbeda dari orang ke orang, terutama bagi orang yang buta warna.
sumber
apakah semua ini benar-benar diperlukan, persepsi manusia dan CRT vs LCD akan bervariasi, tetapi intensitas RGB tidak, Mengapa tidak
L = (R + G + B)/3
dan mengatur RGB baru ke L, L, L?sumber