LUX13HS的高帧频实时成像系统设计

2021-09-14 02:46孙宏海孙海超
关键词:调光直方图时钟

赵 阳,孙宏海,杨 航,孙海超,赵 瑜

(1.中国科学院长春光学精密机械与物理研究所, 长春 130033;2.中国科学院大学, 北京 100049; 3.中科院航空光学成像与测量重点实验室, 长春 130033)

高帧频成像系统又称高速相机,具有帧频快、数据传输速率大的特点,对许多领域的研究工作具有重要的辅助作用。比如,在国防军事领域可利用高速相机捕捉高速飞行的动态目标运动轨迹[1-2]。在科学研究中,高速相机可以记录高速变化的实验过程,提供更高时间分辨率的实验数据[3-4]。高帧频成像系统的核心是高速图像传感器。随着固态图像传感器技术的发展,CMOS图像传感器因具有集成度高、工艺成熟等特点,内部集成了多路AD转换,可以实现并行传输,被广泛应用于高速成像系统设计中[5-6]。

目前,国内外已经开展了一些CMOS传感器在高分辨率高帧率下的应用研究工作。文献[7]实现的相机成像帧频为500 fps,分辨率为1 024×1 088,但最终存入的SD卡的储存容量限制了拍摄时长。文献[8]将获取到的分辨率为2 048×2 048、帧频为150 fps的图像存入由SATA控制器组成的磁盘阵列中,能实现长时间拍摄与存储,但是帧频较低,不能即时处理。文献[9-11]采用CameraLink、以太网等高速数据接口对CMOS传感器捕获到的图像进行实时传输,能解决拍摄时长受限于相机自身存储容量的问题。但是,为了获得好的成像效果,获取数据后仍需对图像进行预处理,整个过程较为繁琐,计算机在处理高速相机输出的大量数据时也存在一定困难。一些图像预处理与自动调光的算法,如文献[12]提出的多曝光融合算法、文献[13-14]提出的区域加权调光算法和文献[15]提到的指数平滑法能够提升图像视觉效果和相机工作环境适应能力,但其硬件实现仅限于较低帧频、低分辨率的相机。

采用LUXIMA公司生产的高速CMOS传感器LUX13HS,在Xilinx Ultrascale系列FPGA上设计了CMOS传感器成像控制单元、高帧频图像数据采集单元、缓存单元与传输单元,实现了一个具有自动调光和图像预处理功能的高帧频成像系统。在分辨率为1 280×720时,成像帧频达到1 666 fps,实时传输帧频达到555 fps。

1 系统结构设计

将高帧频成像系统分为高速成像模块、主控模块和高速接口模块3个部分,系统结构和相机整机实物如图1所示。

图1 高帧频成像系统结构框图与系统实物图

高速成像模块由相机镜头、CMOS图像传感器LUX13HS及其相关电源构成。CMOS图像传感器将经过镜头成像的光信号转化为电信号,输出给主控模块。主控模块采用Xilinx公司的Kintex Ultrascale系列现场可编程门阵列XCU060,相机整体各芯片的驱动时钟及控制信号均由该模块提供。同时,在主控模块读取图像灰度信息与直方图信息,自适应控制曝光时长,将图像在DDR4中进行缓存与帧采样,进一步预处理。处理后的图像进行并串转换,经由高速CameraLink接口实时传输。

FPGA顶层设计结构如图2所示。

图2 FPGA顶层设计结构框图

2 CMOS图像传感器简介

2.1 LUX13HS图像传感器性能介绍

LUX13HS是LUXIMA公司开发的高帧频CMOS图像传感器芯片。该芯片拥有100万像素,有效像素为1280×864,对应432个行输出地址,支持最大核心时钟为166 MHz,满幅下帧率可达到3 500 fps。在传感器进行开窗时,可减小读出的图像数据量,提高成像帧频。表1列出了该传感器的参数。

表1 LUX13HS图像传感器参数

LUX13HS将每个像素的低2位与高8位分开从不同输出通道输出,因此可以灵活选择相机输出图像深度。

2.2 LUX13HS内部结构

LUX13HS单个像元由7个晶体管构成,具有全局快门的功能,保证了所有像元能同时启动光积分,避免卷帘快门拍摄高速运动物体可能产生的果冻效应。图3(a)展示了LUX13HS的像元结构,PD是光电探测器,SG是像素内存,AB门上控制信号‘PD_n’为低时擦除PD上的光电荷,为高时允许进行光积分。TX门上的‘TX_n’传输脉冲处于低电平使光电荷从PD上转移到像素内存SG上,‘TX2_n’作为第2传输脉冲,低电平从SG中移除电荷。RST上‘PRST_n’低电平会重置SG,但传感器会在像素读出时自动重载,所以一般置为低电平。

LUX13HS内部框图如图3(b)所示,传感器拥有80个差分输出端口,感光区域可以分成4个象限。结构上分为顶部读出模块和底部读出模块两个部分,每个读出模块包括采样电路、放大器和带有可读逐次逼近寄存器的ADCs(模数转换器)寄存器,具有相互独立的控制信号和时钟,使得顶部读出模块和底部读出模块可以同步输出不同地址数据。传感器外部I/O、内部结构、电源资源左右对称,保证传感器的高帧频特性。

图3 LUX13HS结构图

LUX13HS传感器提供reduced工作方式。在这种工作状态下,传感器内部核心时钟变为正常模式的1/2,输出端口减少为40个,当可使用的I/O接口具有数量限制时可使用该模式。由于传感器核心时钟降低,不再受最高时钟限制,因此该模式帧频高于正常模式帧频的1/2,可以达到 2 500 fps。

3 系统各功能模块实现

3.1 高速成像模块

CMOS图像传感器通过光电效应的原理,将感受到的光信号转化为光电荷,光电荷通过内部的A/D变化为数字信号输出。由FPGA对LUX13HS图像传感器提供驱动时序,并进行数据接收采集。

3.1.1CMOS图像传感器控制

LUX13HS图像传感器拥有Start Row控制信号(“st_row_n”)和Start Read控制信号(“st_read_n”)。Start Row信号读取一个地址对应的光电荷并进行模数转换,Start Read信号控制数据输出。为了实现最大的数据吞吐,LUX13HS顶部和底部各有1个Start Row和Start Read控制信号,可以实现顶部与底部同时对不同地址进行AD转换和读出。

LUX13HS控制行时序如图4(a)所示,传感器使用二进制编码进行寻址,每个地址对应两行连续的像素数据,在1 280×720分辨率下共使用360个地址。给定了一个行地址n后,需要6个时钟等待地址稳定,之后发送Start Row信号通过传感器底部读出模块进行模数转换。底部AD转换进行到一半时,更改地址为n+1,地址稳定后提供顶部Start Row信号,可以利用顶部读出模块对地址n+1对应的行进行AD采集。AD采样结束后发送Start Read脉冲使传感器输出数据,实现了顶部读出模块和底部读出模块同时工作,DA采集和数据输出同步进行,保证CMOS传感器高帧频特性。FPGA实现行时序流程如图4(b)所示。

图4 LUX13HS图像传感器行时序图及其实现流程框图

图5展示了CMOS传感器帧时序,输出每帧图像数据之前将PD_n拉高,维持时间长短决定了CMOS传感器曝光时长。曝光结束之前TX_n信号的低电平脉冲可以传送出采集到的光电荷,之后再通过行时序控制每行地址对应像素数据输出。

图5 LUX13HS行时序图

LUX13HS工作在Reduced模式下,主时钟100 MHz,每个时钟输出4个像素数据,顶部输出模块和底部输出模块同步输出两个地址对应的4行数据。输出完整一行图像需要1 280÷4=320个周期,完整输出一帧720行需要320×720÷4=57 600个时钟周期。为了给光电荷从像元转出以及清除上一次光积分的剩余电荷提供充足的时间,设置每帧60 000个时钟周期进行输出。由此,可以计算出LUX13HS传感器成像帧频为100M÷60 000≈1 666 fps。

3.1.2CMOS传感器偏置电压供应

为了使LUX13HS传感器正常工作,需要提供17种偏置电压,如表2所示。

表2 CMOS传感器偏置电压 V

其中VADL和VTXL可以接地实现,配置CMOS传感器寄存器内部产生VLN、VLNA和VLNC电压。剩余偏置电压通过Analog公司生产的多通道12位DAC芯片AD5674R提供,该芯片通过SPI协议进行配置,具有高相对精度、低增益误差和低温漂特点,满足CMOS传感器对偏置电压的要求。为了增强DAC输出的带载能力,降低输出电阻并实现隔离,在DAC输出和偏置电压输入之间加入跟随器。

3.1.3CMOS图像传感器数据采集

图6是FPGA数据采集与图像信号恢复结构,CH使用传感器数据输出通道,FRE代表时钟频率,虚线将图示结构分为CMOS传感器时钟域与FPGA内部时钟域。由FPGA为传感器提供MCLKB和MCLKT时钟信号与驱动信号,CMOS传感器输出串行数据与伴随数据的时钟PCLK和DCLK,通过FPGA内部iSerdes3进行并串转换。

图6 FPGA数据采集与图像信号恢复结构框图

LUX13HS同时输出4行数据,每行数据单独存入1个双口Ram,利用乒乓缓存实现Ram的存取相互独立并同时进行。最后,多路选择器选择4行按先后次序输出,恢复出图像信号。

3.2 主控模块

整个系统采用XCU060作为主控芯片,可依据不同的需求进行编程,实现不同的硬件功能,最小化电路板的空间与整个系统的体积。在主控模块实现的功能有:各芯片工作寄存器参数配置、逻辑时序控制、高速图像数据采集与解码、直方图与灰度信息提取、图像预处理与传输。由于图像按行进行读取和传输,还需通过外部储存器作为成像暂存器。系统引入DDR4芯片,总位宽64 bit,总容量为2 GB,数据传输速率最高为3 200 MT/s,可满足系统实时传输性能要求。

3.2.1图像数据跨时钟域处理

在进行图像数据采集、DDR4存取与打包发送时,会遇到前后模块位宽、时钟不一致的情况。例如,在图像从DDR4读取打包发送的过程中,采用Vivado上MIG DDR4 IP核实现对DDR4的控制。IP核数据时钟为300 MHz,位宽为512 bit,但CameraLink Full模式数据时钟为80 MHz,位宽为64 bit,必须对数据进行跨时钟域处理。一般采用先存再取的方式时,存取等待时间会加长行场之间的开销时间,降低相机帧频。所以采用乒乓缓存,同时对双口Ram进行读写操作,示意图如图7,n为一个偶数,表示Ram的地址总数。

图7 Ram读写实现乒乓缓存过程示意图

在初始化时,写时钟将一行图像数据存入Ram地址0~(n/2-1)中,同时读取(n/2)~(n-1)地址中的数据,实现读写同步进行。在读写均完成之后,交换读写地址,从地址0~(n/2-1)中读取刚写入的一行数据,并将新的一行数据写入地址(n/2)~(n-1)中。

3.2.2基于FPGA的图像直方图获取

在获取图像直方图信息与平均灰度信息时,如何做到通过FPGA实时提取一帧图像数据信息并进行处理传输是设计的重点。由于FPGA内部储存空间有限,因此通过DDR4对已经提取过的数据进行缓存,获取到整个帧的像素统计数据后,再从DDR4中提取对应图像进一步处理传输。

FPGA通过译码器和计数器组成的结构获取图像直方图数据。译码器读取一个像素值,并在对应灰度级输出口输出1个高电平脉冲,计数器在检测到高电平脉冲后加1。本设计中,FPGA将恢复出的图像数据按行传输,多个像素同时输出时,有可能会出现多个具有相同灰度值的像素。这种情况下,利用1个译码器只能输出1个计数脉冲,会造成计数器计数错误,根据DDR4输入数据位宽设置译码器和计数器数量会耗费大量FPGA逻辑资源,若减少同时输出的像素个数,则为了保证实时传输需要提升像素频率。综合考虑性能要求,设定每时钟向译码器传输8个像素,像素时钟为200 MHz,图6将8个像素输入1个直方图统计模块,统计完一帧数据后再利用加法器获取完整直方图信息进行储存。对于256灰度级、1 280×720的图像,共 921 600个像素。FPGA需要产生8×256=2 048个20位计数器,以进行直方图信息统计。

为了保证在一帧图像进行直方图均衡化同时获取下一帧图片的信息,采用双口Ram实现乒乓缓存,以灰度值作为Ram地址进行存取。

3.2.3直方图均衡化处理

直方图均衡化是通过累计直方图将图像原直方图变化成均匀分布的形式,可增加像素灰度动态范围与图像对比度。直方图均衡化的变换函数T(r)如式(1)所示。其中,r代表归一化后的图像原灰度值,s代表进行直方图均衡化以后的图像灰度值,pr(r)代表随机灰度值r的概率密度,T(r)即原图像直方图的累积分布函数。

在数字图像处理中,像素值是离散化的,因此用各个灰度值出现频率代替概率,变换函数T(rk)的离散形式可以表示为式(2)。其中k表示归一化前的灰度值,rk代表归一化后的灰度级,sk表示变换后的灰度值,N表示一幅图像的总像素个数,ni代表灰度级为i对应的像素个数。

(1)

(2)

FPGA实现乘除法以及浮点数运算较为困难,因此直接将归一化的像素值转化为256灰度级图像。原灰度值k与直方图均衡化以后的灰度值t对应关系见式(3)。一些设计通过乘法器和除法器IP核实现式(3)的计算[16],但这样会增加帧开销时间与FPGA的逻辑资源占用。本设计采用移位运算,乘以255可以将累计直方图按位左移log2255≈8位实现,除以图片总像素个数921 600可以通过将累计直方图右移log2921 600≈20位实现。

(3)

利用Matlab将此种运算方法与浮点运算做比较,得到累计直方图与均衡化后灰度值对应关系如图8(a)所示。可以看出,在灰度级较高的位置误差会明显增大,这是因为随着数据位数增加,较高位取值对数据值大小的影响增加。但是误差与累计直方图成正比,经过拟合得到误差函数为:

(4)

乘0.000 03通过将累计直方图右移|log20.000 03|≈15位进行计算。最终,均衡化后的灰度值由累计直方图右移12位加右移15位得到。进行误差补偿后,移位运算得到的映射曲线与浮点运算映射曲线相重合,误差接近于0,如图8(b)所示。此种运算方式非常符合FPGA的运算特性,也保证了计算的精度。

图8 累计直方图与均衡化后灰度值映射关系曲线

3.2.4自动调光算法

CMOS传感器获取的图像亮度取决于像元内部光电荷积累的数量,而光电荷积累多少和当前曝光量之间有如下关系:

Q=ηqΔneoATc

(5)

其中:η代表CMOS器件量子效率;q为电子电荷量; Δneo是入射光的光子流速率;A是器件的感光面积;Tc为积分时间。可以得出,在已经选取好CMOS器件、并且光照条件固定的情况下,光电荷积累数量与积分时长Tc成正比。因此,更改积分时间长短是一种较为灵活的调光方法。

若已知前一帧图像平均灰度值Rp与曝光时间Tp,为了达到目标灰度值Ri,可以通过式(6)计算后一帧需设置曝光时间Ti。

(6)

在设定目标平均灰度值时,应注意不能设置为固定值,因为系统无法保证获取到图像灰度值刚好为某一确定值,否则可能会导致超调震荡。只能将目标灰度值选在一个范围区间内,当帧平均灰度值落在取值区间内时,即调整完成。经测试区间取[Ri-15,Ri+15]时可以获得较好的成像效果。

LUX13HS提供电子全局快门,通过信号AB_n高电平持续时钟周期数控制曝光时长。在上一帧图片输出时控制AB_n在一定范围内成高电平,可以开始曝光,曝光时间为N×TH,TH为1个周期时间,N为持续周期数。因此N越大,CMOS曝光时间越长,且由于N可以选择为小于帧持续周期数的任意1个正整数,可以实现无极调光。当前获取图像平均灰度值落在区间右侧时,逐渐减小N的取值,缩短曝光时长。若当前图像平均灰度值落在区间左侧,则增大N的取值,提高曝光时长。

3.2.5帧采样

LUX13HS工作在100 MHz的时钟下,成像帧频达到1 666 fps。由于传输接口传输速率限制,为了保证实时传输的稳定性,必须进行帧采样。在FPGA从CMOS传感器输出数据并恢复出行场信号后,将数据缓存入DDR4,最多可存入2 GB/(1 280×720×8 bit)≈2 330帧。每存入3帧,读写仲裁模块允许读取写入的第1帧,进行3∶1采样,存满2 330帧后回到初始地址,继续下个循环,保证图像连续性。同时,在获取图像直方图时,也只获取连续写入DDR4的3帧中第1帧图像直方图,用于从DDR4读取时进行直方图均衡化。

3.3 高速接口模块

高速传输接口传输带宽保证了高速相机采集图像数据的实时传输速率。目前常用的工业相机接口及其性能见表3。系统在进行对比之后,选择CameraLink接口Full模式进行高速图像传输。

表3 主流接口性能比较

CameraLink接口是一种抗干扰能力强、传输带宽较高、应用非常广泛的接口,一般相机设计中,采用专用DS90CR287/DS90CR288A将FPGA输出的28位并行数据转化为4路串行差分信号传输[17-18]。若采用此种设计,Full模式需要3个并串转换芯片,极大增加了相机的体积,因此本系统采用FPGA的oSerdes3原语直接实现并串转换。这种方式克服了并串转换芯片带宽对接口最大传输速率的限制,选择合适的图像采集装置可以大幅提升数据传输速率[19]。CameraLink数据传输速率为80 MHz,每行和每帧的时间间隔为40个时钟周期,每个时钟传输8个像素。因此,对于1 280×720的图像,能够支持最大实时传输帧率达到555 fps。

3.4 相机控制

系统使用CameraLink接口的2个控制信号CC1和CC2,用于设置相机是否启用直方图均衡化功能和自动调光功能。除此之外,CameraLink接口提供了两个差分对信号,用于主机端与相机进行串行通讯。SerTFG是相机发送至图像采集卡的串行信号,SerTC用于相机接收主机发送的串行数据。串行数据一帧为10位,包含1个起始位和1个停止位,利用上位机可以灵活配置相机系统自动调光目标灰度值,FPGA根据给定灰度值自动设置调光范围。

4 系统测试

采用CameraLink图像采集卡采集相机输出的图像数据。通过上位机显示并实现串行通讯与控制,在FPGA内部利用1个计数器计算LUX13HS传感器的成像帧频。

利用ILA调试核抓取计数器信号,观察到CMOS传感器每秒获取了1 666帧图像,上位机显示实时传输帧频约为555 fps。图9展示了未启用相机自动调光与直方图均衡功能和启用后的图像。可以看出,在过曝时启用自动调光能够有效降低图像亮度。在图像暗部细节不清晰时,启用直方图均衡化可以显著增强图像对比度。

图9 相机测试图像

经测试发现:本设计实现的高帧频成像系统能够满足许多基本的工业成像应用需求;自适应调光和预处理功能在场景亮度均匀情况下,能使成像图像呈现较好的显示效果;实时传输功能在一定程度上解决了传统高速相机拍摄时间短、后续处理工序复杂的问题。但是,相机实时传输帧频还有提升空间,缓存入DDR4的所有图像由于接口带宽限制无法全部传出;采用平均灰度值作为自动调光的反馈信号,在某些背景与目标亮度差异较大的情况下可能无法获得很好的调光效果。

5 结论

采用高速CMOS传感器LUX13HS,提出了一种具有自动调光、实时预处理功能的高帧频成像系统设计方案。通过FPGA实现sensor控制、数据读写、传输、乒乓缓存、帧采样,保证了成像帧率高达1 666,实时传输帧率达到555 fps。在打开自动调光功能,设置合理参数,并启用直方图均衡化以后,获得了良好的图像效果,为后续研究提供了可行的高帧频成像系统上的自动调光与图像预处理设计方案。通过提升CMOS传感器时钟频率、更改高速传输接口(如CoaXPress或CameraLink HS)等方式,获取更优的实时传输性能。若采用较为复杂的加权灰度值作为自动调光反馈信号,能够进一步提升相机对拍摄场景的适应能力。

猜你喜欢
调光直方图时钟
符合差分隐私的流数据统计直方图发布
别样的“时钟”
服务区LED照明调光算法探究
古代的时钟
用直方图控制画面影调
全海深ARV水下LED调光驱动电路设计
浅谈公路隧道照明调光方案比选
基于单片机的大棚自动调光设计
中考频数分布直方图题型展示
有趣的时钟