【问题标题】:object dimensions in image according to camera distance faraway图像中的物体尺寸根据相机距离很远
【发布时间】:2015-09-11 18:45:13
【问题描述】:

我有一个相机放置在距离肖像(矩形)10 米的地方,宽度 = 50 厘米,高度 = 15 厘米,我想在拍摄的图像中获取该肖像的尺寸。捕获的图像宽度=800 像素,高度=600 像素。

如何计算图片中人像的尺寸?有什么帮助吗?

【问题讨论】:

  • 您需要指定相机的视野(即相机型号)。

标签: image math image-processing geometry space


【解决方案1】:

我假设相机位于肖像的中心法线,直视肖像的中心。

让我们定义一些变量。

  • 水平视野:FOV(需要指定)
  • 实物肖像宽度:PW = 50 cm
  • 拍摄的纵向平面宽度:CW cm(未知)
  • 图像宽度:IW = 800 像素
  • 图像空间中的纵向宽度:X px(未知)
  • 相机到主体的距离:D = 10 m

我们知道 tan(FOV) = (CW cm) / (100 * D cm)。因此 CW = tan(FOV) * 100 * D cm。

我们知道 PW / CW = X / IW。因此 X = (IW * PW) / (tan(FOV) * 100 * D) px。

【讨论】:

  • 感谢您的回答,但我想澄清一下您所说的水平视野是什么意思?捕获的人像平面宽度和图像空间中的人像宽度有什么区别?
  • @0_0 水平视野是相机可以看到任一侧的范围。例如,90 度的水平视野意味着相机可以看到正前方和 45 度的两侧。图像空间中肖像的宽度是肖像在相机图像中的显示宽度(以像素为单位)。
【解决方案2】:

我同意 Timothy 的回答,因为您需要了解相机的视野 (FOV)。但是,我不确定我是否完全遵循/同意他的方法。我认为这很相似,但不同的是,FOV 需要除以 2 才能将我们的视图分成两个直角三角形。使用 tan(x)=相反/相邻

tan(FOV/2) = (IW/2) / (Dist * 100)

其中 IW 是真实的图像宽度(必须除以二,因为我们只能找到直角三角形宽度的一半),Dist 是从相机到人像的距离(转换为厘米)。

重新排列以找到整个图像的宽度(IW):

IW = tand(FOV/2) * (2*Dist*100)

您现在可以使用图像宽度中的像素数(对您来说是 800)来计算每个像素的宽度 (PW)。

PW = IW / NumPixels
PW = IW / 800

现在将真实宽度除以该值来计算像素数。

PixelWidth = TrueWidth / PW

对于高度也可以这样做,但您需要相机的视野。 我不确定这与蒂莫西的回答是否相同,但我很确定这是正确的。

【讨论】:

    猜你喜欢
    • 2011-10-06
    • 1970-01-01
    • 2012-04-13
    • 2020-11-17
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多