计算图像中相机和像素之间的距离
问题描述:
您能否给我提示确定相机与图像中像素之间距离的方法(以现实世界中的单位,即cm/m/..)。计算图像中相机和像素之间的距离
我拥有的信息是:摄像机水平(120度)和垂直(90度)视野,摄像机角度(-5度)和摄像机放置高度(30厘米)。
我不确定这是否是我需要的一切。请告诉我关于相机的信息,以及如何计算相机与一个像素之间的距离?
可能是不正确的,告诉'相机之间的距离和像素',但我想这很清楚我的意思。如果不清楚,请在评论中写下。
预先感谢您!
答
我认为你的意思是,“如何用一台相机计算每个像素的深度?” Rotem在评论中提到,如果不添加某些特殊的硬件,这是不可行的。有例外,虽然我希望你的时间或预算可能有限,但我会列举一些。
如果你想找到深度,以便你的玩具车可以避免碰撞,那么你不需要假设需要进行深度测量。谷歌“避免光流碰撞”,看看是否符合你的需求。
如果您想要测量深度作为某些同时映射和本地化(SLAM)方案的一部分,那么这是一个需要解决的不同问题。虽然难以实施,并且可能不能远程一种用于玩具汽车项目是可行的,也有使用单个照相机来测量距离的几种方法:
- 光的项目的图案,优选用一个或多个激光线或激光光斑,并根据点发散或收敛来确定深度。 Kinect版本1采用“结构化光”的原理,但实现过于复杂,无法完全重现。对于简单的碰撞警告,您可以应用相同的原则,更简单。例如,如果图像右侧的投影光图变化很快,请左转!学习如何使用结构光来估计距离是一项重要的项目,但有很多参考文献。
- 拆分光路,使一个摄像头传感器可以看到两个不同的世界观。我不知道小型摄像机的光分路器,但它们可能存在。但即使您找到了分离器,仍然存在实施立体视觉的难题。立体视觉存在固有的问题(见下文)。
- 使用不同的传感器,例如稍微有点小但可以产生深度数据的小型Intel R200。 (http://click.intel.com/intel-realsense-developer-kit-r200.html)
- 使用飞行时间相机。这些是内置于Kinect版本2中的传感器类型以及多种手势识别传感器。几家公司已经或正在积极开发微小的飞行时间传感器。他们将生成深度数据并提供全彩色图像。
- 只能在受控环境下驾驶汽车。
玩具车的操作环境很重要。如果您可以将玩具车的环境限制在严格控制的环境中,则可以限制编写复杂算法的需求。与许多成像问题一样,一个狭义定义的问题可能是直接解决的,而一般问题可能几乎不可能解决。如果你想让你的汽车在“任何地方”(这可能不是真的)运行,假设问题是不可解决的。
即使你有一个代表现有的最好技术的现成的,货架深度传感器,你仍然会遇到限制:
- 每种类型的深度感应的有弱点。市场上没有深度传感器在黑暗,有光泽的表面上表现不错。 (有些光点传感器可以在黑暗,有光泽的表面上使用,但区域传感器不会。)立体声传感器在大型无特征区域存在问题,并且还需要大量处理能力。等等。
- 一旦你有一个深度图像,你仍然需要运行计算,缺乏大量的板载处理能力,这将很难在玩具车上完成。
- 如果您不得不作出许多妥协来使用深度感测,那么您可以考虑只使用更简单的超声波传感器来避免碰撞。
祝你好运!
您无法使用一个相机和一个图像获取范围。这就是我们有两只眼睛的原因。您可以尝试从不同的角度拍摄快照,并尝试估计范围。 – Rotem
@Rotem感谢您的回复。我没有拍摄多张快照的可能性,因为照片是高速拍摄的(相机放在玩具车上)。 –
如果是摄像机,您可以拍摄多个快照,并且您需要知道汽车什么时候会碰到什么...... – Rotem