Câu trả lời "Được chấp nhận" là không chính xác và không đầy đủ
Câu trả lời duy nhất chính xác là câu trả lời @ jive-Dadson và @EddingtonsMonkey và hỗ trợ @ nils-pipenbrinck . Các câu trả lời khác (bao gồm cả được chấp nhận) đang liên kết đến hoặc trích dẫn các nguồn sai, không liên quan, lỗi thời hoặc bị hỏng.
Tóm tắt:
- sRGB phải được TUYỆT VỜI trước khi áp dụng các hệ số.
- Độ chói (L hoặc Y) là tuyến tính như ánh sáng.
- Sự nhẹ nhàng nhận thức (L *) là phi tuyến tính như nhận thức của con người.
- HSV và HSL thậm chí không chính xác từ xa về mặt nhận thức.
- Tiêu chuẩn IEC cho sRGB chỉ định ngưỡng 0,04045 KHÔNG phải là 0,03928 (đó là từ một dự thảo ban đầu đã lỗi thời).
- Hữu ích (tức là liên quan đến nhận thức) , khoảng cách Euclidian đòi hỏi một không gian vectơ Cartesian đồng nhất về mặt nhận thức như CIELAB. sRGB không phải là một.
Điều gì sau đây là một câu trả lời đúng và đầy đủ:
Bởi vì chủ đề này xuất hiện rất nhiều trong các công cụ tìm kiếm, tôi đang thêm câu trả lời này để làm rõ những quan niệm sai lầm khác nhau về chủ đề này.
Độ sáng là một thuộc tính tri giác, nó không có thước đo trực tiếp.
Độ sáng cảm nhận được đo bằng một số mô hình tầm nhìn như CIELAB, ở đây L * (Lstar) là thước đo độ sáng cảm nhận và là phi tuyến tính để xấp xỉ đường cong phản ứng phi tuyến tính của thị giác con người.
Độ chói là một thước đo tuyến tính của ánh sáng, có trọng số phổ cho tầm nhìn bình thường nhưng không được điều chỉnh cho nhận thức phi tuyến tính về độ sáng.
Luma ( Y tướng Prime) là tín hiệu được mã hóa, có trọng số gamma được sử dụng trong một số mã hóa video. Nó không bị nhầm lẫn với độ chói tuyến tính.
Gamma hoặc đường cong chuyển (TRC) là một đường cong thường tương tự như đường cong tri giác và thường được áp dụng cho dữ liệu hình ảnh để lưu trữ hoặc phát sóng để giảm nhiễu nhận biết và / hoặc cải thiện việc sử dụng dữ liệu (và lý do liên quan).
Để xác định độ sáng cảm nhận , trước tiên, chuyển đổi các giá trị hình ảnh gamma được mã hóa RmaGNHBB thành độ chói tuyến tính ( L
hoặc Y
) và sau đó thành độ sáng cảm nhận phi tuyến tính ( L*
)
ĐỂ TÌM KIẾM LUMINANCE:
... Bởi vì rõ ràng nó đã bị mất ở đâu đó ...
Bước một:
Chuyển đổi tất cả các giá trị nguyên 8 bit sRGB thành số thập phân 0,0-1,0
vR = sR / 255;
vG = sG / 255;
vB = sB / 255;
Bước hai:
Chuyển đổi một gamma được mã hóa RGB thành giá trị tuyến tính. Chẳng hạn, sRGB (tiêu chuẩn máy tính) yêu cầu đường cong công suất xấp xỉ V ^ 2.2, mặc dù biến đổi "chính xác" là:
Trong đó Vạc là kênh R, G hoặc B được mã hóa gamma của sRGB.
Mã giả:
function sRGBtoLin(colorChannel) {
// Send this function a decimal sRGB gamma encoded color value
// between 0.0 and 1.0, and it returns a linearized value.
if ( colorChannel <= 0.04045 ) {
return colorChannel / 12.92;
} else {
return pow((( colorChannel + 0.055)/1.055),2.4));
}
}
Bước thứ ba:
Để tìm Độ chói (Y), hãy áp dụng các hệ số tiêu chuẩn cho sRGB:
Mã giả sử dụng các chức năng trên:
Y = (0.2126 * sRGBtoLin(vR) + 0.7152 * sRGBtoLin(vG) + 0.0722 * sRGBtoLin(vB))
ĐỂ TÌM KIẾM ÁNH SÁNG HOÀN HẢO:
Bước bốn:
Lấy độ chói Y từ trên xuống và biến đổi thành L *
Mã giả:
function YtoLstar(Y) {
// Send this function a luminance value between 0.0 and 1.0,
// and it returns L* which is "perceptual lightness"
if ( Y <= (216/24389) { // The CIE standard states 0.008856 but 216/24389 is the intent for 0.008856451679036
return Y * (24389/27); // The CIE standard states 903.3, but 24389/27 is the intent, making 903.296296296296296
} else {
return pow(Y,(1/3)) * 116 - 16;
}
}
L * là một giá trị từ 0 (đen) đến 100 (trắng) trong đó 50 là "màu xám trung bình" nhận thức. L * = 50 tương đương với Y = 18,4, hay nói cách khác, thẻ màu xám 18%, đại diện cho phần giữa của một bức ảnh phơi sáng (Ansel Adams khu V).
Người giới thiệu:
IEC 61966-2-1:1999 Standard
Wikipedia sRGB
Wikipedia CIELAB
Wikipedia CIEXYZ
Câu hỏi thường gặp về Gamma của Charles Poynton