【发布时间】:2012-08-22 04:13:16
【问题描述】:
我想测量两点之间的实际距离,比如路上有辆车在我前面,我和车辆之间的距离是多少?
我是这样进行的:
1) 找到透视变换以获得顶视图。
2) 然后尝试寻找距离。
问题是我无法获得正确的顶视图。
如果有其他方法请告诉。
【问题讨论】:
标签: c image-processing opencv perspectivecamera
我想测量两点之间的实际距离,比如路上有辆车在我前面,我和车辆之间的距离是多少?
我是这样进行的:
1) 找到透视变换以获得顶视图。
2) 然后尝试寻找距离。
问题是我无法获得正确的顶视图。
如果有其他方法请告诉。
【问题讨论】:
标签: c image-processing opencv perspectivecamera
要测量两个 3D 点之间的距离,您需要找到两个点的 3D 坐标。那么欧式距离就很容易计算了:
d(p1,p2)= sqrt{(p1_x - p2_x)^2+(p1_y - p2_y)^2+(p1_z - p2_z)^2}
这里的问题是在场景中找到物体的 3D 点(因为你知道你在哪里,在相机,参考坐标)。
要找到 3D 位置,您需要找到单应性或相机姿势。为此,您需要检测场景中的至少 4 个点,这些点与您先验知道的已知模型或图像的 4 个点相匹配。例如,如果您有汽车的 3D 模型,并且您能够检测场景中与您的 3D 模型相对应的真实汽车的点,您将能够计算单应变换,从而计算出车辆的 3D 位置。那些点。
反正问题很复杂,需要使用很多算法进行检测、匹配、校准,还需要知道要检测的对象是什么。
【讨论】:
问题比你想象的要难。即使在某些假设下:
如果其中一个假设不成立,那么测量距离将非常困难。 但如果他们确实持有,您需要执行以下操作:
无论如何,正如我之前所说,测量距离是一个非常困难的问题。 我建议以下简单但不太准确的解决方案:
【讨论】: