ISP(五) RGB、YUV与YCbCr的概念详解

2023-11-18

一、概念

首先要说明RGB、YUV和YCbCr都是人为规定的彩色模型或颜色空间(有时也叫彩色系统或彩色空间)。它的用途是在某些标准下用通常可接受的方式对彩色加以描述。

1、RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色。但在科学研究一般不采用RGB颜色空间,因为它的细节难以进行数字化的调整。它将色调,亮度,饱和度三个量放在一起表示,很难分开。它是最通用的面向硬件的彩色模型。该模型用于彩色监视器和一大类彩色视频摄像。
RGB, R,G,B 都是 8bit unsigned类型,每个pixel需要 8x3=24 bits,
【red】0,0,255 【green】0,255,0 【blue】255,0,0 【white】255,255,255 【black】0,0,0
在这里插入图片描述

2、YUV:中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。

在 YUV空间中,每一个颜色有一个亮度信号 Y,和两个色度信号 U 和V。亮度信号是强度的感觉,它和色度信号断开,这样的话强度就可以在不影响颜色的情况下改变。YUV使用RGB的信息,但它从全彩色图像中产生一个黑白图像,然后提取出三个主要的颜色变成两个额外的信号来描述颜色。把这三个信号组合回来就可以产生一个全彩色图像。 Y 通道描述Luma 信号,它与亮度信号有一点点不同,值的范围介于亮和暗之间。 Luma 是黑白电视可以看到的信号。U (Cb) 和 V (Cr)通道从红 (U) 和蓝 (V) 中提取亮度值来减少颜色信息量。这些值可以从新组合来决定红,绿和蓝的混合信号。

YUV和RGB的转换:
Y = 0.299 R + 0.587 G + 0.114 B
U = -0.1687 R - 0.3313 G + 0.5 B + 128
V = 0.5 R - 0.4187 G - 0.0813 B + 128
R = Y + 1.402 (V-128)
G= Y - 0.34414 (U-128) - 0.71414 (V-128)
B= Y + 1.772 (U-128)
在这里插入图片描述

3、YCbCr 其实是YUV经过缩放和偏移的翻版。其中Y与YUV 中的Y含义一致,Cb,Cr 同样都指色彩,只是在表示方法上不同而已。YCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。可以参考下图对其进行理解:

YCbCr与RGB的相互转换
Y=0.299R+0.587G+0.114B
Cb=0.564(B-Y)
Cr=0.713(R-Y)
 R=Y+1.402Cr
 G=Y-0.344Cb-0.714Cr
B=Y+1.772Cb
在这里插入图片描述
Cr和Cb均以白雪为中间值; 棕色谷仓以弱Cb和强Cr为代表; 绿草以弱Cb和弱Cr为代表; 蓝天由强Cb和弱Cr代表。

二、YUV(YCbCr)采样格式

在YUV 家族中,YCbCr 是在计算机系统中应用最多的成员,其应用领域很广泛,JPEG、MPEG均采用此格式。一般人们所讲的YUV大多是指YCbCr。YCbCr 有许多取样格式,主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也就是Y值),每 2x2 个点保存一个 Cr 和Cb 值,图像在肉眼中的感觉不会起太大的变化。所以,原来用 RGB(R,G,B 都是 8bit unsigned) 模型,每个点需要 8x3=24 bits(如下图第一个图). 而仅需要 8+(8/4)+(8/4)=12bits,平均每个点占12bits。这样就把图像的数据压缩了一半。

上边仅给出了理论上的示例,在实际数据存储中是有可能是不同的,下面给出几种具体的存储形式:

(1) YUV 4:4:4

YUV三个信道的抽样率相同,因此在生成的图像里,每个象素的三个分量信息完整(每个分量通常8比特),经过8比特量化之后,未经压缩的每个像素占用3个字节。

下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3V3]
  存放的码流为: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3

(2) YUV 4:2:2

每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4:4的一半。对非压缩的8比特量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存(例如下面映射出的前两个像素点只需要Y0、Y1、U0、V1四个字节)。

下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3V3]
  存放的码流为: Y0 U0 Y1 V1 Y2 U2 Y3 V3
  映射出像素点为:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2V3]

(3) YUV 4:1:1

4:1:1的色度抽样,是在水平方向上对色度进行4:1抽样。对于低端用户和消费类产品这仍然是可以接受的。对非压缩的8比特量化的视频来说,每个由4个水平方向相邻的像素组成的宏像素需要占用6字节内存

下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3V3]
  存放的码流为: Y0 U0 Y1 Y2 V2 Y3
  映射出像素点为:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0V2]

(4)YUV4:2:0

4:2:0并不意味着只有Y,Cb而没有Cr分量。它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0…以此类推。对每个色度分量来说,水平方向和竖直方向的抽样率都是2:1,所以可以说色度的抽样率是4:1。对非压缩的8比特量化的视频来说,每个由2x2个2行2列相邻的像素组成的宏像素需要占用6字节内存。

下面八个像素为:

[Y0 U0 V0][Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

[Y5 U5 V5] [Y6 U6 V6] [Y7U7 V7] [Y8 U8 V8]

存放的码流为:

Y0 U0 Y1 Y2U2 Y3

Y5 V5 Y6 Y7 V7 Y8

映射出的像素点为:

[Y0 U0 V5][Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7]
[Y5 U0 V5][Y6 U0 V5] [Y7U2 V7] [Y8 U2 V7]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ISP(五) RGB、YUV与YCbCr的概念详解 的相关文章

  • 优酷iOS插件化页面架构方法

    Python实战社群 Java实战社群 长按识别下方二维码 按需求添加 扫码关注添加客服 进Python社群 扫码关注添加客服 进Java社群 作者 iOS一叶 来源 掘金 点击阅读原文查看作者更多文章 一 前言 随着业务不停地迭代 优酷
  • FFMPEG视音频编解码学习笔记

    文章转载自 http www jianshu com p 5c7bec29fdbd 一直对音视频这块比较感兴趣 但是一直不知道从何下手 终于找到了比较好的资料 希望通过接下来的时间好好研究一下FFMPEG相关的知识 这里感谢一下雷霄骅大神
  • ISP算法学习之LSC(镜头阴影校正)

    LSC Lens Shading Correction 是ISP算法中的一个重要组成部分 用于校正镜头遮挡 lens shading 现象 镜头遮挡是由于镜头和图像传感器的光学特性导致的图像亮度不均匀的现象 通常 图像的中心部分较亮 而边缘
  • ISP之LSC(Lens Shading Correction)

    LSC Lens Shading Correction即镜头暗影校正 一 LSC的意义 众所周知Lens Shading分为Luma Shading和Color Shading 一般来说 物体到Lens中心的距离越远 图像越暗 呈圆形中性对
  • STM32一键下载电路程序下载后不运行问题分析

    使用STM32常用的下载方法主要有以下几种 1 ISP程序下载 使用STM32的串口1进行程序下载 使用该方式下载需要使用USB转串口芯片 常用的芯片如CH340G 该方式的程序下载需要使用上位机FlyMcu 上位机的设置出错很容易导致程序
  • 【camera】【ISP】Lens Shading Correction镜头阴影校正

    ISP LSC 镜头阴影校正 参考 https zhuanlan zhihu com p 389334269 https blog csdn net xiaoyouck article details 77206505 https www
  • Retinex理论及算法学习

    为了能够获取最大的信息量 达到更好的图像增强效果 了解人类视觉系统的特性和图像的属性是准确地选择图像增强方法的必备知识 一 人眼视觉系统 1 人眼成像 人的眼睛是一个非常复杂的器官 一般来说它就是一个球体 平均直径约为20mm 内壁是一层视
  • ISP DSP的区别

    ISP 是Image Signal Processor 的简称 也就是图像信号处理器 而DSP是Digital Signal Processor 的缩写 也就是数字信号处理器 ISP一般用来处理Image Sensor 图像传感器 的输出数
  • ISP_matlab

    确定输入是否为结构体数组字段 MATLAB isfield MathWorks 中国 对话框打开文件 获取路径和文件名 file path uigetfile raw RAW fid fopen fullfile path file htt
  • 从mpeg ts文件中提取I帧(5):I帧的解码

    找到含有I帧的pes后就可以对其进行解码 对I帧的解码我们使用ffmpeg 这里用到的版本是3 0 0 一 pes解码为yuv ffmpeg一般都是这个套路 直接上代码 int ffdecode pes uint8 t pes data i
  • 将位图数组转换为 YUV (YCbCr NV21)

    如何转换返回的BitmapBitmapFactory decodeFile 转换为 YUV 格式 类似于相机 onPreviewFrame 以字节数组返回的形式 这是一些实际有效的代码 untested function byte getN
  • avcodec YUV 转 RGB

    我正在尝试使用 libswscale 将 YUV 帧转换为 RGB 这是我的代码 AVFrame RGBFrame SwsContext ConversionContext ConversionContext sws getCachedCo
  • 如何在Android中有效地实时操作YUV相机帧?

    我在从 Android 获取的 NV21 框架的感兴趣区域 中心 周围添加黑色 0 填充CameraPreview线程中的回调 为了避免转换为 RGB 位图和反向的开销 我尝试直接操作 NV21 字节数组 但这涉及嵌套循环 这也会使预览 处
  • 将 YUV420SP 转换为 YUV420P

    如何使用 ffmpeg sws scale 或其他有效方法将 YUV420SP 转换为 YUV420P 如果您使用 ffmpeg 中的 swscale lib 以下代码可能会对您有所帮助 static struct SwsContext s
  • 从 TangoService_connectOnFrameAvailable 保存帧

    如何通过 TangoService connectOnFrameAvailable 保存帧并在我的计算机上正确显示它 作为此参考页 https developers google com project tango apis c struc
  • 使用 gstreamer 将 YUVj420p 像素格式转换为 RGB888

    我使用 gstreamer 1 2 将帧从我的 IP 摄像头馈送到 opencv 程序 流是 640 368 YUVj420p 我想将其转换为RBG888以便能够在我的opencv程序中使用它 那么有没有办法使用 gstreamer 来进行
  • 将 YUY2 转换为 YV12

    我几乎可以肯定 这比我想象的要简单得多 但我在互联网上搜索的时间比我愿意承认的要长得多 试图找出冰箱如何转换这两种格式 我能够从无符号字节流 无符号字符 中提取 Y0 Cb Y1 Cr 数据 但我不知道这些字节是如何排列的YV12 http
  • 在C/C++中编写YUV图像帧的问题

    我正在尝试将从 OpenGL glReadPixels 获取的 RGB 帧转换为 YUV 帧 并将 YUV 帧写入文件 yuv 后来我想将其写入命名管道作为 FFMPEG 的输入 但现在我只想将其写入文件并使用 YUV 图像查看器查看图像结
  • 一次对多个 YuvImage 使用 compresstojpeg 时内存不足

    我正在构建一个缓冲应用程序N相机帧 当用户点击按钮时 它会使用所有保存的帧应用效果来保存照片 我正在保存照片并在异步任务 当我执行它时 我会从屏幕上删除所有内容 只留下一个TextView显示保存照片的进度 目前异步任务 doInBackg
  • 什么是 YUV 格式? (从一个不会玩的初学者的角度来看)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 视频质量指标称为VMAF https github com Netflix vmaf由 Netflix 评估 YUV 格式的视频 但什么是

随机推荐

  • mobaxterm设置中文界面显示_Adobe系列2020如何更改界面显示语言

    关于这个问题 网上有很多教程 最近几年版本的Adobe全家桶将界面显示语言设置放在了 AMT 文件夹下的 application xml 文件内 但我照着这些方法找了半天 发现application xml文件里根本就没有 zh CN 或
  • 目标检测之YOLOv1算法分析

    网络结构 卷积层 池化层 全连接层 输入 448 448 448 448 448 448大小的图片 输出 7 7
  • 王垠

    4 相关链接 王垠的Email shredderyin gmail com 王垠的自建博客 http www yinwang org 王垠的新浪博客 http blog sina com cn yinwang0 知乎上的 王垠 话题 htt
  • Windows脚本导入导出Mongodb数据库文件实现备份与恢复

    导出指定时间范围的数据 echo off setlocal rem 提前将MongoDB安装的bin路径加到系统环境变量PATH里面 方便直接运行mongodump命令 if not exist D MongoDB backup goto
  • js 原生导出 excel 文件

    const data name 张三 age 18 name 李四 age 20 const list 名字 t年龄 data map i gt i name t i age const blob new Blob list join n
  • quartz石英任务

    定时任务 quartz 的几大核心概念 Job 任务 我们需要完成的事情 要炸大本营 JobDetail 任务详情 任务怎么做 谁来做 执行任务需要的对象 数据信息等 张三 50吨TNT quartz 为了并发执行 Job 定义任务怎么执行
  • 安川服务器显示fn001,安川伺服辅助功能参数一览表

    辅助功能一览表 监视模式一览表 用户参数一览表 报警显示一览表 辅助功能一览表 Fn000 显示警报追踪备份数据 Fn001 设定在线自动调谐时的刚性 Fn002 微动 JOD 模式运行 Fn003 原点检索模式 Fn004 预约参数 请勿
  • Out of memory error on GPU 0. Cannot allocate xxxGB memory on GPU 0, available memory is only xxx

    本人刚刚入手cv 见解浅陋 如有不对请多多包含 根据从网上查找的资料 遇到这种情况一般有以下几种解决方法 1 在程序运行的前面添加如下代码 os environ FLAGS eager delete tensor gb 0 0 但是对我好像
  • 你也可以构建私有区块链网络

    这是我如何构建私有区块链网络的一篇文章 你也可以 没有什么比自己构建区块链更能帮助理解区块链了 以下是我们将在这篇文章中完成的内容 下图我们以前可能见过 但基本上以太坊区块链网络只是很多EVM 以太坊虚拟机 或连接到每个其他节点的 节点 来
  • DDcGAN:用于多分辨率图像融合的双判别器生成对抗网络

    目录 论文下载地址 代码下载地址 论文作者 模型讲解 背景介绍 论文解读 DDcGAN总体结构 损失函数 网络具体结构 生成器 判别器 医学影像的融合 结果分析 数据集以及参数设置 训练细节 评估指标 红外与可见光图像融合的结果与分析 对比
  • 2023安徽省“中银杯”职业技能大赛“网络安全” 项目比赛任务书

    2023安徽省 中银杯 职业技能大赛 网络安全 项目比赛任务书 2023安徽省 中银杯 职业技能大赛 网络安全 项目比赛任务书 A模块基础设施设置 安全加固 200分 A 1 登录安全加固 Windows Linux A 2 Nginx安全
  • 论文纠错(一)

    说说最近读的几篇论文的问题 果然有的论文还是不能细细地去读 一读就发现有问题 第一个是MSPCA里面的公式 7 到公式 8 那个Sr前面的2是不应该有的 也就是推导的时候出错了 第二个是GPUTENSOR里面的Gpu product的算法
  • BeyondCompare4破解

    转自 跳不出循环了 原文链接 https blog csdn net weixin 39298366 article details 84390224 将以下操作保存为bat文件 然后双击运行即可 reg delete HKEY CURRE
  • Flask数据库插件安装与配置教程

    Flask数据库插件安装与配置教程 数据插件安装 Flask使用数据库之前需要在python中安装额外的插件 这里主要用到Flask script 命令扩展解释器 PyMySQL 数据库驱动 Flask SQLAchemy ORM映射 和F
  • 【python实现网络爬虫22】唯品会商品信息实战步骤详解

    唯品会商品信息实战 1 目标网址和页面解析 2 爬虫初探 3 爬虫实操 3 1 进行商品id信息的爬取 3 2 商品id数据url构造 3 3 商品id数据格式转化及数量验证 3 4 商品详细信息获取 4 全部代码 手动反爬虫 原博地址 知
  • 可以用filament的示例material_sandbox来调整obj的pbr渲染参数,也有个gltf_viewer读取gltf模型

    如题 说不准以后导出文件就不用cesiumlab了 具体待查
  • 编程获取图像中的圆半径

    版权声明 本文为博主原创文章 转载请在显著位置标明本文出处以及作者网名 未经作者允许不得用于商业目的 即将推出EmguCV的教程 请大家还稍作等待 之前网友咨询如何获得图像中圆形的半径 其中有两个十字作为标定 十字之间距离为100mm 如下
  • 【每日运维】U盘启动盘安装 ESXi 6.7.0 安装卡在 loading /bnxtroce.v00

    问题描述 ESXi 6 7 0 安装进度卡在loading bnxtroce v00 进度处 处理方法 重新制作启动盘 写入方式改为 USB ZIP v2 设置服务器的 bios设置 启动方式改为 UEFI 重启开机安装即可
  • 打印数字三角及蛇形矩阵(C语言)

    题目描述 从键盘输入N 输出如下图所示的N行的数字三角 例如 N 5 那么输出如下 输入格式 输入一个整数N 1 lt N lt 45 输出格式 输出如题所示的数字三角形 为了输出美观 每个数字栈5个字符位 右对齐 即 5d 解题的思路 1
  • ISP(五) RGB、YUV与YCbCr的概念详解

    一 概念 首先要说明RGB YUV和YCbCr都是人为规定的彩色模型或颜色空间 有时也叫彩色系统或彩色空间 它的用途是在某些标准下用通常可接受的方式对彩色加以描述 1 RGB 红绿蓝 是依据人眼识别的颜色定义出的空间 可表示大部分颜色 但在