An efficient hardware architecture of integer motion estimation based on early termination and data

An efficient hardware architecture of integer motion estimation based on early termination and data
Zhang, Jun, Yu Zhang, and Hao Zhang. “An efficient hardware architecture of integer motion estimation based on early termination and data reuse for versatile video coding.” Expert Systems with Applications 242 (2024): 122706.

一、现存问题分析

1、由于降低搜索复杂度而降低搜索精度

目前已有的一些整数运动估计算法(如三步和四步搜索算法)通过简化搜索模板来降低运动估计的复杂度。然而,减少搜索点的数量和使用更小的搜索窗口会导致搜索算法陷入局部最优而不是全局最优,从而降低运动搜索的准确性。

2、由于增强搜索精度而导致高计算复杂度和资源消耗

另一种类型的整数运动估计算法(例如菱形搜索算法)采用复杂的搜索模板并增加搜索窗口内的搜索点的数量以提高搜索精度。复杂的运动搜索过程和额外的计算数据导致在视频编码期间显著的计算和存储资源消耗,这是以高成本来实现的。

二、论文提出的方法

1、基于搜索窗口划分的数据重用算法

TZ搜索过程中,搜索窗口重复调用参考像素比例较大,论文提出划分策略。

分析了TZ搜索算法搜索窗口中搜索点的分布,将单元块的大小设置为8×8。较大的块可以被分成几个8×8的子块。搜索窗口被分成两部分:距离大于4的区域称为稀疏区域,距离不大于4的区域称为密集区域。当距离小于或等于4时,满足提前终止以高概率提前结束复杂的搜索过程。搜索点太密集而不能分成8×8个子块。并且对于所有PU大小,仅当步长小于或等于4时才使用搜索窗口中的所有参考像素。

第一个搜索起点被分成四个8×8的子块:A、B、C、D,第二个搜索起点被分成四个8×8的子块:E、F、G、H。当读取参考像素时,不同子块中的重复像素被分配给相应的子块。

在这里插入图片描述

直观展示不同搜索点下的数据重复使用。

在这里插入图片描述

分析了不同尺寸CU在TZ搜索过程中,数据重复使用的占比情况。

在这里插入图片描述

论文想要解决的是从片外重复读取数据这部分消耗,但是片上重新组装的资源消耗是不变的,并没有节省下来。 16×16×8=2KB这个区域分配后就是4KB,大约就有一半是重复的。

参考像素的输入采用的是行输入,但每一次输入的是一行像素,而不是一个完整的8×8块。这些像素会被分配到多个8×8子块中,策略是输入一行,然后first-stage给每个8×8子块分类缓冲,等到一个完整的8×8子块拼接完成输入给下一个阶段进行比较处理。【这里的存储容量的计算感觉有问题,4KB、272bits、80KB的问题都没有说清楚。】核心目的是期望获得一个没有重复调用的8×8子块,然后根据8×8子块进行SAD计算等,那么这个地方根据CU尺寸的不同,扫描顺序就成了一个问题,IME的硬件架构设计也有点问题,上面的SAD Cal不应该只有8个8*8,这样的话并不支持128×128。而且从这个角度来看,需要缓存完整的一个参考像素来做计算,片上资源消耗问题也就出来了。【我现在算出来他的4KB是64×64×8,也就是说缓存一个64×64的参考】

在这里插入图片描述

2、稠密区域/稀疏区域

  1. 稠密区域策略
    • 按行读取和数据复用:参考像素按行读取,并分配到8×8的子块中,以提高数据复用率,减少从外部存储器读取数据的次数。
    • 突发传输:由于像素在行中是连续的,使用突发传输来提高数据传输效率。
    • 提前终止:在搜索过程中,如果SAD值小于等于阈值Tn,则提前终止搜索,减少计算复杂度。
    • 8×8子块划分:稠密区域的搜索窗口被划分为8×8的子块,以便于数据复用和SAD计算。
  2. 稀疏区域策略
    • 按距离分段读取:参考像素按距离从小到大读取,以提高效率。
    • 可变大小子块划分:根据PU的大小,将参考像素划分为四个可变大小的稀疏区域搜索窗口。
    • 数据复用:稀疏区域的搜索窗口也被划分为8×8的子块,以便于数据复用和减少存储资源的消耗。
    • 提前终止:在搜索过程中,如果SAD值小于等于阈值Tn,则提前终止搜索,减少计算复杂度。

Read more

Java基于SpringBoot在线智慧考公系统(编号:7948652)

Java基于SpringBoot在线智慧考公系统(编号:7948652)

前言 随着公务员考试竞争的日益激烈,传统的备考模式已经难以满足考生多样化、个性化的学习需求。考生需要更加灵活、系统化的备考方式,而教育技术的迅速发展为这一需求提供了新的解决方案。基于SpringBoot的在线智慧考公系统应运而生,它结合了Vue、MySQL和Echarts等先进技术,旨在构建一个集学习资源、考试测评和数据分析于一体的智慧平台。这一系统的开发不仅顺应了智慧教育的发展趋势,也为广大考生提供了一个高效、智能的备考平台,有助于提升公务员考试的通过率,减轻备考压力,实现更好的备考体验。 一、项目介绍 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven 二、功能介绍 Java基于SpringBoot的在线智慧考公系统是一种针对公务员考试备考而设计的智能化平台。以下是对该系统的详细介绍: 一、背景与意义 随着公务员考试竞争的日益激烈,传统的备考模式已经难以满足考生多样化、个性化的学习需求。考生需要更加灵

By Ne0inhk
【JAVA 进阶】Spring Boot 中 AOP 切面编程全解析:从基础到实战进阶

【JAVA 进阶】Spring Boot 中 AOP 切面编程全解析:从基础到实战进阶

文章目录 * 一、核心概念 * 1.1 什么是面向切面编程(AOP) * 1.2 Spring AOP 核心术语解析 * 1.3 Spring Boot 中启用 AOP 的标准配置 * 二、切点表达式深度解析与实战写法 * 2.1 基础语法与匹配规则 * 2.1.1 execution 表达式核心语法 * 2.1.2 常用通配符详解 * 2.2 基于注解的切点匹配 * 2.2.1 自定义注解驱动切点 * 2.2.2 组合切点提升复用性 * 三、通知类型深度应用与典型场景实现 * 3.1 环绕通知(@Around)

By Ne0inhk
Java的JDK下载与安装

Java的JDK下载与安装

目录 第一步:Windows的java jdk的配置 https://www.oracle.com/java/technologies/downloads 第二步:安装jdk,下载完成后双击打开安装jdk(傻瓜式安装) 第三步:重点!配置系统的环境变量 第四步:验证Java环境变量是否配置成功 第一步:Windows的java jdk的配置  链接: https://www.oracle.com/java/technologies/downloads  下图是通过网址下载的步骤,先看自己电脑的系统类型,查看电脑是x86还是x64系统的方法: 点击对应的安装包下载按钮,需要勾选上面的框框,不然没法下载 第二步:安装jdk,下载完成后双击打开安装jdk(傻瓜式安装) 只需要点击下一步进行安装,如需更改安装路径,点击“更改”到指定目录,记好文件的路径安装,安装结束,点击关闭即可。安装好jdk后,

By Ne0inhk
【JavaSE-网络部分04】网络原理-传输层:UDP + TCP 可靠性三大核心机制(确认应答 / 超时重传 / 连接管理)

【JavaSE-网络部分04】网络原理-传输层:UDP + TCP 可靠性三大核心机制(确认应答 / 超时重传 / 连接管理)

传输层的学习 传输层我们说过最核心的协议是TCP和UDP。 那么在这里面我们再谈一下端口号。 再谈端口号 我们说端口号是用整数表示,用来区分同一台主机上不同的应用程序。 我们前面在网络编程冲每个程序中的socket创建的时候都需要关联端口号,那么对于服务器来说,端口号是程序员的手动指定的;而对于我们的客户端来说,端口号是系统自动分配的。 端口号是由两个字节表示的无符号整数 * 范围:0~65535。 虽然它的范围呢比较多,但是呢并不是所有的数都能是可以使用的。 * 0~1023 这样的范围通常我们是不使用的,他们叫做知名端口号,是给一些知名的服务器预留的。 虽然现在我们知名的服务器没有太多,已经寥寥无几了,但是呢有两个知名的端口,一定要重点认识。 * 80 ==> 这个是给HTTP服务器留的端口号。 * 443 ==》 这个是给HTTPS服务器留的端口。 问题1:一个进程是否可以绑定多个端口号? 答:这个是完全可以的,但是注意其实不是进程绑定端口号,而是我们的socket绑定端口,我们一个进程中完全可以创建多个socket,所以呢可以同时关联到多个端口号

By Ne0inhk