本文共 2615 字,大约阅读时间需要 8 分钟。
本设计中使用的USB摄像头输出视频数据是YUV422格式,只有弄清楚了YUV数据格式,才能通过编程获取正确的视频数据,下面就分析一下YUV422数据格式。
YUV的原理是亮度信息Y与色度信息UV分离,其中”Y”表示明亮度(Lumina nce或Luma),也就是灰阶值;而”U”和”V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。当只提取Y信息的时候,视频呈现黑白画面,也就是常说的灰度图像。 常见的YUV格式有:YUV444 YUV422 YUV420……. YUV422是两个亮度信息Y共用一对UV信息。 每种YUV数据格式根据YUV分量存储的方式不同,又分成平面格式和打包格式。平面格式是指先存完Y分量再存U分量,再存V分量。打包格式是指YUV三分量按照一定的采样格式存储。比如YUV422的一种打包格式就是Y0 U0 Y1 V0 Y2 U2 Y3 V2……. 下面在分析一下YUV数据格式表示的每个像素点占的空间大小: YUV444:色度信号的分辨率和亮度信号的分辨率是相同的,单位像素占的字节数: (4+4+4)/4 = 3,4:4:4 格式是一个打包格式,其中每个像素都被编码为四个连续字节,AYUV 内存布局组织顺序如下所示(标记了 A 的字节包含 alpha 的值) | U0 | V0 | Y0 | A0 | | U1 | V1 | Y1 | A1 | | U2 | V2 | Y2 | A2 | …… YUV444——>32bitspp YUV422:色度信号的扫描线数量和亮度信号一样多,但是每条扫描线上的色度采样点数却只有亮度信号的一半。单位像素占的字节数: (4+2+2)/4 = 2。 YUV422——>16bitspp YUV422又分为两种格式:YUY2 UYVY YUY2在内存的存放方式是:| Y0 | V0 | Y1 | V0 | | Y2 | U1 | Y3 | V1 | | Y4 | U2 | Y5 | V2 | …… UYVY在内存的存放方式是:| U0 | Y0 | V0 | Y1 | | U1 | Y2 | V1 | Y3 | | U2 | Y4 | V2 | Y5 | …… YUV420:无论是横向还是纵向,色度信号的分辨率都只有亮度信号的一半,单位像素占的字节数: (4+1+1)/4 = 1.5。 YUV420——>16bitspp 两种存放格式: 1、 | Y0 | Y1 | Y2 | Y3| …… | U0 | U1 | …… | V0 | V1 | …… 2、 | Y0 | Y1 | Y2 | Y3| …… | V0 | V1 | …… | U0 | U1 | …… YUV经常有另外的名字, YCbCr ,其中Y与YUV 中的Y含义一致,Cb , Cr 同样都指色彩,,只是在表示方法上不同而已,Cb Cr 就是本来理论上的“分量/色差”的标识。C代表分量(是component的缩写)Cr、Cb分别对应r(红)、b(蓝)分量信号,Y除了g(绿)分量信号,还叠加了亮度信号。 RGB数据格式 RGB色彩模式通常用格式RGB(0,0,0)来表示颜色,括号中的3个数字分别表示红、绿、蓝的亮度值。如:黑色RGB(0,0,0)、白色RGB(255,255,255)、红色RGB(255,0,0)。 当红、绿、蓝三种颜色分量相同时就会形成灰色,比如RGB(128,128,128)。灰度颜色有256种变化,即从RGB(0,0,0)到RGB(255,255,255)共256种颜色。RGB565
RGB565彩色模式, 一个像素占两个字节, 其中: 低字节的前5位用来表示B(BLUE) 低字节的后三位+高字节的前三位用来表示G(Green) 高字节的后5位用来表示R(RED) Memory Layout如图:RGB565,RGB555,RGB888的区别
正常的RGB24是由24位即3个字节来描述一个像素,R、G、B各8位。而实际使用中为了减少图像数据的尺寸,如视频领域,对R、G、B所使用的位数进行的缩减,如你所说的RGB565和RGB555。 RGB565 就是R-5bit,G-6bit,B-5bit RGB555 就是R-5bit,G-5bit,B-5bit RGB888 就是R-8bit,G-8bit,B-8bit ;其实这就是RGB24 至于Bitmap那是在RGB的像素数据基础上增加位图头数据而形成的文件格式。一般BMP是RGB888, JPEG是YUV的。
RGB565 是16位的,2个字节,5+6+5,第一字节的前5位是R,后三位+第二字节前三位是G,第二字节后5位是B。 RGB555 也是16位的,2个字节,RGB各5位,有1位未用。 RGB888 是24位的,3个字节。RGB数据的存放方式和YUV的打包格式存放方式相似。
YUV与RGB之间的换算: RGB 转换成 YUV的标准公式 Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16 Cr = V = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128 Cb = U = -( 0.148 * R) - (0.291 * G) + (0.439 * B) + 128 YUV 转换成 RGB的标准公式 B = 1.164(Y - 16) + 2.018(U - 128) G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128) R = 1.164(Y - 16) + 1.596(V - 128) RGB取值范围均为0~255,Y=0~255,U=-122~+122,V=-157~+157RGB转YUV的简化公式
Y = 0.299R + 0.587G + 0.114B
U’= (BY)*0.565
V’= (RY)*0.713 YUV转RGB的简化公式 R = Y + 1.403V’ G = Y - 0.344U’ - 0.714V’ B = Y + 1.770U’通常情况下,进行图像处理使用的是灰度图(YUV、YCrCb),显示的时候一般采用RGB格式的图像。
转载地址:http://punws.baihongyu.com/