2010-05-21 216 views
5

比方说,我们有像这样如何测量图像中的距离?

alt text http://www.curiousexpeditions.org/North%20Reading%20Room,%20UC%20Berkeley,%20California,%20USA.jpg

比方说,我们已经使用的过滤器,并在此PIC边缘检测算法的图像。现在我的目标是测量距离(不是实际距离,距离可以是任意单位)。 例如:我如何找到大厅的长度? (直到窗口)

或者书架的高度?你究竟如何放置“规模”和措施。我正在寻找想法。然而,如果答案是OpenCV,这将有所帮助。

+1

youll需要机器视觉套件,如NI机器视觉...通过你在使用C#,VB,LabVIEW中的方式吗? – Luiscencio 2010-05-21 16:44:19

回答

0

这取决于你想要做什么。

你提到你想测量书架的高度。如果您认为书架的靠近区域比排在最后的书架末端的高度“短”,那么您所要查找的就是测量距离。选择一个单位的“像素”,然后使用毕达哥拉斯定理测量距离。 (x^2 + y^2 = z^2)

您可能真正在寻找的是让近书架的高度与远书架的高度相同。在这种情况下,你必须有更多的信息。你必须做2D - > 3D转换:你有一个2D图像,你需要从该图像重建一个3D图像。此时,您需要第三条信息,因为您需要来自2个变量的3个变量(X,y,z)。

如果您正确校准了系统并有第二个参考点(例如激光线),那么您可以使用OpenCV来做到这一点。这被称为结构化光线方法 - 有关更多信息,请参阅this link或google“机器视觉结构光”

0

由于您可以假设书架与下面的书架平行,因此书架之间的实际距离相等任何一点。您可以确定在深度为X像素后,感知高度降低Y%。您应该能够快速建立清晰的模式。实际空间中的所有平行线和直角将使数学变得简单。

在每个书架的开头和结尾画出一些起点。你可以在这里找到相关的数学题目:
http://en.wikipedia.org/wiki/Slope
http://en.wikipedia.org/wiki/Cartesian_coordinate_system