[sane-devel] Controlling scanner imaging head movement manually as mount for camera-based focus stacking?
skelband at gmail.com
Tue Jan 4 18:47:50 GMT 2022
On 2022-01-04 9:05 a.m., Joel Penner wrote:
> 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:
> 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!
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
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