一个外贸网站要多大的空间比较好/做一个企业网站大概需要多少钱
运动补偿(Motion Compensation,MC)是帧间预测最基础的工具,AV1支持两种运动补偿方式,一种是传统的平移运动补偿,另一种是仿射运动补偿。下面分别介绍这两种运动补偿方法。
平移运动补偿
平移运动补偿是最传统的运动补偿方式,H.264/H.265的运动补偿都是这种方式,待编码块根据运动向量(Motion Vector,MV)在参考帧中寻找预测块,这个过程便是运动搜索。
AV1的运动搜索支持1/8像素精度,对于非整像素位置使用可分离的插值滤波器生成子像素。
图1 子像素插值
子像素的生成过程如图1,首先进行水平插值,然后再进行垂直插值。对于插值滤波器,如果截止频率高则会更多的保留高频分量,如果截止频率低则会去除更多的高频分量。在VP9中,插值滤波器可以自适应的在3种8抽头滤波器中选择,每种滤波器对应不同的截止频率,选定一种滤波器后水平和垂直方向都使用该滤波器。AV1在VP9的基础上允许水平和垂直方向选择不同的滤波器,每个方向可以从3种滤波器中选择,截止频率由低到高分别为SMOOTH、REGULAR和SHARP。图2是水平和垂直方向选择各种滤波器的热力图。
图2 插值滤波器热力图
为了降低解码复杂度,SMOOTH和REGULAR使用6抽头滤波器,SHARP使用8抽头滤波器。三种滤波器对应的半像素插值的滤波系数如下,
为了降低最坏情况下的复杂度(所有块都划分到4x4),某一维度小于等于4的块只允许使用两种4抽头滤波器进行半像素插值且没有SHARP滤波器。
仿射运动补偿
仿射模型参数估计
除了平移运动,视频内容很可能还包含旋转、缩放等仿射运动,AV1支持仿射运动补偿,通过仿射变换模型将(x,y)处的像素投影到(x',y'),
(1)
其中h_ij是仿射变换系数,(h13,h23)是平移因子和平移运动中的mv作用相同,h11和h22控制着水平和垂直方向的缩放,h11、h12、h21、h22共同控制旋转。
AV1共有两种affine mode,一种是全局affine mode,和参考帧相绑定,编码块可以根据参考帧索引使用对应的全局模型。平移因子(h13,h23)使用15比特精度编码,4个非平移因子h11、h12、h21、h22使用12比特精度编码。全局模型主要捕获整体的旋转和缩放特征,更关注整体的运动。
另一种affine mode是编码块级的局部模型,然而如果对每个块都传输affine参数将会消耗大量码率,因此AV1使用空域相邻块的mv来估计affine mode参数。局部模型中平移因子(h13,h23)类似于mv在码流中显示传输,其他4个参数使用相邻块mv估计得到。编码器会扫描最近相邻块,寻找和当前块参考帧相同的块作为候选项(最多8个候选项),利用候选项的mv来计算仿射模型参数。对每个候选项计算它的中心坐标相对当前块中心坐标的偏移当作变换前的位置,这个偏移值加上两个块间的mvd作为变换后的位置,用最小二乘法计算变换前后位置即可求解出模型参数。
图3 局部仿射模型参数估计
以图3为例,(xi,yi)是第i个块的中心坐标,mvi是对应运动向量。按Blk1到Blk7的顺序遍历相邻块,选择和当前块参考帧相同的块,这里选中Blk1、Blk2、Blk5和Blk7。
首先计算中心坐标偏移值作为变换前的位置,
对应变换后为位置为,
由仿射变换公式(1)可得,
将4个块变换前后的坐标带入上面公式即可用最小二乘法求得仿射变换的非平移参数h11、h12、h21、h22。
注意,为了保证空域相关性若mvd任何一个分量的绝对值超过8个像素则不使用该参考块,同时如果有效参考块数量小于2则无法用最小二乘法求解则不能使用局部仿射模型。
仿射运动估计
得到仿射模型后便可以对编码块使用仿射运动估计,即通过仿射运动找到每个像素在参考图像中对应的坐标得到预测像素。仿射运动只对8x8及以上的块才能使用,对于大于8x8的块首先将其划分为8x8子块,对每个8x8子块的中心坐标通过平移运动因子(h13,h23)计算在参考图像中对应的坐标,如同4中当前块中心(x0,y0)在参考图像中对应的坐标为(x1,y1),块中其他像素(x,y)以(x1,y1)为中心进行旋转和缩放得到仿射变换后的坐标(x',y'),
图4 仿射预测
AV1中仿射预测是1/64像素精度,使用8抽头滤波器(角点位置使用6抽头滤波器)进行分像素插值。如图1所示,普通的平移运动可以复用子像素插值的中间结果从而减少计算量。对于8x8的块插值,首先利用15x15区域内的像素使用水平插值生成15x8的中间结果,然后在中间结果上使用垂直插值生成8x8块。水平插值需要(15x8)x8=960次乘法,垂直插值需要(8x8)x8=512次乘法,总共需要1472次乘法。
而仿射变换后的每个像素偏移值可能不同,导致无法复用中间插值结果,如果直接进行插值计算需要64x8x8=4096次乘法。为了减少计算量,仿射变换可以通过两次错切变换完成(关于错切的定义可自行百度),
上面式子的右边第一部分是垂直错切矩阵,第二部分是水平错切矩阵。对8x8块的仿射变换分为两个阶段,首先使用水平错切求得15x8的中间结果获得水平位置偏移值
然后在中间结果上使用垂直错切得到垂直偏移值
最终得到8x8的预测块,总共需要1472次乘法运算。
为了使插值使用的像素限制在15x15区域内,对仿射参数需要满足下面两个条件
相关文章:

AV1帧间预测(二):运动补偿
运动补偿(Motion Compensation,MC)是帧间预测最基础的工具,AV1支持两种运动补偿方式,一种是传统的平移运动补偿,另一种是仿射运动补偿。下面分别介绍这两种运动补偿方法。 平移运动补偿 平移运动补偿是最传统的运动补偿方式,H.26…...

数学建模(5)——逻辑回归
一、二分类 import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklea…...

【C++高阶】:深入探索C++11
✨ 心似白云常自在,意如流水任东西 🌏 📃个人主页:island1314 🔥个人专栏:C学习 🚀 欢迎关注:👍点赞 Ǵ…...

6. 自定义Docker镜像
如何自定义Docker镜像:从基础到实践 Docker作为一个容器化平台,使得应用的打包、分发和运行变得更加高效和便捷。本文将详细介绍如何自定义一个Docker镜像,包括镜像的构成、分层原理、创建自定义镜像的具体步骤,并演示如何打包和…...

「12月·长沙」人工智能与网络安全国际学术会议(ISAICS 2024)
人工智能与网络安全国际学术会议(ISAICS 2024)将于2024年12月20日-2024年12月22日在湖南长沙召开。会议中发表的文章将会被收录,并于见刊后提交EI核心索引。会议旨在在为国内与国际学者搭建交流平台,推进不同学科领域的融合发展,就当今人工智能与网络安全范畴内各学…...

【技术支持案例】使用S32K144+NSD8381驱动电子膨胀阀
文章目录 1. 前言2. 问题描述3. 理论分析3.1 NSD8381如何连接电机3.2 S32K144和NSD8381的软件配置 4.测试验证4.1 测试环境4.2 测试效果4.3 测试记录 1. 前言 最近有客户在使用S32K144NSD8381驱动电子膨胀阀时,遇到无法正常驱动电子膨胀阀的情况。因为笔者也是刚开…...

第二期:集成电路(IC)——智能世界的微观建筑大师
嘿,小伙伴们!👋 我是你们的老朋友小竹笋,一名热爱创作和技术的工程师。上一期我们聊了聊AI芯片,这次我们要深入到更微观的层面,来探究集成电路(IC)的世界。准备好一起探索了吗&#…...

基于物联网的区块链算力网络,IGP/BGP协议
目录 基于物联网的区块链算力网络 IGP/BGP协议 IGP(内部网关协议) BGP(边界网关协议) 内部使用ISP的外部使用BGP的原因 一、网络规模和复杂性 二、路由协议的特性 三、满足业务需求 四、结论 基于物联网的区块链算力网络 通 过 多个物联网传感器将本地计算…...

每日一题~960 div2 A+B+C(简单奇偶博弈,构造,观察性质算贡献)
A题意: N 长的数组。 一次操作: 最开始的mx 为零。 选出一个数(使得这个数>mx) ,之后将mx 更新为这个数,将这个数置为零。 不能做这个操作的,输。 问是否有先手赢的策略。有的话,输出yes 否则no 当时一…...

音视频入门基础:H.264专题(17)——FFmpeg源码获取H.264裸流文件信息(视频压缩编码格式、色彩格式、视频分辨率、帧率)的总流程
音视频入门基础:H.264专题系列文章: 音视频入门基础:H.264专题(1)——H.264官方文档下载 音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…...

Aboboo一些操作
常用快捷键⌨ 快捷键/操作方式 功能 鼠标中键/Esc 进入/退出全屏 空格/Tab 暂停/恢复播放 左/右箭头 快退/快进 Ctrl-左/右箭头 30秒快退/快进 Alt-左/右箭头 60秒快退/快进 Ctrl-Alt-左/右箭头 播放速率调节 PageUp/PageDown 上一句/下一句 上下箭头/滚轮 …...

获取行号LineNumberReader
(每日持续更新)jdk api之LineNumberReader基础、应用、实战-CSDN博客...

python数据结构与算法
0.时间复杂度和空间复杂度 快速判断算法时间复杂度:算法运行时间 1.确定问题规模n 2.循环减半 logn 3.k层关于n的循环 n^k 空间复杂度:评估算法内存占用大小 使用几个变量 O(1) 使用长度为n的一维列表 O(n)…...

大数据学习之Flink基础(补充)
Flink基础 1、系统时间与事件时间 系统时间(处理时间) 在Sparksreaming的任务计算时,使用的是系统时间。 假设所用窗口为滚动窗口,大小为5分钟。那么每五分钟,都会对接收的数据进行提交任务. 但是,这里有…...

C++基础语法:友元
前言 "打牢基础,万事不愁" .C的基础语法的学习."学以致用,边学边用",编程是实践性很强的技术,在运用中理解,总结. 以<C Prime Plus> 6th Edition(以下称"本书")的内容开展学习 引入 友元提供了一种特别的方式,访问对象私有数据. 友元有三…...

【大模型系列】Video-LaVIT(2024.06)
Paper:https://arxiv.org/abs/2402.03161Github:https://video-lavit.github.io/Title:Video-LaVIT: Unified Video-Language Pre-training with Decoupled Visual-Motional TokenizationAuthor:Yang Jin, 北大&#x…...

【总结】nacos作为注册中心-应用启动失败:NacosDiscoveryProperties{serverAddr=‘127.0.0.1:8848‘……
问题现象 启动springboot应用时报错,能够读取到nacos配置,但是使用nacos作为注册中心,应用注册到nacos失败。 应用配置bootstrap.properties如下: # 应用编码,安装时替换变量 spring.application.namedata-center #…...

C语言——数组和排序
C语言——数组和排序 数组数组的概念数组的初始化数组的特点 排序选择排序冒泡排序插入排序 二分查找 数组 数组的概念 数组是一组数据 ; 数组是一组相同类型的数据或变量的集合 ; 应用场景: 用于批量的处理多个数据 ; 语法&…...

QEMU 新增QMPHMP指令【原文阅读】
文章目录 0x0 QEMU原文0x10x11 How to write monitor commands0x12 Overview0x13 Testing 0x20x21 Writing a simple command: hello-world0x22 Arguments 0x30x31 Implementing the HMP command 0x40x41 Writing more complex commands0x42 Modelling data in QAPI0x43 User D…...

【Linux】全志Tina配置屏幕时钟的方法
一、文件位置 V:\f1c100s\Evenurs\f1c100s\tina\device\config\chips\c200s\configs\F1C200s\sys_config.fex 二、文件内容 三、介绍 在此处可以修改屏幕的频率,当前为21MHz。 四、总结 注意选择对应的屏幕的参数,sdk所支持的屏幕信息都在此文件夹中…...

探索WebKit的CSS表格布局:打造灵活的网页数据展示
探索WebKit的CSS表格布局:打造灵活的网页数据展示 CSS表格布局是一种在网页上展示数据的强大方式,它允许开发者使用CSS来创建类似于传统HTML表格的布局。WebKit作为许多流行浏览器的渲染引擎,提供了对CSS表格布局的全面支持。本文将深入探讨…...

信号的运算
信号实现运算,首先要明确,电路此时为负反馈电路,当处于深度负反馈时,可直接使用虚短虚断。负反馈相关内容可见:放大电路中的反馈_基极反馈-CSDN博客https://blog.csdn.net/qq_63796876/article/details/140438759 一、…...

Vue3知识点汇总
创建项目 npm init vuelatest // npm create vitelatestVue文件结构 <!-- 开关:经过语法糖的封装,容许在script中书写组合式API --> <!-- setup在beforeCreate钩子之前自动执行 --> <script setup><!-- 不再要求唯一根元素 -->…...

C++设计模式--单例模式
单例模式的学习笔记 单例模式是为了:在整个系统生命周期内,保证一个类只能产生一个实例,确保该类的唯一性 参见链接1,链接2 #include <iostream> #include <mutex>using namespace std;/*懒汉模式:只有在…...

数据驱动未来:构建下一代湖仓一体电商数据分析平台,引领实时商业智能革命
1.1 项目背景 本项目是一个创新的湖仓一体实时电商数据分析平台,旨在为电商平台提供深度的数据洞察和业务分析。技术层面,项目涵盖了从基础架构搭建到大数据技术组件的集成,采用了湖仓一体的设计理念,实现了数据仓库与数据湖的有…...

学习JavaScript第五天
文章目录 1.HTML DOM1.1 表单相关元素① form 元素② 文本输入框类和文本域(input 和 textarea)③ select 元素 1.2 表格相关元素① table 元素② tableRow 元素(tr 元素)③ tableCell 元素 (td 或 th) 1.3…...

pythonGame-实现简单的坦克大战
通过python简单复现坦克大战游戏。 使用到的库函数: import turtle import math import random import time 游戏源码: import turtle import math import random import time# 设置屏幕 screen turtle.Screen() screen.setup(800, 600) screen.tit…...

不太常见的asmnet诊断
asm侦听 [griddb1-[ASM1]-/home/grid]$ srvctl config asm ASM home: <CRS home> Password file: OCR/orapwASM Backup of Password file: OCRDG/orapwASM_backup ASM listener: LISTENER ASM instance count: 3 Cluster ASM listener: ASMNET1LSNR_ASM[rootdb1:/root]# …...

双指针-【3,4,5,6,7,8】
第三题:快乐数 . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/happy-number/算法思想: 1.每个…...

react Vant中如何获取步进器的值
在React中使用Vant(一个轻量、可靠的移动端Vue组件库,虽然原生是为Vue设计的,但如果你在使用的是React版本的Vant,比如通过某些库或框架桥接Vue组件到React,或者是一个类似命名的React UI库),获…...