卢 晶,胡 钢
(1.商洛学院 数学与计算机应用学院,陕西 商洛 726000;2.西安理工大学 理学院,西安 710062)
随着生产技术发展和生产自动化程度的提高,图像自动化处理系统在遥感目标判别、交通路况监测和产品自动检测等方面发挥了越来越重要的作用.图像处理[1-3]包括图像分割、图像边缘检测和图像识别等多个方面,而图像边缘检测是图像处理的基本组成部分,一定程度上可以决定图像分割及图像识别等其他图像处理方法的效果.图像边缘检测[4-5]实现方法包括软件实现、硬件实现和软硬件结合实现三种,单纯的软件实现对计算机运算能力有较高要求,单纯硬件实现所需成本较大,比较合理的方法是采用软硬件结合的方式开发图像边缘检测系统.随着图像处理技术的发展,目前比较流行的图像边缘检测算法包括Sobel算法、Canny算法和PCNN算法[6-9]等,这些算法主要针对灰度变化不大的边界有较好的检测效果,但是对于灰度值变化较明显的特殊敏感区域检测效果不佳,同时也存在试用范围窄,运算量大,不宜硬件实现等缺点.
本文综合考虑了系统复杂度和运行效率等因素,提出了一种基于PCNN算法结合FPGA[10-11]的图像边缘检测系统实现方法,该方法能够实现对静态小场景物体的可靠边缘检测,检测效果优于传统的Sobel算法和Canny算法.
基于PCNN算法图像边缘检测系统采用软硬件相结合的方法实现对图像边缘的检测,较好地满足了实时边缘检测的要求.系统硬件由FPGA芯片、成像模块、图像采集模块、FPGA外围电路、外部存储器、千兆以太网、系统电源和便携计算机等部分组成,系统硬件组成如图1所示.FPGA芯片用于对图像数据进行预处理和检测目标边缘信息,采用Alter公司的EP3SL150F780型号芯片.成像模块将光信号转换成电信号,实现对观测目标的成像.系统采用成熟的CCD工业照相机采集目标图像信息.图像采集模块将成像模块得到的目标图像读入FPGA芯片,以便FPGA芯片对其进行预处理和边缘检测等处理.系统采用Cameralink电路进行图像数据采集.FPGA外围电路实现设置FPGA的工作模式、保存FPGA相关工作参数和为FPGA提供工作时钟等功能,主要包括配置电路模块和时钟电路模块.外部存储器用来保存FPGA芯片的配置信息和处理过程中的图像信息等,由FLASH电路和DDR3 SDRAM电路两部分组成,其中,FLASH电路存储程序代码及参数信息、FPGA配置信息等,DDR3 SDRAM电路存储图像数据和处理过程中产生的中间数据等.千兆以太网主要用于实现FPGA处理系统与便携式计算机之间的处理结果和控制信息的传递.便携式计算机作为上位机,用于设置图像边缘检测系统工作参数、监控系统运行状态和接收显示处理结果等.
图像边缘检测系统采用Cameralink接口电路作为图像采集模块,实现了高稳定性传递图像数据和控制成像传感器的目的,并且将图像采集模块对CPU的占用率控制在所需范围.Cameralink接口包括28位单端并行信号、1位时钟信号、4位相机控制信号和2位异步串行通信信号.系统采用Cameralink接口的基本配置方式,能够传输28位的图像数据,电路组成如图2所示.其中,MDR26作为连接器,连接图像传感器与接口电路其他芯片.DS90CR288A芯片作为接收转换器,将1对差分时钟信号和4对差分图像信号转换成24位图像数据信号、4位视频控制信号和1位时钟信号.DS90LV019芯片将差分信号转换成单端信号传递给FPGA芯片,将单端信号转换成差分信号传递给图像传感器,实现FPGA芯片与图像传感器之间的异步通信.DS90LV047A芯片将4位控制信号转换成4对差分控制信号,实现FPGA对成像传感器的控制.
图1 图像边缘检测系统硬件组成Fig.1 Hardware composition of image edge detection system
图2 图像采集模块电路图Fig.2 Image acquisition module circuit diagram
图像边缘检测系统的FPGA外围电路包括FPGA配置电路和FPGA时钟电路.FPGA配置采取JTAG模式和快速被动并行模式(FPP),JTAG模式直接将程序下载到FPGA芯片中来进行在线调试,FPP模式通过CPLD在系统上电时读取FLASH存储器内的参数数据来对FPGA芯片进行设置.为了提高系统的便捷性,本文设计了基于CPLD芯片和USB芯片的USB-Blaster电路,通过CPLD接收USB接口传递过来的参数数据并将其转换成FPGA芯片的配置数据,实现了利用USB数据线对FPGA芯片进行设置的功能,USB-Blaster电路如图3所示.系统分别采用频率为50、125 MHz的有源晶振时钟作为系统的外部时钟源.该时钟源充当FPGA芯片内部的PLL时钟源并以此产生系统其余模块所需的时钟信号.
图3 USB-Blaster电路图Fig.3 USB-Blaster circuit diagram
为了解决图像边缘检测系统运算过程中需要大量存储空间来存储数据与FPGA芯片内置RAM资源有限的矛盾,系统采用外部存储器来存储各种数据信息,实现了大存储容量和快速读写的要求.外部存储器包括FLASH芯片和DDR3 SDRAM芯片两种,FLASH芯片用于存储处理程序和FPGA芯片的配置文件等数据,DDR3 SDRAM芯片用于存储待处理的图像数据和运算过程中产生的中间数据.系统的FLASH芯片存储容量为512 MB,具有25位地址线和16位数据线,能够满足程序存储和读取的要求.系统采用2片DDR3 SDRAM芯片存储图像数据,每片芯片的容量为2 GB,内部时钟频率为533 MHz,具有16位地址总线,数据传输速率为1 066 MT/s,利用IP核对其进行实时控制,方便数据的读取和系统处理进度的干预.
图像边缘检测系统的千兆以太网主要用于实现FPGA芯片与便携式上位计算机之间的数据和指令的传输.千兆以太网架构包括数据链路层(MAC)和物理层(PHY),MAC的功能采用Altera公司的IP核实现,采用MARVELL公司的88E1111芯片作为PHY和MAC之间的接口.千兆以太网的设计框图如图4所示.由图4可知,MAC控制模块挂接于Avalon总线上,实现与其他设备的数据交互.NIOS II CPU利用Avalon总线对MAC进行控制.MAC利用GMII/RGMII与88E1111芯片进行连接,利用MDC和MDIO对88E1111芯片进行控制.系统利用TX SGDMA和RX SGDMA来实现千兆以太网全双工的工作方式,TX SGDMA和RX SGDMA分别与MAC中的TX FIFO和RX FIFO进行连接,TX SGDMA将待发送的数据送入TX FIFO中缓存,RX SGDMA将缓存在RX FIFO中的数据读入系统存储器.由于MAC内部和88E1111芯片内部都有32个寄存器,将两者的寄存器一一对应后,系统只需对MAC设置即可.
图像边缘检测系统软件采用汇编语言结合C++语言联合开发的形式,利用C++语言开发便携计算机中的控制界面程序、数据存储程序和相关数据显示程序,FPGA芯片中的边缘检测处理程序及相关的预处理程序等采用汇编语言结合C++语言的形式编写.图像边缘检测程序是系统的核心程序,开发的程序要满足使用要求且运算高效可靠.系统采用PCNN神经网络模型作为图像边缘检测主程序算法.PCNN是一种单层的反馈型神经网络模型,处理基础是神经元.PCNN具有神经元阈值和脉冲发送动态可调、时间空间特性强、脉冲同步集群发送、脉冲以波的形式传播等特点,能够在不经过样本训练的情况下较好地实现图像边缘检测功能.
图4 千兆以太网设计图Fig.4 Design diagram of Gigabit Ethernet
系统采用简化的PCNN模型进行图像边缘检测,不但具备传统PCNN的优点,还解决了传统PCNN用于边缘检测时对神经网络的数学分析和参数确定困难、图像中灰度相似或位置临近的边缘像素点集群模糊等现象.简化PCNN模型包括接收部分、调制部分和脉冲产生部分,示意图如图5所示.
图5 简化PCNN示意图Fig.5 Schematic diagram of simplified PCNN
1) 接收部分.接收部分模拟神经元的树突部分,用于接收外部和相邻神经元的信息输入,由反馈输入和链接输入两部分组成.反馈输入通道F模拟接收外部刺激信息输入,链接输入通道L模拟相邻神经元树突信息输入,每种输入状态都由输入信息和自身状态决定.反馈输入的表达式为
Fij(n)=exp(-αF)Fij(n-1)+
VF∑MijklYkl(n-1)+Sij
(1)
式中:αF为反馈输入漏电容积分的时间衰减常数;Mijkl为反馈输入中神经元之间的链接权系数;VF为反馈输入的幅度系数;Ykl为PCNN的脉冲输出;Sij为外部刺激.在简化的PCNN模型中,省略其他项,只保留外部刺激Sij作为该部分神经元的输入,其表达式可简化为
Fij(n)=Sij
(2)
链接输入表达式为
Lij(n)=exp(-αL)Lij(n-1)+
(3)
2) 调制部分.调制部分通过对链接输入进行正的单位偏置,再与反馈输入相乘,结果是神经元内部活动项Uij,其表达式为
Uij(n)=Fij(n)(1+βijLij(n))
(4)
式中,βij为神经元之间的链接强度,偏移量规整为1.由于链接输入的时间衰减常数αL大于反馈输入的时间衰减常数αF,因此,链接输入Lij比反馈输入Fij变化快,链接输入能够在整个衰减过程中产生作用.调制部分相当于在一个近似常量的信号上叠加了一个快速变化的信号,只要链接输入存在,内部活动项Uij就大于反馈输入Fij.
3) 脉冲产生部分.脉冲产生部分包括阈值函数和脉冲产生器两部分,阈值函数用于得到动态阈值θij,脉冲产生器根据θij与Uij的关系来产生脉冲,两者的表达式为
θij(n)=exp(-αθ)θij(n-1)+VθYij(n-1)
(5)
(6)
式中:αθ为阈值函数的时间衰减常数;Vθ为阈值幅度系数.当动态阈值θij小于内部活动项Uij时,神经元点火,输出脉冲Yij为1,此时神经元的θij迅速增加.当θij增加到大于Uij时,神经元受到抑制,输出脉冲变为0,然后θij迅速降低,当θij又小于Uij时,神经元再次点火,输出脉冲再次变为1.因此,输出脉冲的最大频率小于等于脉冲发生器产生脉冲的频率.此外,点火的神经元会激励与其相邻的神经元点火,从而触发具有相似性质且位置临近的神经元快速点火,进而对图像的边缘等特征进行检测.
图像的边缘是图像灰度发生剧烈变化的区域.图像边缘检测就是通过特定处理来得到图像中目标对象和背景以及目标对象和目标对象之间的分界线.PCNN检测图像边缘时,神经网络中的神经元与图像的像素点对应,像素点的个数等于神经元的个数.在二维图像中,除边界外每个像素点与其周围的8个像素点相连,因此,神经网络中神经元也与其周围的8个神经元相连.图像中每个像素点的亮度作为对应神经元的F通道的输入,其他神经元的输出作为L通道的输入.每个神经元只有两种输出状态,即点火或熄灭.为了保证神经元的输出能够自由传播,规定某一神经元的邻域内有一神经元点火时,该神经元就点火.假设图像的背景为亮区,图形目标为暗区,由于背景的亮度值比目标的亮度值大,背景对应的神经元首先点火,而目标对应的神经元熄灭,点火的神经元图像记为A1.将亮区发送的脉冲传递特定像素之间的距离,则可使与亮区相邻的暗区神经元点火,这些与点火的暗区神经元对应的像素就是目标图像的边缘,此时得到第二个点火神经元图像A2.通过将A1和A2进行异或处理可得到图像检测的边缘E,边缘的宽度就是脉冲发送的距离宽度.由于点火脉冲按照图像目标的形状传播,因此能够得到目标的完整边缘.算法过程如下所示:
1) 图像预处理和参数初始化.图像用二维矩阵A存储,A的大小与图像的像素点相同.A中每个元素为对应像素点的亮度,通过预处理将各像素的亮度值归一化为0.1和1,其中,1的像素点表示背景,0.1的像素点表示目标.检测结果矩阵为E,神经元输出矩阵为Y,链接矩阵为L,内部活动项矩阵为U,动态阈值矩阵为θ,E、Y、L、U和θ的大小与A相同,令上述5个矩阵中元素均为0.设邻接像素的运算核矩阵K为3×3矩阵,并设置合适的链接强度,令n=N+1,其中,N为边缘的宽度.
2) 根据式(3)、(4)、(6)分别计算矩阵L、U、Y的值.如果Y中某一元素为1,则根据式(5)计算矩阵θ中对应元素的值,用于表示该神经元点火后,提高其阈值使其不再点火.
3) 如果n=N+1,则令n=n-1并转到步骤2)继续执行.否则令n=n-1,判断Y中各元素取值,若某一元素值为1,将E中对应元素的值设为1.
4) 如果n≠1,回到步骤2)继续执行,否则输出检测结果矩阵E.
为了检验系统对典型图像边缘的检测性能,分别选择人物和风景的照片作为试验对象.将处理后的图像数据按要求传递给图像采集模块.利用图像边缘检测系统对图像边缘进行检测,并将处理结果通过千兆以太网传递给便携式上位计算机.利用上位计算机中的处理结果显示程序边缘检测结果.原始图像和处理结果图像如图6所示.
图6 试验结果图Fig.6 Images of experimental results
由试验结果可知,对于人物图像,系统较好地实现了图像边缘检测的目的,特别是对眼睛和鼻子等较小的目标,检测的边缘信息基本与实际情况相符.对于肩部等由于摄影角度光照导致的虚假边缘也能够有效屏蔽.对于灰度变化不大的边界,比如帽沿和帽子上部的边界,检测效果较差.对于风景图像,近处的房屋及街道等目标的边缘能够比较准确地检测,但是远处灰度值变化较小的森林和农田的边缘检测效果较差.因此,系统能够较好地满足对静态小场景物体的边缘检测需求.
对比系统中图像边缘检测方法与传统的Sobel算法和Canny算法检测结果.为了直观衡量三种方法的边缘检测效果,采用信息熵作为检测结果的评价指标.当边缘漏检情况发生时,边缘图像的信息熵会变小.信息熵定义为
(7)
式中:P0和P1分别表示二值图像中1和0的概率;M为二值图像中像素值总数;I和J为图像的行数和列数.对不同的图像进行试验,试验结果如表1所示.由表1可知,系统所采用的处理方法对于每幅试验图像所得结果的熵值都高于采用Sobel算法和Canny算法所得到结果的熵值,说明系统所采用方法的边缘漏检率更低,更好地满足图像边缘检测的需要.
表1 不同算法结果对比Tab.1 Comparison in results of different algorithms
本文研究了基于简化PCNN算法的图像边缘检测系统,分析了系统的硬件结构和组成,并对图像采集模块、FPGA外围电路、外部存储器和千兆以太网等模块进行了详细设计,提出了一种简化PCNN的图像边缘检测方法,研究了算法模型和算法运行流程.试验结果表明,该系统能够比较准确地提取静态小场景图像的边缘信息,并能克服各种原因带来的虚边缘现象.该图像检测系统采用的边缘检测算法比传统的Sobel算法和Canny算法具有更好的边缘检测效果.