如何测量图像中的距离?

时间:2010-05-21 16:41:43

标签: image-processing opencv photogrammetry

假设我们有一个像这样的图像

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

假设我们已经在这张照片中使用过滤器和边缘检测算法。现在我的目标是测量距离(不是实际距离,距离可以是任意单位)。 例如:我如何找到大厅的长度? (直到窗口)

还是书架的高度?你究竟如何放置“比例”和衡量标准。我正在寻找想法。但是,如果答案是OpenCV,那将会有所帮助。

2 个答案:

答案 0 :(得分:0)

这取决于你想要做什么。

你提到你想测量书架的高度。如果您可以考虑书架的靠近区域比行末端书架末端的高度“更短”,那么您所需要的只是测量距离。选择“像素”单位,然后使用毕达哥拉斯定理测量距离。 (x ^ 2 + y ^ 2 = z ^ 2)

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

如果您正确校准系统并具有第二个参考点(例如,激光线),您绝对可以使用OpenCV。这被称为结构光方法 - 请参阅this link以获取更多信息或谷歌“机器视觉结构光”

答案 1 :(得分:0)

由于您可以假设书架与其下方的书架平行,因此书架之间的实际距离在任何时候都是相等的。您可以确定在X像素深度之后,感知高度减少Y%。您应该能够快速建立清晰的模式。实际空间中的所有平行线和直角将使数学变得容易。

在每个书架的开头和结尾绘制一些起点。您可以在此处找到相关的数学主题:
http://en.wikipedia.org/wiki/Slope
http://en.wikipedia.org/wiki/Cartesian_coordinate_system