Noch was unklar? Dann in unserem Forum nachfragen
Zum Original-Thread / Zum Postproduktion allgemein-Forum

Infoseite // YUV-Farbsampling



Frage von LuFaHa:


Hallo liebe slashCAM-Community,
in meiner folgenden Fragestellung sind die Profis in Video- und Fernsehtechnik gefragt:

Wir kennen alle das YUV-Fernsehsignal (auch YCrCb bezeichnet). Hierin wird in einem "Kanal" die Helligkeit (Luminanz) und in zwei weiteren "Kanälen" je ein Farbdifferenzsignal (Chrominanz zu Rot, Chrominanz zu Blau) übertragen.
Bei der Digitalisierung nun wird im üblichen DV-Standard mit einem Farbsampling von 4:2:0 gearbeitet, was heißt (wie wir von etlichen Beiträgen wissen), dass das Y-Signal mit voller Auflösung abgetastet bzw. im DV-Bild gespeichert wird, während dies bei den beiden Farbdifferenzsignale (Cr und Cb) nur mit einem Viertel der Auflösung geschieht.
http://www.dma.ufg.ac.at/app/link/Grund ... odule/3927
Wenn wir nun davon ausgehen, dass ein PAL-Bild eine Auflösung von 720 mal 576 Bildpunkten (Pixel) besitzt, bedeutet dies, dass wir einen Y-Kanal mit dieser Auflösung besitzen und zwei weitere Farbdifferenzkanäle mit einer Auflösung von je 360 mal 288 Bildpunkten (im Produkt genau ein Viertel des anderen Produkts - 720*576=414720, 288*360=103680).

Erste Frage: Stimmt meine Überlegung soweit oder haben sich hier irgendwo Ungereimtheiten in meiner Argumentation ergeben?

Als nächstes wollte ich meine Überlegung mit einem Beispiel belegen, was mir jedoch bisher noch nicht gelang. Ich habe ein Bild aus einem normalen digitalen DV-komprimierten Video (*.avi) extrahiert (in Adobe Premiere 2.0 als *bmp ohne Veränderung von Pixelseitenverhältnis und Halbbildverarbeitung exportiert).
Hier das Bild:

Nun wollte ich meine Theorie dadurch überprüfen, dass ich mit einem beliebigen Programm, die drei Kanäle einzeln betrachte (als 8-Bit Graustufengrafik). Es dürfte ja eigentlich keine Rolle spielen, dass das Bild in der Zwischenzeit als RGB gespeichert ist, die einzelnen Frabsysteme lassen sich meines Wissens doch problemlos ineinander umrechnen.
Beim Betrachten der einzelnen Kanäle hätte ich folgendes erwartet:
Der Y-Kanal stellt ein ganz normales 720*576 Pixel großes Bild dar.
Die anderen beiden Kanäle ergeben einzeln oder gemeinsam ebenfalls ein Bild mit der Auflösung von 720*576 Pixel (da ja die Kanalgröße in einem *.bmp übereinstimmen muss), jedoch mit dem Unterschied, dass die Pixel sozusagen doppelt so groß sind, d. h. aus vier Pixeln des ersten Bildes bestehen (im Verhältnis).

Leider war es mir nicht möglich, diesen Versuch durchzuführen, da ich mit keinem Programm (weder Photoshop, noch Premiere, noch AfterEffects mit ColorFinesse) schaffte, die einzelnen YUV-Kanäle (YCrCb) anzuzeigen.
Als einzige andere Möglichkeit fiel mir der LAB-Modus in Photoshop ein: Auch hier wird ja der Luminanzkanal von zwei Differenzsignalen abgetrennt. Diese Differenzsignale sind zwar nicht mit denen bei YUV identisch, aber nach meinem Gedankengang würde nach der Abspaltung der LAB-Luminanz das gleiche übrig bleiben wie bei der Abspaltung des Y-Knals (meiner wohl falschen Meinung identisch zur LAB-Luminanz - Luminanz ist gleich Luminanz???).
Hier meine Ergebnisbilder:
LAB-Luminanz Kanal

(wie erwartet 720*576 Pixel mit normaler Auflösung):
LAB-a-Farbkanal:

LAB-b_Farbkanal:

(beide lassen noch deutlich die Halbbilder erkennen und sind mit 720*576 zwar richtig aufgelöst, die erwartete Verpixelung bleibt aber aus; es sind zwar Komprimierungsartefakte zu erkennen, aber vier benachbarte Pixel können durchaus unterschiedliche Grautöne besitzen)

Zweite Frage: Kennt irgendjemand ein einfach zu bedienendes Tool oder sonsteinen Weg, um aus einem DV-Film ein Bild in seine drei YUV-Kanäle zu zerlegen und einzeln als 8-Bit-Graustufenkanal anzuzeigen?

Dritte Frage(n): Wo liegen die Fehler in meiner Theorie? Wie arbeite das 4:2:0-Sampling mit Halbbildern? Werden die zwei Halbbilder einzeln "abgetastet" und dann entsprechend komrimiert, oder tatsächlich so wie auf der Website von DMA beschrieben? Hiernach würde ja die Farbinformation des ersten Pixels in der ersten Zeile die U-Werte (Cr) aller Piexel im ersten Viererkästchen bestimmen, während die entsprechenden V-Werte (Cb) von ersten Pixel in der zweiten Zeile stammen. Oder wie soll ich mir das Farbsampling sonst vorstellen?

Fragen über Fragen, ich hoffe ein Vollprofi erbarmt sich meiner und hilft mir aus meinem geistigen Schlammassel!!!
VIELEN DANK IM VORAUS.

Euer
LFH

P.S.: Information: Die Antworten benötige ich, weil ich eine Facharbeit zum Thema "Halbbildverfahren, Pixelseitenverhältnis und Frabsampling - Grundproblematik digitalen Videos" verfasse. Hierin möchte ich detailliert auf die technischen und geschichtlichen Hintergründe dieser drei Gebiete eingehen und wie man sinnvoller Weise innerhalb des AdobeProductionStudios mit ihnen verfährt. Bei Interesse werde ich, wenn ich fertig bin, die 10- bis 20-seitige Arbeit hier veröffentlichen (damit auch ihr was davon habt, wenn ihr mir helft ^^).

Space


Antwort von LuFaHa:

Kleine Ergänzung:
http://www.neopics.com/bluescreen/
(Unter diesem Link findet ihr in Englisch eine Erklärung die einige meiner Fragestellungen so beantwortet, wie ich zunächst auch annahm - aber wie die Grafiken zeigen, findet besagtes Farbsampling eben scheinbar nicht so statt, dass sich für die Farbdifferenzkanäle jeweils Vierer-Blöcke ergeben...)

Space


Antwort von HeikoS:

Kannst du die besagte Region mal vergrößert ausgewählt hier reinposten? Ich kann auf den Farbdifferenzbildern nur der theorie entsprechende große Blöcke erkennen.

Space


Antwort von Stefan:

Leider war es mir nicht möglich, diesen Versuch durchzuführen, da ich mit keinem Programm (weder Photoshop, noch Premiere, noch AfterEffects mit ColorFinesse) schaffte, die einzelnen YUV-Kanäle (YCrCb) anzuzeigen.

Nicht getestet, nur gesucht ("yuv viewer" @ google) und gefunden:

* https://yuvviewer.dev.java.net/ (Mac binary)
* http://www.ee.columbia.edu/~ywang/Links/index.html (incl. Source!) und https://skye.ee.columbia.edu/~ywang/Res ... enius.html
* http://www.garydickson.co.uk/software/yuvfileplayer/
* http://freshmeat.net/projects/yay/ (Linux-Debian, Windows)
* http://www.elecard.com/products/product ... uv-viewer/ (40$) im StreamEye drin http://www.elecard.com/products/product ... eye-tools/ als 21 Tage Trial

Das war die 1. Seite von 171.000 Treffern...

Aussichtsreich vielleicht auch

* http://www.geocities.com/siwalters_uk/excmyuv.html Extract/Combine YUV für Virtualdub

Viel Glück
Der dicke Stefan

Space


Antwort von LuFaHa:

@HeikoS
Ja, kann ich:

Die Blöcke sind wie gesagt zu erkennen, aber eindeutig deutlich größer als Vierblöcke und außerdem ja nicht einfarbig. Diese kommen vermutlich von der nachträglichen DV-Komprimierung.
Aber nach wie vor sind keine der Theorie entsprechenden Viererblöcke erkennbar - veilleicht existieren diese im realen Filmmaterial auch gar nicht, weil bei der nachträglichen DV-Komprimierung diese Blockzusammensetzung aufgelöst wird. Aber immernoch verwundert es, wenn man bedenkt, dass noch immer die Halbbilder zu erkennen sind (also kann die Komprimierung ja nicht so viel wieder durcheinander bringen).

@Stefan
Vielen Dank für deine Tipps! Werde mir umgehend die entsprechenden Tools anschauen.
Da sieht man einmal mehr, wie hilfreich ein zweiter Gedankengeber ist. Ich habe nach entsprechenden Tools mehrere Stunden lang gegoogelt, habe aber einfach völlig falsche suchbegriffe verwendet (programm, tool, yuv, ycrcb, extraktion, kanal, kanäle, einzeln, etc.) - aber alle möglichen Kombinationen dieser Suchbegriffe haben keine hilfreichen Funde gelifert.
Also nochmal DANKE!!! - Auch wenn ich nicht denke, dass sich die Ergebnisse ändern...

Space


Antwort von HeikoS:

Die großen Blöcke sind jeweils 16x16 Pixel groß. Das sind Blockartefakte, die durch die DCT-Kompression typisch sind. Sieht man z.B. häufig bei Mpegs mit zu geringer Datenrate.

Die Halbbilder werden natürlich NACH der Kompression ineinander verschachtelt. Du müsstest also vor deiner Analyse jede 2. Zeile entfernen.

Bedenke, dass die Farbunterabtastung nach dem Schema 4:2:0 erfolgt, und nicht 4:1:1. Das ist Summenmäßig zwar das gleiche, ergibt aber ein anderes zu erwartendes Blockschema. Du erwartest jeweils 4 zusammenhängende Pixel mit gleichem Tonwert. Das entspräche der letztgenannten Abtastung.
4:2:0 bedeutet hingegen, dass für jeden der beiden Farbdifferenzkanäle gilt:
Alle 2 Pixel in horizontaler Richtung ändert sich der Farbwert eines Farbdifferenzkanales (2), in der daruffolgenden Zeile befindet sich KEIN einziger Pixel des entsprechenden Farbdiffwertes (0).
Bildlich so vorzustellen:

XXYYZZ
AABBCC
XXYYZZ
AABBCC

mit X-Z = Tonwert des U-Kanals
A-C = Tonwert des V-Kanals

Und genau das kannst du in deinem Ausschnitt sehen.

Space


Antwort von TheBubble:

Zum 4:2:0 Farbformat:

Es richtig, dass beim 4:2:0 Format die Farbdifferenzsignale horizontal und vertikal nur halb so oft abgetastet werden, wie das zugehörige Helligkeitssignal. Du gehst davon aus, dass die Samples für die Rekonstruktion des Frames immer einfach verdoppelt werden (dies entspräche einer „nearest neighbor“ Interpolation), was zu den von Dir erwarteten „Treppenstufen“ an schrägen Kanten führen würde. Man kann für eine verbesserte Bildqualität zur Abtastung und Rekonstruktion aber auch andere Filterfunktionen verwenden, bei denen keine Treppenartefakte entstehen. In diesem Fall würdest Du den Effekt nicht beobachten können.

Nebenbei: Es gibt unterschiedliche Varianten der 4:2:0 Abtastung und unterschiedliche Codecs (z.B. JPEG, MPEG-1, MPEG-2, DV-PAL) setzen auch unterschiedliche Varianten ein.
die einzelnen YUV-Kanäle (YCrCb) anzuzeigen Versuche es mit YIQ, oder…
Zweite Frage: Kennt irgendjemand ein einfach zu bedienendes Tool oder sonsteinen Weg, um aus einem DV-Film ein Bild in seine drei YUV-Kanäle zu zerlegen und einzeln als 8-Bit-Graustufenkanal anzuzeigen? …schreibe Dir eine RGB -> YUV Konvertierung einfach selbst. Wäre die beste Variante.
Wie arbeite das 4:2:0-Sampling mit Halbbildern? Entweder die Halbbilder irgnorieren oder die Halbbilder getrennt verarbeiten. Einige Codec treffen die Entscheidung auch dynamisch, je nach Bildinhalt.

Space


Antwort von LuFaHa:

Herzlichen Dank an alle!!!
Ich glaube, jetzt habe ich das Wissen, welches ich benötigte:
Farbsampling gibt nur die gemessenen Werte an, wie diese dann im tatsächlichen Bild benutzt werden hängt von der Komprimierung und anderen Faktoren ab. Im Normalfall werden nacheinander beide Halbbilder abgetastet und erst bei der Komprimierung (vor oder danach) miteinander verschachtelt.

Noch ein paar kleine Unklarheiten:
Wie arbeitet der Codec DV überhaupt (bildbasiert, ähnlich wie MJPEG - das weiß ich)? - Was ich meine: Welche Informationen werden wie gespeichert.
Enthält eine (DV-).avi-Datei einzelne komprimierte Bilder plus eine Tonspur. Werden bei DV die Halbbilder einzeln gespeichert oder gemeinsam in einem Bild - in dem die besagten Streifeneffekte (bei Bewegung, auf dem Monitor) auftreten?
Manchmal werden ja in Premiere unter "Eigenschaften von Videomaterial" (o. ä.) Dinge wie ausgebendes Programm, Pixelseitenverhältnis, Halbbildreihenfolge etc. angezeigt. Werden solche Metadaten einfach ins DV-Material eingebettet oder interpretiert da das Programm nur aufgrund von anderen Eigenschaften (720*576=DV => 1,0667, unteres Halbbild zuerst etc?

Space


Antwort von Stefan:

Wie arbeitet der Codec DV überhaupt (bildbasiert, ähnlich wie MJPEG - das weiß ich)? - Was ich meine: Welche Informationen werden wie gespeichert.
Rel. genau kannst du das in den Patenten von Sony nachlesen.

Enthält eine (DV-).avi-Datei einzelne komprimierte Bilder plus eine Tonspur.

Kann so sein. Immer ist der Ton zu in den Daten eines DV-Frames gespeichert. Bei DV AVI Typ2 zusätzlich noch als Audiostream in der AVI Datei.

Werden bei DV die Halbbilder einzeln gespeichert oder gemeinsam in einem Bild - in dem die besagten Streifeneffekte (bei Bewegung, auf dem Monitor) auftreten?

Gemeinsam.

Manchmal werden ja in Premiere unter "Eigenschaften von Videomaterial" (o. ä.) Dinge wie ausgebendes Programm, Pixelseitenverhältnis, Halbbildreihenfolge etc. angezeigt. Werden solche Metadaten einfach ins DV-Material eingebettet oder interpretiert da das Programm nur aufgrund von anderen Eigenschaften (720*576=DV => 1,0667, unteres Halbbild zuerst etc?

Beides. Es gibt im DV-Frame eine 16:9 Kennung und eine PAL/NTSC Kennung und eine Interlaced/Progressiv-Kennung.

Viel Glück
Der dicke Stefan

Space



Space


Antwort von Anonymous:

wie diese dann im tatsächlichen Bild benutzt werden hängt von der Komprimierung und anderen Faktoren ab. Die gesampelten Werte werden (verlustbehaftet) komprimiert.
Im Normalfall werden nacheinander beide Halbbilder abgetastet und erst bei der Komprimierung (vor oder danach) miteinander verschachtelt. DV komprimiert einen Frame, bestehend aus zwei Halbbildern.
Wie arbeitet der Codec DV überhaupt (bildbasiert, ähnlich wie MJPEG - das weiß ich)? - Was ich meine: Welche Informationen werden wie gespeichert. Die genauen Details müsstest Du der Norm entnehmen. Grundsätzlich:
1. Sampling
2. Blockbildung
3. Umstellen
4. DCT
5. Quantisierung
6. "Zickzack" Umordnung und eigentliche Kompression
Enthält eine (DV-).avi-Datei einzelne komprimierte Bilder plus eine Tonspur. Je nach Typ liegt die Tonspur ein zweites mal vor, damit Programme auf sie leichter zugreifen lönnen.
Werden bei DV die Halbbilder einzeln gespeichert oder gemeinsam in einem Bild - in dem die besagten Streifeneffekte (bei Bewegung, auf dem Monitor) auftreten? In einem Frame zusammengefasst (s.o.).

Das Seitenverhältnis wird mit den komprimierten Bilddaten abgelegt, damit es richtig dargestellt werden kann. Ebenso das verwendete System (50/60), beide Varianten unterscheiden sich nicht nur in der Auflösung und Bildfrequenz, sondern werden auch an anderen Stellen intern anders behandelt.

Space


Antwort von TheBubble:

Der Beitrag eben ("Die gesampelten Werte werden...") war von mir.

Wieso vergisst das Forum beim Schreiben meine Anmeldung?

Space


Antwort von BugsBunny:

Noch kleine Anmerkung zu "einzelnen YUV-Kanäle (YCrCb) anzeigen":
mit VirtualDub und meinem Gradation Curves Filter kann man das sehr gut machen und es ist alles kostenlose OpenSource Software.
Den Filter gibt's hier
http://members.chello.at/nagiller/vdub/index.html
Als Farbraum YUV wählen und dann zB die Luma Kurve konstant auf Null (oder 128) setzten. Dann bleiben die nur die Chroma Kanäle übrig.

Space


Noch was unklar? Dann in unserem Forum nachfragen
Zum Original-Thread / Zum Postproduktion allgemein-Forum



slashCAM nutzt Cookies zur Optimierung des Angebots, auch Cookies Dritter. Die Speicherung von Cookies kann in den Browsereinstellungen unterbunden werden. Mehr Informationen erhalten Sie in unserer Datenschutzerklärung. Mehr Infos Verstanden!
RSS Suche YouTube Facebook Twitter slashCAM-Slash