3D Surface Reconstruction with Enhanced High-Frequency Details

3D Surface Reconstruction with Enhanced High-Frequency Details

核心問題:

  • 當前基于神經隱式表示(如 NeuS)的 3D 表面重建方法,通常采用隨機采樣策略。
  • 這種隨機采樣難以充分捕捉圖像中的高頻細節區域(如紋理、邊緣、光照突變),導致重建的表面過于平滑,缺乏精細的細節。

解決方案:?作者提出了一種名為 FreNeuS 的新方法,核心思想是利用圖像中的高頻信息來引導和約束重建過程,從而增強表面細節的恢復。

主要創新點(貢獻):

  1. 高頻信息引導的動態采樣策略 (High-frequency Dynamic Sampling):

    • 問題:隨機采樣傾向于在平滑(低頻)區域采樣更多,而高頻細節區域采樣不足。
    • 方法:
      • 首先,通過梯度檢測(公式 1)和高頻區域分割(公式 2)生成輸入圖像的高頻圖(High-frequency Map)。該圖清晰地標識出紋理、邊緣等高頻區域(如圖 1, 圖 2)。
      • 根據高頻圖,將圖像像素分為高頻像素集 (I_H) 和低頻像素集 (I_L)。
      • 在訓練時,不再隨機采樣所有像素,而是根據高頻/低頻區域的比例 (w = [1](@context-ref?id=7)|I_H| / |I_L|) 動態分配采樣數量(公式 3):
        • 從高頻區域 (I_H) 采樣 w * B 條光線 (Rays)。
        • 從低頻區域 (I_L) 采樣 (1-w) * B 條光線。
      • 優勢:在保持采樣隨機性的同時,顯著提高了對高頻細節區域的采樣密度,確保模型能獲得更多關于表面細節的信息。
  2. 高頻信息約束機制 (High-frequency Constraint Mechanism):

    • 問題:即使增加了高頻區域的采樣,渲染結果在細節區域仍可能過于平滑(如圖 2 NeuS 結果)。
    • 方法:
      • 基于高頻圖,為每條采樣的光線分配一個權重 w_High^i(公式 4):
        • 如果光線對應像素在高頻區域 (P ∈ I_H),權重為 a (較大值)。
        • 如果光線對應像素在低頻區域 (P ? I_H),權重為 b (較小值)。
      • 在計算渲染顏色損失時,使用這個權重圖 W_High 進行加權(公式 5):
        • L_Frecolor = (1/|S|) Σ ||?_s - C_s|| * W_High
      • 效果:該約束機制迫使模型在優化過程中更加關注高頻區域的重建精度,顯著減小細節區域的渲染誤差。
  3. 高頻增強模塊 (High-frequency Enhancement Module):

    • 這是實現上述兩個核心創新的基礎模塊。
    • 方法:
      • 對輸入 RGB 圖像進行高斯濾波去噪
      • 計算圖像的梯度強度和方向(公式 1:M(x,y), θ(x,y))。
      • 通過灰度閾值分割識別并輸出高頻圖(如圖 1)。
    • 作用:該模塊簡單有效地提取了圖像中蘊含表面細節變化的關鍵信息(深度突變、顏色突變、光照突變等)。

整體流程 (Overview - 圖 1):

  1. 輸入 RGB 圖像。
  2. 通過高頻增強模塊(高斯濾波 -> 梯度計算 -> 邊界追蹤)生成高頻圖
  3. 基于高頻圖進行動態采樣:計算高頻/低頻區域比例 w,按比例 w*B(1-w)*B 分別從高頻和低頻區域采樣光線。
  4. 對每條光線進行采樣點,計算 SDF 值、梯度,并進行體積渲染得到渲染顏色 C_s
  5. 計算損失:
    • 高頻約束顏色損失 L_Frecolor:使用高頻權重圖 W_High 加權的 RGB 損失。
    • Eikonal 正則化損失 L_reg(公式 6):約束 SDF 的梯度模長為 1,保證 SDF 性質。
  6. 總損失 L_total = L_reg + λ * L_Frecolor(公式 7,λ=1.2)用于優化整個模型。

在單視圖三維重建中應用高頻動態采樣與約束機制需解決深度歧義信息缺失問題。


一、高頻動態采樣策略的適配方案

1. 高頻區域識別優化
  • 問題:單視圖缺乏多視角驗證,傳統梯度檢測易受噪聲干擾。
  • 解決方案
    • 預訓練邊緣檢測器:采用HED/HoG等模型生成高頻圖(圖1),替代傳統梯度計算:
      # 示例:HED邊緣檢測(PyTorch)
      model = torch.hub.load('pytorch/vision', 'hed', pretrained=True)
      hed_map = model(input_img)  # 輸出[0,1]概率圖
      
    • 不確定性加權:對低置信度區域(如遮擋邊界)降低采樣權重:$w_{\text{uncertain}} = 1 - \text{hed\_map}(x,y)$
2. 動態采樣改進
  • 問題:單視圖高頻區域占比低(通常<15%),隨機采樣仍可能忽略關鍵細節。
  • 分層采樣策略
    1. 高頻區域:強制采樣至少50%光線(如512條中256條)
    2. 低頻區域:重要性采樣(基于SDF梯度變化率): $p_{\text{low}} \propto \|\nabla \text{SDF}\| \cdot \text{hed\_map}(x,y)$
    3. 遮擋邊界:用MiDaS深度圖識別深度突變區,補充采樣10%光線

二、高頻約束機制的強化設計

1. 自適應權重分配
  • 原論文局限:固定權重(a=1.5, b=0.5)在單視圖中會放大噪聲誤差。
  • 改進方案
    • 基于局部曲率的動態權重$a = \min(2.0, 0.5 + \kappa \cdot 10) $,其中$\kappa$ 為Hessian矩陣估計的曲率,強化高曲率區域約束
    • 損失函數調整:?
2. 多模態高頻融合
  • 問題:RGB高頻信息在單視圖中不足。
  • 融合策略
    • 深度高頻:對MiDaS深度圖做Sobel邊緣檢測,與RGB高頻圖取并集
    • 語義高頻:用SAM分割物體邊界,增強關鍵結構權重:
      combined_hf = torch.max(rgb_hf, depth_hf, sam_mask)
      

三、單視圖重建系統架構

關鍵模塊實現
  1. SDF預測網絡(基于NeuS架構):

    • 輸入:像素坐標+高頻圖通道
    • 輸出:SDF值+RGB顏色
    • 核心代碼:
      class SingleViewNeuS(nn.Module):def __init__(self):self.encoder = ResNet34(pretrained=True)  # 圖像編碼器self.mlp = MLP(in_dim=256+3, out_dim=4)  # 輸入含高頻特征def forward(x, hf_map):feat = self.encoder(x) sdf_color = self.mlp(torch.cat([feat, hf_map], dim=1))return sdf_color[...,:1], sdf_color[...,1:]  # SDF, RGB
      
  2. 訓練流程

    • 每迭代1000次更新一次高頻圖(適應優化過程)
    • 損失函數組合:$\mathcal{L} = \mathcal{L}_{\text{Eikonal}} + \lambda_1 \mathcal{L}_{\text{Frecolor}} + \lambda_2 \|\text{SDF}_{\text{pred}} - \text{SDF}_{\text{coarse}}\|$
      • $\text{SDF}_{\text{coarse}}$:由MiDaS深度推導的粗糙SDF

四、解決單視圖特有挑戰

1. 深度歧義補償
  • 形狀先驗注入
    • 添加CLIP語義損失:$\mathcal{L}_{\text{CLIP}} = 1 - \cos(\text{CLIP}(I_{\text{render}}), \text{CLIP}(I_{\text{input}}))$
    • 預訓練擴散模型生成多視角一致性高頻圖(如Stable Diffusion + ControlNet)
2. 遮擋區域處理
  • 拓撲感知采樣
    • 對遮擋邊界(SAM掩碼)施加2倍采樣權重
    • 在損失中增加空洞懲罰項: $\mathcal{L}_{\text{hole}} = \sum \text{SDF}(x_{\text{occluded}})^2$

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/88254.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88254.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88254.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Science Robotics 耶魯大學開源視觸覺新范式,看出機器人柔性手的力感知

摘要&#xff1a;在機器人視觸覺傳感領域&#xff0c;如何兼顧成本與性能始終是一大挑戰。耶魯大學在《Science Robotics》上發表最新研究&#xff0c;提出了一種“Forces for Free”&#xff08;F3&#xff09;新范式。該研究通過觀測一個經過特殊優化的開源柔性手&#xff08…

關于java項目中maven的理解

我的理解&#xff1a;maven是java項目的依賴管理工具&#xff0c;通過pom.xml文件配置要下載的依賴&#xff0c;settings.xml配置maven下載的鏡像沒有就默認在maven中央倉庫下載依賴&#xff0c;本地倉庫是存儲下載好的依賴ai:1. 功能定位局限Maven 不只是依賴管理工具&#xf…

緩存三大問題詳解與工業級解決方案

文章目錄緩存三大問題詳解與工業級解決方案概念總覽問題詳解1. 緩存穿透 (Cache Penetration)問題描述典型場景危害2. 緩存擊穿 (Cache Breakdown)問題描述典型場景危害3. 緩存雪崩 (Cache Avalanche)問題描述典型場景危害工業級解決方案緩存穿透解決方案方案1: 布隆過濾器方案…

FreeRTOS 中主函數 while 循環與任務創建的緊密聯系

FreeRTOS 中主函數 while 循環與任務創建的緊密聯系 在嵌入式開發領域&#xff0c;FreeRTOS 是一款被廣泛應用的輕量級實時操作系統&#xff0c;為開發者提供了高效的多任務調度機制。對于初學者來說&#xff0c;理解主函數中的 while 循環與通過 xTaskCreate 創建的任務之間的…

Flutter基礎(前端教程⑦-Http和卡片)

1. 假設后端返回的數據格式{"code": 200,"data": [{"name": "張三","age": 25,"email": "zhangsanexample.com","avatar": "https://picsum.photos/200/200?random1","statu…

pytorch chunk 切塊

目錄 chunk切塊 chunk???????切塊 import torch# 創建一個形狀為 [2, 3, 4] 的張量 x torch.arange(6).reshape(2, 3) print("原始張量形狀:", x.shape) print("x:", x) # 輸出: 原始張量形狀: torch.Size([2, 3, 4])# 沿著最后一個維度分割成 2 …

PCIe基礎知識之Linux內核中PCIe子系統的架構

5.1 先驗知識 驅動模型&#xff1a;Linux建立了一個統一的設備模型&#xff0c;分別采用總線、設備、驅動三者進行抽象&#xff0c;其中設備和驅動均掛載在總線上面&#xff0c;當有新的設備注冊或者新的驅動注冊的時候&#xff0c;總線會進行匹配操作(match函數)&#xff0c;…

2.2 TF-A在ARM生態系統中的角色

目錄2.2.1 作為ARM安全架構的參考實現2.2.2 與ARM處理器內核的協同關系2.2.3 在啟動鏈中的核心地位2.2.4 與上下游軟件的關系與底層固件的協作與上層軟件的接口2.2.5 在ARM生態系統中的標準化作用2.2.6 典型應用場景2.2.1 作為ARM安全架構的參考實現 TF-A&#xff08;Trusted …

Chrome 開發者警告:`DELETE err_empty_response` 是什么?jQuery AJAX 如何應對?

在Web開發的世界里,我們時常會遇到各種各樣的錯誤信息,它們像一個個謎語,等待我們去破解。今天我們要聊的這個錯誤——DELETE err_empty_response,尤其是在使用 jQuery 的 $.ajax 發送 DELETE 請求時遇到,確實讓人頭疼。它意味著瀏覽器嘗試刪除某個資源,卻收到了一個空蕩…

python作業 1

1.技術面試題 &#xff08;1&#xff09;TCP與UDP的區別是什么&#xff1f; 答&#xff1a; TCP建立通信前有三次握手&#xff0c;結束通信后有四次揮手&#xff0c;數據傳輸的可靠性高但效率較低&#xff1b;UDP不需要三次握手就可傳輸數據&#xff0c;數據傳輸完成后也不需要…

centos7 java多版本切換

文章目錄前言一、卸載原來的jdk二、下載jdk三、解壓jdk三、配置環境變量四、切換JAVA環境變量前言 本來是為了安裝jenkins&#xff0c;安裝了對應的java,node,maven,git等環境&#xff0c;然后運行jenkins時候下載插件總是報錯&#xff0c;我下載的jenkins是 2.346.1 版本&…

用Python和OpenCV從零搭建一個完整的雙目視覺系統(四)

本系列文章旨在系統性地闡述如何利用 Python 與 OpenCV 庫&#xff0c;從零開始構建一個完整的雙目立體視覺系統。 本項目github地址&#xff1a;https://github.com/present-cjn/stereo-vision-python.git 在上一篇文章中&#xff0c;我們完成了相機標定這一最關鍵的基礎步驟…

STM32-中斷

中斷分為兩路&#xff1a;12345用于產生中斷&#xff1b;678產生事件外設為NVIC設計流程&#xff1a;使能外設中斷設置中斷優先級分組初始化結構體編寫中斷服務函數初始化結構體&#xff1a;typedef struct {uint8_t NVIC_IRQChannel; 指定要使能或禁用的中斷通道例如: TIM3_I…

Shader面試題100道之(61-80)

Shader面試題&#xff08;第61-80題&#xff09; 以下是第61到第80道Shader相關的面試題及答案&#xff1a; 61. 什么是UV展開&#xff1f;它在Shader中有什么作用&#xff1f; UV展開是將3D模型表面映射到2D紋理空間的過程&#xff0c;用于定義紋理如何貼合模型。在Shader中&a…

C#基礎:Winform桌面開發中窗體之間的數據傳遞

1.主窗體using System; using System.Windows.Forms;public partial class MainForm : Form {public MainForm(){InitializeComponent();}// 打開二級窗體private void btnOpenSecondaryForm_Click(object sender, EventArgs e){// 創建二級窗體并訂閱事件SecondaryForm second…

工程改Mvvm

導入CommunityToolKit vs2017只能導入7 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input;namespace WpfApp1.vi…

【HarmonyOS Next之旅】DevEco Studio使用指南(四十二) -> 動態修改編譯配置

目錄 1 -> 通過hook以及插件上下文實現動態配置 2 -> 在hvigorfile.ts中通過overrides關鍵字導出動態配置 3 -> 通過hook以及插件上下文動態配置構建配置 3.1 -> 修改每個hvigorNode中的build-profile.json5 3.2 -> 修改module.json5中的配置信息 3.3 -&g…

Android View事件分發機制詳解

Android 的 View 事件分發機制是處理用戶觸摸&#xff08;Touch&#xff09;事件的核心流程&#xff0c;它決定了觸摸事件如何從系統傳遞到具體的 View 并被消費。理解這個機制對于處理復雜的觸摸交互、解決滑動沖突至關重要。 核心思想&#xff1a;責任鏈模式 事件分發遵循一個…

【CMake】自定義package并通過find_package找到

在一些場景下我們需要編寫一些庫&#xff0c;并希望其他程序可以找到這些庫并引用。 CMake采用package這個概念來解決這個問題。 關于CMake的find_package文章有很多&#xff0c;但這些文章的內容大多不直觀講了一堆講不到點子上&#xff0c;讓人看了一頭霧水。因此我想通過本文…

【MATLAB例程】AOA與TDOA混合定位例程,適用于二維環境、3個錨點的定位|附代碼下載鏈接

本 MATLAB 程序實現了基于 Angle of Arrival (AOA) 與 Time Difference of Arrival (TDOA) 的二維定位方法&#xff0c;通過自適應融合與最小二乘優化&#xff0c;實現對未知目標的高精度估計。本例中固定使用了 3 個基站&#xff08;錨點&#xff09;&#xff0c;算法框架支持…