Hi Michael (& Klaus),
Summarizing (from 2 messages):
- Streaming image data to the frontend is not possible, since we want the
backend to be able to do dust/scratch removal. Of course there must be an
option to retrieve raw RGBI data. So: no streaming. Sane_start() will read all
the image data from the scanner into a buffer and do the post-processing to
arrive at a complete image. Sane_read() will just return requested parts of the
data.
- A separate reader process is not necessary, since the whole image is
available as soon as sane_start() finishes .
- We'll stick to the indexed format when reading data from the scanner. No
problem, since we already have to buffer internally.
- Memory usage is an issue. Our backend should be able to handle an image of
about 0.5 GB (7200 dpi, 16 bit depth, 4 colors), with perhaps the same amount
of data for processing. Some resource checks before starting the scan might be
welcome, but I don't know how to do that yet.
I'm curious about the dust/scratch-removal. I understand the idea of finding
appropriate thresholds to distinguish between image and artifacts, but I get
lost in the image correction process ('dilating'). Do you have any literature
on this process?
I'm also curious if you have contacted Emre Celebri already about using his
algorithms.
Finally: if you are willing to go through my code to find out where your
scanner should be treated differently, I shall implement the above, and also
try to add the post-processing functions. I was a little too enthusiastic in
sending working code (September 6th), because it is not obvious how to get it
to compile (sorry, Klaus). I'll be clearer next time, which I hope is before
you return from your upcoming internetless time.
Yours,
Jan