一、前言

当前研究领域在基于扩散模型的文本到图像生成技术方面取得了显著进展,尤其在视觉条件控制方面。然而,现有方法(如ControlNet)在组合多个视觉条件时存在明显不足,主要表现为独立控制分支在去噪过程中容易引入冲突引导,导致生成图像出现结构扭曲和伪影等问题。这些挑战限制了模型在复杂场景下的表现,亟需一种更高效、统一的控制框架来解决这些问题。

针对这一背景,本文提出的II-NVM模块通过引入基于法向量一致性的映射方法,有效解决了SLAM系统中常见的“双面映射问题”。该模块不仅提升了室内环境下的地图精度和一致性,还为复杂场景中的多条件控制提供了新的解决思路。

二、论文基本信息

论文基本信息图
论文基本信息

  • 论文标题: II-NVM: Enhancing Map Accuracy and Consistency with Normal Vector-Assisted Mapping
  • 论文链接:https://ieeexplore.ieee.org/abstract/document/10966190
  • 项目链接:https://github.com/chengwei0427/II-NVM
  • 核心模块: II-NVM是一种针对SLAM中"双面映射问题"的解决方案,其核心是通过自适应半径KD树法向量计算、增量式体素地图管理以及LRU缓存策略,实现法向量一致性校验,从而准确区分物体正反面,显著提升室内环境下的地图精度和实时性。

➔➔➔➔点击查看原文,获取更多即插即用模块合集

三、模块创新点

3.1 自适应半径KD树法向量计算

基于扫描距离的动态半径调整策略,结合局部点云密度自适应优化搜索范围。通过点数阈值和平面度阈值剔除异常点,提升法向量估计精度,有效解决薄墙、门窗等场景下的双面误匹配问题。

3.2 增量式双面体素地图管理

引入视角一致性判断机制,动态区分并更新正反面数据,避免体素重置带来的计算开销,显著提升双面场景的映射准确性。

3.3 LRU缓存优化的实时更新策略

结合LRU(最近最少使用)算法管理体素块,优先替换低频访问数据以降低内存占用。实验表明,该策略使地图更新时间减少72.85%,总处理效率提升40.28%,兼顾高精度与实时性需求。

四、算法框架与核心模块

4.1 算法框架

整体II-NVM框架图
II-NVM采用分层处理架构,其处理流程包含四个关键阶段:

  1. 数据预处理层:对原始LiDAR点云进行有效距离滤波(保留Dmin<Dscan<DmaxD_{min} < D_{scan} < D_{max}Dmin<Dscan<Dmax范围内的点云)
  2. 法向量计算层:基于自适应半径KD树进行法向量估计(公式1-2)
  3. 体素映射层:通过双面体素结构(公式3-4)实现精确几何表达
  4. 状态优化层:融合IMU数据与法向量约束进行位姿估计

4.2 核心模块

4.2.1 自适应法向量计算

关键技术

  • 动态搜索半径计算:
    r=Dscan−DminDmax−Dmin⋅(Rmax−Rmin)r=\frac{D_{scan}-D_{min}}{D_{max}-D_{min}}\cdot(R_{max}-R_{min})r=DmaxDminDscanDmin(RmaxRmin)
  • 平面度过滤准则:
    δp=λ1λ1+λ2+λ3>δthres\delta_p=\frac{\lambda_1}{\lambda_1+\lambda_2+\lambda_3}>\delta_{thres}δp=λ1+λ2+λ3λ1>δthres

实现流程

  1. 构建KD树加速邻域搜索
  2. 按公式1动态调整搜索半径
  3. 通过PCA计算法向量
  4. 应用公式2剔除非平面点
4.2.2 双面体素管理

核心公式

  • 全局坐标转换:
    Pwi=TPli,nwi=RnliP_{wi}=TP_{li},\quad n_{wi}=Rn_{li}Pwi=TPli,nwi=Rnli
  • 体素索引计算:
    vi=⌊Pwidi⌋v_i=\lfloor\frac{P_{wi}}{d_i}\rfloorvi=diPwi

创新点

  • 体素块存储正反面两组数据
  • 视角一致性判断:
    arccos⁡(nnew⋅nvoxel)<θth\arccos(n_{new}\cdot n_{voxel})<\theta_{th}arccos(nnewnvoxel)<θth
  • LRU缓存管理策略
4.2.3 状态估计优化

目标函数
min⁡T∑(∥TPli−Pmap∥2+α∥nli−nmap∥2)\min_T\sum(\|TP_{li}-P_{map}\|^2+\alpha\|n_{li}-n_{map}\|^2)Tmin(TPliPmap2+αnlinmap2)
其中α\alphaα为法向量约束权重

4.3 模块配置

配置参数量适用场景关键参数
II-NVM-T4.3M嵌入式设备did_idi=0.2m, θth\theta_{th}θth=85°
II-NVM-S19.4M高精度建图did_idi=0.1m, θth\theta_{th}θth=95°

➔➔➔➔点击查看原文,获取更多即插即用模块合集

五、框架适用任务

5.1 室内高精度三维重建任务

  • 适用场景:薄墙结构(5-15cm)、多房间布局等复杂室内环境的实时建图
  • 核心作用:通过法向量一致性校验准确区分墙体正反面,解决传统SLAM在薄壁场景下的双面混淆问题

5.2 机器人导航与避障任务

  • 适用场景:需要厘米级环境感知的自主移动机器人导航
  • 核心作用:增量式体素地图提供实时几何结构更新,LRU策略保障长时间运行的稳定性

5.3 建筑数字化测量任务

  • 适用场景:建筑墙体厚度检测、门窗位置标定等BIM应用
  • 核心作用:自适应半径法向量计算实现亚厘米级墙厚测量精度(表V误差<7%)

5.4 增强现实定位任务

  • 适用场景:AR设备在复杂室内场景的持久定位
  • 核心作用:双面体素结构保留完整几何信息,支持多视角观测下的鲁棒位姿估计

六、实验结果与可视化分析

6.1 轨迹精度对比实验

不同算法在Livox LiDAR数据集上的ATE对比(单位:m)

场景II-NVMCT-LIOFAST-LIO2LOG-LIODLIO
Wall_15cm_a0.01790.02360.05450.08170.1161
Wall_10cm_a0.01370.01550.04920.08240.1145
Room_a0.01440.01500.05700.08380.0729

6.2 墙厚测量精度

在这里插入图片描述
其中a真实点云 b为II-NVM重建 c为传统方法结果

模拟环境墙厚测量误差(单位:cm)

真实厚度II-NVM测量误差率
15.015.073+0.49%
5.05.032+0.64%
3.02.789-7.03%

实验效果:在>5cm墙体中误差<1%,极端薄墙(3cm)误差可控在7%内。*

6.3 实时性分析

LRU缓存策略性能提升
LRU策略显著降低内存访问开销,使系统达到20Hz实时性要求。

➔➔➔➔点击查看原文,获取更多即插即用模块合集

七、即插即用代码

以下是基于提供的代码文件整理的“即插即用”核心模块介绍及关键代码段,涵盖模型加载、推理、训练三大核心场景,突出“即插即用”的便捷性(无需深度配置即可使用)

7.1 法向量计算模块

功能:自动完成点云法向量估计,支持动态半径调整与离群点过滤
核心代码段

def compute_normals(points, d_min=0.5, d_max=50):kdtree = KDTree(points)normals = []for i, point in enumerate(points):radius = (np.linalg.norm(point) - d_min)/(d_max - d_min) * (r_max - r_min)  neighbors = kdtree.query_ball_point(point, radius)if len(neighbors) > ng_thres:  normal = pca_estimate(point[neighbors])if planarity(normal) > delta_thres:  normals.append(normal)return np.array(normals)

即插即用优势

  • 自动适配不同密度点云(无需手动设置固定半径)
  • 内置双阈值过滤(ng_thresdelta_thres),开箱即用

7.2 双面体素管理模块

功能:实现体素块的双面存储与视角一致性判断
核心代码段

class DualVoxel:def add_point(self, point, normal):voxel_idx = hash(point // resolution)  # 体素索引公式(4)if voxel_idx not in self.voxels:self.voxels[voxel_idx] = {'front': [], 'back': []}if self._check_consistency(normal, voxel_idx):  # 视角一致性判断self.voxels[voxel_idx]['front'].append((point, normal))else:self.voxels[voxel_idx]['back'].append((point, normal))

即插即用优势

  • 自动维护正反面数据结构(无需手动区分)
  • 内置一致性判断(默认theta_th=90°),直接调用add_point即可

7.3 LRU缓存模块

功能:自动管理体素块内存,优先释放低频数据
核心代码段

class LRUVoxelCache:def update(self, voxel_idx):if len(self.cache) >= self.capacity:del self.cache[self.lru_queue.pop(0)]  # 移除最久未使用的体素self.lru_queue.append(voxel_idx)self.cache[voxel_idx] = time.time()  # 更新时间戳

即插即用优势

  • 自动内存管理(只需调用update记录访问)
  • 兼容任意体素分辨率(通过capacity参数控制)

➔➔➔➔点击查看原文,获取更多即插即用模块合集

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无人机遥控器教练模式技术要点

一、技术要点1.控制权仲裁机制&#xff1a;核心功能&#xff1a;清晰定义主控权归属逻辑&#xff08;默认为学员&#xff0c;但教练随时可接管&#xff09;。切换方式&#xff1a;通常通过教练遥控器上的物理开关&#xff08;瞬时或锁定型&#xff09;或软件按钮触发。切换逻辑…

【跨服务器的数据自动化下载--安装公钥,免密下载】

跨服务器的数据自动化下载功能介绍&#xff1a;上代码&#xff1a;发现好久没写csdn了&#xff0c;说多了都是泪~~ 以后会更新一些自动化工作的脚本or 小tricks&#xff0c;欢迎交流。分享一个最近在业务上写的较为实用的自动化脚本&#xff0c;可以批量从远端服务器下载指定数…

C++-->stl: list的使用

前言list的认识list是可以在固定时间&#xff08;O&#xff08;1&#xff09;&#xff09;内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0…

本地WSL部署接入 whisper + ollama qwen3:14b 总结字幕

1. 实现功能 M4-1 接入 whisper ollama qwen3:14b 总结字幕 自动下载视频元数据如果有字幕&#xff0c;只下载字幕使用 ollama 的 qwen3:14b 对字幕内容进行总结 2.运行效果 source /root/anaconda3/bin/activate ytdlp &#x1f50d; 正在提取视频元数据… &#x1f4dd; 正在…

《Linux运维总结:Shell脚本高级特性之变量间接调用》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;Linux运维实战总结 一、变量间接调用 在Shell脚本中&#xff0c;变量间接调用是一种高级特性&#xff0c;它允许你通过另一个变量的值来动态地访问…

ABP VNext + Akka.NET:高并发处理与分布式计算

ABP VNext Akka.NET&#xff1a;高并发处理与分布式计算 &#x1f680; 用 Actor 模型把高并发写入“分片→串行化”&#xff0c;把锁与竞态压力转回到代码层面的可控顺序处理&#xff1b;依托 Cluster.Sharding 横向扩容&#xff0c;Persistence 宕机可恢复&#xff0c;Strea…

[激光原理与应用-250]:理论 - 几何光学 - 透镜成像的优缺点,以及如克服缺点

透镜成像是光学系统中应用最广泛的技术&#xff0c;其通过折射原理将物体信息转换为图像&#xff0c;但存在像差、环境敏感等固有缺陷。以下是透镜成像的优缺点及针对性改进方案&#xff1a;一、透镜成像的核心优点高效集光能力透镜通过曲面设计将分散光线聚焦到一点&#xff0…

测试匠谈 | AI语音合成之大模型性能优化实践

「测试匠谈」是优测云服务平台倾心打造的内容专栏&#xff0c;汇集腾讯各大产品的顶尖技术大咖&#xff0c;为大家倾囊相授开发测试领域的知识技能与实践&#xff0c;让测试工作变得更加轻松高效。 本期嘉宾介绍 Soren&#xff0c;腾讯TEG技术事业群质量工程师&#xff0c;负责…

用天气预测理解分类算法-从出门看天气到逻辑回归

一、生活中的决策难题&#xff1a;周末郊游的「天气判断」 周末计划郊游时&#xff0c;你是不是总会打开天气预报反复确认&#xff1f;看到 "25℃、微风、无雨" 就兴奋收拾行李&#xff0c;看到 "35℃、暴雨" 就果断取消计划。这个判断过程&#xff0c;其…

HTTPS服务

HTTPS服务 一、常见的端口 http ------ 80 明文 https ------ 443 数据加密 dns ------ 53 ssh ------ 22 telent ------ 23 HTTPS http ssl或者tls &#xff08;安全模式&#xff09; 二、原理&#xff1a; c&#xff08;客户端…

【Android笔记】Android 自定义 TextView 实现垂直渐变字体颜色(支持 XML 配置)

Android 自定义 TextView 实现垂直渐变字体颜色&#xff08;支持 XML 配置&#xff09; 在 Android UI 设计中&#xff0c;字体颜色的渐变效果能让界面看起来更加精致与现代。常见的渐变有从左到右、从上到下等方向&#xff0c;但 Android 的 TextView 默认并不支持垂直渐变。…

CANopen Magic调试软件使用

一、软件安装与硬件连接1.1 系统要求操作系统&#xff1a;Windows 7/10/11 (64位)硬件接口&#xff1a;支持Vector/PEAK/IXXAT等主流CAN卡推荐配置&#xff1a;4GB内存&#xff0c;2GHz以上CPU1.2 安装步骤运行安装包CANopen_Magic_Setup.exe选择安装组件&#xff08;默认全选&…

前端css学习笔记3:伪类选择器与伪元素选择器

本文为个人学习总结&#xff0c;如有谬误欢迎指正。前端知识众多&#xff0c;后续将继续记录其他知识点&#xff01; 目录 前言 一、伪类选择器 1.概念 2.动态选择器&#xff08;用户交互&#xff09; 3.结构伪类 &#xff1a;first-child&#xff1a;选择所有兄弟元素的…

深入探索 PDF 数据提取:PyMuPDF 与 pdfplumber 的对比与实战

在数据处理和分析领域&#xff0c;PDF 文件常常包含丰富的文本、表格和图形信息。然而&#xff0c;从 PDF 中提取这些数据并非易事&#xff0c;尤其是当需要保留格式和颜色信息时。幸运的是&#xff0c;Python 社区提供了多个强大的库来帮助我们完成这项任务&#xff0c;其中最…

Springboot注册过滤器的三种方式(Order 排序)

一、使用 Component Order&#xff08;简单但不够灵活&#xff09; 适用于全局过滤器&#xff0c;无需手动注册&#xff0c;Spring Boot 会自动扫描并注册。 Component Order(1) // 数字越小&#xff0c;优先级越高 public class AuthFilter implements Filter {Autowired /…

电脑硬件详解

前几天我的风扇转的很快&#xff0c;而且cpu占用率很高&#xff0c;然后我在想怎么回事&#xff0c;然后就浅浅研究了一下电脑的硬件。 笔记本主板&#xff1a; 台式机主板&#xff1a; 图1&#xff1a; 图2&#xff1a; 电脑硬件详解 电脑的硬件是组成计算机系统的物理设…

力扣47:全排列Ⅱ

力扣47:全排列Ⅱ题目思路代码题目 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 思路 又是任意顺序和所有不重复的排列&#xff0c;显而易见我们要使用回溯的办法。 首先是回溯的结束条件即新数组的长度等于nums的长度。这道题的难点…

学习笔记091——如何实现web登录时,密码复杂度校验?(后端)

1、创建工具类 /*** 密码复杂度校验* param password 密码*/ public static void validatePassword(String password) {// 至少8位if (password.length() < 8) {throw new IllegalArgumentException("密码长度至少为8位");}// 包含大小写字母if (!password.matche…

雪花算法snowflake分布式id生成原理详解,以及对解决时钟回拨问题几种方案讨论

一、前言在日趋复杂的分布式系统中&#xff0c;数据量越来越大&#xff0c;数据库分库分表是一贯的垂直水平做法&#xff0c;但是需要一个全局唯一ID标识一条数据或者MQ消息&#xff0c;数据库id自增就显然不能满足要求了。因为场景不同&#xff0c;分布式ID需要满足以下几个条…

【PCB设计经验】去耦电容如何布局?

0805 和 0603 以及更小 封装的电容用作于对中高频的去耦,其摆放位置是有要求的: 一、建议尽可能的靠近主控芯片的 电源管脚放置。 二、使用较宽和短的引线连接到电源和地过孔可以采用如下 图 4–1 中的图 ( 2 )、( 3)、 ( 4 )任意一种方式,避免使用长线或者较细的…