赞
踩
这段时间做了一个简单的项目,涉及到定位的部分,特地记下一些简单的“细节”,以便自己以后回想。
其实就是由像素坐标(彩色图上特征点)获取三维坐标(相机坐标),比较简单
第一次写博客,就简单写一下吧。
然后,混子撰写!混子撰写!混子撰写!重要事情说三遍!
有问题请轻喷,谢谢!
原始深度图(单通道)+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
注意!注意!注意!
彩色图和深度图要对齐!!!
相机内参使用自己相机的内参!!!
像素坐标原点是左上角!!!
定义了上述函数,直接调用就行啦。
还有最后一点得注意,像素对应512X424的图,
存入np数组,行列互换变为424X512。
注意像素坐标对应。
#深度图存入np数组
arr = np.array(depth)
#彩色图上某点像素坐标(u,v)在对齐深度图的深度值
depthValue =float(arr3[v, u])
coordinate = depth2xyz(u, v, depthValue)
代码中相机内参,是本次项目Kinect V2深度相机的内参
像素坐标获取对应三维坐标参考网址
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。