Farbe HSI oder HQI?

We proudly present: The release of DMXControl 3.3.3!


On September 29, 2026, we held our release show for DMXControl 3.3.3. During our usual “hour-long” session, we showed you all the new features in this version and what it now has to offer.
Read all about it in the corresponding news article: We proudly present: The release of DMXControl 3.3.3!


  • Wie wird denn die Farbe im HAL gehandled? Also Beispiel Gelb (RGB FFFF00):

    In RGB ist das keine reine Farbe, sondern eine Mischfarbe (q=0.5) aus Rot und Grün, im HSI-Modell wäre sie von reinem Gelb einer Natriumdampflampe (q=1.0) nicht zu unterscheiden. Hingegen ist RGB FFFF00 einer RGB-Lampe die gleiche Farbe wie FFFF0000 einer RGB+Amber-Lampe, während das 000000FF einer RGB+Amber-Lampe in RGB nur mit FFBF00 angenähert werden kann, die reine Farbe ist außerhalb des Gamut.

    Hier mal eine Simulation einer RGB-Leuchte.

    Hat der HAL ein Farbmodel, welches das berücksichtigt?

    Frag Dich nicht, was Dein Land für Dich tun kann, frag Dich lieber, was Dein Land für mich tun kann.

    Edited once, last by .rhavin (February 22, 2017 at 9:24 AM).

  • Hallo,

    Also: Die Eingabe der Werte und alle Effekte arbeiten auf RGB, da rein Physikalisch gesehen RGB den vollen Farbraum abbildet. Was sich in der 3.1 ändert ist, dass die einzelnen Komponenten (R, G, B) als Gleitkommazahl angegeben werden können, ergo sind wir nicht auf 24bit limitiert, sondern haben da viel mehr Freiraum.

    Ein Problem in Realität ist, dass sich die "Hardware" natürlich unterschiedlich verhält. So ist es nicht nur ein Problem wenn ich unterschiedliche Technologien zur Lichterzeugung verwende (du hast Metalldampflampen angesprochen), sondern auch RGB Lampen unterschiedlicher Hersteller verhalten sich unterschiedlich.

    Effektiv müsste man in der HAL zwischen Eingabe und Ausgabe eine Transformation einbauen, welche unter Berücksichtigung des Gerätes das Eingabemodel umrechnet und an die Ausgabe weiterleitet. Theoretisch Mathematisch ist das einfach zu lösen. Trotzdem ist es stand jetzt nicht allgemein implementiert. Was mit der 3.1 kommt ist eine Annäherung für RGB Zusatzkanäle (wie Amber, Cyan,...). Für diese Zusatzkanäle kann ich im HSV Model definieren, in welchem "Gradbereich" auf dem HSV Kreis der Kanal Aktiv ist. So kann ich im DDF definieren, dass der Amber Kanal bei 0° beginnt, bis 30° auf 255 linear einfaded (bei 15° also bei 127 ist). dann bis 45° bei 255 bleibt, und dann bis 60° wieder ausfaded. Dieser Automatismus kann durch die Angabe eines manuellen Wertes überschrieben werden.

    Effektiv kann man auch darüber diskuttieren, in wieweit so eine Normung und ein allgemeines Transformationsmodel sinn macht, weil:

    1. In Realität hat der User wenig Möglichkeiten das Farbverhalten seiner Geräte zu vermessen.
    2. Die angezeigte Farbe ist nur auf einer Weißen Wand bzw. in Luft vorhanden. Sobald der Lichtstrahl auf eine andere Oberfläche trifft passt es schon nicht mehr.
    3. In Realität programmieren die meisten User sowieso nach dem Motto: Ich drehe so lange am Farbregler bis es gut aussieht.

    Das sind auch die Gründe, warum wir abgesehen von der relativ einfachen Umsetzung für RGB+ Kanäle noch nichts in der Richtung unternommen haben. Hauptaufgabe der HAL ist es auch eine vereinfachte Steuerung zu realisieren und weniger die Geräte zu 100% Physikalisch zu normieren.

    ich hoffe das beantwortet deine Frage, ansonsten nachfragen :)

    Gruß Arne

    Das Leben ist NP vollständig!

  • Schau mal auf das angehängte Bild, RGB kann weder theoretisch noch Praktisch den vollen Farbraum abbilden. Die Draufsicht macht das deutlich (rechts): Dein voller Farbraum wäre ein Kreis, in diesem ist RGB ein Dreieck. In HSI wird dieses Dreieck in den Kreis reinverformt, was es mathematisch zwar einfacher aber halt Farblich ungeeignet macht. Es muss auchniemanx seine Lampen ausmessen, es gibt ja nur folgende Farben im Einsatz: Rot, Amber, Gelb, Grün, Limette, Cyan, Blau, Indigo, Magenta, UV und 3 Weißtöne. Man müsste nur in den Fixuredefs angeben, welche Kanäle verwendet werden. Falls ihr das in C++ braucht, kann ich Euch das implementieren.

    Frag Dich nicht, was Dein Land für Dich tun kann, frag Dich lieber, was Dein Land für mich tun kann.

    Edited once, last by .rhavin (February 22, 2017 at 9:37 AM).

  • Rot, Amber, Gelb, Grün, Limette, Cyan, Blau, Indigo, Magenta, UV und 3 Weißtöne

    Das sind genau die Kanäle die wir implementiert haben (siehe oben mein Beispiel mit Amber).

    Aber wie gesagt. Es nützt alles nix das am PC zu 100% zu machen, weil die Hardware immer die Ausgabe verfälscht.

    Das ganze funktioniert nur dann korrekt (egal welches Farbmodel man verwendet) wenn die z.B. Rot LED auch wirklich ROT ausgibt (also genau die Wellenlänge). In Realität hast du 2 Blaue LEDs und die haben ein unterschiedliches Blau weil die Unterschiedliche Wellenlängen generieren. Entsprechend verschieben sich die Farbmodelle. Das müsste man kompensieren, wenn überhaupt möglich.

    Ergo, solange sich die Endgeräte nicht "korrekt" verhalten, können wir in der Software das Ergebnis eh nur annähern, und da ist die Frage, wieviel "Magic" will man investieren um am Ende doch nur ein ungefähres Ergebnis zu haben.

    Die Eingabe mit RGB zu machen hat folgenden Hintergrund: Das kennt jeder und ist einfach. Außerdem sind normale Bildschirme nur in der Lage RGB darzustellen, ergo wenn wir ein anderes Farbmodell wählen würden, dann wäre die Darstellung am PC wieder ein Problem :)

    Gruß Arne

    Das Leben ist NP vollständig!

    Edited once, last by Soon5 (February 22, 2017 at 9:51 AM).

  • Newly created posts will remain inaccessible for others until approved by a moderator. The last reply was more than 365 days ago, this thread is most likely obsolete. It is recommended to create a new thread instead.