Algorithm 从视频源确定房间大小的算法

Algorithm 从视频源确定房间大小的算法,algorithm,image-processing,opencv,video-processing,Algorithm,Image Processing,Opencv,Video Processing,有人知道一种图像分析算法吗?我可以用它从这个房间的一个(或多个)视频记录中确定一个房间有多大(大约,在现实测量中,比如说宽度,以米或其他形式) 我目前正在使用OpenCV作为我的首选图像库,但我在学习图像分析算法方面还没有取得很大进展,只需一个名字就可以了 谢谢 编辑:好的,我刚从相关人员那里得到一点澄清。我基本上无法控制视频馈送的方式,也不能保证有多个数据源。然而,我在房间里有一个特定的点位置,我应该放置一些与该点相关的东西。因此,我可能会尝试确定房间的边缘,然后确定给定位置在房间中的距离,然

有人知道一种图像分析算法吗?我可以用它从这个房间的一个(或多个)视频记录中确定一个房间有多大(大约,在现实测量中,比如说宽度,以米或其他形式)

我目前正在使用OpenCV作为我的首选图像库,但我在学习图像分析算法方面还没有取得很大进展,只需一个名字就可以了

谢谢

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

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

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

您的问题可以更一般地说为在3D空间中查找两点之间的距离,而这些点的位置仅存在于从不同视角拍摄的两张或多张2D照片中。该过程的工作原理大致如下:

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

很简单,是吧?

我不确定没有参照系就可以做到。仅仅找到房间的边缘本身就是一个困难的问题。这根本不是一个简单的问题。您是否需要能够完全自主地执行此操作?如果你能,例如,让用户在房间里找到特征,并使用图像处理和相机校准信息进行推断,你会有更大的运气。如果相机在移动,可以查看“运动中的结构”。不管怎样,除非图像中有已知大小的东西可用,否则您将只能知道比例因子以下的尺寸;i、 例如,5x10、10x20、20x40等。您对如何收集图像有任何控制吗?遗憾的是,我无法控制源图像,也没有可用的用户输入。请看我的编辑。你能准确地叙述给你的任务吗?通常在这样的问题中,你必须采取真正依赖于问题约束的捷径。因为在一般情况下,这是非常困难的。如果你有摄像机的位置和方向,这意味着你的摄像机操作员知道这项任务,并携带了一个测量仪器。在这种情况下,我更愿意指示他/她测量房间:)当然,但请注意,摄影师不需要知道太多,只要他可以在相机朝前的情况下拍摄两张照片(或一段视频),并且可以估计相机行驶的距离。这都是估计,输入的数字越好,你的距离估计就越准确。可悲的是,我不能假设至少会有两个视频源。如果你有一个视频,而相机正在移动,那么你可以从视频中选择两帧,呈现你房间的不同视角。我也不能假设相机正在移动,但我仍然对你的解决方案着迷