盧 晶,胡 鋼
(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算法具有更好的邊緣檢測效果.