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

PanoSAM:使用 Meta Segment Anything 模型对全景图像中的点云数据进行无监督分割

背景

全景图像可以通过地面激光扫描 (TLS) 获取的点云高效生成。由于 TLS 从固定静止位置捕获数据,因此与传统的俯视图相比,相应的全景投影能够提供更直观的场景分割方法。

假设全景图像是使用点云的首次离散回波构建的,那么对图像的分割实际上相当于对点云的首次回波进行分割。从全景图像中获得分割蒙版后,可以将其重新投影到原始的3D点云上。此过程允许基于机器学习对图像格式的点云进行分割,从而提供一种实用高效的初步分类方法。

https://github.com/ottoykh/PanoSAM?source=post_page-----443ee1085f30---------------------------------------

演示 1

演示 2

使用我们的代码

下载requirements.txt文件和Pano.py里面需要的包,在 python cmd 中运行下面一行:

python Pano.py -input_e57 “e57_file.e57”

相关函数

e57Pano

  1. 加载 E57 点云文件
  2. 读取扫描数据并提取传感器位置
  3. 从点中提取 x、y、z
    从点计算角度 (θ 和 ϕ)
    θ=arctan2(y/x)(方位角)
    ϕ=arccos(z/距离)
  4. 将角度归一化为像素坐标
    Pixel X = Pixel_x=(θ+π/ 2π)⋅width
    Pixel Y = Pixel_y=(phi/π)⋅height
  5. 从 3D 点云数据集生成 2D 全景图像
  6. 提取 XYZ 坐标并计算相对坐标
    relative_xyz=xyz−sensor_pos
  7. 计算距离
  8. 颜色的标准偏差缩放
    颜色=(颜色-平均值)/ std + 1e-5
  9. 使用球面投影将 3D 点投影到 2D 像素坐标
  10. 使用深度缓冲区将点绘制到全景图像上

全景SAM:

  1. 使用 transforms 管道加载 SAM(任意分段模型)
  2. 打开图像并将其转换为 RGB 格式
  3. 调整图像大小(尽管它保持其原始大小)
  4. 使用生成器获取图像的蒙版
  5. 遍历生成的掩码并在掩码数组中标记它们
  6. 为每个标记的段创建一个具有随机颜色的叠加层
  7. 使用 tifffile 将标记的掩膜保存为 TIFF 文件
  8. 创建一个包含两个子图的图形:原始图像和分段叠加图

Pano2e57:

  1. 从 TIFF 文件加载分割蒙版
  2. 从 E57 文件加载点云数据并检索传感器的位置
  3. 根据传感器位置将 3D 点投影到 2D 掩模上
  4. 计算点与传感器的相对位置
  5. 计算每个点的半径 r 并过滤点
  6. 计算球坐标
    θ=arctan2(y/x)(方位角)
    ϕ=arccos(z/r)
  7. 将球面坐标标准化并转换为像素坐标
  8. 使用像素坐标从掩码中检索相应的标签
  9. 将投影点及其标签保存到 PLY 文件

限制

这种方法的一个关键限制在于,全景图像仅捕捉扫描仪视角下的第一个可见表面。因此,任何位于遮挡物后方或场景深处的特征都可能在分割蒙版中被错误呈现或完全缺失。因此,这些背面的特征可能会被错误分类或未经处理。尽管存在此限制,该方法仍然是 TLS 数据集预分类的有力工具,尤其是在单次扫描(每次设置)工作流程中。

http://www.dtcms.com/a/268437.html

相关文章:

  • 模型训练、部署遇到的问题
  • 鼓式制动器的设计+(说明书和CAD【6张】 - 副本➕降重
  • jenkins安装
  • contain:paint和overflow:hidden的区别
  • C++高频知识点(二)
  • 9. 【Vue实战--孢子记账--Web 版开发】-- 账户账本管理(二)
  • 2025.7.6总结
  • android 获取手机配对的蓝牙耳机的电量
  • Flutter 项目开启 UI 层级虚线(UI Guides)
  • 【C++】string类(二)相关接口介绍及其使用
  • 植物大战僵尸杂交重制版1.0,经典焕新,重燃策略塔防之火
  • Altium Designer使用入门(非精通)教程 第三章(PCB绘制)
  • 前端开发深度剖析:核心痛点、隐藏陷阱与系统解决方案
  • 【MySQL进阶】MySQL架构
  • 【HarmonyOS】鸿蒙应用开发Text控件常见错误
  • AI+Web3:从自动化工具到自主经济体的范式革命
  • 爬虫-协议基础
  • 1865.找出和为指定值得下标对
  • Java笔记-下
  • MyBatis-Plus分页拦截器原理深度解析
  • new与malloc[c++面试系列]
  • GCC/G++编译器详解:从编译原理到动静态链接
  • 2025 JuniorCryptCTF re 部分wp
  • 【一起来学AI大模型】算法核心:数组/哈希表/树/排序/动态规划(LeetCode精练)
  • 【Docker基础】Docker数据卷管理:docker volume rm与prune命令对比
  • 计算机网络实验——配置ACL
  • vue3 当前页面方法暴露
  • 「Java题库」基础程序设计(理论+操作)
  • Excel 日期计算与最小日期选择(附示例下载)
  • DAY 49