视频编码的基本原理
视频图像数据有极强的相关性,也就是说有大量的冗余信息。其中冗余信息可分为空域冗余信息和时域冗余信息。压缩技术就是将数据中的冗余信息去掉(去除数据之间的相关性),压缩技术包含帧内图像数据压缩技术、帧间图像数据压缩技术和熵编码压缩技术。
去时域冗余信息 使用帧间编码技术可去除时域冗余信息,它包括以下三部分: - 运动补偿 运动补偿是通过先前的局部图像来预测、补偿当前的局部图像,它是减少帧序列冗余信息的有效方法。 - 运动表示 不同区域的图像需要使用不同的运动矢量来描述运动信息。运动矢量通过熵编码进行压缩。 - 运动估计 运动估计是从视频序列中抽取运动信息的一整套技术。 注:通用的压缩标准都使用基于块的运动估计和运动补偿。
去空域冗余信息 主要使用帧间编码技术和熵编码技术: - 变换编码 帧内图像和预测差分信号都有很高的空域冗余信息。变换编码将空域信号变换到另一正交矢量空间,使其相关性下降,数据冗余度减小。 - 量化编码 经过变换编码后,产生一批变换系数,对这些系数进行量化,使编码器的输出达到一定的位率。这一过程导致精度的降低。 - 熵编码 熵编码是无损编码。它对变换、量化后得到的系数和运动信息,进行进一步的压缩。
数字视频的压缩原理
1. 视频中哪些信息可以被省略 甚至可以去掉的?
(1) 某一帧中大块大块的相同颜色,每一个颜色都是一个像素,像素是一个整数值,大块的相同像素意味着有很多歌相同的整数值;
(2 )如果一个视频帧率为30FPS(每秒帧数)意味着视频的一秒播放等于30帧, 这30帧每一帧的像素值并不会发生很大 ,甚至30帧完全是静止图像。
2. 视频压缩分为帧内压缩与帧间压缩
压缩的常用技术是调整大小或降低分辨率。这是因为视频的分辨率越高,每帧中包含的信息就越多。例如,1280×720视频在每帧中有921,600像素的可能性。相比之下,640×360视频每帧可能有230,400像素。
这种调整会牺牲视频的质量,虽然视频每一帧大小降低了,同时用户的体验也降低了。用户是愿意看2k的电视,还是看8k呢?
帧内压缩类似于图片压缩,跟这一帧的前面(或后面)一帧(或几帧)无关,由当前帧中,已编码的部分来推测当前待编码的这一部分数据是什么。帧间压缩是,由这一帧的前(或后)一帧(或几帧)来推测当前待压缩的这一部分数据是什么。
(1) 什么是宏块(Macroblock)。
宏块就是,把视频的每一帧(相当于一张图片)划分成16*16的小块,一块一块的依次压缩,而不是对整张图片一起压缩。这样降低了计算的复杂度,比较节省时间。一个宏块又可以分成16*16,16*8,8*16,8*8,8*4,4*8,4*4,等大小不等的块。具体怎么划分块大小,要看画面有多复杂。一般来说,运动多,细节多的部分,划分成小块来编码;大片的平坦的无变化的,划分成16*16的大块。
(2)帧内(Intra)压缩
先看这个图片;假设现在是按顺序来编码,第一行已经完全编完,⑤也编完了,正要压缩⑥这一块。可以看出,它周围的①②③④⑤,跟⑥简直一模一样啊,如果能用①②③④⑤来推测⑥是什么图像,显然比只压缩⑥要节省空间。这就是帧内预测。一般来说,视频的第一帧是帧内预测帧(它想参考其他帧的数据也没有的参考),场景切换时是帧内预测帧(比如视频里插了一段广告,这个广告跟视频里其他的内容都无关,用它来预测还不如我自己编自己省空间)。
帧内预测在H.264编码标准里有以下几种预测方法,具体请查看H.264白皮书。
(3)帧间(Inter)压缩
下图是一个视频序列中连续的两帧。(这真的是俩不同的帧,不信你看书的位置和人的表情都变了)
如果摄像头没有晃来晃去,那么,在连续的视频图像里面,前后两帧的差别真的很小,比一张图片中连续两个宏块的差别还要小,这时用帧间压缩的效果会比帧内压缩的效果好。
Block Matching 就是块匹配,就是找找看前面已经编码的几帧里面,和我当前这个块最类似的一个块,这样我就不用编码当前块的内容了,只需要编码当前块和我找到的那个块的差(称为残差)就可以了。找最像的块的过程叫运动搜索(Motion Search),又叫运动估计(Motion Estimation)。用残差和原来的块就能推算出当前块是什么样儿的,这个过程叫运动补偿(Motion Compensation)。有全搜索,菱形搜索法,三步搜索算法,新三步搜索算法,梯度下降搜索算法,运动矢量场自适应搜索算法等各种算法,这也一直是研究和发论文的热点。
帧内压缩只参考本帧数据,压缩率小;帧间压缩要参考其他帧数据,压缩率大
帧内压缩是全部记录,帧间压缩是只记录每帧之间变化量,比如后景基本不变动的场景。
帧内文件明显大,但是对于电脑后期压力小。可以在剪辑软件里回放;帧间压缩文件明显小,但是对于电脑后期压力大,可能需要工作站式设备处理。
帧内是空域,空间XY上的二维。 帧间是时域,时间轴上n帧,n+1帧,n+2帧...。 因为视频拍摄时,相邻两帧间的图像关联性高,时域相关性大,所以一般来说帧间的压缩率比帧内高。
视频编码尽量消除视频的冗余,时域,空域以及能量冗余或者说熵冗余。 帧内预测,消除视频空间冗余,核心思想纹理预测,现在也用block copy技术以及color table。主要用于I帧编码,以及包含大量非平移运动的screen content coding。 帧间预测,消除视频时域冗余,核心思想运动估计,运动补偿。检测连续帧之间的运动,可单向预测,可双向预测。
文章来源:https://www.zhihu.com/question/20237091
国际音视频压缩标准发展历程
视频编码标准简介 JPEG 国际标准化组织于1986年成立了JPEG(Joint Photographic Expert Group)联合图片专家小组,主要致力于制定连续色调、多级灰度、静态图像的数字图像压缩编码标准。常用的基于离散余弦变换(DCT)的编码方法,是JPEG算法的核心内容。 MPEG-1/2 MPEG-1标准用于数字存储体上活动图像及其伴音的编码,其数码率为1.5Mb/s。 MPEG-1的视频原理框图和H.261的相似。 MPEG-1视频压缩技术的特点:1. 随机存取;2. 快速正向/逆向搜索;3 .逆向重播;4. 视听同步;5. 容错性;6. 编/解码延迟。MPEG-1视频压缩策略:为了提高压缩比,帧内/帧间图像数据压缩技术必须同时使用。帧内压缩算法与JPEG压缩算法大致相同,采用基于DCT的变换编码技术,用以减少空域冗余信息。帧间压缩算法,采用预测法和插补法。预测误差可在通过DCT变换编码处理,进一步压缩。帧间编码技术可减少时间轴方向的冗余信息。 MPEG-2被称为“21世纪的电视标准”,它在MPEG-1的基础上作了许多重要的扩展和改进,但基本算法和MPEG-1相同。 MPEG-4 MPEG-4标准并非是MPEG-2的替代品,它着眼于不同的应用领域。MPEG-4的制定初衷主要针对视频会议、可视电话超低比特率压缩(小于64Kb/s)的需求。 在制定过程中,MPEG组织深深感受到人们对媒体信息,特别是对视频信息的需求由播放型转向基于内容的访问、检索和操作。 MPEG-4与前面提到的JPEG、MPEG-1/2有很大的不同,它为多媒体数据压缩编码提供了更为广阔的平台,它定义的是一种格式、一种框架,而不是具体算法,它希望建立一种更自由的通信与开发环境。于是MPEG-4新的目标就是定义为:支持多种多媒体的应用,特别是多媒体信息基于内容的检索和访问,可根据不同的应用需求,现场配置解码器。编码系统也是开放的,可随时加入新的有效的算法模块。应用范围包括实时视听通信、多媒体通信、远地监测/监视、VOD、家庭购物/娱乐等。 JVT:新一代的视频压缩标准 JVT是由ISO/IEC MPEG和ITU-T VCEG成立的联合视频工作组(Joint Video Team),致力于新一代数字视频压缩标准的制定。 JVT标准在ISO/IEC中的正式名称为:MPEG-4 AVC(part10)标准;在ITU-T中的名称:H.264(早期被称为H.26L)
H264/AVC H264集中了以往标准的优点,并吸收了以往标准制定中积累的经验, 采用简洁设计,使它比MPEG4更容易推广。H.264创造性了多参考帧、多块类型、整数变换、帧内预测等新的压缩技术,使用了更精细的分象素运动矢量(1/4、1/8)和新一代的环路滤波器,使得压缩性能大大提高,系统更加完善。 H.264主要有以下几大优点: - 高效压缩:与H.263+和MPEG4 SP相比,减小50%比特率 - 延时约束方面有很好的柔韧性 - 容错能力 - 编/解码的复杂性可伸缩性 - 解码全部细节:没有不匹配 - 高质量应用 - 网络友善 监控中的视频编码技术 目前监控中主要采用MJPEG、MPEG1/2、MPEG4(SP/ASP)、H.264/AVC等几种视频编码技术。对于最终用户来言他最为关心的主要有:清晰度、存储量(带宽)、稳定性还有价格。采用不同的压缩技术,将很大程度影响以上几大要素。 MJPEG MJPEG(Motion JPEG)压缩技术,主要是基于静态视频压缩发展起来的技术,它的主要特点是基本不考虑视频流中不同帧之间的变化,只单独对某一帧进行压缩。 MJPEG压缩技术可以获取清晰度很高的视频图像,可以动态调整帧率、分辨率。但由于没有考虑到帧间变化,造成大量冗余信息被重复存储,因此单帧视频的占用空间较大,目前流行的MJPEG技术最好的也只能做到3K字节/帧,通常要8~20K!
视频有很多种格式,区分这些格式的基本方法是查看视频文件的后缀名,常见的后缀名如下表所示
格式 后缀名 描述 AVI格式 .AVI 英文全称为Audio Video Interleaved,即音频视频交错格式,1992年由Microsoft公司推出。这种视频格式的优点是图像质量好。由于无损AVI可以保存alpha通道,经常被使用。缺点是体积过于庞大,而且更加糟糕的是压缩标准不统一。 QuickTime 格式 .MOV 美国Apple公司开发的一种视频格式,默认的播放器是苹果的QuickTime。具有较高的压缩比率和较完美的视频清晰度等特点,并可以保存alpha通道。 MPEG格式 可以是: .MPG
.MPEG
.DAT
.VOB
.MP4等
英文全称为Moving Picture Experts Group,即运动图像专家组格式,该专家组建于1988年,专门负责为CD建立视频和音频标准,而成员都是为视频、音频及系统领域的技术专家。MPEG文件格式是运动图像压缩算法的国际标准。MPEG格式目前有三个压缩标准,分别是MPEG-1、MPEG-2、和MPEG-4。MPEG-1、MPEG-2目前已经使用较少。
着重介绍MPEG-4,其制定于1998年,MPEG-4是为了播放流式媒体的高质量视频而专门设计的,以求使用最少的数据获得最佳的图像质量。目前MPEG-4最有吸引力的地方在于它能够保存接近于DVD画质的小体积视频文件。
WMV格式 英文全称为Windows Media Video,也是微软推出的一种采用独立编码方式并且可以直接在网上实时观看视频节目的文件压缩格式。WMV格式的主要优点包括:本地或网络回放,丰富的流间关系以及扩展性等。WMV格式需要在网站上播放,需要安装Windows Media Player(简称WMP),很不方便,现在已经几乎没有网站采用了。 Real Video格式 .RM
.RMVB
Real Networks公司所制定的音频视频压缩规范称为Real Media。用户可以使用RealPlayer根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。
RMVB格式:RMVB视频也是有着较明显的优势,一部大小为700MB左右的DVD影片,如果将其转录成同样品质的RMVB格式,其个头最多也就400MB左右。
Flash Video格式 .FLV 由Adobe Flash延伸出来的的一种流行网络视频封装格式。随着视频网站的丰富,这个格式已经非常普及。 Matroska格式 .MKV 是一种新的多媒体封装格式,这个封装格式可把多种不同编码的视频及16条或以上不同格式的音频和语言不同的字幕封装到一个Matroska Media档内。它也是其中一种开放源代码的多媒体封装格式。Matroska同时还可以提供非常好的交互功能,而且比MPEG的方便、强大。