Core Optical, Inc.
ColorimetricConverter ConvertXYZtoYCbCr Method Industrial Strength, Scientific Grade
Transforms source data in-place from CIE XYZ space to YCbCr space.

Namespace: PrecisionImage.Colorimetry
Assembly: PrecisionImage (in PrecisionImage.dll) Version: (

public void ConvertXYZtoYCbCr(
	SourceData dataSource


Type: PrecisionImage SourceData
A SourceData object encapsulating the image data to be converted.


This method transforms data in CIE XYZ space to Y-Cb-Cr color space. The dataSource XYZ values must be stored in channels 0, 1 and 2 respectively. Y/Cb/Cr output values are stored in-place in channels 0, 1 and 2. To guarantee an invertable result, output values are not clamped to any arbitrary range and are stored as-is. The dataSource object must contain at least 3 channels or an OnlineArgumentOutOfRangeException exception will result.

The following converts the image data from Linear RGB to CIE XYZ, and then from CIE XYZ to YCbCr space.
using PrecisionImage;
using PrecisionImage.Colorimetry;

// Instantiate the SourceData object. "MyBitmapSource" is an rgb image with no alpha channel: 
SourceData imageData = new SourceData(MyBitmapSource);

// Instantiate the ColorimetricConverter object: 
ColorimetricConverter colorConverter = new ColorimetricConverter();

// Image data is currently in linear RGB space. Transform to CIE XYZ in-place (imageData must have exactly 3 channels 
// or exception will result), and then from XYZ to YCbCr (in-place):

// Assume some processing on one or more of the YCbCr channels:
// After channel processing, transform YCbCr values back to linear RGB (in-place):
See Also