基于FPGA的鐵軌檢測(cè)算法設(shè)計(jì)與研究
摘 要: 介紹一種基于FPGA的鐵軌檢測(cè)方法,包括嵌入式圖像處理系統(tǒng)的硬件平臺(tái)搭建和基于FPGA的圖像處理算法的研究。采用基于FPGA的軟核技術(shù),完成圖像增強(qiáng)和復(fù)原、邊緣檢測(cè)、閾值分割、連通域搜索等圖像處理基本算法,實(shí)現(xiàn)在圖像中完成鐵軌區(qū)域的提取。
關(guān)鍵詞: FPGA;嵌入式系統(tǒng); 圖像處理;鐵軌檢測(cè)
1 基于FPGA的嵌入式系統(tǒng)開(kāi)發(fā)流程
設(shè)計(jì)一個(gè)嵌入式系統(tǒng),主要包括硬件平臺(tái)搭建和應(yīng)用軟件編寫?;贔PGA技術(shù),硬件平臺(tái)搭建和軟件編寫都可在相應(yīng)的軟件平臺(tái)上完成。EDK(Embedded Development Kit)是Xilinx公司開(kāi)發(fā)嵌入式系統(tǒng)的套件工具。EDK套件工具主要包括硬件平臺(tái)產(chǎn)生器、軟件平臺(tái)產(chǎn)生器、仿真模型生成器和軟件編譯調(diào)試等工具,利用其集成開(kāi)發(fā)環(huán)境XPS(platform studio)可以方便地完成嵌入式系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)[1],設(shè)計(jì)流程如圖1所示。
2 硬件平臺(tái)搭建過(guò)程
分析系統(tǒng)需求中,鐵軌檢測(cè)主要是進(jìn)行圖像的分析處理,包括三個(gè)主要部分:圖像輸入、圖像處理和結(jié)果顯示。本項(xiàng)目使用依元素公司生產(chǎn)的Xilinx Spartan-3a系列xc3s700a的FPGA開(kāi)發(fā)板,軟件版本為Xilinx10.1。圖像輸入有下列途徑:USB接口、RS232串口、100 M以太網(wǎng)接口、EDK套件XMD調(diào)試平臺(tái)直接下載等。本文將圖像數(shù)據(jù)轉(zhuǎn)換為.ELF文件格式,直接燒寫入Flash中。本文不追求實(shí)現(xiàn)視頻流處理,并且圖像要多次使用,源圖像存儲(chǔ)在Flash中最合理。圖像處理由Microblaze軟核系統(tǒng)和檢測(cè)程序共同完成;圖像顯示由TFT控制器通過(guò)VGA輸出信號(hào)在液晶顯示屏顯示。具體硬件平臺(tái)搭建過(guò)程如下:
(1)按照XPS應(yīng)用向?qū)В⒆钚∠到y(tǒng),配置Microblaze軟核系統(tǒng)參數(shù)和添加UART外設(shè)。
(2)添加IP核,并連接到相應(yīng)總線,主要為內(nèi)存控制器、通信控制和GPIO等。
(3)添加自定義的IP。盡管Xilinx提供了許多免費(fèi)IP,但是免費(fèi)的IP不能滿足用戶的所有設(shè)計(jì)。本項(xiàng)目需要自定義的IP有用于控制液晶顯示的TFT_Controller和用于內(nèi)存地址總線及數(shù)據(jù)總線復(fù)用的Mux_logic IP。PLB_TFT_Controller主要產(chǎn)生RGB信號(hào)、行場(chǎng)掃描、同步信號(hào)等,Mux_logic IP用于對(duì)SDRAM和Flash總線復(fù)用進(jìn)行控制,輸入為SDRAM和Flash的控制IP產(chǎn)生的地址總線信號(hào)和數(shù)據(jù)總線信號(hào)及使能信號(hào),輸出為復(fù)用地址總線、數(shù)據(jù)總線信號(hào)。
(4)配置相應(yīng)IP,并進(jìn)行信號(hào)互聯(lián),將需要控制硬件的port連接到外部。分配地址空間,添加UCF配置文件。
(5)生成硬件比特流文件和硬件驅(qū)動(dòng)文件。硬件結(jié)構(gòu)原理圖如圖2所示。
3 軟件設(shè)計(jì)過(guò)程
3.1 鐵軌檢測(cè)原理
本項(xiàng)目中鐵軌檢測(cè)主要考慮兩種方案[2]:基于邊緣特征和基于區(qū)域特征。(1)基于邊緣特征檢測(cè)方法先在全局范圍檢測(cè)出邊緣線,再通過(guò)模型或特征限制條件,從邊緣圖中獲得目標(biāo)邊緣。(2)基于區(qū)域特征的鐵軌檢測(cè),利用區(qū)域統(tǒng)計(jì)特性,即鐵軌區(qū)域區(qū)別于周圍環(huán)境獨(dú)特統(tǒng)計(jì)特性來(lái)判斷鐵軌區(qū)域。兩種方法中,前者檢測(cè)到的鐵軌線較為準(zhǔn)確,但是其對(duì)二值化閾值嚴(yán)重依賴;后者抗噪性較好,但檢測(cè)的鐵軌線不夠準(zhǔn)確,本文主要討論基于區(qū)域特征的鐵軌檢測(cè)。
基于區(qū)域特征鐵軌檢測(cè)流程如圖3所示,分為四個(gè)步驟:
(1)降低分辨率。在濾波之前,先降低圖像分辨率,以消除圖像細(xì)節(jié),也可減輕后續(xù)處理的計(jì)算負(fù)擔(dān)。
(2)濾波處理。分辨率降低后,圖像中仍有很多的突兀點(diǎn),這是因?yàn)殍F軌上各種電磁信號(hào)的存在,攝像頭采集到的圖像不可避免地受到高斯噪聲、系統(tǒng)噪聲的污染??紤]到圖像特征,選用中值濾波,它在平滑脈沖噪聲方面非常有效,同時(shí)可以保護(hù)圖像尖銳的邊緣。
(3)邊緣提取。利用邊緣檢測(cè)算子檢查每個(gè)像素的鄰域并對(duì)灰度變化率進(jìn)行量化,包括方向的確定。Sobel邊緣檢測(cè)算子方向性靈活,可以設(shè)置不同的系數(shù),抑制噪聲效果較好,使用范圍廣泛,因此選用Sobel算子。同時(shí)鐵軌圖像橫向變化不大,而在縱向有很大的延伸,故也只考慮圖像垂直邊緣響應(yīng)。
(4)連通域搜索。二值化處理后邊緣圖包含了鐵軌信息,也含有很多非鐵軌邊緣。使用八連通區(qū)域搜索法,進(jìn)行標(biāo)號(hào)處理,記錄相互獨(dú)立的連通區(qū)域個(gè)數(shù)并進(jìn)行標(biāo)號(hào)。對(duì)連通區(qū)域按照長(zhǎng)度大小進(jìn)行排列,直到搜索出縱向最長(zhǎng)的兩根鐵軌,然后判斷并標(biāo)記左右兩鐵軌,之后進(jìn)行區(qū)域填充,最終可以看到標(biāo)記的鐵軌區(qū)域。
評(píng)論