相机模型以及FOV计算

相机模型以及FOV计算

一、相机模型

相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素)的过程 能够用一个几何模型进行描述。这里介绍一下常用的相机模型——针孔相机模型。

1.针孔相机模型

针孔相机模型可以理解为通过小孔呈像原理将三维世界中的景象投射到二维成像平面上。如下图所示:

image-20231203114628384

这里 O − x − y − z O-x-y-z Oxyz相机坐标系,一般Z轴向前,X轴向右,Y轴向下, O O O为相机的光心,同时也是针孔模型中的针孔,现实世界的空间点 P P P经过小孔 O O O投影之后,落在物理成像平面 O ′ − x ′ − y ′ O^{'}-x^{'}-y^{'} Oxy上,成像点 P ′ P^{'} P,设 P P P的坐标为 [ X , Y , Z ] T \begin{bmatrix}X, & Y, & Z \end{bmatrix}^{T} [X,Y,Z]T, P ′ P^{'} P [ X ′ , Y ′ , Z ′ ] T \begin{bmatrix}X^{'}, & Y^{'}, & Z^{'} \end{bmatrix}^{T} [X,Y,Z]T,物理成像的平面到相机光心(小孔)的距离为 f f f(焦距)。如上图右侧所示,根据三角形的相似关系有:
Z f = − X X ′ = − Y Y ′ \begin{align*} \frac{Z}{f}=-\frac{X}{X^{'}}=-\frac{Y}{Y^{'}} \\ \end{align*} fZ=XX=YY
其中负号表示成的像是倒立的。为了简化模型,我们把可以成像平面对称到相机前方,和三维空间点一起放在摄像机坐标系的同一侧,这样可以去掉负号,同时大多数相机输出的图像并不是倒像——相机自身 的软件会帮你翻转这张图像,所以你看到的一般是正着的像,也就是对称的成像平面上的像。由于输出的图像已经做了预处理,所以理解成在对称平面上的像,并不会带来什么坏处。可以参考下图:

image-20231203191340960

整理可以得到:
X ′ = f X Z Y ′ = f Y Z (1) \begin{align*} X^{'}&=f \frac{X}{Z} \\ Y^{'}&=f \frac{Y}{Z} \\ \end{align*} \tag{1} XY=fZX=fZY(1)

2.像素坐标系

上面描述了空间中点P和它的像之间的空间关系,但是我们最终获得的是一个个的像素,这需要在成像平面上对呈的像进行采样和量化,将光线转换为图像的像素。设在物理成像平面上固定着一个像素平面 O − u − v O-u-v Ouv。我们在像素平面得到了 P ′ P^{'} P的像素坐标: [ u , v ] T \begin{bmatrix}u ,& v \end{bmatrix}^{T} [u,v]T。像素坐标系为下图所示:

image-20231203204941101

原点 O ′ O^{'} O 位于图像的左上角, u u u轴向右与 x x x轴平行, v v v轴向下与 y y y轴平行。像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移。我们设像素坐标在 u u u轴上缩放了 α \alpha α倍,在 v v v上缩放了 β \beta β倍。同时,原点平移了 [ c x , c y ] T \begin{bmatrix}c_{x} ,& c_{y} \end{bmatrix}^{T} [cx,cy]T。那么, P ′ P^{'} P的坐标与像素坐标 [ u , v ] T \begin{bmatrix}u ,& v \end{bmatrix}^{T} [u,v]T的关系为:
{ u = α X ′ + c x v = β Y ′ + c y \begin{cases} u=\alpha X^{'}+c_x \\ v=\beta Y^{'}+c_y\\ \end{cases} {u=αX+cxv=βY+cy
将此式与之前的式子进行合并:
{ u = α X ′ + c x v = β Y ′ + c y \begin{cases} u=\alpha X^{'}+c_x \\ v=\beta Y^{'}+c_y\\ \end{cases} {u=αX+cxv=βY+cy

X ′ = f X Z Y ′ = f Y Z \begin{align*} X^{'}&=f \frac{X}{Z} \\ Y^{'}&=f \frac{Y}{Z} \\ \end{align*} XY=fZX=fZY

同时令 α f \alpha f αf合并成 f x f_x fx, β f \beta f βf合并成 f y f_y fy,其中 f f f的单位是米, α , β \alpha, \beta αβ的单位为像素每米,合并得到的 f x , f y f_x,f_y fxfy的单位为像素,得到:
{ u = α f X Z + c x = f x X Z + c x v = β f Y Z + c y = f y Y Z + c y \begin{cases} u&=\alpha f \frac{X}{Z}+c_x&=f_x \frac{X}{Z}+c_x \\ v&=\beta f \frac{Y}{Z}+c_y&=f_y \frac{Y}{Z}+c_y\\ \end{cases} {uv=αfZX+cx=βfZY+cy=fxZX+cx=fyZY+cy
将该式写成矩阵形式,
[ u v 1 ] = 1 Z [ f x 0 c x 0 f y c y 0 0 1 ] [ X Y Z ] = 1 Z K P \begin{bmatrix} u \\ v \\ 1 \end{bmatrix}=\frac{1}{Z}\begin{bmatrix} f_x &0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} X \\ Y \\ Z \end{bmatrix}=\frac{1}{Z}KP uv1 =Z1 fx000fy0cxcy1 XYZ =Z1KP

按照习惯将Z移到左侧:
Z [ u v 1 ] = [ f x 0 c x 0 f y c y 0 0 1 ] [ X Y Z ] = K P Z\begin{bmatrix} u \\ v \\ 1 \end{bmatrix}=\begin{bmatrix} f_x &0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} X \\ Y \\ Z \end{bmatrix}=KP Z uv1 = fx000fy0cxcy1 XYZ =KP
[ f x 0 c x 0 f y c y 0 0 1 ] \begin{bmatrix} f_x &0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} fx000fy0cxcy1 作为相机的内参矩阵K,内参可以利用棋盘网格或者apriltag码方式进行标定。内参一般是不会变化的,除非焦距等参数发生了改变。

二、FOV相关计算公式

1.FOV简介

FOV的全称是Field of View (视场角),它表示相机或者人眼可以接收或者显示的影像的角度范围。由于相机的成像原理,一般都会有视场角的限制。如下图所示当相机的CCD或CMOS传感器的成像平面W一定时,FOV由焦距f决定,当焦距越大时,看的越远 但是FOV就会越小。当焦距越小时,FOV会变大,但是看到的范围就会变近。

image-20231204225034519

2.FOV相关的计算公式

主要分为水平FOV,垂直FOV和对角FOV。其中水平FOV由焦距和sensor的宽度W决定,垂直FOV由焦距和sensor的高度H决定,DFOV由焦距和sensor的宽度W和高度H决定。

image-20231204231622052

image-20231126171343416

相关的计算公式如下,其中 f x , c x , f y , c y f_x,c_x,f_y,c_y fx,cx,fy,cy为相机去畸变后的内参:
水平方向 : H F O V = F O V h o r i z o n t a l = 2 ∗ arctan ⁡ ( c x f x ) = 2 ∗ arctan ⁡ [ t a n ( D F O V 2 ) c o s ( a r c t a n ( c y c x ) ] 垂直方向 : V H O F = F O V v e r t i c a l = 2 ∗ arctan ⁡ ( c y f y ) = 2 ∗ arctan ⁡ [ t a n ( D F O V 2 ) s i n ( a r c t a n ( c y c x ) ] 水平方向:HFOV=FOV_{horizontal} = 2*\arctan(\frac{c_x}{f_x})=2*\arctan[tan(\frac{DFOV}{2})cos(arctan(\frac{c_y}{c_x})] \\ 垂直方向:VHOF=FOV_{vertical} = 2*\arctan(\frac{c_y}{f_y})=2*\arctan[tan(\frac{DFOV}{2})sin(arctan(\frac{c_y}{c_x})] \\ 水平方向:HFOV=FOVhorizontal=2arctan(fxcx)=2arctan[tan(2DFOV)cos(arctan(cxcy)]垂直方向:VHOF=FOVvertical=2arctan(fycy)=2arctan[tan(2DFOV)sin(arctan(cxcy)]

参考链接

相机的FOV计算公式_renmengqisheng的博客-CSDN博客

VR、AR、XR设计中的图像尺寸关系 - 知乎 (zhihu.com)

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在计算接收机视场角(FOV)时,我们需要考虑接收机的一些参数。FOV指的是接收机在视野中可接收到的光的范围,是衡量接收器性能的重要指标之一。以下是计算接收机视场角的步骤: 1.确定接收器的接收范围:接收器的接收范围是指可以接收到信号的距离范围。它由接收器的灵敏度、增益和噪声等参数决定。 2.确定接收器的焦距:焦距是指从接收器到接收器焦点的距离。它由接收器的镜头或光学系统决定。焦距越短,接收器可接收到的区域就越宽。 3.确定接收器的传感器大小:传感器大小决定了接收器可接收到的光线角度。大的传感器大小可以抓住更宽的光线角度,使FOV更大。 4.使用三角函数计算FOV:通过三角函数计算FOV,公式为FOV=2*arctan(s/2f),其中s是接收器的传感器大小,f为接收器的焦距。 通过以上计算可以得出接收器的视场角。如果视场角越大,则表示接收器的性能越好,接收范围更广,具有更强的接收能力。在实际应用中,我们需要根据实际需要来选择合适的接收器,以保证信号的可靠接收。 ### 回答2: 接收机视场角(Field of View,简称FOV)是描述接收机(例如摄像机)所能够看到的视野范围的一个参数。FOV通常用于衡量人眼或摄像机镜头的视角大小,用角度表示。 计算接收机视场角主要需要知道两个参数:焦距(f)和感光元件大小(如传感器的尺寸)。其中,焦距是指从摄像机或望远镜镜头到成像平面的距离,通常用毫米(mm)表示。感光元件大小则是指摄像机或望远镜上感光元件的长宽尺寸,通常用毫米(mm)或英寸(inch)表示。 一般来说,FOV可以使用以下公式进行计算FOV = 2 * arctan (d / 2f) 其中,d表示感光元件大小。这个公式的理论基础是三角函数中的反正切函数(arctan),其结果以弧度(radians)为单位,因此需要将弧度转换为度数(degrees)。 需要注意的是,在实际计算FOV时需要考虑很多因素,例如摄像机或望远镜的镜头类型、成像分辨率、感光元件的尺寸和格式等。因此,FOV计算并不是一个简单的公式,需要结合具体的设备和测量方法进行计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值