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

为什么构造costVolume中常用逆深度采样

原因:在现实世界中,深度值分布并不均匀。距离相机较远的物体,其深度值变化较慢,而距离较近的物体,深度值变化较快。均匀采样可能会导致成本体积中远处的深度级别具有更多的噪声和不确定性,而近处的深度级别则可能缺乏细节。而通过在逆深度域中均匀采样,我们可以确保在近距离深度变化较大的地方分配更多的采样点,而在远距离深度变化较小的地方分配较少的采样点,从而避免上述问题。

利用代码直观理解:为了更好地理解逆深度和非逆深度采样的区别,我们可以使用 matplotlib 库绘制对比图。以下是一个示例代码,展示了在一定深度范围内,逆深度采样和非逆深度采样的采样点分布。

import numpy as np
import matplotlib.pyplot as plt# 定义深度范围
near_depth = 1.0
far_depth = 10.0
num_samples = 100# 非逆深度采样
linear_depths = np.linspace(near_depth, far_depth, num_samples)# 逆深度采样
inv_near_depth = 1.0 / near_depth
inv_far_depth = 1.0 / far_depth
linear_inv_depths = np.linspace(inv_near_depth, inv_far_depth, num_samples)
inverse_depths = 1.0 / linear_inv_depths# 绘图
plt.figure(figsize=(12, 6))# 非逆深度采样图
plt.subplot(1, 2, 1)
plt.plot(linear_depths, np.ones_like(linear_depths), 'o')
plt.title('Linear Depth Sampling')
plt.xlabel('Depth')
plt.ylabel('Sampling Points')
plt.ylim(0.5, 1.5)# 逆深度采样图
plt.subplot(1, 2, 2)
plt.plot(inverse_depths, np.ones_like(inverse_depths), 'o')
plt.title('Inverse Depth Sampling')
plt.xlabel('Depth')
plt.ylabel('Sampling Points')
plt.ylim(0.5, 1.5)plt.tight_layout()
plt.show()

代码运行结果:

左图(Linear Depth Sampling):展示了在深度范围内均匀分布的采样点。可以看到,采样点在整个深度范围内是均匀分布的。
右图(Inverse Depth Sampling):展示了在逆深度范围内均匀分布的采样点。注意到,这些采样点在近距离(小深度值)处更密集,在远距离(大深度值)处更稀疏。 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ansible.cfg forks参数
  • 游戏试玩站打码zq平台系统可运营的任务网源码
  • 深入了解python函数与函数内存使用
  • idea Alt+/ 自动补全变量名开头是大写 改 选择小写开头变量名
  • 架构师 如何架构选型一个项目
  • Python 数据可视化 散点图
  • 深入理解Qt状态机的应用(一)
  • 基于Python引擎的PP-OCR模型库推理
  • 【JavaScript】防抖(Debounce)与节流(Throttle)技术
  • 【vue3 + element plus 】拖动排序实现(只能拖拽一次的问题、拖动后的位置不准确问题)
  • 计算机专业毕业设计之网课敏感词监控系统实现介绍
  • 网上书店商城项目采用SpringBoot+Vue前后端分离技术(商家端、移动端、PC端)
  • 新手如何入门Web3?
  • CPU与GPU的原理不同
  • FPGA - 滤波器 - IIR滤波器设计
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • express.js的介绍及使用
  • iOS 系统授权开发
  • JavaScript-Array类型
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 新手搭建网站的主要流程
  • 再次简单明了总结flex布局,一看就懂...
  • ionic异常记录
  • 昨天1024程序员节,我故意写了个死循环~
  • ​Java并发新构件之Exchanger
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #{} 和 ${}区别
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • $L^p$ 调和函数恒为零
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (9)STL算法之逆转旋转
  • (第二周)效能测试
  • (二十四)Flask之flask-session组件
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (六)c52学习之旅-独立按键
  • (六)Flink 窗口计算
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (四)c52学习之旅-流水LED灯
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET delegate 委托 、 Event 事件
  • .NET 反射的使用
  • .net后端程序发布到nignx上,通过nginx访问
  • .net专家(张羿专栏)
  • ??javascript里的变量问题
  • @JsonFormat 和 @DateTimeFormat 的区别
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [145] 二叉树的后序遍历 js