当前位置:   article > 正文

由RGB-D图像获取三维坐标(相机坐标) Python_深度图和rgb图像素对齐,怎么获得每个像素的物理坐标

深度图和rgb图像素对齐,怎么获得每个像素的物理坐标

由RGB-D图像获取三维坐标(相机坐标) Python

这段时间做了一个简单的项目,涉及到定位的部分,特地记下一些简单的“细节”,以便自己以后回想。
其实就是由像素坐标(彩色图上特征点)获取三维坐标(相机坐标),比较简单

第一次写博客,就简单写一下吧。

然后,混子撰写!混子撰写!混子撰写!重要事情说三遍!
有问题请轻喷,谢谢!

图像数据

原始深度图(单通道)+RGB图像(需要与深度图对齐,目的保证像素大小一致)
关于图像对齐问题以及如何生成三维点云,有机会再写

获取相机坐标(本处是在深度摄像头下)

某点像素坐标(u , v)及其对应深度值depth,根据相机参数以及以下公式,可以求得该点的相机坐标(x , y , z)为
在这里插入图片描述
式中:fx,fy为Kinect相机的焦距; cx,cy为Kinect相机的主点,均为相机内参,可由MATLAB相机标定获得。
标定参考网址链接: https://blog.csdn.net/qq_40855366/article/details/81177201.

相信大家最感兴趣的 肯定是代码啦

如有改进,请多指教,一起学习

def depth2mi(depthValue):

    return depthValue * 0.001


def depth2xyz(u, v, depthValue):
    fx = 361.1027
    fy = 361.8266
    cx = 258.4545
    cy = 212.1282

    depth = depth2mi(depthValue)

    z = float(depth)
    x = float((u - cx) * z) / fx
    y = float((v - cy) * z) / fy

    result = [x, y, z]
    return result
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

注意!注意!注意!
彩色图和深度图要对齐!!!
相机内参使用自己相机的内参!!!
像素坐标原点是左上角!!!

定义了上述函数,直接调用就行啦。
还有最后一点得注意,像素对应512X424的图,
在这里插入图片描述
存入np数组,行列互换变为424X512。
在这里插入图片描述

注意像素坐标对应。

#深度图存入np数组
arr = np.array(depth)
#彩色图上某点像素坐标(u,v)在对齐深度图的深度值
depthValue =float(arr3[v, u])
coordinate = depth2xyz(u, v, depthValue)
  • 1
  • 2
  • 3
  • 4
  • 5

代码中相机内参,是本次项目Kinect V2深度相机的内参
像素坐标获取对应三维坐标参考网址

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/113043?site
推荐阅读
相关标签
  

闽ICP备14008679号