当前位置: 首页 > news >正文

AV1技术学习:Transform Coding

对预测残差进行变换编码,去除潜在的空间相关性。VP9 采用统一的变换块大小设计,编码块中的所有的块共享相同的变换大小。VP9 支持 4 × 4、8 × 8、16 × 16、32 × 32 四种正方形变换大小。根据预测模式选择由一维离散余弦变换 (DCT) 和非对称离散正弦变换 (ADST) 核组合构成的一组可分离的二维变换类型。AV1继承了VP9中的变换编码方案,并在变换块大小和变换核方面扩展了其灵活性。

一、Transform Block Size

AV1 将最大变换块大小扩展到 64 × 64。最小变换块大小仍然是 4×4。此外,还支持 N × N/2、N/2 × N、N × N/4、N/4 × N 的矩形变换块大小。

AV1 对所有的帧间编码块采用递归变换块划分方法,捕获局部固定区域,提高变换编码效率。
初始变换块大小与编码块大小匹配,除非编码块大小大于64 × 64,在这种情况下,使用 64 × 64 变换块大小。对于亮度分量,最多允许划分两次。N × N、N × N/2、N × N/4编码块的递归划分规则如下图所示。

帧内编码块继承了统一的变换块大小方法,即所有变换块具有相同的大小。与帧间编码的情况类似,最大变换块大小与编码块大小相匹配,并且对于亮度可以向下划分两次。方形和矩形编码块大小的可用选项如下图所示。

 色度分量在统计上的变化要小得多。因此,变换块尺寸设置为使用可用最大变换块尺寸。

二、Transform Kernels

和 VP9 中每个编码块只有一个变换核类型不同,AV1允许每个变换块可以独立选择自己的变换核。将二维可分离变换核扩展为四个一维变换核的组合:DCT、ADST、flipped ADST (FLIPADST)和 identity transform (IDTX),得到16个二维变换核。FLIPADST 是 ADST 变换核的反转。变换核的选择是基于统计和适应各种边界条件。DCT核被广泛应用于信号压缩,并且近似于一致相关数据的最优线性变换 Karhunen-Loeve 变换(KLT)。另一方面,ADST 近似于假设单侧平滑的 KLT,因此适合编码一些帧内预测残差。类似地,FLIPADST 从另一端捕获单侧平滑。此外 IDTX 可以适应在块中包含尖锐变换并且DCT和ADST都无效的情况。此外,IDTX与其他一维变换相结合,提供了一维变换本身,因此可以更好地压缩残差中的水平和垂直模式。下图给出了维度 N = 8 时四个一维变换核对应的波形。

即使使用 SIMD ,逆变换也占解码器计算成本的很大一部分。蝶形结构允许在普通矩阵乘法上大幅度减少乘法运算,即从O(N2)减少到O(NlogN),其中N是变换维数。因此,它非常适合大的变换块大小。注意,由于推导的原始 ADST 无法对蝶形结构进行分解,因此 AV1 在变换块大小为 8 × 8 及以上时采用了和图24所示的 ADST 的变体。

当变换块大小较大时,边界效应不明显,此时所有正弦变换的变换编码增益基本收敛。因此只有 DCT 和 IDTX 用于尺寸为32 × 32及以上的变换块。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • LeetCode:x的平方根(C语言)
  • Android 自定义系统版本号
  • 数学建模(5)——逻辑回归
  • 『大模型笔记』LLM秘密:温度、Top-K和Top-P抽样技术解析!
  • 服务器相关总结
  • 2024 中国大数据交易平台发展现状调研简报
  • Leetcode3208. 交替组 II
  • 逆向案例二十八——某高考志愿网异步请求头参数加密,以及webpack
  • Qwen-Agent
  • 【MQTT(2)】开发一个客户端,ubuntu版本
  • 亚信安全终端一体化解决方案入选应用创新典型案例
  • mq基础入门
  • CDGA数据治理工程师证书怎么样?如何报名?考试难不难?通过率高吗?
  • layui table 浮动操作内容收缩,展开
  • HTML5+ push消息推送
  • @jsonView过滤属性
  • 2017-08-04 前端日报
  • C学习-枚举(九)
  • Date型的使用
  • HTTP中GET与POST的区别 99%的错误认识
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • js ES6 求数组的交集,并集,还有差集
  • JS题目及答案整理
  • Linux Process Manage
  • Otto开发初探——微服务依赖管理新利器
  • RxJS: 简单入门
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 工作手记之html2canvas使用概述
  • 离散点最小(凸)包围边界查找
  • 如何在 Tornado 中实现 Middleware
  • 软件开发学习的5大技巧,你知道吗?
  • 通过几道题目学习二叉搜索树
  • 怎么把视频里的音乐提取出来
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 阿里云ACE认证学习知识点梳理
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​​​【收录 Hello 算法】9.4 小结
  • (7) cmake 编译C++程序(二)
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一)Docker基本介绍
  • (译)计算距离、方位和更多经纬度之间的点
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET Micro Framework初体验(二)
  • .Net mvc总结
  • .net访问oracle数据库性能问题
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .net实现头像缩放截取功能 -----转载自accp教程网