【深度如何正确地转换为点云】

这篇具有很好参考价值的文章主要介绍了【深度如何正确地转换为点云】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

深度图和点云是两种存储3D测量结果的常见数据形式。深度图保存了场景中的点沿成像光轴Z向的距离分量,而点云图保存了XYZ三个方向的全部信息,两种直接存在一定的转换关系。本文介绍如何将深度图正确的转换为点云。

所需参数

1. 获取相机内参

由于深度图仅保存了Z轴距离,要正确转换为点云,必须需要知道XY方向的信息,这些信息需要通过查询相机内参得到。内参由相机标定获得,而3D相机出厂都是经过标定的,SDK通常都提供了获取相机内参的接口。内参包含相机的主点 c x , c y c_x,c_y cx,cy,焦距 f x , f y f_x,f_y fx,fy,有时还包括相机的图像分辨率 W × H W\times H W×H,以及畸变参数。当无法获得相机内参的时候,事情就比较麻烦了,虽然可以自行对相机进行标定,但获取的内参与相机内部计算深度的内参难免存在差异,导致后续点云转换存在误差。

2. 处理畸变

原理上,双目和单目结构光计算深度需要经过去畸变、极线校正、图片匹配的过程,得到的深度图是不包含畸变的。而ITOF相机,深度图是否有畸变则取决于相机厂商的设置。

如果深度图包含畸变,则需要根据内参中的畸变模型和畸变参数,对畸变进行处理。最常用的畸变模型是Brown模型,畸变参数为表征径向畸变的 k 1 , k 2 , k 3 k_1,k_2,k_3 k1,k2,k3和表征切向畸变的 p 1 , p 2 p_1,p_2 p1,p2,如果是鱼眼镜头,使用的可能是KB模型,畸变参数为 k 1 , k 2 , k 3 , k 4 k_1,k_2,k_3,k_4 k1,k2,k3,k4。两种模型的去畸变方法可以参考博客【相机畸变:Brown-Conrady、Kanala-Brandt畸变模型与迭代去畸变】。

3.尺度

最后一步则是要搞清楚深度图的灰度尺度,即深度图中的1个灰度,对于现实世界的多少尺寸。具体的比例系数取决于设备厂商的设置,常见的是1mm/DN,即1数字灰度等于现实世界的1mm。

转换流程

1. 计算归一化平面的坐标 ( x , y ) (x,y) (x,y)

x = ( u − c x ) / f x y = ( v − c y ) / f y x = (u-c_x)/f_x\\y = (v-c_y)/f_y x=(ucx)/fxy=(vcy)/fy其中, u , v u,v u,v分别是像素的水平和竖直方向像素坐标, u ∈ [ 0 , W − 1 ] , v ∈ [ 0 , H − 1 ] u\in[0,W-1],v\in [0,H-1] u[0,W1],v[0,H1],W和H分别为图像宽度和高度。

2. 去畸变

x , y = undistort ( x , y ) x,y = \text{undistort}(x,y) x,y=undistort(x,y)详细参考博客【相机畸变:Brown-Conrady、Kanala-Brandt畸变模型与迭代去畸变】。

3. 计算点云坐标 ( X , Y , Z ) (X,Y,Z) (X,Y,Z)

X = x ⋅ Depth ⋅ Scale Y = y ⋅ Depth ⋅ Scale Z = Depth ⋅ Scale X = x\cdot \text{Depth} \cdot \text{Scale}\\Y = y\cdot \text{Depth} \cdot \text{Scale}\\Z = \text{Depth}\cdot\text{Scale} X=xDepthScaleY=yDepthScaleZ=DepthScale其中,Depth为深度,Scale为深度尺度。文章来源地址https://www.toymoban.com/news/detail-794444.html

到了这里,关于【深度如何正确地转换为点云】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 三维点云转换为二维图像

    目的:将 三维点云 转换为 二维图像 作用: a.给点云赋予彩色信息,增强点云所表达物体或对象的辨识度; b.将三维点云中绘制的目标物体通过映射关系绘制到二维图像中,这个工作在点云标注邻域被广泛使用; c.可以根据点云中绘制的结果提取二维图像中对应的物体 确定要

    2024年02月10日
    浏览(39)
  • 点云深度图像创建(DepthImage)

    目录 一、相关介绍 二、生成深度图像方法 三、实现代码 四、运行结果

    2024年01月19日
    浏览(32)
  • 基于深度学习方法的点云算法1——PointNetLK(点云配准)

    请点点赞,会持续更新!!! 基于深度学习方法的点云算法2——PointNet(点云分类分割) 基于深度学习方法的点云算法3——PointNet++(点云分类分割) 基于深度学习方法的点云算法4——PCT: Point Cloud Transformer(点云分类分割) 作者将PointNet看成一个可学习的成像函数(learn

    2024年02月10日
    浏览(41)
  • 基于深度学习方法的点云算法5——PointConv(点云分类分割)

    请点点赞,会持续更新!!! 基于深度学习方法的点云算法1——PointNetLK(点云配准) 基于深度学习方法的点云算法2——PointNet(点云分类分割) 基于深度学习方法的点云算法3——PointNet++(点云分类分割) 基于深度学习方法的点云算法4——PCT: Point Cloud Transformer(点云分类

    2024年02月06日
    浏览(42)
  • 点云检测算法之PointPillar深度解读

    论文地址: https://arxiv.org/abs/1812.05784 代码地址: https://github.com/open-mmlab/OpenPCDet Git链接: 计算机视觉知识汇总 课程来源 : 深蓝学院-环境感知 这是一篇来自19年工业界的文章,在此之前对于不规则的稀疏的点云的做法普遍分为两派: 将点云数据量化到一个个Voxel里,常见的有Voxel

    2024年02月08日
    浏览(39)
  • 从分割后的深度图像生成点云

    前一段时间忙着秋招和修改论文意见反稿,就没有接着做关于Azure Kinect DK相关的探索总结,现在有时间就慢慢补起来。上一篇是利用PP-Humanseg模型分割出color图和深度图中的人像,这一篇紧接着上一篇的工作,从人像分割后的图像结果获得人体的点云数据(也可以直接先生成点

    2024年02月06日
    浏览(28)
  • 论文解读 | 三维点云深度学习的综述

    原创 | 文 BFT机器人  KITTI 是作为基准测试是自动驾驶中最具影响力的数据集之一,在学术界和工业界都被广泛使用。现有的三维对象检测器存在着两个限制。第一是现有方法的远程检测能力相对较差。其次,如何充分利用图像中的纹理信息仍然是一个开放性的问题。 多任务

    2024年02月10日
    浏览(34)
  • 【唐宇迪 深度学习-3D点云实战系列】学习笔记

     课程目录如下: https://download.csdn.net/learn/35500/529919 3D点云领域都关注了哪些方向? 课程核心系列-PointNet系列 :点云数据如何处理、点云数据如何进行特征提取。 后续无论是分类、分割、补全、配准检测, 首先都要先对点云数据进行特征提取。 PointNet系列就是重点系列。

    2023年04月25日
    浏览(39)
  • 立体匹配入门指南(8):视差图、深度图、点云

    本篇是比较简单的基础概念,刚入门的朋友可能是需要的。 视差图 三维点云 首先,我们要介绍下这三个概念。 视差(disparity) 视差 d d d 等于同名点对在左视图的列坐标减去在右视图上的列坐标,是 像素单位 d = x l − x r d=x_l-x_r d = x l ​ − x r ​ 立体视觉里,视差概念在极

    2023年04月08日
    浏览(40)
  • open3d 深度图和点云数据互转,RGBD和点云互转

    关键代码: (1) 深度图转点云 需要知道相机内外参数。  (2) 点云转深度图  需要知道相机内外参数。  point_cloud_to_depth.py 深度图-》RGBD-》点云 需要知道相机内外参数。 point_cloud_to_rgbd.py

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包