从视频输入中确定房间大小的算法



有没有人知道一个图像分析算法,我可以确定有多大(大约,在现实生活中的测量,让我们说宽度在米或其他东西)一个房间是这个房间的一个(或多个)视频记录?

我目前使用OpenCV作为我的图像库的选择,但我还没有得到非常远的学习图像分析算法,只是一个名字掉落将是很好的。

感谢

编辑:好的,我刚刚从相关人员那里得到了一点澄清。我基本上无法控制视频馈送的拍摄方式,也无法保证有多个数据源。然而,我在房间里有一个特定的点,我应该在这个点上放置一些东西。因此,我可能会尝试识别房间的边缘,然后确定给定位置在房间中的距离,然后猜测房间有多大

非常难(但很有趣!)的问题。

如果你想用完全自动化的方式来做这件事,我想你会遇到很多问题。但我认为,如果操作员能在一组图片中标记控制点,这是可行的。

你的问题可以更普遍地描述为在3D空间中寻找两点之间的距离,当你只有这些点在两张或更多张从不同角度拍摄的2D照片中的位置时。这个过程大致是这样的:

  • 图片将附带相机位置和方向信息。例如,假设你有两张照片,具有相同的相机方向并且这两张照片是用相机水平间隔三英尺拍摄的。您必须为相机所在的3D空间定义一个参考原点,例如,您可以说左侧图片的相机位于(0,0,0),右侧图片位于(3,0,0),并且两者都将面向前方,即方向为(0,0,1)。或者类似的东西。
  • 现在操作员来了,并在两张图片中标记了房间的两个角。所以每个角都有2组2D坐标。
  • 你必须知道你的相机和镜头的细节(视野,镜头失真,像差等)。你对相机如何使图像变形了解得越多,你的估计就越准确。这是同样的东西全景拼接软件做,以实现更好的缝合。有关此信息,请参阅PanoTools。
  • 下面是有趣的部分:您现在将为每个2D点做透视投影的逆。透视投影采用3D空间中的一个点和相机清晰度,并计算出一个2D点。这是用来表示平面上的三维物体,比如电脑屏幕。你在做相反的事情,对于每个2D点,你将尝试获得一个3D坐标。由于2D点中没有足够的信息来确定深度,所以你从单个2D点中所能做的最好的事情就是在3D空间中获得一条穿过透镜和问题点的线,但你不知道该点离透镜有多远。但是你在两张图像中有相同的2D点,所以你可以从不同的相机位置计算两条3D线。这两条线不平行,所以它们相交于一点。3D线的交点可以很好地估计3D点在空间中的位置,以及参考相机3D空间的坐标。
  • 剩下的很简单。当你有两个兴趣点的估计3D位置时,你只需要计算它们之间的3D距离,这就是你想要的数字。

很简单,是吧?

最新更新