RGB转YCbCr422_BT709颜色空间转换仿真

article/2025/9/26 5:13:02

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
声明:本设计只作为个人学习交流使用,不做商业用途。


http://chatgpt.dhexx.cn/article/e1xGPfZX.shtml

相关文章

bt709和srgb_选择用于多用途视频编辑和色彩校正的显示器— sRGB,DCI-P3,REC 709

bt709和srgb **Note from the author: if you enjoy this article, please follow me or this publication for more video production and marketing related content.** **作者注:如果您喜欢本文,请关注我或此出版物以获取更多与视频制作和营销相关的内容。** I will star…

BT601和BT709到底什么关系

每每遇到这两个玩意,头脑就一片空白,去baidu,都是讲一大堆历史故事,故事看完,还是没弄懂他们之间到底是什么关系,在我们日常编程中要怎样才能遵从这两个玩意。 下面利用一个包含视频采集和视频显示的设备讲…

关于BT.709标准

有人因为709的事情吵起来了...... HOMEBOY电影洗印厂 HOMEBOY电影数字洗印厂是一家专注于影视调色的后期公司 12 人赞同了该文章 前两天一篇名为“到底啥是Rec.709?”的文章因为一些翻译上疏漏,造成了不少朋友的困惑和争论,对此我们先向大…

大时代势不可挡,隔行扫描已经消失。BT.709色彩空间也开始离我们远去

BT.709,这个色域空间满足ITU-R BT.709标准,并被用于现有的视频摄像机中。以前被ITU-R推广的Rec.709这个名字已经改变了。在升级后被称为BT.709。 去年下半年,国际电信联盟无线电通信部门(ITU-R)颁布了面向新一代超高清UHD(Ultra-high definition)视频制作…

视频基本原理 - BT709和BT1120

上文描述了BT601和BT656的内容以及两者之间的关系。本文主要描述BT1120规范,但是在这之前,先讲述一下BT709规范。 就如上文描述的:BT601是SDTV的数据结构,BT656是SDTV的接口定义; BT709是HDTV的数据结构,B…

codeql

title: codeql categories: javacodeql date: YYYY-MM-DD HH:mm:ss tags:javacodeql代码审计 codeql 下一个靶场来测试 https://github.com/l4yn3/micro_service_seclab/ 引擎安装(codeql) https://github.com/github/codeql-cli-binaries/releases SDK安装(ql) https:/…

VScode连接SQL Server数据库执行语句

VScode的下载地址:VScode官网 推荐插件:VScode实现HTML的编写、运行和调试&推荐插件 sql文件中文乱码:解决VScode打开文件后中文显示为乱码 安装SQL Server (mssql)拓展 连接到SQL Server 按Ctrl Shift P或F1以打开命令面板输入sql…

【DB2报错】创建存储过程报SQLSTATE:-104 SQLCODE:42601

今天创建存储过程的时候碰到这个报错: AN unexpected tkoen "END-OF-STATEMENT" was found following "COMMIT",Expected tokens may include:"END IF"..SQLSTATE:-104 SQLCODE:42601 翻译:在“COMMIT”之后发现了一个异…

TinyXML2下载与编译

最近有使用到用XML格式来封装UDP报文,所以研究下TinyXML。 TinyXML下载地址: https://github.com/leethomason/tinyxml2 进入到tinyxml2文件目录下,找到.sln文件(解决方案文件) 直接用VS2010以上版本打开&#xff0…

C++ 使用 tinyxml2 解析创建 xml

目录 1. github 地址 2. 使用 3. 解析xml demo 4. 注意点 5. 解析效果展示 6.创建xml 7.创建xml效果展示 8. 完整的示例,添加Vector 9. 参考 1. github 地址 GitHub - leethomason/tinyxml2: TinyXML2 is a simple, small, efficient, C XML parser that …

TinyXML2 学习

换cocos2d-x版本到2.1.3之后,自己的文件读写也用了引擎CCUserDefault使用的TinyXML2,在这汇总了一下TinyXML2的使用,希望大家看这一篇文章就可以解决自己的问题,省得到处查阅…… 注意,文章一次解释了写操作->读操…

Tiny-XML

Tiny-XML 2023-01-15:基于C语言实现的小型XML解析器 解析代码实现仅600余行大部分数据结构使用链表实现,malloc、free、realloc、strdup函数已在文件开头使用宏定义设置,方便移植于别的平台项目注释内容丰富,数据结构和常用函数方法已于文件…

xml开发笔记(一):tinyXml2库介绍、编译和工程模板

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111828450 长期持续带来更多项目与技术分享,咨询请加QQ:21497936、微信:yangsir198808 红胖子(红模仿)的博文大全&#x…

tinyxml2的安装使用及示例总结

TinyXml2 库使用方法 安装 下载地址 https://github.com/leethomason/tinyxml2 使用 git 下载 (1)下载 tinyxml2 git clone https://github.com/leethomason/tinyxml2.git (2)进入相应目录并编译 cd tinyxml2/ cmake . make &…

C++使用TinyXml2解析Xml

1. TinyXml2 简介 TinyXml 一直是一个非常好用的 Xml 解析工具 , 最新的开源版本 TinyXml2 相对于旧版本的 TinyXml 使用更少的内存 , 更快 , 并且使用更少的内存分配 , 现在是所有开发的重点 , 经过良好的测试 , 是您的最佳选择 , 除非您有维护TinyXML-1代码的要求 ; TinyX…

使用tinyxml2库解析xml

tinyxml2简介 tinyxml2是c编写的轻量级的xml解析器,而且是开放源代码的,在一些开源的游戏引擎中用的比较多。源码托管在github上。 源码地址:https://github.com/leethomason/tinyxml2 tinyxml2使用起来非常简单,下载源码后无需…

TinyXml学习笔记

TinyXml学习笔记 张弛<> 注:本文的最新版本可以在下面的地址找到 http://amidiot.512j.com/article/tinyxml/tinyxml_note.htm 一、 TinyXml的特点 TinyXml是一个基于DOM模型的、非验证的轻量级C解释器。 1. SAX和DOM 目前XML的解析主要有两大模型&#…

TinyXml使用详解

本文用一个详细的例子说明了TinyXml的使用方法。如写、查找、插入、替换、加载、遍历等常见操作。 首先简单介绍一下TinyXml,要看详细的在网上搜搜了^_^: 1、TinyXml源代码只有4个cpp文件和2个头文件。 2、首先要理解TinyXml中的各个基本类型之间的关系,看看这个继承图大家…

TinyXML2使用教程

TinyXML2使用教程 原文转自 http://blog.csdn.net/K346K346/article/details/48750417 1.TinyXML2概述 TinyXML2是simple、small、efficient开源的C XML文件解析库&#xff0c;可以很方便的应用到现有的项目之中。非常适合存储简单数据&#xff0c;配置文件&#xff0c;对象…

TinyXML使用方法

TinyXML 使用说明 TinyXML是一个C的XML解析库&#xff0c;网上的评价都不错&#xff0c;是一个轻量级的XML解析库。关于TinyXML使用的文章有很多&#xff0c;而且官方也有完整的文档&#xff0c;这里只是简单把自己使用记录写下来&#xff0c;方便以后查阅。 一个XML文档例子&…