YUV图像格式

数码图像以色差端子来说,分为3个部分,Y,Cb,Cr(Y,U,V),而我们对这三个部分中的亮度最为敏感,为了减小这种图片或视频的大小,人们 就用了偷工减料的方法,将U,V减少,达到减小存储的空间.常见的YUV格式为YUV422,YUV420,YUV444;YUV格式通常有两大类:打包 (packed)格式和平面(planar)格式。前者将YUV分量存放在同一个数组中(就是数组中yuv混合存放),通常是几个相邻的像素组成一个宏像 素(macro-pixel);而planar模式使用三个数组分开存放YUV三个分量,如先存放Y,再存U再存V;

1)YUV444格式是完全没有删减最逼真的格式,每4个Y,配有4个V,4个U.每个pixel 32bit

YUV图像格式 - herbertbt - herbertbt的博客
 

2)YUV422格式则是UV减半的格式,既是4个Y搭2个U两个V。每个pixel 16bit

 2-1 YUV2

如下YUV2格式中,数据可被视为一个不带正负号的 char 值组成的数组,其中第一个字节包含第一个 Y 样例,第二个字节包含第一个 U (Cb) 样例,第三个字节包含第二个 Y 样例,第四个字节包含第一个 V (Cr) 样例

YUV图像格式 - herbertbt - herbertbt的博客
 

2-2 UYVY

此格式与 YUY2 相同,只是字节顺序是与之相反的 — 就是说,色度字节和灯光字节是翻转的(图 7)。如果该图像被看作由两个 little-endian WORD 值组成的数组,则第一个 WORD 在 LSB 中包含 U,在 MSB 中包含 Y0,第二个 WORD 在 LSB 中包含 V,在 MSB 中包含 Y1。


3)YUV420格式则是UV减为1/4的格式,既是4个Y搭1个V,1个U,一般为16位或12位.


YUV2:这个格式又被写为YUYV,属于YUV422的一种

这里使用的是YUV2格式,像素数据的使用packed模式打包的,意思就是所有的Y/U/V数据都在一个数组内存储。存储的格式如下面的简图所示:

Y0 U0 Y1 V0Y2U2Y3V2Y4U4Y5V4

如上图所示,Y0-U0-Y1-V0是一个宏像素,但是其中缺少U1和V1,这就是YUV422的原理,对于四个像素,只采样其中的两个像素的U和 V,这里是采样了偶数下标像素的U和V,所以需要用相邻的像素中的U和V来补全单数下标像素的U和V。这里简单的采用相邻补全的算法。既U1和V1将由 U0/U2和V0/V2的和的均值补全。采用这种算法速度很快,简单,但将丢失图像列上的U/V信息。

所以

单数下标的U/V的公式如下:

U1 = (U0+U2)/2
V1 = (V0+V2)/2

对于边界的处理,既每一行的最后一个像素的U和V,则直接取前一个像素的U,V

转自:http://blog.chinaunix.net/uid-20424888-id-96045.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VidCap所有函数具体说明请参阅csVidCap.h。 一、 预览/录象流程 1、 初始化并获取当前系统活动的摄像头数量;VidCapInit 2、 连接并打开指定的摄像头;VidCapConnect 3、 设定摄像头输出分辨率和图象格式;VidCapSetFormat 4、 启动摄像头,并传入回调函数地址;VidCapStart 5、 摄像头开始工作,获得数据后调用回调函数通知应用程序;VidCapCallbackProc 6、 停止摄像头;VidCapStop 7、 关闭摄像头;VidCapDisconnect 8、 释放资源。VidCapUninit 二、 拍照流程 1、 初始化并获取当前系统活动的摄像头数量;VidCapInit 2、 连接并打开指定的摄像头;VidCapConnect 3、 设定摄像头输出分辨率和图象格式;VidCapSetFormat 4、 启动摄像头,并传入静态图片回调函数地址;VidCapStart 5、 摄像头开始工作; 6、 用户按下摄像头上拍照按钮或应用程序调用拍照函数;VidCapTakeStillPicture 7、 摄像头拍照并调用静态图片回调函数通知应用程序;VidCapCallbackProc 8、 停止摄像头;VidCapStop 9、 关闭摄像头;VidCapDisconnect 10、 释放资源。VidCapUninit 三、 摄像头分辨率和输出格式 1、 获取当前摄像头所支持的分辨率和输出格式数量;VidCapGetNumberOfCapabilities 2、 遍历每个支持的分辨率和格式的详细信息;VidCapGetStreamCaps 3、 选择并设定当前所需的分辨率和输出格式。VidCapSetFormat 四、 摄像头控制 1、 获取控制参数的范围和默认值;VidCapGetRange 2、 获取控制参数的当前设定值;VidCapGet 3、 设定控制参数新值。VidCapSet

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值