图像压缩编码(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),用表示,之后可传送
帧、
帧。
帧是用它前面的
帧作为参考帧经过前向预测编码得到的,它也可以作为下一个
帧的参考帧。
帧是用邻近的
帧(或
帧)、
帧为参考帧经双向预测所得。通常情况下,每12 帧或15帧图像中传送一帧
帧,每3帧或4帧图像中传送一帧
帧。每次场景更换时,第一帧为I 帧。
由于相邻帧具有很强的相关性,H.261允许每两个参考帧之间传送3个B帧。若参考帧为帧、
帧,则:计算第一个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的色度块块和
块,数据块的排列顺序如图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 编码器采用的仍是 变换+ 预测的混合编码法。如图所示,编码器有两条主要的数据流路径,一条是从左——> 右,完成编码;一条从右——> 左,完成重建。

编码器以宏块为单位处理输入的帧或场,具体又分为帧内预测编码和帧间预测编码:
(1)在帧内编码模式中,其预测值 PRED(图中用P表示)由当前帧中的已编码宏块经解码、重构预测获得;
(2) 在帧间编码模式下,P由当前片中前面已编码的参考图像经运动补偿(MC)后得到,其中参考图像用表示。
将预测值 PRED 和当前块相减,即可得到一个残差块, 经DCT 变换、量化后产生一组量化后的变换系数
,再经熵编码,与解码所需的一些信息(如预测模式、量化参数、运动矢量等)一起组成一个压缩后的码流,进入网络提取层 NAL,供传输和存储用。
正如前面述,为了提供进一步预测用的参考图像,编码器必须有重建图像的功能。因此,先对残差图像进行反量化、DCT 逆变换以得到,然后将
与预测值 P 相加,得到
。为了去除编码解码环路中产生的噪声,提高参考帧的质量,进而提高压缩性能,这里设置了一个环路滤波器,滤波后的输出
,即为重建图像,可用作参考图像(如用于对
的编码)。
下图给出了H.264的解码过程。首先,解码器从网络提取层 NAL 接收压缩比特流。经过熵解码和重排序,得到量化后的系数,然后进行反量化、DCT 逆变换生成残差宏块。
另一方面,解码器从码流中解析出头信息,利用这些头信息得到该残差宏块的预测宏块P。
考虑到该预测宏块 P与编码器的原始预测宏块P相同,这样,P与残差宏块相加即可得到重建块,再进行滤波即可得到最终的解码帧(重建帧)。

相关文章:
图像压缩编码(4)--H.26x系列视频压缩编码_2
目录 H.261 视频编码标准 H.261的编码与解码 1) 帧内/帧间编码 2)运动补偿 3)量化 4)环路滤波器 5)缓存器 压缩数据的分层 数据复用结构 H.264的编码与解码 H.261 视频编码标准 实际应用时,要求有…...
JS渲染锻炼输入表单
前言 上篇文章为大家展现了好看的信息窗口,接下来我们跟着流程图看下一步 之前我们的带点击事件已经添加完毕,下一步就是当用户点击的时候,渲染锻炼形式,当然这是一个标签,可以提供给用户输入锻炼形式 实例 ● 我…...
proteus仿真学习(1)
一,创建工程 一般选择默认模式,不配置pcb文件 可以选用芯片型号也可以不选 不选则从零开始布局,没有初始最小系统。选用则有初始最小系统以及基础的main函数 本次学习使用从零开始,不配置固件 二,上手软件 1.在元件…...
决策树+随机森林模型实现足球大小球让球预测软件
文章目录 前言一、决策树是什么?二、数据收集与整理1.数据收集2.数据清洗3.特征选择 三、决策树构建3.1绘制训练数据图像3.2 训练决策树模型3.3 依据模型绘制决策树的决策边界3.4 树模型可视化 四、模型预测五、随机森林模型总结 前言 之前搞足球数据分析的时候&…...
31省市农业地图大数据
1.北京市 谷类作物种植结构(万亩) 农作物种植结构(万亩) 2.天津市 谷类作物种植结构(万亩) 农作物种植结构(万亩) 3.黑龙江省 谷类作物种植结构(万亩) 农作物…...
http请求包含什么
HTTP请求通常包含以下几个主要部分: 请求行(Request Line): 包含请求方法(如 GET、POST、PUT、DELETE 等)、请求的目标 URI 和 HTTP 版本。例如:GET /index.html HTTP/1.1 请求头部(…...
【基础算法总结】模拟篇
目录 一,算法介绍二,算法原理和代码实现1576.替换所有的问号495.提莫攻击6.Z字形变换38.外观数列1419.数青蛙 三,算法总结 一,算法介绍 模拟算法本质就是"依葫芦画瓢",就是在题目中已经告诉了我们该如何操作…...
《深度学习》PyTorch 手写数字识别 案例解析及实现 <下>
目录 一、回顾神经网络框架 1、单层神经网络 2、多层神经网络 二、手写数字识别 1、续接上节课代码,如下所示 2、建立神经网络模型 输出结果: 3、设置训练集 4、设置测试集 5、创建损失函数、优化器 参数解析: 1)para…...
【笔记】材料分析测试:晶体学
晶体与晶体结构Crystal and Crystal Structure 1.晶体主要特征 固态物质可以分为晶态和非晶态两大类,分别称为晶体和非晶体。 晶体和非晶体在微观结构上的区别在于是否具有长程有序。 晶体(长程有序)非晶(短程有序)…...
飞塔Fortigate7.4.4的DNS劫持功能
基础网络配置、上网策略、与Server的VIP配置(略)。 在FortiGate上配置DNS Translation,将DNS请求结果为202.103.12.2的DNS响应报文中的IP地址修改为Server的内网IP 10.10.2.100。 config firewall dnstranslationedit 1set src 2.13.12.2set…...
Unity 设计模式 之 行为型模式 -【状态模式】【观察者模式】【备忘录模式】
Unity 设计模式 之 行为型模式 -【状态模式】【观察者模式】【备忘录模式】 目录 Unity 设计模式 之 行为型模式 -【状态模式】【观察者模式】【备忘录模式】 一、简单介绍 二、状态模式(State Pattern) 1、什么时候使用状态模式 2、使用状态模式的…...
【RabbitMQ】RabbitMQ 的概念以及使用RabbitMQ编写生产者消费者代码
目录 1. RabbitMQ 核心概念 1.1生产者和消费者 1.2 Connection和Channel 1.3 Virtual host 1.4 Queue 1.5 Exchange 1.6 RabbitMO工作流程 2. AMQP 3.RabbitMO快速入门 3.1.引入依赖 3.2.编写生产者代码 3.3.编写消费者代码 4.源码 1. RabbitMQ 核心概念 在安装…...
openmv与stm32通信
控制小车视觉循迹使用 OpenMV 往往是不够的。一般使用 OpenMV 对图像进行处理,将处理过后的数据使用串口发送给STM32,使用STM32控制小车行驶。本文主要讲解 OpenMV 模块与 STM32 间的串口通信以及两种循迹方案,分别是划分检测区域和线性回归。…...
C++ STL全面解析:六大核心组件之一----序列式容器(vector和List)(STL进阶学习)
目录 序列式容器 Vector vector概述 vector的迭代器 vector的数据结构 vector的构造和内存管理 vector的元素操作 List List概述 List的设计结构 List的迭代器 List的数据结构 List的内存构造 List的元素操作 C标准模板库(STL)是一组高效的…...
【c数据结构】OJ练习篇 帮你更深层次理解链表!(相交链表、相交链表、环形链表、环形链表之寻找环形入口点、判断链表是否是回文结构、 随机链表的复制)
目录 一. 相交链表 二. 环形链表 三. 环形链表之寻找环形入口点 四. 判断链表是否是回文结构 五. 随机链表的复制 一. 相交链表 最简单粗暴的思路,遍历两个链表,分别寻找是否有相同的对应的结点。 我们对两个链表的每个对应的节点进行判断比较&…...
微软开源GraphRAG的使用教程(最全,非常详细)
GraphRAG的介绍 目前微软已经开源了GraphRAG的完整项目代码。对于某一些LLM的下游任务则可以使用GraphRAG去增强自己业务的RAG的表现。项目给出了两种使用方式: 在打包好的项目状态下运行,可进行尝试使用。在源码基础上运行,适合为了下游任…...
使用Refine构建项目(1)初始化项目
要初始化一个空的Refine项目,你可以使用Refine提供的CLI工具create-refine-app。以下是初始化步骤: 使用npx命令: 在命令行中运行以下命令来创建一个新的Refine项目: npx create-refine-applatest my-refine-project这将引导你通过…...
【Docker】安装及使用
1. 安装Docker Desktop Docker Desktop是官方提供的桌面版Docker客户端,在Mac上使用Docker需要安装这个工具。 访问 Docker官方页面 并下载Docker Desktop for Mac。打开下载的.dmg文件,并拖动Docker图标到应用程序文件夹。安装完成后,打开…...
[大语言模型-论文精读] 以《黑神话:悟空》为研究案例探讨VLMs能否玩动作角色扮演游戏?
1. 论文简介 论文《Can VLMs Play Action Role-Playing Games? Take Black Myth Wukong as a Study Case》是阿里巴巴集团的Peng Chen、Pi Bu、Jun Song和Yuan Gao,在2024.09.19提交到arXiv上的研究论文。 论文: https://arxiv.org/abs/2409.12889代码和数据: h…...
提升动态数据查询效率:应对数据库成为性能瓶颈的优化方案
引言 在现代软件系统中,数据库性能是决定整个系统响应速度和处理能力的关键因素之一。然而,当系统负载增加,特别是在高并发、大数据量场景下,数据库性能往往会成为瓶颈,导致查询响应时间延长,影响用户体验…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
