计算相机与图像中像素之间的距离

时间:2017-02-15 21:20:51

标签: image-processing camera distance pixel

请您建议我确定相机与图像中像素之间距离的方法(以实际单位为单位,即cm / m / ..)。

我的信息是:相机水平(120度)和垂直(90度)视野,相机角度(-5度)和相机放置的高度(30厘米)。

我不确定这是否是我需要的一切。请告诉我有关相机的信息,以及如何计算相机与一个像素之间的距离?

说出相机与像素之间的距离可能是对的,但我想我的意思很清楚。如果有事情不清楚,请在评论中写下。

提前谢谢!

1 个答案:

答案 0 :(得分:2)

我认为你的意思是,“如何用一台相机计算每个像素的深度?”没有添加一些特殊的硬件,这是不可行的,正如Rotem在评论中提到的那样。有例外,虽然我希望你的时间或预算有限,但我会列出一些。

如果您想要找到深度,以便您的玩具车可以避免碰撞,那么您无需假设需要进行深度测量。谷歌“避免光流冲突”,看看它是否符合您的需求。

如果您想要测量深度作为某些同步映射和本地化(SLAM)方案的一部分,那么这是一个不同的问题需要解决。虽然难以实施,也许玩具车项目可能无法实现,但有几种方法可以使用单个相机测量距离:

  • 光的投影图案,优选地具有一个或多个激光线或激光点,并且基于点如何发散或会聚来确定深度。 Kinect版本1基于“结构光”原理运行,但实现过于复杂,无法完全复制。对于简单的碰撞警告,您可以更简单地应用相同的原则。例如,如果图像右侧的投影光图案变化很快,请向左转!学习如何使用结构光估计距离是一个重要的项目,但有很多参考。
  • 分割光路,使一个摄像头传感器可以看到两个不同的世界视图。我不知道微型相机的光学分离器,但它们可能存在。但即使你找到了分离器,实现立体视觉的难题仍然存在。 Stereovision有固有的问题(见下文)。
  • 使用不同的传感器,例如稍微不大但很小的Intel R200,它将生成深度数据。 (http://click.intel.com/intel-realsense-developer-kit-r200.html
  • 使用飞行时间相机。这些是Kinect版本2中内置的传感器类型和几个手势识别传感器。有几家公司已经或正在积极开发微小的飞行时间传感器。它们将生成深度数据并提供全彩色图像。
  • 仅在受控环境中驾驶汽车。

您的玩具车运行的环境非常重要。如果您可以将玩具车的环境限制在严格控制的环境中,则可以限制编写复杂算法的需要。正如许多成像问题一样,狭义的问题可能很容易解决,而一般问题几乎不可能解决。如果您希望您的汽车“在任何地方”运行(可能不是这样),请假设问题无法解决。

即使您拥有代表最佳技术的现成深度传感器,您仍会遇到限制:

  • 每种类型的深度感应都有缺点。市场上没有深度传感器可以很好地处理黑暗,有光泽的表面。 (有些点传感器可以使用黑色,有光泽的表面,但区域传感器则没有。)立体声传感器存在大型无特征区域的问题,并且还需要大量处理能力。等等。
  • 一旦你有了深度图像,你仍然需要进行计算,如果没有大量的板载处理能力,这将很难在玩具车上完成。
  • 如果你不得不做出许多妥协来使用深度感应,那么你可以考虑使用更简单的超声波传感器来避免碰撞。
祝你好运!