PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : YCbCR in RGB umwandeln??



Projector
10.10.2006, 14:21
servus!!!

ich steuere gerade mit vb 6.0 eine Kamera an und ich habe es schon geschafft mit ihr zu komunizieren und ich bekomme nun ein bild in form einer zahlen reihung. alle werte sind innerhalb von 16-240 und im manual steht es der YCrCb-Farbraum ist.
Nun habe ich schon etliche umrechnungsformeln gefunden jedoch hat bis jetzt keine funktioniert. teilweise bekomme ich negative werte für rot grün oder blau, manchmal sind die werte bis zu 6000 groß.

hat das schon mal irgendwer umgerechnet und hat einen funktionierenden syntax? ich bräuchte dringend hilfe denn ich komme nicht mehr weiter.

lg lucas

ranke
18.10.2006, 08:04
Halo Projector,

Häufig werden als Umrechnung von YCrCb in RGB folgende Formeln angegeben:
Definitionsformeln:
Y=a*R+b*G+c*B
Cr= R-Y
Cb= B-Y
Cg=G-Y
mit:
Y: Luminanz (Gesamthelligkeitswert)
R: Rotwert
G: Grünwert
B: Blauwert
a,b,c: Faktoren

für die Faktoren wird oft angegeben (es existieren auch andere Werte):
a: 0,299
b: 0,587
c: 0,114

Für die Transformation von YCrCb in RGB gilt also:
R=Y+1,402*Cr
G=Y-0,344*Cb-0,714*Cr
B=Y+1,772*Cb

Du hast recht, negative Werte für R, G, B sind physikalisch nicht sinnvoll.
Der theoretisch maximale Wert für z.B. B errechnet sich zu
B=255+1,772*255=707
Wie man dabei Werte zu bis zu 6000 herausbekommen kann ist mir ein Rätsel.
Kannst Du mal Versuche machen, indem Du die Kamera in einem (abgedunkelten Raum) einen Monitor aufnimmst, mit bekannten Farben?

ranke
18.10.2006, 09:36
Habe mir das oben nochmal angeschaut, wenn man einige Zahlenwerte einsetzt, scheint es nicht plausibel zu sein. (Das kommt davon, wenn man kritiklos aus dem Internetz abschreibt).
Für den Fall, daß Werte für R,G,B sowie Y,Cb,Cr im Bereich zwischen 0 und 1 liegen, stimmt wohl das folgende:

http://upload.wikimedia.org/math/6/1/3/6131556ec5603a141bacc45d0d43af1a.png

Zumindest kommen plausible Werte heraus, wenn man ein paar Zahlen einsetzt.
siehe: http://de.wikipedia.org/wiki/YCbCr-Farbmodell
Du musst halt dann alle Werte erst durch 255 teilen, bevor Du in die Formel einsetzt, anschließend wieder mit 255 multiplizieren.