[sane-devel] SANE2 and filmscanners

Henning Meier-Geinitz henning@meier-geinitz.de
Sat, 21 Dec 2002 20:35:08 +0100


On Sat, Dec 21, 2002 at 02:53:55PM +0000, Jonathan Buzzard wrote:
> I have just taken a look at the SANE2 documentation,

I have some local changes that aren't in the CVS yet but will go in
immediately when the CVS server is up again.

> and a couple of things have struck me about lack of support for some
> features in filmscanners.

Proposals are welcome, especially because most of us don't have much
expereience with film scanners.

> The first is multipass scanning. Basically what happens here is that
> the scanner can read the values several times and returns the averaged
> result. This is useful for reducing noise from the A/D in the image
> data.

But if the scanner does this internally, is there any need for the
SANE API to know about that? Ok, a well known option may make sense.

> Sometimes you can simulate this by making multiple passes and
> averaging the images, though it is not as good as it leads to a slight
> loss in resolution.

Ok. Should the averaging be done by the frontend or by the backend? If
it should be done by the frontend, there is no need for a well know
option. Otherwise, the backend might consume a lot of memory for the
multiple passes.

What kind of option do you want to have? Bool (multipass on or off) or
int number-of-passes (default = 1)? If the backend does it in
dsoftware, it can set SANE_CAP_EMULATED.

> Batch scanning is the other. Here you might have a film or slide holder
> that has several separate images (or even an APS adaptor) and you
> just want to click a button to scan the lot. You need some way to
> communicate to the front end just how many images there are to scan
> etc.

Why? Just return SANE_STATUS_NO_DOCS when finished.

Current proposal for batch scan options:

--- snip ---
\subsection{Batch Scan Options}\index{Batch Scan Options}

The batch scan options can be used by a frontend to indicate that more
than one image will be scanned in a batch. The backend can optimize
for such scans by e.g. avoiding calibration and not moving home the
sensor array in this case. The backend provides the options
\code{batch-scan}, \code{batch-scan-next-tl-x},
\code{batch-scan-next-tl-y}, \code{batch-scan-next-br-x}, and
\code{batch-scan-next-br-y}. The option \code{batch-scan} provides a
string list with the values of \code{No} if batch scanning isn't used,
\code{Start} for the first, \code{End} for the last and \code{Loop}
for any other (intermediate) image.  The batch-scan-next options
specify the coordinates of the next scan and follow the same rules as
the scan area options (see section \ref{subsec:scanarea}).

These options are not mandatory, but if a backend does support them,
it must implement them in a manner consistent with the above
definition.  In this case, all options must be implemented.
--- snip ---

> You also possibly need some way to allow the front end to pick an
> individual image to scan.

Ok. How do you think this should be done? An image number?

> Focusing, although most units are now autofocus, you can often override
> this for manual focusing if you want. I see no support of this in the
> proposed standard.

See todo list: "   - set focus position FOCUS_POS_X, FOCUS_POS_Y"

Please define how the options should look like.

> I presume that a fourth infra-red channel would also be supported but can
> not see anything about it in the documentation.

See http://www.meier-geinitz.de/sane/sane2/0.07/doc012.html#s4.3.8
(format_desc for SANE_FRAME_RAW).