Екрани та більшість форматів файлів зображень можуть кодувати лише інтенсивність RGB, обмежену певним діапазоном. Наприклад, зображення, закодовані у 8 бітів, можуть містити лише значення від 0 до 255, зображення на 10 бітів від 0 до 1023 і так далі… Графічні стандарти постулюють, що максимум цього діапазону, незалежно від його фактичного значення, завжди буде представляти максимальну яскравість, яку здатний надати дисплей, як правило, від 100 до 160 кд/м² (або ніт) залежно від фактичного стандарту. Ми зазвичай називаємо цей максимум “100% на основі відображення”. Мінімум діапазону, кодований 0, незалежно від використовуваної бітової глибини, стає тоді “0% на основі відображення”. 100% кодує чисто білий, 0% кодує чисто чорний.

Це є обмеженням для програм обробки зображень, оскільки це означає, що будь-який піксель, що лежить за межами цього діапазону, буде відсічений до найближчої межі, що призведе до непоправної втрати даних (кольорів та/або текстури).

Довгий час програмне забезпечення для обробки зображень мало ці обмеження з технічних причин, а деякі все ще мають, але зараз це є вибором дизайну. Як результат, вони будуть відсікати інтенсивність RGB на рівні 100% на основі відображення між операціями над зображенням.

Ansel uses floating-point arithmetic inside its color pipeline, which means it can handle any RGB value internally, even those outside the display-referred range, as long as it is positive. Only at the very end of the pipeline, before the image is saved to a file or sent to display, are the RGB values clipped if needed.

Пікселі, які можуть приймати значення за межами діапазону відображення, мають “необмежені кольори”. Можна було б затиснути (тобто обмежити) ці значення до дозволеного діапазону на кожному етапі обробки або вибрати продовжити обробку з ними, і затиснути їх лише на останньому кроці в конвеєрі. Однак було виявлено, що обробка менш схильна до артефактів, якщо необмежені кольори не затискаються, а обробляються так само, як і будь-які інші кольорові дані.

At the end of the pipeline, modules like filmic rgb can help you to remap RGB values to the display-referred range while maximizing the data preservation and avoiding hard clipping, which is usually not visually pleasing.

However, at all times in the pipeline, you must ensure that you do not create negative RGB values. RGB intensities encode light emissions and negative light does not exist. Those modules that rely on a physical understanding of light to process pixels will fail if they encounter a non-physical light emission. For safety, negative RGB values are still clipped whenever they might make the algorithms fail, but the visual result might look degraded. Negative values can be produced when abusing the black level in exposure or the offset in color balance RGB and care should be taken when using these modules.