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

Ralph Little skelband at gmail.com
Tue Jan 4 18:47:50 GMT 2022


On 2022-01-04 9:05 a.m., 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.
> Any ideas would be appreciated, thanks!
> Joel

This *might* be possible if the usual movements that the scan head would 
make are sufficient for your need.

What you can definitely do is to arrange for the scan head to move from 
home quickly to a start position and have the head move more slowly to 
an end position (speed depending on the requested resolution) after 
which the head would usually return to the home position. By controlling 
the rate at which the scan data is received from the machine, you might 
also be able to get the scan head to pause when the scan data buffer is 
full. Within the SANE API, those are really your options.

Some scanners have a more high-level control, such is the case with the 
protocols that are handled by the pixma backend. I see that Povilas has 
answered regarding the genesys backend and the scanners that are 
supported there. The genesys controllers provide much more control over 
the hardware. Even then, using the SANE API is going to be quite 
limiting, but you could use the genesys code to directly control a 
genesys scanner.

Honestly, you might be better off harvesting the components from the 
scanner and using an arduino or something. ;D


More information about the sane-devel mailing list