yuv转rgb

数字视频基础(一)

懵懂的女人 提交于 2020-03-07 03:37:20
转自 https://blog.csdn.net/shanghaiqianlun/article/details/26477675 1. 基本概念 1.1视频的表示 1.1.1图像的表示 把一个图像用一个个像素来表示,每个像素有确定的位置和确定的亮度值(这里假设是黑白图像)。于是构成了图象。 比如下面的图片: 我们用0表示白,1表示黑,则图像可表示成: 图像有2个分辨率:一个是 空间分辨率 ,也就是图中的水平分辨率N和垂直分辨率M;另一个是 灰度级分辨率 ,也就是用几个bit来表示灰度等级。极端的有二值图,如刚才那个“1”的图。 1.1.2视频的表示 视频也就是在时间轴上的图像序列,如果把图像看成是二维(空间x,y),那么视频就是三维了(空间x,y,加时间t,这个t有时候可能是帧号)。视频的数学表达是f(x, y, t)或f( ,t) 或f(x, y, n)或f( ,n) 每秒图像的帧数,称为视频的帧频。 1.1.3逐行视频和隔行视频 逐行扫描就是成像时一行行扫描形成一帧视频,显示的时候将一帧视频显示在屏幕上。 隔行视频是成像时先扫描偶数行,形成一场叫偶场,然后再扫描奇数行形成奇场图像。这样将一帧图像分成了2场:偶场和奇场,这两场在空间上和时间上都是不一样的。显示的时候,也应该先在显示器的偶行位置显示偶场图像,再在奇行位置显示奇场图像。 逐行视频和隔行视频的比较: 下面讨论一些问题

YUV和RGB的区别(以及YUV444 YUV422 YUV411 YUV420的介绍)

余生颓废 提交于 2020-01-01 09:50:59
RGB是构成多种颜色的三基色(红绿蓝),也称为加成色。主要是图像的采集和显示。YUV是优化彩色视频信号的编码和传输,和rgb相比,YUV占用的带宽少。 YUV中Y表示的是亮度,是通过RGB输入信号确定的,方法是将RGB信号的特定部分叠加到一起。UV表示的是色度,定义了颜色的两个方面的色度和饱和度,分别使用Cr和Cb表示。其中,Cr是GB输入信号的红色部分和RGB信号的亮度的差异。而Cb反映的是RGB输入信号的蓝色部分和RGB的信号亮度值之间的差异。可以参考下面的RGB转YUV的公式。 RGB和YUV是可以相互转化的(根据不同的色域计算有所不同,bt.601-6): RGB转YUV: Y = 0.299*R + 0.587*G + 0.114*B; U = -0.169*R - 0.331*G + 0.5 *B ; V = 0.5 *R - 0.419*G - 0.081*B; YUV转RGB: R = Y + 1.4075 * V; G = Y - 0.3455 * U - 0.7169*V; B = Y + 1.779 * U; 参考: https://www.cnblogs.com/luoyinjie/p/7219319.html 下面介绍一下YUV。YUV分为YUV444,YUV422,YUV420等,含有不同色度分量的编码方式。 YUV444:UV三个信道的抽样率相同

iOS RGBA转YV12

可紊 提交于 2019-12-01 22:02:57
引言 因为项目中要做画面共享,所以需要学一点图像相关的知识,首当其冲就是RGB转YUV了,因为图像处理压缩这一块是由专业对口的同事做的,所以呢,我这就是写一下自己的理解,如有不对的地方,还望指正,谢谢。 你可以在 这里 看到更好的排版。 正文 知识准备 RGB 三原色光模式 ( RGB color model ),又称 RGB颜色模型 或 红绿蓝颜色模型 ,是一种 加色模型 ,将 红 ( R ed)、 绿 ( G reen)、 蓝 ( B lue)三 原色 的色光以不同的比例相加,以合成产生各种色彩光。 RGB32 RGB32使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha 通道 或者不用。(ARGB32就是带Alpha通道的RGB24。)注意在内存中RGB各分量的排列顺序为:BGRA BGRA BGRA…。通常可以使用RGBQUAD数据结构来操作一个像素,它的定义为: typedef struct tagRGBQUAD { BYTE rgbBlue; // 蓝色分量 BYTE rgbGreen; // 绿色分量 BYTE rgbRed; // 红色分量 BYTE rgbReserved; // 保留字节(用作Alpha通道或忽略) } RGBQUAD。 YUV YUV ,是一种 颜色 编码 方法。常使用在各个影像处理组件中。 YUV在对照片或影片编码时

YUV420转YUV444 , YUV420转RGB

两盒软妹~` 提交于 2019-11-29 21:42:27
我想大家应该知道了YUV的颜色表示原理即:   Y = 0.299R + 0.587G + 0.114B   U = -0.147R - 0.289G + 0.436B   V = 0.615R - 0.515G - 0.100B   R = Y + 1.14V   G = Y - 0.39U - 0.58V   B = Y + 2.03U 如果通过上面的公式从RGB转换成YUV的话,得出的YUV一帧图片和RGB一样大(如果都用8bit表示一个像素分量值) 而YUV采样格式有: YUV 4:4:4 YUV 4:2:2 YUV 4:2:0 等 我就介绍下YUV4:2:0采样怎么转换成YUV4:4:4 YUV444示意图(4*4大小):4*4大小的图中每个像素都对应三个YUV分量,如下图。所占空间为 4*4*3=48 bytes YUV4:2:0 采样方式为: U分量和V分量隔行采样, 同时UV分量在其采样行也是隔行采样 Y00 Y01 Y02 Y03 Y10 Y11 Y12 Y13 Y20 Y21 Y22 Y23 Y30 Y31 Y32 Y33 U00 ? U02 ? ? ? ? ? U20 ? U22 ? ? ? ? ? ? ? ? ? V10 ? V12 ? ? ? ? ? V30 ? V32 ? 从上面的比较可知,要将YUV420转换成YUV444的关键就在于插值到采样的缺口处