RGBYUV图像视频格式
一、参考资料
对于YUV420sp格式图像的copy and paste
RGB 与YUV颜色模型及存储格式
二、相关介绍
2.1 问题引入
OpenCV中如果是单通道或者三通道一样的大的图像,直接使用 copyTo()
函数即可。对于yuv420的图像则不是适用。
2.2 色彩空间
定义色彩空间时,通常使用 CIELAB 或者 CIEXYZ 色彩空间作为参考标准。这两个色彩空间在设计时便要求包含普通人眼可见的所有颜色。
由于“色彩空间”有着固定的色彩模型和映射函数组合,非正式场合下,色彩空间也被用来指代色彩模型,这样的用法严格意义上是错误的。
三、RGB色彩空间
RGB色彩空间中的一种颜色是由红、绿、蓝光构成。由R、G、B三个分量组成。RGB颜色分量是跟设备相关的,不论是采集还是显示。
在摄像头采集中,每个像素的颜色分量不仅取决于场景的颜色和光照,还取决于测量红、绿蓝分量的滤波器的光谱效应。
在屏幕显示中,实际显示出来的颜色取决于显示器中红、绿、蓝光源的光谱。(所以,根据所使用的波长不同,可以有许多不同的RGB色彩空间。)
标准的RGB是24bit的,即每个分量8bit。考虑到带宽限制,也有16bit的RGB,R和B用5bit表示,G用6bit表示(因为人眼对绿色更敏感)。从16bit转到24bitRGB,不是添加0,而是添加2位(G)或3位(R、B)最高有效位。
常见的RGB格式有RGB888,RGB565,RGB555,RGB24,RGB32(每个分量8比特,剩余8位空着),ARGB32(每个分量8比特,Alpha通道值8bit)等。
- RGB的存储格式通常为BGRBGRBGR的顺序。
- Bitmap就是在RGB像素数据上加上数据头形成的文件格式。
sRGB
为了克服RGB 的设备依赖性,人们又定义了一种不依赖上设备的sRGB,添加了光强与颜色分量数值之间的分线性γ映射。从RGB转换到sRGB,就是在色彩向量上乘以一个设备相关的红、绿、蓝光谱特性的3x3矩阵。这个变换由标定决定。
四、YUV
YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL,Phase Alternation Line)。(YIQ用于NTSC彩色电视制式,YUV用于PAL制和SECAM彩色电视制式,而YCrCb用于计算机用的显示器。)
Y代表亮度(Luma,Luminance),也即灰度值;UV代表色度(Chroma,Chrominance),作用是描述影像色彩及饱和度,用于指定像素的颜色。YUV完全由RGB推导而来,亮度分量Y是RGB分量的组合,颜色分量由差分B-Y,R-Y提供。
严格来说,YUV是一种模拟表示,相应的数字表示为YCbCr。
4.1 YUV与YCbCr
一般人们所讲的YUV大多是指YCbCr。对于YCbCr,其中Y与YUV 中的Y含义一致,Cb , Cr 同样都指色彩,,只是在表示方法上有所不同,Cb、Cr 就是本来理论上的“分量/色差”的标识。C代表分量(是component的缩写)Cr、Cb分别对应r(红)、b(蓝)分量信号,Y除了g(绿)分量信号,还叠加了亮度信号。
4.2 RGB与YUV互相转换
4.3 YCrCb与YCbCr
YCrCb颜色空间是由YUV颜色空间派生的一种颜色空间。YCbCr是在世界数字组织视频标准研制过程中作为ITU-R BT.601建议的一部分,其实是YUV经过缩放和偏移的翻版。YCrCb中的Y与YUV中的Y含义一致,Cb、Cr同样都指色彩,只是在表示方法上不同。在YUV家族中,YCbCr是在计算机系统中应用最多的成员,其应用领域很广泛,JPEG、MPEG均采用此格式。
4.4 YUV特点
- YUV一种颜色编码方法,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样 可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容性问题。
- YUV不像RGB那样要求三个独立的视频信号同时传 输,所以用YUV方式传送占用极少的频宽。
4.5 YUV(YCbCr)优点
- 减少通道之间的相关性。可以方便的对色彩进行阈值处理;
- 简化了彩色图像的增强,例如对比度增强只需要在图像的Y分量上执行;
- 可以对亮度和色彩进行不同策略的噪声去除等。
4.6 YUV缺点
- 转化是RGB坐标系的旋转,需要浮点或者定点乘法来执行;
- 缩放系数的选择必须保证每个RGB组合具有一个有效的YCbCr表示,可是逆变换是非真的,有些YCbCr组合落在RGB的有效范围之外,如果需要计算逆变换,那么意味着YCbCr需要更多位表示。
4.7 YUV采样格式
YUV444
无压缩,YUV三个信道的采样率相同,三个分量信息完整(通常为8bit)。每个Y独享一对UV分量。每个像素3字节。
原始像素:[Y0 U0 V0][ Y1 U1 V1][ Y2 U2 V2]
码流:Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
YUV422
2:1的水平取样,垂直完全采样。每两个Y共用一组UV分量。每个像素2字节。
原始像素:[Y0 U0 V0][ Y1 U1 V1][ Y2 U2 V2]
码流:Y0 U0 Y1 V1 Y2 U2 Y3 V3
得到的像素:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]
YUV411
4:1的水平取样,垂直完全采样。每四个Y共用一组UV分量。每个像素
8+(8/4)+(8/4)=12bits,1.5个字节。
原始像素:[Y0 U0 V0][ Y1 U1 V1][ Y2 U2 V2]
码流:Y0 U0 Y1 Y2 V2 Y3
得到的像素:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]
YUV420
2:1的水平取样,垂直2:1采样。每四个Y共用一组UV分量。每个像素12bit,采样方式不一样了。
原始像素:
[Y0 U0 V0][ Y1 U1 V1][ Y2 U2 V2] [Y3 U3 V3]
[Y5 U5 V5] [Y6 U6 V6] [Y7 U7 V7] [Y8 U8 V8]
码流:
Y0 U0 Y1 Y2 U2 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]
下图中,以黑点表示采样该像素点的Y分量,以空心圆圈表示采样该像素点的UV分量。
YUV420比较常用。U = Y / 4 V = Y / 4
,所以YUV420 数据在内存中的长度是 width * height * 3 / 2
。
4.8 YUV存储格式
YUV存储格式与YUV采样的方式密切相关,主流的采样方式有三 种,YUV4:4:4,YUV4:2:2,YUV4:2:0。
打包格式(packed formats):每个像素点的Y,U,V是连续交叉存储的。将YUV分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel),和RGB的存放方式类似,在这种格式下每个像素点的YUV数据混合放在一个矩阵中。
平面格式(planar formats):先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。使用三个数组分开存放YUV三个分量,就像是一个三维平面一样。其中Y为width*height
,而U、V合占Y的一半。
YUV420中,一些特殊的存储格式:
YUV420p,planer模式,Y、U、V分别位于不同平面。按U、V存储顺序不同,可以分为
YV12:YYYYVVVUUU
YU12:YYYYUUUVVV,又叫****I420。
YUV420p的YU12存储格式如下:
YUV420sp,bi-planer或者two-planer双平面,Y在一个平面,UV在同一个平面交叉存储。
NV12:YYYYUVUVUV
NV21**:**YYYYVUVUVU,安卓相机标准图片格式
YUV420sp的NV12存储格式如下:
4.9 RGB与YUV互相转换(OpenCV)
RGB、YUV420p、YUV420sp之间的互相转换(C++)
使用cvtColor函数,在imgproc模块的types_c.h中查看转换代码:
RGB与YUV444互转
CV_BGR2YCrCb =36,
CV_RGB2YCrCb =37,
CV_YCrCb2BGR =38,
CV_YCrCb2RGB =39,
RGB转YUV420p的YU12
CV_RGB2YUV_I420 = 127,
CV_BGR2YUV_I420 = 128,
CV_RGB2YUV_IYUV = CV_RGB2YUV_I420,
CV_BGR2YUV_IYUV = CV_BGR2YUV_I420,
RGB转YUV420p的YV12
CV_RGB2YUV_YV12 = 131,
CV_BGR2YUV_YV12 = 132,
YUV420p转RGB
CV_YUV2RGB_YV12 = 98,
CV_YUV2BGR_YV12 = 99,
CV_YUV2RGB_IYUV = 100,
CV_YUV2BGR_IYUV = 101,
CV_YUV2RGB_I420 = CV_YUV2RGB_IYUV,
CV_YUV2BGR_I420 = CV_YUV2BGR_IYUV,
CV_YUV420p2RGB = CV_YUV2RGB_YV12,
CV_YUV420p2BGR = CV_YUV2BGR_YV12,
YUV420sp转RGB
CV_YUV2RGB_NV12 = 90,
CV_YUV2BGR_NV12 = 91,
CV_YUV2RGB_NV21 = 92,
CV_YUV2BGR_NV21 = 93,
CV_YUV420sp2RGB = CV_YUV2RGB_NV21,
CV_YUV420sp2BGR = CV_YUV2BGR_NV21,
RGB转YUV420sp
OpenCV没有RGB直接转YUV420sp的函数。
RGBYUV图像视频格式相关推荐
- 视频格式基础知识:让你了解MKV、MP4、H.265、码率、色深等
本教程将分以下模块详细叙述: 1.封装格式(MP4/MKV-) vs 媒体格式(H.264/FLAC/AAC-) 2.视频的基础参数:分辨率,帧率和码率 3.图像的表示方法:RGB模型 vs YUV ...
- 视频格式基础知识:让你了解MKV、MP4、H.265、码率、色深等等.
http://www.4k123.com/thread-8194-1-1.html 本教程意在讲述一些视频音频的基础知识和术语.它可以比较详细的回答以下常见的问题: . MP4/MKV这些格式有什么区 ...
- 【opencv】(1) 基础操作:图像视频读取、图像截取、颜色通道
主要内容有:图像及视频的读取和保存.图像显示.转换灰度图.图像截取.颜色通道提取和组合 那我们开始吧. 1. 图像操作 首先我们导入opencv库,彩色图像一般都是由RGB(红绿蓝)三颜色通道构成,灰 ...
- 转:YUV RGB 常见视频格式解析
转: http://www.cnblogs.com/qinjunni/archive/2012/02/23/2364446.html YUV RGB 常见视频格式解析 I420是YUV格式的一种,而Y ...
- php视频格式转换---------ffmpeg-php扩展与ffmpeg.exe安装与使用
HP转换视频格式这个问题, 找了一下午的ffmpeg-php扩展的安装与使用方法,都是千篇一律转载的. 下面是我整理的步骤,希望能帮助大家这个问题. 1.下载ffmpeg-php扩展包和ffmpeg. ...
- OpenCV 1.x 2.x 编程简介(矩阵/图像/视频的基本读写操作)
OpenCV 编程简介(矩阵/图像/视频的基本读写操作) Introduction to programming with OpenCV OpenCV编程简介 作者: Gady Agam Depart ...
- 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | 文件头 Header 分析 | 标签 Tag 分析 | 视频标签 Tag 数据分析 )
文章目录 安卓直播推流专栏博客总结 一. RTMP 格式解析 二. 文件头 Header 分析 三. 标签 Tag 分析 四. 视频标签 Tag 数据分析 安卓直播推流专栏博客总结 Android R ...
- 【PC工具】在线格式转换工具,视频格式转换,视频转gif工具
上次在社区发文章,得知文章编辑器终于支持gif格式的动图了,但得到gif的动图需要将mp4格式的视频进行格式转换,于是便找到了这个在线工具.这年头方便好用是第一位的,功能差不多的情况下在线工具优于绿色 ...
- 视频格式转换工具使用
还记得世界杯期间的那个"神奇教练"米卢吗?在给球员讲解战术.观摩对手比赛的时候,他总是喜欢随身携带一个小巧的摄像机.的确,有些摄像机重量很轻,几乎与普通照相机相仿,拍摄.携带和输出 ...
最新文章
- 赋能AI开源生态,Tengine成AI开发利器
- 牛逼的人没有不看书的(送书福利)
- UVa 11107 (后缀数组 二分) Life Forms
- Page Ability 之间的跳转概念和应用分享
- matlab 白色像素点,MATLAB 簡單的計算白色輪廓中像素點的個數
- spring aop的两种写法aspect和advisor
- JS 判断一个字符串是否包含在一个数组中
- 详述 Discord Desktop app RCE 挖洞经过,最后得$5000 + $300 (含 PoC 视频)
- 实现option上下移动_jQuery操作Select的Option上下移动及移除添加等等
- 树线段hdu 4508 美素数(线段树)
- diy手工制作泡沫小球_一撮羊毛用针来回的戳,DIY手工制作羊毛毡小动物,越戳越带劲...
- 第 7 章 Neutron - 067 - Neutron 架构
- adb手机无法识别 vivo_vivo安卓adb工具
- 深入解析Windows操作系统(笔记1)
- .rpt文件内容读取java_Java中读取File文件内容转为String类型
- html动画3d背景图片,jQuery和CSS3全屏3D背景图片视觉差特效
- django的ORM常用字段和参数
- oracle diagnosticdest,Oracle 11g自动诊断信息库(Automatic Diagnostic Repository,ADR)概述
- R中常用统计指标含义
- 银河麒麟服务器操作系统设置网卡自启动