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

RGB转YCbCr422_BT709颜色空间转换仿真相关推荐

  1. RGB和CIELAB颜色空间转换及偏色检测

    RGB转为CIELAB 首先RGB是不可以直接转为CIELAB颜色空间的,RGB需要先转为CIEXYZ颜色空间,然后再由CIEXYZ颜色空间转为CIELAB颜色空间.关于这2个颜色空间的互转,主要参考 ...

  2. 【Pytorch】rgb转lab颜色空间转换

    最近有需要,自己按照opencv实现的方式,自测! 个别tensor,numpy互转参考:https://oldpan.me/archives/pytorch-tensor-image-transfo ...

  3. Opencv的RGB到HSV颜色空间转换

    从 RGB 到 HSL 或 HSV 的转换 设 (r, g, b) 分别是一个颜色的红.绿和蓝坐标,它们的值是在 0 到 1 之间的实数.设 max 等价于 r, g 和 b 中的最大者.设 min ...

  4. 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  ...

  5. RGB和YCbCr颜色空间的转换及优化算法

    RGB和YCbCr颜色空间转换和优化 转载于颜色空间系列3: RGB和YCbCr颜色空间的转换及优化算法 在常用的几种颜色空间中,YCbCr颜色空间在学术论文中出现的频率是相当高的,常用于肤色检测等等 ...

  6. 基于matlab的RGB到YCbCr颜色空间的转换

    在matlab中,图像处理工具箱会将彩色图像当做RGB图像或者索引图像来处理.除了这两种颜色空间外还有其他一些以RGB模型为基础的颜色空间,如常见的YCbCr.HSV.HSI颜色空间等.这里只讲图像从 ...

  7. 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图

    一. 使用cvCvtColor函数将RGB颜色空间转换到HSV颜色空间 所需函数: 1.cvCvtColor 函数功能:颜色空间转换 函数原型: void cvCvtColor( const CvAr ...

  8. FFmpeg入门详解之121:颜色空间转换RGB和YUV的原理与实战

    5.颜色空间转换RGB和YUV的原理与实战 三种颜色空间模型:RGB.YUV.HSV 一.概述 颜色通常用三个独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间. 但被描述 ...

  9. RGB与Lab颜色空间互相转换

    RGB与Lab颜色空间互相转换 1.Lab颜色空间 同RGB颜色空间相比(见博客<光与色的故事--颜色空间浅析>),Lab是一种不常用的色彩空间.它是在1931年国际照明委员会(CIE)制 ...

  10. 【颜色空间转换大集合】RGB到YIQ,RGB到HSI和HSI到RGB,RGB到YcbCr,RGB到XYZ颜色转换matlab代码的Demo,含详细的解释

    废话不说,先上图, 实现方式:matlab 实现功能: 实验目标 了解图像颜色空间的转换关系. 了解图像的文件结构. 实验内容 完成如下颜色空间的转换.(4 Points) RGB -> YIQ ...

最新文章

  1. linux 安装输入法
  2. *HDU 2108 计算几何
  3. WPF: RenderTransform特效
  4. Spring+SpringMVC+Log4J
  5. android小程序源代码_我从 Android 转到微信小程序的思考
  6. admin select 2 异步_解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
  7. axure命令行_Axure变量详解
  8. 编程新手选择开发语言的注意事项
  9. 洛谷P1333 瑞瑞的木棍(欧拉回路)
  10. 了解一下JAVA中的NIO模块
  11. linux中程序定时重启脚本,linux 程序定时重启脚本
  12. 计算机考研复试面试系列 计算机专业英语篇
  13. 数据挖掘之大数据流处理
  14. 14-CompletableFuture异步编排
  15. [受限玻尔兹曼机] 原理、求解过程推导、深度信念网络
  16. 《算法图解》学习笔记(九):动态规划(附代码)
  17. VM虚拟机Ubuntu配置静态ip,亲测有效
  18. Win32 SDK 访问数据库
  19. 基于Docker的Confluence安装
  20. 音乐播放器从0到读取手机内的音乐文件——Android Studio小白实训笔记

热门文章

  1. java web在线购物_JAVAWEB网上商城购物系统
  2. 基于springboot的房屋租赁系统
  3. xshell官方个人免费版申请下载使用
  4. 用C语言如何编程一道选择题,使用C语言编写一道简单的编程题
  5. 2021最新15个App跨平台开发框架
  6. 【易语言界面开发系列教程之 (EX_UI使用系列教程--第10讲(EXui右键菜单演示案例))】
  7. vivo和OPPO手机刷机
  8. PuTTY/PuttyGen介绍
  9. 怎么用计算机按反三角函数图像及性质,反三角函数图像及性质
  10. 未来教育考试系统V4.0——安装后双击打不开