[sane-devel] Controlling scanner imaging head movement manually as mount for camera-based focus stacking?

Povilas Kanapickas povilas at radix.lt
Tue Jan 4 18:37:42 GMT 2022

Hi Joel,

On 1/4/22 7:05 PM, Joel Penner wrote:
> Hello,
> I am doing microscopic focus stacking with mirrorless cameras. I have a
> Cognisys Stackshot rail that I am doing this with, but I also have a
> bunch of Canon 9000F & 8800F scanners, so I am wondering whether I could
> use the precision these devices have to move a camera forward by small
> increments.
> I have already been experimenting with attaching a stepper motor to a
> microscope, controlled by a Big Easy Driver and a Raspberry Pi. This
> person used a scanner for focus stacking by connecting a scanner motor
> to an external driver:
> https://petapixel.com/2013/01/24/focus-stacking-macro-photographs-with-a-hacked-flatbed-scanner/
> <https://petapixel.com/2013/01/24/focus-stacking-macro-photographs-with-a-hacked-flatbed-scanner/>
> This would work for me, but would it be possible to manually move the
> scanner imaging head with SANE and the scanner's firmware and circuitry?
> Basically, I would need SANE to move the scanner imaging head forward by
> a tiny increment, pause for a few seconds for the camera to take a
> photo, move forward again and so on. I just need total control of where
> the scanner imaging head is moved to and how small the increments are.
> My goal is to use this rig to do timelapse microscopic focus stacked
> images of plant growth.
> Ideally, the scanner imaging head light would be turned off too but I
> could also use tape or disconnect the LED array. I have other scanner
> models as well if the firmware or drivers of these Canon scanners isn't
> suitable.

I can only answer for scanners supported by the genesys backend, e.g.
Canon 8600F and 8400F.

On these scanners one can move scanner head by one motor step (at least
1200 dpi => 0.02mm per step precision). One can also turn lamps on and
off at will.

In both of these cases one would need to adapt the software because the
current code base is geared towards regular scanning use case. The
low-level building blocks are there though and should be relatively easy
to use.

I don't know the situation for 8800F and 9000F scanners which use
different pixma backend. Possibly the situation is the same as for
genesys. Even though I'm maintainer for that backend I haven't got to
know the codebase well and thus this would need further research.


More information about the sane-devel mailing list