登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天道酬勤 玩物丧志

用勇气去改变可以改变的事情,用胸怀去包容无法改变的事情,用智慧去判断两者的区别

 
 
 

日志

 
 

视频编解码器设计——开发图像与视频压缩系统(1)  

2010-09-09 20:09:36|  分类: 图像处理 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

视频编解码器设计——开发图像与视频压缩系统

Iain E.G.Richardson 欧阳合 韩军

 

1.      数字视频

 

2.2.1视频图像是三维场景在二维平面上的投影。它将含有深度、纹理和光照属性的物体构成的三维场景投影到一个二维平面。不过失去了深度信息

 

2.3.2 人眼的视觉系统(HVS)对颜色的敏感度比不上对亮度分量的敏感度。

       因此,另一种通用的颜色空间是Y:Cr:CbY是亮度分量,即一个彩色图像的黑白版本。YR,G,B分量的加权平均值:

Y=krR+kgG+kbB

YCrCbYUV,主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(LuminanceLuma),也就是灰阶值;而“U”“V” 表示的则是色度(ChrominanceChroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。亮度是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。色度则定义了颜色的两个方面色调与饱和度,分别用CrCB来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。

  采用YUV色彩空间的重要性是它的亮度信号Y和色度信号UV是分离的。如果只有Y信号分量而没有UV分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。

  YUVRGB相互转换的公式如下(RGB取值范围均为0-255)︰

  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

  在DirectShow中,常见的RGB格式有RGB1RGB4RGB8RGB565RGB555RGB24RGB32ARGB32等;常见的YUV格式有YUY2YUYVYVYUUYVYAYUVY41PY411Y211IF09IYUVYV12YVU9YUV411YUV420等。

在人脸检测中也常常用到YCrCb空间,因为一般的图像都是基于RGB空间的,在RGB空间里人脸的肤色受亮度影响相当大,所以肤色点很难从非肤色点中分离出来,也就是说在此空间经过处理后,肤色点是离散的点,中间嵌有很多非肤色,这为肤色区域标定(人脸标定、眼睛等)带来了难题。如果把RGB转为YCrCb空间的话,可以忽略Y(亮度)的影响,因为该空间受亮度影响很小,肤色会产生很好的类聚。这样就把三维的空间将为二维的CrCb,肤色点会形成一定得形状,如:人脸的话会看到一个人脸的区域,手臂的话会看到一条手臂的形态,对处理模式识别很有好处,根据经验某点的CrCb值满足:133≤Cr≤17377≤Cb≤127 那么该点被认为是肤色点,其他的就为非肤色点。

 

 

2.5.2 客观测量视频质量

       峰值信噪比(PSNR

2.6 表示数字视频的标准

       中间格式                     亮度分量分辨率(水平X垂直)

       Sub-QCIF                     128x96

       Quarter CIF(QCIF)              176x144

       CIF                              352x288

       4CIF                             704x576

3.2图像和视频压缩

       压缩信号的设备或程序被称为编码器 encoder

       解压缩的设备或程序被称为解码器 decoder

       一对编码器/解码器称为信号编解码器CODEC

 

 

信源模型 处理有:差分脉冲编码调制(DPCM)、变换编码、运动补偿预测、基于模型的编码

 

 

3.3图像编解码器

       DCT变换通常被用于小的、离散的图像块上。

       相比较而言,图像变换则可以应用在整幅图像上,最常见的变换是离散小波变换(Discrete Wavelet Transform

 

       变换是将图像在另一个域中表示,图像数据被分解成对图像质量有不同“重要性”的分量。量化的目的是为了去除变换后对图像的视觉质量不重要的数据分量,并且保持视觉上重要的数据分量。分量去除是不可逆的,因此量化是一个有损的过程。

       量化过程的“粗糙度”可以改变(利用量化的“比例因子”或“步长”)粗糙量化通常以牺牲图像质量为代价得到更高的压缩率。量化的比例因子或步长是控制图像质量和压缩率的主要参数。

 

熵编码

       一个典型的图像块在块编码和量化后常包含少量重要的非零系数和大量的零系数。那些剩下的非零系数可以用统计压缩的方法进行有效的压缩(“熵编码”)。

1》  量化系数的重新排序

2》  Run-level编码

3》  熵编码

 

3.4 视频编解码器

       视频信号由一系列单独的帧组成。每一帧可以单独地用上面描述的图像编解码器压缩,这被称为帧内编码(Intra-frame Coding),每一帧在“内部”进行编码而没有参考其他帧。

       消除视频序列中的时间冗余信息(连续视频帧中的相似性)来达到更好的压缩效果。具体通过“前后帧”来实现。

       预测:基于一个或多个先前传输的帧来建立对当前帧的预测。

       补偿:从当前帧中减去预测帧来产生一个“残差帧”。

       接着,用“图像编解码器”来处理残差帧。这个方法的关键是预测功能:如果预测是准确的,残差帧将包含很少的数据,因而可以用图像编解码器有效地压缩。为了解码图像帧,解码器必须“逆反”补偿过程,把预测加到解码的残差帧中去(重建),这就是帧间编码(Inter-frame Coding)。基于同其他帧的关系进行编码,也即利用视频帧间的相互关系编码。

 

3.4.1 帧间残差

       编码器用原始帧1作为一个预测并且编码残差结果,但是解码器只拥有解码出的帧1来形成预测。因为编码过程是有损的,解码出的帧1和原始帧1之间存在区别,这导致在解码器端对帧2的预测有一个小的误差。这个误差会随着每一个连续帧逐渐增加,然后编码器和解码器的预测会很快的“漂移”开来,导致解码质量的严重下降。

       这个问题的解决方法是编码器采用解码的帧来形成预测。

 

3.4.2 运动补偿预测

       对于视频场景中,前后帧差别很大,帧间差取决于视频场景的运动。

 

1》运动估计  把当前帧中的区域(通常是一个亮度样本的方块)和前一个重建帧中的相邻区域进行比较。运动估计器试图发现“最佳匹配”(best match),也就是说参考帧中相邻的具有最小残差的块。

2》运动补偿  从当前的区域或块中减去参考帧中的“匹配”区域块(由运动估计器定义)。

 

       解码器执行相同的运动补偿操作来重建当前帧,这意味着编码器必须给解码器传输“最佳”匹配块的位置(典型的采用一组运动矢量(motion vector)的形式)

      运动估计可能需要很大的计算量。运动估计算法的设计对视频编解码器的压缩效果和计算复杂度具有很重要的影响。

  评论这张
 
阅读(621)| 评论(2)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018