hi_isp_piris_attr
说明
定义P-Iris属性。
定义
typedef struct { hi_bool step_fno_table_change; hi_bool zero_is_max; hi_u16 total_step; hi_u16 step_count; hi_u16 step_fno_table[HI_ISP_AI_MAX_STEP_FNO_NUM]; hi_isp_iris_f_no max_iris_fno_target; hi_isp_iris_f_no min_iris_fno_target; hi_bool fno_ex_valid; hi_u32 max_iris_fno_target_linear; hi_u32 min_iris_fno_target_linear; } hi_isp_piris_attr;
成员
成员名称 |
描述 |
---|---|
step_fno_table_change |
P-Iris步进电机位置与光圈 F 值映射表是否更新标志。该值为HI_TRUE时会更新P-Iris步进电机位置与F值映射表,为HI_FALSE时不更新。 |
zero_is_max |
P-Iris步进电机Step 0是否对应最大光圈位置标志,取值与P-Iris镜头相关。该值为HI_TRUE时表示步进 电机处于位置0时,光圈打开至最大,为HI_FALSE时表示步进电机处于位置0时光圈关闭。 |
total_step |
P-Iris步进电机的总步数,具体大小与P-Iris镜头相关。 取值范围为[1, 1024]。 |
step_count |
P-Iris步进电机的可用步数,具体大小与P-Iris镜头相关。 取值范围为[1, 1024]。 |
step_fno_table[HI_ISP_AI_MAX_STEP_FNO_NUM] |
P-Iris步进电机位置与F值映射表,具体数据与P-Iris镜头相关。 取值范围为[1, 1024]。 #define HI_ISP_AI_MAX_STEP_FNO_NUM 1024 |
max_iris_fno_target |
最大光圈目标值,可用于控制AE分配路线,实际生效光圈大小与P-Iris镜头相关。 取值范围为[HI_ISP_IRIS_F_NO_32_0, HI_ISP_IRIS_F_NO_1_0]。 |
min_iris_fno_target |
最小光圈目标值,可用于控制AE分配路线,实际生效光圈大小与P-Iris镜头相关。 取值范围为[HI_ISP_IRIS_F_NO_32_0, HI_ISP_IRIS_F_NO_1_0]。 |
fno_ex_valid |
对接P-Iris时,AE分配路线是否采用更高精度的光圈F值等效增益标志。该值为 HI_TRUE时表示AE分配路线采用高精度的光圈F值等效增益。默认为HI_FALSE。 |
max_iris_fno_target_linear |
最大光圈F值等效增益目标值,可用于控制AE分配路线,实际生效光圈大小与P-Iris镜头相关。 取值范围为[1, 1024]。 |
min_iris_fno_target_linear |
最小光圈F值等效增益目标值,可用于控制AE分配路线,实际生效光圈大小与P-Iris镜头相关。 取值范围为[1, 1024]。 |
注意事项
- 在线更换P-Iris镜头时,可以通过MPI设置该结构体,将新镜头的参数传递给AE算法和P-Iris驱动。
- step_fno_table_change为只写寄存器,通过MPI获取该参数的值始终为HI_FALSE。
- total_step表示P-Iris步进电机的总步数,可用于标定光圈的起始位置。
- step_count表示P-Iris步进电机的可用步数,一般小于total_step,因为靠近光圈关闭端的位置在将光圈孔径转换为F值时误差较大,光圈调节过程中容易出现振荡,所以通常不会利用光圈关闭端附近的那些位置。当前最多支持1024步的PIris镜头,若P-Iris镜头的精度很高,可调节步数超过1024,建议舍去光圈关闭端附近的那些位置。
- P-Iris步进电机位置与光圈F值映射表step_fno_table一般根据镜头原厂提供的步进电机位置与光圈孔径对应关系制作。由于 P-Iris的控制通过AE分配路线进行,这就要求光圈F值与曝光时间和增益有较好的线性关系,因此映射表需要较高的精度。这里用1024表示F1.0,512表示F1.4,以此类推,1表示F32.0。制作映射表时,可以根据最大光圈孔径对应的实际F值来规定映射表的最大值,也可以不用管光圈达到最大时的实际F值是多少,统一将最大光圈孔径映射为1024。同一款镜头处于不同焦距时,step_fno_table可能需要修改。
- 以福光NV03105P这款P-Iris镜头为例说明与镜头相关的参数该如何设置。表1中步进电机位置与孔径面积对应关系是镜头原厂提供的。该款镜头步进电机总步数为93,步进电机位置为0时,光圈孔径面积最大,标称最大相对孔径为F1.4,据此规定映射表F值最大值为512。规定好最大值后,就可以计算出其他孔径面积对应的F值,因为孔径面积与F值成线性关系。比如说步进电机位置1对应的孔径面积为48.835,得到F值为(48.835/49.366)*512=506,以此类推,可以得到所有有效步进电机位置对应的F值。由下表可以看到,当镜头靠近关闭端时,孔径面积很小,与最大孔径面积相差上万倍,映射表F值精度已不足以表现出孔径面积的变化,得到的F值都为0。实际上,哪怕提高映射表精度,由于镜头关闭端附近标称孔径面积与实际孔径面积一般相差较大,得到的F值也是不正确的,建议不要使用,否则在光圈调节过程中容易出现振荡。对于该款镜头,建议制作映射表时只取前62步,因此得到镜头相关的参数如下表所示。
- 步进电机位置与光圈F值映射表step_fno_table的前step_count个元素才是有效的,会被AE算法计算时用到,需要保证数组座标小于step_count时,值单调递增,当数组座标为(step_count-1)时,达到光圈最大F值。通过MPI设置 step_fno_table时,只有前step_count个元素才会被写入寄存器保存;通过MPI获取step_fno_table时,只有前 step_count个元素才会读出有效数值,其他值为0。
- 光圈类型为P-Iris时,昇腾AE算法计算最大/最小曝光量会参考max_iris_fno_target/min_iris_fno_target(若fno_ex_valid 为 true,则参考max_iris_fno_target_linear/min_iris_fno_target_linear)的值,因此这几个值要与step_fno_table的值相匹配,即最大/最小值都在step_fno_table有效数据范围内。
- 在手动配置DCF光圈相关信息时,需要关闭AI。如果需要配置的最大及实际光圈值为hi_isp_iris_f_no中定义的10个标准值,配置max_iris_fno_target为最大光圈值,配置min_iris_fno_target为实际光圈值即可。如果光圈不为10个标准值,则需要配置fno_ex_valid为HI_TRUE,以F32.0等效增益为1倍为基数计算实际光圈及最大光圈等效增益,并配置 max_iris_fno_target_linear为最大光圈等效增益,配置min_iris_fno_target_linear为实际光圈等效增益。如果AI使能,则根据实际光圈生效的大小计算光圈值,并更新DCF信息。光圈最小可支持到F32.0。
步进电机位置 |
孔径面积 |
映射表F 值 |
步进电机位置 |
孔径面积 |
映射表 F 值 |
步进电机位置 |
孔径面积 |
映射表 F 值 |
---|---|---|---|---|---|---|---|---|
0 |
49.366 |
512 |
35 |
20.07 |
208 |
70 |
0.136 |
1 |
1 |
48.835 |
506 |
36 |
19.241 |
200 |
71 |
0.095 |
1 |
2 |
48.234 |
500 |
37 |
18.42 |
191 |
72 |
0.067 |
1 |
3 |
47.571 |
493 |
38 |
17.609 |
183 |
73 |
0.045 |
0 |
4 |
46.856 |
486 |
39 |
16.808 |
174 |
74 |
0.028 |
0 |
5 |
46.11 |
478 |
40 |
16.017 |
166 |
75 |
0.016 |
0 |
6 |
45.324 |
470 |
41 |
15.237 |
158 |
76 |
0.008 |
0 |
7 |
44.511 |
462 |
42 |
14.469 |
150 |
77 |
0.004 |
0 |
8 |
43.674 |
453 |
43 |
13.788 |
143 |
78 |
0.003 |
0 |
9 |
42.822 |
444 |
44 |
12.972 |
135 |
79 |
0.003 |
0 |
10 |
41.963 |
435 |
45 |
12.254 |
127 |
80 |
0.002 |
0 |
11 |
41.099 |
426 |
46 |
11.541 |
120 |
81 |
0.002 |
0 |
12 |
40.231 |
417 |
47 |
10.843 |
112 |
82 |
0.001 |
0 |
13 |
39.357 |
408 |
48 |
10.162 |
105 |
83 |
0.001 |
0 |
14 |
38.478 |
399 |
49 |
9.497 |
98 |
84 |
0.001 |
0 |
15 |
37.608 |
390 |
50 |
8.851 |
92 |
85 |
close |
0 |
16 |
36.721 |
381 |
51 |
8.222 |
85 |
86 |
close |
0 |
17 |
35.832 |
372 |
52 |
7.611 |
79 |
87 |
close |
0 |
18 |
34.94 |
362 |
53 |
7.018 |
73 |
88 |
close |
0 |
19 |
34.047 |
353 |
54 |
6.443 |
67 |
89 |
close |
0 |
20 |
33.153 |
344 |
55 |
5.893 |
61 |
90 |
close |
0 |
21 |
32.259 |
335 |
56 |
5.354 |
56 |
91 |
close |
0 |
22 |
31.365 |
325 |
57 |
4.832 |
50 |
92 |
close |
0 |
23 |
30.473 |
316 |
58 |
4.329 |
45 |
93 |
M- stop |
0 |
24 |
29.582 |
307 |
59 |
3.843 |
40 |
- |
- |
- |
25 |
28.706 |
298 |
60 |
3.376 |
35 |
- |
- |
- |
26 |
27.82 |
289 |
61 |
2.926 |
30 |
- |
- |
- |
27 |
26.937 |
279 |
62 |
2.494 |
26 |
- |
- |
- |
28 |
26.059 |
270 |
63 |
2.08 |
22 |
- |
- |
- |
29 |
25.184 |
261 |
64 |
1.684 |
17 |
- |
- |
- |
30 |
24.315 |
252 |
65 |
1.305 |
14 |
- |
- |
- |
31 |
23.451 |
243 |
66 |
0.949 |
10 |
- |
- |
- |
32 |
22.593 |
234 |
67 |
0.607 |
6 |
- |
- |
- |
33 |
21.741 |
225 |
68 |
0.374 |
4 |
- |
- |
- |
34 |
20.896 |
217 |
69 |
0.225 |
2 |
- |
- |
- |
参数名 |
参数值 |
备注 |
---|---|---|
zero_is_max |
HI_TRUE |
步进电机位置0对应光圈最大孔径,因此该值为HI_TRUE |
total_step |
93 |
步进电机总步数为93 |
step_count |
62 |
步进电机可用步数为62 |
step_fno_table |
{30,35,40,45,50,56,61,67,73,79,85,92,98,105,112,120,127,135,143,150,158, 166,174,183,191,200,208,217,225,234,243,252,261,270,279,289,298,307,316,325,335,344, 353,362,372,381,390,399,408,417,426,435,444,453,462,470,478,486,493,500,506,512} |
根据表1,取步进电机前62 步对应的F值,按照从小到大的排列顺序,制作映射表。AE算法计算时,只会用到 step_fno_table数组中的前step_count个元素。当数组座标小于step_count时,值必须保证是单调递增的。当数组座标为(step_count-1)时,达到光圈最大F值512。 |
max_iris_fno_target |
HI_ISP_IRIS_F_NO_1_4 |
映射表最大值512对应F1.4 |
min_iris_fno_target |
HI_ISP_IRIS_F_NO_5_6 |
映射表最小值30接近对应F5.6 |
fno_ex_valid |
HI_FALSE |
默认不采用高精度的光圈F值等效增益 |
max_iris_fno_target_ linear |
512 |
取step_fno_table有效数据范围内的最大值512 |
min_iris_fno_target_l inear |
30 |
取step_fno_table有效数据范围内的最小值30 |