Forum: Mikrocontroller und Digitale Elektronik RGB Light (YUV?)


von Nicht B. (florian01)


Lesenswert?

Hallo,

ich weiß es gibt schon 100 Threads mit ähnlichem Titel nur trifft das 
nie genau meine Frage, daher bitte ich um Verständnis...

Folgendes: Ich haben einen RGB Treiber für einen 3W RGB LED (Seoul P5) 
gebaut, der soweit auch funktioniert. Ich lege die Farbe über ein C# 
Programm am PC fest, die vie USB auf den Treiber kommt. Ich übertrage 
dabei RGB Daten (jeweils 0-255) die ich direkt und linear in Werte für 
die PWMs umrechne. Einen Farbverlauf steuer ich dabei über den PC, indem 
dieser z.B. alle 20ms einen neuen RGB Wert überträgt. Das Ergbnis ist 
soweit schon deutlich besser als ich erwartet hätte. Allerdings habe ich 
in fast allen Treads immer von YUV Umrechnung gelesen. Habe diese auch 
PC seitig implementiert so dass ich auch diese Übertragen könnte. Leider 
ist mir der Sinn dies zu tun nicht wirklich ersichtlich geworden... Kann 
mir jemand dazu weiterhelfen?

Vielen Dank und Grüße
Florian

von Michael P. (mipo)


Lesenswert?

Der YVU-Farbraum entspricht weit eher dem menschlichen Empfingen als der 
technisch bedingte RGB-Farbraum. Versuch mal per (reinem) RGB einen 
einigermassen sanften Farbverlauf durch den Regenbogen laufen zu 
lassen...

http://de.wikipedia.org/wiki/Farbraum

von Nicht B. (florian01)


Lesenswert?

Genau da ist eben meine Frage... Sollte man den Farbverlaufe über YUV 
machen und daraus die RGB Werte berechnen? z.B.

RGB(0,100,50) -> RGB(30,100,50) würde im Momente ja so ablaufen dass:

RGB(0,100,50)
RGB(1,100,50)
...
RGB(29,100,50)
RGB(30,100,50)

ausgegeben wird. Wenn ich das über YUV mache sind die RGB Werte nicht so 
einach runterzuschreiben aber YUV würde dementsprechend aussehen:

YUV(0,213,123) -> YUV(30,213,123)

YUV(0,213,123)
YUV(1,213,123)
...
YUV(29,213,123)
YUV(30,213,123)

Ist also letzteres günstiger?

von HildeK (Gast)


Lesenswert?

YUV ist einfach eine andere Codiervorschrift für Farbsignale. Dies kommt 
aus der Fernsehtechnik. Der Vorteil ist, dass U und V, die 
Farbdifferenzsignale, eine kleinere Bandbreite benötigen und das Y 
gleichzeitig das vollständige S/W-Signal darstellt. Damit war die 
Kompatibilität zu (vorhandenen) S/W-Fernsehgeräten gegeben - die mussten 
und konnten nur dieses Signal auswerten. Die Zusatzinformation für die 
Farbe wurde huckepack auf das S/W-Signal bei der Modulation 
draufgepackt.
Man machte sich die Eigenschaft zu Nutze, dass das Auge geringere 
Auflösung für die Farbe hat und konnte so rund 30%...50% Bandbreite 
einsparen (beim Fernsehen wurden durch geschickte Modulation sogar 2/3 
eingespart).

Es gibt eine einfache Rechenvorschrift, wie aus RGB YUV gemacht wird und 
umgekehrt. Für deine Anwendung musst du das anliefern, was dein 
Empfänger haben will.
Wenn du die Wahl hast, nimm RGB. YUV macht nur dann Sinn, wenn der 
Übertragungskanal Beschränkungen in der Bandbreite hat (wobei Y trotzdem 
die volle Bandbreite benötigt). Im Empfänger werden zur Anzeige immer 
die Farbdifferenzsignale wieder zurück in RGB gerechnet.

Michael Potthoff (mipo) schrieb:

>Der YVU-Farbraum entspricht weit eher dem menschlichen Empfingen als der
>technisch bedingte RGB-Farbraum.
Verwechselt du hier nicht YUV mit CMYK? Oder bin ich total auf dem 
Holzweg?
YUV definiert keinen anderen Farbraum, sondern nur eine andere Codierung 
des RGB.

http://de.wikipedia.org/wiki/YUV-Farbmodell

von Nicht B. (florian01)


Lesenswert?

@ HildeK

Danke genau das wollte ich hören. Mittels YUV könnte ich die Bandbreite 
verringern da ich aus RGB(8:8:8) z.B.ein YUV(8:4:4) machen könnte ohne 
merklichen Qualitätverlust.

Da mir die Bandbreite aber egal ist übertrage ich RGB.

von Bunt (Gast)


Lesenswert?

Also für Farbverläufe finde ich HSV recht gut.

Durch die Gradangabe 0-360 kann das kpl. Spektrum überstrichen
werden und die Umrechnung in RGB ist relativ leicht.

http://de.wikipedia.org/wiki/HSV-Farbraum

Wenn die Übertragung nicht das Problem ist, evtl. am PC
mit HSV spielen und RGB übertragen.
Bei etwas Rechenleistung im µC diesen in HSV rechnen lassen.

Treib es aber nicht zu bunt ;)

Bunt

von Nicht B. (florian01)


Lesenswert?

Ganz genau, man kann die Helligkeit schön konstant einstellen und muss 
dann nur noch den Y Bereich durchlaufen.

von Rolf Magnus (Gast)


Lesenswert?

> Verwechselt du hier nicht YUV mit CMYK? Oder bin ich total auf dem
> Holzweg?

CMY ist nur das subtraktive Gegenstück zu RGB (basierend auf den 
Komplementärfarben) und wird bei Druckern benötigt. Das K ist hier der 
Unfähigkeit der Drucker geschuldet, alleine mit C, M und Y ein sattes 
Schwarz zu produzieren. Deshalb hat man dafür nochmal einen eigenen 
Kanal eingebaut.

von Michael P. (mipo)


Lesenswert?

Hm, habe ich wohl tatsächlich YUV mit HSV verwechselt...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.