TDI相机如何做DSNU校正、PRNU校正、LUT?
1、DSNU校正
(1) 为什么要进行DSNU(Dark Signal Non-uniformity)校正?
在传感器中,即使在完全黑暗的条件下,也会存在一些暗电流。这些暗电流由于制造过程中的微小差异而在传感器表面形成非均匀分布,因此需要通过DSNU校正把图像的本底校正均匀。
(2) DSNU校正方法
1) 数据采集:首先,相机需要在完全黑暗条件下采集一组暗场图像。
2) 平均化:相机会将采集到的暗场图像进行平均化处理,得到一个平均后的暗场图像。
3) 生成校正图:用平均暗场图像减去一个参考图像(全0或全100等)来生成暗场校正图。
4) 存储校正图:将生成的暗场校正图存储在相机内部的非易失性存储器中,作为后期暗场校正算法的输入。
5) 应用校正:在实际拍摄图像时,相机每张拍摄的图像都会减去校正图像来消除传感器的暗电流非均匀性。
(3) DSNU校正前后对比
从下面两张图可以明显的看出在水平方向上校正后的图像,相对于校正前的图像均匀性有明显提高。
未校正前暗场水平灰度值曲线
DSNU校正后暗场水平灰度值曲线
(4) DSNU校正步骤
1) FanOperationMode设置为Temperature,TECOperationMode设置为Temperature;
2) 设置CoolOperationTemperature温度为实际工作时温度;
3) 等待Sensor温度稳定; (DeviceControl/SensorTemperature)
4) 设置BinningHorizontal和BinningVertical为X1;
5) 设置TriggerMode为Off;
6) 设置LUTEnalbe为Off;
7) 设置DSNUMode为Off;
8) 设置PRNUMode为Off;
9) 设置TestPattern为Off;
10) 设置OperationMode为TDI;
11) 设置BlackLevel为0;
12) 设置AcquisitionLineRate,TDIStagesP1,AnalogGain,PixelFormat为实际工作时的参数;
13) 盖上镜头盖,如果不方便盖镜头盖,可以看通过看平均灰度值来确定是否漏光,当AcquisitionLineRate为80000Hz,TDIStagesP1为256,AnalogGain为X2,PixelFormat为8bit,并且设置完以上参数后平均灰度值应该为20左右,如果大于20说明有漏光,我司的建议是盖上盖子。
14) 执行Live开始出图,执行DSNUGenerate相机开始做DSNU校正,需要的时间和设置的AcquisitionLineRate有关,做完后设置DSNUMode为On,观察图像的平均灰度值,理论上8bit平均灰度值为6,10bit为25,12bit为100。如果平均灰度值和理论值差异较大说明DSNU校正出错,需要检查操作步骤是否正确。
15) 如果确定本次DSNU校正有效,则可以执行DSNUSave,那么本次校正的数据将会和当前的PixelFormat、AnalogGain绑定,并且存储到相机的非易失性存储器,掉电不丢失,下次切换到该PixelFormat、AnalogGain的组合下会自动加载本次存储的校正数据。
16) 如果选择DSNUGenerateAll,那么相机会自动切换AnalogGain从X2到X8,在每一个模拟增益下均做一次DSNU,并且每次校正完成后会自动保存到相机的非易失性存储器,这样将会覆盖之前的校正数据,因此校正前需要确定之前的DSNU校正数据是否可以覆盖。DSNUGenerateAll只会做当前配置的PixelFormat,如果需要做其他PixelFormat参数下的DSNU校正,需要先切换到实际使用的PixelFormat参数下,然后再执行DSNUGenerateAll。
(5) DSNU校正常见问题解答
1) DSNULoad作用
在使用DSNUGenerate的时候校正完成后并不会直接保存到非易失性存储器,而是保存在DDR中,掉电直接会丢失,如果本次DSNUGenerate的校正结果不满意,需要重新加载存储在相机中的历史DSNU校正参数,这时候就可以点击DSNULoad,相机会加载之前存储在相机的校正数据。
2) 为什么不同行频、模拟增益、TDI级数、位深、温度需要单独做DSNU校正
因sensor暗电流的原因,不同行频、模拟增益、TDI级数、位深、温度下背景数据不同,我们无法做到出厂时校正所有场景并保存到相机中,故建议客户使用时在自己设备的使用条件下进行校正。下列数据是AnalogGain X2 、DigitalGain X1、TDI级数256的配置下,分别设置行频为1K和300k下的暗场图像平均灰度值,可以看出不同行频下的暗场平均灰度值有较大差异,从数据方面进一步说明行频下需要单独做DSNU校正。
行频 | 8bit | 10bit | 12bit |
300K | 20 | 80 | 70 |
1K | 31 | 108 | 150 |
3) 为什么8bit、10bit打开DSNU校正后图像不能饱和,12bit打开DSNU后图像平均灰度值增大
在8bit时,DSNU校正会用平均暗场图像(20DN)减去一个参考图像(6DN)来生成暗电流校正图(14DN)。校正功能打开时会实时用原始图像减去暗电流校正图(14DN),因此图像会相对于原始图像偏暗,并且不能饱和,10bit时同理。
12bit时,DSNU校正会用平均暗场图像(70DN)减去一个参考图像(100DN)来生成暗电流校正图(-30DN)。校正功能打开时会实时用原始图像减去暗电流校正图(-30DN),因此图像会相对于原始图像偏亮。如果上述问题会影响使用时可以通过调整BlackLevel的值修复上述问题。
以上数据是在行频为300K 、AnalogGain X2 、DigitalGain X1、TDI级数256下的结果,不同行频下,DSNU对图像的影响有所差异,需要按照以上逻辑单独分析。
4) DSNU校正需要多长时间
由于DSNU校正需要采集图像,因此校正时间跟行频相关,行频越大,校正越快,需要的时间越短。理论校正时间可以通过DSNU PRNU Generate时间计算表格进行计算;在代码逻辑上可以根据下图所示代码来判断DSNUGenerate或者 DSNUGenerateAll是否完成;如果在Sample上校正则可以通过观察图像是否恢复正常来判断校正是否完成。
5) 怎么判断DSNU校正成功了
首先需要将DSNUMode设置成On,BlackLevel为0,观察图像的平均灰度值是否在正确的范围内;校正后正确的平均灰度值应该是8bit为6,10bit为25,12bit为100。其次可以对比图像在水平方向上的均匀性,分别采集DSNUMode设置成Off和设置成On的图像,用ImageJ对水平方向上的图像均匀性进行对比,如果均匀性明显变好,则表示DSNU校正成功,可以通过DSNU Save保存本组参数到相机。
6) 为什么切换模拟增益或者位深后DSNU校正效果发生了变化
因为相机内部会将不同位深和不同模拟增益的DSNU校正参数单独保存,在切换位深或者模拟增益时不需要执行DSNULoad命令相机内部就会自动加载对应的DSNU参数。所以如果需要在不同位深或者模拟增益切换使用时,建议先切换到10bit执行一次DSNUGenerateAll,再切换到12bti执行一次DSNUGenerateAll,由于10bit和8bit模式使用一组DSNU参数,因此8bit不需要单独做;这样完成校正后,所有的位深和增益都完成了校正,方便后续相机在不同位深和模拟增益下的使用。
7) 为什么在做DSNU校正时图像异常
因为在做DSNU校正时会采集Sensor的图像计算校正参数,因此会导致输出的图像异常,属于正常现象,校正完成后会自动恢复正常;因此需要等待DSNU校正完成后才能进行图像采集。
8) 不同方向需要单独做DSNU校正吗
不需要,因为在执行校正命令时相机内部会自动校正正扫和反扫两个方向,并且在切换方向时会相机会自动加载该方向的DSNU校正参数。
9) 为什么校正前暗场本底值偏大
AcquisitionLineRate设置为300kHz,TDIStagesP1设置为256,AnalogGain设置为X2,暗场本底值理论上8bit为20,10bit为80,12bit为70。如果本底值不对,需要确定DSNUMode是否设置为Off,BlackLevel是否设置为0,PRNU是否设置成Off,DigitalGain是否设置成X1,LUTEnalbe是否设置成Off,OperationMode是否设置成TDI。
确定固件版本,由于历史原因,2904之前的版本可能会存在本底值偏大的现象。具体测试使用的是2901211203这个版本,12bit暗场本底有170DN左右。
确定是否漏光,建议盖上盖子对比一下灰度值是否有差异,如果有差异说明有漏光。
10) 做DSNU校正时需要将DSNU Mode设置为Off吗
在确定是否存在漏光以及暗场校正前的本底值是否正常时需要将DSNU Mode设置成Off,在执行DSNUGenerate或DSNUGenerateAll命令之前DSNU Mode状态没影响。
11) UserSet是否会影响DSNU校正参数
不会,只有DSNUGenerateAll和DSNUSave会覆盖保存在相机内部的DSNU校正参数。
2、PRNU校正
(1) 为什么要进行PRNU(Photo-Response Non-Uniformity)校正
PRNU校正是一种用于图像传感器的校正技术,用于消除图像中因传感器非均匀响应而引入的噪声和伪影。图像传感器中的PRNU是由于制造过程和材料非性引起的,会导致不同像素在相同光照条件下的响应差异。这种差异可能会表现为图像中的背景噪声、斑点、条纹等问题。
(2) PRNU校正方法
1) 采集校准图像:相机在半饱和的均匀光照下采集一组原始图像,最好是使用均匀光,以确保校准图像中没有其他复杂的影响。
2) 多张图求平均:将采集到的一组图像求出一张平均图像。
3) 确定目标灰度值:可以通过采集到的图像求平均值作为目标灰度值,也可以手动输入目标灰度值。
4) 生成PRNU校正图像:通过 “目标灰度值/平均图像”计算出校正图像。
5) 存储PRNU校正图像:将生成的PRNU校正图像存储在相机的内部的非易失性存储器中,作为后期暗场校正算法的输入。
6) 应用校正:在实际拍摄图像时,相机每张拍摄的图像都会乘以PRNU校正图像来消除传感器的光响应非均匀性。
(3) PRNU校正前后对比
从下面两张图可以明显的看出在水平方向上校正后的图像相对于校正前的图像均匀性有明显提高。
未校正前明场灰度值曲线
PRNU校正后明场灰度值曲线
(4) PRUN校正步骤
1) 设置FanOperationMode为Temperature,设置TECOperationMode为Temperature;
2) 设置CoolOperationTemperature温度为实际工作时温度;
3) 等待Sensor温度稳定; (DeviceControl/SensorTemperature)
4) 设置BinningHorizontal和BinningVertical为X1;
5) 设置TriggerMode为Off;
6) 设置LUTEnalbe为Off;
7) 设置DSNUMode为On;
8) 设置PRNUMode为Off;
9) 设置TestPattern为Off;
10) 设置OperationMode为TDI;
11) 设置BlackLevel为0;
12) 设置AcquisitionLineRate,TDIStagesP1,AnalogGain,PixelFormat为实际工作时的参数;
13) 将相机放下均匀光下,建议使用积分球均匀光,校正效果最好,调节光源亮度,直到图像达到半饱和状态;需要注意的尽量让整个9072个像素点都处于半饱和状态,如果使用转接环导致两侧的图像不能感光,会导致自动计算出来的目标值偏低,最后的现象就是打开PRNU后图像的平均灰度值会明显降低,那么需要更新固件版本到2904230720或者以后的版本,这个版本使用的是偏移3520个像素点后的2048个像素点的平均值作为目标值,因此使用自动计算目标值时也要保证中间2048个像素点处于曝光的状态。
14) 执行Live开始出图,执行PRNUGenerate相机开始做PRNU校正,需要的时间和设置的AcquisitionLineRate有关,做完后设置PRNUMode为On,对比校正前后图像在水平方向的均匀性,如果均匀性明显变好,说明本次PRNU校正有效。
15) 如果确定本次PRNU校正有效,则可以执行PRNUSave,那么本次校正的数据将会和当前选择的PRNU Selector绑定,并且存储到相机的非易失性存储器,掉电不丢失,下次切换到该PRNU Selector时会自动加载本次存储的校正数据。
(5) PRNU校正常见问题解答
1) PRNULoad作用
在使用PRNUGenerate的时候校正完成后并不会直接保存到非易失性存储器,而是保存在DDR中,掉电直接会丢失,如果本次PRNUGenerate的校正结果不满意,需要重新加载存储在相机中的历史PRNU校正参数,这时候就可以点击PRNULoad,相机会加载之前存储在相机的校正数据。
2) TargetLevelAUTO作用
PRNU校正有手动模式(通过PRNUTargetLevel参数手动设置校正目标值)和自动PRNU模式(相机将校正时的图像平均灰度值作为PRNU校正的目标值)。PRNUTargetLevel的范围为0~255,10bit和12bti时按比例映射即可。
3) 为什么在做PRNU校正时图像异常
因为在做PRNU校正时会采集Sensor的图像计算校正参数,因此会导致输出的图像异常,属于正常现象,校正完成后会自动恢复正常;因此需要等待PRNU校正完成后才能进行图像采集。
4) PRNUGenerate需要多长时间
由于PRNU校正需要采集图像,因此校正时间跟行频相关,行频越大,校正越快,需要的时间越短。理论校正时间可以通过DSNU PRNU Generate时间计算表格进行计算;在代码逻辑上可以根据下图所示代码来判断PRNUGenerate是否完成;如果在Sample上校正则可以通过观察图像是否恢复正常来判断校正是否完成。
5) PRNUFactoryReset的作用
在出厂前我司会在积分球下做5组默认的PRNU参数,如果在用户使用过程中不小心将错误的PRNU参数存储在了PRNU0~PRNU4时,可以通过执行该命令,将5组默认PRNU参数拷贝到PRNU0~PRNU4。
相机5 组PRNU 在出厂时候都是经过校正的,校正条件为半饱和的均匀光照,行频=18000Hz,位深和模拟增益不同,具体参数如下:
PRNU0=12bit-AnalogGain×2
PRNU1=12bit-AnalogGain×8
PRNU2=10bit-AnalogGain×2
PRNU3=10bit-AnalogGain×8
PRNU4=10bit-AnalogGain×8
6) 做PRNU校正时需要将PRNU Mode设置为Off吗
在调整图像到半饱和时需要将PRNU Mode设置成Off,在执行PRNUGenerate命令之前PRNU Mode状态没影响。
7) PRNU校正要在DSNU校正之后,且开启DSNU功能
因为相机内部是PRNU算法在DSNU算法之后,因此校正时也需要先校正DSNU再校正PRNU,并且开启DSNU功能。
8) UserSet是否会影响PRNU校正参数
不会,只有PRNUFactoryReset和PRNUSave会覆盖保存在相机内部的PRNU校正参数。
3、LUT
(1) LUT是什么
查找表(The Lookup Table,LUT)转换是基本的图像处理功能,可突出细节包含重
要的信息。这些功能包括直方图均衡化、伽马校正、对数修正、指数的修正。输出图像
的灰度值与原始图像的灰度值将被一对一映射。用户根据应用情况自行设置对应的数值。
(2) LUT的设置方法
LUT设置需要使用UptadeTool和Samplepro软件,软件界面如下图所示。
UptadeTool界面
Gamma:输入值后可调出对应 INPUT-OUPUT 曲线;
Apply:应用当前Gamma值对应的 LUT 曲线;
Default:恢复默认为 Gamma=1 时的 LUT 曲线状态;
Save File:保存当前 LUT 曲线到指定文件路径;
Load File:加载保存的 LUT 曲线文件;
DownLoad:把当前应用的 LUT 曲线配置到相机中;
UpLoad:从相机中读取已配置的 LUT 曲线;
Samplepro软件
LUTEnable:LUT 控制开关,默认不开启;
LUTIndex:INPUT 值,输入后自动加载应用的曲线对应的输出值,范围 0~4095;
LUTValue:OUTPUT 值,根据输入的 LUTIndex 值加载,可手动修改和保存,范围 0~4095;
LUTSave:对修改后的曲线进行保存;
LUTLoad:对应用写入的 LUT 曲线进行加载。
(3) LUT设置步骤
1) LUT曲线配置:设置实际需要的输入-输出LUT曲线。通常有以下2种方式:
- 通过设置Gamma值,调用对应的Gamma曲线,也可以使用鼠标在Gamma曲线做微调。
- 保存默认的Gamma=1的LUT文件,手动修改灰度值映射关系,然后将文件加载到相机。
2) 开启LUT功能:在相机软件上勾选LUTEnable。