kolory spoza zakresu
Ekrany i większość formatów plików graficznych może kodować tylko intensywność RGB w określonym zakresie. Na przykład obrazy zakodowane na 8 bitach mogą zawierać tylko wartości od 0 do 255, obrazy na 10 bitach od 0 do 1023 i tak dalej… Standardy graficzne postulują, żeby maksimum tego zakresu, bez względu na jego rzeczywistą wartość, zawsze reprezentowała maksymalna jasność, jaką jest w stanie oddać nośnik wyświetlacza, zwykle od 100 do 160 Cd/m² (lub nitów), w zależności od aktualnego standardu. Na ogół nazywamy to maksimum „100% ekranocentryczny”. Minimalny zakres, zakodowany jako 0, bez względu na użytą głębię bitową, staje się wtedy „0 % ekranocentryczny”. 100% koduje czystą biel, 0% koduje czystą czerń.
Stanowi to ograniczenie dla aplikacji do przetwarzania obrazu, ponieważ oznacza, że każdy piksel znajdujący się poza tym zakresem zostanie przycięty do najbliższego ograniczenia, co spowoduje nieodwracalną utratę danych (kolorów i/lub tekstur).
Przez długi czas oprogramowanie do przetwarzania obrazu również było związane tym ograniczeniem z powodów technicznych. W wielu programach wciąż takie ograniczenia występują, ale teraz jest to powodowane decyzjami projektowymi. W rezultacie programy takie obcinają intensywności RGB przy 100% ekranocentryczności pomiędzy kolejnymi operacjami na obrazie.
darktable używa arytmetyki zmiennoprzecinkowej w jej kolejce przetwarzania, co oznacza, że może wewnętrznie obsługiwać dowolną wartość RGB, nawet poza zakresem ekranocentrycznym, o ile jest dodatnia. Dopiero na samym końcu potoku, przed zapisaniem obrazu do pliku lub wysłaniem na monitor, wartości RGB są w razie potrzeby obcinane.
Mówi się, że piksele, które mogą przyjmować wartości spoza zakresu wyświetlania, mają „obcięte kolory”. Można zdecydować się na ich zaciśnięcie (tj. ograniczenie) tych wartości do dozwolonego zakresu na każdym etapie przetwarzania lub zignorowanie tego faktu i zaciśnięcie ich tylko na ostatnim etapie kolejki przetwarzania. Stwierdzono jednak, że przetwarzanie jest mniej podatne na artefakty, jeśli nieograniczone kolory nie są obcinane, ale traktowane tak, jak inne dane kolorów.
Na koniec sekwencji moduły takie, jak krzywa filmowa mogą pomóc w zmapowaniu wartości RGB do zakresu ekranowego, przy maksymalizacji zachowania danych i unikaniu ostrego przycinania odcieni, co na ogół nie wygląda zbyt przyjemnie.
Jednak przez cały czas trwania procesu musisz upewnić się, że nie tworzysz ujemnych wartości RGB. Natężenia RGB kodują emisje światła, a światło ujemne nie istnieje. Te moduły, które opierają się na fizycznym zrozumieniu światła do przetwarzania pikseli, zawodzą, jeśli napotkają niefizyczną emisję światła. Ze względów bezpieczeństwa ujemne wartości RGB są nadal przycinane, gdy mogą spowodować awarię algorytmów, ale wynik wizualny może wyglądać na pogorszony. Wartości ujemne mogą być generowane podczas nadużywania poziomu czerni w module ekspozycji lub w zakładce przesunięcia w balansie kolorów i dlatego należy zachować ostrożność podczas korzystania z tych modułów.