当不知道物体和相机之间的距离时,如何从图像中获取物体的真实大小?

Par*_*hta 26 image-processing computer-vision

我必须制作一个移动应用程序来计算图像中对象的实际大小.

我对它进行了一些研究,发现有用[问题]:你如何找到给定图像的物体的高度?

相机的距离与物体的实际尺寸之间的关系实际上并不复杂,传感器上的物体尺寸与现实生活中物体的尺寸之比与之间的比率相同.焦距和物体距离.

distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels)
                          ---------------------------------------------------------------------------
                          object height (pixels) * sensor height (mm)
Run Code Online (Sandbox Code Playgroud)

但是如果距离未知,如何获得物体的实际高度值?

从图像创建3d模型的工具是否具有真实的生命维度?

bri*_*ice 33

简单的答案是你不能.

顺便说一句,这就是人类有两只眼睛的原因.如果您想在没有已知距离的情况下判断尺寸,则至少需要两个参考点.这允许您对对象的位置进行三角测量,获得距离,并使用已知的焦距来计算大小.

更复杂的答案是有解决方法,例如:

  1. 使用已知参考作弊:

    例如,如果您有一个已知大小的对象,则可以推断出距离.这类似于NASA校准其相机所做的事情.

    如果您正在处理常见对象,例如在分析建筑物图像时的一层高度,您可以做出安全的假设.

  2. 移动相机:

    这允许您使用相同的相机获得多个参考点.

    我想你可以使用加速度计来精确测量在时间点T1和T2点捕获的图像之间的位置关系.这将为您提供两个相同主题的图像,它们之间已知距离.这样就可以让你像三只眼睛一样进行三角测量.

    正常的手持摄像机抖动是否足以进行三角测量,或者加速度计是否足够精确以便惯性定位手机,我不知道.

  3. 假设距离:

    如果您的应用程序旨在比较人手(或人体解剖学的其他位置)的某些东西,您可以安全地根据人们自然会做什么来确定距离.相机本身的聚焦限制还将给出物体可以在多远和仍然聚焦的上下范围.这可能在可容忍的误差范围内.

正如您在问题中提到的那样,这个问题有一个完整的子领域,它是一个活跃的研究领域.

  • "拍摄静止的人,地方或事物的多张数码照片." 他们使用方法#2,然后使用图像处理来恢复两个图像之间的位置差异. (3认同)