RGB与YCbCr转换算法

目录

  • RGB与YCbCr转换算法
    • RGB与YCbCr色域介绍
      • RGB模型
      • YCbCr色域
        • 简介
        • YCbCr的应用
        • YUV 和 YCbCr 的区别
    • 色彩转换公式
  • RGB 转 YCbCr 实现
    • RGB 转 YCbCr 的 Matlab 实现
    • RGB 转 YCbCr 的 FPGA 实现
  • YCbCr 转 RGB 实现
    • YCbCr 转 RGB 的 Matlab 实现
    • YCbCr 转 RGB 的 FPGA 实现

RGB与YCbCr转换算法

RGB与YCbCr色域介绍

RGB模型

为了研究RGB模型,我们需要从光线的底层物理组成开始分析。光也属于电磁波,有着同样的特性,电磁波光谱图。

在这里插入图片描述

在电磁波波段中,400-700nm范围内为可见光波段,即人眼可见的光,大自然的色彩均是由可见光组成的。

在这里插入图片描述

红、绿、蓝三色被称为三原色。

在这里插入图片描述

饱和度均为100%的RGB能组合8种颜色,那么当RGB饱和度在0~100%(色彩深度)变化时,就能细分组合出更多的颜色。计算机处理的BMP图片为24bit的位图,即每一通道的颜色可以细分为28=256级别(RGB888),每一通道的色彩分辨率能达到256级,总共能综合出的颜色种类计算如下:

R的种类xG的种类xB的种类 = 28 x 28 x 28 = 16777216 ≈ 1600万

YCbCr色域

简介

YCbCr 由Y(Luminance)、Cb(Chrominance-Blue)和 Cr(Chrominance-Red)组成,其中 Y 表示颜色的明亮度和浓度,Cb 和 Cr 则分别表示颜色的蓝色浓度偏移量和红色浓度偏移量。

医学研究证明,人眼对视频的 Y 信号分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到图像质量的变化。如果只有 Y 信号分量,而没有 U、V信号分量,那么表示的图像就是黑白灰度图像。

YCbCr 格式可以细分成两种格式:tv range 格式与 full range 格式,主要区别如下:

  • tv range 格式

    Y ∈ [16,235],Cb,Cr ∈ [16,240],主要是广播电视采用的数字标准。

  • full range 格式

    Y,Cb,Cr ∈ [0,255],主要是 PC 端采用的标准,所以也称为 pc range 格式。

YCbCr的应用
  1. HDMI、DP等接口,UVC、BT656/709/1120等协议,都可以采用YCbCr格式进行传输,(YCbCr422/420 有效降低了传输带宽);
  2. 不管是H.264还是AVS、JPEG、MJPEG等格式,都采用YUV格式进行编码压缩;
  3. 很多机器视觉、图像处理、检测识别算法,不关注色彩,只需要在灰度域处理即可。
YUV 和 YCbCr 的区别
  • YUV 是一种模拟信号,其色彩模型源于 RGB 模型,即亮度与色度分离,适合图像算法的处理,常应用于模拟广播电视中,其中 Y ∈ [0,1],U,V∈[-0.5,0.5]
  • YCbCr 是一种数字信号,其色彩模型源于 YUV 颜色模型,是 YUV 压缩和偏移的版本(所谓偏移就是从 [-0.5,0.5] 偏移到 [0,1],因此计算的时候会加 128),在数字视频领域应用广泛,JPEG、MPEG、H.264/5、AVS等都采用 YCbCr 格式。我们通常广义讲的 YUV ,严格讲就是 YCbCr。

色彩转换公式

在进行颜色转换之前,需要明确 YCbCr 的格式范围,否则会导致偏色。

在这里插入图片描述

另外,图像传感器可以配置输出 RGB/YCbCr 格式图像,对应的手册一般也会给出转换公式,在 VO7725图像传感器手册中,RGB 与 YCbCr 的转换关系如下所示:

在这里插入图片描述

与前面介绍的 full range 格式下的转换公式比较还是有略微差别。

RGB 转 YCbCr 实现

RGB 转 YCbCr 的 Matlab 实现

  1. 读取图像

在这里插入图片描述

  1. 转换公式参数化设计

在这里插入图片描述

  1. 生成仿真测试源文件和验证文件

在这里插入图片描述

RGB 转 YCbCr 的 FPGA 实现

  • 流水线延迟3个时钟周期

  • 封装成 IP 例化界面如下所示:

在这里插入图片描述

YCbCr 转 RGB 实现

YCbCr 转 RGB 的 Matlab 实现

YCbCr 转 RGB 的 FPGA 实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/60960.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇

WebRTC视频 01 - 视频采集整体架构 WebRTC视频 02 - 视频采集类 VideoCaptureModule WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇 WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇(本文) WebRTC视频 05 - 视频采集类 VideoCaptureDS 下篇 一、前言…

MAC上的Office三件套报53错误解决方案(随笔记)

目录 现象原因解决方式1. 可视化2. 命令行 参考链接 现象 最近Mac Mini M4非常热门,我也种草买了一台丐中丐版本来体验一下。 在安装Office三件套后,遇到了一个53的错误: Run-time error 53:File not found: Library/Application Support/A…

人工智能与SEO优化中的关键词策略解析

内容概要 在当今数字化快速发展的时代,人工智能(AI)与搜索引擎优化(SEO)的结合正变得愈发重要。关键词策略是SEO优化的一项基础工作,它直接影响到网站的可见性和流量。通过运用智能算法,企业能…

【数据库】如何保证数据库迁移过程中数据的一致性?

在数据库迁移过程中,保证数据的一致性是非常重要的,尤其是在涉及到多个表、多个数据库或分布式系统的情况下。以下是一些确保数据一致性的最佳实践和方法: 1. 备份数据 在开始迁移之前,进行全面的数据备份是确保数据一致性的第…

Kubernetes 10 问,测测你对 k8s 的理解程度

Kubernetes 10 问 假设集群有 2 个 node 节点,其中一个有 pod,另一个则没有,那么新的 pod 会被调度到哪个节点上? 应用程序通过容器的形式运行,如果 OOM(Out-of-Memory)了,是容器重…

Spring:IoC/DI加载properties文件

Spring框架可以通过Spring的配置文件完成两个数据源druid和C3P0的配置(Spring:IOC/DI配置管理第三方bean),但是其中包含了一些问题,我们来分析下: 这两个数据源中都使用到了一些固定的常量如数据库连接四要素&#xf…

时钟之CSS+JS版

写在前面 此版本绘制的时钟基于CSSJS模式。 优点操作简单&#xff0c;缺点当然是不够灵活。下一篇会基于HTML5的canvas标签&#xff0c;使用JS绘制。会更灵活&#xff0c;元素更加丰富。 HTML代码 <div class"box"><article class"clock"><…

云计算虚拟化-kvm创建虚拟机

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 虚拟化&#xff0c;简单来说就是把一台服务器/PC电脑&#xff0c;虚拟成多台独立的虚拟机&#xff0c;每台虚拟机之间相互隔…

<QNAP 453D QTS-5.x> 日志记录:在 Docker 中运行的 Flask 应用安装 自签名 SSL 证书 解决 Chrome 等浏览器证书安全

原因&#xff1a;Chrome 不信任 ssc 证书 使启用了 HTTPS&#xff0c;即使有使用 自签名证书 (self-signed certificate 非由可信的证书颁发机构 【CA&#xff0c;Certificate Authority】签发的&#xff09;。浏览器 Chrome 默认不信任自签名证书&#xff0c;也会报 NET::ERR_…

模板——实现泛型编程的有力武器

模板——实现泛型编程的有力武器 我们为什么需要模板&#xff1f;模板 前言&#xff1a;关于模板&#xff0c;相信大家都有所而闻&#xff0c;以下是我对C模板的个人看法&#xff0c;希望能够帮助到你们呀&#xff01; 我们为什么需要模板&#xff1f; 请到大家看这一段代码&a…

针对git、giteeVSCode连接的使用 || Live Share插件使用

1.下载git 链接 打开终端&#xff0c;桌面鼠标右键 2.配置密钥 登录gitee。 设置密钥 查看官方文档 跟着教程 复制最后的输出进行密钥添加 验证是否添加成功 3.创建&连接远程仓库 创建仓库 git终端进行配置 远程仓库克隆到本地 桌面终端clone,克隆他人|自己的仓库到本地…

OpenGL ES 文字渲染进阶--渲染中文字体

旧文 OpenGL ES 文字渲染方式有几种? 一文中分别介绍了 OpenGL 利用 Canvas 和 FreeType 绘制文字的方法。 无论采用哪种方式进行渲染,本质上原理都是纹理贴图:将带有文字的图像上传到纹理,然后进行贴图。 渲染中文字体 利用 Canvas 绘制中文字体和绘制其他字体在操作方式上…

c# 调用c++ 的dll 出现找不到函数入口点

今天在调用一个设备的dll文件时遇到了一点波折&#xff0c;因为多c 不熟悉&#xff0c;调用过程张出现了找不到函数入口点&#xff0c;一般我们使用c# 调用c 文件&#xff0c;还是比较简单。 [DllImport("AtnDll2.dll",CharSet CharSet.Ansi)]public static extern …

贴代码框架PasteForm特性介绍之markdown和richtext

简介 PasteForm是贴代码推出的 “新一代CRUD” &#xff0c;基于ABPvNext&#xff0c;目的是通过对Dto的特性的标注&#xff0c;从而实现管理端的统一UI&#xff0c;借助于配套的PasteBuilder代码生成器&#xff0c;你可以快速的为自己的项目构建后台管理端&#xff01;目前管…

【H3C华三 】VRRP与BFD、Track联动配置案例

原创 厦门微思网络 组网需求 如图1所示&#xff0c;区域A和区域B用户所在网络的出口处部署了两台汇聚层设备&#xff08;Device A和Device B&#xff09;。 现要求使用VRRP与BFD、Track联动功能&#xff0c;实现以下需求&#xff1a; • 在Device A和Device B上分别配置两个…

【ubuntu18.04】vm虚拟机复制粘贴键不能用-最后无奈换版本

我是ubuntu16版本的 之前费老大劲安装的vmware tools结果不能用 我又卸载掉&#xff0c;安装了open-vm-tools 首先删除VMware tools sudo vmware-uninstall-tools.pl sudo rm -rf /usr/lib/vmware-tools sudo apt-get autoremove open-vm-tools --purge再下载open-vm-tools s…

机器学习-37-对ML的思考之机器学习发展的三个阶段和驱动AI发展三驾马车的由来

文章目录 1 引言2 机器学习发展的三个阶段2.1 萌芽期(20世纪50年代)2.1.1 达特茅斯会议(人工智能诞生)2.1.2 机器学习名称的由来2.2 知识期(20世纪80年代)2.2.1 知识瓶颈问题2.2.2 机器学习顶级会议ICML2.2.3 Machine Learning创刊2.2.4 神经网络规则抽取2.3 算法期(20世纪90年…

【景观生态学实验】实验二 景观类型分类

实验目的 1.掌握ArcGIS软件的基本操作&#xff1a;通过课堂理论学习与实验课的实际动手操作&#xff0c;学习并熟练掌握如何利用ArcGIS软件对遥感影像进行一些较为基础的数据处理与分析工作&#xff0c;具体包括波段合成、图像镶嵌、图像裁剪与图像分类等&#xff1b; 2.熟悉…

GPT-5 要来了:抢先了解其创新突破

Microsoft 的工程师计划于 2024 年 11 月在 Azure 上部署 Orion (GPT-5)。虽然这一版本不会向公众开放&#xff0c;但其上线被视为人工智能领域的一个重要里程碑&#xff0c;并将产生深远的影响。 文章目录 GPT-5 真的要来了GPT-4 的局限性GPT-5 的创新突破与遗留挑战GPT-5 预期…

web与网络编程

使用HTTP协议访问Web 通过发送请求获取服务器资源的Web浏览器等&#xff0c;被成为客户端(client)。 Web使用一种名为HTTP(超文本传输协议)的协议作为规范&#xff0c;完成从客户端到服务器端等一系列运作流程。 可以说&#xff0c;Web时建立在HTTP协议上通信的。 网络基础T…