Відповідь "Прийнято" неправильна та неповна
Єдиними точними відповідями є відповіді @ jive-dadson та @EddingtonsMonkey та підтримка @ nils-pipenbrinck . Інші відповіді (включаючи прийняті) стосуються посилань на джерела, які є неправильними, неактуальними, застарілими або порушеними.
Коротко:
- sRGB перед застосуванням коефіцієнтів необхідно ЛІНІЯНЗАЛІЗУВАТИ .
- Яскравість (L або Y) лінійна, як і світло.
- Сприйнята легкість (L *) нелінійна, як і людське сприйняття.
- ВПГ та ХСЛ навіть не є віддаленими точними щодо сприйняття.
- Стандарт IEC для sRGB визначає поріг 0,04045, це НЕ 0,03928 (це було від застарілого раннього проекту).
- Щоб бути корисними (тобто відносно сприйняття) , евклідові відстані потребують перцептивно рівномірного декартового векторного простору, такого як CIELAB. sRGB - це не один.
Далі правильна і повна відповідь:
Оскільки ця нитка виявляється високо в пошукових системах, я додаю цю відповідь, щоб уточнити різні помилки з цього приводу.
Яскравість - це перцептивний атрибут, він не має прямої міри.
Сприйнята легкість вимірюється деякими моделями зору, такими як CIELAB, тут L * (Lstar) - це міра перцептивної легкості і нелінійна для наближення кривої реакції людського зору до нелінійної відповіді.
Яскравість - це лінійна міра світла, спектрально зважена для нормального зору, але не пристосована для нелінійного сприйняття легкості.
Luma ( Y´ prime) - це гамма-кодований зважений сигнал, який використовується у деяких відеокодуваннях. Його не слід плутати з лінійною яскравістю.
Гамма або крива передачі (TRC) - крива, яка часто схожа на перцептивну криву, і зазвичай застосовується до даних зображення для зберігання або трансляції для зменшення сприйнятого шуму та / або поліпшення використання даних (та пов'язаних з цим причин).
Для визначення сприйнятої легкості спочатку перетворять значення зображення, кодовані гаммою R´G´B´, в лінійну яскравість ( L
або Y
), а потім у нелінійну сприйману легкість ( L*
)
ЗНАЙДЕНО СВЯТЛЕННЯ:
... Тому що, мабуть, воно десь загубилося ...
Крок перший:
Перетворіть усі значення sRGB 8-бітних цілих чисел у десяткові 0,0-1,0
vR = sR / 255;
vG = sG / 255;
vB = sB / 255;
Крок другий:
Перетворіть гамма, кодовану RGB, у лінійне значення. Наприклад, sRGB (комп'ютерний стандарт) вимагає кривої потужності приблизно V ^ 2.2, хоча "точне" перетворення таке:
Де V '- гамма-кодований R, G або B канал sRGB.
Псевдокод:
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));
}
}
Крок третій:
Щоб знайти Luminance (Y), застосуйте стандартні коефіцієнти для sRGB:
Псевдокод за допомогою вищезазначених функцій:
Y = (0.2126 * sRGBtoLin(vR) + 0.7152 * sRGBtoLin(vG) + 0.0722 * sRGBtoLin(vB))
ЗНАЙТИ ПЕРЦЕВІРОВАНУ Світлоту:
Крок четвертий:
Візьміть яскравість Y зверху і перетворіть на L *
Псевдокод:
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 * - значення від 0 (чорне) до 100 (біле), де 50 - перцептивний "середній сірий". L * = 50 - еквівалент Y = 18,4, або іншими словами, сіра карта 18%, що представляє середину фотографічної експозиції (зона V Анселя Адамса).
Список літератури:
IEC 61966-2-1:1999 Standard
Wikipedia sRGB
Wikipedia CIELAB
Wikipedia CIEXYZ
Часто відповіді про гамму Чарльза Пойнтона