kopia lustrzana https://gitlab.com/sane-project/website
99 wiersze
4.4 KiB
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 & exposure times" -->
|
||
<!-- id="" -->
|
||
<!-- inreplyto="Pine.LNX.4.10.9907291705330.10012-100000@chef.ecs.soton.ac.uk" -->
|
||
<title>sane-devel: Re: SANE & exposure times</title>
|
||
<h1>Re: SANE & 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 & exposure times"</a>
|
||
<li> <b>Previous message:</b> <a href="0216.html">Nick Lamb: "Re: SANE & 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>> There is a third option which won't have me (or anyone else) crying out</i><br>
|
||
<i>> for the lost precision from messing about with my data in the backend,</i><br>
|
||
<i>> 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>> You can write "proxy" backends in SANE, like sane-net, which look like</i><br>
|
||
<i>> both a front-end and a back-end. This means that Coolscan need only</i><br>
|
||
<i>> know how to do standard SANE stuff (+ Exposures or whatever exported</i><br>
|
||
<i>> as a SANE well-known-option) and the frontend need know nothing about</i><br>
|
||
<i>> 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>> This way users who want e.g. exciting multiple-scan mangling, or cool</i><br>
|
||
<i>> exposure time compensation algorithms, can use them without everyone</i><br>
|
||
<i>> 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 & exposure times"</a>
|
||
<li> <b>Previous message:</b> <a href="0216.html">Nick Lamb: "Re: SANE & exposure times"</a>
|
||
<!-- nextthread="start" -->
|
||
<!-- reply="end" -->
|
||
</ul>
|