从图像中的像素获取方向向量(方向)

3
我是一名机器人工程师,对于计算机视觉或视觉伺服方面不是专家。这是我第一次使用摄像头。无论如何,我想获取与图像中特定像素相关的方向信息。
设置如下:我有一个分辨率为1040x776的相机,已经进行了校准。我的图像中有一些对象,我可以检测到并将其关联到图像中的某个点。像素用 u,v(我猜) 表示,因此这些点在 u轴(水平)上从0到1040,在v轴上从0到776。
假设 u,v = 0,0 是图像的中心(即使它位于左上角也没有问题),我想要的是从相机中心到上述像素的单位向量。例如,如果像素位于图像中心,则结果向量应为(1,0,0)。
我认为我已经在stackexchange上找到了答案,但我不确定是否是我需要的: OpenCV: Calculate angle between camera and pixel 步骤:
1 - 校准相机,获得相机矩阵K和畸变参数D。在OpenCV中,可以按照本教程所述进行操作。
2 - 去除感兴趣像素的非线性畸变。在OpenCV中,使用undistortPoints例程即可,不需要传递参数R和P。
3 - 通过将其在齐次坐标中的像素位置乘以相机矩阵的逆来将感兴趣的像素投影到射线(以相机3D坐标为单位向量),从而得到相应的方向向量。
你认为呢?
谢谢你的关注。

两年过去了,你最终找到解决方案了吗? - Mr Squid
1个回答

2
假设相机位于原点并朝着正Z轴拍摄,图像平面是XY平面,其中正X指向右侧,正Y指向下方,一个像素在3D中的位置为:
(pixel.x - 图像中心X, pixel.y - 图像中心Y, 焦距)
然后需要将其乘以相机的3x3旋转矩阵以获得3D方向向量:
rotation * (pixel.x - 图像中心X, pixel.y - 图像中心Y, 焦距)
然后可以通过除以长度来归一化该向量,以检索到像素的单位方向向量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接