我需要使用2D图像中的u,v坐标来计算相对于摄影机的X,Y坐标。我正在使用S7边缘相机向MATLAB发送720x480视频供稿。
我所知道的:Z即摄像机的物体深度,摄像机像素的大小(1.4um),焦距(4.2mm)
假设图像点位于(u,v)=(400,400)。
我的方法如下:
我的方法正确吗?
您的方法采用了正确的方法,但是如果您使用更标准化的方法,将会更容易。我们通常要做的是使用Pinhole Camera Model为您提供世界坐标[X, Y, Z]
与像素[x, y]
之间的转换。看看this guide,它逐步描述了构建转换的过程。
基本上,您必须定义内部摄像机矩阵才能进行转换:
u0和v0是穿刺点。由于我们的像素不在[0, 0]
的中心,因此这些参数表示到图像中心的平移。 (光轴与以像素坐标提供的像平面的交点)。
如果需要,您还可以添加歪斜因子a,可用于校正相机的剪切效果。然后,内部摄像机矩阵将为:
由于您的深度是固定的,所以只需固定Z并继续进行转换就不会出现问题。
Matlab has also a very good guide for this transformation. Take a look.