Frage von ennui:Hallo,
Ich glaube, Wowu hatte hier zuletzt mehrmals darauf hingewiesen, dass man eine Wandlung von 8 zu 10 Bit und zurück möglichst vermeiden sollte, weil dabei die Werte "gespreizt" und bei der Rückwandlung zu 8 Bit dann ungenau werden, was man ggf. auch sieht (so habe ich es verstanden).
Klingt plausibel, aber wie machen das Schnittsysteme denn intern? Soweit ich es verstehe, macht etwa mein altes Edius Edius intern Farbkorrekturen etc. auch in 10 Bit, angepriesen noch als Feature (größere Genauigkeit der Werte oder so). Oder macht es das nur, wenn man zuvor in den Edius HQ-Codec wandelt und dann damit arbeitet? Wie weiß man denn zuverlässig, mit wie vielen Bit man gerade arbeitet, sieht man das dann (nur) im Histogramm (Lücken)? Sollte man bei 8-Bit-Material dann unbedingt darauf achten, dass jegliche Bearbeitung im gleichen Codec wie bei der Aufnahme geschieht?
Antwort von Axel:
Ich glaube, hier verwechselst du Codec-Bittiefe und
Berechnungsgenauigkeit. Wie du aus dem Artikel entnehmen kannst, ist 32-bit da die Hausnummer, mit der du 8-bit verarbeiten kannst - und auch als 8-bit wieder rendern -, ohne dass sich Rundungsfehler addieren ("Bearbeitung" meint starke Bearbeitung in mehreren Schritten, siehe slashCAM-Artikel, einen Farbstich zu entfernen oder das Bild einmalig heller oder dunkler zu machen, ist i.d.R. völlig unproblematisch).
Übrigens hat WoWu gleichzeitig Recht und Unrecht. Recht damit, dass bei 8-bit (32-bit-Verarbeitung vorausgesetzt) keinerlei Nachteile zu befürchten sind. Hundertausende machen es so, es ist z.B. der gewohnte Workflow von Premiere. 8-bit geht rein, wird unmenschlich gequält mit allen Werkzeugen, die Adobe in petto hat und dann ohne Umweg wieder in 8-bit exportiert, sehr oft sogar in stark komprimierte Uploaddateien, die zehnmal weniger Informationen enthalten als das ebenfalls Long-GOP-komprimierte Ausgangsmaterial (z.B. DSLR).
Unrecht hat er damit, dass ein 8-bit> 10-bit >8-bit Roundtrip zu einer irgendwie sichtbaren Verschlechterung führen muss. Hundertausende machen es so. Ob es heute noch nötig ist steht dann auf einem anderen Blatt.
Ich bin selbst neugierig, was es mit Edius' 10-bit für eine Bewandnis hat. Vielleicht kann jemand Klarheit schaffen.
Antwort von ennui:
Danke für den Link, muss ich mir wohl nochmal genau durchlesen. Die Frage stellte sich ja ursprünglich bei Verwendung eines 10-Bit-Prores-Recorders an einer 8-Bit (4:2:2) Kamera. Erst dann fiel mir noch das mit Edius internnem Codec ein - oder habe ich das nun doch mit der internen Berechnungsgenauigkeit (32 bit) verwechselt?
Das ist mir aber jedenflls auch früher in Edius schon mal aufgefallen, dass da Material von der 7D, einfach wenn man es nur in den Edius-Codec wandelte (Idee dahinter: der ist verlustärmer bei den folgenden Bearbeitungsschritten) das Material tw. leicht "anders" aussah, (und ich meine damit sicher nicht: besser). Und diese Spreizung der Werte (mit entsprechenden Lücken im Histogramm) nach einem "Roundtrip" ist mir irgendwo auch schon mal untergekommen und irritierte mich (war das in Photoshop mit Jpegs? Keine Ahnung). Eigentlich würde man ja denken, wenn ich eine 8 Bit-Farbauflösung habe, und mir nun für 10 Bit zusätzliche Farbschattierungen zwischen den Werten reingerechnet werden, kann das doch nur vorteilhaft sein. Aber sie stammen dann eben aus dem Rechner, was nicht das selbe ist wie die Schattierungen, die eine 10 Bit-Kamera aufgenommen hätte. Soweit, so verständlich.
Dann gibt es aber noch die Diskrepanz zwischen "8 Bit ergeben doch auch schon rechnerisch paar Mio an Farbschattierungen, sollte doch reichen", und dem, was man dann im Alltag bei stärkerer Nachbearbeitung erlebt (Banding, etc.). Ich steig da gerade nicht mehr ganz durch. Was für ein Problem ist es denn zb, wenn ich bei einer Fläche wie "blauer Himmel" in 8 Bit Banding bekomme, da nun in eine höhere Farbauflösung zu gehen, mehr Zwischenwerte in den Verlauf zwischen Himmeblau1 und Himmelblau2 zu errechnen, und das ganze dann wieder nach 8 Bit zu wandeln? Dass der Übergang dann in 8 Bit "gedithert" wird, und das nicht gut/anders aussieht?
Antwort von DV_Chris:
Ich bin selbst neugierig, was es mit Edius' 10-bit für eine Bewandnis hat. Vielleicht kann jemand Klarheit schaffen.
Der Grass Valley HQX Codec ist ein variabler 4:2:2 10bit Codec mit einer maximalen Datenrate von 600Mbit/sec. Der Codec ist bei Grass Valley kostenlos für PC und Mac verfügbar und wird auch von Resolve 11 unterstützt werden.
Antwort von ennui:
Eben - 10 Bit. Bedeutet aber für 8-Bit-Material doch den von Wowu kritsierten Roundtrip. Ebenso auch bei Prores in der entspr. Qualitätsstufe. Oder?
Antwort von DV_Chris:
Ich frage Dir gerne bei der Entwicklung nach,aber soweit ich weiss, bleiben bei der 8 auf 10 Bit Wandlung in Edius die zwei Bits einfach leer.
Antwort von ennui:
Danke, das wäre sicher interessant. Was mir dazu noch einfällt: Es gibt ja eigentlich sowieso zwei Möglichkeiten, da zu wandeln: Entweder ich "spreize" die 8 Bit-Info auf die 10 Bit, so dass der hellste Wert 255 nun 1024 heißt, der dunkelste 0 wieder 0 (mal ganz vereinfacht beschrieben), Zwischenwerte werden dabei "synthetisiert".
Oder aber ich lasse eben zwei Bits leer (oben oder unten, oder oben und unten). Dann wären die 8 Bit in den 10 Bit exakt abgebildet ohne Synthese.
Dann müsste die jeweilige Software das aber natürlich auch wissen, welche Variante da vorliegt, denn einfach wie "echtes" 10-Bit-Material könnte man es dann ja nur in Fall 1 behandeln - oder?
Sehr verwirrend, je länger man darüber nachdenkt.
Antwort von Axel:
Eben - 10 Bit. Bedeutet aber für 8-Bit-Material doch den von Wowu kritsierten Roundtrip. Ebenso auch bei Prores in der entspr. Qualitätsstufe. Oder?
Ganz offenbar konnte Edius vor 6.5 zwar 10-bit Projekte verarbeiten, aber 8-bit Projekte nur mit 8-bit Genauigkeit. In
diesem Video von einer Schnittmesse wird mit
einer Kurve ein (wenn auch noch mäßiges) Banding erzeugt. In "einem 10-bit-Projekt" ist das Banding weg.
Was ist geschehen?
Hier wird's erläutert. Der Rendercodec wird zu Canopus HQX 10-bit geändert.
Aus 256 Stufen werden 1024. Vierfache Genauigkeit, wie beide Kommentatoren hervorheben.
Nicht nach WoWu, und da hat er natürlich theoretisch Recht. Die Farb-Akkuratheit von 8-bit 4:2:0 (das "Original") ist schon so schlecht wie möglich, d.h. gerade gut genug, um das Bild überhaupt noch darstellen zu können. Es liegt auf der Hand, was man damit überhaupt noch in der Post tun kann: So gut wie nichts. Wie soll die Genauigkeit verbessert werden, wenn diese wirklich schlechten Daten einfach auf 10-bit neu verteilt werden?
Aber mit dem hier gezeigten Roundtrip ist
in der Praxis das Banding vermieden worden. Ich finde die Methode jetzt nicht unbedingt rasend elegant, verglichen mit Adobe (die vielgerühmte Schnelligkeit von Edius hängt sicher auch mit der durch den Verzicht auf Fließkommaberechnung verbundenen Ressourcenschonung zusammen), aber was immer funktioniert. Oder?
Antwort von ennui:
Das Problem sollte dann ja auch erst beim Rückexport in einen 8-Bit Distributions-Codec so richtig zuschlagen, soweit ich es verstanden habe. Weil dann die schönen 1024 Abstufungen wieder auf 0-255 verteilt werden.
Antwort von WoWu:
Der gepostete Film hört genau dort auf, wo es eigentlich kritisch wird, denn er zeigt lediglich eine Bearbeitung in 10 Bit. Das die so bleibt, wie der Rechner sie erstellt, ist klar. Alle fehlenden Werte sind mit einer geditherten Pixelstruktur aufgefüllt.
Bleibt man jetzt in 10 Bit, bleibt das Bild auch so.
Was passiert jetzt in einer Verarbeitung, die die DCT wechselt, also nicht mit Addition oder Shift arbeitet, wie in AVC verwendet ?
Es werden die einzelnen Bildpunkte und ein jeweils vom Anwender einstellbarer Korrekturwert verarbeitet, was zu einem neuen Ausgangswert führt.
Üblicherweise werden sowohl die Bilddaten als auch der Korrekturwert der Bearbeitung in binärer Form sein.
Dabei werden die Bildpunkte sowie die Korrekturwerte von Datenworten bestimmter Länge oder Bitbreite bzw. Wortbreite repräsentiert.
In Abhängigkeit von der Art der Bearbeitung kann das Ergebnis, d.h. der Ausgangswert eine größere Bitbreite des Datenwortes aufweisen als jedes einzelne der zugeführten Datenworte von Bildpunkt- und Korrekturwert.
Insbesondere bei einer binären Multiplikation von natürlichen Zahlen entstehen Datenworte mit einer Wortbreite, die der Summe der Wortbreiten von Multiplikand und Multiplikator entspricht.
Sollen mehrere Bearbeitungsschritte nacheinander vorgenommen werden, so steigt mit jedem Bearbeitungsschritt die erforderliche Wortbreite erheblich an.
Die Hintereinanderschaltung mehrerer Bearbeitungsschritte ist aber üblich.
Wenn z.B. Bildpunkte mit einer Wortbreite von 32 Bit und Korrekturwerte mit einer Wortbreite von 16 Bit in einer Multiplikation verknüpft werden, so hat der resultierende Ausgangswert eine Wortbreite von 48 Bit.
Soll dieser Wert in einem weiteren Bearbeitungsvorgang mit einem weiteren Korrekturwert bearbeitet werden, der ebenfalls eine Wortbreite von 16 Bit hat, so erreicht das Ergebnis des zweiten Bearbeitungsvorgangs bereits eine Wortbreite von 64 Bit.
Daran ist schon zu erkennen, dass bereits die Ausführung weniger Bearbeitungsvorgänge hintereinander sehr große Wortbreiten erzeugt.
Um den Aufwand in tolerierbaren Grenzen zu halten, werden daher die Ergebnisse nach jeder Bearbeitungsstufe auf die Wortbreite des Eingangswortes gerundet.
Die Rundung erfolgt häufig durch entsprechendes Weglassen der niederwertigen Bits. (LSB = least significant bit).
Lange Rede ... die Werte verändern sich und bei einer Rückführung nach 8 Bit muss entschieden werden, auf welchen der zur Verfügung stehenden Werte dann die so entstandenen Zwischenwerte am besten Passen. dabei wird schnell mal aus einer 1,4 , die aus 1 entstanden ist, eine 1,6 und landet dann nicht mehr in der ursprünglichen 1 sondern in der 2 und damit ergibt sich in 8 Bit ein anderer Wert, als der Ausgangswert und der Abstand vergrössert sich. Banding ist entstanden.
Und @Axel natürlich machen das 100.000ende so, aber schau Dir den Schrott auch mal an, der so auftaucht. 100.000 Fliegen irren sich eben auch nicht.
Antwort von ennui:
Und was ist mit der Variante, wo die 8 Bit quasi in die 10 Bit nur rüberkopiert werden und die restlichen 2 Bit (die oberen zb.) dann eben leerleiben? Das ist ja dann ansonsten eine 1:1-Kopie. Ich hatte es auch so verstanden, dass ein 10 Bit-Recorder die 8 Bit genau so unterbringen würde, und nicht irgendwie spreizen würde auf 10 Bit.
Antwort von WoWu:
Das soll er man erstmal verifizieren ob 2/3 der Werte mit Nullen gestuffed sind.
Antwort von ennui:
Wieso, wenn es binär kodiert ist, dann bedeutet das doch nur, dass Werte jenseits von 255 denkbar sind, indem das nächste Bit dann noch die Werte bis 512 und das übernächste bis 1024 ermöglicht.
So wie die 255 ja auch aus 1+2+4+8 etcpp. entstehen.
Wenn ich die beiden oberen jetzt "kappe", bzw. die oberen Bits leer lasse, lande ich ja wieder bei 8 Bit. Anders gesagt, ist es doch die Frage, wie die 8 Bit auf die 10 "gemapped" werden. Wenn 255 plötzlich 1024 heißen soll, ist es natürlich was anderes, dann muss man irgendwelche Werte dazwischen künstlich ergänzen, die ursprünglich nicht da waren.
Antwort von WoWu:
Das ist das ewige Verständnisproblem.
Aber Du hast eben nur 256 Werte Und warum sollte jemand 1 Byte mit Nullen vollstopfen. dann kann er das Byte ja gleich weglassen.
Das soll er man erst mal klären.
Antwort von Jensli:
Sehr interessanter Thread, ich möchte mich mal einklinken, da ich überlege, einen Atomos Ninja für meinen Camcorder zu kaufen. Also bringt mir eine Aufzeichnung in 10 Bit nichts, wenn am HDMI der Kamera nur 8 Bit anliegen, richtig? Kann ich mir das Geld also sparen, oder reißt der Vorteil in 4:2:2 statt der 4:2:0 der Kamera aufnehmen zu können, da wieder was raus?
Antwort von Axel:
Sehr interessanter Thread, ich möchte mich mal einklinken, da ich überlege, einen Atomos Ninja für meinen Camcorder zu kaufen. Also bringt mir eine Aufzeichnung in 10 Bit nichts, wenn am HDMI der Kamera nur 8 Bit anliegen, richtig? Kann ich mir das Geld also sparen, oder reißt der Vorteil in 4:2:2 statt der 4:2:0 der Kamera aufnehmen zu können, da wieder was raus?
Du müsstest erstmal klären, ob die Kamera tatsächlich 4:2:2 über HDMI ausgibt (die 5D Mark III tut es, bei den meisten anderen bleibt's bei 4:2:0).
Dann betrifft das die Farbauflösung und erweitert die Gradingmöglichkeiten nicht erheblich, jedenfalls nicht in dem Maße, wie es 10-bit täte. Ich habe kürzlich C300 Material geschnitten in 4:2:2.
Antwort von wolfgang:
Du müsstest erstmal klären, ob die Kamera tatsächlich 4:2:2 über HDMI ausgibt (die 5D Mark III tut es, bei den meisten anderen bleibt's bei 4:2:0).
Also viel mehr Geräte als man glaubt geben über HDMI 8bit 4:2:2 aus - nur ist das im Regelfall völlig undokumentiert. Meine Pana Z1000 kann das definitiv.
Aber noch sinnvoller wirds halt dann mit 10bit 4:2:2... die GH4 ist hier etwa durchaus interessant.