假设这是一个针孔相机模型,您还需要相机图像传感器 (CCD) 的宽度和高度 - 我们分别称它们为 widthCCD 和 heightCCD。
你需要做两步:
- 找出物理 3D 投影(相机传感器 CCD 上的物理点)
- 找出图像投影(CCD 到图像像素空间)
假设您在图像上有两个像素 (u1, v1) 和 (u2, v2)。这两个像素映射到 CCD 传感器 (uc1, vc1) 和 (uc2, vc2) 上的以下像素。最后,这两个 CCD 像素映射到以下物理 3D 坐标 (X1, Y1, Z1) 和 (X2, Y2, Z2),如下所示:
注意:Z1 = Z2 = d = 0.7(根据您提供的信息)
物理投影(3D 到 CCD):
(uc1, vc1) -> (fx * X1/Z1, fy * Y1/Z1)
(uc2, vc2) -> (fx * X2/Z2, fy * Y2/Z2)
图像投影(CCD 到图像):
(u1, v1) -> (uc1 * width/widthCCD + cx, vc1 * height/heightCCD + cy)
(u2, v2) -> (uc2 * width/widthCCD + cx, vc2 * height/heightCCD + cy)
通过应用替换,您可以得到:
(u1, v1) -> ((fx * X1/Z1) * width/widthCCD + cx, (fy * Y1/Z1) * height/heightCCD + cy)
(u2, v2) -> ((fx * X2/Z2) * width/widthCCD + cx, (fy * Y2/Z2) * height/heightCCD + cy)
由于我不知道 CCD 传感器的高度和宽度,我将假设 CCD 的高度和宽度与图像相同,例如:
- 插入 Z1 = Z2 = d:
(u1, v1) -> ((fx * X1/d) + cx, (fy * Y1/d) + cy)
(u2, v2) -> ((fx * X2/d) + cx, (fy * Y2/d) + cy)
- 现在让我们找出两个像素之间的物理距离:(0, 0) 和 (168, 39)
(u, v) -> ((1.06935339e+03 * X/0.7) + 6.29035115e+02, (1.07107059e+03 * Y/0.7) + 3.54614962e+02)
对于 (0, 0),X = -0.41,Y = -0.23
对于 (168, 39),X = -0.30,Y = -0.21
- 求两个 3D 点之间的欧几里得距离:
(-0.41, -0.23) -> (-0.30, -0.21)之间的距离= 0.11m
所以两点之间的物理距离,假设 CCD 传感器与图像平面相同,为 0.11 米。