Xarina4135 ISP图像参数
之前总觉得写工作总结文档很麻烦,没什么用处,现在后悔了,之前在做xarina4135 项目,那时没有写工作总结的习惯,时间一长,很多东西都忘了,现在想添加一些功能,那得重复的去看那些之前看过的蛋疼的文档。
用户界面的软件的各项功能传送过来的数据,在ISP端需要对其进行处理,然后作用于相关的寄存器,以便实现对应的功能。以下总结了一部分功能所对应的寄存器(仅供参考),以便能够快速的编码实现相关功能。
注:取值范围(range)指的是寄存器取值范围
1、画面调节
要求必须有以下内容:亮度、锐度、饱和度、对比度。对于色调(hue)可有可无。
每个功能对于的寄存器:
寄存器种类catNo | 寄存器名 subRegister | 偏移地址offsetaddress | 起始位startbit | 结束位endbit | 默认值default | 取值范围range | 简单说明 |
0x20 | UISHARPNESS | 0x0008 | 0x00 | 0x07 | 0x40 | 0x00--0xFF | 锐度 |
0x20 | UIBRIGHTNESS | 0x0006 | 0x00 | 0x07 | 0x00 | 0x00--0xFF | 亮度 |
0x20 | UISATURATION | 0x0003 | 0x00 | 0x07 | 0x80 | 0x00--0xFF | 饱和度 |
0x20 | UICONTRAST | 0x0007 | 0x00 | 0x07 | 0x80 | 0x00--0xFF | 对比度 |
0x20 | UIHUE | 0x0001 |
|
| 0x00 | 0x00--0xFF | 色度 |
2、快门
开门模式分为自动快门和手动快门两种;快门值有:1/5、1/10、1/15、1/20、1/25(50HZ):1/30(60HZ)、1/50(50HZ):1/60(60HZ)、1/100(50HZ):1/120(60HZ)、1/125、1/200 1/250 、1/500 、1/1000 、1/2000 、1/5000 、1/10000 、1/20000 、1/50000等参考如下图:
a、快门时间的计算公式: 快门时间 = 寄存器值 x 1/10000秒
b、对应的寄存器
寄存器种类catNo | 寄存器名 subRegister | 偏移地址offsetaddress | 起始位startbit | 结束位endbit | 默认值default | 取值范围range | 简单说明 |
0x08 | SHRMINLINE | 0x0031 | 0x00 | 0x07 | 0x1f | 0--0xFF | 最小值快门时间 |
| |||||||
0x19 | SHTCTRLTIME1_COM | 0x0004 | 0x00 | 0x0F | 0x00 | 0--0xFFFF | 足够亮的环境 |
| |||||||
0x19 | SHTCTRLTIME2_COM | 0x000A | 0x00 | 0x0F | 0x64 | 0--0xFFFF |
|
0x19 | SHTCTRLTIME3_COM | 0x0010 | 0x00 | 0x0F | 0x64 | 0--0xFFFF |
|
0x19 | SHTCTRLTIME4_COM | 0x0016 | 0x00 | 0x0F | 0xC8 | 0--0xFFFF |
|
0x19 | SHTCTRLTIME5_COM | 0x001C | 0x00 | 0x0F | 0xC8 | 0--0xFFFF | 最暗的环境 |
| |||||||
0x18 | AEPRISHT | 0x0008 | 0x00 | 0x1F | 0x00 | 0--0xFFFFFFFF | 快门优先,0为关闭 |
注:默认值(default)为Sony原厂的默认值
当环境进入这几个级别的中的任意一个级别,就使用该级别所设置的值为当前快门值,如果亮度较高的级别中所设的值有比当前级别所设的值大,那么此时就会使用最大的那个值为当前快门时间的值。
例如:
当亮度降低到级别4(SHTCTRLTIME4_COM)时,如果级别4所设的快门值为0xc8,如果第二、第三级别中快门时间值都小于第四级别快门时间值(0xc8),那么当前的快门时间就为0xc8,如果第三、第四级别中的快门时间值有比第四级别的快门时间值大,那么当前的快门时间值就是这3个 级别中最大的那个值(假如第二级别的快门时间值为0xd5,第三级别快门时间值为0xd2,那么当前的快门时间值为0xd5)。意思就是:当亮度进入第二级别以后的任意级别,那么快门时间实际值就是利用当前级别的值与他前面的级别进行比较,取最大值为实际快门时间值。
c、快门优先
当快么优先寄存器的值为0时,关闭快门优先。当快么优先寄存器的值不为0时,快门优先打开,此时快们级别的设置无效,当前的快门时间值为快门优先寄存器所设置的值。
建议(仅作参考):
1)、当快门模式为:自动快门时,选择使用级别的方式(2--5级别可以按照一定的 比例来改变)。
2)、当快门模式为:手动模式时,选择快门优先的方式。
3、增益
增益控制分为:自动增益、固定增益。
当为自动曝光模式时,根据亮度的变化,增益划分为6个级别。
a、增益计算公式: 增益 = 设置值 x 0.3db
b、对应的寄存器
寄存器种类catNo | 寄存器名 subRegister | 偏移地址offsetaddress | 起始位startbit | 结束位endbit | 默认值default | 取值范围range | 简单说明 |
0x08 | AGCMINGAIN | 0x0032 | 0x00 | 0x07 | 0x1f | 0--0xFF | 最小增益值 |
| |||||||
0x19 | AGCGAIN1_COM | 0x0006 | 0x00 | 0x0F | 0x00 | 0--0xFF | 足够亮的环境 |
| |||||||
0x19 | AGCGAIN2_COM | 0x000C | 0x00 | 0x07 | 0x50 | 0--0xFF |
|
0x19 | AGCGAIN3_COM | 0x0012 | 0x00 | 0x07 | 0x50 | 0--0xFF |
|
0x19 | AGCGAIN4_COM | 0x0018 | 0x00 | 0x07 | 0xB4 | 0--0xFF |
|
0x19 | AGCGAIN5_COM | 0x001E | 0x00 | 0x07 | 0xB4 | 0--0xFF | 最暗的环境 |
|
注:默认值(default)为Sony原厂的默认值
当环境进入这几个级别的中的任意一个级别,就使用该级别所设置的值为当前增益值,如果亮度较高的级别中所设的值有比当前级别所设的值大,那么此时就会使用最大的那个值为当前增益值。
例如:
当亮度降低到级别4(AGCGAIN4_COM)时,如果级别4所设的增益值为0xb4,如果第二、第三级别中增益值都小于第四级别增益值(0xb4),那么当前的增益就为0xb4,如果第三、第四级别中的增益值有比第四级别的增益值大,那么当前的增益值就是这3个 级别中最大的那个值(假如第二级别的增益值为0xd5,第三级别增益值为0xd2,那么当前的增益值为0xd5)。意思就是:当亮度进入第二级别以后的任意级别,那么增益实际值就是利用当前级别的值与他前面的级别进行比较,取最大值为实际增益值。
建议:(仅作参考)
1、当增益控制模式为:自动增益时,选择级别的方式(个级别值可以按照一定的 比例增减)
2、当增益控制模式为:固定增益时,选取第二级别的增益值为参考,其他级别的 增益值全都设为0.
注意:当由固定增益模式改为自动增益时,要把各个级别的增益值还原。
4、日夜模式
日夜模式分为:自动模式、白天模式、夜晚模式。
阀门值的设置可以使用增益、曝光、亮度、暗度来作为判断条件,下图是用增益作为判断条件
对应的寄存器:
寄存器种类catNo | 寄存器名 subRegister | 偏移地址offsetaddress | 起始位startbit | 结束位endbit | 默认值default | 取值范围range | 简单说明 |
0x1E | DN_DAYNIGH | 0x0006 | 0x00 | 0x00 | 0x01 | 0x00--0x01 | 0:自动 1:手动 |
日夜切换阀门 | |||||||
0x1F | DNCNT_TH_ND | 0x0004 | 0x00 | 0x0F | 0x05 | 0x00--0xffff | 进入白天阀门; |
0x1F | DNCNT_TH_DN | 0x0002 | 0x00 | 0x0F | 0x05 | 0x00--0xffff | 进入夜晚阀门 |
0x1F | DNCNT_SEL | 0x0000 | 0x00 | 0x00 | 0x01 | 0x00--0x01 | 选取进入日夜模式类型0为有效帧数,1为时间秒 |
如果DNCNT_SEL设置为1 则要设置进入日夜模式的持续时间 | |||||||
0x2D | NIGHT_TH_A | 0x0002 | 0x00 | 0x07 | 0x8B | 0x00--0xff | 判斷日>夜的亮度持續時間阈值 |
0x2D | NIGHT_TH_B | 0x0003 | 0x00 | 0x07 | 0x82 | 0x00--0xff | 判斷夜>日的亮度持續時間阈值 |
手动模式下的日/夜设置 | |||||||
0x1E | DN_DAYNIGH | 0x0006 | 0x01 | 0x01 | 0x00 | 0x00--0x01 | 日夜模式0:day 1:night |
|
|
|
|
|
|
|
|
| |||||||
0x1E | NIGT_INTERLOCK_TYPE | 0x0000 | 0x01 | 0x07 | 0x01 | 0x00--0xff | 判断条件选择: 0: Gain-tracked (shutter interpolation included) 1: Gain-tracked (shutter intinterpolation not included) 2:AEcontrolarea-tracked 3:Brightness rea-tracked 4: Dark level area-track |
5、自动光圈
自动光圈控制:开启、关闭。
对应的寄存器:
寄存器种类catNo | 寄存器名 subRegister | 偏移地址offsetaddress | 起始位startbit | 结束位endbit | 默认值default | 取值范围range | 简单说明 |
|
|
|
|
|
|
| 自动光圈模式 |
|
|
|
|
|
|
| 自动光圈速度 |
|
|
|
|
|
|
|
|
|
6、Gamma调节
对应的寄存器:
寄存器种类catNo | 寄存器名 subRegister | 偏移地址offsetaddress | 起始位startbit | 结束位endbit | 默认值default | 取值范围range | 简单说明 |
0x21 | CGAMSEL | 0x0000 | 0x06 | 0x07 | 0x00 | 0x00--0x03 | Gamma调节 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7、宽动态
宽动态模式:打开、关闭。宽动态强度值等设置。
对应的寄存器:
寄存器种类catNo | 寄存器名 subRegister | 偏移地址offsetaddress | 起始位startbit | 结束位endbit | 默认值default | 取值范围range | 简单说明 |
0x29 | VATR_NO | 0x0000 | 0x00 | 0x00 | 0x01 | 0x00-0x01 | 宽动态模式0: OFF 1: ON |
0x29 | CHE_GAIN_STRENGTH_MID | 0X0042 | 0x00 | 0x0a | 0x400 | 0x00-0xFFF | 宽动态强度 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8、测光区域(xarina4135 没有此功能)
测光区域分为平均测光、中心权重测光、点测光、背照式补偿、过度曝光补偿。
对应的寄存器:
寄存器种类catNo | 寄存器名 subRegister | 偏移地址offsetaddress | 起始位startbit | 结束位endbit | 默认值default | 取值范围range | 简单说明 |
0x18 | AEWEIGHTMODE | 0x0002 | 0x00 | 0x02 | 0x00 | 0x00--0x07 | 曝光区域 |
取值说明: 0h:平均测光;1h:中心权重测光;2h:点测光;4h:背照式补偿;5h:过度曝光补偿 | |||||||
| |||||||
中心权重测光有4中类型可选 | |||||||
0x18 | WEIGHTMAP_TYPE | 0x0002 | 0x03 | 0x04 | 0x00 | 0x00--0x03 | 取值0--3不同的类型 |
| |||||||
点测光 | |||||||
0x14 | SPOT_START_H | 0x00D0 | 0x00 | 0x07 | 0x04 | 0x00--0x08 | 水平方向起点 |
0x14 | SPOT_START_V | 0x00D1 | 0x00 | 0x07 | 0x03 | 0x00--0x06 | 垂直方向起点 |
0x14 | SPOT_WIDTH | 0x00D2 | 0x00 | 0x07 | 0x01 | 0x00--0xFF | 水平方向宽 |
0x14 | SPOT_HEIGHT | 0x00D3 | 0x00 | 0x07 | 0x01 | 0x00--0xFF | 水平方向高 |
0x14 | SPOT_SUDE_WEIGHT | 0x00D5 | 0x00 | 0x07 | 0x20 | 0x00--0xFF | 权重系数值 |
注:1、取值范围(range)指的是寄存器取值范围
2、适用线性模式(宽动态模式无效)。
由于Xarina4135没有测光功能,我们要实现在对强光进行抑制,那么只能结合快门时间、增益、及ATR功能共同来实现强光抑制功能。
9、白平衡
白平衡模式分为:自动白平衡、手动白平衡
对应的寄存器:
寄存器种类catNo | 寄存器名 subRegister | 偏移地址offsetaddress | 起始位startbit | 结束位endbit | 默认值default | 取值范围range | 简单说明 |
|
|
|
|
|
|
| 白平衡模式 |
|
|
|
|
|
|
| 手动模式 |
|
|
|
|
|
|
| 自动跟踪白平衡 |
|
|
|
|
|
|
| 红增益 |
|
|
|
|
|
|
| 蓝增益 |
10、镜像
镜像功能分为:正常、水平翻转、垂直翻转、水平+垂直翻转
镜像功能直接调用libne3codec.so里面的ne3_cl_post_invert_picture()函数去实现,如果要查看当前的镜像状态,就调用ne3_cl_post_get_status()这个函数。
11、降噪
降噪分为2D降噪和3D降噪
对应的寄存器:
寄存器种类catNo | 寄存器名 subRegister | 偏移地址offsetaddress | 起始位startbit | 结束位endbit | 默认值default | 取值范围range | 简单说明 |
0x27 | NR3_MODE | 0x0000 | 0x00 | 0x02 | 0x04 | 0x00--0x07 | 降噪模式 0: OFF 1: 3D NR mode 2: 3D/2D NR mode 3: 3D/2D/REF NR mode 4: 3D/2D/Blend NR mode 5: 3D/2D/Blend/REF NR mode 6,7: OFF |
0x27 | NR3_NR3_GAIN | 0x0001 | 0x00 | 0x07 | 0x20 | 0x00--0xFF | 3D-NR sterngth |
0x27 | NR3_NR2_GAIN | 0x0002 | 0x00 | 0x07 | 0x00 | 0x00--0xFF | 2D-NR strength linked to 3D-NR |
0x27 | NR3_NRB_GAIN | 0x0003 | 0x00 | 0x07 | 0x20 | 0x00--0xFF | 2D and 3D-NR strength ratio |
0x27 | NR3_YREV_GAIN | 0x0004 | 0x00 | 0x07 | 0x20 | 0x00--0xFF | 2D-NR strength depended on the luminance |
12、工频(防闪烁)
50 Hz fixed flicker-less mode
60Hz fixed flicker-less mode
Flicker-less mode OFF
对应的寄存器:
寄存器种类catNo | 寄存器名 subRegister | 偏移地址offsetaddress | 起始位startbit | 结束位endbit | 默认值default | 取值范围range | 简单说明 |
0x19 | FLCMODE_COM | 0x0000 | 0x00 | 0x02 | 0x07 | 0x00-0x07 | flicker |
3h: 50 Hz fixed flicker-less mode 4h: 60 Hz fixed flicker-less mode 7h: Flicker-less mode OFF 1,2,5,6h: Prohibited settings |