Super 8 Film Einzelbild-digitalisierer

Ein Projekt von Philipp Kiltz eMail an Philipp Kiltz

Eingesetzte Geräte: Raspberry Pi Version B; diverse Gnublin-Module; zwei Schrittmotore; ein modifizierter Schnittbetrachter von Braun; diverse Metallreste; Gewindestangen; Kabel und Elektronik

Vorgeschichte

Vor vielen Jahren fielen mir die gesammelten Super8-Filme unserer Familie in die Hände. Natürlich keimte sofort der Wunsch auf diese Filme anzuschauen, allerdings war mir der Aufwand einen Projektor, eine Leinwand oder Ähnliches für einmal gucken anzuschaffen und einzurichten zu hoch.

Ein kurzer Überblick über die damaligen Preise und die Qualität des Abfilmens schienen mir für ca. 3000 m Film übertrieben. Also wurden die Filme eingelagert (naja Hängeboden…. Trocken und dunkel): Projekt vertagt.

Aktueller Projektablauf

So ganz hat mich das aber nicht losgelassen und ich habe immer wieder das Web durchforstet ob es nicht etwas gibt, was meine Anforderungen erfüllt. Ich bin dabei über Projekte gestoßen, die Ihre Filme mit einem Durchlichtscanner und einen Software als Einzelbild digitalisierten – das klang interessant. Diesen Ansatz habe ich dann gedanklich ca. 2 Jahre vor mir hergeschoben. Im Jahr 2013 hatte ich zum ersten Mal Kontakt mit einem RasPi, bessergesagt hatte ich ein anderes Projekt mit einem Schrittmotor angedacht. Dann kam aber noch die RasPi-Cam mit 2592 x 1944 Pixel auf den Markt.

Zugegeben, ein Kontrasthighlight ist die Cam nicht, aber erste Tests mit einer weißen LED und einem Super 8 Film waren vielversprechend. Nach Recherchen im Web enthält ein Super8Bild genug Bildinformation für ein FullHD-Film von 1920 × 1080 Pixeln (2,07 Megapixel). Die RaspiCam hat beim Fotografieren 5 Megapixel - damit war die Zielvorgabe gesetzt. Im Hinterkopf sollte man beachten, dass, ein HDFilm ein Verhältnis von 10 zu 9 und ein Super8-Film von 4 zu 3 hat.

Viel wurde probiert, die 4 x 5 mm Filmfläche möglichst flächenfüllen und ohne Verzerrung auf den Sensor zu kriegen. Lupengläser, Objektive diverser Brennweiten und Hersteller, Makroaufsetze für Handykameras und die ein und andere Kombination. Leider alles von wenig Erfolg gekrönt. Die Naheinstellgrenze der RaspiCam machte alle Annährungen zu Nichte. Bis ich über eine Webseite stolperte, die den Tipp enthielt die originale Linse zu lösen (ist nur Kleber) und zu verstellen, dann änderte sich die Schärfeebene und ich konnte erste Bilder erzeugen, die den Film mit mehr als 800 x 600 Pixel darstellt. Das war schon recht vielversprechend. Dann passierte das unvermeidliche: ich drehte die Linse, es wurde noch besser und dann etwas zu weit und die Linse viel raus und der Blick auf den Sensor war frei. Nun hätte man die Linse einfach wieder eindrehen können und weitertesten, aber was passiert, wenn man die Optik neu aufbaut?

Grundsätzlich kann man also die optischen und mechanischen Probleme auf zwei Dinge einschränken: gleichmäßige Ausleuchtung mit konstanter Farbtemperatur, möglichst großflächige Nutzung des Sensors.

Da viel mir ein Hama-Diascanner ein, den ich noch im Schrank liegen hatte und eigentlich schon längst abstoßen wollte, da mir das händische Einscannen viel zu mühselig war und die Nachbearbeitung auch noch zugeschlagen hätte. Das Ding war damals so billig da hatte man keine Skrupel es zu kaufen nun hatte man keine Skrupel es zu zerlegen um zu sehen, wie man das dort gelöst hatte. Diese Gerät enthielt eine Flächen LED (Weiß) die keine Hitze abgibt eine kleine Mini‑Optik vor dem deutlich größeren Sensor. Diesen Sensor an den Raspi anzuschließen übersteigt meine Fähigkeiten bei weitem aber die Optik strahlte Umbauwille aus.

Die folgenden Test mit Flächen-LED, Super8-Film und Optik vor der RaspiCam waren so gut, dass nun über den nächsten Schritt nachgedacht werden musste: wie transportiert man ein Bild nach dem anderen vor den Sensor? Die Probleme Software (Was muss sie können, wie wird aus den Einzelbilden ein Film, etc.) wurden erst einmal vertagt.

Hier ein Beispiel eines von hinten durchleuchteten Stück Millimeterpapier.

Motiviert von diesen Erfolgen wurden die bereits vorhandenen Komponenten Schrittmotor, RasPiCam, RasPi mit Tastatur und Festplatte, Netzteil und Schrittmotorsteuerung miteinander verbunden und der Schrittmotor mittels Riemenantrieb soweit untersetzt, dass man mit ca. 800 Schritten ca. 1 Bild transportierte. 800 Schritte auf 4 Millimeter erschienen mir ausreichend. Als Filmmitnehmer hatte ich zwei Achsen mit Silikonschlauch überzogen und den Film dazwischen durch ziehen lassen. Dann wurde flux ein kleines Programm zusammengezimmert und erste Tests mit einem 1 m langen Super8-Film gefahren. Leider zeigte sich, dass sowohl der Transport als auch die Spurhaltung nicht in den Griff zu kriegen waren. Der unterschiedliche Anpressdruck der beiden Silikonschläuche wahrscheinlich verursacht durch eine nicht gleichmäßige Oberfläche führte immer zu einem Ausscheren des Films. Auch eine selbst gefräste Filmbühne konnte das nicht ändern. Hier war ehr mit einer Beschädigung des Film zu rechnen. Inzwischen war der Respekt vor der feinmechanischen Leistung der Entwickler der alten Projektoren ordentlich gewachsen. Eben dieser Respekt brachte mich auf eine Idee: warum nicht einen alten Projektor nutzen? Mal eben in der „Bucht“ gucken was die kosten – OK, kein Projektor – die waren mir zu teuer. Aber was ist denn mit diesen Filmbetrachtern? Genau das war es: zwei Stück zum Preis von weniger als 20 Euro.... 5,4,3 usw....

Aus einem wurde die gesamte Optik und Elektronik (Beleuchtung) ausgebaut. Anschließen wurde ein Schrittmotor eingesetzt. Dieser treibt das Zahntransportrad über die Achse auf der vorher die Optik zur Lichtunterbrechung montiert war an. Zum Verständnis: Im Originalzustand wird jedes Super8Bild kurz durchleuchtet durch die schnelle Abfolge der Lichtimpulse entsteht der flüssige Ablauf. Die Schnittgeräte heben den 18-Bilder/Sekunde-Modus auf, da man hier händisch Bild für Bild transportiert. Beim Weitertransport dreht das Zahntransportrad durch die Filmperforierung die Achse mit der Optik genau 90° Weiter und nur dann kann Licht von unten durch den Film gelangen und wird auf der Matscheibe dargestellt.

Wenn man dieses Prinzip verstanden hat, dann kommt man recht leicht auf die Idee das Prinzip umzudrehen und den Schrittmotor an die Optikachse zu montieren und mit dem Zahnkranz den Film zu transportieren. Dann ergibt sich nämlich für ein Bild genau eine 90° Drehung, bei 3200 Schritten für einen Vollkreis sind das 800 Schritte (1/4 von 3200). Somit war das Vortriebproblem gelöst. Die seitliche Führung des Films ergab sich eigentlich von alleine, die ist bereits in der Filmbühne vorhanden.

Nun galt es also die Kamera über der Filmbühne zu montieren. Da ich über die Vorversuche nur eine ca. Entfernung ermitteln konnte und ich mir nicht zutraute die Optik exakt zu montieren erdachte ich mir eine Mechanik mit der es möglich sein sollte das RasPiCam-Modul in x, y und z-Richtung zu verfahren.

Hier das RasPiCam Modul mit Objektiv und Aluträgerplatte.

 

Die Montage der X/Y/Z Achsen zu beschreiben finde etwas mühselig, daher hier ein paar Bilder:

Front mit provisorisch ausgerichtetem RasPiCam-Modul und der Z-Achse.

 

Rückseite mit Schrittmotor für den Filmtransport

 

Das originale Zahnrad (das kleine Schwarze) wurde von seinen Anbauteilen befreit und mittels eines Metallrings mit Madenschraube auf der Achse des Schrittmotor montiert. Der Motor selbst wurde mit drei Schrauben (die vierte ist durch das große Zahnrad nicht montier bar) an der Alufront fixiert.

 

Z-Achse, X-Achse und die Führung für die Y-Achse

Dies war der mechanisch interessanteste Teil…

Anschließen wurde, ohne Anspruch auf Ästhetik, alles montiert was man so braucht….

Wichtig zu wissen ist, dass der Film nun von rechts nach links transportiert wird (war vorher genau umgekehrt). Als Elektronik Module habe ich aufgrund des vorhanden seins auf die Gnublin Serie gestützt. Diese boten mir eine einfache Programmieroption und sind recht problemlos in Betrieb zu nehmen.

Was bereits noch nachgerüstet wurde ist ein zweiter Schrittmotor zum Aufwickeln des bereits digitalisierten Films. Dabei konnte man nicht einfach einen bestimmten Schrittwinkel je digitalisiertem Bild vorgeben, da sich mit zunehmender Filmmenge der Durchmesser des aufgewickelten Film vergrößert. Wenn dann immer um den gleichen Winkel Aufgewickelt wird besteht größte Gefahr für den Film. Daher habe ich mir eine Mechanik ausgedacht die die Filmspannung zwischen Aufwickelrolle und Filmbühne abtastet. Die Idee das mit einer Lichtschranke umzusetzen musste verworfen werden, da das Filmmaterial für IR-Strahlen recht durchlässig ist und der Film nicht eindeutig erkannt wird. Auch der Versuch die Stellkraft des Schrittmotors herabzusetzen und dann zu hoffen, dass bei zu hohem Wiederstand einfach ein Schrittausfall passiert, fand ich nicht gut.

Nach eingehender Beratung im Fachgeschäft (Ich denke als Berliner darf man hier den Namen Segor erwähnen) hatte ich eine kleine Auswahl an Mikroschaltern erworben. Diese wurde dann auf Kompatibilität getestet und siehe da die billigste Variante in Kombination mit einem Stück Silikonschlauch führte zum erwünschten Ergebnis. Hängt der Film zu weit nach unten, dann drückt der Film die Metallkontakte zusammen, das Programm dreht dann so lange den Schrittmotor bis der Kontakt wieder offen ist. Gleichzeitig habe ich über diesen Kontakt eine Filmendeerkennung realisier: wenn nach 30 Bilder kein Wickelvorgang ausgelöst wurde, dann ist entweder kein Film mehr vorhanden, oder irgend etwas ist schief gelaufen was zu einem Programmabbruch führt.

 

Nach allen diesen und vielen kleinen Entwicklungen sieht die vorläufige Endversion so aus:

OK, ein Designe Preis werde ich dafür nicht erhalten, aber es funktioniert.

 

Hier ein Bild wie es vom RasPi gespeichert wird.

Der auswertbare Bereich hat eine Größe von ca. 1700 x 1250 Pixel, dies entspricht etwas mehr als 2 MegaPixel. Ein größerer Bildbereich würde zu Verzerrungen führen und ich finde mehr Bildinformation kann ich aus einem Super8-Film mit diesen Mitteln nicht rausholen.

 

Nun galt und gilt es die Software zu verfeinern. Bisher ist der Prozess Ablauf in zwei Bereiche unterteilt:

a) Digitalisierung, Programm in Python, Hardware RasPi, Speicherung der Bilder auf einer mobilen USB Festplatte,

b) Bearbeitung (Ausstanzen) der Einzelbilder auf einem Win7-Rechner: Alle Programme sind Freeware: Ausstanzen der Bilder und speichern (Eigenkreation, in Python umgesetzt) zusammensetzten der Bilder mit 18 Bilder/Sekunde mit dem Quick time Movie Makertool aus Processing-2.1.1 , anschließend erfolgt ein Konvertierung in ein kleineres (weniger Speicherintensives Format) mit Any Video Converter. (zum Glück sind das alles Stummfilme... mit Ton wäre das viel mehr Aufwand.

Die von mir geschrieben Programme gehören sicherlich nicht zu den Highlights der Programmierkunst… Spaghetti-Code trifft es da ehr. Aber momentan habe ich drei Probleme nicht zufriedenstellen gelöst:

a) Der automatische Weißabgleich der RasPI-Cam funktioniert nicht bei sehr hellen Bildern, die Programmierung eines festen Weißabgleichs mit der Vorgabe einer Farbtemperatur habe ich noch nicht geschafft,

b) Seit einem Update des RasPi funktioniert der Aufruf der Fotoroutine in Python nicht mehr somit ist hier aktuell die wichtigste Baustelle [ein raspistill -t 2000 -o image.jpg –e jpg in der shell geht, ein cmd = ‚raspistill –o‘ + … leider nicht mehr] Wie ich gerade auf http://www.raspberrypi.org/new-camera-mode-released/ gelesen habe schein ich mir beim letzten rpi-update auch einen neuen Kameratreiber ins System gespielt zu haben. Offensichtlich funktioniert dieser etwas anders, bzw. ich muss meinen Befehl neu anpassen - mal sehen, wann ich dazu die Zeit finde. (allerdinsg ein 90pfs video klingt verlockend)

c) Das zuverlässige Ausstanzen der Bilder ist noch nicht sichergestellt, die Ränder der Perforierung werden bei meinem Algorithmus nicht immer eindeutig erkannt. Ein von einem Forumsmitglied aus der Processing Community vorgeschlagender Algorithmus sieht vielversprechend aus – allein die Umsetzung in Python ist nicht trivial, da spezielle Processing Befehle verwendet wurden. Die vorgegebenen Weißabgleichfunktionen (cloud, tungsten, etc.) funktionieren nur bedingt, da sich während des Films die Motive erheblich unterscheiden können.

Sollte jemand zufällig wissen, wie man aus Python die RasPiCam mit einem festen Weißabgleich aufruft? Nur her damit…