необмежені кольори
Екрани та більшість форматів файлів зображень можуть кодувати лише інтенсивність RGB, обмежену певним діапазоном. Наприклад, зображення, закодовані у 8 бітів, можуть містити лише значення від 0 до 255, зображення на 10 бітів від 0 до 1023 і так далі… Графічні стандарти постулюють, що максимум цього діапазону, незалежно від його фактичного значення, завжди буде представляти максимальну яскравість, яку здатний надати дисплей, як правило, від 100 до 160 кд/м² (або ніт) залежно від фактичного стандарту. Ми зазвичай називаємо цей максимум “100 % на основі відображення”. Мінімум діапазону, кодований 0, незалежно від використовуваної бітової глибини, стає тоді “0 % на основі відображення”. 100 % кодує чисто білий, 0 % кодує чисто чорний.
Це є обмеженням для програм обробки зображень, оскільки це означає, що будь-який піксель, що лежить за межами цього діапазону, буде відсічений до найближчої межі, що призведе до непоправної втрати даних (кольорів та/або текстури).
Довгий час програмне забезпечення для обробки зображень мало ці обмеження з технічних причин, а деякі все ще мають, але зараз це є вибором дизайну. Як результат, вони будуть відсікати інтенсивність RGB на рівні 100 % на основі відображення між операціями над зображенням.
darktable використовує арифметику з рухомою крапкою всередині свого конвеєра обробки, що означає, що він може обробляти будь-яке значення RGB внутрішньо, навіть те, що знаходиться поза діапазоном на основі відображення, якщо воно є позитивним. Лише в самому кінці конвеєра, перед тим, як зображення зберігається у файлі або надсилається для відображення, значення RGB відсікаються, якщо це необхідно.
Пікселі, які можуть приймати значення за межами діапазону відображення, мають “необмежені кольори”. Можна було б затиснути (тобто обмежити) ці значення до дозволеного діапазону на кожному етапі обробки або вибрати продовжити обробку з ними, і затиснути їх лише на останньому кроці в конвеєрі. Однак було виявлено, що обробка менш схильна до артефактів, якщо необмежені кольори не затискаються, а обробляються так само, як і будь-які інші кольорові дані.
У кінці конвеєра такі модулі, як filmic rgb, можуть допомогти вам перепризначити значення RGB до діапазону, що відображається на екрані, максимізуючи збереження даних та уникаючи жорсткого відсікання, яке, як правило, не дуже приємне візуально.
Однак в конвеєрі ви повинні постійно забезпечувати, що не створюєте негативних значень RGB. Інтенсивності RGB кодують випромінювання світла, а негативного світла не існує. Ті модулі, які покладаються на фізичне розуміння світла для обробки пікселів, зазнають невдачі, якщо вони зіткнуться з нефізичним випромінюванням світла. З міркувань безпеки негативні значення RGB все ще відсікаються, коли вони можуть спричинити збій алгоритмів, але візуальний результат може виглядати погіршеним. Негативні значення можуть бути отримані при зловживанні рівнем чорного в експозиції або зміщення в колірний баланс і слід бути обережними при використанні цих модулів.