《视场角相关计算》


如何计算相机视场角


简介

  • 视野,视场,视角(field of view, FOV)

  • 在光学仪器中,以光学仪器的镜头为顶点,以被测目标的物像可通过镜头的最大范围的两条边缘构成的夹角,称为视场角

  • 视场角分为水平视场角和垂直视场角

视场角计算

SDK

  • 部分海康相机SDK可以获取视场角
  • 如果NET_DVR_GetLastError返回错误代码23,说明设备不支持
NET_DVR_GetSTDConfig(lUserID, NET_DVR_GET_GISINFO, &struCfg);
float fHorizontalValue = struGISInfo.fHorizontalValue; // 水平视场角
float fVerticalValue = struGISInfo.fVerticalValue;  // 垂直视场角
printf("水平视场角:%.3f, 垂直视场角:%.3f\n", fHorizontalValue, fVerticalValue);

视距和视场宽高

  • 根据实际视距和视场宽高来计算

{ α h = 2 a r c t a n 实 际 视 场 宽 度 / 2 实 际 视 距 α v = 2 a r c t a n 实 际 视 场 高 度 / 2 实 际 视 距 \begin{cases} \alpha_h = 2arctan\frac{实际视场宽度/2}{实际视距}\\ \alpha_v = 2arctan\frac{实际视场高度/2}{实际视距} \end{cases} {αh=2arctan/2αv=2arctan/2

CCD靶面尺寸

{ α h = 2 a r c t a n H C C D 2 f h α v = 2 a r c t a n W C C D 2 f v \begin{cases} \alpha_h = 2arctan\frac{H_{CCD}}{2f_h}\\ \alpha_v = 2arctan\frac{W_{CCD}}{2f_v} \end{cases} {αh=2arctan2fhHCCDαv=2arctan2fvWCCD

像素焦距和图像长宽

  • 根据像素焦距和图像长宽获取

{ α h = 2 a r c t a n H i m g 2 f x α v = 2 a r c t a n W i m g 2 f y \begin{cases} \alpha_h = 2arctan\frac{H_{img}}{2f_x}\\ \alpha_v = 2arctan\frac{W_{img}}{2f_y} \end{cases} {αh=2arctan2fxHimgαv=2arctan2fyWimg

  • 比较推荐这一种方法,简单示例:
  1. 寻找已知实际尺寸的四个点,不同角度拍摄至少四张

  1. 标定内参矩阵
def build_world_coor(num_points=4): # 自定义世界坐标系
    world_coor = np.zeros((num_points, 3), np.float32)
    world_coor[0,:] = [0, 0, 0]
    world_coor[1,:] = [0.6, 0,0]
    world_coor[2,:] = [0.6, 0.6, 0]
    world_coor[3,:] = [0, 0.6, 0]
    return world_coor

def calib_k(path, size, num_points, path_out=None): # 内参标定
    world_coor = build_world_coor(num_points)
    l_data = read_data(path)
    l_world, l_img = [], []
    for ind, item in enumerate(l_data):
        img_coor = np.zeros((num_points, 1, 2), dtype='float32')
        l_world.append(world_coor)
        for i in range(num_points):
            img_coor[i,:,:] = np.matrix(item[2*i:2*i+2])
        l_img.append(img_coor)
    ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(l_world, l_img, size, None, None)
    print('内参矩阵:', mtx)
  1. 计算视场角
Width = 2560
Height = 1440
fov_h = 2 * np.rad2deg(np.arctan( Width / (2*fx)))
fov_v = 2 * np.rad2deg(np.arctan( Height/ (2*fy)))
print("水平视场角: ", fov_h)
print("垂直视场角: ", fov_v)
  • 1
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答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的计算并不是一个简单的公式,需要结合具体的设备和测量方法进行计算

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值