[sane-devel] continuous capture from scanner

Kyle McDonald mcdonk at rpi.edu
Wed Apr 1 22:35:13 UTC 2009

Hey Allan + everyone,

I had a scanner, but I took it apart to understand it at a hardware 
level... I took it too far (to the point of needing to generate clock 
signals for the scan head, etc.) I'd much rather work at a software 
level than reverse engineering the scan head.

I would remove the read head in a way that the servos could still move, 
but the read head wouldn't. Later I would probably short the feedback 
mechanism so I could minimize the amount of external hardware necessary.

There are two ideas I have in mind. If anyone gets the chance to 
implement them first, let me know :)

1 Scanner spectroscopy: prism separates light onto a scan head for 
cheap/DIY real-time spectroscopy of various substances/materials.

2 Linear multitouch: using the scan head to sense dark/light areas 
(fingers, whatever).

Size isn't essential -- any regular 8-inch-ish head would be great. 
Color is also nonessential, but helpful. Bit depth... the regular 8-bits 
per color is fine. Depth of field: shallow is better in both these 
cases. I would experiment with the light source in case 2, I'd have to 
empirically determine the best placement.

The biggest requirement, really, is an unusual one: "framerate". If the 
"scan a 1 pixel high region over and over" technique is used, the stall 
time between captures determines the maximum framerate. If the "scan a 
whole page without moving the scan head" technique is used, we're 
talking hundreds/thousands of fps (minus the glitch at the page/capture 


m. allan noah wrote:
> sane is not the problem, but rather, which scanner? many of them
> produce ugly scans if they are not calibrated, and many of them have
> the red/green/blue read-heads offset from one another so that they
> cannot produce a scan of a single line. many of them will choke if
> they cannot move the read head.
> Perhaps if you could be more specific as to your needs, we could help
> you better. things like: width, color/gray, bit depth, depth of field,
> will you keep the light source, etc.
> allan
> On Wed, Apr 1, 2009 at 5:32 PM, Kyle McDonald <mcdonk at rpi.edu> wrote:
>> I'd like to use a flatbed scanner for continuous capture. By this I mean:
>> the scan head does not move, and I regularly (quickly) get updates from
>> the scan head.
>> If I understand SANE, there are at least two ways I might do this:
>> 1 Physically modify the scanner to not move the head, and capture images
>> that are the maximum dimension of the scan area. Use sane_read to
>> continually update the scan head state, which is accessed by another thread.
>> 2 Capture images that are one pixel tall.
>> Both of these require using sane_start to get a new frame every so often
>> (much more often, in the case of 2), and I'm worried about the "glitch"
>> that will occur at that point. Does anybody have an idea about how long
>> the scanner will stall while getting ready to start a new frame? It's
>> probably very scanner-dependent, I'm guessing... but on order of
>> magnitude guess would be great. Or: is there a way to continue using
>> sane_read without worrying about approaching an EOF...?
>> Thanks!
>> Kyle
>> --
>> sane-devel mailing list: sane-devel at lists.alioth.debian.org
>> http://lists.alioth.debian.org/mailman/listinfo/sane-devel
>> Unsubscribe: Send mail with subject "unsubscribe your_password"
>>             to sane-devel-request at lists.alioth.debian.org

More information about the sane-devel mailing list