Core Optical, Inc.
ColorimetricConverter ConvertXYZtoYuv Method Industrial Strength, Scientific Grade
Transforms source data in-place from CIE XYZ space to Yu'v' space.

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

public void ConvertXYZtoYuv(
	SourceData dataSource
)

Parameters

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

Remarks

This method transforms data in CIE XYZ space to Yu'v' color space. The dataSource XYZ values must be stored in channels 0, 1 and 2 respectively. Yu'v' 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.
Examples

The following converts the image data from Linear RGB to CIE XYZ, and then from CIE XYZ to Yu'v' 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 at least 3 channels 
// or exception will result), and then from XYZ to Yu'v' (in-place):
colorConverter.ConvertLinearRGBtoXYZ(imageData);
colorConverter.ConvertXYZtoYuv(imageData);

// Assume some processing on one or more of the Yu'v' channels:
.
.
.
// After channel processing, transform Yu'v' values back to linear RGB (in-place):
colorConverter.ConvertYuvToXYZ(imageData);
colorConverter.ConvertXYZtoLinearRGB(imageData);
See Also