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

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.xdnf.cn/news/15153.html

相关文章:

  • 快速上手MongoDB与.NET/C#整合
  • 大模型在膀胱癌诊疗全流程预测及应用研究报告
  • 大数据的安全挑战与应对
  • 【AXI】读重排序深度
  • 在 Ubuntu 上安装和配置 Kafka
  • 【MSSQL】如何清理SQL SERVER内存解决内存占用高的问题
  • vivo Pulsar 万亿级消息处理实践(3)-KoP指标异常修复
  • Qt 信号槽的扩展知识
  • 新手向:实现ATM模拟系统
  • Java线程池原理概述
  • K线涨跌概率分析系统
  • 【双目深度估计】9种立体匹配算法整合包一键运行,支持相机标定、目标检测和tensorrt加速
  • 力扣61.旋转链表
  • 【WEB】Polar靶场 Day7 详细笔记
  • 北京-4年功能测试2年空窗-报培训班学测开-第四十六天
  • 高效集成-C#全能打印报表设计器诞生记
  • C++—拷贝构造函数
  • 深度学习模型表征提取全解析
  • SpringBoot mybatis
  • LeetCode经典题解:1、两数之和(Two Sum)
  • [2025CVPR]Mr. DETR:检测Transformer的多路由指导训练解析
  • SpringGateway网关增加https证书验证
  • Redis-哨兵选取主节点流程
  • 第4章:实战项目一 打造你的第一个AI知识库问答机器人 (RAG)
  • 数据库技术体系及场景选型方案
  • 【机器学习】BeamSearch算法
  • 10.9 大模型训练数据优化实战:3步让准确率从68%飙升至79%
  • 3、Unity免费插件整合
  • git入门之安装tortoisegit
  • UNet改进(19):基于残差注意力模块Residual Attention的高效分割网络设计