Better Film Scanning With A Cheap Flatbed Scanner

I don't really plan to invest lot of money in shooting film. Therefore, I have to make do with a cheap 50 bucks Epson Perfection V330. And unlike its name suggests, it's far from perfect.

So, I shot for fun a roll of Ultramax. I keep shooting film from time to time, and I need to scan those films.
I don't like the process of using a camera to shoot negs, I never did, it's just not for me.

I like scanning. A long time ago I was using a Heidelberg Topaz 2, and I was happy with it. Now, I won't invest in some hi end scanning device to work on a few rolls every year. Even a just above average Epson costs 1 grand, used good scanner are still too expensive. I'd rather spend that money on JD, or lenses, or some fun camera.

So, I have an Epson V330, which I use mainly for document scanning and text recognition. But it can also scan photos and films. Epson claims 4800 optical DPI... We all know that is a lie. At best, that thing can resolve maybe 1500DPI.

The sensors aren't great and quite noisy, the optics aren't great, and the stepping motor isn't great either... on top of that the Epson software plain sucks... Even when using a better software (I'm using Silverfast), the scan quality doesn't really change, but at least you can export 48bits raws, and the scanning process is much faster.

I could stick to 1200DPI. That resolution is just below the apparent resolving power of this scanner. But if 1600x1200 pixels is maybe good enough for instagram, it definitely isn't for printing.

Therefore, I had to figure out a way to get the best out of this scanner.

What makes bigger scan not sharp?
With my scanner, I'm quite lucky: it's already perfectly focused. I don't have top adjust the neg height to have the scan in focus. Most people aren't that lucky with their flatbed scanner.

I can't fix the optics or make the step motor more accurate. The main issue with these optics and stepping motor is that each color channel is not perfectly aligned: the red, green and blue channels are slightly out of alignment on the sensor movement axis. The result is something that looks like chromatic aberation and blured image.

Fixing it in LR with the CA tool doesn't really help because it is not really "that" kind of lens CA. All you actually have to do is align those RGB channels. That will neutralize the pseudo CA, and slightly improve sharpness.

Now, the resolving power is not good, but that doesn't mean data isn't scanned. There is actually still a lot of sub pixel data waiting to be recovered. Stacking and averaging would do the job.

My process for now:
This is the base scan at 2400 DPI. It is a crop of the full image. I could just work on that, correct the AC and use topaz denoise to get rid of the scanner noise and make it look slightly sharper. But it can get much better.
Base scan 2400 dpi

Step 1
In this example I scanned 4 times the same crop of the neg, at 4800DPI, no postprocessing in silverfast, export to 48bits RAW.
I opened each RAW in Photoshop. I made a small action:
- invert the neg,
- basic levels adjustments so I can see something on my screen,
- duplicate the base layer 2 times and turns each layer into a red, green and blue channel
- upscale the image x2 nearest neighbor
- apply unsharp mask on each layer (120% 89 pixels radius here)

Not very pretty:
Scan 4800DPI, unsharp mask, upscale x2 nearest neighbor

Hopefully it gets better.
The next step is aligning those RGB layers. Here I wish PS had some elastic grid deformation alignment tool... But the auto-align layers function works quite well. I could also do it by hand.
Scan 4800DPI upscaled, RGB aligned

This image can be flattened and I repeat the same process on the 3 remaining scans

Step 2
Now, I have 4 big images that I can import as layers in PS.
These 4 layers need to be aligned, converted in a smart object, stack mode set to median, and then rasterized. I apply some light smart sharpen on the rasterized output (150%, 4 pixels, remove gaussian blur, shadows and highlights 50%, 50%, 8 pixels)
4 scans rasterized, smart sharpen

Still not great, but remember, that is basically a 4X upsacle from the 2400DPI scan that needs to be downscaled.

Step 3
Downscale: 25% bicubic sharper.
Downscaled back to 2400DPI

That could benefit from topaz denoise (low light mode, remove noise 15, sharpen 15.
Final image

Comparing that process to the original 2400DPI scan
To be fair, I had to correct the channels alignements on the original 2400DPI scan, and apply the same topaz denoise filter.
This is a comparison at pixel level, on the left (before): the 2400DPI scan with CA removed and processed in topaz denoise; on the right (after): the 4 4800DPI scans processed.

Temporary conclusion
This a quite a simple process, and there is huge room for experimentation and improvements.
Anyways, as it is, it's easy, and the result is definitely better than the 2400DPI scan.
I now have a 7MP photo that I can print up to 8x10 or even slightly bigger.

I also tested that process with up to 8 scans, with mixed results when using photoshop only: the problem here is the very basic PS alignment that doesn't take into account the speed variation of the scan chariot.
With elastic grid deformation, it is noticeably better. I could actually scan a quite hazy photo at the equivalent 2900DPI, resulting in a 11MP image with quite good details and conservation of the original film grain.


You can zoom in the image up to pixel level.