【发布时间】:2023-04-01 21:35:01
【问题描述】:
我正在用 C++ 构建一个识别程序,为了使其更加健壮,我需要能够找到图像中物体的距离。
假设我有一张在 8.5 x 11 图片 22.3 英寸外拍摄的图像。系统可以正确识别尺寸为 319 x 409 像素的框中的图片。
将实际高度和宽度(AH 和 AW)以及像素高度和宽度(PH 和 PW)与距离(D)相关联的有效方法是什么?
我假设当我实际使用方程时,PH 和 PW 将与 D 成反比,而 AH 和 AW 是常数(因为识别的对象将始终是用户可以指示宽度和高度的对象) .
【问题讨论】:
-
这里涉及的变量比较多。所用相机的视角(焦距)是多少?图像中的有效像素数和纵横比。图像被裁剪了吗?焦点是否清晰? (改变焦点会稍微影响视角)。我相信根据视角、像素密度和距离,可以得出一个公式。另外,请注意,当图片/对象靠近相机时,即使距离 D 的微小差异也会在所覆盖的像素数量上产生相对较大的差异。
-
请注意,如果拍摄的对象是 8' x 11' 且平坦,则距离中心 22' 的相机将距离角落 23'。说相机距离这样的物体 22.3' 远超出现实。
-
@MSalters:对我来说,将诸如沿相机轴的距离称为“距离”并尽可能准确地测量它似乎是完全合理的。
-
唯一缺少的变量是视角。如果您知道可以使用我在下面的答案来计算距离。
标签: c++ math computer-vision mathematical-expressions