引导方法深度补全系列—早期融合模型—5—《Depth completion via deep basis fitting》

该文章提出了用最小二乘拟合模块替换深度网络中的1×1卷积层,以处理噪声和异常值。网络结构中,LSF模块接收多通道特征并输出单通道深度,利用非线性最小二乘法解决拟合问题。通过自监督的多尺度训练,提高了深度估计的准确性。这种方法通过动态权重调整,减少了对固定权重的依赖,增强了网络的适应性。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

创新点

一、文章概述

二、方法详解

1.网络结构

2.具体方法

总结


创新点

1.用最小二乘拟合模块代替大多数深度完井网络中使用的最后1×1卷积层

2.使用了非线性最小二乘法,处理实际数据中的噪声测量和异常值


一、文章概述

主要是替换了多变单通道的卷积层

二、方法详解

1.网络结构

 实线表示模块的数据流,而虚线表示基线方法的数据流。baseline只是一个卷积层。我们的LSF模块可以取代卷积层,而不改变网络的其余部分。

2.具体方法

线性最小二乘法拟合模块(LSF)

*最小二乘法对异常值很敏感

模块输入多通道的特征和稀疏深度,输出单通道的结果L,一般深度估计网络最后卷积层把多通道的特征B转换为单通道结果L,称为logits层,最后一层的输入范围较大,使用非线性激活函数g将值映射到正深度,本文选择的g为

a控制最小深度的比例因子,设为1

### 如何将掩膜映射到深度图提取深度值 为了将掩膜映射到深度图以提取深度值,需要确保掩膜与深度图在像素级别上对齐。通常,这可以通过图像配准技术实现。例如,如果掩膜和深度图来源于同一相机的不同通道,则可以直接通过索引访问对应像素的深度值[^1]。对于非对齐的情况,可能需要使用几何变换或插值方法来校正掩膜与深度图之间的空间差异。 ```python import numpy as np def extract_depth_from_mask(depth_map, mask): # 确保掩膜和深度图尺寸一致 if depth_map.shape != mask.shape: raise ValueError("Depth map and mask must have the same dimensions.") # 提取掩膜区域的深度值 masked_depth = depth_map[mask > 0] return masked_depth ``` ### 基于深度图构建三维点云进行体积计算 从深度图生成三维点云的过程涉及将每个像素的深度值转换为三维空间坐标。假设相机内参矩阵 \( K \) 已知,可以利用投影几何公式完成这一转换[^2]。随后,通过点云分割和包围盒计算等方法,可以估计目标物体的体积。 ```python import open3d as o3d def depth_to_point_cloud(depth_map, intrinsics): fx, fy, cx, cy = intrinsics # 相机内参 height, width = depth_map.shape points = [] for v in range(height): for u in range(width): z = depth_map[v, u] if z > 0: # 忽略无效深度值 x = (u - cx) * z / fx y = (v - cy) * z / fy points.append([x, y, z]) point_cloud = o3d.geometry.PointCloud() point_cloud.points = o3d.utility.Vector3dVector(points) return point_cloud def calculate_volume(point_cloud): bbox = point_cloud.get_axis_aligned_bounding_box() volume = bbox.volume() return volume ``` ### 使用Bilateral Depth Completion或Sparse-to-Dense提升深度图精度 深度补全的目标是通过填充稀疏或低质量的深度图来提高其分辨率和精度。Bilateral Depth Completion 方法结合了双边滤波器和平滑约束,能够在保持边缘细节的同时填补缺失的深度值[^3]。Sparse-to-Dense 方法则通过学习深度神经网络模型,从稀疏深度输入中预测稠密深度图[^4]。 ```python import torch from bilateral_filter import BilateralFilter # 假设已实现双边滤波器 def bilateral_depth_completion(depth_map, guidance_image): filter = BilateralFilter(sigma_spatial=8, sigma_range=0.1) completed_depth = filter.apply(depth_map, guidance_image) return completed_depth # Sparse-to-Dense 示例(假设使用 PyTorch 模型) def sparse_to_dense_depth(depth_map, model): input_tensor = torch.from_numpy(depth_map).unsqueeze(0).unsqueeze(0).float() with torch.no_grad(): dense_depth = model(input_tensor).squeeze().numpy() return dense_depth ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值