Newsgroups: comp.graphics,comp.lang.postscript,comp.graphics.algorithms,sci.image.processing
Path: cantaloupe.srv.cs.cmu.edu!nntp.club.cc.cmu.edu!miner.usbm.gov!rsg1.er.usgs.gov!jobone!newsxfer.itd.umich.edu!gatech!concert!decwrl!adobe!taft
From: taft@mv.us.adobe.com (Ed Taft)
Subject: Re: Transfer function or calibration
Message-ID: <1994Nov14.191237.13693@adobe.com>
Sender: usenet@adobe.com (USENET NEWS)
Organization: Adobe Systems Incorporated, Mountain View, CA
References: <3a1f45$cjr@hobbes.cc.uga.edu> <1994Nov14.163238.24427@ultb.isc.rit.edu>
Date: Mon, 14 Nov 1994 19:12:37 GMT
Lines: 31
Xref: glinda.oz.cs.cmu.edu comp.graphics:64419 comp.lang.postscript:28287 comp.graphics.algorithms:10174 sci.image.processing:10883

jsvrc@rc.rit.edu (J A Stephen Viggiano) writes:
[how to compute PostScript transfer function for dot gain]

>/OldTransfer currenttransfer def
>
>{OldTransfer 255 mul [0.000 0.006 0.012 0.017 0.022 % 249 values deleted
>0.997 1.000] exch get} bind settransfer

Let me point out a technical problem with this code sample. The
transfer function procedure will build the 256-element array each time
it is called. This is slow and will consume VM needlessly. Since the
array is constant, it's better to build it just once. One way to
accomplish this is:

  {OldTransfer 255 mul {0.000 0.006 0.012 0.017 0.022 % 249 values deleted
  0.997 1.000} exch get} bind settransfer

>For color printers, the process is more complicated. [...]
>The color analog of the settransfer operator is setcolortransfer. It
>is discussed in the Red Book, second edition.

Note that setcolortransfer establishes transfer functions for the
color components individually. There is no way to compensate for
interactions between color components.

If your printer supports PostScript Level 2, you should consider using
the CIEBasedABC or CIEBasedA device-independent color spaces. Then you
don't need to fiddle with the calibration, since the printer should be
calibrated to CIE standards already.
-- 
Ed Taft      taft@adobe.com    
