欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

展讯FOV配置

程序员文章站 2022-07-14 10:00:34
...

最近展讯项目测试verfier fov fail,测试的值78.52,但是显示的是74.52,修改fov驱动.于是咨询驱动同事,了解了解决方法.记录如下.

  1. 找到对应驱动文件
    vendor/sprd/modules/libcamera/sensor/sensor_drv/classic/Samsung/s5k4e6sub/sensor_s5k4e6_mipi_raw.h

其中有这个结构

static SENSOR_STATIC_INFO_T s_gc5025_static_info[VENDOR_NUM] = {
    {.module_id = MODULE_SUNNY,
     .static_info = {
        .f_num = 200,
        .focal_length = 354,
        .max_fps = 30,
        .max_adgain = 8,
        .ois_supported = 0,
        .pdaf_supported = 0,
        .exp_valid_frame_num = 1,
        .clamp_level = 64,
        .adgain_valid_frame_num = 1,
        .fov_info = {{2.90304f, 2.17728f}, 2.2697f}} // 2.3686
    }
    /*If there are multiple modules,please add here*/
};

其中fov_info就是我们应该修改的地方

1.camera硬件信息和测试角度

Effective Pixel 2592(H) * 1944(V)
Pixel size 1.34um * 1.34um

上面.fov_info = {{X, Y},Z}}这个结构,x表示宽度,y表示高度,z表示到屏幕距离,如下图所示.degre表示测试出来的角度,比如我测试的角度是78.52

展讯FOV配置

像素 2592(H) 1944(V)
1像素大小 1.34um 1.34um

所以有如下公式:
x = 像素宽度* 横向像素 = 1.34 * 2592 / 1000 = 3.4786f
y =像素高度* 纵向像素 = 1.34 * 1944 / 1000 = 2.6050f
夹角正切公式:
展讯FOV配置
tan(0.5 * degree) = 0.5 X / Z
Z = 0.5* X / tan(0.5 * degree) = 3.4786f * 0.5 / 0.817 = 2.1288
故:
.fov_info = {{3.4786f, 2.605f}, 2.1288f}}

其中X,是不变的,Z值是根据测试角度求出来的,可以看到degree越大.Z越小.可以根据这个微调.