三维点与二维点对应的故障

2024-09-28 17:05:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个小python脚本,生成一些3D点坐标,从立体视觉(2个红外摄像机)中导出。 三维坐标肯定是正确的。在

现在我有了第三台RGB相机,我得到了校准矩阵(我无法验证它们):K是内部参数的矩阵,R,t是外部参数的组成部分。RGB图像是1280x800,但我无法设置正确的对应关系。在

我认为使用投影公式会很容易,将投影矩阵“Pcolor”导出为Pcolor=K[R | t] 并重新投影XYZ 3D坐标(名为“Pworld”),如下所示: enter image description here

我期望得到(u,v,w),所以我将除以w的结果归一化

#import numpy as np
ExtrColor = np.concatenate((Rcolor,Tcolor), axis = 1)
#Rcolor is the 3x3 rotation matrix, Tcolor the column translation array
# after calculation of X,Y,Z
Pworld = np.matrix([[X], [Y], [Z], [1]])
Pcolor = np.dot((np.dot(Kcolor,ExtrColor)),Pworld)
u = round(Pcolor[0,0]/Pcolor[2,0])
v = round(Pcolor[1,0]/Pcolor[2,0])

然后我发现我得到了大于12000的uv值,而不是在图像的范围内(x<;1280和y<;800)。在

我想不出问题出在哪里。有人遇到过类似的问题吗? 我不考虑XYZ坐标系中的比例因子问题,它在这个问题的表述中应该是无效的。 是我使用的一个问题np.dot?我敢肯定这是个小错误,但我看不出来。在

谢谢你的回答(也为糟糕的英语感到抱歉)!在

我在堆栈溢出中检查了类似的问题,here问题看起来很相似,但方法不同。在

PS这次我不想使用openCV或其他函数库获得结果,如果可能的话


Tags: the图像参数np矩阵rgbmatrixdot