Re: [Lcms-user] ColorSync/AdobeCMM et al. (“Slope Limit”) compatibility patch for Little CMS

2016-03-21 Thread Uli Zappe
Am 22.03.2016 um 01:46 schrieb Miguel Medalha :

> Maybe you are well aware of this, but here it goes just in case: back in 
> 2007 Adobe made a public release of their Color Management Module (CMM). 
> It can be downloaded from the following links:
> 
> Mac version
> http://www.adobe.com/support/downloads/detail.jsp?ftpID=3617

Yep, I know, but Adobe, in their infinite wisdom, don’t even manage to produce 
software without capitalization errors in the file references of their code, 
meaning that their software – the Adobe CMM included – does not run on 
case-sensitive file systems, which I use on OS X.

And instead of fixing these bugs, this brain-dead company builds installers 
that refuse to install their software as soon as they detect a case-sensitive 
file system. Go figure.

So unfortunately, I cannot run any Adobe software whatsoever (well, except 
Lightroom and DNG related apps).

My focus was on ColorSync compatibility, anyway. I just tried to make my patch 
as universally usable as possible, but it will be up to people who can and want 
to run Adobe software to confirm that cmsFLAGS_SLOPE_LIMIT_32 adequately 
emulates the Adobe CMM.

Bye
Uli
_

  Uli Zappe, Christian-Morgenstern-Straße 16, D-65201 Wiesbaden, Germany
  http://www.ritual.org
  Fon: +49-700-ULIZAPPE
  Fax: +49-700-ZAPPEFAX
_




--
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351=/4140
___
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user


Re: [Lcms-user] ColorSync/AdobeCMM et al. (“Slope Limit”) compatibility patch for Little CMS

2016-03-21 Thread Miguel Medalha

> I have tested the implementation in comparison with ColorSync and can 
> confirm that it emulates the behavior of ColorSync exactly. I do not 
> have access to the Adobe CMM, so I cannot confirm that it emulates the 
> Adobe CMM as precisely as it does with ColorSync.

Maybe you are well aware of this, but here it goes just in case: back in 
2007 Adobe made a public release of their Color Management Module (CMM). 
It can be downloaded from the following links:

Mac version
http://www.adobe.com/support/downloads/detail.jsp?ftpID=3617

Windows version
http://www.adobe.com/support/downloads/detail.jsp?ftpID=3618

Unfortunately, both are 32bit only.


--
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351=/4140
___
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user


Re: [Lcms-user] ColorSync/AdobeCMM et al. (“Slope Limit”) compatibility patch for Little CMS

2016-03-21 Thread Uli Zappe

Am 21.03.2016 um 23:48 schrieb Uli Zappe :

> Therefore, I decided to patch the Little CMS source code directly.

To clarify, this patch is against the Little CMS 2.7 release version. Somehow 
this information got lost while I was editing my post.

Bye
Uli
_

  Uli Zappe, Christian-Morgenstern-Straße 16, D-65201 Wiesbaden, Germany
  http://www.ritual.org
  Fon: +49-700-ULIZAPPE
  Fax: +49-700-ZAPPEFAX
_





smime.p7s
Description: S/MIME cryptographic signature
--
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351=/4140___
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user


[Lcms-user] ColorSync/AdobeCMM et al. (“Slope Limit”) compatibility patch for Little CMS

2016-03-21 Thread Uli Zappe
Hi everyone,

about one year ago, Esben H-R Myosotis wrote in “Emulating Adobe's color 
engine” (https://sourceforge.net/p/lcms/mailman/message/33544095/):

> The Adobe color engine has the annoying quirk that it limits the slope of the 
> transfer function for pure gamma profiles. They spill the beans in "Annex C: 
> implementation notes (Informative)" in the specification of the Adobe1998 
> color space.
> 
> Since a disturbingly large fraction of the world consider Adobe products to 
> be the standard of color management, it would be useful to have an option 
> that emulates this behavior.

I have encountered the same issue, but with Apple’s ColorSync CMM (which uses 
seemingly the same formula although with factor 16 instead of Adobe’s 32). In 
fact, though it is not part of the ICC spec, this mechanism, known as “Slope 
Limit”, seems to be fairly widespread (e.g. Kodak’s CMM uses it, too – again 
with factor 16 (see the ProPhoto specification, page 5, 
http://scarse.sourceforge.net/docs/kodak/ProPhoto.pdf)). And Adobe’s and 
Apple’s CMMs are certainly among the most widely used CMMs. So I certainly 
agree with Esben that an option emulating this behavior would be very useful in 
Little CMS.

Basically, what slope limiting does is to calculate a linear transfer in 
parallel to the transfer function of matrix shaper profiles, and then use the 
maximum or minimum value (depending on the direction of the conversion) of 
both. So, assuming TRC(V) is the transfer function that converts the (R, G, B) 
component value V, and that F is the aforementioned factor (32 for Adobe, 16 
for Apple and Kodak), slope limiting means:

for the RGB to PCS direction:

   V = max ( TRC(V) , V / F )

for the PCS to RGB direction:

   V = min ( TRC(V) , V * F )


Replying to Esben, Marti Maria has suggested to use Little CMS’ plug-in API to 
implement this behavior. But at least I fail to see how this could possibly 
work in a generally usable way. Also, I feel that the fact that slope limiting 
is so widespread warrants an emulation option in Little CMS itself. Therefore, 
I decided to patch the Little CMS source code directly. I’ll discuss how to 
apply this patch at the end of this post.

Obviously, implementing the above slope limiting formula itself is extremely 
simple; it’s just a few lines of code in the cmsEvalToneCurveFloat() function 
in cmsgamma.c. The more tricky part and by far the one that requires the most 
code changes is to propagate the information when and which slope limiting 
should be applied to this function.

My implementation offers two new dwFlags for cmsCreateTransform() and 
cmsCreateTransformTHR():

   cmsFLAGS_SLOPE_LIMIT_16and
   cmsFLAGS_SLOPE_LIMIT_32

This means you can decide on a per-transform basis whether slope limiting 
should be applied or not, and which one. (Obviously, cmsFLAGS_SLOPE_LIMIT_16 
emulates ColorSync and the Kodak CMM, cmsFLAGS_SLOPE_LIMIT_32 emulates Adobe’s 
CMM.)

Apart from these two additional flags, my patch does not affect the public API 
of Little CMS 2.7 at all. But of course, this also means that you’ll have no 
access to this new feature apart from the cmsFLAGS_SLOPE_LIMIT_16 and 
cmsFLAGS_SLOPE_LIMIT_32 flags. A modified implementation could change the 
public API of Little CMS and allow for more detailed access to this feature.

I have tested the implementation in comparison with ColorSync and can confirm 
that it emulates the behavior of ColorSync exactly. I do not have access to the 
Adobe CMM, so I cannot confirm that it emulates the Adobe CMM as precisely as 
it does with ColorSync.

You can download the patch file from

   ftp://ftp.ritual.org/common/ColorManagement/LittleCMS.2.7.SlopeLimit.patch

(Make sure to use the binary mode with ftp so as to leave the patch file 
untouched.)

Move LittleCMS.2.7.SlopeLimit.patch into the lcms2-2.7 directory.

Then, in Terminal, go into the lcms2-2.7 directory and enter:

   patch -p0 -i LittleCMS.2.7.SlopeLimit.patch

That should do it.

(@Marti: If you want me to, I can fork the current development version of 
Little CMS on GitHub and issue a pull request for the patch.)

Bye
Uli
_

  Uli Zappe, Christian-Morgenstern-Straße 16, D-65201 Wiesbaden, Germany
  http://www.ritual.org
  Fon: +49-700-ULIZAPPE
  Fax: +49-700-ZAPPEFAX
_





--
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351=/4140
___
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user