【H.264/AVC视频编解码技术详解】十五、H.264的变换编码(二):H.264整数变换和量化的实现

本文主要是介绍【H.264/AVC视频编解码技术详解】十五、H.264的变换编码(二):H.264整数变换和量化的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《H.264/AVC视频编解码技术详解》视频教程已经在“CSDN学院”上线,视频中详述了H.264的背景、标准协议和实现,并通过一个实战工程的形式对H.264的标准进行解析和实现,欢迎观看!

“纸上得来终觉浅,绝知此事要躬行”,只有自己按照标准文档以代码的形式操作一遍,才能对视频压缩编码标准的思想和方法有足够深刻的理解和体会!

链接地址:H.264/AVC视频编解码技术详解

GitHub代码地址:点击这里


一、H.264的整数变换

变换和量化编码在图像和视频的压缩编码中具有重要作用。通过变换编码,空间域信息可以被转换到频率域,使其能量集中于低频区域,并使其码率相对于空间信号有大幅下降。H.264定义了4×4的整数离散余弦变换(简称整数变换),相对浮点数的离散余弦变换,整数变换具有更低的运算复杂度,更适用于移动设备等适用于低功耗的设备运行。

H.264的整数变换的主要流程如下图所示:

标准的离散余弦变换经过多重运算和修正后,可以用下式表示:

在上式中,右侧的矩阵通常可以表示为常量矩阵,且并入量化中实现,左侧的变换只剩下加减和位移操作。通过这种方式构成了实际的整数变换操作。很明显,相对于原始的DCT变换,该变换的运算量明显要小得多。


二、量化

量化运算实际上并非视频压缩领域首先使用的。在通信信号处理等领域,量化技术早就获得广泛的应用。在模拟-数字信号转化过程中,首先需要对模拟信号按照某个频率进行采样,获得离散时间信号,其取值范围为一个连续区间。此时的离散时间信号尚不能称之为数字信号。

为了对信号进行数字化,必须对离散时间信号进行量化,将连续的取值范围区间也进行离散化。这样的取值位置离散,采样值也是离散的信号称之为数字信号。

在一维信号的量化过程中,我们就已经知道,对于同一模拟信号,使用不同的参数进行量化的结果可能差别非常大,如下图:

上图的量化步长更小,因此失真明显比量化步长更大的下图更小。

在H.264中,量化方法选择了运算较为简单的标量量化。通常标量量化的原理为:

FQ = round(y/QStep)

在上式中,y表示待量化的原始数值,FQ为量化后的值,QP为量化参数。量化的相反过程称之为反量化,其原理为:

y' = QStep × FQ

量化与反量化关键的因素在于量化参数QP。量化参数决定了量化步长,而量化步长决定了量化过程的精细度:QP越小,量化步长越小,量化过程中的真实数据损失越小。QP每增加6,量化步长增大一倍。在H.264中,通常亮度分量的QP取值范围为[0,51],色度分量QP的取值范围为[0,39]。

在H.264的量化过程中,还需要实现变换中的Ef矩阵按元素相乘的操作。量化和矩阵Ef的运算可通过与量化参数QP相关的预定义矩阵实现。

16×16模式与色度分量的变换量化

对于4×4模式的色度分量与16×16模式,其变换量化方法与4×4模式的亮度分量有些不同。

对于16×16的亮度块,变换量化的块包括两个部分:直流部分DC和交流部分AC。16×16亮度块的变换和量化依然要分为16个4×4个子块实现,而与4×4模式不同的是,16×16模式首先抽取出16个4×4系数矩阵的直流分量,组成一个新的4×4矩阵,再对这个直流矩阵进行Hadamard变换后再进行量化。Hadamard变换的原理如下式:

对于4×4模式的色度分量,同样需要抽取直流分量进行Hadamard变换然后再进行量化。然而色度分量的大小为8×8,每个分量分为4个4×4个子块,因此Hadamard变换的直流分量矩阵为2×2大小:

这篇关于【H.264/AVC视频编解码技术详解】十五、H.264的变换编码(二):H.264整数变换和量化的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/415373

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo