Wenn ein 24-Bit-RGB-Bild mit einem Bereich von 0 bis 255 pro Kanal auf einem Fernseher angezeigt wird, der einen Bereich von ca. 16-235 pro Kanal, Farbdetails gehen verloren, richtig?
Wenn ja, sollten Bilder vorverarbeitet werden, um nur einen gültigen Bereich zu speichern? Ich möchte dies mit Code tun, nicht in einer Bildbearbeitungsanwendung. Ich erinnere mich vage daran, dass eine lineare Zuordnung nicht der beste Weg ist, dies zu tun, aber leider kann ich den Artikel, den ich gelesen habe, nicht finden! Wie heißt dieser Prozess? Welche weiteren Details muss ich wissen?
Lineares Mapping ist wahrscheinlich nicht die beste Lösung (was meiner Meinung nach das Konvertieren Ihres RGB in einen CIE-Farbraum , das Skalieren dort und das Zurückkonvertieren umfasst ), aber es ist sehr einfach zu implementieren und der Bereichsunterschied ist klein genug, es spielt wahrscheinlich keine Rolle .
Wenn Sie SOIL verwenden , kann dies beim Laden des Bildes automatisch erfolgen, indem SOIL_FLAG_NTSC_SAFE_RGB an die Ladefunktionen übergeben wird.
In der Microsoft-Dokumentation wird angegeben, dass geklemmt werden soll, und es wird empfohlen, dies in einem Pixel-Shader zu tun. (Die lineare Skalierung sollte auch in einem Fall einfach sein.) Außerdem wird das Chroma-Crawlen erwähnt, was meiner Erfahrung nach ein viel ärgerlicheres Phänomen bei der Arbeit an Fernsehbildschirmen ist.
quelle