文献标识码:A
DOI:10.16157/j.issn.0258-7998.2017.05.019
中文引用格式:张龙祥,王向军,曹雨. 基于FPGA的小型化实时CMOS成像处理系统[J].电子技术应用,2017,43(5):78-81,85.
英文引用格式:Zhang Longxiang,Wang Xiangjun,Cao Yu. Design of miniaturized real-time CMOS image processing system based on FPGA[J].Application of Electronic Technique,2017,43(5):78-81,85.
0 引言
随着电子技术的进步,图像处理系统得到了飞速的发展。当今的主流图像处理平台大多基于FPGA+DSP[1],虽然满足系统实时性及处理性能要求,但系统结构复杂,设计难度较高,资源浪费严重,不利于小型化设计。针对这一问题,本文设计了一种基于FPGA和CMOS的成像处理系统,CMOS传感器采集图像信息经由FPGA实现基本的图像处理算法后,同时输出两路不同数据格式的图像信号供后续处理控制系统使用或者直接显示,如Cameralink、DSP、VGA等。本系统将CMOS和FPGA合成为一个小型化的完整成像系统,成本低廉,适用范围广,可直接装载常用的图像处理算法并实时显示输出[2];在面对复杂的算法或测控应用时,也可灵活地外接DSP或其他测控平台,相较传统图像处理系统更灵活、更节省资源、更具有应用优势。
1 系统硬件体系结构
本系统采用如图1所示的双层PCB堆叠设计,上层为CMOS板,通过微型接口与下层FPGA板通信传输图像数据。在保证系统功能完整的前提下,将整体功能分配到多层PCB体系中,可以有效降低单层PCB容量和布局布线难度,减小单层PCB板面积,从而最大限度地优化系统体积尺寸。
基于FPGA和CMOS的成像系统的硬件结构如图2所示。CMOS芯片上电复位后,经过硬件配置电路设置基本工作方式,再使用SCCB总线设置各显示参数,才能进入正常工作模式并经由缓冲电路将图像信息(包括像素时钟、行场同步以及12 bit灰度数据)[3]输出到FPGA。FPGA芯片上电复位后,由EPCS16进行初始化配置。首先延迟200 ms,等待CMOS芯片硬件复位以及硬件配置完成;然后启动CMOS配置模块,传输初始化配置信息;之后接收图像信息做处理后,分两路同时输出,一路Cameralink数字信号经专用转换芯片转换为差分Cameralink信号[4]后输出,一路DSP数字信号直接传输。
CMOS芯片标准IO口参考电压为2.8 V,FPGA接口参考电压3.3 V,所以系统中设置了缓冲电路来将2.8 V电压转换为3.3 V,加大信号摆幅,使FPGA芯片能准确读取数据;且缓冲电路经设计严格满足阻抗匹配,避免了信号过冲等失调问题[5]。
系统中没有搭载DDR2外部存储器,一方面是考虑到系统的小型化设计和成本控制,DDR2芯片自身及其复杂的布局布线都会使系统体积大幅度增加;另一方面根据系统需求,FPGA平台的图像预处理功能并不需要保存整帧图像,只需要缓存部分待处理数据即可。
2 FPGA模块设计
本系统设计目的主要是实时采集、处理并显示CMOS图像数据。功能模块主要划分为如图3所示的CMOS配置及数据采集模块、图像处理算法模块和多通道输出显示模块。
系统采集并处理过的图像经过一个可配置的FIFO缓存,在输出模块中转换成不同数据格式并实时输出。该模块以CMOS传感器的行场同步信号为基础,实现了不同时钟域之间数据格式的转换,并且可以同时输出多路图像,在一定程度上增强了系统的灵活性以及功能性。由于基于内部FIFO设计,保证图像实时显示的同时,去掉了外部RAM存储器,大大减小了系统体积和复杂度,实现了系统的小型化[6]。
2.1 CMOS配置及数据采集模块
CMOS经过上电复位和硬件初始化配置后,可通过SCCB总线进行显示参数的配置,包括分辨率、扫描方式、开窗、白平衡、黑场、曝光时间等[7]。
配置CMOS输出分辨率为1 024×768、帧率为60 Hz的视频图像,其像素时钟、行场同步信号和有效数据之间的关系如图4所示。在场同步信号有效的前提下,图像采集模块以行同步信号上升沿为采集起点,高电平有效期间为采集状态。
由于后续的图像预处理模块需要图像帧的灰度特征值,包括最大值、最小值以及灰度均值,所以在CMOS数据采集模块中添加了灰度均值计算模块。该模块不会对图像的行场同步信号以及图像灰度值造成时间延迟,只是统计有效图像数据(即行场同步信号同时为高电平)中心区域512×1 024 个像素的灰度值之和,并右移19 位计算均值,同时记录下灰度最大值、最小值。这样既不影响均值精度,又避免了除法操作及不必要的时钟延迟,节省了系统资源,有效提高了系统实时性。
2.2 图像数据处理算法模块
本系统采用的图像处理算法是分段线性映射法,主要作用是增强图像细节效果、提高对比度。算法计算时需要取得一帧图像的有效像素灰度的最大值、最小值及均值,在最小值到灰度均值和灰度均值到最大值两段分别作线性映射,使有效像素的灰度值拉伸到整个0~255灰度空间,从而增强对比度。映射关系如图5所示,计算时需要统计一帧图像的灰度最大值、最小值和均值。
在实际视频处理成像中,相邻两帧图像之间像素变化不明显,灰度均值变化范围一般在±1个灰度级内。所以当帧图像可以采用上一帧图像统计的灰度值映射参数(最大值、最小值及均值)进行分段线性映射处理,避免了整帧图像的缓存及外部存储。
每帧图像场消隐期间,利用当帧统计的图像灰度值映射参数,根据式(1)~式(4)所示灰度映射公式进行全灰度级的映射计算。表1所示为对一帧图像统计的最大值、最小值及均值。为了剔除噪点及坏点的影响,本系统记录图像的多级最大值(即最大值和多个次大值)以及其相对应的像素数,采用像素数大于10 个像素的灰度最大值作为当帧图像的真实最大值;表2列出了部分灰度值的映射结果。
将计算结果以原始灰度值为地址存入基于IP核构建的双口RAM中,如图6所示,下一帧图像有效数据期间,以实时灰度值为地址从RAM中取出其对应的映射值输出即可。由于算法处理部分在帧间消隐期间完成,相对于输入图像数据流,经过分段线性映射处理的图像仅延迟2个时钟周期的RAM读取时间,灵活利用了帧间消隐时间,提高了系统图像输出的实时性。
2.3 多通道输出显示模块
由于CMOS输出图像格式不是标准的图像数据显示格式,需要进行图像数据格式的转换。目前主流的图像数据格式转换方法是通过外部SDRAM或DDR存储器缓存一帧图像后再读出数据,结合已确定的行场同步信号输出图像[8]。这种方法不仅需要延迟将近一帧图像的时间,而且由于经济实用的外部存储器多是单端的,即读写不能同时进行,所以需要编写复杂的时序逻辑控制外部存储器与读写模块之间的信息交互关系,才能保证在写入数据不丢失的情况下满足输出数据格式时序。
本系统采用内部IP核例化的FIFO存储器来缓存一小部分不能实时输出的图像信息,省去了外部存储器以及复杂的控制逻辑。其两端采用异步时钟的设计方法,实现了2个时钟域之间的数据传输,输入端为CMOS输出信号,输出端为图像显示信号,只需保证FIFO容量满足写入和读出图像有效数据的滞留量,就能在不丢失图像数据的基础上,实现图像格式转换并实时输出。
图7为双通道Cameralink和DSP数据格式转换前后时序对比图,两通道实时并行输出,以Cameralink显示为例,转换前后数据格式如表3所示。
由于输入输出帧率同为60 Hz,每帧图像所需时间一致,所以只需要计算一帧图像的滞留量,即可得到FIFO大小。输入一行数据的时间:2.09×10-5((1 024+370)/66.58×106) s,该时间内输出数据为1 205(57.56×106×2.09×10-5)个像素,即在输入一行数据的时间内,输入、输出数据差值为25 个像素。考虑到计算中将行消隐数据(即无效数据)也包含在内,根据输出有效数据占空比85%(1 024/(1 024+206)),可得到每一行的实际速率差为21个像素。所以768行有效数据,共需要16 K个像素存储空间即可满足缓存需要。
由SCCB总线配置模块输入时钟高于输出时钟,同时通过调整行场消隐宽度等配置使输入有效数据尽量类似于输出数据格式,即可充分利用FPGA内部存储资源,再匹配行场同步信号与数据的关系就能实现各种不同数据格式的实时输出。对于行场同步信号低电平有效的视频数据格式,如VGA等[9],本系统数据缓冲方式也完全适用,只需要根据输出行场同步信号及前后肩标准制式编写简单的计数控制时序即可。
3 实验结果分析
3.1 CameraLink、DSP-VPSS双通道输出
为测试系统输出功能,采用1 024×768分辨率、60 Hz帧率的12 bit灰度级图像双通道实时输出。一路CameraLink信号连接采集卡可由PC采集显示,行场同步及数据满足协议要求,仿真时序图如图8所示,图像清晰且没有丢帧现象,采集图像如图10(c)所示;另一路DSP信号使用Signal Tap在FPGA中嵌入监测模块并观察发送数据,如图9所示。
3.2 输出图像效果
为验证分段线性映射算法的图像增强效果,对不同场景、不同光照的图像取原始图和映射结果图。选取如图10所示一处场景进行对比发现,在较强光照下,由于图像对比度较高,视觉效果较好,分段线性映射算法有一定效果,但不明显,如图10(c)、图10(d);但是在较弱光照下,原图对比度很低,经过分段线性映射后的图像的对比度显著提升,原本无法辨别的细节信息明显改善,图像灰度均值也有所提升,如图10(a)、图10(b),证明分段线性映射算法模块对图像有明显的增强效果。
4 结论
本文设计并实现了一个完整的、可搭载大多数常用图像处理算法的、双通道实时同步输出的小型化CMOS成像系统。既可当做传统CMOS相机单独成像显示,也可外接其他图像处理或测控平台来实现复杂图像处理算法和测控应用。同时小型化的设计思想降低了系统成本,提高了系统效率、灵活性和实用价值。
参考文献
[1] YAN L,ZHANG T,ZHONG S.A DSP/FPGA-based parallel architecture for real-time image processing[J].World Congress on Intelligent Control & Automation,2006,2:10022-10025.
[2] 刘国贺,李玉惠,李勃,等.数字图像水印实时嵌入系统的设计与实现[J].电子技术应用,2010,29(3):27-30.
[3] 陈必威,梁志毅,王延新,等.基于FPGA的高帧速CMOS成像系统设计[J].计算机测量与控制,2012,20(5):1397-1400.
[4] 王鹏,程芸,董书莉.基于FPGA的多格式数据传输设计[J].电子测量技术,2014,37(1):70-75.
[5] 曾晶,唐湘成,王德胜.基于FPGA的差分信号阻抗匹配研究[J].电子设计工程,2010,18(3):121-123.
[6] 侯宏录,王蓉,杜鹃.基于FPGA的CMOS传感器高速视频采集系统[J].光电技术应用,2010,25(5):24-28.
[7] 褚红娟,隋国荣.基于SCCB通信的FPGA视频采集模块[J].自动化仪表,2010,31(11):68-74.
[8] 朱奕丹,方怡冰.基于FPGA的图像采集与VGA显示系统[J].计算机应用,2011,31(5):1258-1264.
[9] 丁昊杰,刘敬彪,盛庆华.基于CMOS图像传感器的视频采集系统设计[J].现代电子技术,2012,35(14):178-188.
作者信息:
张龙祥,王向军,曹 雨
(天津大学 微光机电教育部重点实验室,天津300072)