[Openicc] RFC about a new library

Marco Oman marco.oman69 at gmail.com
Wed Feb 18 12:22:55 PST 2015


Hi to all

I am writing here to ask you to give a look at a library I developed
recently that aims at working with ICC profiles in a 'strongly typed' way.

Basically the library defines a few types for color spaces (like xyz_t,
lab_t, a template rgb_t<T>). Then a profile (or also a transform) is
represented by a class like

function_t<lab_t, rgb_t<double>> f(..);

This 'function_t' can be evaluated in this way:

rgb_t<double> rgb = {0., 0.3, 0.4} ;
lab_t lab = f(rgb) ;

but can also be composed , like this:

function_t<rgb_t<double>> g(...) ;
function_t<rgb_t<double>, rgb_t<double>> h = f * g ;
rgb_t<double> rgb1 = h(rgb) ;

The library is not complete but already does several things, like loading
AToB, BToA, Lut8 and Lut16 tag types. Is still missing the multi processing
element.

Another interesting feature (or at lest something I would sell as such) is
the tetrahedral interpolation used for multi-dimensional LUTs. The
interesting part lies in the fact that the algorithm is generalized for
input dimensions bigger than three.

But it's time to give some links:
Here you get the code:

https://github.com/marco-o/LIBICCPP

and here there is an attempt at giving an insight about what's going on
inside:

https://libiccpp.wordpress.com/

That's all. Comments, suggestions, hints etc are welcome!

  Marco
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/openicc/attachments/20150218/e80d504b/attachment.html>


More information about the openicc mailing list