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=(256y+464.896cb-59506.688)/256;
// --------+128为四舍五入操作-----------------------------
// --> r=(256y+394cr-50463+128)>>8;
// --> g=(256y-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
声明:本设计只作为个人学习交流使用,不做商业用途。
RGB转YCbCr422_BT709颜色空间转换仿真相关推荐
- RGB和CIELAB颜色空间转换及偏色检测
RGB转为CIELAB 首先RGB是不可以直接转为CIELAB颜色空间的,RGB需要先转为CIEXYZ颜色空间,然后再由CIEXYZ颜色空间转为CIELAB颜色空间.关于这2个颜色空间的互转,主要参考 ...
- 【Pytorch】rgb转lab颜色空间转换
最近有需要,自己按照opencv实现的方式,自测! 个别tensor,numpy互转参考:https://oldpan.me/archives/pytorch-tensor-image-transfo ...
- Opencv的RGB到HSV颜色空间转换
从 RGB 到 HSL 或 HSV 的转换 设 (r, g, b) 分别是一个颜色的红.绿和蓝坐标,它们的值是在 0 到 1 之间的实数.设 max 等价于 r, g 和 b 中的最大者.设 min ...
- RGB与HSV颜色空间转换
RGB转化到HSV的算法: max=max(R,G,B): min=min(R,G,B): V=max(R,G,B): S=(max-min)/max: HSV颜色空间模型(圆锥模型) [2] if ...
- RGB和YCbCr颜色空间的转换及优化算法
RGB和YCbCr颜色空间转换和优化 转载于颜色空间系列3: RGB和YCbCr颜色空间的转换及优化算法 在常用的几种颜色空间中,YCbCr颜色空间在学术论文中出现的频率是相当高的,常用于肤色检测等等 ...
- 基于matlab的RGB到YCbCr颜色空间的转换
在matlab中,图像处理工具箱会将彩色图像当做RGB图像或者索引图像来处理.除了这两种颜色空间外还有其他一些以RGB模型为基础的颜色空间,如常见的YCbCr.HSV.HSI颜色空间等.这里只讲图像从 ...
- 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图
一. 使用cvCvtColor函数将RGB颜色空间转换到HSV颜色空间 所需函数: 1.cvCvtColor 函数功能:颜色空间转换 函数原型: void cvCvtColor( const CvAr ...
- FFmpeg入门详解之121:颜色空间转换RGB和YUV的原理与实战
5.颜色空间转换RGB和YUV的原理与实战 三种颜色空间模型:RGB.YUV.HSV 一.概述 颜色通常用三个独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间. 但被描述 ...
- RGB与Lab颜色空间互相转换
RGB与Lab颜色空间互相转换 1.Lab颜色空间 同RGB颜色空间相比(见博客<光与色的故事--颜色空间浅析>),Lab是一种不常用的色彩空间.它是在1931年国际照明委员会(CIE)制 ...
- 【颜色空间转换大集合】RGB到YIQ,RGB到HSI和HSI到RGB,RGB到YcbCr,RGB到XYZ颜色转换matlab代码的Demo,含详细的解释
废话不说,先上图, 实现方式:matlab 实现功能: 实验目标 了解图像颜色空间的转换关系. 了解图像的文件结构. 实验内容 完成如下颜色空间的转换.(4 Points) RGB -> YIQ ...
最新文章
- linux 安装输入法
- *HDU 2108 计算几何
- WPF: RenderTransform特效
- Spring+SpringMVC+Log4J
- android小程序源代码_我从 Android 转到微信小程序的思考
- admin select 2 异步_解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
- axure命令行_Axure变量详解
- 编程新手选择开发语言的注意事项
- 洛谷P1333 瑞瑞的木棍(欧拉回路)
- 了解一下JAVA中的NIO模块
- linux中程序定时重启脚本,linux 程序定时重启脚本
- 计算机考研复试面试系列 计算机专业英语篇
- 数据挖掘之大数据流处理
- 14-CompletableFuture异步编排
- [受限玻尔兹曼机] 原理、求解过程推导、深度信念网络
- 《算法图解》学习笔记(九):动态规划(附代码)
- VM虚拟机Ubuntu配置静态ip,亲测有效
- Win32 SDK 访问数据库
- 基于Docker的Confluence安装
- 音乐播放器从0到读取手机内的音乐文件——Android Studio小白实训笔记