如何计算照片中物体的距离?


36

如果我在地平线上拍摄了风车的照片(假设我知道传感器的大小和镜头的焦距以及与拍摄有关的其他因素),我可以计算出物体与摄影师的距离是多少?


是的,您可能可以进行一些复杂的数学运算,但这超出了我的范围。如果在地平线上,您可以绕过所有这些,而只需将眼睛的高度(以英尺为单位,包括您所处的任何土地或建筑物的高度)乘以1.5,然后找出其平方根即可,大约)到地平线的距离
ElendilTheTall 2011年

2
我的佳能100mm f / 2.8 IS USM(可能还有其他一些镜头)记录了EXIF数据内的被摄对象距离,在进行任何复杂的数学运算之前,如果您的设备这样做,可能值得调查!
克里斯·弗莱彻(ChrisFletcher)2011年

2
@Chris聚焦距离可能只会说“无限远”,这并不是很有用!
Matt Grum

1
@Chris相机“知道”与自动对焦系统的距离,并且如您建议的那样,它在大距离上变得非常不准确(但仍然足够精确,可以使图像清晰对焦!)。同样,仅因为EXIF指定了到厘米的距离,并不表示该数字在到厘米的范围内是准确的!
Matt Grum

1
马特:据我所知,信息是从E-TTL2的镜头(大约知道对焦距离)传回的。不过,它仅适用于带有USM的佳能镜头。克里斯:这个数字以厘米为单位不能告诉您其准确性。
乔伊

Answers:


35

您唯一需要的其他因素是现实生活中物体的高度(否则,您可能正在拍摄距离相机更近的模型)。

数学实际上并不那么复杂,传感器上物体的大小与现实生活中物体的大小之比与焦距与到物体的距离之比相同。

要计算传感器上物体的大小,请计算其高度(以像素为单位),除以图像高度(以像素为单位),然后乘以传感器的物理高度。

因此,总和为:

到物体方程的距离

让我们理智地检查一下这个方程。

如果我们保持其他所有参数不变并增加焦距,则距离会增加(因为焦距在分子上)。这就是您所期望的,如果您必须缩放镜头以使一个对象的大小与另一个以前相同大小的对象的大小相同,则第一个对象必须更远。

如果我们使其他所有内容保持不变并增加对象的实际高度,则距离会再次增加,就好像两个不同实际高度的对象在图像中出现的高度相同时,更高的对象必须离得更远。

如果我们将其他所有内容保持不变并增加图像高度,则距离会增加,就好像两个对象(大小相同,请记住我们将其他所有内容都保持不变)在裁剪和未裁剪的图像中出现的像素大小相同时,该对象未裁剪图像中的图像必须远离。

如果我们将其他所有内容保持不变并以像素为单位增加对象高度,则距离会减小(我们现在在分母上):两个大小相等的对象(一个占用更多像素),它必须更近。

最后,如果我们保持其他所有参数不变并增加传感器尺寸,则距离会减小:使用紧凑型相机(小传感器,其中20mm是长镜头)拍摄和使用DSLR(大传感器)拍摄时,两个大小相等的对象具有相同的像素高度(如果20mm是一个广角镜),则DSLR图像中的物体必须离得更远(因为它看上去大小相同,但是使用了广角镜)。


1
因此,换句话说,“不,不是不知道现实生活中物体的大小”。否则,您有两个未知因素。风车可能是比您想象的更接近的模型。
mattdm 2011年

1
@mattdm正是要在答案中阐明这一点。您也可以拍摄的风车等的照片
马特·格鲁

@ matt-grum我的观点是,我们需要以下条件之一:1)实际对象的大小;或者 2)或两个或更多图像。
萨斯坦宁2011年

@jetxee是的,我现在明白了,从您的评论中还不清楚,因为我已经说过物体尺寸是我的答案中的已知之一
Matt Grum

您能从三角形的视差证明这个定律吗?图像(像素)/ sensor_height不适合方程式,传感器高度指的是什么?
错误

16

如@ matt-grum所述,估计到物体距离的最简单公式是针孔投影公式

x / f = X / d

其中x是传感器上物体的大小,f是透镜的焦距,X是物体的大小,d是从节点到物体的距离。xf以及Xd分别以相同的单位(例如mm和m)进行测量(要计算x,您需要估算传感器的像素大小;例如,对于Pentax K20D来说,它是23.4 mm / 4672 px 5.008e-3 mm / px,即长100 px的图像对应于x = 50.08e-3 mm)。

在下文中,我假设对象(X)的大小未知,并且唯一已知的参数是x(图像大小)和f(焦距)。

问题在于,我们无法从一张照片中分辨出是靠近相机的小物体还是远处的大物体,因为风景照片中的景深通常很大(这就是针孔公式适用的原因)。

为了解决这个问题,我们可以使用两个或多个图像来测量距离。如果您可以测量两个相机位置之间的所有角度和距离,还可以计算到远程对象的距离。但是测量所有角度并非易事。

一种更简单的方法是拍摄两张与对象位于同一行的照片,并且对象位于图像的中心。令与第一张照片上的物体的距离为d₁,图像尺寸为x₁

x_1 / f = X / d_1

然后,如果我们将相机米数直接移向物体,那么在第二张照片上,我们得到的图像尺寸略大于x₁

注意:下一个表达式中的分母不正确,而不是“ d1”,应该是“ d2”或等效的“ d1-s”)

x_2 / f = X /(d_1-s)

这给了我们

d_1 = s x_2 /(x_2-x_1)

显然,如果s不会显着影响图像尺寸,则无法可靠地估计距离,需要使用更复杂的方法。x 2 -x 1之差越大越好。


嗯,现在我要表达您的意思了,我假设对象的大小是已知的,否则会变得更加复杂,因为您不仅需要至少两个摄像头,而且必须校准这些摄像头
Matt Grum

@sastanin我正在尝试您的公式,但无法正常使用。我在这里做了一个页面photo.stackexchange.com/questions/80195/…–
omega

2

我知道这是一个旧线程,但是这个问题似乎不时出现。FWIW,我添加了一个计算器来计算图像中的物距。

http://www.scantips.com/lights/subjectdistance.html

您仍然必须知道您的值才能使其生效,其中之一是对象的近似实际高度。在那里讨论。


1

如果您研究估算一些涉及基本“经验法则”的距离的航海方法,而不是尝试使用公式,例如,如果您站在水高1英尺的地方,如果您举起拇指在距地平线3海里的位置手臂长到您看到的物体被遮盖的高度100英尺(我认为),因为我不再使用它们了,但我已经忘记了其中的大多数,但是它们确实起作用,并且一旦学会并定期使用,它们的准确性就非常高。


非常有趣 !喜欢这样的东西-希望这些东西不会随着时间而被遗忘
Rob

0

简单的答案-不。您有两个变量,只有一个方程。


1
与接受的答案相比质量很低...
Olivier

但是非常简单,而且(正确)到了重点。
Michael C

您可以在问题中假定此隐式,并且答案需要弄清楚额外的等式
错误
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.