本公司是是一家从事郑州监控设计、郑州监控安装、郑州监控维修的专业监控安装公司,对于监控图像编码技术有一定的了解,让监控安装的从业人员更好的了解监控系统的基本原理,在进行监控系统初步设计、安装时能更好的完善系统。下面介绍下视频(动态图像)编码压缩原理:
视频压缩的必要性
前面介绍了静态图像压缩技术,而在视频监控系统应用中,图像是动态的视频序列,为实现动态视频监控系统图像的实时传输与存储,需要进行视频数据的编码压缩。再次强调一下视频编码压缩的必要性,以352X288像素的视频为例,单帧画面数据量大小如下:
如果采用4:2:0格式,352X288X12=1216512=1.2Mbit
如果采用4:4:4格式,352X288X24=2433024=2.4Mbit
对于实时25帧/秒的码流,即使采用4:2:0格式,码流可以达到30Mbps(1.2MbpsX25帧/秒),这是目前的网络环境根本无法支撑的,而另外一个方面,录像一个小时需要存储空间为108G(30MbpsX3600s),是标准DVD-R存储容量的20倍。因此,视频压缩是必须的。所谓压缩就是采用特定的算法,将一种数据类型转换为另一种形态,使得转换后的数据量远小于转换前的数据量,并且可恢复(或部分恢复)。视频压缩就是采用某种压缩方法将原始监控安装场景的图像数据流进行压缩,再对压缩后形成的数据流进行传输或存储。
视频压缩的可行性
携带信息的信号可以被压缩,压缩成比原始信号所需要更少的比特数的格式或表达方式,对原始信号进行压缩的软件或硬件叫编码器,而解压缩的设备或程序叫解码器。视频压缩的主要方法是对时间域冗余和空间域冗余进行压缩。在时间域冗余中,主要体现在相邻视频帧之间的相关性,而空间域冗余,主要体现在同一视频帧中,相邻区域多像素之间的相关性。
空间冗余
这是图像数据中经常存在的一种冗余。在同一副图像中,规则物体和规则背景的表面物理特性具有相关性,这些相关性的光成像结构在数字化图像中就是表现为空间冗余。
时间冗余
这是序列图像和语音数据中经常包含的冗余,图像序列中的两幅相邻的图像之间有较大的相关性,这反映为时间冗余;在语言中,由于人说话时发音的音频是一连续的渐变过程,而不是一个完全时间上独立的过程,因而存在时间冗余。
视觉冗余
人类视觉系统并不是对任何图像的变化都很敏感,人眼对于图像的注意是非均匀的。事实上人类视觉系统一般分辨能力为64灰度等级,而一般图像量化采用256灰度等级,这类冗余我们称为视觉冗余。
图像格式说明
图像通用格式CIF
为了使现行各种电视制式,即PAL、NTSC、SECAM制的图像,能比较容易地转换成电视电话的图像格式,既便于相互转换,又考虑到位率较低,采用通用中间格式CIF(Common Intermediate Format)。
CIF格式规定图像亮度分量Y的横向像素为352个,纵向像素为288个。图像色度分量Cr、Cb的纵横像素数为亮度分量的一半。为了使图像尺寸的纵横比为3:4,与常规电视屏幕尺寸比例一致,所以像素的纵横比为:
像素纵横比=纵:横=3/288:4/352=11:12
可见像素的纵横比为11:12,接近于方形。
CIF格式图像层次结构
通常,视频编码算法把输入的CIF和QCIF格式的视频分成一系列以“块”为基础的层次结构,分别为图像(Picture)、块组(GOB)、宏块(MB)和块(Block)四个层次。每个宏块由4个8X8的亮度块和2个8X8的色度块(Cr和Cb各一个)组成,一个块组由3X11个宏块组成,一个QCIF图像由3个GOB组成,一个CIF图像则包含12个GOB。
图像宏块与块说明
在视频编码过程中,为使算法处理单元高效处理,通常把每帧监控安装场景图像分成宏块及块,例如对于CIF图像,将每帧图像分成22X18个宏块(MB),而每个宏块包含6个子块(Block),其中包含4个8X8的亮度快及2个8X8的色度块(4:4:4取样时)。宏块是进行运动补偿(视频编码关键技术)的基本单位。
在4:2:0取样格式时,图中共有6个8X8像素块,亮度Y占4块,色度Cb和Cr各占1块。亮度Y的图像区域与色度Cb或Cr的图像区域面积相等并重合。因为色度Cb、Cr的像素数量少,故清晰度较低,但不影响人眼的主观视觉感受,因为人眼对色度的敏感程度低。在处理监控安装场景图像时,按图中各8X8方块的编号次序处理。块是码流的最底层,每个块是一个8X8像素的数据矩阵。每个块中只含有一种信号元素,即它或是亮度数据矩阵,或是某种色度数据矩阵。注意“块”是进行DCT运算的基本单位,“宏块”在进行DCT运算之前要被分成若干个块。
视频压缩比计算举例
根据图像格式及信道指标,可以计算出所需的视频编码压缩比。
例如:若采用CIF图像格式,采样格式为4:2:0,采用8位像素深度,帧率取25帧/秒,求在带宽为2Mbps的网络中传输时视频编码压缩系统应有的压缩比。
解压缩前的码流为[352X288+2(176X144)]像素/帧x25帧/秒x8位/像素=30412.8kbps=30M。那么对视频编码器件的压缩比要求是:30Mbps/2M=15倍。
电视制式介绍
PAL电视制式标准为每秒25帧,电视扫描线为625线,奇场在前,偶场在后,标准的数字化PAL电视标准分辨率为720X576, 24比特的色彩位深,监控安装场景画面的宽高比为4:3,PAL电视标准用于中国、欧洲等国家和地区。NTSC电视制式标准下,每秒29.97帧(简化为30帧),电视扫描线为525线,偶场在前,奇场在后,标准的数字化NTSC电视标准分辨率为720X480,采用24比特的色彩位深,画面的宽高比为4:3。NTSC电视标准用于美、日等国家和地区。
CIF分辨率
如先前所讲,CIF分辨率为352X288,约10万像素格式图像。
2CIF分辨率
2CIF格式的图像纵向也只有288线,但每行的水平像点数却翻了一倍,因此,图像大约为20万像素。虽然每一行的像点数增加了,但由于整个图像中每隔一行都被忽略,因此,仍然丢失了大量的重要信息。所以,我们看到的监控安装场景图像恰如其名只是半帧或半图。2CIF分辨率是704X240像素(NTSC)或704X288(PAL)像素。
4CIF分辨率
4CIF格式的图像由两个时间上连续的隔行扫描半图像拼合而成,这种格式的实际像素达到704X576=40万,但由于半帧是在不同瞬间形成的,所以行与行之间就会发生错位。这样会导致所谓的“梳状失真”,这是4CIF格式图像在实际应用中的一个缺陷。
D1与4CIF分辨率区别
D1的分辨率为720X480(NTSC)、720X576(PAL);4CIF的分辨率为704X480(NTSC)、704X576(PAL)。从分辨率数据来看两者相差不多,但是从技术原理角度,4CIF的原型是由CIF发展而来的,通过后期处理得到。早起DSP运算能力不足以支持大分辨率画面的实时编码传输,因此将画面切割成4个CIF大小的画面分别处理然后进行大画面合成。而D1本身就是指大画面的单个画面,也可以进行分割,成为多个CIF画面。
VGA及SIF分辨率
VGA是Video Graphics Array的缩写,是IBM公司开发的计算机显示系统,分辨率定义为640X480像素,此分辨率更适合IPC,因为IPC视频基本上都在计算机上进行显示。而QVGA也经常使用,QVGA是320X240像素,接近于CIF分辨率大小,QVGA有时称为SIF(Standard Interchange Format)。
逐行扫描与隔行扫描
隔行扫描,是把一幅图像分成两场来扫描,第一场称为奇数场,只扫描奇数行,而第二场只扫描偶数行,通过两场扫描完成一帧图像扫描的行数,这就是隔行扫描。例如对于每帧图像为625行的隔行扫描,每帧图像分两场扫,每一场只扫描了312.5行,每秒钟共扫描50场,共25帧图像,即隔行扫描时帧频为25HZ、场频为50HZ。由于视觉暂留效应,人眼不会注意到两场只有一半的扫描行,而会视为完整的一帧。
隔行扫描的行扫描频率为逐行扫描时的一半,因而电视信号的频谱及传送该信号的信道带宽亦为逐行扫描的一半。这样采用了隔行扫描后,在图像质量下降不多的情况下,信道利用率提高了一倍。
由于信道带宽的减小,使系统及设备的复杂性与成本也相应减少。可见,隔行扫描的优势是在同样的带宽下可以传送的场数是逐行采样的两倍,例如PAL制式下视频流是50场/秒(25帧)/秒,该方式下,运动的监控安装场景图像要比25帧/秒的逐行采样模式自然许多。但是,对于横向快速运动或纹理,可能产生不好的视觉效果(木梳状失真)。隔行扫描的失真可以通过一些过滤器处理提升从而提高图像质量。
帧率、码流与分辨率
帧率是每秒显示监控安装场景图像的数量,分辨率表示每幅图像的尺寸,即像素数量,码流是数据流量,而压缩是去掉图像的空间冗余和时间冗余。对于基本静态的场景,可以用很低的码流获得较好的图像质量,而对于剧烈运动的场景,可能用很高的码流也达不到好的图像质量。设置帧率表示想要的视频实时性、连续性,设置分辨率是想要看的图像尺寸大小,而码流的设置取决于网络、存储及视频场景的具体情况。
帧率概念
一帧就是一副静止的画面,连续的帧序列就形成动画,如电视图像等。我们通常说的帧率,就是在1秒钟时间里传输、显示的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,通常用FPS(Frames Per Second)表示。每一帧是一副静止的图像,快速连续地显示多帧便形成了运动的“假象”。高的帧率可以得到更流畅、更逼真的动画。每秒钟帧数越多,FPS值越高,所显示的视频动作就会越流畅,码流需求就越大。
码流概念
码流(Bit Rate)是指视频数据在单位时间内的数据流量大小,也叫码率,它是视频编码画面质量控制中最重要的部分。同样分辨率及帧率下,视频数据的码流越大,压缩比就越小,画面质量也就越高。
分辨率概念
分辨率是指图像的大小或尺寸。常见的分辨率有4CIF(704X576)、CIF(352X288),QCIF(176X144)、VGA(640X480)及百万像素(如1920X1080)。在成像的两组数字中,前者为图片长度,后者为图片的宽度,两者相乘得出的是图片的像素数,长宽比一般为4:3格式,在高清视频监控中主要为16:9格式。
视频编码模型
编码器的作用是将原始监控安装场景图像编码压缩成视频流,解码器的作用相反,将视频流还原成图像。通常,编码器采用某种模型来描述一个视频流,模型使得压缩的视频流尽可能占用较少地码流,却提供尽可能好的图像质量。
时域模型
时域模型的作用是消除连续视频帧之间的时域冗余,在时域模型中,当前帧与参考帧之间相减得到残差图像,预测帧越准确(运动估计做得好),那么得到的残差图像的能量就越小。残差图像经过编码后传输到解码器,解码器通过重建帧与残差图像相加来恢复当前图像帧,并得到下帧图像的预测帧,利用运动补偿技术来降低预测帧与当前帧的差别。时域模型的输出是当前帧与预测帧相减得到的残差及运动模型参数(如运动矢量)。
空域模型
视频图像相邻样本点之间具有很强的相关性,图像空域模型的目的是消除图像或残差图像的空域相关性,将其转换成一种便于熵编码的格式。实际的空域模型分三个部分,变换(消除数据相关性)、量化(降低变换域数据精度)和重新排序(对数据重新编排,将重要的数据集中到一起)。空域模型的输入是残差图像(或完整图像),空域模型利用残差图像内部相邻像素的相似性,来消除空域的冗余。在MPEG-4及H.264编码压缩方式中,编码器对残差图像进行频域变换(DCT)、量化,之后作为空域模型的输出。
熵编码器
熵编码器对空域模型(量化系数)及时域模型(运动矢量)的输出参数进行压缩,消除统计冗余,并输出最后的比特流供传输或存储之用。
运动补偿技术介绍
在帧间编码过程中,需要消除相邻帧之间的时域信息冗余,即仅仅传输相邻帧之间对应宏块的差值(残差),此差值不是前后两帧对应像素的直接相减差值,而是需要在前帧(参考帧)内,对应于后帧的宏块位置的附近区域内,搜索找到一个最匹配的宏块(最相似的宏块,甚至能找到完全相同的宏块),并得到宏块在水平及垂直方向上的位移(运动矢量),然后传送这两个宏块之间的差值(对于完全相似的宏块,差值接近于零)及运动矢量。将存储器中前一图像帧(N-1帧)的重建图像中相应的块供编码器端求得的运动矢量进行相应的位移,得到第N帧图像的预测图像的过程就是运动补偿过程。
运动估计
运动估计(Motion Estimation ,ME)就是搜索最佳匹配块的过程,或者说是寻找最优的运动向量的过程。
运动估计的基本思想是将图像序列的帧分成多个宏块,并认为宏块内所有像素的位移量都相同,然后对每个宏块在参考帧的某一给定搜索范围内根据一定的匹配准则找出与当前块最相似的块,即最佳匹配块,匹配块与当前块的相对位移即为运动矢量(Motion Vector,MV)。视频压缩的过程中,只需保存运动矢量和残差数据就可以完全恢复出当前的块。
运动补偿
利用运动估计算出的运动矢量,将参考帧图像中的宏块在水平及垂直方向进行相应地移动,即可生成被压缩图像的预测。运动补偿(Motion Compensation,MC)是通过先前的图像来预测、补偿当前的图像,它是减少视频序列时域冗余的有效方法。即运动补偿是一种描述相邻帧差别的方法,具体来说是描述前一帧图像的每个块怎样移动到当前帧中的某个位置去,这种方法经常被视频编解码器用来减少视频序列中的时域冗余信息。
运动补偿的实现
如上所述,运动补偿的基本原理就是当编码处理视频序列中的N帧的时候,利用运动补偿中的关键技术——运动估计技术(Motion Estimation,ME)得到第N帧图像的预测帧N’
,在实际传输时,不总是传输N帧本身(偶尔传输N帧本身做参考),而是传输N帧与N’的差值ΔN。在运动估计十分有效的情况下,ΔN的值会非常小(接近零甚至是零),这样传输需要的码流也非常小,从而实现对信源中时域冗余信息的消除,这是运动补偿技术的根本所在。在运动补偿时,一般将图像分成多个矩形块,而后对各个监控安装场景图像块进行补偿。