IEEE 2025 | 重磅開源!SLAM框架用“法向量+LRU緩存”,將三維重建效率飆升72%!

一、前言

當前研究領域在基于擴散模型的文本到圖像生成技術方面取得了顯著進展,尤其在視覺條件控制方面。然而,現有方法(如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=Dmax??Dmin?Dscan??Dmin???(Rmax??Rmin?)
  • 平面度過濾準則:
    δ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?=?di?Pwi???

創新點

  • 體素塊存儲正反面兩組數據
  • 視角一致性判斷:
    arccos?(nnew?nvoxel)<θth\arccos(n_{new}\cdot n_{voxel})<\theta_{th}arccos(nnew??nvoxel?)<θ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?(TPli??Pmap?2+αnli??nmap?2)
其中α\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 )任意一種方式,避免使用長線或者較細的…