我必须制作一个移动应用程序来计算图像中对象的实际大小。
我已对此进行了一些研究,发现有用[问题]:How would you find the height of objects given an image?
相机距离与物体实际尺寸的关系实际上并不复杂,传感器上物体的大小与现实生活中物体的大小的比例与焦距与物体距离之间的比率。
distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels)
---------------------------------------------------------------------------
object height (pixels) * sensor height (mm)
但是如果距离未知,如何获得物体的实际高度值?
从图像创建3d模型的工具是否具有真实维度?
答案 0 :(得分:31)
简单的答案是你不能。
顺便说一下,这就是为什么人类有两只眼睛的原因。如果您想在没有已知距离的情况下判断尺寸,则至少需要两个参考点。这允许您对对象的位置进行三角测量,获得距离,并使用已知的焦距来计算大小。
更复杂的答案是有很多方法可以解决这个问题,例如:
使用已知参考作弊:
例如,如果您有一个已知大小的对象,则可以推断距离。例如,这类似于校准其相机的NASA does。
如果您正在处理常见物体,例如在分析建筑物图像时一层高度,您可以做出安全假设。
移动相机:
这允许您使用相同的相机获得多个参考点。
我想您可以使用加速计准确测量在时间点T1和T2点捕获的图像之间的位置关系。这将为您提供两个相同主题的图像,它们之间已知距离。这样就可以让你像三只眼睛一样进行三角测量。
我不知道普通的手持式摄像机抖动是否足以进行三角测量,或者加速度计是否足够精确以便惯性定位手机。
假设距离:
如果您的应用程序旨在比较人手(或人体解剖学的其他位置)的某些东西,您可以安全地根据人们自然会做的事情来假设距离。相机本身的聚焦限制还将给出物体可以在多远和仍然聚焦的上下范围。这可能在可容忍的误差范围内。
正如您在问题中提到的那样,有一整个subfield致力于此问题,它是active research area。