This forum is a read-only archive. The conversation has moved to Discord.

Using a film scanner: what to export, and how to tell the app what it is

Guides

Michał Staff #1

A few of you have asked whether the app will take files from an ordinary film scanner (a Coolscan, an Epson, a Plustek) instead of three camera exposures. It will, but not every file will do. This post covers what the file has to be, what to set in the common scanning programs, and what I have not measured yet.

Note

The short version is that the app wants the scanner's own numbers, before the scanning software turns them into a picture. Everything here measures density as −log10 of the light that got through the film. A file that has been through a tone curve, an inversion or a colour conversion is no longer a measurement of the film. It is somebody else's rendering of it, and no calibration can recover what that rendering threw away.

#What the file has to be

Required Why
Format TIFF, classic (not BigTIFF), in strips (not tiles) Uncompressed, LZW or Deflate are all fine, in either byte order
Depth 16 bits per channel, RGB (often labelled "48-bit") 256 levels cannot carry a negative's range, and an 8-bit file has already been through a curve to get there
Tone linear (gamma 1.0), or a fixed gamma you declare A gamma left in the file scales every density. The app can undo it only if you tell it which one
Exposure one setting for the whole roll, auto-exposure off Auto-exposure gives every frame its own curve, and then no single film base fits the roll
Levels no auto-levels per frame, and no per-channel stretch Same problem: each frame gets its own gain per channel. The app detects this and warns you in MERGE and PROCESS
Colour no ICC conversion: no sRGB, no AdobeRGB output profile A conversion mixes the three channels together. The app needs the scanner's own channels
Processing no inversion (scan the negative as a positive), no sharpening, no dust removal / ICE, no colour restoration, no grain reduction Each of these changes the numbers
Framing if your holder allows it, include the rebate or the gap between frames That is where the film base is read. Without it the roll falls back to BASE LEVEL, its brightest point

Anything else gets refused by name, with a sentence that says what the file is and what to export instead. That covers 8-bit, tiled, BigTIFF, floating-point, JPEG inside a TIFF, greyscale, CMYK, Lab and YCbCr.

Caution

About framing: a scan cropped inside the picture can hand the base reader a straight edge of the scene. I have seen it read the edge of a chair running the full height of the frame as film base, which left a slight cyan in the deepest shadows. Leave some of the gap in.

#What to set, program by program

Warning

Menu wording moves between versions. Treat these as the settings to look for, not a click path. None of these programs has been measured on this bench yet (see the last section).

  • Output: Raw file, 48-bit RGB. The raw file is linear (gamma 1.0) and taken before inversion. If you'd rather use a regular TIFF, set "48 bit RGB", Color balance: none, curves and brightness at 1.0, and all filters off.
  • Input: Lock exposure, so the whole roll is scanned at one exposure.
  • Infrared clean (ICE), Restore colors, Grain reduction and Sharpen: off.
  • Crop: wide enough to take in the gap between frames, if the film holder allows it.

#SilverFast

  • Export HDR / HDRi 48-bit. That is SilverFast's raw linear file.
  • NegaFix, auto tone and colour management must not be applied to it.
  • HDRi carries infrared as a fourth channel. The app steps over it and tells you it did.

#Epson Scan / Epson Scan 2

  • Professional mode, Document Type Positive Film (so it does not invert).
  • 48-bit colour, No Color Correction.
  • Every Image Adjustment off: Unsharp Mask, Dust Removal / Digital ICE, Backlight Correction, Color Restoration, Grain Reduction.
  • Output TIFF, uncompressed or LZW.

#Nikon Scan (Coolscan)

  • 16-bit, film type Positive.
  • Digital ICE, ROC, GEM and DEE off; auto-exposure off; Analog Gain the same for the whole roll.
  • Colour management off, or the scanner's own RGB space if your version offers it.

Tip

On a Coolscan, prefer VueScan's raw file over Nikon Scan. Nikon Scan has no explicit linear output, and I have not checked what it actually writes with colour management off.

#Telling the app what the scanner is

A TIFF does not say what its numbers mean, so the app asks once. In MERGE, the STATION panel gives you three ways:

  1. Choose a station you have already declared. Your choice is remembered against the files' source (the scanner and the program, as the TIFF tags name them), so the next roll from the same scanner binds without asking.
  2. declare a scanner… lets you give it a name and three answers, and remembers them for the next roll.
  3. This roll only. The same three answers sit right on the panel. MERGE & PROCESS lights up once CURVE and LIGHT are both set. Nothing is remembered, so the next roll asks again.

The three answers:

What to pick
FULL SCALE 65 535 for a program that writes true 16-bit. That covers VueScan, SilverFast and Epson Scan, as far as I know. Wrong by a factor, and every density is off by a constant
CURVE linear for a raw / gamma 1.0 file; gamma 2.2 or sRGB only if that is really what your export wrote. Declared, never guessed: a dense negative and a gamma-encoded thin one have the same histogram
LIGHT RGB LEDs for a Coolscan or a minilab scanner; white lamp for an Epson, a Plustek or any flatbed

For a Coolscan with VueScan raw, that works out to 65 535 · linear · RGB LEDs.

#Why LIGHT matters more than it looks

A scanner that lights the film with three narrow LEDs sees film the way the three-exposure rig does. It gets an identity map: its channels are taken as they are, and nothing is fitted.

A scanner with a white lamp and ordinary filters (a flatbed) does not. Until it has its own calibration it borrows the camera's colour map, and borrowing is measurably bad. When I forced a scanner onto the borrowed map, a test chart came out about two stops dark and oversaturated. The STATION panel and LAB both say borrowed when that is what is happening, so you are never looking at it without knowing.

#What is measured, and what is not

I would rather say this plainly than have you find it out:

  • ⛔ No flatbed has been measured at all. Epson and Plustek files will process, but with a borrowed map. Expect to correct colour by hand.
  • ⛔ No Coolscan has been measured either. Giving it the identity map follows from its LEDs being narrow, but I have not tested it on a chart the way the camera rig was tested.
  • ⛔ No real TIFF from VueScan, SilverFast or Epson Scan has been read here yet. The reader is tested against reference-encoded files in every layout listed above, but the first real file from each program will still teach me something.
  • ⛔ Holding one exposure across a roll is assumed for every scanner, not measured.

If you scan with any of these, a roll posted in this thread is the most useful thing you can send. Please include:

  • the scanner and the program, with its version;
  • the settings you used;
  • whether the app took the files, and if it refused one, the sentence it gave.

If a file is refused and the sentence is not enough, the tags are worth attaching too: exiftool yourfile.tif prints the make, model, software and whether an ICC profile is embedded. An embedded profile is the quickest sign that the export was not the raw one.

This forum is archived — carry on on Discord.