我有一张包含多个不同大小和方向的矩形的照片。我目前正在尝试查找从相机到图像中存在的任何矩形的距离。实现这一目标的最佳方法是什么?
例如,一张示例照片可能看起来与此类似(尽管这可能非常不成比例):
我可以找到图像中任何矩形角的像素坐标,以及相机 FOV 和分辨率。我也事先知道图像中可能出现的任何矩形的长度和宽度(但不知道它们面对相机的角度)。可以保证图像中每个矩形目标的长宽比是唯一的。矩形和相机将始终与地面平行。
我试过的:
我根据在互联网上找到的一些示例代码破解了一个解决方案。我基本上是遍历每个矩形并找到平均像素长度和高度。
然后我使用它来找到长度与高度的比率,并将其与所有已知矩形目标的比率列表进行比较,以便我可以找到目标的实际高度(以英寸为单位)。然后我使用这些信息来找到距离:
...actual_height
目标的实际高度在哪里,以英寸为单位,IMAGE_HEIGHT
图像的pixel_height
高度(以像素为单位),图像上矩形的平均高度(以像素为单位),以及VERTICAL_FOV
相机看到的角度沿垂直轴以度为单位(在我的相机上约为 39.75 度)。
我在互联网上找到了这个公式,虽然它似乎有点工作,但我并不真正理解它是如何工作的,而且它似乎总是低于实际距离。
此外,我不确定如何修改公式,以便它可以处理从某个角度查看时非常倾斜的矩形。由于我的算法通过查找长度和高度的比例来工作,因此它适用于矩形 1 和 2(不太偏斜),但不适用于矩形 3,因为它非常偏斜,完全放弃了比率.
我考虑使用这个 StackOverflow 问题中概述的关于透视变形矩形的比例的方法来找到比率,但我不确定这对我所拥有的东西有多好,并且想知道它是否过度杀伤或者是否有更简单的我可以尝试的解决方案。