【论文解读】A Fast Sub-pixel Motion Estimation Algorithm for H.264/AVC Video Coding

news2024/11/26 12:37:08

简介

题目:A Fast Sub-pixel Motion Estimation Algorithm for H.264/AVC Video Coding
原文:https://ieeexplore.ieee.org/document/5688303
级别:SCI
年份:2011 年
机构:上海交通大学
结论:亚像素搜索计算复杂度极大的降低,减少超过 50%的亚像素搜索点,同时质量退化可忽略不计;
资源下载: https://download.csdn.net/download/yanceyxin/88036738

论文解读

摘要

运动估计是视频编码最耗时的模块之一,与传统视频编码标准中 ME 相比,H264 中使用多个分区尺寸使得运动估计更加耗时;快速算法降低了整像素搜索的复杂度,亚像素搜索的计算开销变得相当大,该篇论文提出在分块选择前进行“粗”亚像素选择,然后对最佳分块进行“精”亚像素搜索,与传统算法相比,可以减少 50%的亚像素搜索点,且质量下降可忽略不计。

核心原理

大多数的亚像素 ME 优化方法都是基于单峰曲面假设下,分两步进行亚像素搜索:预测一个亚像素 MV(SPMV)、在 SPMV 小区域范围内搜索获取最终的亚像素 MV;这些方法可以总结为两种,即时空信息和 SAD 面建模;

两种获取 SPMV 的方法:时空信息(如公式 1其中 β=4 在 1/4 像素, β=8在 1/8 像素 )、SAD 建模(如公式 4)
在这里插入图片描述
快速亚像素 ME 方法对比: 实践证明,只有 MB 最佳分区才需要精确的亚像素 MV ,其他分区仅用于模式间的选择;如果亚像素的SAD足以选择最佳分区,则不需要在第一阶段搜索更精确的亚像素点。整像素 SAD 平面信息可以被使用决定是否关闭亚像素 SAD,因此文章提出 Rough-strategy-based Fast Sub-pixel Motion Estimation algorithm(RFSME)。
在这里插入图片描述
RFSME
算法总流程:
在这里插入图片描述
使用 SAD 和 MV 的比特数作为 COST:
在这里插入图片描述
■ step1: 整像素最佳 COST 位置和他的4 相邻整像素位置的两平均 COST(水平平均、垂直平均),如果相差很小,意味着 COST 平面是十分平坦 flat,此时的最佳整像素 COST 是接近最佳亚像素 COST,因此此时的整像素最佳 COST 足以去估计最佳亚像素 COST,这时候当前分块的亚像素 ME就可以被跳过;此时的整像素最佳分块位置被使用在 step4;如下,其中 blocktype(i)包括 8x8、8x4、4x8、4x4,blocktype(ii)包括 16x16、8x16、8x16;th1、th2、rF 分别为 10、20、5/4。
在这里插入图片描述
■ step2: 如果在 step1 中 COST 平面不平坦flat,那么两个亚像素 MV 预测方法被使用得到两个 SPMVs,最小COST 被选择,命名为 COSTstep2,对应的 MV 被定义为 MVstep2。表 1 列出的是最佳亚像素 MV 和 MVstep2 的绝对距离,可以表明 MVstep2 可以对最佳亚像素提供一个好的预测。COSTstep2 和最佳整像素 COST(COSTbest_full_pixel的绝对差被定义 D=|COSTstep2 - COSTbest_full_pixel|;如果 D 很小,意味着COST 没有减少太多,那么此时 COSTstep2 已经足够接近最佳亚像素 COST 来作为模式选择了。此时 COSTstep2 被应用在 step4 中的位置选择。下式中rD 取值 3/2,COSTmin_step2 = min(COSTstep2, COSTbest_full_pixel)。
在这里插入图片描述
■ step3: 如果 D 是大的,COSTstep2 可能不接近最佳亚像素 COST,此时 MVstep2 相邻的垂直两个、垂直两个点被检测,通过公式 8-9 来确定选择最终的 1/4 像素点。
在这里插入图片描述
■ step4: 从 step1、2、3 选址出来的 COSTrough 被使用用来选择最佳分块位置;
■ step5: 小范围的亚像素进一步精搜索被应用在 COSTrough 周围,选择 8 个 1/4 像素在 COSTrough 周围搜索,因为此时只对最佳分区执行,所以每个位置的平均搜索点是减少的相比传统的快速亚像素搜索算法。

结果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】unordered_map、unordered_set 模拟实现

文章目录 概念框架实现正反迭代器Find()、Insert() 、Erase()unordered_map 的 operator[ ] 源代码HashTable.hunordered_map.hunordered_set.h 概念 unordered_set 是含有 Key 类型唯一对象集合的关联容器。搜索、插入和移除拥有平均常数时间复杂度。在内部,元素并…

HTML页面通过Web3JS连接智能合约并调用其中接口

之前我们学习solidity 并用它编写了智能合约 登上区块链 然后也做了基本的测试 但是 其实在web3时代 前端依旧扮演者非常重要的角色 我们现在就来打通web3 从合约到页面的一个管理 首先 我们还是将自己的ganache环境起起来 然后 在我们之前智能合约的项目终端执行 truffle m…

Python-Go 文件操作和异常操作

目录 python的异常操作 异常是什么? 错误与异常的区别: 常见异常 Traceback 错误回溯 异常处理 异常处理的定义(try - except) 扩展(可以捕获不同的错误、多except语句)(else - finall…

PFC离散元仿真,3DEC非连续岩石力学与结构问题分析

一、背景: 随着我国经济的发展,岩土工程涉及的要求从材料、理论到施工工艺都提出了全方位的系统升级。在岩土工程分析设计中,3DEC和PFC软件快速建模也一直是岩土工作者所关注的问题。3DEC是非连续岩石力学与结构问题的首选分析程序&#xff0…

C语言图书管理系统

一,开发环境 操作系统:windows10, windows11, linux, mac等。开发工具:Qt, vscode, visual studio等开发语言:c 二,功能需求 1. 图书信息管理: 这个功能的主要任务是保存和管理图书的所有信息。这应该包…

C++数据结构X篇_09_C++实现栈的顺序存储与链式存储

本篇参考C实现队列的顺序存储与链式存储整理,先搞懂结构框架,后期根据视频利用c对内容实现,也可以对c有更高的提升。 文章目录 1. 顺序存储2. 链式存储 队列是一种特殊的数据存储结构,与栈不同的是其数据存储与访问顺序为先进先出…

Python教程:全局变量和局部变量

变量的作用域始终是Python学习中一个必须理解掌握的环节,下面我们从局部变量和全局变量开始全面解析Python中变量的作用域。 所谓局部变量,指的是定义在函数内的变量。定义在函数内的变量,只能在函数内使用,它与函数外具有相同名…

GlasgowSmile-v2靶机复盘

GlasgowSmile-v2靶机复盘 这是一个非常难的靶机 这个靶机是直接给我们ip地址的,所以就不用去找ip地址了,直接对ip进行一个扫描。 发现开通了22,80,83,但是8080端口是个开启我们无法访问的状态,所以可以猜…

【Redis】—— Redis的RDB持久化机制

💧 【 R e d i s 】—— R e d i s 的 R D B 持久化机制 \color{#FF1493}{【Redis】 —— Redis的RDB持久化机制} 【Redis】——Redis的RDB持久化机制💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞…

Springboot -- Mybatis + Mybatis Generate + KingbaseES8(pgsql) + 静态多数据源

🏛🏛🏛 以下内容记录一次 Springboot 项目整和人大金仓数据库的过程 🏛🏛🏛 文章目录 KingBaseES8SpringBoot整合KES8(pgsql)修改pom文件配置多数据源配置文件配置类 代码生成器配置JsonTypeHandler修改配…

[HDCTF2019]Maze(初识逆向)

下载附件解压,为了方便,我将文件名改为了maze.exe 一般我们先查壳,确实存在UPX壳 对于刚接触逆向的我,一键脱掉哈哈哈 不过还是要说一下,这种脱壳处理有可能会产生其它损坏或者影响,需要进行一定的修复 可…

Visio使用

1.Visio中字母上下标快捷键: 选中要成为上标的文字,ctrlshift"" 选中要成为下标的文字,ctrl"" 2.导入CAD文件 从 AutoCAD 版本 2007 到 2017 导入 .dwg 或 .dxf 文件。 3.编辑CAD文件 右键图形—CAD绘图对象—转换 选择高级 将默认选项改…

居安思危,测试员被裁了还能干什么?

2019年迎来了一大波大佬级公司裁员,包括了阿里、美团、知乎……。它们是各行业的独角兽公司,既是媒体关注的焦点,也是代表了行业风向的指针。 2019年的互联网,已经过了蓬勃发展期,接下来要迎接的更加平稳、规律的发展…

ECM能耗管理云平台

能源是企业运营中不可或缺的要素之一,直接影响企业的成本和竞争力。能源消耗和碳排放不断增长,对环境和可持续发展造成了严重影响。越来越多的企业开始关注并实施能耗管理云平台系统,以实现更高的能源效率、降低碳排放。 ECM能耗管理云平台系…

数分面试题:魔方涂色

问题:现在有一个正方体,现在有6种颜色,给正方体的每一面涂一种颜色,有多少种涂色方法。 注意!正方体是可以旋转的,如果旋转正方体之后,涂色效果和另一种涂色效果相同,那么算是一种涂…

车载开发月薪10k与30k的区别,就是CAN总线技术

CAN(Controller Area Network)总线是一种实时通信协议,是一种广泛应用于车载电子系统中的网络技术。CAN总线技术最初是由德国Bosch公司开发的,用于汽车电子控制系统(ECU)之间的通信,它能够在车辆…

Linux的shell脚本

Linux的shell脚本 😇博主简介:我是一名正在攻读研究生学位的人工智能专业学生,我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任何问题或困惑,欢迎随时来交流哦!😄 ✨座右铭&…

Ai数字人浪潮来袭,超写实数字人系统出世,为企业打造定制化服务

数字人概念首次出现在80年代,最初在音乐领域应用,使用手绘技术进行生成。随着时间的推移,传统手绘被CG和动作捕捉等技术取代,从而使虚拟数字人的制作变得更加简化并降低成本。因此,虚拟数字人产业进入产业化探索阶段。…

SpringBoot快速实践 --Ⅰ

文章目录 启动一个SpringBoot项目如何替换内嵌容器玩转SpringBoot配置全局异常处理过滤器拦截器使用Lombok简洁代码使用IDEA HTTP Client进行接口调试 启动一个SpringBoot项目 如果你觉得使用官网来创建太慢了,那你直接把以前项目的依赖粘过来就行了: …

pytorch LBFGS

LBFGS pytorch的LBFGS也是一个优化器 但是与一般的优化器不同 平常我们的顺序是 losscriterion(predict, gt) optim.zero_grad() loss.backward() optim.step()而LBFGS是 def closure():optim.zero_grad()loss criterion(predict, gt)loss.backward()return lossoptim.step…