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优化的一项基础工作,它直接影响到网站的可见性和流量。通过运用智能算法,企业能…

一个可自由添加so动态库的框架

有文件描述符的队列原型 #include <iostream> #include <queue> #include <mutex> #include <sys/epoll.h> #include <sys/eventfd.h> #include <thread> #include <unistd.h> #include <vector> #include <optional>t…

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

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

第二十二章 TCP 客户端 服务器通信 - TCP设备的OPEN和USE命令关键字

文章目录 第二十二章 TCP 客户端 服务器通信 - TCP设备的OPEN和USE命令关键字TCP设备的OPEN和USE命令关键字TCP设备的OPEN和USE命令关键字 第二十二章 TCP 客户端 服务器通信 - TCP设备的OPEN和USE命令关键字 TCP设备的OPEN和USE命令关键字 可以使用位置参数(如上所述)或关键…

React面试高频核心问题

基础部分 React的核心特性是什么&#xff1f; 组件化&#xff08;基于组件&#xff09;单向数据流&#xff08;单向数据流&#xff09;虚拟 DOM&#xff08;Virtual DOM&#xff09;JSX&#xff08;JavaScript XML&#xff09; React的生命周期方法有哪些&#xff1f; React 16…

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

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

【网络安全面经】OSI七层模型每层都有什么协议

1. 物理层 协议举例&#xff1a; IEEE802.3&#xff08;以太网&#xff09;&#xff1a;它定义了在局域网&#xff08;LAN&#xff09;中使用的有线连接标准。例如&#xff0c;在办公室的有线网络环境中&#xff0c;计算机通过以太网线连接到交换机&#xff0c;就是基于IEEE80…

Spring:IoC/DI加载properties文件

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

时钟之CSS+JS版

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

浪潮服务器(BMC)监控易监测指标解读

监控易是一款功能全面的IT基础设施监控软件&#xff0c;它能够对各类IT硬件设备进行实时监控&#xff0c;确保系统的稳定运行。在本次解读中&#xff0c;我们将重点关注监控易对浪潮服务器&#xff08;BMC&#xff09;的监测指标&#xff0c;以便更好地了解服务器的运行状态。 …

云计算虚拟化-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上分别配置两个…