[sane-devel] meaning of 1200x2400 etc. explained

Gernot Hassenpflug aikishugyo at gmail.com
Fri Feb 15 02:04:04 UTC 2008


On Fri, Feb 15, 2008 at 9:57 AM, m. allan noah <kitno455 at gmail.com> wrote:
> so you want the backend to scan at 1200x2400 but return 2400x2400
>  data?

No. I guess my english is not very clear :-(

> it would have to interpolate 50% of the data in the scan with
>  'made up' data. or do you want to scan at 1200x2400 and return
>  1200x1200, in which case you have scanned twice as much data as you
>  need.

No... please don't be insulted if I am a) wrong below, and b) describe
things you already understand much better than I.

What I am saying is that there are two specs, maybe only one of which
you have control over:

- the horizontal scanning resolution which is given by the spacing or
interpolated processing or whatever of the CCDs. Let's assume it is
spacing, so this is the optical resolution. This is the first number,
1200. This is what the scanner can optically do.

- vertical movement increment, also specified in dpi, and controlled
by the linear motor of the scanner. This is entirely independent from
the horizontal resolution, but for various reasons you might want it
to be a factor several times the horizontal resolution. This is done a
lot in signal processing (radar, for example) and is called
over-sampling, done to improve the smoothness of images even though no
more resolution is possible over that of the optical resolution.
Basically, it decreases the jaggedness of diagonal lines, and lessens
the effects of any statistical noise in the image. The scanner should
have the intelligence to make the output pixels square---I can imagine
that the CCDs might not be square either but optimized for the
horizontal direction.

- the user only knows about the horizontal (optical) scanning
resolution, and specifies it: 1200. He cannot specify a higher number
because unless the scanner has some horizontal movement capability, it
cannot do higher even by interpolation. If the scanner had two offset
rows of CCDs then double the resolution would be possible, but again,
the user would simply be told that the scanner has 2400dpi scanning
capability (like how printer heads are nowadays, as I understand it).

Anyway, when the scanner now does its thing at 1200dpi, the linear
motion happens at 2400dpi (or for some scanners maybe even at higher
factors), oversampling. The whole idea of "more than you need" is
completely flawed, because the quality of an image for the human eye
is a lot different to that required by sampling theory for example.
Oversampling is very necessary in practice to allow humans to
interpret the image and see structure at a higher level than that laid
down by simple theory. So the scanner takes the oversampled
information, and then does some processing to filter out noise,
finally giving you back a 1200dpi by 1200dpi image. The user never
gets the 2400dpi data.

Am I still wrong here?

Regards, Gernot



More information about the sane-devel mailing list