Don ha scritto:
As someone who runs Linux ocassionally, and just out of curiousity,
did you have to download this driver separately?
Yes. There is however an Epson driver in the standard SANE
distribution, and in theory it appears to support my RX500, but I
haven't made it to work.
The reason I ask is
because some distributions refuse to include packages which have a
component which is not GNU.
Namely, Debian. Which is what I'm using.
I actually like the concept of knowing that the software I get from
Debian repositories is 100% free; after all, I can still get the rest
from other sources.
That's very strange, indeed!
Note that I was talking about the Epson backend, not the whole of the
SANE sources. There is no mention of exposure *there*.
[snip exposure and gamma, see below]
"--film-type Negative" does just about what it's supposed to do: it
adjusts the exposure in order to remove the orange mask, and... well,
nothing else that I can see, since it doesn't even invert.
That, I don't understand. It appears to be something peculiar to SANE.
Negative mode usually means both, removing the orange mask and
inverting the image.
Actually, there is some code in the driver to invert the image (well,
it looks like that), but it's commented out.
God knows why, but who cares, it's easy enough to invert the image
(less easy is to do it *well*, but I guess the driver wouldn't really
help with that anyway).
[snip exposure and gamma again, still see below]
Why do you say it's impossible? I can set up that table to anything I
like, for example
Yes, but then it's not gamma anymore, but just a plain lookup table.
Sure. Sorry for being misleading by using the term "gamma", but I did
it simply because that's the word my driver uses.
But, for all intents and purposes, the "--something-gamma-table"
options allow me to set up any lookup table I like.
If you do that and set an arbitrary lookup table it's the same as
using Curves in Photoshop. Now, you can set gamma using Curves, but
you can also do much more. Gamma, however, is a very specific term.
Yes, sorry.
But, as an aside, not that it is *not* the same as using Curves in
Photoshop (at least when scanning at 8 bpc), since the scanner driver's
tables work at 16 bpc internally, while Photoshop's cannot.
But, see below as to why it is *really really not* the same as using
Curves in Photoshop, with my scanner.
scanimage [...] --red-gamma-table
0,32,64,96,128,160,192,224,255,255,[...],255
Sure, it still ends with 255, but I don't see any problem with that.
It's *not* a gamma table, it's a linear table. It's just like moving
the whitepoint, for all I can see.
It appears SANE uses the term gamma unconventionally. What SANE calls
"gamma table" is just a plain lookup table. It can be used for gamma,
of course, but it can also be used for anything else as well.
You got the point.
However, "gamma" has a very specific definition. It's not just *any*
lookup table. Gamma curves are created using a very specific formula:
output = input ^ gamma
Another important thing to understand is that using a lookup table is
*image editing". That's post-processing and has nothing to do with
exposure. Exposure is something which happes as the CCD array passes
accross the image. Anything one does to the image after that, is image
editing or post-processing.
But do note that the scanner driver *could* in theory (and on my
scanner, I think, does) use the lookup tables' contents - somehow - to
influence the actual scan -- at scantime, when the CCD array passes.
Although the time is one indicator it can also be very ambiguous.
There are many reasons why a scan may take longer.
For example, your bus throughput. If scans > 600 dpi take longer it's
an indicator that your bus is choked with data.
Uh, why? Scanning at 1200 dpi takes longer than scanning at 600 dpi,
but that's because the scanner's motor is moving at half the speed...
Does the scanner "stop-and-go" or is the scan performed in a single,
uninterrupted flow?
The short answer is "uninterrupted flow".
The long answer is that I do have bus problems (USB 1.1), and
stop-and-go's happen, but *only* if I scan at 16 bpc and/or if I scan
an area wider than a 35mm film.
I can assure you there are no stop-and-go's in the cases I am talking
about, as well as in those I'll present below.
That's very unlikely becuse it would cause banding. Stretching an
underexposed scan (which is what you describe) is very unlikely any
software would do because it would produce very poor results.
Sure... but I meant that I suspect that the Windows software just sets
tables with the appropriate whitepoint, and then the scanner
automagically does the exposure based on those tables.
Just like I suspect is happening with the Linux software.
But let's forget about the Windows software now, the open-source Linux
counterpart is already complicated enough.
Anyway, that can also be tested but you would have to use 16-bit depth
and some heavy math.
OK, that looks more and more to be a bus question (or some other
throughput problem) and not an exposure question. You're just simply
getting too much data and the resons it takes longer is because the
system has to catch up.
And why would that change depending on the specific lookup tables
provided, all the rest being equal?
Yes, so we have to "divide and conquer" which means back to basics and
not make any rash assumptions. Instead confirm each assertion before
going further. Otherwise we just compound the problem by basing
conclusions on incorrect data.
Ok. Let's start with the real thing
The first test I would do is the above "stop-and-go".
Well, I've answered this. Yes, but no -- in the sense that I'll take
care that this does not happen.
In the previous article that Google did not post, I did some
measurements with a stopwatch.
That had the advantage that I could measure the actual scan time,
ignoring the time needed for calibration and for moving the CCD to the
initial position.
This time I decided do let the computer do the measurements and write a
script -- but I can assure you that the current results are very
consistent with the ones taken manually with the stopwatch.
I took 33 scans of an unexposed area of developed negative Kodak film.
Each scan was made at 1200 dpi, with the "--film-type Positive" option
(not "--film-type Negative", below I'll explain why).
Each scan is of the same 5mm x 5mm area of the film.
Each scan was taken using a different lookup table (only one lookup
table for red, green and blue was used, even though the software
provides for three separate tables).
Let's call the "cutoff" the index of the last element of the lookup
table that is smaller than 255.
All elements before the cutoff are between 0 and 255, and all elements
after the cutoff are 255.
The elements before the cutoff are linear, so that, for example, a
table with cutoff=8 would look like
0,32,64,96,128,160,192,224,255,255,255,...,255
The tables I really used, however, do not follow exactly this pattern,
because of... well, errors in the program I wrote to generate them
But anyway.
In the following table, "cutoff" refers to the cutoff used for each
scan's lookup table.
"Red", "Green" and "Blue" refer to the mean color values in the
resulting scans.
"Time" refers to the time taken by each scan in seconds, measured as I
described above.
CUTOFF RED GREEN BLUE TIME
0 1.0 1.0 1.0 12.42
8 1.0 1.0 1.0 24.38
16 1.0 1.0 1.0 24.38
24 255.0 255.0 254.9 24.39
32 255.0 255.0 235.9 24.40
40 255.0 254.9 189.6 24.36
48 255.0 254.9 158.7 24.40
56 255.0 234.4 136.2 24.40
64 255.0 205.6 119.3 24.38
72 254.9 182.7 106.3 24.39
80 254.9 164.6 95.7 24.41
88 254.9 149.7 86.7 23.56
96 254.9 137.4 79.7 22.16
104 254.2 126.6 73.6 20.96
112 239.1 117.5 68.0 19.83
120 222.8 109.4 63.2 18.93
128 208.6 102.3 59.8 18.26
136 196.3 96.2 55.7 17.59
144 185.3 91.0 52.6 16.84
152 175.5 86.0 49.8 16.39
160 166.8 81.8 47.3 15.90
168 159.0 77.8 44.8 15.43
176 151.5 74.3 42.8 15.00
184 144.9 71.0 41.2 14.63
192 138.7 67.9 39.1 14.28
200 133.0 65.2 37.4 14.01
208 127.8 62.5 36.3 13.67
216 123.1 60.1 34.6 13.41
224 118.4 57.9 33.3 13.17
232 114.2 55.8 32.3 12.93
240 110.4 53.8 31.3 12.72
248 106.8 51.8 30.2 12.53
255 103.8 50.8 29.2 12.40
You can see that there is something strange with the low cutoff values
(probably due to errors in my generator program!), but the situation
stabilizes after 24.
At 88, exposure time seems to actually start changing, while before 88
it appears to remain constant (even though the mean colors do change in
the resulting image - so there definitely seems to be a mixture of
lookup table application *and* exposure changes).
When measuring the actual scan time (that is, minus calibration time
and stuff) with a stopwatch, scanning with cutoff=128 appears to take
just about exactly twice the time taken with cutoff=255.
By the way, perhaps I should mention that, one or two days ago, I
discovered that among the information that Epson only gives under NDA
is how to control auto-exposure. Oops. ;-)
Are you convinced now that I haven't been dreaming about this exposure
thing? <g>
But the bad parts come when scanning with "--film-type Negative" and
when using different lookup tables for each of the channels.
When using three lookup tables, strange things happen, and scan time
apparently changes depending on which channel uses which table.
When scanning with "--film-type Negative", scan time remains constant.
I suppose this is because, in negative mode, the green channel is
already automatically set to the longest possible exposure time (3x,
I'd judge).
But it's hard to know whether the exposures for the other two channels
change; they should, but given the strange behaviors mentioned above,
I'm not so sure they do.
When scanning with *both* "--film-type Negative" *and* three separate
lookup tables, well... you can guess... it actually rhymes with
"guess"...
Yes and no... Nominally it is but the film response curve is not
(strictly speaking). So while you can get acceptable results,
theoretically, it's two different things.
Yes and no... ;o) It depends on your requirements and your
environment. But that would be another digression...
I don't have fixed requirements, since I don't do this for a job or
anything.
My main requirement is to take the most from the scanner I have, with
as little per-scan manual intervention as possible.
I mean... if I have to spend two weeks writing a program to automate a
process, I'll probably do it.
But if I have to spend five minutes for *every* scan instead of
automating it, I probably won't.
(Which is why I wouldn't even consider your
multi-scan-and-manual-alignment-in-Photoshop, by the way!)
Also, I want to do things the right way. I don't care if I get a good
final scan, as long as I have a doubt that it might have been chance.
That's why I don't care if I just "seem" to be able to remove the
orange mask from a photo: it might not work for the next one, unless
it's the "right" way to do it.
It's also the reason for all the questions about how to handle
"pseudo-multisampling" 4800dpi scans: I don't *care* if bicubic resize
in Photoshop "looks like" working; I want to know it's the
mathematically correct way of doing it.
[snip]
Try googling for it and if that fails, get this:
http://www.color.org/membersonly/profileinspector.html
Next, locate the profile for your film and the above program will dump
the characteristic curves in that profile as data! However, it's raw
data and will need some massaging before it can be used. The Profile
Inspector does dump all the other data you need to do that (white
point, etc).
Thanks, that will be useful as a last resort if I can't find something
easier, or am not satisfied with it.
[snip]
The official definition involves 100 ASA film and I don't know it off
hand. However, the actual technical definition is not really
important. What is important is what it means: Each step doubles the
amount. So, ev=2 is twice the exposure of ev=1. And ev=3 is four times
the exposure or ev=1, etc.
Ok.
However, this only applies in linear gamma (gamma = 1.0)! That's why I
included gamma in the above formula, just in case.
Now, you know that I can't give my scanner the ev value directly: I
must directly map every possible OldPix value to every possible NewPix
value. Am I right in assuming that, using your formula, I could set an
ev value by solving
NewPix = 2^ev * OldPix (with gamma=1.0)
or
NewPix = 2^(ev/Gamma) * (OldPix^Gamma)^(1/Gamma) (with
gamma<>1.0)
?
If you're working in linear gamma it's real simple. You just
double/halve the value for each ev step. If you plot these values they
will be straight lines.
Yes, I asked because I am considering switching to gamma<>1.0 sooner or
later.
Currently, I'm working with gamma=1.0 simply because that's easier to
handle.
But since I'm getting 8 bpc from my scanner (16 bps hogs the USB port
and the images get too big), perhaps gamma=1.0 is not the best choice.
But don't just on me for working at 8 bpc straight off the scanner! I
have every intention to perform as much processing as possible using
the scanner's lookup tables, which still have 16 bits per channel to
work with.
by LjL
(e-mail address removed)