How to process photo-scanned B&W negatives?

I am new to film photography, and am trying to integrate my films scans into my digital workflow.

For now, I am taking digital photographs of my developed films (using a crazy Lego contraption to hold the film, a smartphone as a makeshift backlight, and a macro filter on my zoom lens to get a passable magnification). I then import this picture into Darktable, crop out the Lego and film, and use the invert module to get a viewable picture. Here is an example shot using this process:

_DSF7709.raf (26.0 MB) _DSF7709.raf.xmp
All files are licensed Creative Commons, By-Attribution, Share-Alike.

My question, or challenge, is how to process such black and white scans?

I am fairly proficient with Darktable for my digital images. But this black-and-white scanning workflow has me asking so many questions:

  • Do I use Darktable in full linear mode (no base curve or filmic), because the film is already taking care of the S curve?
  • It seems that the tone curve and levels work better in this case than their RGB brethren. Why is this the case?
  • Since the image is only covering a small part of the file’s dynamic range, the tone curve is very unwieldy.
  • Is there a better way of adjusting highlights and shadows of these files than the tone curve?
  • What other workflows could/should I be using instead?

Essentially, I’d be grateful for any hints on how to process negative scans. And I am very much looking forward to the negadoctor next month.


There haven’t been that many (B&W) negative workflows here.

These two threads might be of interest:

These are negadoctor related though. This module is not yet a part of the latest stable (3.0.2), but this module is available in development and will be part of the August 10 stable 3.2.0 release.

I do mention this, even though it might not help you right now, to make sure that you do not start building a workflow around the (in my opinion flawed) invert module. It is definitely worth waiting 'till August for this new module. It is rather nice!

1 Like

I am not really sure that shooting film and developing digital scans makes sense.
If you do all the “tricks” that darktable can do, you could also directly start with digital shooting. So, I tried to keep as much of the “quality and characteristics” of the film negative as possible.

  1. crop & rotate
  2. make “real” b/w with channel mixer
  3. inversion with linear tone curve
  4. fine adjustment with exposure module
  5. slight denoise of digital image
  6. slight sharpening of digital image with contrast equalizer

_DSF7709.raf.xmp (6.9 KB)


Thanks for sharing, though one.
I used negadoctor but struggled in finding the right settings in the corrections tab. For some reason the color pickers weren’t helping.

_DSF7709.raf.xmp (28.6 KB) (darktable 3.1.0~git2499.b483c8a20)

I don’t know how “correct” this process is, just follow my eye. I have very little experience in digital scanning, but do have a whole box full of 35mm film waiting for me to work out whether I want to go the dslr or dedicated negative scanner route.

_DSF7709.raf.xmp (50.7 KB)

darktable 3.0.2
I start by comparing a snapshot of RGB curves inverted to the invert module. When using invert module, use the picker to select film strip border. When using RGB curves, bring the end points in til black is black, and adjust mid tones as desired. (Edit: should probably just use the invert module - have posted comparisons of the different methods here: inverting photos of color negatives with darktable)
Use white balance to make neutrals grey. This image was easier being black and white. Put a colour picker anywhere and adjust the r,g,b sliders til the r,g,b values of your colour picker are equal.
The rest is using preferred modules as per normal for desired tone, contrast, sharpening, etc…

You are certainly testing us with a tricky exposure! Should it be reversed, with the tree on the right?

1 Like

I’m not at my computer to play with the file, but the technically “correct” workflow for processing BW negatives is to start With an exposure that is within 1/3 stop of clipping the film rebate in the Linear raw data and then inverting the raw linear data before any gamma correction. You should end up with an image where the film rebate falls at about 6-9% (16-23 RGB), a “properly” exposed middle gray around 40%, and a true white around 60% with “brighter than white” speculars and highlights perhaps extending up to 90% in the densest negatives. This is, of course, assuming ideal exposure and standard development. In reality those points will vary because film stocks and development vary, but you can use those references as a starting point for crafting a baseline tone curve, where middle gray moves to 45%, the rebate to 0-1%, and white from 60 up to 75-90%. and I’m not familiar enough with Darktable to know how all that works out there, but hopefully it’s helpful!


It does! :wink:

@bastibe. I scan b&w negatives and color slides from time to time and with my Epson photo scanner I get decent results. I scan with Xsane in Gimp at the highest resolution (3200ppi), then I promote the resulting 8-bit file to 16-bit for further processing in ART.

Below are two versions, the first made in Darktable (I’m not a specialist with that program), the second in Gimp (just to inverse the negative) and the rest in ART (don’t mind the wrong crop!).

_DSF7709.raf.xmp (13.9 KB) (10.6 KB)


Are you talking about processing “old” negatives or about shooting new images with film and then processing the scan digitally as @bastibe is doing ?

I know a couple of view camera photographers that expose and develop their negatives traditionally, then scan the negatives to produce prints digitally. Saves the expense of a print darkroom, and a lot better control over the print than the dodge-n-burn techniques in the enlarger light path.


I don’t think there’s anything non-sensical about it. Lots of feature films are still shot on film and they’re all scanned, processed and (for the most part) screened digitally. If you are trying to achieve the aesthetic of film it’s not at all a simple matter to emulate that digitally in a way that is consistent and repeatable. Even with all the presets and profiles and 3DLuts available today if you just change the light a little bit from the conditions the profiles were made in everything gets thrown off. In the cinema world some colorists like Steve Yedlin have spent loads of time and money to truly quantify the analog variables and emulate their favorite film stock/scan/print digitally but the means to do that really hasn’t filtered down to the masses yet. Steve literally shot 2600+ frames of film using lights that let you set the exact XYZ color space spectral value of their output in order to collect the necessary data and then wrote his own interpolation algorithms to model it into a something that can be used for emulating it with ONE camera. The process is so camera and lighting specific that it would be really hard to do on a mass commercial scale. So, yeah, IF you want the look it and don’t have the time/knowledge to emulate it then it honestly makes more sense to just shoot film.


I have been doing this in Darktable for a while. It looks like Negadoctor is the best option, easy to use with good results, but in case anyone is interested this was my old workflow. This is probably not the most efficient way to do it but it works.

Shoot RAW with lowest ISO and exposure increased as much as possible without any clipping within the negative.

Before going into Darktable, convert all of the files to inverted 16 bit linear tiffs. (Replace ORF with the extension of your camera’s raw files)

for i in *.ORF; do dcraw -4 -T $i ; done
gm mogrify -negate -type Grayscale *.tiff

In Darktable:
Rotate if necessary and crop. When cropping, don’t leave anything other than the image itself (crop off clear borders, sprocket holes, etc).

Enable Tone Curve. Set it up like this so there’s one point at the bottom at the left side of the histogram and one point at the top at the right side. Since sprocket holes etc were cropped off this histogram represents only the image content.

At this point I either use the gray point adjustment in Levels, or create another instance of the Tone Curve and play with the curve until it looks good.

1 Like

Well, it doesn’t have to. For now at least, it’s just for fun. And the scanning is really more of a necessity than a choice, for I do not have another method of viewing my images otherwise.

Why do you call the channel mixer a “real” B&W? Is the invert module “less real”?

Anyway, I like your rendering. Thank you!

I think I scanned the film backwards, on accident. But it doesn’t make a difference in this shot.
Thank you for your link and rendering. It has a bit of an oversharpened look to me, but not in a bad way.

I like the natural progression of tones in your Gimp version. Maybe Darktable isn’t the best match for this kind of task.

Wow, there is a lot to unpack in that post.

On the next roll, I’ll make sure to include a shot of a color target with a black-to-white ramp, to get a feel for how the film renders tones in comparison to the digital sensors I am used to.

Anyway, thank you for your comment. Maybe a more technical approach is a good baseline to try next!

Why do you convert the files to TIFFs?

No problem. If you check the xmp you will see I used an inferior inversion method (rgb curves instead of invert module) which makes it a bit too bright compared to nicer tonal rendering such as the version by @Thomas_Do . Oddly enough, I am usually guilty of undersharpening, at least compared to others who post on PlayRaw. Oversharpening is prevalent, but no one ever seems to comment on it haha. I was trying to mask it out of highlights and shadows, but it makes darktable impossibly slow on this machine, so didn’t bother.

Thanks for providing the image. I’ve been wanting to hone my negative skills more.

I only converted to tiff so that I could invert the images before they were loaded into Darktable. I was having some trouble doing the inversion within Darktable a while ago, although I don’t remember now what the exact issue was.

1 Like

Because the invert module just inverts the negative. I did this with the tone curve. However, even after inversion you image is a color image (from a black and white negative). So to completely transform it to a monochrome grayscale image, I used the channel mixer.

1 Like

There’s no difference between the two, isn’t it? As others said, treating scanned negatives or positives digitally brings some advantages that are hard to realize in the darkroom. And film has a certain ‘look’ that can’t be emulated via software on a digital photo imo.

Yes and no. If I would have “old” negatives and would like to develop them, I would scan them and develop with darktable. On the other hand, should I feel the urge to reactivate my old Minolta, I would develop the negatives chemically (as before). But this is just my personal opinion. I just wanted to put the point up for discussion and not dictate to anyone.

My personal 2 cents are… I enjoy a lot using analog cameras.
Then I have the films developed by a lab… but I have a huge fun with the developed negatives once I scan them and play with them.

(when I want to have some cool prints, e.g. because I like one of the shots a lot, I go then again to the lab and have them do their magic with darkroom analog printing; I’m a romantic, I guess… and never been any particular good in analog processing myself, so I do analog shooting and digital processing; I guess I’m an hybrid :grimacing:)

1 Like