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

5
有没有人知道一种图像分析算法,可以通过一个或多个房间的视频录制来确定房间的大小(以实际测量为单位,例如米宽)?
目前我使用OpenCV作为我的图像库选择,但在学习图像分析算法方面还没有取得太大进展,只需要提供一个名称即可。
谢谢。
编辑:好的,我刚刚从相关人员那里得到了一点澄清。 我基本上无法控制视频源的拍摄方式,并且不能保证有多个数据源。 但是,我在房间内有某些点的位置,并且应该根据该点的位置放置某物品。 因此,我可能会尝试识别房间的边缘,然后确定给定位置在房间中的百分比,从而猜测房间的大小。

我不确定在没有参考框架的情况下是否能完成。而仅仅找到房间的边缘本身就是一个难题。 - Mark Ransom
3
这绝不是一个简单的问题。你需要完全自主地解决它吗?如果能够让用户在房间中找到一些特征,然后使用图像处理和相机校准信息进行推断,那么你会有更多的成功机会。如果相机正在移动,可以考虑使用“运动结构”技术。但无论如何,除非图像中存在已知大小的物体,否则你只能以缩放因子的形式了解尺寸,例如5x10、10x20、20x40等。 - dantswain
你对图像采集有任何控制吗? - AShelly
很遗憾,我无法控制源图像并且没有用户输入可用。请查看我的编辑。 - fk2
你能准确地描述你所分配的任务吗?在像这样的问题中,通常需要采取依赖于问题限制条件的快捷方式。因为在一般情况下,这非常困难。 - Matt Montag
基本上我需要在一个房间里画/放置一个物体。我不知道物体的绝对位置,但我知道另一个点的位置,并且我知道物体离那个点有多远。到目前为止,我必须提供更多的概念证明(我的要求非常模糊),所以我不知道我将以哪种方式获得这些位置... 我会尝试给出一个现实世界的例子:我有一个房间的真实视频,我知道该房间中的一个点距离一侧约4米。现在我必须在该点左侧2米处尽可能准确地画一条线。 - fk2
1个回答

4

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

如果您想以完全自动化的方式解决此问题,我认为您会遇到很多问题。但是,如果操作员可以在一组图片中标记控制点,我认为这是可行的。

您的问题可以更普遍地陈述为,在三维空间中找到两点之间的距离,当您仅具有来自不同视角拍摄的两个或多个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距离,这就是你想要的数字。
相当容易,是吗?

1
如果您已经知道相机的位置和方向,那么这意味着您的摄像操作员已经意识到任务并携带了测量仪器。在这种情况下,我宁愿指示他/她测量房间 :) - Dr. belisarius
当然可以,但请注意摄影师不需要知道太多,只要他能用相机朝前拍摄两张照片(或视频),并且相机行进的距离可以估算出来。这都是估算,输入数字越好,你的距离估算就越准确。 - Miguel Grinberg
很遗憾,我不能假设至少会有两个视频源。 - fk2
1
如果你有一段视频且相机正在移动,那么你可以从中选择两个不同角度呈现房间的帧。 - Miguel Grinberg
我也不能假设相机在移动,但我仍然对你的解决方案感到着迷。 - fk2
谢谢。像我上面描述的解决方案被用来跟踪足球运动员和球的三维位置,以便构建比赛的三维动画。输入是从体育场不同位置拍摄的两个视频,并且足球场地中的线条用于对齐目的。有趣的项目! - Miguel Grinberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接