ProPhoto RGB color space

The ProPhoto RGB color space, also known as ROMM RGB (Reference Output Medium Metric), is an output referred RGB color space developed by Kodak. It offers an especially large gamut designed for use with photographic output in mind. The ProPhoto RGB color space encompasses over 90% of possible surface colors in the CIE L*a*b* color space, and 100% of likely occurring real-world surface colors documented by Michael Pointer in 1980, making ProPhoto even larger than the Wide-gamut RGB color space. The ProPhoto RGB primaries were also chosen in order to minimize hue rotations associated with non-linear tone scale operations. One of the downsides to this color space is that approximately 13% of the representable colors are imaginary colors that do not exist and are not visible colors.

When working in color spaces with such a large gamut, it is recommended to work in 16-bit color depth to avoid posterization effects. This will occur more frequently in 8-bit modes as the gradient steps are much larger.

There are two corresponding scene space color encodings known as RIMM RGB (Reference Input Medium Metric) intended to encode standard dynamic range scene space images, and ERIMM RGB intended to encode extended dynamic-range scene space images.

Development
The development of ProPhoto RGB and other color spaces is documented in an article summarizing a presentation by one of its developers Geoff Wolfe at Kodak, now senior research manager at Canon Information Systems Research Australia, at the IS&T/SPIE Color Imaging Conference in 2011.

Viewing environment

 * Luminance level is in the range of 160–640 cd/m2.
 * Viewing surround is average.
 * There is 0.5–1.0% viewing flare.
 * The adaptive white point is specified by the chromaticity values for CIE Standard illuminant D50 ($$x = 0.345704$$, $$y = 0.358540$$).
 * The image color values are assumed to be encoded using flareless (or flare corrected) colorimetric measurements based on the CIE 1931 Standard Colorimetric Observer.

Encoding function


X'_\mathrm{ROMM} = I_\mathrm{MAX} \cdot \begin{cases} 0; & X_\mathrm{ROMM} < 0.0 \\ 16\cdot X_\mathrm{ROMM}; & 0.0 \le X_\mathrm{ROMM} < E_t \\ X_\mathrm{ROMM}^{1/1.8}; & E_t \le X_\mathrm{ROMM}<1.0 \\ 1; & X_\mathrm{ROMM} \ge 1.0 \end{cases} $$

where


 * $$X = R,\, G,\, or\, B$$

and


 * $$I_\mathrm{MAX}$$ is the maximum integer value used in the encoding function (e.g. 255 for 8-bit configuration)

and


 * $$E_t = 16^{1.8/(1-1.8)} = 2^{-9} = 1/512 = 0.001953125$$