摘 要:一种基于SoPC嵌入式单片解决方案的实时边缘检测系统,利用FPGA片上逻辑资源实现了对640×512大小的动态8 bit灰度图像的实时边缘检测运算,并利用片内NiosⅡ处理器对系统进行控制。分析了系统组成、工作原理、性能数据处理算法及实现过程。
关键词:图像处理;SoPC;边缘检测;FPGA;NiosⅡ
图像边缘可以定义为图像局部特征的不连续性,表现为图像灰度级的突变、纹理结构的突变和彩色的变化等。图像的边缘信息包含了大部分的图像特征信息,对图像分析十分重要[2]。边缘检测技术是图像处理和计算机视觉等领域最基本的技术,如何快速、精确地提取图像边缘信息一直是国内外研究的热点,然而边缘检测又是图像处理中的一个难题[3]。在嵌入式系统中,往往也需要用到边缘检测等图像处理方法。而由于嵌入式系统对成本、功耗、运算速度及实时性的要求较严格,边缘检测算法的工程实现以及实现效率和成本便有了很重要的实际意义。
片上可编程系统SoPC(System on a Programmable Chip)是Altera公司提出的一种高效、灵活的SoC解决方案。它将处理器、存储器、I/O口等系统设计需要的功能模块集成到一个PLD 器件上,构建成一个可编程的片上系统。它有非常灵活的设计方式,而且实现了软硬件在系统可编程。
本文研究了一种采用SoPC单片解决方案的实时边缘检测系统,通过利用FPGA片上资源实现对图像数据的实时处理,达到了较高的处理性能,并且简化了系统结构。同时通过在FPGA片上构建NiosⅡ嵌入式处理器对系统进行控制,并将数据处理部分封装成处理器的外设,增加了系统的灵活性与可扩展性。
1 系统结构及工作原理
1.1 系统总体结构
本系统硬件部分由CCD摄像模块、FPGA板、VGA接口电路及VGA显示器四部分组成。其中NiosⅡ嵌入式处理器、存储器接口、数据采集处理模块以及显示模块均由FPGA片内实现。系统总体结构如图1所示。
CCD摄像模块负责采集动态图像数据,工作频率25 MHz,输出图像格式为640×512、30 bit彩色图像,图像采集速度为13f/s。因为系统存储芯片容量限制,所以处理前将图像数据转换为8 bit灰度图像。
FPGA芯片采用EP2C35F672C6,负责图像采集、数据处理及存储、VGA输出以及系统控制等工作。通过将各个模块封装成NiosⅡ处理器的外设,能够大大简化系统设计工作,并且能够更方便地对各模块进行控制。
VGA接口部分采用ADV7123三通道高速DA芯片,将FPGA产生的数字信号转换成VGA模拟信号输出。输出分辨率为800×600,刷新频率为60 Hz。屏幕显示面积比图像大,多余的部分可以用来显示系统运行状态等信息。
1.2 系统工作原理
系统运行时,由CCD摄像模块进行图像采集工作,通过CCD接口模块将图像数据传入FPGA,并转换成为8 bit灰度图像数据。数据处理模块对图像数据进行处理,包括边缘检测处理以及图像反色、低通平滑滤波等前期处理工作,并对运算结果进行二值化处理。图像处理完毕后将数据存储在SRAM存储器中,VGA显示模块从SRAM存储器中读取图像数据,并按照VGA时序将信号送入DA芯片,产生相应模拟信号供显示器显示图像。
整个系统由NiosⅡ嵌入式处理器进行控制,并接受人机接口传来的控制信息。同时通过在SRAM中写入数据,显示系统运行状态及相关参数等信息。
2 图像处理算法及实现
2.1 数据处理算法
边缘检测算法选用了Laplace算子进行运算,算子结构如下:
使用此算子对图像数据进行卷积,即可得到边缘检测图像。此算子对各向边缘响应相同,且效果较好,是一种比较经典的边缘检测算法。但是此算子对图像中的噪声比较敏感,会加强图像中的噪声,从而影响图像质量。参考文献[5]使用此算子进行静态无噪声图像的边缘检测算法实现,效果较好,但由于未加入噪声抑制措施,因而不能处理噪声较大的实时图像。本系统在边缘检测运算之前先进行图像平滑等预处理,从而有利于减少图像中噪声的干扰,能有效改善图像质量。
本系统采用了低通平滑运算以及图像二值化运算等对图像进行预处理。其中低通平滑运算采用以下算子对图像数据卷积:
此算子中各项数值有利于在实现时使用位移运算代替乘法运算,从而减少硬件资源的使用并提高运算速度。通过设定合适的阈值,图像数据二值化运算的引入有利于增加最终处理结果的对比度。
2.2 算法实现
为了简化显示部分的设计,系统实现时忽略了卷积运算的边缘效应,使处理后的图像和原始图像尺寸相同。数据处理部分实现时采用了FIR滤波器的结构,用移位寄存器实现数据延时,使用乘法器对各个数据进行乘法运算,并把运算后的数据求和输出。
图2为数据处理模块结构图。图像每行有640像素,因此由640移位寄存器提取数据中相邻行的对应像素数据;由延时器提供一个周期的延迟,即提取每行中相邻像素数据;通过640位移寄存器和延时器即可将图像数据中待卷积部分数据提取出来,由乘法器将数据与对应系数相乘,并由加法器将结果相加,即可得到运算结果。
本数据处理模块已在Quartus7.2环境下编译通过,并进行仿真,达到要求。当图像数据持续有效时,模块能够每个时钟周期计算一次卷积,并输出结果。使用时钟频率为25 MHz时,最大处理带宽为200 Mb/s,处理640×512大小的图像速度为76 f/s,因此实际处理速度仅受CMOS摄像头的速度限制。通过模块的时序仿真,此模块最高运行频率可达86 MHz,即处理数据带宽可达688 Mb/s,处理速度可达262 f/s。通过增加模块的并行度,还可进一步提高处理速度。
图3为本数据处理模块在Quartus7.2环境下进行仿真时的波形。其中iB为输入数据;oB为输出数据;iClk为模块时钟信号;iCtrl为数据有效标志信号,当此信号为高时iB信号有效,否则表示数据无效,并需要暂停数据处理工作。
3 实验结果
图4为系统运行时图像,分别为原始图像、边缘检测结果、加入平滑预处理后的边缘检测结果以及对运算结果进行二值化处理后的图像。
从运行结果可以看出,系统能够对图像进行边缘检测运算,并且检测精度比较高。由于实时图像存在噪声,可以对图像进行平滑处理降噪之后再进行边缘检测,这样可以得到较好的效果,能够提高图像质量,但同时会使图像对比度有所下降。合理地设定二值化的阈值可以增加图像对比度,进一步提高图像质量。
完全由硬件电路实现数据处理算法,并且能够在数据处理中实现高并行度是FPGA的优势。传统图像处理系统由于对数据进行串行操作,处理一次卷积需要几十至几百个指令周期,而利用FPGA硬件资源进行数据运算则可以在一个周期内得到运算结果,效率大大提高。通过修改内部逻辑,能够很容易地增加系统并行度,从而大幅度提高系统运算速度。
同时SoPC解决方案中嵌入式处理器的引入使系统更加灵活并有了较大的扩展空间,可以完成复杂的系统控制工作以及人机接口控制。通过把数据处理模块封装成为处理器自定义外设,不仅简化了控制,而且增加了模块的可重用性。系统中数据处理模块、嵌入式处理器核以及各个接口逻辑均由FPGA单片实现,省去了处理器芯片及其外围逻辑芯片,从而简化了系统硬件结构,并降低了系统硬件成本。系统性能稳定、噪声小、易于移植、灵活性高、处理速度快、易于实现实时处理。本系统可以作为更高层图像处理技术的前期处理部分,也可以在视频处理技术中得到应用。本系统只占用19%片上逻辑单元,还有大部分逻辑资源没有使用,这就为系统的进一步扩展提供了条件。
参考文献
[1] CHIN A,CHAN G.Real-Time EdGe Detection[EB/OL].http://instruct1.cit.cornell.edu/courses/ece576/FinalProjects/ f2007/hc454_gtc32/hc454_gtc32/index.html.2008-12-20.
[2] 雷丽珍.数字图像边缘检测方法的探讨[M].测绘通报, 2006(3).
[3] 张小琳.图像边缘检测技术综述[M].高能量密度物理, 2007(1).
[4] 李振华.基于CMOS的视频采集及边缘检测系统的研究[D]. 武汉理工大学硕士论文,2007.
[5] 王绍雷.基于SoPC的图像边缘检测系统的研究[D].广西大学硕士论文,2007.
[6] 徐光辉.基于FPGA的嵌入式开发与应用[M].北京:电子工业出版社,2006.
[7] 罗杰.Verilog HDL与数字ASIC设计基础[M].武汉:华中 科技大学出版社,2008.