视频压缩算法的相关知识

视频压缩算法的相关知识
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尚未最后定稿,但因其更高的压缩比,更好的信道适应性,必将在数字视频的通信或存储领域得到越来越广泛的应用,其发展潜力不可限量。 

转载于:https://www.cnblogs.com/mengfanrong/p/3827052.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装MariaDB数据库(未完成)

1转载于:https://www.cnblogs.com/centos7/p/5994533.html

python接口开发django_用 Django 开发接口

环境搭建1、pip install django2.2.0一、django-admin startproject UITESTpython manage.py startapp paltform创建Django项目1. 创建方式:#方式1:终端输入django-admin startproject UITEST#方式2:pycharm中新建django项目在settings.py文件中添加应用…

戒掉dota

立言为证。 每次不想学习想到dota就强迫自己去培养的兴趣。 比如看一本喜欢的书;比如去跑个步;比如研究某个兴趣点写个报告;比如写份随笔。 转载于:https://www.cnblogs.com/hongxia/p/3830348.html

java切入式编程显示屏_C语言嵌入式系统编程修炼之四:屏幕操作

C语言嵌入式系统编程修炼之四:屏幕操作作者:宋宝华 更新日期:2005-07-22汉字处理现在要解决的问题是,嵌入式系统中经常要使用的并非是完整的汉字库,往往只是需要提供数量有限的汉字供必要的显示功能。例如,一个微波炉的LCD上没有必要提供显…

DIV的边距属性在Chrome和IE中的区别

突然间,在Chrome下看起来很整齐的布局,在IE下变成一团糟。为了找出原因,我改动了div的background-color属性。最后,发现同一个DIV的宽度在IE和Chrome下却不一样。这大晚上的,真是怪吓人滴! 之后&#xff0c…

算法之矩阵计算斐波那契数列

算法之矩阵计算斐波那契数列 本节内容 斐波那契介绍普通方式求解斐波那契矩阵概念矩阵求幂矩阵求解斐波那契1.斐波那契介绍 斐波那契数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项。即f(n)f(n-1)f(n-2),f(0)0,f(1)f(2)1,推导下…

python中去除字符串中首尾空格的函数_Python中去除字符串首尾特定字符的函数:strip()...

Python中strip()函数的作用是去除一个字符串前导和尾部的特定字符,并返回结果字符串。Python中strip()函数默认是删除字符串前导和尾部空格,通过设定参数,也可以去除字符串前导和尾部的其它特定字符。strip()函数的语法格式str.strip( [ char…

SeekBar和RatingBar

1. SeekBar的主要属性 2. OnSeekBarChangeListener 3. RatingBar的主要属性 4. OnRatingBarChangeListener 1. SeekBar的主要属性 2. OnSeekBarChangeListener 1 <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"2 xmlns:tools&qu…

用“Web的思想”做PC客户端

一直在想&#xff0c;用HTML搭建前端页面这么方便&#xff0c;而且效果这么炫&#xff0c;为什么在PC端的软件要如此麻烦呢&#xff1f;就连C#也是&#xff0c;更何况C了。 尽管C有DirectUI这样优秀的图形库&#xff0c;但是开发起来仍然非常吃力。C#的WPF虽然工具链完善&#…

Java点击按钮div缩放_[Java教程]怎样给div增加resize事件

[Java教程]怎样给div增加resize事件0 2016-10-31 11:00:04当浏览器窗口被调整到一个新的高度或宽度时&#xff0c;就会触发resize事件,这个事件在window上面触发,那么如何给div元素增加resize事件&#xff0c;监听div的高度或宽度的改变呢&#xff1f;某位大神用jquery实现的方…

python判断题题库大数据技术_智慧树_大数据分析的python基础_搜题公众号

智慧树_大数据分析的python基础_搜题公众号更多相关问题社会公众可以查阅烟草专卖行政主管部门的监督检查记录。()公民、法人或者其他组织不得利用自动售货机销售烟草制品。()烟草广告中不得有下列情形()。A、社会公益广告B、迁址、换房、更名等启事广告C、表示吸烟有利人体健公…

Java并发中常用同步工具类

为什么80%的码农都做不了架构师&#xff1f;>>> 同步工具类可以是任何一个对象&#xff0c;只要它根据其自身的状态来协调线程控制流。阻塞队列&#xff08;BlockingQueue&#xff09;可以作为同步工具类&#xff0c;其他类型的同步工具类还包括信号量&#xff08;…

Linux平台Oracle多个实例启动说明

环境说明:oracle实例1的SID为orcl(为默认启动的实例),第二个实例的SID为orcl2 启动步骤&#xff1a; 1&#xff09;启动数据库实例完成后&#xff0c;启动数据库监听服务 #lsnrctl start 2&#xff09;切换到需要启动的数据库实例下&#xff0c;如下表示启动的是orcl数据库…

RTMP协议发送H.264编码及AAC编码的音视频,实现摄像头直播

RTMP协议发送H.264编码及AAC编码的音视频&#xff0c;实现摄像头直播 摘要: RTMP协议发送H.264编码及AAC编码的音视频&#xff0c;实现摄像头直播  RTMP&#xff08;Real Time Messaging Protocol&#xff09;是专门用来传输音视频数据的流媒体协议&#xff0c;最初由Macrome…

java消息顺序执行_Apache Flink:如何并行执行但保持消息顺序?

请在下面找到使用侧输出和插槽组进行本地扩展的示例 .package org.example/** Licensed to the Apache Software Foundation (ASF) under one* or more contributor license agreements. See the NOTICE file* distributed with this work for additional information* regardi…

python的字符串定界符可以使用_使用Template格式化Python字符串的方法

对Python字符串&#xff0c;除了比较老旧的%&#xff0c;以及用来替换掉%的format&#xff0c;及在python 3.6中加入的f这三种格式化方法以外&#xff0c;还有可以使用Template对象来进行格式化。from string import Template&#xff0c;可以导入Template类。实例化Template类…

【ES实战】ES6.7的tar包离线安装帮助手册

Elasticsearch6.7部署帮助手册 校验时间&#xff1a;2023年12月19日 文章目录 Elasticsearch6.7部署帮助手册安装前准备安装包安装要求锁定内存,修改最大文件描述符,最大线程数内核参数 部署规划端口规划用户规划目录规划 安装步骤每个服务器配置JDK配置文件master角色node角色…

jenkins 部署文档

Jenkins是一个非常出色的持续集成服务器&#xff0c;本文主要介绍在CentOS系统中Jenkins的基本安装配置方法&#xff0c;供参考。一. 软件包&#xff1a;1. 下载apache-maven-2.2.1-bin.tarhttp://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-2.2.1-bin.tar.gz…

牛人,多看看他们写的东西

计算机大师 Donald E. Knuth&#xff08;高德纳&#xff09; 算法大师&#xff0c;我最崇拜的计算机科学家&#xff0c;没有之一&#xff01;不认识高爷爷的人别说自己是学计算机的。《The Art of Computer Programming》绝对是计算机科学的圣经。对高爷爷的崇敬&#xff0c;对…

System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1)

System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1) 在vb里面 等价于ii-1 在C#里面 等价于i-- 是有C#自动转VB时转换的转载于:https://www.cnblogs.com/YaDi/archive/2012/11/08/2759802.html