视频压缩算法的相关知识

视频压缩算法的相关知识
MPEG-1
MPEG 视频压缩编码后包括三种元素:I帧(I-frames)、P帧(P-frames)和B帧(B-frames)。在MPEG编码的过程中,部分视频帧序列压缩成为I帧;部分压缩成P帧;还有部分压缩成B帧。I帧法是帧内压缩法,也称为“关键帧”压缩法。I帧法是基于离散余弦变换DCT( Discrete Cosine Transform )的压缩技术,这样的算法与JPEG压缩算法相似。採用I帧压缩可达到1/6的压缩比而无明显的压缩痕迹。

在保证图像质量的前提下实现高压缩的压缩算法,仅靠帧内压缩是不能实现的,MPEG採用了帧间和帧内相结合的压缩算法。 P帧法是一种前向预測算法,它考虑相邻帧之间的同样信息或数据,也即考虑运动的特性进行帧间压缩。P帧法是依据本帧与相邻的前一帧(I帧或P帧)的不同点来压缩本帧数据。採取P帧和I帧联合压缩的方法可达到更高的压缩且无明显的压缩痕迹。

然而,仅仅有採用B帧压缩才干达到200:1的高压缩。B帧法是双向预測的帧间压缩算法。当把一帧压缩成B帧时,它依据相邻的前一帧、本帧以及后一帧数据的不同点来压缩本帧,也即仅记录本帧与前后帧的差值。B帧数据仅仅有I帧数据的百分之十五、P帧数据的百分之五十下面。

MPEG 标准採用相似4:2:2的採用格式,压缩后亮度信号的分辨率为352×240,两个色度信号分辨率均为176×120,这两种不同分辨率信息的帧率都是每秒30帧。其编码的基本方法是在单位时间内,首先採集并压缩第一帧的图像为I帧。然后对于其后的各帧,在对单帧图像进行有效压缩的基础上,仅仅存储其相对于前后帧发生变化的部分。帧间压缩的过程中也常间隔採用帧内压缩法,因为帧内(关键帧)的压缩不基于前一帧,一般每隔15帧设一关键帧,这样能够降低相关前一帧压缩的误差积累。MPEG编码器首先要决定压缩当前帧为I帧或P帧或B帧,然后採用对应的算法对其进行压缩。一个视频序列经MPEG全编码压缩后可能的格式为:IBBPBBPBBPBBPBBIBBPBBPBBPBBPBBI......

压缩成B帧或P帧要比压缩成I帧须要多得多的计算处理时间。有的编码器不具备B帧甚至P帧的压缩功能,显然其压缩效果不会非常好。

MPEG-2
MPEG 组织在1994年推出MPEG-2压缩标准,以实现视/音频服务与应用互操作的可能性。MPEG-2标准是针对标准数字电视和高清晰度电视在各种应用下的压缩方案和系统层的具体规定,编码码率从每秒3兆比特~100兆比特,标准的正式规范在ISO/IEC13818中。MPEG-2不是MPEG-1的简单升级,MPEG-2在系统和传送方面作了更加具体的规定和进一步的完好。MPEG-2特别适用于广播级的数字电视的编码和传送,被认定为SDTV和 HDTV的编码标准。MPEG-2还专门规定了多路节目的复分接方式。MPEG-2标准眼下分为9个部分,统称为ISO/IEC13818国际标准。

MPEG -2图像压缩的原理是利用了图像中的两种特性:空间相关性和时间相关性。一帧图像内的不论什么一个场景都是由若干像素点构成的,因此一个像素通常与它周围的某些像素在亮度和色度上存在一定的关系,这样的关系叫作空间相关性;一个节目中的一个情节经常由若干帧连续图像组成的图像序列构成,一个图像序列中前后帧图像间也存在一定的关系,这样的关系叫作时间相关性。这两种相关性使得图像中存在大量的冗余信息。假设我们能将这些冗余信息去除,仅仅保留少量非相关信息进行传输,就能够大大节省传输频带。而接收机利用这些非相关信息,依照一定的解码算法,能够在保证一定的图像质量的前提下恢复原始图像。一个好的压缩编码方案就是能够最大限度地去除图像中的冗余信息。

MPEG-2的编码图像被分为三类,分别称为I帧,P帧和B帧。

I帧图像採用帧内编码方式,即仅仅利用了单帧图像内的空间相关性,而没有利用时间相关性。I帧使用帧内压缩,不使用运动补偿,因为I帧不依赖其它帧,所以是随机存取的入点,同一时候是解码的基准帧。I帧主要用于接收机的初始化和信道的获取,以及节目的切换和插入,I帧图像的压缩倍数相对较低。I帧图像是周期性出如今图像序列中的,出现频率可由编码器选择。

P帧和B帧图像採用帧间编码方式,即同一时候利用了空间和时间上的相关性。P帧图像仅仅採用前向时间预測,能够提高压缩效率和图像质量。P帧图像中能够包括帧内编码的部分,即P帧中的每个宏块能够是前向预測,也能够是帧内编码。B帧图像採用双向时间预測,能够大大提高压缩倍数。值得注意的是,因为B帧图像採用了未来帧作为參考,因此MPEG-2编码码流中图像帧的传输顺序和显示顺序是不同的。

P 帧和B帧图像採用帧间编码方式,即同一时候利用了空间和时间上的相关性。P帧图像仅仅採用前向时间预測,能够提高压缩效率和图像质量。P帧图像中能够包括帧内编码的部分,即P帧中的每个宏块能够是前向预測,也能够是帧内编码。B帧图像採用双向时间预測,能够大大提高压缩倍数。值得注意的是,因为B帧图像採用了未来帧作为參考,因此MPEG-2编码码流中图像帧的传输顺序和显示顺序是不同的。

MPEG-2的编码码流分为六个层次。为更好地表示编码数据,MPEG-2用句法规定了一个层次性结构。它分为六层,自上到下各自是:图像序列层、图像组(GOP)、图像、宏块条、宏块、块。

MPEG-4
MPEG -4于1998年11月发布, MPEG-4是针对一定比特率下的视频、音频编码,更加注重多媒体系统的交互性和灵活性。MPEG-4标准力求做到两个目标:低比特率下的多媒体通信;是多工业的多媒体通信的综合。为此,MPEG-4引入了AV对象(Audio/Visual Objects),使得很多其它的交互操作成为可能:
"AV对象"能够是一个孤立的人,也能够是这个人的语音或一段背景音乐等。它具有高效编码、高效存储与传播及可交互操作的特性。

MPEG -4对AV对象的操作主要有:採用AV对象来表示听觉、视觉或者视听组合内容;组合已有的AV对象来生成复合的AV对象,并由此生成AV场景;对AV对象的数据灵活地多路合成与同步,以便选择合适的网络来传输这些AV对象数据;同意接收端的用户在AV场景中对AV对象进行交互操作等。
MPEG-4标准则由6个主要部分构成:
① DMIF(The Dellivery Multimedia Integration Framework)
DMIF 即多媒体传送总体框架,它主要解决交互网络中、广播环境下以及磁盘应用中多媒体应用的操作问题。 通过传输多路合成比特信息来建立client和server端的交互和传输。 通过DMIF,MPEG4能够建立起具有特殊品质服务(QoS)的信道和面向每个基本流的带宽。
② 数据平面
MPEG4中的数据平面能够分为两部分:传输关系部分和媒体关系部分。
为了使基本流和AV对象在同一场景中出现,MPEG4引用了对象描写叙述(OD)和流图桌面(SMT) 的概念。OD 传输与特殊AV对象相关的基本流的信息流图。桌面把每个流与一个CAT(Channel Assosiation Tag)相连,CAT可实现该流的顺利传输。
③ 缓冲区管理和实时识别
MPEG4定义了一个系统解码模式(SDM),该解码模式描写叙述了一种理想的处理比特流句法语义的解码装置,它要求特殊的缓冲区和实时模式。通过有效地管理,能够更好地利用有限的缓冲区空间。
④ 音频编码
MPEG4的优越之处在于--它不仅支持自然声音,并且支持合成声音。MPEG4的音频部分将音频的合成编码和自然声音的编码相结合,并支持音频的对象特征。
⑤ 视频编码
与音频编码相似,MPEG4也支持对自然和合成的视觉对象的编码。 合成的视觉对象包括2D、3D 动画和人面部表情动画等。
⑥ 场景描写叙述
MPEG4 提供了一系列工具,用于组成场景中的一组对象。一些必要的合成信息就组成了场景描写叙述,这些场景描写叙述以二进制格式BIFS(Binary Format for Scene description)表示,BIFS与AV对象一同传输、编码。场景描写叙述主要用于描写叙述各AV对象在一具体AV场景坐标下,怎样组织与同步等问题。同一时候还有AV对象与AV场景的知识产权保护等问题。MPEG4为我们提供了丰富的AV场景。
与MPEG-1和MPEG-2相比,MPEG-4更适于交互AV服务以及远程监控,它的设计目标使其具有更广的适应性和可扩展性: MPEG-4传输速率在4800-64000bps之间,分辨率为176×144,能够利用非常窄的带宽通过帧重建技术压缩和数据传输,从而能以最少的数据获得最佳的图像质量。因此,它将在数字电视、动态图像、互联网、实时多媒体监控、移动多媒体通信、Internet/Intranet上的视频流与可视游戏、DVD上的交互多媒体应用等方面大显身手。

H.264
H.264 是ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像编码专家组)的联合视频组(JVT:joint video team)开发的一个新的数字视频编码标准,它既是ITU-T的H.264,又是ISO/IEC的MPEG-4的第10 部分。1998年1月份開始草案征集,1999年9月,完毕第一个草案,2001年5月制定了其測试模式TML-8,2002年6月的 JVT第5次会议通过了H.264的FCD板。眼下该标准还在开发之中,预计明年上半年可正式通过。

H.264和曾经的标准一样,也是 DPCM加变换编码的混合编码模式。但它採用“回归基本”的简洁设计,不用众多的选项,获得比H.263++好得多的压缩性能;加强了对各种信道的适应能力,採用“网络友好”的结构和语法,有利于对误码和丢包的处理;应用目标范围较宽,以满足不同速率、不同解析度以及不同传输(存储)场合的需求;它的基本系统是开放的,使用无需版权。

H.264的算法在概念上能够分为两层:视频编码层(VCL:Video Coding Layer)负责高效的视频内容表示,网络提取层(NAL:Network Abstraction Layer)负责以网络所要求的恰当的方式对数据进行打包和传送。 H.264支持1/4或1/8像素精度的运动矢量。在1/4像素精度时可使用6抽头滤波器来降低高频噪声,对于1/8像素精度的运动矢量,可使用更为复杂的8抽头的滤波器。在进行运动预计时,编码器还可选择“增强”内插滤波器来提高预測的效果。H.264中熵编码有两种方法,一种是对全部的待编码的符号採用统一的VLC(UVLC :Universal VLC),还有一种是採用内容自适应的二进制算术编码。H.264 草案中包括了用于差错消除的工具,便于压缩视频在误码、丢包多发环境中传输,如移动信道或IP信道中传输的健壮性。

在技术上,H.264 标准中有多个闪光之处,如统一的VLC符号编码,高精度、多模式的位移预计,基于4×4块的整数变换、分层的编码语法等。这些措施使得H.264算法具有非常的高编码效率,在同样的重建图像质量下,能够比H.263节约50%左右的码率。H.264的码流结构网络适应性强,添加了差错恢复能力,能够非常好地适应IP和无线网络的应用。

H.264具有广阔的应用前景,比如实时视频通信、因特网视频传输、视频流媒体服务、异构网上的多点通信、压缩视频存储、视频数据库等。H.264优越性能的获得不是没有代价的,其代价是计算复杂度的大大添加,据预计,编码的计算复杂度大约相当于H.263的3 倍,解码复杂度大约相当于H.263的2倍。

H.264建议的技术特点能够归纳为三个方面,一是注重有用,採用成熟的技术,追求更高的编码效率,简洁的表现形式;二是注重对移动和IP网络的适应,採用分层技术,从形式上将编码和信道隔离开来,实质上是在源编码器算法中很多其它地考虑到信道的特点;三是在混合编码器的基本框架下,对其主要关键部件都做了重大改进,如多模式运动预计、帧内预測、多帧预測、统一VLC、4×4二维整数变换等。

迄今为止,H.264尚未最后定稿,但因其更高的压缩比,更好的信道适应性,必将在数字视频的通信或存储领域得到越来越广泛的应用,其发展潜力不可限量。

时间: 2024-09-29 21:54:45

视频压缩算法的相关知识的相关文章

深入浅出安卓学习相关知识,如何从零学好移动开发

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mobile-develop 由于近几年来互联网的飞速发展,安卓和iOS平台的大量普及推广,移动开发在当前是非常热门的一个方向. 有不少同学问我如何学习安卓,要学些什么,难不难学.之前一直没有想好应该怎么回答这个问题,只是简单的说安卓自身门槛不高,并不难学.因为我觉得准确回答一个类似这样的问题往往需要灵感.现在根据我的学习体验,做个大概的总结. 1.我为什么学安卓 我从刚开始接触安卓开发到现在也有两三年的时间了

驱动开发读书笔记. 0.06 嵌入式linux视频开发之预备知识

驱动开发读书笔记. 0.06  嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB video class 或USB video device class.是Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一. UVC linux driver: UVC linux 驱动 需要在编译内核的时候选上 配置内核 Device

FastDFS的介绍与相关知识,以及集群搭建

FastDFS相关知识 什么是FastDFS? FastDFS是一个开源的轻量级分布式文件系统.它解决了大数据量存储和负载均衡等问题.特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如相册网站.视频网站等等. FastDFS的角色: Tracker server:Tracker server作为中心结点,其主要作用是负载均衡和调度.Tracker server在内存中记录分组和Storage server的状态等信息,不记录文件索引信息,占用的内存

端口相关知识学习笔记

端口相关知识学习笔记 端口相关知识学习笔记 本周主要精力是放在挂接上,所以知识矩阵的学习回归到根本上,所以这周发的学习笔记是关于计算机端口的相关介绍. 有过一些黑客攻击方面知识的读者都会知道,其实那些所谓的黑客并不是像人们想象那样从天而降,而是实实在在从您的计算机"大门"中自由出入.计算机的" 大门"就是我们平常所说的"端口",它包括计算机的物理端口,如计算机的串口.并口.输入/输出设备以及适配器接口等(这些端口都是可见的),但更多的是不可见的软

高速信号采集的相关知识

对于高速的定义,至少要100Msps以上的,这种高速采集多用在军工.航天.天文领域,通信现在用的也越来越多了(比如华为5G相关的项目,已经用到了3Gsps的ADC). 当然有一些视频相关的领域也会用到高速采集. 对于采集这块的入门,说实话挺难的,因为成本实在是太高,通常高速的ADC价格都在千刀($美元)以上,使用的FPGA通常也需要较大的规模也要几千刀,要做一块多通道的高速采集板成本十几万人民币很正常的. 其次是技术难度,高速采集这块最难的是在硬件这块,时钟链路,电源质量,各种干扰的屏蔽控制,电

H264视频压缩算法

H264视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的.随着 x264/openh264以及ffmpeg等开源库的推出, 大多数使用者无需再对H264的细节做过多的研究,这大降低了人们使用H264的成本. 但为了用好H264,我们还是要对H264的基本原理弄清楚才行.今天我们就来看看H264的基本原理. H264概述 H264压缩技术主要采用了以下几种方法对视频数据进行压缩.包括: (1) 帧内预测压缩:解决的是空域数据冗余问题.(2) 帧间预测压缩:(运动估计与补偿),解决的是时

python的list相关知识

关于list的相关知识 list01 = ['alex',12,65,'xiaodong',100,'chen',5] list02 = [67,7,'jinjiao_dawang','relax1949',53] #打印list01.list02 print(list01) print(list02) #列表截取.切片 print(list01[1]) print(list01[-2]) print(list01[1:3]) #列表重复 print(list01 * 3) #列表组合 prin

三层交换机相关知识

三层交换机相关知识 这次的作死之路又要开始了.这次的对象主要是交换机:还是三层的: 这是这次实验的总体用图: 现在现根据图上的标志:将所有的主机配置好:目前没有做任何vlan:所以PC1和PC3是能够互通的: 接下来:我想先去探索下三层交换机关闭portswitch会怎么样: 第一步:先关闭了再说: 因为按照图中的设计:PC1的帧如果想要到达PC2,那么就必然要经过LSW1.但是现在我关闭了g0/0/1端口的portswitch:现在pc1并不能ping通pc2: 通过百度:三层交换机的端口不仅

php学习day7--函数的相关知识

今天我们主要学了函数的相关知识,是个比较基础的知识,但也是很重要的. 一.函数 函数就类似于一个工具,我们写好函数之后可以直接进行调用,可以很大的减少代码的从用性,提高页面性能和可读性. 1.函数的定义 在php中函数的定义方式为: function  name($形参1,$形参2.....){ 要执行的代码 return  123: } 在上方的函数定义式中,name代表函数名,小括号内是形参,是用来传递参数,花括号中的就是调用时需要执行的代码. 函数的调用方式: name(实参1,实参2,.