馬 俊,李春茂,郭 鑫
(1.西南交通大學(xué)電氣工程學(xué)院,四川成都 610031;2.西南交通大學(xué),牽引動(dòng)力國(guó)家重點(diǎn)實(shí)驗(yàn)室,四川成都 610031)
高鐵的高速運(yùn)行加大了對(duì)鋼軌的磨耗,導(dǎo)致鋼軌表面凹凸不平,影響列車在鋼軌上的平穩(wěn)運(yùn)行,以致可能引發(fā)列車脫軌造成安全事故。因此需要對(duì)鋼軌進(jìn)行檢測(cè),傳統(tǒng)鋼軌檢測(cè)主要依靠人工檢測(cè),效率低下,費(fèi)時(shí)費(fèi)力,本文提出實(shí)時(shí)采集鋼軌圖像并預(yù)處理,及時(shí)識(shí)別鋼軌的各種形態(tài)缺陷并維護(hù),保證鋼軌表面的平整,使列車平穩(wěn)安全運(yùn)行。
實(shí)時(shí)鋼軌圖像動(dòng)態(tài)數(shù)據(jù)量和運(yùn)算量龐大,依靠傳統(tǒng)的計(jì)算機(jī)和數(shù)字信號(hào)處理(DSP)進(jìn)行圖像數(shù)據(jù)采集和處理滿足不了實(shí)時(shí)性要求。隨著FPGA技術(shù)的不斷發(fā)展和成熟,以及FPGA的低成本開發(fā)、動(dòng)態(tài)靈活性強(qiáng)、并行數(shù)據(jù)處理能力快等優(yōu)點(diǎn)[1],為實(shí)現(xiàn)大量鋼軌圖像的實(shí)時(shí)采集與預(yù)處理提供了可能。
本文提出一種基于FPGA的實(shí)時(shí)鋼軌圖像采集與預(yù)處理系統(tǒng)。在底層充分利用FPGA并行數(shù)據(jù)處理技術(shù)采集大量鋼軌圖像,并對(duì)鋼軌圖像作預(yù)處理,提取出鋼軌圖像輪廓減少圖像數(shù)據(jù)量,進(jìn)一步提高系統(tǒng)處理的實(shí)時(shí)性。
總體結(jié)構(gòu)框圖如圖1所示。CCD攝像機(jī)采集鋼軌圖像,并傳輸?shù)浇獯a芯片TW2867中,TW2867將模擬圖像轉(zhuǎn)換成數(shù)字圖像;FPGA通過(guò)配置I2C總線采集數(shù)字圖像,數(shù)字圖像經(jīng)過(guò)圖像解析模塊解析后通過(guò)圖像讀寫模塊存儲(chǔ)在DDR2中;在圖像處理模塊中完成圖像數(shù)據(jù)的色彩空間轉(zhuǎn)換、快速中值濾波、邊緣檢測(cè)等預(yù)處理;預(yù)處理后的圖像通過(guò)VGA控制模塊產(chǎn)生行、場(chǎng)同步信號(hào),最終在VGA上顯示實(shí)時(shí)采集與預(yù)處理后的鋼軌圖像。
圖1 鋼軌圖像采集與預(yù)處理總體框圖
本文中利用CCD攝像機(jī)采集鋼軌圖像,幀頻30幀/s,輸出分辨率為800×600的PAL制式模擬視頻。視頻A/D轉(zhuǎn)換采用TW2867芯片,自動(dòng)識(shí)別PAL/NTSC/SECAM制式視頻,并輸出8位數(shù)字視頻信號(hào),時(shí)鐘頻率27 MHz,同時(shí)用作整個(gè)采集模塊的采樣時(shí)鐘。
本文使用I2C總線作為通信接口,對(duì)TW2867芯片的內(nèi)部寄存器進(jìn)行初始化設(shè)置[2],并根據(jù) CCD攝像頭參數(shù)設(shè)置TW2867輸出的視頻制式、大小、幀率等。
圖像解析模塊解析出數(shù)字圖像的場(chǎng)同步、行同步、奇偶場(chǎng)等,輸出16位圖像數(shù)據(jù),鋼軌圖像解析模塊圖如圖2所示。
圖2 鋼軌圖像解析模塊圖
鋼軌圖像數(shù)據(jù)量大,同時(shí)為了提高采集和處理實(shí)時(shí)性,在系統(tǒng)中加入2片雙倍速內(nèi)存 (DDR2),帶寬達(dá)10 Gb/s,容量達(dá)2 Gbit,滿足圖像處理過(guò)程中對(duì)高緩沖區(qū)的需求,通過(guò)讀寫模塊將采集的圖像數(shù)據(jù)寫入DDR2中。
FPGA開發(fā)板時(shí)鐘頻率為50 MHz,TW2867輸出的視頻圖像時(shí)鐘頻率為27 MHz,在系統(tǒng)中添加一個(gè)異步FIFO以解決系統(tǒng)數(shù)據(jù)緩沖和時(shí)鐘不一致的問題[3],F(xiàn)IFO模塊寬度16位,深度512。
鋼軌圖像數(shù)據(jù)在DDR2中的存儲(chǔ)主要通過(guò)同步狀態(tài)機(jī)將異步FIFO模塊中的圖像數(shù)據(jù)寫入DDR2中。由于一幀圖像數(shù)據(jù)的行消隱、場(chǎng)消隱處沒有圖像信息,將奇偶場(chǎng)消隱處圖像剪切并合并為一幀后將圖像的有效數(shù)據(jù)寫入DDR2中,以提高寫入速度。同步狀態(tài)機(jī)如圖3所示。
圖3 鋼軌圖像寫狀態(tài)機(jī)
(1)BURST_IDLE:狀態(tài)機(jī)空閑狀態(tài)。當(dāng)異步FIFO中數(shù)據(jù)快滿時(shí),開始從異步FIFO中讀取數(shù)據(jù),進(jìn)入BURST_ONE_LINE_START狀態(tài),開始寫一行的數(shù)據(jù);
(2)BURST_ONE_LINE_START:一行的寫操作開始。當(dāng)BURST_ONE_LINE_START開始時(shí),確認(rèn)寫操作,進(jìn)入下一個(gè)狀態(tài)BURSTING;
(3)BURSTING:寫操作。如果圖像數(shù)據(jù)寫完后,則進(jìn)入下一個(gè)狀態(tài)BURST_END;否則繼續(xù)BURSTING狀態(tài);
(4)BURST_END:寫操作完成時(shí)確認(rèn)一行數(shù)據(jù)是否已經(jīng)完全寫入。如果寫完一行數(shù)據(jù),則進(jìn)入下一個(gè)狀態(tài)BURST_ONE_LINE_END;如果尚未寫完,則繼續(xù)進(jìn)入BURSTING中繼續(xù)寫數(shù)據(jù)。
(5)BURST_ONE_LINE_END:一行數(shù)據(jù)寫入DDR2中,進(jìn)入下一個(gè)狀態(tài)BURST_IDLE。
在FPGA內(nèi)部,圖像數(shù)據(jù)是以4∶2∶2 YCrCb格式傳輸,但現(xiàn)有顯示設(shè)備采用RGB驅(qū)動(dòng)。對(duì)圖像數(shù)據(jù)進(jìn)行色彩空間變換[4],實(shí)現(xiàn)YCrCb到RGB的轉(zhuǎn)換。在計(jì)算機(jī)視覺系統(tǒng)中,修正后的轉(zhuǎn)換公式如式(1)所示:
考慮到公式中的3位小數(shù),為了方便計(jì)算,利用Verilog語(yǔ)言將小數(shù)左移8位化整,即乘以256,簡(jiǎn)化后如如式(2)所示:
在鋼軌圖像的采集、解碼、讀寫、空間變換等過(guò)程中產(chǎn)生了干擾噪聲,降低了圖像質(zhì)量,本文采用快速中值濾波處理算法對(duì)圖像數(shù)據(jù)進(jìn)行濾波處理以消除噪聲干擾。利用2個(gè)FIFO模塊和3×3窗口對(duì)圖像進(jìn)行中值濾波處理,算法框圖如圖4所示。
圖4 快速中值濾波模塊
2行圖像數(shù)據(jù)緩存在2個(gè)FIFO中,輸入第三行圖像數(shù)據(jù)時(shí),3×3窗口在3行數(shù)據(jù)中滑動(dòng),中值濾波函數(shù)模塊輸出3行9個(gè)像素的中值。對(duì)于圖像邊緣數(shù)據(jù)的處理,默認(rèn)為原始圖像數(shù)據(jù),不加處理。快速中值濾波模塊Modelsim仿真結(jié)果如圖5所示。
圖5 快速中值濾波仿真波形圖
在FPGA內(nèi)采用Sobel算法對(duì)鋼軌圖像做邊緣檢測(cè)處理,提取出鋼軌輪廓等有效圖像數(shù)據(jù)以進(jìn)一步減少運(yùn)算數(shù)據(jù)量,提高系統(tǒng)實(shí)時(shí)性。
Sobel算法通過(guò)2個(gè)矩陣對(duì)鋼軌圖像作橫向和縱向卷積得到圖像的灰度值G,如式(3)、式(4)、式(5)所示:
再設(shè)置灰度閾值檢測(cè)出鋼軌圖像的邊緣,卷積原理圖如圖6 所示[5]。
圖6 橫向卷積運(yùn)算原理圖
在QuartusⅡ的MegaWizard Plug-In Manager中添加Shift register模塊實(shí)現(xiàn)3行圖像數(shù)據(jù)的緩存,添加ALTMULT_ADD模塊實(shí)現(xiàn)圖像橫向和縱向的卷積運(yùn)算,再添加PARALLEL_ADD和ALTSQRT模塊實(shí)現(xiàn)開平方和根運(yùn)算,得到圖像的灰度值G。實(shí)驗(yàn)中設(shè)置灰度閥值為50,灰度值G大于50則輸出為0,圖像顯示為黑色,反之則為白色。
圖像數(shù)據(jù)經(jīng)過(guò)快速中值濾波和邊緣檢測(cè)處理后,通過(guò)VGA顯示控制模塊生成正確的時(shí)序,最終在VGA中實(shí)時(shí)顯示采集并預(yù)處理后的鋼軌圖像[6]。VGA顯示參數(shù)如表1所示。
表1 VGA顯示參數(shù)
由表格1可知,像素時(shí)鐘頻率為40 MHz,行掃描周期為1 056個(gè)像素時(shí)鐘周期,場(chǎng)掃描周期為628個(gè)行掃描周期。根據(jù)表1設(shè)計(jì)VGA控制模塊,生成顯示器所需的行同步時(shí)序和場(chǎng)同步時(shí)序。VGA時(shí)序仿真圖如圖7所示。
圖7 VGA時(shí)序仿真圖
在Quartus II中采用Verilog HDL語(yǔ)言編寫各模塊,通過(guò)JTAG模式下載到FPGA中,實(shí)驗(yàn)結(jié)果如圖8、圖9所示。圖8為CCD攝像頭采集的實(shí)時(shí)鋼軌圖像,分辨率為800×600。圖9為邊緣檢測(cè)和快速中值濾波后的鋼軌圖像,能夠檢測(cè)出鋼軌的輪廓,采集的圖像中有一些噪點(diǎn),經(jīng)過(guò)快速中值濾波后能夠有效濾除鋼軌圖像周圍的噪聲,檢測(cè)出的鋼軌輪廓供上層算法作進(jìn)一步高級(jí)處理。
圖8 原始鋼軌圖像
將同一幀圖像在Matlab中做快速中值濾波和邊緣檢測(cè)處理,調(diào)用Profiler Summary分析,處理1幀圖像的時(shí)間為0.574 s,即574 ms。而在 FPGA中處理一幀800×600圖像時(shí)間為480 416個(gè)時(shí)鐘周期,即為9.608 ms,在FPGA上處理圖像速度約為上位機(jī)處理軟件的60倍,大大提高了系統(tǒng)的工作效率和實(shí)時(shí)處理性能。
針對(duì)CCD采集的鋼軌圖像數(shù)據(jù)量大等特點(diǎn),提出了基于FPGA的實(shí)時(shí)鋼軌圖像采集與預(yù)處理研究,詳細(xì)介紹了如何在FPGA上實(shí)現(xiàn)采集與預(yù)處理系統(tǒng)的各功能模塊。對(duì)鋼軌圖像快速中值濾波和邊緣處理后,實(shí)現(xiàn)了鋼軌圖像的去噪和快速提取,能夠在VGA顯示器中實(shí)時(shí)顯示預(yù)處理后的鋼軌圖像。與基于PC機(jī)的上位機(jī)圖像處理軟件相比,圖像處理速度更快,實(shí)時(shí)性更高。同時(shí)相比基于FPGA和DSP的圖像處理模式,簡(jiǎn)化了系統(tǒng)設(shè)計(jì),縮短開發(fā)周期,減少開發(fā)成本,且系統(tǒng)靈活性高。
[1]高迎慧,劉賓,王佳,等.基于DSP和FPGA的高速數(shù)據(jù)采集處理系統(tǒng).儀表技術(shù)與傳感器,2011(2):66-68.
[2]馮偉昌,林玉池,何東,等.基于FPGA的雙通道實(shí)時(shí)圖像處理系統(tǒng).傳感技術(shù)學(xué)報(bào),2010,23(8):1118 -1112.
[3]卓浩澤,龔仁喜,謝玲玲,等.基于FPGA的多路高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì).電測(cè)與儀表,2011,48(9):65 -68.
[4]盛磊,徐科軍.一種彩色空間變換的FPGA實(shí)現(xiàn)方法.儀器儀表學(xué)報(bào).2005,26(8):378 -380.
[5]楊新華,寇為剛.基于FPGA的Sobel算子圖像邊緣檢測(cè)算法.儀表技術(shù)與傳感器,2013(1):102-104.
[6]李國(guó)剛,余俊,凌朝東.基于FPGA的VGA圖形控制器的實(shí)現(xiàn)方法.信息技術(shù),2006(7):25 -27.