当前位置: 首页 > news >正文

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.dtcms.com/a/272911.html

相关文章:

  • 【成长】-进步论
  • GlobalMapper用DSM转DEM
  • Zotero+zotmoov+坚果云同步
  • mysql索引底层原理
  • 智慧城市网络架构升级与SD-WAN技术应用实践
  • C++11 划分算法原理解析:is_partitioned、partition_copy与partition_point
  • 设备管理系统架构演进:从本地化部署到云端协同的 2025 新趋势
  • [Java实战]Spring Boot 3实战:使用QQ邮箱发送精美HTML邮件(四十三)
  • k8s之Helm详细讲解
  • 壁仞 k8s 兼容
  • 强化学习算法基准测试:6种算法在多智能体环境中的表现实测
  • 【oscp】超长攻击链vulhub靶机,TommyBoy1dot0
  • 开关电源和线性电源Multisim电路仿真实验汇总——硬件工程师笔记
  • 网络安全(初级)(1)
  • 【数据结构与算法】数据结构初阶:动态顺序表各种方法(接口函数)复盘与整理
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘logging’问题
  • 高并发导致重复key问题--org.springframework.dao.DuplicateKeyException
  • 【科研绘图系列】R语言绘制相关系数图
  • easyui碰到想要去除顶部栏按钮边框
  • “SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI指数生态质量评价
  • brpc中的bthread_jump_fcontext汇编函数到底发生了什么?
  • three2.0
  • 鸿蒙开发文档
  • C语言易错点整理(一)
  • 开源无线硬件系列射频收发器模块 RFMC6000
  • 亚马逊运营中出单词反查功能的深度应用
  • 【fitz+PIL】PDF图片文字颜色加深
  • Jenkins邮件通知终极指南:Email Extension Plugin高级配置
  • 电机试验平台的千年进化史
  • 对S32K144做的VCU安装快速开发Simulink库及VCU例程介绍