“视场”和“镜头焦距”之间有什么关系?

7

想知道它们是否相互关联

3个回答

10

我意识到这个问题已经很久了(至少可以这么说),但是我有一张不错的图表,看起来很有用,所以不发帖子感觉有点浪费。正如图表所示,视场角度(theta)和图像平面距离(d)之间的关系是:

tan(theta/2) = ymax/d

FOV和图像平面距离


4
"镜头长度"没有意义。 在OpenGL和DirectX中的“镜头”是一个针孔相机,因此没有大小(即它是无限小的)。
如果您在谈论焦距,则再次与焦距无关,因为焦距意味着透镜以及景深。
但是,您可以根据任何单位计算摄像机位置与屏幕的关系(这是我被教授的“透视参考点”)。
假设屏幕宽1米,FOV为90度(PI / 2弧度)。 使用基本三角函数,您知道
tan( fov / 2 ) = opposite/adjacent.  

您知道相对距离(即半米,即屏幕的一半)

因此,要计算邻边(即从屏幕到摄像机位置的距离),您只需执行以下操作:

adjacent = opposite / tan( fov / 2 )

根据上述简单数字,可以得出以下结论:

adjacent = 0.5 / tan( PI / 4 )
=> 0.5 / 1.0 
=> 0.5

如果这种情况下,相机距离屏幕半米远(当你考虑到90度的视野时,这是相当合理的)。

当然,涉及到的单位有些随意...

如果你深入研究一下,相机位置越靠近屏幕,视野就越宽,相机位置越远,视野就越窄。如果你画出来,你就会明白为什么了。

基于此,你可以计算一个人坐在离屏幕“n”米的位置的完美视野...


2

想象一条水平的长度为单位长度,在距离相机d处,其视野(即开口角度)设置为使距离d处的单位长线正好覆盖图像宽度(或高度,具体取决于您测量场的方式),那么d就是镜头长度。当然,你也可以进行反向计算。

tan(0.5 fov)= 0.5 d


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接