如何在不知道物体与相机之间的距离的情况下,从图像中获取物体的实际尺寸?

我必须制作一个移动应用程序来计算图像中物体的实际尺寸。

我已经做了一些研究,发现有用的[问题]: 你如何find给定图像的对象的高度?

照相机的距离与物体的实际尺寸之间的关系实际上并不那么复杂,传感器上物体的尺寸与物体在实际生活中的尺寸之比等于焦距和到物体的距离。

distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels) --------------------------------------------------------------------------- object height (pixels) * sensor height (mm) 

但如果不知道距离,如何得到物体真实高度的值?

从图像中创build三维模型的工具是否具有真实的生命维度?

简单的答案是你不能

顺便说一句,这就是为什么人类有两只眼睛。 如果你想判断大小没有已知的距离,你至less需要两个参考点。 这允许您对物体的位置进行三angular测量,获取距离,并使用已知的焦距计算尺寸。

更复杂的答案是有办法绕过这个例子:

  1. 通过使用已知的参考作弊:

    例如,如果您有一个已知大小的对象,则可以推断距离。 例如,这与美国国家航空航天局校准摄像机的方法类似。

    如果您在处理普通物体时,可以做出安全的假设,例如分析build筑物图像时的一层高度。

  2. 移动你的相机:

    这使您可以使用同一台相机获取多个参考点。

    我想你可以使用加速度计来精确测量时间点T1和时间点T2拍摄的图像之间的位置关系。 这将给你两个相同主题的图像之间有一个已知的距离。 这可以让你三angular化,就好像你有两只眼睛一样。

    无论是正常的手持式摄像机抖动是否足以进行三angular测量,或者加速度计是否足够精确到惯性定位手机,我都不知道。

  3. 假设距离:

    如果您的应用程序旨在比较人类手部(或其他人体解剖部位)的比例,则可以根据人们自然会做的事情安全地假设距离。 相机本身的焦点范围也会给出一个上限和下限范围的对象可以在多远,仍然是焦点。 这可能会在可接受的误差范围内。

正如你提到的问题,这个问题有一个完整的子域 ,它是一个活跃的研究领域 。