fakeread
Author: Graeme Gill

## spectro/fakeread

### Summary

Simulate the measurement of a devices response, using an existing device profile, or measured test point data set. The device profile can be either an ICC or MPP profile, or the data set can be a .ti3 file. A device link separation or color space conversion can be applied before the print/measure simulation.

### Usage

fakeread [-v] [-s] [separation.icm] profile.[icm|mpp|ti3] inoutfile
-v Verbose mode
-s Lookup MPP spectral values
-p Use separation profile
-l Output Lab rather than XYZ
-k file.cal Apply calibration (after sep.) and include in .ti3
-i file.cal Include calibration in .ti3 (but don't apply it)
-r level Add average random deviation of <level>% to input device values (after sep. & cal.)
-0 pow Apply power to input device chanel 0-9 (after sep. cal. & rand.)
-R level Add average random deviation of <level>% to output PCS values
-u Make random deviations have uniform distributions rather than normal
-S seed Set random seed
-b L,a,b Scale black point to target Lab value
[separation.icm] Device link separation profile
profile.[icm|mpp|ti3] ICC, MPP or .ti3 profile/file to use
inoutfile Base name for input[.ti1]/output[.ti3] file
Examples
fakeread profile.icm testvalues
fakeread -p separation.icm profile.icm testvalues

### Comments

The -v flag does nothing at the moment.
The -s flag works only with MPP profiles that contain spectral model information.
The -p flag enables a device to device value conversion before converting to expected PCS values.
The -l flag causes the CIE output values to be L*a*b* rather than the default XYZ values.
The -k file.cal parameter specifies a printer calibration file created by printcal, and the supplied calibration curves will be applied to the chart device values after any separation. This allows emulating a system that uses per device channel calibration. The calibration curves will also be included in the resulting .ti3 file, so that they can be passed through to the ICC profile allowing accurate computation of ink limits.
The -i file.cal parameter specifies a printer calibration file created by printcal, and the calibration curves will be included in the included in the resulting .ti3 file, so that they can be passed through to the ICC profile, to allow accurate computation of ink limits. The calibration is not applied to tchart values. Note that if the supplied ICC profile contains calibration curves, that these will be included in the resulting .ti3 by default.
The -r parameter is a way of simulating instability in the behaviour of the simulated printing system. The parameter supplied to the flag will be used to scale a random offset added to the device values (after any separation and calibration is applied). The offset will be a normally distributed error with an average deviation of level%. A typically value supplied might be 1.0 to simulate 1% randomness.
The -0, -1, -2 .. -9 parameters are a way of simulating changes in the behaviour of the simulated printing system. The parameter supplied to the flag will be used to modify the device values (after any separation, calibration and device randomness is applied) by raising them to the power of the parameter. This applies a transfer curve to the simulated device response.
The -R parameter is a way of simulating instability in the behaviour of the simulated measuring system. The parameter supplied to the flag will be used to scale a random offset added to the PCS values. The offset will be a normally distributed error with an average deviation of level%. A typically value supplied might be 1.0 to simulate 1% randomness.
The -u flag changes the distribution of the random offsets applied using the -r or -R flags, from the default standard deviation, to a uniform deviation distribution. The level is still specified as an average deviation.
The -S parameter lets a particular random seed be used when generating random offsets, so that the randomness can be made repeatable. Normally a different seed will be used for each run.
The -b parameter is a way of simulating devices that have a different black point to the profile used. This only works if an ICC profile is used, and scales the black point to the parameter value. This will be done in XYZ space by default, and in L*a*b* space if the -l flag is used.
Fakeread is useful in creating artificial test value for testing colprof, as well as providing one path for turning an MPP profile into an ICC profile. If a .ti3 file is specified instead of an ICC or MPP profile, then the closest matching measured points in the ..ti3 are substituted for the test values in the .ti1 file on output. If the .ti1 file is a monochrome test file with a White device value, then an RGB ICC profile, MPP or .ti3 may be used, and the White values will be translated to equal RGB values. If the .ti1 file is a monochrome test file with a Black device value, then a CMYK ICC profile, MPP or .ti3 may be used, and the Black values will be translated to equal CMY = 0, K = grey values. Note that any calibration within a supplied ICC profile is not applied during the conversion, although it will be included in the .ti3 output (see -k and -i flags for how apply calibration curves during the conversion and/or include a specific calibration curves in the output).
If a separation device profile is provided (e.g. from CMY -> CMYK, or perhaps CMYK->CMYK, to simulate a color correction step before "printing"), then this will be applied to the .ti1 device values, before converting the the device values into .ti3 PCS values.