[sane-devel] ICC support for SANE

Kai-Uwe Behrmann ku.b at gmx.de
Wed May 13 08:35:52 UTC 2009


replying to digest

Date: Mon, 11 May 2009 09:40:43 -0400
From: "m. allan noah" <kitno455 at gmail.com>

> On your blog posts, I think your list of how to get device
> identification is good except for a few points-

> 3. there is a version number exposed by the backend, but only as a
> param of sane_init()
>
> 4. You should not make assumptions about which driver options might
> change the output of the machine. Brightness/contrast/gamma are
> common, but others might include exposure, or black level, or even
> some sort of dynamic algo done by the scanner itself.
>
> 5. you might also want to adjust your work-flow drawing to show the
> SANE backend between the scanner and the SANE API.

How can we see what the backend does? I mean it is quite essential 
regarding colour apeparance to know, with which settings a scanner runs, 
e.g. gamma, gain ...  Is this exposed in the Sane API?

As initial interesst for Sane related colour management is very old, I got 
some first steps from here, some the following notions might be already 
know.

Anyway, let me elaborate:
when one calibrates and profiles a scanner, hopefully good 
settings are used and the colour related part should be extracted 
and remembered somewhere. Ideally these setting are stored later in the 
final ICC device profile. A hardware driver knows possibly best which 
settings are colour related and which not. Therefore I plan to add a 
backend type to Oyranos, which links to a device driver, e.g. the Sane 
API, and serialises the colour related device settings ideally to a list 
of key/value text pairs. The Oyranos device backend of Yiannis will 
then recieve a Sane context from the frontend application and extract all 
colour related informations. The resulting information from the 
Sane scanner can then be stored in the Oyranos device profile DB and 
embedded into a ICC profile on request. [1]
What this approach would be in need of, is some means to obtain colour 
relevance from a backend. Can all colour relevant settings be marked and 
transported to the front end? Would this be an extension or already 
available in Sane?
The calibration part is done by a application, like 
for monitors and often or printers. This can be automatic or manual. 
After this phase the device is ready for measuring. The settings, used 
during the calibration, must be stored or at least not altered. It is 
always a good idea to have control over that settings, as a change of them 
will change any later output and invalidate the ICC profile. The 
calibration can be imagined like a reference for the ICC profile. [2]

The test scan, typical of a colour patches chart, will then show 
the result of that colours scanned under these calibration.
The obtained picture can then be feed to a profiling application, like 
ArgyllCMS or Lprof in the open source world. It will extract the resulting 
colours as device colours and create a ICC profile, which is able to 
correct these colours to a reference colour space.

Applications using following combination of:
* a defined or, regarding colour, similiar behaving device
* a defined driver (backend?) settings and
* a related ICC profile
can then reach much more agreement about colours for the same scanned 
picture with different devices. Ideally the tint of the device will 
disappear after that process. The application part is already implemented 
in XSane. [3]

Now related to Oyranos, the idea is to move that
   device, driver, ICC profile 
combination out of a single application to a shared library, to offer 
every application using colour devices the same comfort of obtaining ICC 
colour management support from the Oyranos library. This includes a GUI to 
set profiles to each device and other options. The GUI part is called 
kolor-manager, a KDE system settings panel, which is currently part of the 
KDE playground [4].

> There has been some discussion of making a modified version of the
> SANE API, perhaps if you can outline the benefits of ICC support, you
> might get some buy-in to adjust it to your needs...


Date: Mon, 11 May 2009 16:22:53 +0200
From: Julien BLACHE <jb at jblache.org>

> To put it in a nutshell: uniquely identifying a scanner, don't count
> on it. If it was doable, we would have done so loooooong ago already.

What a pitty.

> Fact is, USB scanners reporting a serial number at the USB level are
> the exception. And as Allan wrote already, even otherwise, not a lot
> of machines expose a serial number. Manufacturers just don't care,
> except on high-end machines.

Then these machines will probably see less troubles during colour 
critical work.


kind regards
Kai-Uwe Behrmann
-- 
developing for colour management
www.behrmann.name + www.oyranos.org

[1] http://www.oyranos.org/wiki/index.php?title=Device_Settings#Driver
[2] http://www.oyranos.org/wiki/index.php?title=Device_Settings#Profiling
[3] http://www.oyranos.org/wiki/index.php?title=Device_Settings#Scenario
[4] http://www.oyranos.org/wiki/index.php?title=Kolor-manager



More information about the sane-devel mailing list