Sharing DIY 8mm / Super 8 project for feedback


#1

Greetings. I would like to start the year by sharing the experience, and hopefully getting feedback on results of a simple DIY approach to digitize 8mm and Super 8mm.
The project started with a family legacy of about 120 8/S8 reels. Initially looked at outsourcing the transfer, but quickly got sticker shocked and frankly disappointed that the consumer level options were not even HD.
My background is technical, and while I have lots of experience with photo negatives, this was the first time I took on the challenge of film. Goal: extract the most quality, within my budget.
DIY is about using what you have, with what you know. So I started with a DSLR (Nikon D3200), and initially addressed getting an image of good quality. Using a photo enlarger lens backward mounted on a macro bellow produced excellent results.
I shy away from a fast transport, given the issues to synchronize the video and the shutter of the film on a real time transfer would by definition create a quality problem, given the dissimilar frame rates of 8, Super 8, and accepted file formats. That lead me to take the frame by frame approach. Deconstruct the film into a file sequence, and having the opportunity to do digital improvement with a high quality source.
The family projector that came with the films had an interesting gate, driven by an axis that could easily be driven by a step motor. I am pretty comfortable programming with Arduino, so getting the stepper to work was relatively simple. The gate also has a handy micro-switch that flags when film is not present, so that was incorporated into the Arduino so the transfer could run unattended.
Given the goal of best quality, I decided to try using the full resolution of the camera (24 MP) and RAW file sequence for best range. Also it was almost a necessity because when using the below, the Nikon D3200 only works in Manual speed, so there was no way to adjust it automatically at the capture, adjustments had to be done at the file sequence.
DigicamControl was a saver, and even with the slow speed transfer (camera connects via USB2.0), was able to get a decent 20-24 frames per minute, which translated into digitizing a 50 ft. reel in 3 hours. Again, if the trade was speed or quality, I went for quality. DigicamControl(DCC) has a handy arduino plugin, which basically allows to send serial commands and report file saving completion to the arduino. With that, the process is started by DigicamControl sending a start command, arduino sends a capture command to DCC and waits to get a file transfer completion from DCC. After receiving the file transfer confirmation, arduino advances the stepper one turn, and sends a new capture command. Repeat until there is no film on the gate, and voila, a file sequence is born.
Lastly, I harvested the takeup and pickup portions of the projectors and drove the take-up reel with a continuous servo that slips and keeps the film from nest. Disclaimer, the initial version without take-up had a box to accumulate the film.
This is a video of the scanner, using a slow laptop Machine.
This post is long enough, so a quick rundown of the workflow.
RAW 24 MP .NEF captured with DigicamControl. Davinci Resolve (free version 15) can open a NEF sequence (12bit) directly. First step, crop, adjust levels, and correction of frame shifting (manually). Export TIFF (8bit) sequence. Used VirtualDub2 and NeatVideo for noise/dust filtering, output to a JPEG sequence (8bit). All the above process is used without adjusting frame rate, basically, the original film frame rate is preserved through the sequences, which is critical in avoiding additional artifacts on the digital processing. Lastly, the JPEG (8bit) sequence is open in Davinci again, this time selecting the correct frame rate. Use Davinci for final encoding of MP4 file.

The above workflow translates into these files/frame sizes.
NEF/12bit 24MP - 6000x4000
TIFF/8 - 3120 x 2160
JPEG/8 - 3120 x 2160
MP4@100Mbit - 3840 x 2160 (16:9 with black side bars) 24 frames/s

What I like about this approach is that the quality is limited by the camera, and the optics. Essentially the workflow would support multiple resolutions/bit depth depending on the available camera, available time, storage… and patience. And the same is suitable to larger film, given that the results in 8/Super 8, anything larger would no doubt be better.
The following video makes a comparison from the source RAW uncorrected film to the final output, the second half of the video enlarges 2x for presenting details. It is subject to Youtube lower bit-rate, and compression artifacts, but nevertheless is a good way to show it.
Results
Select 4K resolution on the Youtube gear for best quality.

Interested on feedback on the results. Understand that Kinograph approach is to do realtime transport, but I believe that on a budget, one can achieve greater the quality results on the frame-by-frame approach. Happy to provide additional details if anyone is interested.

Thank you,

Pablo.


#2

Good job.
However I thought that they was an issue with the finite shutter life of a DSLR camera. Did you find a way around that or just taking the hit?
Also are you going to share you Arduino code?

Fred


#3

@fa001 Thanks for the comment.
I was aware of the shutter life, and can report that the camera used for the scanner has passed the MTBF already. Bought the camera refurbished a few years back at a good price, and my calculation was that it would be part of the cost for the project. By the way I also learned that mirror-less cameras are also subject to the similar shutter life limits - Google “Nikon Article ID 000003332”.

Let me expend some time adding comments to the Arduino Code and make it more understandable, and I will post it here too.

Pablo

PD. With DigicamControl one can use cameras other than DSLR.


#4

Thanks for sharing! Congrats on your work! I’m going to put this in the Kinograph newsletter.


#5

Pablo, I’m interested in hearing how you did frame detection. How did you determine when to send a “capture” signal to the camera>?


#6

And thank for the detailed info on the workflow. I’m definitely going to try that out!


#7

I can’t seem to see the Nikon link that talks about mirrorless shutter life. It takes me to a login page. Can you repost or copy/paste the info into a sharable Google doc?


#8

@matthewepler Thank you for the comments, and glad that you will share the info in the newsletter.

The harvested gate/mechanism uses a dual pin mechanism to advance the film. Every turn of the stepper motor is exactly one frame. By using a stepper motor, the arduino drives the position of the film. For convenience, the steady state of the gate was configured for the position where the pins are lifted out. If I understand the question correctly, the sequence is, Arduino sends a Capture command and waits for an image transfer confirmation. DigicamControl receives the command and capture the image, when image transfer is completed DigicamControl sends a message to Arduino, When Arduino receives the confirmation, advances the stepper half a turn. In the half turn position the pins are engaged, but the frame has not advanced completely. At this position, the take-up reel advances. If the tension of the take-up reel moves the film slightly at the gate, it is not an issue, since the next step is to complete the turn of the stepper motor which would complete the advancement of the one frame, and leave the pin out in the exact same position the sequence started. The gate is from a Canon S800 projector, and the mechanics are a bit beyond my understanding. But the function of the dual pin advance mechanism is similar to the one on this video.

Given that I have plenty of resolution on the sensor, the DSLR is actually capturing almost two frames (1/2 + 1 + 1/2). Once setup, the mechanism is reasonably stable, but whatever shift from shot to shot can be compensated digitally in Davinci by setting a tilt keyframe, and adjusting the position. The gate also has a mechanical adjustment to position the pins from 8 to Super 8 (horizontal) and to adjust the position of the pins (the frame) vertically.

In summary, there is no frame detection because the film accurate one frame to one turn mechanism. Hope that makes sense.

Regarding the workflow, if you haven’t tried it, NeatVideo is amazing. It is available as a plug-in for Adobe, but given that I went with Davinci, VirtualDub2 was the answer.

This is not the less labor intensive or faster scanner, quite the opposite. 3 hours to capture 50 ft. Then a good deal of adjustments in Davinci. NeatVideo takes about 90 minutes for a good cleaning, and then back to Davinci for final. Again, I was going for best quality (within my budget). However, the capture and Neatvideo are time consuming but unattended processes.

Happy to share any additional information that may be useful, will work on the Arduino comments to share the code next week.

Thanks.


#9

PS. Could not figure out why the Nikon link does not work, Google “Nikon Article ID 000003332” for the info.


#10

Thanks, Pablo. Great stuff.

Matthew


#11

Great project! Very impressive results.

I too am staring at a stack of 100+ 8mm reels and am considering a DIY approach.

One question that came up after looking at your setup; how do you handle lamp heat? It seems that each frame sits in the full light of the lamp for a rather long time – do you have any trouble with film melting?

Great work!


#12

@TimC Thanks for the nice comment.
Regarding the heat, I am using a piece of a 12V LED strip folded to have the LED chips be closer together. In essence it is not much heat. The exposure I used is about 1/20 for an f11 aperture on the enlarger lens.