Apologies for the long post, but even though Negative Lab Pro doesn’t yet support this workflow, I would like to figure out some way of doing it on my own for now, so that I can do three things:
- Scan photos in the highest “archival” quality possible so they can be used with Negative Lab Pro.
- Capture the IR data using my scanner while doing my scans so I can process them to remove dust.
- Figure out a way to apply iSRD using Photoshop later on using the IR data.
So I did some testing on how I could scan images as 64 bit HDRi in Silverfast or Vuescan or any other software and then later on somehow batch process them with some sort of Photoshop macro to use content-aware fill to remove the dust and scratches using an extracted 16 bit IR channel.
I am not an expert on this but I figured I would do some research and take a stab at it!
I saw online that you can use imagemagick for this sort of task, so I gave it a shot and installed it:
connor@Connors-MacBook-Air magick % brew install imagemagick
connor@Connors-MacBook-Air magick % brew install ufraw
I did two 64 bit scans, in DNG and TIFF formats, and then used the Imagemagick identify command to list out what the files contain. I was hoping Imagemagick would see the IR channel in the DNG file so I could extract the IR channel to a separate file and use it later. I want to use DNG rather than TIFF as Negative Lab Pro seems to like these files better.
Let’s find out what identify sees on the files:
connor@Connors-MacBook-Air magick % identify -verbose 35mm05-07.dng
Image:
Filename: /var/folders/dx/6dr1gbhx6mv4zk9tp5lyqf4h0000gn/T/magick-ckn3tksKCx_0lgYQ5s_uRI8SknjGdVdv.png
Base filename: 35mm05-07.dng
Format: DNG (Digital Negative)
Class: DirectClass
Geometry: 3528x5184+0+0
Units: Undefined
Colorspace: sRGB
Type: TrueColor
Base type: Undefined
Endianness: Undefined
Depth: 16-bit
Channel depth:
Red: 16-bit
Green: 16-bit
Blue: 16-bit
Channel statistics:
Pixels: 18289152
Red:
min: 0 (0)
max: 55009 (0.839384)
mean: 37990.6 (0.5797)
median: 292 (0.00445563)
standard deviation: 11179.4 (0.170587)
kurtosis: 3.10183
skewness: -1.39089
entropy: 0.922597
Green:
min: 0 (0)
max: 61444 (0.937575)
mean: 36145.6 (0.551547)
median: 287 (0.00437934)
standard deviation: 15241.9 (0.232577)
kurtosis: -0.418933
skewness: -0.550743
entropy: 0.965406
Blue:
min: 0 (0)
max: 56295 (0.859007)
mean: 37118.8 (0.566396)
median: 421 (0.00642405)
standard deviation: 13243.1 (0.202077)
kurtosis: 0.425158
skewness: -0.90535
entropy: 0.952938
Image statistics:
Overall:
min: 0 (0)
max: 61444 (0.937575)
mean: 37085 (0.565881)
median: 333.333 (0.00508634)
standard deviation: 13221.5 (0.201747)
kurtosis: 0.590982
skewness: -0.882456
entropy: 0.94698
Rendering intent: Perceptual
Gamma: 0.454545
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Matte color: grey74
Background color: white
Border color: srgb(223,223,223)
Transparent color: none
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 3528x5184+0+0
Dispose: Undefined
Iterations: 0
Compression: Zip
Orientation: Undefined
Properties:
date:create: 2021-05-17T18:53:56+00:00
date:modify: 2021-05-17T18:53:56+00:00
dng:Aperture: F/0.0
dng:AspectRatio: 0.680556
dng:ChannelMultipliers: 1.000000 2.269203 2.972209 1.000000
dng:CreateID: 1
dng:Crop: 0 0 3528 5184
dng:EXIFSource: DCRaw
dng:FocalLength: 0.0 mm
dng:Green: 1.495
dng:ISOSpeed: 0
dng:Make: Plustek
dng:MatrixInputProfile: Color matrix
dng:Model: OpticFilm 8200i
dng:Orientation: 0
dng:Rotation: 0.000000
dng:Shutter: 0.0 s
dng:sRGBOutputProfile: sRGB
dng:Temperature: 3912
dng:Timestamp: Thu Jan 1 00:00:00 1970
dng:WB: Auto WB
dng:WBFineTuning: 0
png:IHDR.bit-depth-orig: 16
png:IHDR.bit_depth: 16
png:IHDR.color-type-orig: 2
png:IHDR.color_type: 2 (Truecolor)
png:IHDR.interlace_method: 0 (Not interlaced)
png:IHDR.width,height: 3528, 5184
png:sRGB: intent=0 (Perceptual Intent)
png:text: 2 tEXt/zTXt/iTXt chunks were found
signature: 03d4c4d5a6b34fa9af6f65a8ddb068ff2c448c660bb1ebb91cfce77c1bd22c33
Software: UFRaw
Source: PlustekOpticFilm 8200i
Artifacts:
verbose: true
Tainted: False
Filesize: 85.7493MiB
Number pixels: 18.2892M
Pixels per second: 26.5656MP
User time: 0.690u
Elapsed time: 0:01.688
Version: ImageMagick 7.0.11-12 Q16 arm 2021-05-09 https://imagemagick.org
We can see here that there are 3 channels on the DNG - but I want to find the IR (alpha?) channel and it doesn’t appear to be visible to Imagemagick from the DNG, unless I’m missing something.
connor@Connors-MacBook-Air magick % identify -verbose 35mm05-07.tif
Image:
Filename: 35mm05-07.tif
Format: TIFF (Tagged Image File Format)
Mime type: image/tiff
Class: DirectClass
Geometry: 3528x5184+0+0
Resolution: 300x300
Print size: 11.76x17.28
Units: PixelsPerInch
Colorspace: sRGB
Type: TrueColor
Endianness: MSB
Depth: 16-bit
Channel depth:
Red: 16-bit
Green: 16-bit
Blue: 16-bit
Channel statistics:
Pixels: 18289152
Red:
min: 0 (0)
max: 44011 (0.671565)
mean: 22855.3 (0.34875)
median: 114 (0.00173953)
standard deviation: 10208.5 (0.155772)
kurtosis: -0.452543
skewness: 0.116265
entropy: 0.958449
Green:
min: 0 (0)
max: 25110 (0.383154)
mean: 10091 (0.153979)
median: 48 (0.000732433)
standard deviation: 6335.23 (0.0966695)
kurtosis: -1.07491
skewness: 0.329503
entropy: 0.972197
Blue:
min: 0 (0)
max: 15851 (0.241871)
mean: 7690.9 (0.117356)
median: 50 (0.000762951)
standard deviation: 4050.22 (0.0618025)
kurtosis: -1.10885
skewness: -0.00485492
entropy: 0.978211
Image statistics:
Overall:
min: 0 (0)
max: 44011 (0.671565)
mean: 13545.7 (0.206695)
median: 70.6667 (0.0010783)
standard deviation: 6864.66 (0.104748)
kurtosis: 0.618621
skewness: 1.02529
entropy: 0.969619
Rendering intent: Perceptual
Gamma: 0.454545
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Matte color: grey74
Background color: white
Border color: srgb(223,223,223)
Transparent color: none
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 3528x5184+0+0
Dispose: Undefined
Iterations: 0
Scene: 0 of 3
Compression: None
Orientation: TopLeft
Profiles:
Profile-xmp: 145316 bytes
Properties:
date:create: 2021-05-17T18:52:19+00:00
date:modify: 2021-05-17T18:52:07+00:00
exif:MakerNote: 0x4c,0x53,0x49,0x31,0x0,0xf,0xc0,0x2,0x0,0x1,0x0,0x0,0x0,0x3d,0xc0,0x9,0x0,0x1,0x0,0x0,0x20,0x8,0xc0,0x5,0x0,0x1,0x0,0x0,0x0,0x1,0xc0,0x7,0x0,0x1,0x0,0x0,0x0,0x1,0xc0,0x8,0x1,0x1,0x2,0x25,0x51,0x0,0xc0,0xf,0x0,0x1,0x0,0x0,0x0,0x1,0xc0,0x10,0x0,0x1,0x0,0x0,0x0,0x0,0xc0,0xa,0x0,0x1,0x0,0x0,0x0,0x5,0xc0,0x4,0x1,0x1,0x0,0x0,0x38,0x40,0xc0,0x3,0x1,0x1,0x0,0x0,0x26,0x44,0xc0,0xb,0x1,0x1,0x0,0x0,0x0,0x0,0xc0,0xc,0x1,0x1,0x0,0x0,0x0,0x30,0xc0,0xd,0x1,0x1,0x0,0x0,0x38,0x40,0xc0,0xe,0x1,0x1,0x0,0x0,0x27,0x10,0xc0,0x1,0x1,0x1,0x0,0x0,0x27,0x10,0x4b,0x49,0x45,0x4c
exif:PixelXDimension: 3528
exif:PixelYDimension: 5184
signature: 708840bcf013fafbf7fc0239d01bda6163b92bb6ae49348170101aa8b3a21837
tiff:alpha: unspecified
tiff:endian: msb
tiff:make: Plustek
tiff:model: OpticFilm 8200i
tiff:photometric: RGB
tiff:rows-per-strip: 1
tiff:software: SilverFast 8.8.0 r24 (Oct 29 2020) 30c8121 29.10.
Artifacts:
verbose: true
Tainted: False
Filesize: 148.342MiB
Number pixels: 18.2892M
Pixels per second: 118.836MP
User time: 0.150u
Elapsed time: 0:01.153
Version: ImageMagick 7.0.11-12 Q16 arm 2021-05-09 https://imagemagick.org
Image:
Filename: 35mm05-07.tif
Format: TIFF (Tagged Image File Format)
Mime type: image/tiff
Class: DirectClass
Geometry: 1010x1484+0+0
Resolution: 85.8844x85.8844
Print size: 11.76x17.279
Units: PixelsPerInch
Colorspace: sRGB
Type: TrueColor
Endianness: MSB
Depth: 16-bit
Channel depth:
Red: 16-bit
Green: 16-bit
Blue: 16-bit
Channel statistics:
Pixels: 1498840
Red:
min: 0 (0)
max: 43472 (0.66334)
mean: 22828.7 (0.348344)
median: 114 (0.00173953)
standard deviation: 10209.9 (0.155793)
kurtosis: -0.455103
skewness: 0.104322
entropy: 0.959115
Green:
min: 0 (0)
max: 23557 (0.359457)
mean: 10079.3 (0.1538)
median: 46 (0.000701915)
standard deviation: 6319.33 (0.0964268)
kurtosis: -1.10361
skewness: 0.313815
entropy: 0.971978
Blue:
min: 0 (0)
max: 15172 (0.23151)
mean: 7681.95 (0.117219)
median: 52 (0.000793469)
standard deviation: 4045.27 (0.0617268)
kurtosis: -1.11303
skewness: -0.014116
entropy: 0.97654
Image statistics:
Overall:
min: 0 (0)
max: 43472 (0.66334)
mean: 13530 (0.206454)
median: 70.6667 (0.0010783)
standard deviation: 6858.16 (0.104649)
kurtosis: 0.607765
skewness: 1.02153
entropy: 0.969211
Rendering intent: Perceptual
Gamma: 0.454545
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Matte color: grey74
Background color: white
Border color: srgb(223,223,223)
Transparent color: none
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 1010x1484+0+0
Dispose: Undefined
Iterations: 0
Scene: 1 of 3
Compression: None
Orientation: TopLeft
Properties:
date:create: 2021-05-17T18:52:19+00:00
date:modify: 2021-05-17T18:52:07+00:00
signature: 57273bbb1aca54c0bfe189a4535112a1583f96ee5bb0fae6e0d547b4bdfffacf
tiff:alpha: unspecified
tiff:endian: msb
tiff:photometric: RGB
tiff:rows-per-strip: 1
tiff:subfiletype: REDUCEDIMAGE
Artifacts:
verbose: true
Tainted: False
Filesize: 0B
Number pixels: 1498840
Pixels per second: 699357P
User time: 3.190u
Elapsed time: 0:03.143
Version: ImageMagick 7.0.11-12 Q16 arm 2021-05-09 https://imagemagick.org
Image:
Filename: 35mm05-07.tif
Format: TIFF (Tagged Image File Format)
Mime type: image/tiff
Class: DirectClass
Geometry: 3528x5184+0+0
Resolution: 300x300
Print size: 11.76x17.28
Units: PixelsPerInch
Colorspace: Gray
Type: Grayscale
Endianness: MSB
Depth: 16-bit
Channel depth:
Gray: 16-bit
Channel statistics:
Pixels: 18289152
Gray:
min: 0 (0)
max: 57673 (0.880034)
mean: 49963.3 (0.76239)
median: 0 (0)
standard deviation: 11339.1 (0.173024)
kurtosis: 13.5697
skewness: -3.85923
entropy: 0.81399
Rendering intent: Perceptual
Gamma: 0.454545
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Matte color: grey74
Background color: white
Border color: srgb(223,223,223)
Transparent color: none
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 3528x5184+0+0
Dispose: Undefined
Iterations: 0
Scene: 2 of 3
Compression: None
Orientation: TopLeft
Properties:
date:create: 2021-05-17T18:52:19+00:00
date:modify: 2021-05-17T18:52:07+00:00
signature: 7d2b606194fe833c9efa07212de8f84172e18a0650cf7905f34df6ac916d3d41
tiff:alpha: unspecified
tiff:endian: msb
tiff:photometric: min-is-black
tiff:rows-per-strip: 1
tiff:subfiletype: MASK
Artifacts:
verbose: true
Tainted: False
Filesize: 0B
Number pixels: 18.2892M
Pixels per second: 7.91901MP
User time: 3.540u
Elapsed time: 0:03.309
Version: ImageMagick 7.0.11-12 Q16 arm 2021-05-09 https://imagemagick.org
identify: Unknown field with tag 35243 (0x89ab) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/960.
identify: Unknown field with tag 35244 (0x89ac) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/960.
identify: Unknown field with tag 35244 (0x89ac) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/960.
Aha – so, it seems that with the TIFF, Imagemagick IS able to see what I believe is the second TIFF “page” that contains the IR channel (16-bit greyscale), but it can’t see it when the photo is in DNG format.
However, I was hoping that I could scan with DNG so that things would work best with NLP/LR, so this isn’t very encouraging. I’m not sure why it’s not visible when it’s a DNG, but to test my theory, I used Imagemagick to convert from DNG to TIFF, and sure enough the file size went down, so the photo seems to have lost data, which I assume is because Imagemagick isn’t doing anything with the Silverfast IR data that it isn’t seeing properly, and doesn’t know how to handle when processing a DNG (I guess DNG files don’t usually have an IR channel!).
-rw-r–r-- 1 connor staff 105M 17 May 14:58 35mm05-07-converted.tif
-rw-r–r-- 1 connor staff 149M 17 May 13:52 35mm05-07.dng
-rw-r–r-- 1 connor staff 148M 17 May 14:52 35mm05-07.tif
As you can see, the file is almost 43MB smaller than the Silverfast TIF after conversion from the Silverfast DNG. Let’s see what identify says about this new TIFF.
connor@Connors-MacBook-Air magick % identify -verbose 35mm05-07-converted.tif
Image:
Filename: 35mm05-07-converted.tif
Format: TIFF (Tagged Image File Format)
Mime type: image/tiff
Class: DirectClass
Geometry: 3528x5184+0+0
Units: PixelsPerInch
Colorspace: sRGB
Type: TrueColor
Endianness: MSB
Depth: 16-bit
Channel depth:
Red: 16-bit
Green: 16-bit
Blue: 16-bit
Channel statistics:
Pixels: 18289152
Red:
min: 0 (0)
max: 55009 (0.839384)
mean: 37990.6 (0.5797)
median: 292 (0.00445563)
standard deviation: 11179.4 (0.170587)
kurtosis: 3.10183
skewness: -1.39089
entropy: 0.922597
Green:
min: 0 (0)
max: 61444 (0.937575)
mean: 36145.6 (0.551547)
median: 287 (0.00437934)
standard deviation: 15241.9 (0.232577)
kurtosis: -0.418933
skewness: -0.550743
entropy: 0.965406
Blue:
min: 0 (0)
max: 56295 (0.859007)
mean: 37118.8 (0.566396)
median: 421 (0.00642405)
standard deviation: 13243.1 (0.202077)
kurtosis: 0.425158
skewness: -0.90535
entropy: 0.952938
Image statistics:
Overall:
min: 0 (0)
max: 61444 (0.937575)
mean: 37085 (0.565881)
median: 333.333 (0.00508634)
standard deviation: 13221.5 (0.201747)
kurtosis: 0.590982
skewness: -0.882456
entropy: 0.94698
Rendering intent: Perceptual
Gamma: 0.454545
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Matte color: grey74
Background color: white
Border color: srgb(223,223,223)
Transparent color: none
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 3528x5184+0+0
Dispose: Undefined
Iterations: 0
Compression: None
Orientation: TopLeft
Properties:
date:create: 2021-05-17T18:58:48+00:00
date:modify: 2021-05-17T18:58:48+00:00
signature: 03d4c4d5a6b34fa9af6f65a8ddb068ff2c448c660bb1ebb91cfce77c1bd22c33
tiff:alpha: unspecified
tiff:endian: msb
tiff:photometric: RGB
tiff:rows-per-strip: 48
Artifacts:
verbose: true
Tainted: False
Filesize: 104.652MiB
Number pixels: 18.2892M
Pixels per second: 55.5569MP
User time: 0.110u
Elapsed time: 0:01.329
Version: ImageMagick 7.0.11-12 Q16 arm 2021-05-09 https://imagemagick.org
Sure enough, the second page is not present, so no IR data after converting from DNG > TIFF. We only have the RGB channels.
I did some googling and found a forum post about Vuescan referencing ImageJ, so I figured I would give it a try to see what it saw on the DNG vs the TIFF. I downloaded it from: Download and chose the M1 version for my M1 Macbook Air.
I followed the instructions on the first reply in this post: Create TIF with 4 channels per pixel? - Usage & Issues - Image.sc Forum
Basically I went to Image > Stacks > Stack to Images. This split out the channels.

However, it seems that ImageJ, like Imagemagick also only sees the RGB channels on the DNG, and in fact when I tried it on the Silverfast TIFF it didn’t split out the IR to a stack either. So I guess that test wasn’t very useful. But I’m including it here so you guys can see what I tried.
So at this point I’m a bit stumped. What’s so special about this DNG file that Imagemagick can’t see the IR data? Also, am I losing any data / colour information by scanning as TIFF rather than DNG? Basically I want to scan in the format which will give me the most flexibility but without sacrificing any colour info. If I can get away with scanning to TIFF and being able to use my IR data, then that would probably be the best option I reckon.
I did some more googling to confirm if this is true (I’m sorry, this is all new to me so I am trying to do my homework but I’m sure you guys can correct me) and found a forum post which seemed to confirm that it’s just a container format (https://www.rangefinderforum.com/forums/showthread.php?t=117590):
To start with, the difference between a digital camera raw file and a Vuescan raw file is that scanner files are ‘linear raw files’ while camera files are mosaiced (Sigma cameras being the exception here). A scanner file is basically an RGB TIFF file (three color channels) while a camera file is a single monochrome channel with proprietary (or standard if it is a DNG) de-mosaicing information tagged onto it. Hence the difference in file size between one and three channels.
In all other respects they are very similar. A raw file is a TIFF file with no, or minimal adjustments applied to it. A raw file will have no color profile, and be gamma 1.0. This is why it is so dark. When you import a raw file into ACR or Lightroom, the first thing it does is apply a generic gamma base curve to it to lighten it up (making it 1.8 or 2.2 i believe). So when you open it up and set all the sliders to 0, it is not really 0, because it assumes that you want to increase the gamma. When you export a regular TIFF (non-raw) from Vuescan it will apply a gamma curve and a color profile. If you would import this file into Lightroom, it will appear very high contrast because it is getting a second base curve applied to it.
A linear DNG file is a TIFF file with other EXIF information tagged onto it. The raw files that Vuescan exports is identical regardless of whether the ending is DNG or TIFF. You can also reprocess them in in Vuescan without the format making any difference. I think it is important to note that raw does not necessarily mean that nor processing has been applied to a file. My workflow is that I typically scan and output a 64bit RGBI TIFF, which I reprocess in order to apply the dust filter, and then I output a 48 bit DNG file for Lightroom. I also let Vuescan invert negatives which I still export as raw. Hens the output from ‘Scan’ or ‘Save’, and the ‘Raw save film’ option (confusingly named unfortunately)
The logic to outputting a DNG as opposed to a TIFF for use in Lightroom is firstly just the convenience of not having the sidecar files in Lightroom (the DNG format embeds the settings in the file). The most important difference is in the Camera Calibration pane in Lightroom. When you import a camera raw file, Lightroom recognizes the camera and offers color profiles specific to your camera sensor. When you import a generic TIFF, it will apply default settings that you have no control over. With a DNG file from Lightroom it will recognize your scanner as a ‘camera’. Using the DNG Profile Editor (free from adobe) you will be able to make custom scan profiles for your scanner and apply them to different film types. For instance I have profiles that have a base curve that I use with negative scans, and ones without base curve for scanned slides because slides are ‘gamma correct’ already.
So if this guy is correct, and the DNG really doesn’t have any secret colour info stored in it (what does the extra EXIF metadata in a DNG contain then??), and the advantages of using DNG with Negative Lab Pro are only because of how Lightroom handles DNGs, then I think I should probably scan as 64 bit iSRD TIFF, process the files for IR by splitting our the alpha/IR channel and running it through photoshop somehow (not sure the logistics of this but I am sure it must be possible), and then prepare the processed TIFF for LR by converting it back to a DNG, so that it will work nicely with NLP and how Lightroom handles gamma?
Let me know your thoughts everyone!
Thanks,
Connor
EDIT, added on more to this post:
I hope my giant additions to this topic are alright as I realize this is a “feature request” forum and while I would love the feature, my current concern is more around figuring out a workflow in the meantime — please let me know if I’m breaking any rules - I can create a new thread instead, if preferred.
I found an interesting discussion thread on Flickr from 2011 which reveals that, apparently, Silverfast pre-V8 supported iSRD with Linear scans but that feature was removed:
As some of us have discovered, Lasersoft has updated their SilverFast software from v.6.6 to v.8.
Among the new features, the possibility to use dust and scratch removal (SRD and iSRD) while saving linear scans is now removed. According to LaserSoft’s support team: “In case you want to make any changes to your image (including iSRD) please use the normal 48bit mode”
The consequence of this is that if you want to use SilverFast scanning software and ColorPerfect, you’ll have to go back to the old days before infrared dust and scratch removal and use the clone tool in Photoshop instead.
Or you could switch to VueScan.
Why? I can only guess that LaserSoft wants to limit their customers’ choice of tools and force them to use LaseSoft’s “HDR suite” instead of their favorite software.
The OP’s conclusion:
You don’t lose anything by saving a DNG, in fact you gain some additional metadata that your raw developer uses as an input colour profile. If you later want to convert to a raw (or rendered) TIFF or any other format you can use VueScan to “scan” your DNG file into those, or you can use a tool like dcraw to do it.
At this point I think maybe I should try and experiment a bit with Vuescan to see if I can get acceptable results scanning to DNG with the infrared data included. Maybe it will be easier to work with than Silverfast, and I can try applying the iSRD there.
I found another thread on Flickr called “How to apply the infrared channel to the image in PhotoShop?” and he said “Vuescan’s RAW files are meant to be reprocessed in Vuescan itself, not Photoshop.”, so I guess I would be stuck using Vuescan.
Like @galxcom mentioned in his OP, I would really love to see if Photoshop’s algorithms (content aware fill?) do a nicer job of removing dust than Vuescan or Silverfast do. I know that Silverfast does a good job, but it’s not exactly “pretty” if you are pixel peeping. You can easily tell that an edit has been done, it looks kind of smudgey.