图像压缩编码(4)--H.26x系列视频压缩编码_2

目录

H.261 视频编码标准

H.261的编码与解码

1) 帧内/帧间编码

2)运动补偿

3)量化

4)环路滤波器

5)缓存器

压缩数据的分层

数据复用结构

H.264的编码与解码


H.261 视频编码标准

实际应用时,要求有强实时性、同步性以及最小的延迟时间。

编解码原理框图:

H.261的编码与解码

H.261 标准的编解码器原理框图如上图4-7所示。由于视频解码过程是其编码的逆过程,不同之处仅在于不需要做运动估计,运动矢量和其他所需信息直接从 VLC解码器得到,因此这里主要介绍 H.261 编码过程。

H.261 编码器的核心是采用运动补偿的帧间预测、二维 DCT、量化和可变长编码 VLC 的混合编码算法,其中,二维 DCT 以一个块(B)为基本单元。

1) 帧内/帧间编码

在H.261 编码过程中,不仅采用帧内编码模式,同时还采用帧间编码模式。

帧内和帧间模式的选择由编码控制电路自动控制。为了自动决定输入宏块MB 应采用帧内还是帧间编码,需要先找到判据,将前帧图像存储在存储器内,后一帧图像来到时,比较前后两帧图像的相关性,若相关性强则采用帧间编码,相关性弱,则采用帧内编码。这里的判据是以宏块为单位进行的。
第一帧要进行帧内编码,这一帧称为帧内帧(Intraframe),用I表示,之后可传送P帧、B帧。P帧是用它前面的I帧作为参考帧经过前向预测编码得到的,它也可以作为下一个P帧的参考帧。B 帧是用邻近的I帧(或P帧)、P帧为参考帧经双向预测所得。通常情况下,每12 帧或15帧图像中传送一帧I帧,每3帧或4帧图像中传送一帧P帧。每次场景更换时,第一帧为I 帧。

由于相邻帧具有很强的相关性,H.261允许每两个参考帧之间传送3个B帧。若参考帧为I帧、P帧,则:计算第一个B帧时,可用公式B=3xI/4 + 1xP/4;计算第二个B帧时,用公式 B=(I+P)/2;计算第三个B帧时,用公式 B=1×1/4+3xP/4。

输入图像信号为CIF 或QCIF 格式,8x8像素一块(B)。进行帧间编码时,当前图像块与预测图像块相减,得到预测差值,同时要产生预测帧。差值信号进行 DCT 变换,变换前每个B为8×8=64个8比特像素值,变换后得到64个 DCT 系数值,代表不同空间频率分量的幅度。在对 DCT 系数进行量化(Q)并取整后,采用 zigzag字形扫描将块内数据排列成一维数据串,进行游程长度编码,得到符号组序列,再对符号组进行可变长编码(VLC)。

量化后的 DCT 系数须经过反量化IQ 和IDCT 处理,形成重建帧并存入帧存储器,再经过运动补偿和滤波后产生预测帧.

2)运动补偿

运动补偿可使预测误差达到最小。

运动估计是以宏块为单位的,通过块匹配搜索得到运动矢量。运动矢量在用于构建预测帧的同时被送到 VLC编码输出,供解码用。
通常,运动估计只针对亮度信号进行,所得的运动矢量既用于亮度信号也用于色度信号,只是在用于色度信号时需要将运动矢量减半。


3)量化

在H.261 标准中,量化采用了32个线性量化器。其中,1个专门用于DC 系数,其量化步长为8;其余31个用于 AC 系数,量化步长分别为2,4,,62,具体选择哪一个由码率控制器决定。除DC 系数外,一个宏块(MB)中使用同一个量化器。
和JPEG标准一样,量化后的 DCT 系数也将经 Zigzag 扫描后送入可变长编码器 VLC进行二维游程长度编码。


4)环路滤波器

环路滤波器是一个二维空间低通滤波器,用于消除高频杂波,即消除边缘赝像。这是因为在帧间编码时,运动补偿过程仅仅是一个逼近过程,对高频分量匹配比较差,容易产生高频杂波。环路滤波器只有在检测到非零运动矢量时才切入,且以宏块为单位进行切入、切出。

5)缓存器

数据编码过程产生的码率不是恒定的,而是随着每帧图像的编码类型和图像内容的统计特性变化的。但传输网络中数据的码率必须恒定,因此在编码器的输出端必须用缓存器来平滑输出的数据率。
为避免发生缓存器溢出的情况,需要一个缓存器码率控制器来控制其输入码率。实际工作时,码率控制器根据缓存器的数据占有率控制量化器的量化步长,即当缓存器占有率高(即将被占满)时增大量化步长,缓存器占有率低(即将为空)时减小量化步长,从而调节输入到缓存器的码率。

压缩数据的分层

为了有秩序地传输每帧图像的数据,并有利于图像数据交换和设备兼容,把一帧图像数据分成4层:帧、块组(Group Of Block,GOB)、宏块 MB 和数据块B。

最小处理单元为8x8 像素块(B),然后按4:2:0的比例对亮度和色度块进行抽样,组成一个宏块(MB macro block);一定数量的 MB 构成块组GOB,片?:若干个 GOB构成一帧图像。

1)数据块 B
数据块是最小的块,由8x8个像素组成。亮度和色度均采用8x8的数据块作为基本编码单元。

2)宏块 MB
一个 MB 由6个数据块B组成,其中包括4个亮度块、2个覆盖同样面积但分辨率为其 1/4的色度块C_{b}块和C{_{r}}块,数据块的排列顺序如图4-8(a)所示。----4:2:0的比例-

3)块组 GOB

一个 GOB 包含33个宏块 MB,其中,横向11个,纵向3个。排列次序如图4-8(b)所示。

4)CIF 帧
1帧 CIF 图像由12个GOB 构成,排列次序如图4-8(c)所示。显然:

1GOB=12×33MB=396x[4(Y)+1(Cb)+1(Cr)] B =2376B

1GOB=2376×8x8=152064 像素
对于 QCIF 格式图像,由于它的像素数只有 CIF 格式的1/4,所以每帧 QCIF 图像只含有3个GOB,如图 4-8(d)所示。

(CIF:即视频会议中通用的影像传输格式。分辨率为352x288像素,图像传输速率可达每秒30帧,符合ITUH.261视频会议数据传输协议。)

数据复用结构

------------待补充

H.264的编码与解码

与H.261一样,H.264 编码器采用的仍是 变换+ 预测的混合编码法。如图所示,编码器有两条主要的数据流路径,一条是从左——> 右,完成编码;一条从右——> 左,完成重建。

 编码器以宏块为单位处理输入的帧或场F_{n},具体又分为帧内预测编码和帧间预测编码:
(1)在帧内编码模式中,其预测值 PRED(图中用P表示)由当前帧中的已编码宏块经解码、重构预测获得;
(2) 在帧间编码模式下,P由当前片中前面已编码的参考图像经运动补偿(MC)后得到,其中参考图像用F_{_n-1{}}表示。
将预测值 PRED 和当前块相减,即可得到一个残差块D_{n}, 经DCT 变换、量化后产生一组量化后的变换系数 X,再经熵编码,与解码所需的一些信息(如预测模式、量化参数、运动矢量等)一起组成一个压缩后的码流,进入网络提取层 NAL,供传输和存储用。
正如前面述,为了提供进一步预测用的参考图像,编码器必须有重建图像的功能。因此,先对残差图像进行反量化、DCT 逆变换以得到D_{n}{}',然后将D_{n}{}'与预测值 P 相加,得到uF{_{n}}{}'。为了去除编码解码环路中产生的噪声,提高参考帧的质量,进而提高压缩性能,这里设置了一个环路滤波器,滤波后的输出F{_{n}}',即为重建图像,可用作参考图像(如用于对F_{n+1}的编码)。


下图给出了H.264的解码过程。首先,解码器从网络提取层 NAL 接收压缩比特流。经过熵解码和重排序,得到量化后的系数X,然后进行反量化、DCT 逆变换生成残差宏块。
另一方面,解码器从码流中解析出头信息,利用这些头信息得到该残差宏块的预测宏块P。
考虑到该预测宏块 P与编码器的原始预测宏块P相同,这样,P与残差宏块相加即可得到重建块,再进行滤波即可得到最终的解码帧(重建帧)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】list详解及模拟实现

目录 1. list介绍 2. list使用 2.1 修改相关 2.2 遍历 2.3 构造 2.4 迭代器 2.5 容量相关 2.6 元素访问 2.7 操作相关 3. 模拟实现 3.1 节点类 3.1.1 初始结构 3.1.2 节点的构造函数 3.2 迭代器类 3.2.1 初始结构 3.2.2 迭代器 3.2.3 迭代器-- 3.2.4 解引…

基于VUE的医院抗生素使用审核流程信息化管理系统

开发背景 随着医疗行业的快速发展和信息技术的不断进步,医院内部管理系统的信息化建设变得尤为重要。抗生素作为治疗感染性疾病的重要药物,在临床使用过程中需要严格控制以避免滥用导致的耐药性问题。传统的抗生素使用审核流程往往依赖于人工审核&#x…

第十一章 从0-1搭建一个简单的JavaWeb系统(三)

目录 一、工程代码结构 二、代码实现 三、运行效果 四、未完待续 本章节的每一段代码,建议全部自己敲一遍,加深印象,切勿直接复制黏贴。 一、工程代码结构 本章节实现注销(退出)功能,以下图片中标红的…

苹果CMS插件:优化蜘蛛访问内容,提升百度收录率

确保蜘蛛抓取原始内容 专为苹果CMS设计的广告管理插件,能够智能识别搜索引擎蜘蛛与普通访客,确保蜘蛛访问时展示原始内容,从而提升被百度等搜索引擎收录的几率。 广告显示提升收益 对于普通访客,该插件则优先显示广告内容&#…

【网络】高级IO——select版本TCP服务器

目录 前言 一,select函数 1.1.参数一:nfds 1.2.参数二: readfds, writefds, exceptfds 1.2.1.fd_set类型和相关操作宏 1.2.2.readfds, writefds, exceptfds 1.2.3.怎么理解 readfds, writefds, exceptfds是输入输出型参数 1.3.参数三…

面试速通宝典——1

1. 内存有哪几种类型? ‌‌‌‌  内存分为五个区,堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量&#…

2024-1.2.12-Android-Studio配置

本地博客: https://k1t0111.github.io/ K1T0 最近在做一些app方向的移动技术开发学习,但是由于AS的配置问题,市面上找不到最新的2024版本的AS的相关配置。笔者也是踩了很多坑,因此想写一篇文章记录一下最新的AS 2024 1.2.12的对应java环境的一…

springboot框架VUE3学院网站系统开发mysql数据库设计java编程计算机网页源码maven项目

博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

python 识别省市、区县并组建三级信息数据库

一、网址: 全国行政区划信息查询平台 二、分析并搭建框架 检查网页源码: 检查网页源码可以发现: 所有省级信息全部在javaScript下的json中,会在页面加载时加载json数据,填充到页面的option中。 1、第一步&#xff1a…

探秘 Web Bluetooth API:连接蓝牙设备的新利器

引言 随着物联网技术的快速发展,蓝牙设备在日常生活中扮演着越来越重要的角色。而在 Web 开发领域,Web Bluetooth API 的出现为我们提供了一种全新的方式来连接和控制蓝牙设备。本文将深入探讨 Web Bluetooth API 的使用方法和原理,帮助开发…

浅显易懂的Git教程

Git概述 SVN与Git的对比 SVN(Subversion) 类型:集中式版本控制系统 工作流程: 从中央服务器下载最新版本到本地。在本地进行开发。提交更改回中央服务器。 优点: 简单易用,适合小型团队。版本历史清…

vs2022快捷键异常不起作用解决办法

安装了新版本的vs2022,安装成功后,发现快捷键发生异常,之前常用的快捷键要么发生改变,要么无法使用,比如原来注释代码的快捷键是ctrlec,最新安装版本变成了ctrlkc,以前编译代码的快捷键是F6或者…

初始MYSQL数据库(6)—— 事务

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: MYSQL 目录 事务的概念 事务的ACID特性 使用事务 查看支持事务的存储引擎 事务的语法 保存点 自动/手动提交事务 事务的隔离性和…

Python模拟鼠标轨迹[Python]

一.鼠标轨迹模拟简介 传统的鼠标轨迹模拟依赖于简单的数学模型,如直线或曲线路径。然而,这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现,能够通过深度学习技术,学习并模拟更自然的鼠标移动行为。 二.鼠标轨迹算法实…

【原创】java+swing+mysql仓库管理系统设计与实现

个人主页:程序员杨工 个人简介:从事软件开发多年,前后端均有涉猎,具有丰富的开发经验 博客内容:全栈开发,分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片,希望和大家…

Qt开发技巧(四)“tr“使用,时间类使用,Qt容器取值,类对象的删除,QPainter画家类,QString的转换,用好 QVariant类型

继续讲一些Qt技巧操作 1.非必要不用"tr" 如果程序运行场景确定是某一固定语言,就不需要用tr,"tr"之主要针对多语种翻译的,因为tr的本意是包含英文,然后翻译到其他语言比如中文,不要滥用tr,如果没有…

‌内网穿透技术‌总结

内网穿透是一种网络技术,通过它可以使外部网络用户访问内部网络中的设备和服务。一般情况下,内网是无法直接访问的,因为它位于一个封闭的局域网中,无法从外部访问。而通过内网穿透,可以将内部网络中的设备和服务暴露在…

底盘四轮转向运动学解析(含代码)

目录 写在前面的话四轮转向运动学解析四轮转向理论图解robot_control.py 完整代码关键参数完整代码 公式解析(根据代码)反相--模式1详细图解 正相--模式2轴心--模式3 写在前面的话 网上找了很多资料,对于四轮转向运动学描述的很少&#xff0…

爬虫过程 | 蜘蛛程序爬取数据流程(初学者适用)

蜘蛛程序(也称网络爬虫,是搜索引擎的重要组成部分) 主要功能:遍历互联网,抓取网站信息并建立索引,便于用户在搜索引擎中检索到最新的网页内容工作原理:从初始网站页面的URL开始,发送…

最适配达梦、人大金仓的sql工具是什么?

SQLynx是一款功能强大的数据库管理工具,它不仅支持Oracle、MySQL等国际主流数据库,还很好地支持了武汉达梦、人大金仓等国产数据库。这款工具具有以下几个特点: 1.广泛支持:SQLynx支持多种数据库系统,包括PostgreSQL、…