Hi,
this is my first time posting but I have been reading this forum from time to time lately and seeing as this is a topic that I have spent quite a bit of thought on over the past year, I thought I may as well sign up and comment. I would like to add that while I am doing a master’s in Computer Science and focussing on vision, I am no expert and my thoughts expressed here stem from my experiments and experience building a film scanner DIY and are not corroborated by scientific sources:
I built a custom scanner (for photographic purposes) over the past year. It uses a monochrome industrial GigE camera and while it has 9MP over it’s CCD’s 14mmx12mm area, it’s dynamic range of ~60dB wasn’t quite satisfactory(especially for color reversal film/slides) for what I was trying to do.
“As film doesn’t change over time, it’s convenient to do do HDR” I thought.
So I started looking into how this can be achieved, thinking that I wanted to do some sort of HDR without a specific idea what this actually means. I soon realized that HDR is actually composed of two steps, exposure fusion(1) and tone mapping(2). Expecting this to be a complex problem and expecting it to require a lot of calibration i started looking for information on how to calibrate this for film, and came out with nothing useful. Eventually, after pondering on this problem for a long time and going back to first principles, I realized the following things:
-
Exposure fusion is incredibly straightforward, because my sensor is putting out linear data. Under the assumption of good/perfect linearity, this linear nature of the data means that changing the exposure by a know factor F
, implies you can multiply the seconds exposure by value 1/F
and sum the results. This results in a raw image with values recorded over a wider range. Obviously there will be a little more noise as well. If you’re storing your raw data in a 16-bit container and your sensor doesn’t output 16 bit data, you can do this quite a few times until your raw-container overflows.
My sensor had a 14-bit output, with the maximum ADU value of ~12000(2**14=16384
being the theoretical limit). For photographic slides, I chose to integrate 4 images, bracketed like so:
[-2EV, -1 EV, +/-0EV, +1EV]
-
Tone mapping is not required! The scene in the image you are capturing is already photochemically compressed by the film. There is no need to map the gathered values, because you won’t store a range of tones which is “unnatural” to the human observer. The limits of the brighest and darkest values recorded can now be determined by the media you are digitzing(and losses in the optical system such as glare and non-image forming light) and your sensor’s noise floor, but not a lack of dynamic range. All I did was apply gamma in the end and the images look great to my eyes.
Here is where I was gonna post example images, but being a new user I am not allowed to :-/
I actually did 2 test scans of IT8 calibration slide that demonstrates the range of tonality I was able to achieve, capturing highlights that would otherwise have been lost with my sensor. Again, I can’t post this.
I went on to scan approx 4K slides with this machine and none of them had coulour that didn’t correspond to their appearance on a light table
I would like to add that this worked incredibly well for me, because my data is very “clean” to begin with. The narrow band LEDs, selected for optimal colour separation, result in little cross-talk between the channels and allow me to fuse every channel individually. I am not sure how this would behave with the wide, overlapping filters used on a convential Bayer-filter’s CFA for colour cameras.
For positive scans with a digital camera of dynamic range inferior to 70dB this is 100% worth it IMO, though it will bring down the frame rate.