OpenCores

True matrix 3x3 multiplier

Description

Here is universal high precision color transform component based on the direct 3x3 matrix multiplication without convert-specific (such as RGBYCbCr) optimization. The current color transformation is defined by the dynamically load matrix factors and can be changed at any time. At this moment we've typed factors for these convertions:

ComputerRGB_to_YCbCr601,
YCbCr601_to_ComputerRGB,
StudioRGB_to_YCbCr601,
YCbCr601_to_StudioRGB,
ComputerRGB_to_YCbCr709,
YCbCr709_to_ComputerRGB,
StudioRGB_to_YCbCr709,
YCbCr709_to_StudioRGB,
YCbCr709_to_YCbCr601,
YCbCr601_to_YCbCr709,
YUV601_to_YIQ601,
StudioRGB_to_YIQ601,
YIQ601_to_StudioRGB.

Precision of matrix factors is 10-E4. Trnasform operations were verifyied by the comparing with Matlab's equation. Testbench is attached.

Resource utilization by the core with 10-bit input data for modern Altera's FPGA StratixII EP2S30F672C5 (has 27104 ALUTs/128 DSP Blocks at all) is about 276 ALUTs and 18 9bit-DSP Blocks.

Features

- Universal, dynamically changable color convertions:

- ComputerRGB_to_YCbCr601,
- YCbCr601_to_ComputerRGB,
- StudioRGB_to_YCbCr601,
- YCbCr601_to_StudioRGB,
- ComputerRGB_to_YCbCr709,
- YCbCr709_to_ComputerRGB,
- StudioRGB_to_YCbCr709,
- YCbCr709_to_StudioRGB,
- YCbCr709_to_YCbCr601,
- YCbCr601_to_YCbCr709,
- YUV601_to_YIQ601,
- StudioRGB_to_YIQ601,
- YIQ601_to_StudioRGB.

- High-precision: upto 16 bit color components;

- Low resource utilisation with modern FPGA;

Status

- Initial Release : 15.08.2006

- Verify ComputerRGB YCbCr color transform by simulation and comparing with Matlab results. Passed.

- Implemented with Altera EP2S30 FPGA. Passed.