2017-09-28 5 views
1

Wikipedia und Fülle von Online-Ressourcen bieten detaillierte und reichlich Hilfe bei verschiedenen Farbraum Konvertierungen von/nach RGB. Was ich brauche ist eine gerade YUV-> HSL/HSV Umwandlung.Konvertieren von YUV in HSL oder HSV unter Umgehung der RGB-Schritt

In der Tat, was ich brauche, ist nur die Hue (kümmern Sie sich nicht viel für die Sättigung oder Helligkeit Helligkeit/Wert). Mit anderen Worten, ich muss nur den "Farbwinkel" für eine gegebene YUV-Farbe berechnen.

Code in jeder Sprache würde ausreichen, obwohl meine Präferenz C-Stil-Syntax ist.

Beachten Sie, dass mit YUV ich speziell Y'UV, a.k.a. YCbCr (wenn das einen Unterschied macht).

+0

Sie sollten wissen, dass wir keine Bibliothek oder Software dafür empfehlen können. Wir können Ihnen mit dem Code helfen, den Sie geschrieben haben, aber wir können es auch nicht für Sie schreiben. – Rob

+0

@Rob Würden Sie empfehlen, dies auf eine andere SE-Site zu verschieben? Wenn ja, welcher? (Ich kann den Code selbst schreiben, kein biggie. Ich brauche Hilfe mit dem Algorithmus für die Farbraumkonvertierung) – YePhIcK

+0

Gute Frage. Es gibt eine Graphics SE und eine Math-Eins. Ich würde mich selbst für diese Lösung interessieren, obwohl ich ein paar Algorithmen versteckt habe, die ich seit Jahrzehnten nicht mehr gesehen habe. – Rob

Antwort

1

Während YUV-> RGB-Farbraum-Umwandlungs linear (das gleiche wie "kann als eine Matrix-Operation ausgedrückt werden"), um die RGB-> HSL nicht ist. Daher ist es nicht möglich, die beiden zu einer einzigen Operation zu kombinieren.

Vielen Dank Kel Solaar für die Bestätigung für mich.

als Referenz:

beachte, dass die Berechnung für Hue mathematisch abschnittsweise als „Basiswinkel“ geschrieben wird, hängt davon ab, welcher Sektor die Farbe in ist und die "Hauptfarbe" wird durch den Ausdruck max(R, G, B) ausgedrückt.

+1

Ich möchte hinzufügen, dass, obwohl die Beziehung zwischen Y'CbCr und RGB linear ist, die Transformation tatsächlich Y'CbCr bis R'G'B 'ist. Die Primzahlen sind hier, um die Nichtlinearität der Komponenten zu bezeichnen transformiert und. Das Y 'von Y'CbCr ist für Luma, nicht Luminanz.Das bedeutet, dass Sie vielleicht auch Ihre nichtlinear kodierten R'G'B'-Farben zu linearen RGB-Farben dekodieren wollen, bevor Sie in HSV konvertieren. –

Verwandte Themen