RGB转YCbCr422_BT709颜色空间转换仿真

1.前言

表示图像颜色的方法除了RGB颜色模型之外,还有一些别的颜色模型,这些颜色模型被叫做色彩空间,色域空间,或颜色空间。
常见的颜色空间有RGB,YIQ,HSV,YCbCr。
RGB图像又称真彩色图像,R、G、B分别代表红、绿、蓝3种不同的颜色。
在这里插入图片描述
YIQ空间对应NTSC模型,广泛应用于美国等国家的电视信号。Y表示亮度(luminance),I表示色度(hue),Q表示饱和度(saturation)。
HSV模型通常用于选择颜色,其中H表示颜色的种类即色度,S表示饱和度,V表示亮度。
在这里插入图片描述
YCbCr模型广泛用于数字视频,Y表示亮度,Cb、Cr分别为蓝色分量和红色分量相对于参考值的坐标。

2.框图

在testbench中主要有4个模块,一个是图像输入模块driver,一个是图像输出模块monitor。Driver模块负责把bmp位图转换成RGB并行数据,Monitor模块负责把RGB并行数据转成bmp位图并存储下来。
RGBtoYC模块把RGB格式转换成YC422格式,YCtoRGB模块把YC 422格式转换成RGB 格式,转换公式基于BT709 limitRGB公式。
在这里插入图片描述

3.图像输入和图像输出

图像输入模块和图像输出模块分别负责将bmp位图转换成RGB/hs/vs/de格式数据,以及将RGB/hs/vs/de格式数据转换成bmp位图输出。参考《ModelSim仿真图像输入和输出》 https://blog.csdn.net/cjie221/article/details/88385506。

4. RGBtoYC模块

该模块负责将RGB格式数据转换成YCbCr422格式输出。VS,HS,DE延时5个时钟周期后输出。转换公式采用BT709标准,limitRGB公式。按照BT709标准,转换前后RGB, YC的数值范围都在16235,但如果RGB范围在0255,转换后YC的范围也在0~255。
Y709 = 0.213R′ + 0.715G′ + 0.072B′
Cb = –0.117R′– 0.394G′ + 0.511B′ + 128
Cr = 0.511R′– 0.464G′– 0.047B′ + 128
在数字电路中浮点数计算需转换成整数方式计算,所以需对公式做一下变换才可以通过数字电路实现。转换公式如下,需把系数放大256倍转换成整数。
//---------------------------------------------------------
// => Y709 =55/256R’+183/256G’+18/256B’;
// => Cb =-30/256R’-101/256G’+131/256B’+32768/256;
// => Cr =131/256R’-119/256G’-12/256B’+32768/256;
// --------+128为四舍五入操作-----------------------------
// => Y709 =(55R’+183G’+18B’+128)>>8;
// => Cb =(-30R’-101G’+131B’+32768+128)>>8;
// => Cr =(131R’-119G’-12B’+32768+128)>>8;
//---------------------------------------------------------

5. YCtoRGB模块

该模块负责将YCbCr422格式数据转换成RGB格式输出。VS,HS,DE延时5个时钟周期后输出。转换公式采用BT709标准,limitRGB公式。同样按照BT709标准,转换前后RGB, YC的数值范围都在16235,但如果YC范围在0255,转换后RGB的范围也在0~255。
r = y+1.540*(cr-128);
g = y-0.459*(cr-128)-0.183*(cb-128);
b = y+1.816*(cb-128);
同理也要把浮点数转换成整数,转换公式如下,需把系数放大256倍转换成整数。
//-----------------------------------------------------------------
// --> r=(256y+394.24cr-50462.72)/256;
// --> g=(256y-117.504cr-46.848cb+21037.056)/256;
// --> b=(256
y+464.896cb-59506.688)/256;
// --------+128为四舍五入操作-----------------------------
// --> r=(256
y+394cr-50463+128)>>8;
// --> g=(256
y-118cr-47cb+21037+128)>>8;
// --> b=(256y+465cb-59507+128)>>8;
//---------------------------------------------------------

6.仿真

整体功能比较简单,利用modelsim仿真工具即可实现。如果已安装modelsim,通过直接双击运行.bat文件即可开始。本文中利用图像仿真的基础平台,在此基础上加入了RGB to YCbCr422的色域空间转换模块。
仿真代码及工程已上传。 https://download.csdn.net/download/cjie221/11015267
声明:本设计只作为个人学习交流使用,不做商业用途。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值