This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Convert XYZ color values to double


xyxd = xyz2double(XYZ)


xyxd = xyz2double(XYZ) converts an M-by-3 or M-by-N-by-3 array of XYZ color values to double. xyzd has the same size as XYZ.

The Image Processing Toolbox™ software follows the convention that double-precision XYZ arrays contain 1931 CIE XYZ values (2° observer). XYZ arrays that are uint16 follow the convention in the ICC profile specification (ICC.1:2001-4, for representing XYZ values as unsigned 16-bit integers. There is no standard representation of XYZ values as unsigned 8-bit integers. The ICC encoding convention is illustrated by this table.

Value (X, Y, or Z)

uint16 Value





1.0 + (32767/32768)


Class Support

xyz is a uint16 or double array that must be real and nonsparse. xyzd is of class double.


collapse all

This example shows how to convert uint16-encoded XYZ values to double.

Create a uint16 vector specifying a color in XYZ colorspace.

c = uint16([100 32768 65535]);

Convert the XYZ color value to double.

ans = 1×3

    0.0031    1.0000    2.0000

Introduced before R2006a