sane-project-website/old-archive/1999-07/0217.html

99 wiersze
4.4 KiB
HTML

<!-- received="Thu Jul 29 10:51:08 1999 PDT" -->
<!-- sent="Thu, 29 Jul 1999 20:08:33 +0200" -->
<!-- name="Ewald R. de Wit" -->
<!-- email="ewald@pobox.com" -->
<!-- subject="Re: SANE &amp; exposure times" -->
<!-- id="" -->
<!-- inreplyto="Pine.LNX.4.10.9907291705330.10012-100000@chef.ecs.soton.ac.uk" -->
<title>sane-devel: Re: SANE &amp; exposure times</title>
<h1>Re: SANE &amp; exposure times</h1>
<b>Ewald R. de Wit</b> (<a href="mailto:ewald@pobox.com"><i>ewald@pobox.com</i></a>)<br>
<i>Thu, 29 Jul 1999 20:08:33 +0200</i>
<p>
<ul>
<li> <b>Messages sorted by:</b> <a href="date.html#217">[ date ]</a><a href="index.html#217">[ thread ]</a><a href="subject.html#217">[ subject ]</a><a href="author.html#217">[ author ]</a>
<!-- next="start" -->
<li> <b>Next message:</b> <a href="0218.html">Nick Lamb: "Re: SANE &amp; exposure times"</a>
<li> <b>Previous message:</b> <a href="0216.html">Nick Lamb: "Re: SANE &amp; exposure times"</a>
<!-- nextthread="start" -->
<!-- reply="end" -->
</ul>
<!-- body="start" -->
Nick Lamb (<a href="mailto:njl98r@ecs.soton.ac.uk">njl98r@ecs.soton.ac.uk</a>) wrote:<br>
<i>&gt; There is a third option which won't have me (or anyone else) crying out</i><br>
<i>&gt; for the lost precision from messing about with my data in the backend,</i><br>
<i>&gt; while avoiding having to put the same code in every frontend...</i><br>
<p>
Like, how many frontends are there? It is easy to implement and if<br>
it's not implemented then flatbed users won't miss a thing.<br>
<p>
<i>&gt; You can write "proxy" backends in SANE, like sane-net, which look like</i><br>
<i>&gt; both a front-end and a back-end. This means that Coolscan need only</i><br>
<i>&gt; know how to do standard SANE stuff (+ Exposures or whatever exported</i><br>
<i>&gt; as a SANE well-known-option) and the frontend need know nothing about</i><br>
<i>&gt; negatives, but the proxy will do any mangling for you.</i><br>
<p>
My frontend *wants* to know about negatives. It wants to know the exact<br>
film density and do stuff with it. I don't need no stinking proxy<br>
mangling my pure raw scandata before it enters my precious enhance routines!<br>
<br>
<i>&gt; This way users who want e.g. exciting multiple-scan mangling, or cool</i><br>
<i>&gt; exposure time compensation algorithms, can use them without everyone</i><br>
<i>&gt; having to put up with the overhead, delay, and/or loss of precision.</i><br>
<p>
The disadvantages you mention are only when it's implemented in the<br>
backend. The more I thought about it the more I felt that exposure time<br>
correction should be in the frontend. Anyway I've implemented it in my<br>
experimental frontend and it works great.<br>
<p>
What I would like to propose for filmscanners, is to export the <br>
SANE_NAME_SCAN_EXPOS_TIME_R<br>
SANE_NAME_SCAN_EXPOS_TIME_G<br>
SANE_NAME_SCAN_EXPOS_TIME_B<br>
<p>
or (exclusive or)<br>
<p>
SANE_NAME_SCAN_EXPOS_TIME<br>
<p>
as SANE_Fixed values, where a value of 1 denotes the normal exposure time,<br>
that is the exposure time where scanning air (no slide at all) will just<br>
saturate the corresponding RGB channel(s). So a SANE_NAME_SCAN_EXPOS_TIME_R<br>
of 0.5 would fill the red channel exactly half way, etc.<br>
<p>
<p>
Further, I like to put these lines in sane/saneopts.h:<br>
<p>
#define SANE_NAME_DENSITY_RANGE "optical-density-range"<br>
#define SANE_TITLE_DENSITY_RANGE "Optical density range"<br>
<p>
I like to have this option exported as a SANE_Fixed too.<br>
This is a value that's dependent on the make and model of the scanner.<br>
For example, most 10 bits scanners have a density range of about 3.0 .<br>
<p>
Note that increasing the exposure time will shift the density range<br>
but not change it. Say a 4x increased exposure will shift a OD range<br>
of 3.0 from 0.6 to 3.6. So by knowing both the normalized exposure<br>
time and the OD range, we now have access to the densitometrically<br>
correct film data. <br>
<p>
<pre>
--
-- Ewald
<p>
<p>
<p>
<pre>
--
Source code, list archive, and docs: <a href="http://www.mostang.com/sane/">http://www.mostang.com/sane/</a>
To unsubscribe: echo unsubscribe sane-devel | mail <a href="mailto:majordomo@mostang.com">majordomo@mostang.com</a>
</pre>
<!-- body="end" -->
<p>
<ul>
<!-- next="start" -->
<li> <b>Next message:</b> <a href="0218.html">Nick Lamb: "Re: SANE &amp; exposure times"</a>
<li> <b>Previous message:</b> <a href="0216.html">Nick Lamb: "Re: SANE &amp; exposure times"</a>
<!-- nextthread="start" -->
<!-- reply="end" -->
</ul>