Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 如何确定(倾斜)矩形目标与摄影机的距离_Image Processing_Language Agnostic_Geometry_Computer Vision - Fatal编程技术网

Image processing 如何确定(倾斜)矩形目标与摄影机的距离

Image processing 如何确定(倾斜)矩形目标与摄影机的距离,image-processing,language-agnostic,geometry,computer-vision,Image Processing,Language Agnostic,Geometry,Computer Vision,我有一张包含多个不同大小和方向的矩形的照片我目前正试图找到从相机到图像中任何矩形的距离。实现这一目标的最佳方法是什么? 例如,一张示例照片可能看起来与此类似(尽管这可能非常不成比例): 我可以找到图像中任何矩形的角点的像素坐标,以及相机视场和分辨率。我还预先知道图像中任何矩形的长度和宽度(但不知道它们面对相机的角度)。保证图像中每个矩形目标的长宽比是唯一的。矩形和相机将始终与地面平行 我所尝试的: 我根据在互联网上找到的一些示例代码开发出了一个解决方案。我基本上是遍历每个矩形,找到平均像素长

我有一张包含多个不同大小和方向的矩形的照片我目前正试图找到从相机到图像中任何矩形的距离。实现这一目标的最佳方法是什么?

例如,一张示例照片可能看起来与此类似(尽管这可能非常不成比例):

我可以找到图像中任何矩形的角点的像素坐标,以及相机视场和分辨率。我还预先知道图像中任何矩形的长度和宽度(但不知道它们面对相机的角度)。保证图像中每个矩形目标的长宽比是唯一的。矩形和相机将始终与地面平行


我所尝试的:

我根据在互联网上找到的一些示例代码开发出了一个解决方案。我基本上是遍历每个矩形,找到平均像素长度和高度

然后我用它来找到长度与高度的比率,并将其与 所有已知矩形目标的比率,以便我可以找到目标的实际高度(以英寸为单位)。然后,我使用此信息查找距离:

…其中,
实际高度
是目标的实际高度,单位为英寸,
图像高度
是图像的高度(单位为像素),
像素高度
是图像上矩形的平均高度(单位为像素),
垂直视场
是相机沿垂直轴看到的角度,单位为度(在我的相机上大约是39.75度)


我在互联网上找到了这个公式,虽然它似乎有点正常,但我并不真正理解它是如何工作的,而且它似乎总是比实际距离低一点

此外,我不确定如何修改公式,使其能够处理沿某个角度看时非常倾斜的矩形。由于我的算法通过查找长度和高度的比例来工作,因此它适用于矩形1和2(不太倾斜),但不适用于矩形3,因为它非常倾斜,完全偏离了比率


我考虑过使用StackOverflow问题中所述的方法来计算这个比率,但我不确定这对我所拥有的有多好,我想知道这是不是太过分了,或者是否有一个更简单的解决方案我可以尝试一下。

FWIW I once(完整的6自由度姿势,而不仅仅是距离).

据我所知,矩形的两条边与摄像机的距离不相同。那么您想计算什么距离?到每个矩形中心的距离?您说“我事先也知道图像中任何矩形的长度和宽度”这是否意味着你可以在某个坐标系中指定矩形的所有4个角?换句话说,你知道矩形结构的所有信息,并且试图找到它的位置/方向。@Bogdan--是的,我在寻找到矩形中心的距离。@Hammer--没错--这是一个很好的方法我根据四个角在图像上的实际像素来指定四个角的坐标,其中
(0,0)
位于左下角,右上角是
(图像长度,图像高度)
@Michael0x2a此类问题的一般解决方案是使用openCV中的PnP算法。基本上,您可以在3d中提供点及其在图像中的当前位置。然后,该算法返回相机的位置(很容易转换为对象的位置)虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。-@BrianTompsett-汤莱恩 谢谢你的建议。尽管有相似之处,但这个问题和我链接的问题之间还是有一些距离。(它们涉及同一个基本问题的不同概括。)如果有人愿意协调它们,我会把它变成一个社区维基。如果距离太远,我们可以删除答案。