FilmLab July Update: Closeup Lenses and Image Resolution

During July I worked on three remaining areas of FilmLab that need to be finished before the release: smarter frame recognition, UI, and image resolution. I’m still working on the first two, but I was able to get the image resolution work completed. So for this month’s update, I’d like to talk about what you can expect for image quality in FilmLab 1.0, and how to get larger and better detailed images using an add-on closeup lens.

Image quality status quo

Here’s a 35mm film image:

My son, doing his homework while dressed as a pirate, because he's a kid and why not?

How much resolution and detail can FilmLab capture from the source negative? Let’s zoom into a 100% crop of this photo, as captured with the older 0.4.0 build of FilmLab:

You can see that there’s a lot of digital noise, and the image is pretty soft. There are two contributing factors behind this. First, the sensors in smartphone cameras have a lot of noise. Second, the image size is limited by the minimum focus distance of the camera. If you get too close, the camera can’t focus, so you have to keep your device about six inches or more from the film. So even though the camera takes a 12-megapixel image, after cropping down to the 35mm negative we’re only left with about 1 megapixel for FilmLab to process.

Using a close focus lens

To get around the minimum-focal-distance limitation, many people have considered using an add-on macro lens attachment for their phone. There are many of these lenses out there, with a wide range of build and optical quality. Unfortunately, most of the macro lenses that I’ve tried aren’t the best fit for FilmLab because they’re actually designed to work too close. This creates the opposite problem: you can’t move your device far enough away from the film to fit an entire 35mm negative into the picture. The only way to make this kind of lens work with FilmLab would be to implement an image-stitching mode where you could capture different parts of the image separately and then combine them together. This could be possible, but isn’t something I’d have time to work on before the release.

But there’s another, simpler kind of add-on lens available for phones: close-up filters. These are simple single-element magnifiers, similar to reading glasses. They don’t have as much magnification as macro lenses, and they’re available for cheap. I bought this one from Amazon for $10. It came with a +12.5 diopter lens in it, and it has a standard 37mm filter thread, so you can swap in other closeup lenses to optimize for capturing different size film formats. (I bought this Vivitar-branded set).

Although completely usable for casual work, these close-up filters do introduce some pincushion distortion when used with a standard wide-angle smartphone camera lens. But it turns out that they work even better when coupled with the telephoto lens on dual-camera devices. Using the +12.5 diopter filter with my iPhone X telephoto lens, I can work at a very comfortable distance, fill almost the entire camera view with a 35mm negative, and see very little visible distortion. It’s a great fit, and so for the next build of FilmLab I’ll be adding the ability to switch cameras. This way if you have a dual-camera device can switch over to the telephoto lens if you’re using a closeup filter.

Using the older June build of Filmlab with this cheap closeup lens, I can get closer and capture a higher resolution image. Here’s a 100% crop showing the difference (check out the pink paper he’s working on, where you can now see circle shapes where before there was just fuzzy noise):

Improving quality by stacking multiple captures

So that improves the amount of detail we can capture, but we’re still stuck with the digital noise from the small smartphone sensor. Fortunately, there’s a technique we can use to get around this, which I talked about in the original FilmLab Kickstarter video.

Now when FilmLab takes a photo, it will capture a rapid sequence of raw images. Then it will analyze the images, make sure they’re perfectly aligned, and average out the data for each pixel. This minimizes noise without losing any detail. In fast, under optimal conditions it’s possible to actually upscale the resolution and recover fine details not present in any of the original images.

Although I’d had a working prototype of this technique last year, I hadn’t gotten around to implementing it in the FilmLab preview builds until last month. It’s working now, and I’m happy to say that the resulting image quality is noticeably better. Here’s a crop of that same image shot with the current development version of FilmLab (and still using the closeup lens):

Compared to the previous versions, the circles on the paper are now more clearly defined, and there’s more detail and less noise throughout.

For ease of comparison, here are the three crops side by side (click any of them to view the corresponding full-size image):

Good enough for 1.0

Is it possible to do even better? Definitely. There are more improvements that can be made, both in software and in complementary hardware. But I don’t want to hold up the release working on that. So this is the image resolution you can expect to get with FilmLab 1.0. I’m going to be spending my time in August working on the other features that need to be done before the release.

When can I have it?

This capturing and processing of multiple images is tied to some new UI work that isn’t quite finished yet, so I haven’t released it to testers. I’ll get a new build out to iOS testers as soon as I can, and we’re getting close to the point where I can finally fold all this work I’ve been doing back into the Android version and get a new beta out. As always, I thank the Kickstarter backers and other supporters for your patience while I work through everything that needs to be done for 1.0.

Have a great August!

-Abe