【发布时间】:2015-09-11 18:45:13
【问题描述】:
我有一个相机放置在距离肖像(矩形)10 米的地方,宽度 = 50 厘米,高度 = 15 厘米,我想在拍摄的图像中获取该肖像的尺寸。捕获的图像宽度=800 像素,高度=600 像素。
如何计算图片中人像的尺寸?有什么帮助吗?
【问题讨论】:
-
您需要指定相机的视野(即相机型号)。
标签: image math image-processing geometry space
我有一个相机放置在距离肖像(矩形)10 米的地方,宽度 = 50 厘米,高度 = 15 厘米,我想在拍摄的图像中获取该肖像的尺寸。捕获的图像宽度=800 像素,高度=600 像素。
如何计算图片中人像的尺寸?有什么帮助吗?
【问题讨论】:
标签: image math image-processing geometry space
我假设相机位于肖像的中心法线,直视肖像的中心。
让我们定义一些变量。
我们知道 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。
【讨论】:
我同意 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
对于高度也可以这样做,但您需要相机的视野。 我不确定这与蒂莫西的回答是否相同,但我很确定这是正确的。
【讨论】: