help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: More summer of code ideas needed!


From: Patrick Noffke
Subject: Re: More summer of code ideas needed!
Date: Tue, 19 Mar 2013 10:33:10 -0500

On Mon, Mar 18, 2013 at 8:37 PM, Jordi Gutiérrez Hermoso <address@hidden> wrote:
On 18 March 2013 18:17, Patrick Noffke <address@hidden> wrote:
>
>
> On Mon, Mar 18, 2013 at 3:21 PM, Jordi Gutiérrez Hermoso
> <address@hidden> wrote:
>>
>>
>> So, what are your ideas? What else could students work on? Edit the
>> wiki or let me know and I can work it into the wiki.
>>
>
> How about implementing iccread, iccwrite, makecform, and applycform?
>
> Possibly OF, but using the littlecms library would make a lot of sense.

I'm not familiar with these functions. Would you be able to give a bit
more context about them, and what a student would need to know to be
successful and how difficult would it be?



These functions are useful for color management, in particular for converting data (especially images) between color spaces.  ICC profiles are essentially used to store look-up tables or matrix transforms (or both) that define the conversions.  For example, to convert an CMYK image to sRGB, you would load a "print" ICC profile that defines the conversion from CMYK to L*a*b* (the CIE color space that is supposed to match the human visual system), then load another profile that defines the conversion from L*a*b* to sRGB (there is a standard profile for this conversion (IEC 61966-2-1), which is why ML has a built-in conversion from sRGB to L*a*b*).  To do the above conversions in ML, you would use the following code:

cmykImage = double(imread('cmyk-image-filename.tif'));
iccProfile = iccread('icc-profile-filename.icc');
labImage = applycform(cmykImage, makecform('clut', iccProfile, 'AToB3'));
rgbImage = applycform(labImage, makecform('lab2srgb'));

The 'AToB3' selects one of the color transforms (look-up tables) contained in the profile.  This one is "Absolute Colorimetric."  More details on ICC profiles may be obtained from the ICC spec, available at http://www.color.org/icc_specs2.xalter

Knowledge of ICC profiles (at least knowledge of their application) would be a prerequisite.  Since littlecms (http://www.littlecms.com/) implements all the necessary functions for reading, writing, and applying profiles, it would be primarily a matter of integrating this library into octave (assuming that is the preferred implementation -- one could certainly read the ICC files directly, but why reinvent that particular wheel).

I'm not clear on the rules/etiquette for matching the interface for ML functions.  Let me know if you need any input in this regard.

I would be willing to be a part-time mentor.  I'm not very familiar with the octave code (I looked at it long ago trying to explore some GUI options), but I'd be happy to help test, especially making sure the conversions are working correctly.

Please let me know if you need any more input.

Thanks,
Pat

reply via email to

[Prev in Thread] Current Thread [Next in Thread]