A data-driven approach to film inversion
How to digitise medium-format negatives using a camera and macro lens, optimising linear RAW data through darktable's non-destructive pipeline
Introduction
Over the years, my approach to photography has become less instinctive and more deliberate, as I’ve moved away from 35mm to medium format with a Pentax 67II: a heavy, bulky and noisy camera, but the image quality is unrivalled.
Whenever I look at a photo taken with the Pentax 67II, what immediately catches the eye is the three-dimensionality of the portraits, the separation of the foreground and the way the ‘grain blends together’. These effects are difficult, if not impossible, to replicate with smaller formats or ultra-sharp digital images.
My only frustration with analogue photography is digitising the images from the 6x7 negative. In the past, this task involved lengthy sessions with an Epson V850 Pro scanner. However professional it may be, this scanner is slow and focusing is difficult. The resulting files are enormous and completely unmanageable for anyone seeking high quality.
I have opted for a more effective system offering significantly better quality: photographing the negative with a full-frame digital camera and a macro lens.
This approach allows me to create RAW files that I can process with extreme precision and flexibility using darktable.
Camera and lens
The camera I use is a Panasonic Lumix S5II, which already offers enough megapixels out of the box to capture the film grain, and produces RAW files measuring 6000×4000 pixels.
My aim is to extract as much information as possible from the negative. For this reason, I use the camera’s High Resolution mode: the camera takes a series of closely spaced shots and combines them into a single final RAW file measuring a full 12000×8000 pixels.
This way, I’m sure to get the absolute maximum resolution from the equipment at my disposal, archiving native files ready for any present or future printing or enlargement needs.
To optimise my workflow, I’ve created a custom setting to quickly configure the camera when I start a scanning session. The Lumix S5II offers 10 custom modes in total, and I’ve chosen to assign these settings to mode number 10:
C3-10: Film scan
Photo menu (Image quality 1) :
- Metering: Spot*
- High resolution mode setting
- Handheld High-Red: OFF
- Picture quality: RAW
- Simul Recor Normal Shot: OFF
- Shutter Delay: 4 Sec
Photo menu (Image quality 2):
- ISO Sensitivity (photo): 100
Custom Menu (Monitor / Display (Photo)):
- Auto Review
- Duration Time (photo): HOLD
- Constant Preview: ON
- LVF / Monitor Disp. Set
- Both display the icons outside of the live view area
- Vertical Image Flip (Monitor): OFF
Custom Menu (Monitor / Display (Photo)):
- Frame Marker: ON
- Frame 1: 5:4
- Zebra Pattern: Zebra 1 (95%)
This custom mode was programmed using the camera’s manual mode (M), giving me the freedom to adjust the exposure times according to the density of each specific film.
A key setting not to be overlooked is White Balance, which I set manually to 5000 K to match the native temperature of the Kaiser light panel. White balance during shooting is a critical parameter for achieving high-quality digital conversions.
For the lens, I opted for the Sigma 105mm f/2.8 DG DN Macro Art, a lens credited with a 1:1 actual magnification ratio, perfect for reproducing negatives. There are millions of online reviews on the optical quality of this lens and its exceptional MTF charts. For my purposes, the only adjustment required is to set the aperture ring to f/5.6 to work at the lens’s maximum sharpness. That’s it.
The setup
To reproduce negatives using the Lumix S5II in High Resolution mode, it is essential to mount the camera on a copy stand to eliminate any micro-vibrations during the long exposure times required.
There are countless solutions available, ranging from professional setups involving copy stands costing thousands of euros, to the classic tripod or DIY setups.
Professional solutions costing thousands of euros are available on the market, as well as more economical setups based on tripods or DIY configurations. In my case, I opted for an old Durst M707 enlarger picked up on the second-hand market for just €30. To accommodate the Lumix, I purchased a custom 3D-printed adapter that converts the Durst column into a perfect copy stand, replacing the original accessory from that era, which is now impossible to find.
For lighting and positioning the negatives, I use a Kaiser Film Copy Vario system paired with a stable 5000 Kelvin daylight LED light panel, featuring a professional colour rendering index (CRI = 95).
I would like to emphasise one point: never underestimate the stability of your workstation. A temporary or makeshift setup might work if you need to digitise a couple of rolls every now and then, but a solid, calibrated and ready-to-use workstation is the only real factor that allows for precise and, above all, fast scanning.
In a single weekend, thanks to this setup, I can easily scan around 40 rolls of 120 film, totalling 400 images.
Dust and fingerprints
If you want to scan efficiently, there is one practical aspect that deserves a section of its own in this article: keeping your equipment clean. Dust and fingerprints are the sworn enemies of analogue photography; not only do they ruin the scan, but they also exponentially increase the amount of work required to remove defects in post-production.
When handling negatives, I always wear white anti-static cotton gloves and use a dedicated cloth and a good-quality air blower. These accessories cost next to nothing compared to the value of the setup, but they are worth every single penny invested. I meticulously store the analogue material inside ring binders using parchment paper sleeves.
Before starting a shooting session, I thoroughly clean the room, the table and the base of the copy stand. I only touch the film with gloves and remove any accumulated dust by blowing with the air blower both before and after placing the film on the Kaiser support.
The key point: data-driven digitisation
Before going into detail about how to digitise film, I want to focus on the philosophy that has changed my approach to this process.
There are various tools available that allow you to take a photo of a negative, invert it and create a positive image. For many, simply taking a photo, inverting it, cropping it and posting it on Instagram may be enough, but for those like me who see photography as an art form to be explored in its entirety, it is difficult to overlook the technical aspect.
There are many automated software programmes and plugins that promise to invert a negative in a single click. For many users, simply taking a photo, applying a generic inversion, cropping and posting on social media may be enough. But for those who experience photography as an art form to be explored in its entirety, the technical aspect and control over the data become fundamental.
What, after all, is a photograph? One could go on at length, but I’ll stick to the scientific definition that unlocked my way of working: “Photography is information”. You capture a portion of reality and translate it into data, be it chemical or digital.
In the case of film, light passes through the lens and exposes the silver salts in the emulsion, recording the information. The chemical development process fixes this information onto the physical medium. When we digitise the negative using a digital sensor, we are performing the same operation: we collect that chemical data to convert it into digital data.
Our sole objective must therefore be to capture as much information as possible and of the highest quality permitted by the sensor, so that we can then freely manipulate it in post-production without incurring data loss or clipping.
Scanning the negative
Once the camera has been mounted on the copy stand and the negative placed in the holder, we are ready to take the shot.
The Kaiser’s 5000K light source (CRI 95) ensures a full and uniform colour spectrum, simulating zenithal sunlight. On the camera, after selecting the dedicated custom mode, I check that the White Balance is set exactly to 5000K to ensure consistent settings. Thanks to the Frame Marker set to a 5:4 aspect ratio, centering and aligning the edges of the medium-format frame is straightforward.
To maximise the transfer of data from film to RAW, the best strategy is exposing to the right (ETTR), which allows the digital sensor’s pixels to be saturated with the maximum amount of light without resulting in highlight clipping.
I set the Sigma 105mm to f/5.6 and extend the exposure time until the 95% Zebra Pattern begins to appear on the lightest areas of the negative (which, once inverted, will represent the deepest shadow details in our photo).
When measuring exposure, we must bear in mind that the most transparent and unexposed part of the roll represents the minimum density value ($D_{min}$) of the film. This value is constant throughout the roll and will be our fundamental reference point within the development workflow in darktable.
From RAW data to the final image using darktable
To help you test this workflow, I have made the original 12,000×8,000-pixel high-resolution RAW file available for download. You can download the ZIP archive (106.5Mb) to experiment with the inversion yourself.
In the following example, we will examine the development process starting with a Kodak Portra 400 colour negative shot with a Pentax 67II.
This is what the unprocessed native RAW file looks like. If darktable were to automatically apply a modern tone mapper designed for digital positives (such as AgX or Sigmoid), the first step would be to disable the module in order to work on the linear data.

First, I crop the frame to remove any unwanted edges using the crop module, setting the native aspect ratio to 5:4 (ratio 1.25).

At the top right of the darktable interface is the scopes module, an essential tool for analysing the image signal. If we analyse the histogram in RGB parade mode before making any adjustments, we can see that the three channels —Red, Green and Blue— are completely misaligned due to the film’s orange mask.

I use the basic white balance module, positioning the sampling tool (1) directly on the lightest part of the negative to align the R, G and B channels with this reference area.

Here is what the RGB Parade looks like after white balance: the three channels are now perfectly normalised and aligned.

Immediately after white balancing, I activate the exposure module to carry out the essential cleaning of the initial data. Having shot in ETTR mode, the transparent plastic of the negative ($D_{min}$) is close to the right-hand edge of the graph.
Using the exposure module, I increase the overall exposure until $D_{min}$ is precisely aligned with the top of the dynamic range (0 EV), positioning it just before the clipping point (pure white). By defining this “zero point” of the film through exposure, I indicate to darktable the exact boundary where the film’s plastic base ends and the actual image data begins, ensuring clean and predictable mathematical conversions.

Important technical note: at this stage of the linear workflow, it’s essential not to enable the colour calibration module. This module applies colour transformation matrices optimised for positive digital files. The inversion algorithm, on the other hand, requires an RGB signal that is as pure and linear as possible, directly from the sensor. Enabling colour calibration before inversion would generate artefacts and a module overlap that is detrimental to the film’s colour fidelity.
Negadoctor
This is where the negadoctor module comes into play — darktable’s built-in tool designed for managing negatives through targeted sampling.
I launch the module by selecting the colour film option from the drop-down menu.

Film properties

Using the first sampling pipette (2) dedicated to the colour of the film base, the software determines the minimum density ($D_{min}$) of the film. The automated process works with pinpoint accuracy if the shot is taken to perfection; however, the presence of dust or localised clipping can skew the reading. Ideally, this sampling should be performed on the film’s interframe track (the unexposed orange edge); as this is not available within this specific narrow crop, I allow the algorithm to perform the automatic calculation across the entire area.
The next step involves selecting the film’s dynamic range (3), again using the automatic reading via the sampling pipette to map the range between whites and blacks, expressed in dB.
Finally, I stabilise the overall brightness by clicking on the icon of the third pipette dedicated to the scan exposure bias (4).
These automatic adjustments form our logical starting point: once a consistent inversion has been achieved, the individual sliders (particularly the dynamic range slider) can be fine-tuned manually to increase or decrease the overall contrast without having to resort to external modules.
Corrections

Switching to the corrections tab allows us to fine-tune the RGB balance using two primary sets of controls: shadows colour cast (5) and highlights white balance (6).
A quick glance at the RGB Parade reveals that the Red, Green, and Blue channels are slightly out of alignment.
In particular, the blue channel is noticeably stronger, leading to a subtle blue cast across the entire image.
The RGB parade is the ideal tool here, letting us visualise and even out channel intensities by revealing their specific mathematical characteristics.

Adjusting the shadows colour cast sliders alters the offset (an additive shift) of each individual channel. This effectively shifts the darker pixels —the shadows— upwards or downwards on the Y-axis:

Conversely, the highlights white balance sliders control the gain (a multiplicative scaling). This scales the brightest pixels —the highlights— stretching or compressing the top end of the channel:

Our goal is to balance these sliders until all three channels align uniformly, neutralizing the color cast.
While a photographer can certainly use these adjustments creatively to inject a specific artistic mood, I opted for a neutral baseline to accurately preserve the film’s native profile:

Print properties
The final tab in negadoctor acts as a genuine “darkroom simulator”.
It contains parameters that replicate the characteristic behaviour of photographic printing paper (such as the contrast range or the handling of deep blacks). It is in this section that the final creative adjustments (6)(7)(8)(9) are concentrated, aimed at refining the mood of the shot before export.


A 100% crop of the 12,000×8,000-pixel file highlights the sharpness of the detail and the clear definition of the film grain, confirming the superiority of camera scanning over traditional scanning systems.
Digitisation as a scientific measurement of data
This methodological approach has enabled me to redefine the very concept of analogue digitisation. Developing a roll of film using a film scanner does not simply mean taking a photograph of another image, but setting up a scientific system for measuring the light transmitted through the individual layers of silver and dye in the film.
The success of this workflow can be summarised in two key points.
Hardware optimisation during capture: the rigorous adoption of the ETTR technique allows the minimum density of the film (Dmin) to be positioned close to the sensor’s saturation limit (to the right of the histogram). This approach allows the full 14-bit depth of the RAW file to be utilised, pushing the actual information of the photograph into a clean signal range and drastically reducing digital noise in the shadows (which correspond to the densest and darkest areas of the physical negative). Balancing the upstream light source ensures that the RAW file records pure, linear data, interpreting the scan as a layer-by-layer spectrographic measurement.
Data-driven software linearity: normalising the initial levels using the white balance and exposure modules before performing the inversion allows a file that is already calibrated at its minimum and maximum points to be sent to darktable. By eliminating the need for aggressive corrective interventions or the activation of non-linear modules (such as colour calibration, which is native to the positive), the negadoctor algorithm ceases to be an ‘unstable’ tool based on software conjecture and becomes a precise mathematical converter.

The result is a logical workflow, free from approximations and entirely based on the control of physical data, capable of preserving the extraordinary plasticity of my Pentax 67 medium format.
If you enjoyed this article and would like to improve your approach to open-source RAW processing, please note that I am available for personalised one-to-one coaching sessions. I’ll help you master darktable’s tools and set up an independent, professional photography workflow.
If you’d like to book a private lesson or discuss a new creative project, feel free to contact me.