Zum Inhalt springen

OpenSource-Software: Degraining von Super-8 und ähnlichem


Empfohlene Beiträge

Geschrieben

Hi, bin neu hier. Befasse mich aber schon seit Jahren mit dem Digitalisieren von Super-8-Material.

 

Meine größte Herausforderung bisher: ein etwa einstündiger Film auf Kodachrome 25, der erst über ein Jahr nach der Belichtung entwickelt wurde. Das Korn ist entsprechend ungewöhnlich für K25, und gerade in den dunklen Partien ist die Qualität unterirdisch.

 

Die üblichen Entrauscher helfen da nur bedingt.

 

Habe daraufhin eine eigene Software in Python entwickelt. Kernidee ist, dass reale Szenendetails über ein paar Frames stabil bleiben, während sich Bildstörungen — insbesondere das Filmkorn-Rauschen — mit jedem Frame ändern. Per optischem Fluss werden die Nachbarbilder auf das zentrale Bild ausgerichtet und verrechnet. Wo der Fluss nicht vertrauenswürdig ist, bleibt das Original unangetastet.

 

Oberstes Ziel bei der Entwicklung war, weitestgehend nichts dazuzuerfinden — im Idealfall nur das Filmkorn zu beseitigen oder zu dämpfen.

 

Es gibt zwei Programme: eine interaktive Oberfläche zum Einstellen und einen (schnelleren) Batch-Prozessor für ganze Szenen. Vorausgesetzt werden Python und ein paar Bibliotheken, die man installieren muss. Wenn eine NVIDIA-GPU mit CUDA-Support vorhanden ist, wird die Verarbeitung schneller, und man hat einen weiteren Flussalgorithmus zum Ausprobieren. Rein und raus gehen Bildsequenzen; bei mir sitzt DaVinci Resolve davor und dahinter.

 

Zu finden ist die Software auf GitHub — vielleicht ist sie ja für den einen oder anderen auch nützlich. Das Bild unten zeigt die interaktive Programm-Oberfläche mit einem "K25 - nach einem Jahr entwickelt"-Beispiel:

https://raw.githubusercontent.com/cpixip/cineFlow/refs/heads/main/images/19-flowQtInUse.png

  • Thumsbup 2
Geschrieben (bearbeitet)
vor 13 Stunden schrieb Friedemann Wachsmuth:

Das ist fein! Aber was unterscheidet dein Vorgehen von NeatVideo, dass ja auch Nachbarframes verwenden kann?

 

Sehr interessieren würde mich ein Beispielclip...

 

Naja, hier wird's dann ein bisschen technisch...

 

Vorab: kenne Neat Video nicht so gut, und naturgemäß ist das auch nicht Open Source, so dass ich nicht direkt im Code nachschauen kann.

 

Tendenziell nimmt Neat Video vermutlich ein anderes Rauschmodell an, eher in Richtung digitaler Sensoren getrimmt. Daher auch der Schritt in der Anwendung, eine möglichst strukturlose Fläche im Bild zu wählen — daraus wird ein Rauschprofil gewonnen, nach dem dann im Einzelbild gefiltert wird. Der Temporalfilter scheint mir eher ein Zusatz dazu zu sein; nicht so ganz klar, ob hier wirklich dichte Flusskarten berechnet werden.

 

Genau da liegt für mich der Knackpunkt: Im Einzelbild sind Korn und feines Detail schlicht nicht unterscheidbar. Beides sind kleine, kontrastreiche Strukturen. Wer primär räumlich filtert, muss also raten — und nimmt zwangsläufig Detail mit weg. Erst über die Zeit wird der Unterschied sichtbar: das Detail bleibt, wo es ist, das Korn springt.

 

cineFlow setzt deshalb genau dort an. Über den optischen Fluss wird ermittelt, wohin sich jeder Bildpunkt von Frame zu Frame bewegt hat. Damit lässt sich ein Detail über mehrere Nachbarbilder hinweg verfolgen und aus mehreren Beobachtungen desselben Bildpunkts verrechnen. Das Korn, das ja in jedem Bild woanders sitzt, mittelt sich dabei weitgehend heraus, während das echte Detail stehenbleibt.

 

Also, mit den wenigen Infos, die ich über Neat Video habe:

  • Neat Video ist eher auf digitales Rauschen getrimmt, cineFlow definitiv auf analoges.
  • Neat Video arbeitet vermutlich primär räumlich mit temporaler Ergänzung, cineFlow primär temporal — das Pferd wird also von der anderen Seite aufgezäumt, wobei es hier kein „Falschherum" gibt.
  •  

Hier ein kurzer Clip mit ein paar Beispielen:

 

  • „Grand Canyon" — sehr starkes Rauschen in den Schatten. Zwei Faktoren kommen zusammen: das über ein Jahr gelagerte Latentbild des K25 und der hohe Kontrast der Szene selbst.
  • „Fast Birds" — viele kleine, schnell bewegte Objekte vor fast texturlosem Hintergrund. Notorisch schwieriges Material: wer über die Zeit mittelt, ohne die Bewegung sauber zu erfassen, produziert hier Schlieren oder Doppelkonturen.
  • „Yellowstone" — schnell bewegte, diffuse Objekte (Wasserfall) und transparente Gischt. Also Bildinhalt, für den es streng genommen gar keine eindeutige Korrespondenz zwischen zwei Frames gibt.
  • „Las Vegas" — hoher Kontrastumfang und sich schnell ändernde Lichter. Nicht so einfach. 
  • „Rooftops Seattle" — ein anderes Filmmaterial: Ektachrome, schön gefadet über die Jahre. Andere Emulsion, also anderes Korn.

 

Links jeweils der Rohscan, rechts das Ergebnis.

 

 

Bearbeitet von cpixip
Das Video einbetten... (Änderungen anzeigen)
  • Thumsbup 1
  • Surprised 1
Geschrieben

Das ist ein wirklich hervorragend gutes Ergebnis. Toll, dass es das jetzt per OpenSource gibt, vielen Dank dafür!

 

NeatVideo erstellt durchaus Bewegungsvektoren und kannsehr gut mit analogem Korn umgehen, aber kostet halt eine Menge (und ebenfalls SEHR viel Rechenzeit!). (Das spatiale Entrauschen kann man da übrigens sogar ganz abschalten.)

 

Ich werds definitiv ausprobieren, meine Einzelbilder sind nur gebayerte Raws, da müsste ich (bei Farbnegativ zumindest) nach dem Grading noch mal TIFFs exportieren. Oder Dein Python um DNG Raw-Support erweitern... Darauf hätte ich Lust, Aber da fehlt gerade eindeutig die Zeit. 🙂

 

Noch mal: Grossartig und vielen Dank dafür!

Geschrieben
vor 51 Minuten schrieb Friedemann Wachsmuth:

Ich werds definitiv ausprobieren, meine Einzelbilder sind nur gebayerte Raws, da müsste ich (bei Farbnegativ zumindest) nach dem Grading noch mal TIFFs exportieren. Oder Dein Python um DNG Raw-Support erweitern..


Also bei mir liegt cineflow in folgendem workflow:

  • 4k capture mit Selbstbauscanner auf der Basis des Raspberry Pi HQ Sensors. Ausgabe: 12 bit DNG -> Archivkopie
  • Debayer via DaVinci, initiales color grading, downscale auf 1800 x 1350 px, Ausgabe rec.709. Entweder als Video oder als tif-Dir: ein Verzeichnis mit den durchnummerierten Frames der Szene/des Abschnitts
  • Durch cineflow für's denoising. Ausgabe entweder als Video (ProRes) oder besser halt wieder als tif-Dir
  • Einlesen in DaVinci, final crop (meistens mit ein bisschen Kamera-Stabilisierung), final grading. Ausgabe als Video -> Distributionskopie

Es gibt Punkte, die gegen das direkte Einlesen von DNGs sprechen:

  • 4k kostet gegenüber 1800 x 1350 px etwa die fünffache Rechenzeit.
  • Bei 4k läuft der VRAM leicht voll. Der NVIDIA-Treiber wirft dann nicht etwa einen Fehler, sondern lagert stillschweigend in den Hauptspeicher aus — die Verarbeitung läuft weiter, nur um Größenordnungen langsamer.
  • Das lineare Gamma der DNGs staucht genau den Bereich, in dem die interessanten Daten liegen — das Rauschen in den dunklen Partien. rec.709 akzentuiert sie hingegen.
  • DNGs sind gebayert, jeder Farbkanal also unterabgetastet. Feine Strukturen erzeugen dabei Moiré, und das wandert bei kleinsten Bewegungen eigenständig durchs Bild — darauf optischen Fluss zu berechnen wird schwierig.

Man könnte cineFlow um ein RAW-frontend erweitern. War mal angedacht, einschließlich interner Transformation auf einen optimalen Farbraum, ist aber dann verworfen worden zugunsten des obigen Workflows. 

Der Beispielclip oben nutzt übrigens ein anderes Aufnahmeverfahren. Mein Scanner kann auch im HDR-Modus arbeiten, bei dem vier bis sechs Einzelbelichtungen zu einem Bild zusammengefügt werden — genau dieses Material ist im Beispielclip verwendet worden.

Ein Beispiel aus dem oben beschriebenen DNG-Workflow:

spacer.png


Links der Rohscan, rechts das Ergebnis. Vermutlich ein Fujichrome; mein Material stammt hauptsächlich aus den Siebzigern und frühen Achtzigern. 

  • Thumsbup 2
Geschrieben (bearbeitet)

Das klingt gut (und sieht gut aus). Nur von Rec.709 als Arbeitsfarbraum bin ich bei ColorNeg zumindest ab. Da mache ich DaVinci WideGamut und wandle erst bei der endgültigen Ausgabe. 
 

Das mit HDR MultiExposure ist interessant. Ich habe damit zu Beginn experimentiert und habe keinen sichtbaren Gewinn in den Nutzdaten feststellen können. Sinn macht das ja eh nur bei Umkehrfilmen, und wo die Lichter fehlen, fehlen sie eben. In den Schatten ebenso, wo Nix ist, ist nix. Bisher passte bei mir noch jedes Umkehrmaterial "ins Histogramm" der Raspi HQ Cam, und die 12 Bit lösen ausreichend auf. Aber vielleicht übersehe ich da etwas?

Bearbeitet von Friedemann Wachsmuth (Änderungen anzeigen)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...

Filmvorführer.de mit Werbung, externen Inhalten und Cookies nutzen

  I accept

Filmvorfuehrer.de, die Forenmitglieder und Partner nutzen eingebettete Skripte und Cookies, um die Seite optimal zu gestalten und fortlaufend zu verbessern, sowie zur Ausspielung von externen Inhalten (z.B. youtube, Vimeo, Twitter,..) und Anzeigen.

Die Verarbeitungszwecke im Einzelnen sind:

  • Informationen auf einem Gerät speichern und/oder abrufen
  • Datenübermittlung an Partner, auch n Länder ausserhalb der EU (Drittstaatentransfer)
  • Personalisierte Anzeigen und Inhalte, Anzeigen- und Inhaltsmessungen, Erkenntnisse über Zielgruppen und Produktentwicklungen
Durch das Klicken des „Zustimmen“-Buttons stimmen Sie der Verarbeitung der auf Ihrem Gerät bzw. Ihrer Endeinrichtung gespeicherten Daten wie z.B. persönlichen Identifikatoren oder IP-Adressen für diese Verarbeitungszwecke gem. § 25 Abs. 1 TTDSG sowie Art. 6 Abs. 1 lit. a DSGVO zu. Darüber hinaus willigen Sie gem. Art. 49 Abs. 1 DSGVO ein, dass auch Anbieter in den USA Ihre Daten verarbeiten. In diesem Fall ist es möglich, dass die übermittelten Daten durch lokale Behörden verarbeitet werden. Weiterführende Details finden Sie in unserer  Datenschutzerklärung, die am Ende jeder Seite verlinkt sind. Die Zustimmung kann jederzeit durch Löschen des entsprechenden Cookies widerrufen werden.