ongebonden kleuren
Schermen en de meeste bestandsindelingen voor afbeeldingen kunnen alleen RGB-intensiteiten coderen die binnen een bepaald bereik liggen. Afbeeldingen die zijn gecodeerd op 8 bits kunnen bijvoorbeeld alleen waarden bevatten van 0 tot 255, afbeeldingen op 10 bits van 0 tot 1023, enzovoort… Grafische standaarden stellen dat het maximum van dat bereik, ongeacht de werkelijke waarde, altijd de maximale helderheid die het weergavemedium kan weergeven, meestal tussen 100 en 160 Cd/m² (of nits), afhankelijk van de werkelijke standaard. Over het algemeen noemen we dit maximum “100 % scherm-gerefereerd”. Het minimum van het bereik, gecodeerd met 0, ongeacht de gebruikte bitdiepte, wordt dan “0 % scherm-gerefereerd”. 100% codeert voor puur wit, 0% codeert voor puur zwart.
Dit is een beperking voor beeldverwerkingstoepassingen, omdat het betekent dat elke pixel die buiten dit bereik ligt, wordt bijgesneden tot de dichtstbijzijnde grens, wat resulteert in niet-herstelbaar verlies van gegevens (kleuren en/of texturen).
Ook beeldverwerkingssoftware was lange tijd om technische redenen aan deze beperking gebonden, en sommige zijn dat nog steeds, maar nu door ontwerpkeuze. Als gevolg hiervan zouden ze de RGB-intensiteiten afsnijden op 100 % scherm-gerefereerd tussen beeldbewerkingen.
Darktable gebruikt rekenkunde met floating-point binnen de kleurenpijplijn, wat betekent dat het elke RGB-waarde intern kan verwerken, zelfs die buiten het scherm-gerefereerde bereik, zolang het maar positief is. Pas helemaal aan het einde van de pijplijn, voordat de afbeelding wordt opgeslagen in een bestand of wordt verzonden om weer te geven, worden de RGB-waarden indien nodig afgekapt.
Pixels die waarden buiten het weergavebereik kunnen aannemen, zouden “onbegrensde kleuren” hebben. Men zou ervoor kunnen kiezen om die waarden bij elke verwerkingsstap vast te zetten (d.w.z. te beperken) tot het toegestane bereik of ervoor kiezen om ermee door te gaan en ze pas bij de laatste stap in de pijplijn vast te zetten. Het is echter gebleken dat de verwerking minder vatbaar is voor artefacten als de onbegrensde kleuren niet worden vastgezet maar worden behandeld zoals alle andere kleurgegevens.
Aan het einde van de pijplijn kunnen modules zoals filmisch rgb jou helpen om RGB-waarden opnieuw toe te wijzen aan het scherm-gerefereerde bereik terwijl de gegevens worden gemaximaliseerd behoud en het vermijden van hard knippen, wat meestal niet visueel aantrekkelijk is.
Je moet er echter te allen tijde voor zorgen dat je geen negatieve RGB-waarden maakt. RGB-intensiteiten coderen voor lichtemissies en negatief licht bestaat niet. Die modules, die afhankelijk zijn van een fysiek begrip van licht om pixels te verwerken, zullen falen als ze een niet-fysieke lichtemissie tegenkomen. Voor de veiligheid worden negatieve RGB-waarden nog steeds afgekapt wanneer ze de algoritmen zouden kunnen laten mislukken, maar het visuele resultaat kan er slechter uitzien. Negatieve waarden kunnen worden geproduceerd bij misbruik van het zwartniveau in belichting of de afstand in kleurenbalans en wees voorzichtig bij het gebruik van deze modules.