张 涛,李新阳,李剑峰,徐 稚
1 中国科学院光电技术研究所,四川 成都 610209;
2 电子科技大学光电科学与工程学院,四川 成都 610054;
3 中国科学院云南天文台,云南 昆明 650216
随着半导体工艺的发展,CMOS 图像传感器的性能得到了很大进步,特别是同时融入了CCD、CMOS优势工艺的sCMOS 图像传感器,其不仅具备CCD 的低噪声、高动态、高灵敏度的特点,还具备CMOS 高读出速率、高集成度、高性价比的特点。基于以上优势,sCMOS 在各科研领域迎来了广泛使用。稍显遗憾的是,sCMOS 在继承CMOS 传统优点的同时,也延续了CMOS 的缺点,即存在明显的非均匀性。CMOS非均匀性的成因,主要由于CMOS 每一列像元共用一个列放大器所致,如图1 所示。
图1 CMOS 读出结构Fig.1 CMOS readout architecture
由于工艺的原因,列放大器之间会存一定程度的放大倍率的偏差,即便相同的输入信号也会得到不同的输出。在均匀光照下,图像上会表现出明显的固定图形噪声,如图2 所示。sCMOS 在此问题上表现得更为明显,严重影响其成像的效果。实际应用中为了提升sCMOS 成像的质量大多会采用各种非均匀性校正方法来改善其成像质量。
非均匀校正的方法可分为两大类:
1) 基于定标的方法
典型的方法有两点校正法[1-3]、分段校正法、多项式拟合法[4-5]等。
2) 基于场景的方法
典型的方法有矩匹配法[6]、时域高通滤波法[7-10]、小波法[11-13]、变分法[14-17]、神经网络法[18]、深度机器学习法[19]等。
在对非均匀性处理具有实时性要求的场景中,基于定标的方法是较为简单有效的方法,基于场景的方法尽管也能取得很好的效果,但是由于计算量大实时性不佳,不适合移植到硬件处理单元中。定标法中的多项式拟合法可以取得较好的效果,但由于涉及的参数较多并且计算过程相对复杂,一般不适合应用于嵌入式系统中。单点法计算最为简单,但在偏离标定点稍远处会产生较大的误差。两点法计算过程简单,且校正效果远优于单点法,是目前研究最多的方法。例如,2006 年徐文文等人[20]将两点校正算法移植到FPGA 中实现了非均匀性的实时校正。为改善两点法的温漂问题;2011 年吕雷等人[21]不仅在FPGA 上实现了两点法,还结合特殊的挡片结构周期性检测温漂情况,动态更新校正参数,进一步提高了两点法的稳定性。然而,两点法要取得较好效果的前提是:像元的光电响应曲线有较好的线性度,以及像元参数不存在温漂和时漂。然而事实上CMOS 或者sCMOS 均存在一定程度上的非线性,如图3 所示。
为改善非线性导致的校正精度下降,也有学者尝试在嵌入式中实现多项式校正,例如,2016 年程旺等人[22]在FPGA 上实现了基于二阶多项式的非均匀性校正;2019 年夏候耀涛等人[23]提出了改进型的二阶多项式非均匀性校正方法,以及该方法在FPGA 上的实现方案。尽管多项式的方法的确可以提高校正精度,但由于计算过程复杂,不适合使用在对校正帧率有要求的应用中。相较于多项式法,多点法兼具两点法的校正效率以及多项式法的校正精度,在对校正精度和速率均有要求的工程应用中被广泛使用。原理上,多点校正法是一种通过多个线性段来近似逼近曲线,然后在各个线性段分别采用两点法将其校正到参考直线来实现非均匀性校正的方法。对于多点校正法来说,不同分段点位置(如图4 中的T2,T3)的选择以及分段数量的选择是非常关键的,它直接影响着校正结果的好坏。
图2 固定图形噪声Fig.2 Fixed pattern noise
图3 Andor Zyla sCMOS 相机非线性示意图。(a) 纵坐标为灰度值;(b) 纵坐标为残差值。横坐标都为曝光时间Fig.3 Nonlinear diagram of the Andor Zyla sCMOS camera.(a) The vertical coordinates are gray values;(b) The vertical coordinates are residual values.The horizontal coordinates are exposure times
图4 多点校正法示意图Fig.4 Multipoint correction diagram
本文将采用一种自适应的方法来自动获取最优的分段点位置和分段数量,具体的方法如下。
在确定了各线性段以后,需将各像元的各线性段分别校正到统一参考直线 Yref(T) 上。统一参考直线可通过线性拟合多个全局平均灰度值Y(T)来获得,其中Y(T)的定义如下:
其中:T ∈[T1,T2,…,TN],N,M 分别是相机靶面的垂直方向上的像元数以及水平方向上的像元数。Y (i,j,T)为相机第i 行,第j 列处的像元曝光T 秒后的灰度值。各子线段向参考直线调整的过程使用两点校正法,基本原理如图5 所示。
将直线 Y (i,j,T) 调整到Yref(T),只需要对直线Y (i,j,T)的斜率G 和偏置量B 做出调整,如下:
其中:Y (i,j,T) 表示位于相机靶面第i 行,第j 列位置处的像元在曝光T 时的灰度值,Yref(T) 为参考直线上曝光时间为T 时的灰度值,该直线是通过最小二乘法线性拟合各个曝光时间点的全局平均灰度值的方式得到。最后,以类似的方法调整各个像元的各线性段到统一参考曲线。整个流程如图6 所示。
为了评价校正结果的优劣,一般采用光电响应不均匀性性PRUN(photo response non-uniformity)来评价:
其中:(i,j) 为像元的行列位置,I (i,j) 为(i,j) 位置处像元的灰度值。为所有像元的平均值。N,M 为图像传感器有效靶面的像元行数和像元列数。
以下性能测试过程中试验环境参数为积分球光源电压为7.8 V,电流为5.8 A(恒流源);相机的曝光时间90 ms。
图5 两点校正法原理Fig.5 Two point correction principle
图6 流程图Fig.6 Flow chart
图7 为各种方法非均匀性曲线,可以看出,自适应多点法和均分多点法都可以取得很好的效果。由于自适应多点法选取的分段点更为合适,因此从曲线的结果上来看自适应方法效果更优一些。单点法在前半段效果很差,主要是由于我们为单点法选取的标定点是曝光时间为50 ms 的地方,曝光大于50 ms 的地方光电响应曲线斜率较为近似,因此此处校正效果相对较好。
图7 各种方法的非均匀性曲线Fig.7 Nonuniformity curves of various methods
图8 为90 ms 曝光时各方法校正结果,噪声图像经过单点法校正后依然有明显的非均匀性噪声。两点法校正后在条纹较宽的地方仍有少量噪声残留。经过均分多点法校正后(本试验采用的是4 点均分)效果优于两点法,但在局部地方仍有微弱噪声残留。经过自适应多点法校正后,图像均匀一致,视觉效果优于上述几种方法。图9 列均值曲线,可以发现,由于非均匀性噪声的存在,噪声图像的每列平均值发生剧烈震荡,经过单点法校正以后,震荡的幅度得到抑制,但图像依然不均匀,列与列之间的幅值依然有很大的差异;经过两点校正后不论是噪声波动的幅度以及列与列之间的幅值差异得到极大改善,但在个别位置依然存在由于校正精度不高导致的小幅波动。经过4 点均分校正后噪声起伏进一步降低,但在个别位置依然存在校正精度不够的情况。经过自适应多点校正法(也是4 个分段点)后,可以看到列均值曲线均匀一致方面,相对于其他方法有较好的改善效果。
图8 90 ms 曝光时各方法校正结果。(a) 原图;(b) 单点校正;(c) 两点校正;(d) 均分多点校正;(e) 自适应多点校正Fig.8 Correction results of each method at 90 ms exposure.(a) Original image;(b) Single-point correction;(c) Two-point correction;(d) Equate multipoint correction;(e) Adaptive multipoint correction
图9 列均值曲线。x 横坐标为列编号,y 纵坐标为当前列的平均值。(a) 原图;(b) 单点校正;(c) 两点校正;(d) 均分多点校正;(e) 自适应多点校正Fig.9 Column average value curve.The x-coordinate is the column number,and the y-coordinate is the average of the current column.(a) Original image;(b) Single-point correction;(c) Two-point correction;(d) Equate multipoint correction;(e) Adaptive multipoint correction
对于相机的终端用户,并不能去修改相机的内部设计。对于相机数据中的非均匀性改善只能通过软件后期处理或者基于硬件的实时处理的方式进行。软件后期处理的方式一般适用于对实时性没有要求的场景,而那些对实时性要求较高的场景,基于硬件的非均匀校正方式更为合适。本文硬件设计方案是:将一个嵌入式硬件处理单元串连在相机与采集电脑之间,在相机数据流过处理单元的时候完成非均匀性校正,具体结构如图10 所示。整个硬件系统的工作流程是:图10 中的Andor 相机(分辨率2k×2k,帧率100 帧/秒)通过其CameraLink 数据接口输出数据,在处理单元中首先转换来自相机的串行数据到并行数据然后在嵌入式单元中进行非均匀校正,校正完成以后再次将结果数据转换成CameraLink 接口数据输出到采集计算机。在这样的工作方式下,嵌入式数据单元对于后面的相机数据采集系统来说是无感的,对原来的采集软件和系统均无需做出调整。嵌入式处理单元的内部逻辑是:经过第2.4 节的介绍,可以获取每个像元的数据校正矩阵G,B,由于采用的是多点校正法,会存在一个像元拥有多个校正区间的情况,需要判断当前的校正数据处于哪一个校正期间,并且调用与该期间相对应的G和B。图10中的期间判断单元就是完成这一工作。时序逻辑单元根据期间判断单元的判断结果,再结合行列的计数值就可以从增益矩阵和偏置矩阵中通过查表的方式获取合适的校正参数,并在乘法器和加法器的配合下实现 Yref(T )=G ⋅Y (i,j,T)+B的运算。尽管多点校正法相对于单点、两点法拥有更多的计算量,但对本系统选用的FPGA(ARTIX-7)完全可以提供足够的算力来完成实时校正。
图10 实时嵌入式处理单元结构图Fig.10 Structure diagram of the real-time embedded processing unit
图11 嵌入式处理单元实物Fig.11 Object of the embedded processing unit
通过自适应多点校正法,不仅可以获取多点校正法的优点,还可以避免因分段点选择不当导致的校正性能下降。经过实际测试,该方法有效改善了Andor Zyla 的sCMOS 相机的均匀度,均匀度从原有的3‰提高到1‰。然而,在实验中发现,随着相机的老化以及工作环境的变换会存在校正数据的失效问题,为维持性能需要定期完成校正数据的更新,这也是目前所有定标法需要面对的一大问题。接下来将尝试在嵌入式系统中添加温漂模型,然后通过将相机传感器温度代入模型的方式来获取补偿量,进而实现校正参数的动态修正,以改善校正参数失效的问题。