• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

JamfileH A D11-Sep-2006128 54

LICENSEH A D11-Sep-200614.9 KiB283237

READMEH A D11-Sep-20064.8 KiB11594

arch.hH A D27-May-20071.5 KiB5932

cctiff.cH A D11-Dec-200731.4 KiB1,191927

cgen.cH A D11-Sep-200658.6 KiB1,8621,367

config.hH A D11-Sep-2006266 176

copyright.hH A D11-Sep-200697 61

imdi.cH A D11-Dec-20075.6 KiB233147

imdi.hH A D11-Sep-20062.1 KiB7428

imdi_gen.cH A D11-Dec-200718.5 KiB663442

imdi_gen.hH A D11-Sep-20063.9 KiB10945

imdi_imp.hH A D11-Sep-20067.6 KiB262178

imdi_k.cH A D11-Sep-20062 MiB53,18239,214

imdi_k.hH A D11-Sep-20066.6 KiB162155

imdi_tab.cH A D11-Dec-200718.8 KiB705504

imdi_tab.hH A D11-Sep-20064 KiB10053

README

1
2This is the development area for IMDI, the
3Interger Multi-Dimensional Interpolation routines.
4
5They provide a flexible and high performance
6system for applying color transforms to typical
7raster pixel data. Because they provide a means of
8applying arbitrary combination dependent mappings
9of multi-channel pixel data, there are many other
10possible uses for these sorts of routines as well,
11including high quality matting/compositing. For instance,
12one could create a smooth, proportional "chroma key"
13type of matt for matting one RGB image onto another
14by creating a 6 channel to 3 dimensional transform,
15that its applied to each pair of pixels from the
16source images and produces one combined output pixel.
17Additional input or output alpha channels are easy
18to add by simply adding more input and/or output
19dimensions. The matting calculatons can be almost
20arbitrarily complex, and the imdi will apply them
21to the pixel data at very high speed.
22
23The system has two parts, one that generates taylored,
24optimised source code for the transformation kernels,
25and the run time code that matches a transform request
26to a compiled kernel, and initialises the appropriate
27run time lookup tables.
28
29The kernel source generator is intended to accomodate
30various optimisations, such as assembly code, vector
31instruction set (ie. MMX, AltiVec etc.) versions, but
32at present only generates the more portable 'C' code
33kernels.
34
35Both 8 bit per component and 16 bit per component
36pixel data is handled, up to 8 input and output
37dimensions (but this limit could be trivially raised).
38
39imdi_gen.exe	is the module that triggers the generation of
40		optimised source code as configured for the color spaces
41		and pixel formats selected. By default creates
42		a single imdi_k.c and imdi_k.h file, but if
43		given the -i flag, creates a separate file
44		for each kernel variant.
45
46cgen.c		C code generator module.
47
48itest.c	regresion test routine.
49		Normally runs speed and accuracy tests for
50		all configured kernel variants.
51		The -q flag makes it run quicker,
52		but makes the benchmarking inacurate,
53		the -s flag will cause it to stop
54		if any routine has unexpectedly low
55		accuracy.
56
57cctiff.c	is the utility that takes an ICC device
58		profile link, and converts a TIFF file
59		from the input colorspace to the output
60		space. Both 8 bit and 16 bit TIFF files
61		are handled, as well as colorspaces up to
62		8 channels in and out.
63        This accepts either a device link ICC profile,
64        or links an input and output devce ICC profile
65        to define the color transform.
66
67
68greytiff.c  is a utility similar to cctiff, that
69        is an example of how to colorimetrically
70        convert an RGB file into a monochrome RGB file.
71
72
73
74Misc. Notes
75-----------
76
77   ITU-T Rec. T.42 specifies the ITULAB encoding in terms of a range
78    and offset for each component, which are related to the minimum and
79    maximum values as follows:
80
81        minimum = - (range x offset) / 2^n - 1
82        maximum = minimum + range
83
84    The Decode field default values depend on the color space. For the
85    ITULAB color space encoding, the default values correspond to the
86    base range and offset, as specified in ITU-T Rec. T.42 [T.42]. The
87    following table gives the base range and offset values for
88    BitsPerSample=8 and 12, and the corresponding default minimum and
89    maximum default values for the Decode field, calculated using the
90    equations above when PhotometricInterpetation=10.
91
92                       +-----------------------------------------------+
93                       | ITU-T Rec. T.42  |           Decode           |
94 +---------+-----------|   base values    |       default values       |
95 | BitsPer + Component +------------------+----------------------------+
96 | -Sample |           |  Range | Offset  |      Min     |     Max     |
97 +---------+-----------+--------+---------+--------------+-------------+
98 |    8    |    L*     |   100  |    0    |       0      |     100     |
99 |         +-----------+--------+---------+--------------+-------------+
100 |         |    a*     |   170  |   128   |  -21760/255  |  21590/255  |
101 |         +-----------+--------+---------+--------------+-------------+
102 |         |    b*     |   200  |    96   |  -19200/255  |  31800/255  |
103 +---------+-----------+--------+---------+--------------+-------------+
104 |   12    |    L*     |   100  |    0    |       0      |     100     |
105 |         +-----------+--------+---------+--------------+-------------+
106 |         |    a*     |   170  |  2048   | -348160/4095 | 347990/4095 |
107 |         +-----------+--------+---------+--------------+-------------+
108 |         |    b*     |   200  |  1536   | -307200/4095 | 511800/4095 |
109 +---------+-----------+--------+---------+--------------+-------------+
110
111   For example, when PhotometricInterpretation=10 and BitsPerSample=8,
112   the default value for Decode is (0, 100, -21760/255, 21590/255,
113   -19200/255, 31800/255).
114
115