2011-07-15 56 views
14

我正在尝试使用opencv编写一个程序来计算从网络摄像头到一英寸白色球体的距离。我觉得这应该很容易,但无论出于什么原因,我都会画空白。感谢提前帮助。寻找从相机到已知尺寸的物体的距离

+0

您是否尝试过“校准”您的系统?我的意思是,当球体距离摄像头50cm,1m,2m时,您可以测量像素大小,然后将实时测量结果与校准数据进行比较? –

+0

这是一个好主意,但是如果我打算创建一个跨平台的应用程序,它将运行在各种不同的摄像头上,那么每个不同的摄像头是否需要它自己的校准?或者,相同质量的不同相机(比如说vga)会在每个距离处将球看作相同数量的像素吗? –

+0

不幸的是,每个相机都需要校准,因为很少有相同的“视角”。有些是比其他更广角(缩放),例如在这里看到:http://www.tomshardware.com/reviews/webcam-quality-test-shootout,878-10.html。所以我明白这不是最好的解决方案。 –

回答

23

您可以使用三角形相似度来校准摄像机角度并找到距离。
你知道你的球大小:D单位(如厘米)。将它放在相机前方已知距离Z处,比如说1米= 100厘米,并以像素为单位测量其表观宽度。调用这个宽度d
然后f=d*Z/D相机f(这是相机与相机稍有不同)的焦距。

当用本相机再次看到此球,并且其表观宽度是d'个像素,则通过三角相似,你知道f/d'=Z'/D并且因此:Z'=D*f/d'其中Z'是来自摄像机的球的当前距离。

+2

获取相机焦距不是问题吗?智能手机的摄像机标定不能以米为单位给出焦距,而是以x-y轴上的像素为单位。它们已乘以比例因子。 –

+0

第一段说明如何以像素为单位获得焦距。三角形相似性本质上可以找到从像素到米的转换比例因子。 –

+0

我明白你的意思了。但是,是不是简单地保留一个图像传感器尺寸和校准数据库关于同样数量的麻烦? –

0

在我看来,如果你想测量距离或其他东西(在真实世界中),你需要一个相机模型=校准模型。 针孔相机模型简单,线性,并提供良好的结果(但不会校正失真,(不管它们是径向还是切向)

如果您不使用它,那么您将能够计算视差深度图(例如,如果你使用立体视觉),但它是相对的,并不给你一个绝对的测量,只有背后是什么,在另一个物体前面是什么......

因此,我认为答案是:你需要以某种方式校准它,也许你可以要求用户将球体接近相机,直到所有图像平面完全被球填满,并且通过先前已知的球测量,您将能够然后计算​​距离...。

Julien,