基于FPGA玻璃缺陷圖像采集處理系統(tǒng)
玻璃缺陷檢測是玻璃生產(chǎn)過程中一個相當(dāng)重要課題。玻璃缺陷(氣泡、結(jié)石、錫點(diǎn)等)妨礙了它在重大技術(shù)領(lǐng)域中的應(yīng)用,不但影響了產(chǎn)品的外觀,同時由于它的不平整度及屈光度的影響,使得人透過玻璃觀察實(shí)物時受到障礙。目前,國內(nèi)外在該領(lǐng)域的研究成果大致為分別利用線、面陣CCD獲取表面圖像,由后續(xù)軟件對圖像加以分析的方法來實(shí)現(xiàn)對表面質(zhì)量的檢測處理。在此正是基于這樣一種指導(dǎo)思想下,設(shè)計(jì)了一種基于FPGA的玻璃缺陷在線檢測系統(tǒng)方案,利用FPGA實(shí)時、高速、可重構(gòu)的特點(diǎn),對玻璃缺陷圖像進(jìn)行的預(yù)處理(卷積運(yùn)算),從而大大降低了后期數(shù)據(jù)處理的壓力,使得圖像處理系統(tǒng)運(yùn)算速度快,具有很好的適應(yīng)性。
1 圖像采集處理系統(tǒng)硬件平臺
在圖像信號處理過程中為保證實(shí)時性,首先要求實(shí)時圖像處理系統(tǒng)具有處理大數(shù)據(jù)的能力;其次對系統(tǒng)體積的大小、功能、穩(wěn)定性等也有嚴(yán)格要求。實(shí)時圖像處理算法中經(jīng)常要用到對圖像的求和、求差、二維梯度、圖像分割等不同層次、不同種類的運(yùn)算?;谏鲜鲆蛩?,考慮到FPGA和DSP的優(yōu)異性能,這里在玻璃缺陷檢測系統(tǒng)中采用了如圖1所示的硬件平臺。
系統(tǒng)內(nèi)各模塊功能簡要描述如下:
(1)視頻采集異步FIFO模塊(內(nèi)嵌于FPGA中)接收從視頻A/D芯片SAA7113送來的數(shù)字視頻流,解決系統(tǒng)數(shù)據(jù)緩沖和異步時鐘的問題,因?yàn)镾AA7113送過來的LLC頻率為27 MHz,而FPGA系統(tǒng)時鐘頻率為48 MHz。
(2)視頻解碼模塊用來對得到的數(shù)字視頻流進(jìn)行解碼,識別出行、場同步信號,并且根據(jù)需要選擇采集圖像的大小。
(3)I2C配置接口模塊(通過EP2C35進(jìn)行模擬配置)通過I2C總線對SAA7113進(jìn)行初始化配置,選擇產(chǎn)生的數(shù)字視頻格式等。
(4)圖像幀存控制模塊用來讀/寫系統(tǒng)兩片幀存儲器,并且可以在它們之間進(jìn)行讀/寫切換操作。
(5)圖像低級處理模塊從幀存中讀取一幀圖像數(shù)據(jù),對其進(jìn)行底層大量運(yùn)算的圖像預(yù)處理,如噪聲消除、邊緣檢測等,最后將處理完的圖像數(shù)據(jù)經(jīng)通信模塊送至后端DSP處理器做進(jìn)一步操作。此外由于采用基于SDRAM工藝的FPGA芯片,所以還需要配置電路在上電時對FPGA進(jìn)行配置。
系統(tǒng)上電時,F(xiàn)PGA首先從外部配置芯片中讀取配置數(shù)據(jù),通過AS主動串行方式完成自身的程序加載,進(jìn)入工作模式狀態(tài)。隨后I2C配置接口模塊完成對SAA7113的初始化,初始化結(jié)束后,F(xiàn)PGA等待采集圖像的命令。FPGA收到采集命令后,啟動采集視頻數(shù)據(jù)模塊、異步FIFO模塊和視頻解碼模塊進(jìn)行解碼,將數(shù)據(jù)輪換寫到兩個幀存中,供圖像低級處理模塊處理、經(jīng)DSP對圖像做進(jìn)一步處理,然后由通信模塊送往工控PC。
2 系統(tǒng)中內(nèi)存管理和圖像低級處理技術(shù)
2.1 SDRAM控制實(shí)現(xiàn)及仿真
視頻轉(zhuǎn)換芯片輸出的視頻圖像數(shù)據(jù)通過8位總線VPO傳輸給FPGA,F(xiàn)PGA需要將數(shù)據(jù)保存到SDRAM中,SDRAM在讀寫上有嚴(yán)格的時序要求。SDRAM的命令由RAS_n,CAS_n,WE_n和LOAD_mode構(gòu)成,分別表示行選擇、列選擇、讀/寫控制和寄存器配置控制。在該系統(tǒng)中,設(shè)計(jì)了SDRAM(基于FPGA)接口模塊,該模塊控制SDRAM的命令與時序。模塊內(nèi)設(shè)計(jì)了初始化機(jī)制和系統(tǒng)指令分析機(jī)制。初始化機(jī)制不僅要完成對SDRAM的初始化配置,還要完成對控制器的初始化配置,從而使控制器與外部SDRAM的工作模式一致。為了實(shí)現(xiàn)高效的SDRAM存取,提高SDRAM總線的利用率,SDRAM接口模塊CLK采用133 MHz的高速時鐘,當(dāng)?shù)玫綌?shù)據(jù)存取模塊的讀FIFO要求后.向SDRAM連續(xù)寫入16個字;當(dāng)?shù)玫絇C接口模塊的讀SDRAM請求后讀出1個字;其他時間保證SDRAM進(jìn)行刷新工作,以免數(shù)據(jù)丟失。從該硬件設(shè)汁平臺可以看出,系統(tǒng)中的SDRAM分別由PFGA和DSP控制。當(dāng)DSP和FPGA完成對相應(yīng)SDRAM的操作后,需要進(jìn)行總線切換??偩€切換后,DSP和FPGA開始對另一塊SDRAM進(jìn)行相應(yīng)操作。[!--empirenews.page--]
其主要代碼如下:
[!--empirenews.page--]
2.2 圖像低級處理的FPGA實(shí)現(xiàn)
圖像處理系統(tǒng)中,底層的圖像預(yù)處理(濾波、銳化)的數(shù)據(jù)量很大,要求運(yùn)算速度很快,但運(yùn)算結(jié)構(gòu)相對比較簡單,適應(yīng)于FPGA通過硬件實(shí)現(xiàn)。而在數(shù)字信號處理中,卷積器經(jīng)常被用于圖像濾波、邊緣檢測、圖像銳化,在玻璃缺陷檢測系統(tǒng)中,對采集的圖像進(jìn)行濾波去噪處理,以降低后續(xù)處理運(yùn)算的壓力。設(shè)對于兩個長度分別為m和n的序列f(i)和g(j),于是可以給出一個長度為N=m+n-1輸出序列:
設(shè)f(i)為模板序列{ω1,ω2,…,ωk},g(j)為輸入序列{x1,x2,…,xn},模板匹配后的結(jié)果序列為{y1,y2,…,yn-k+1},則:
上式顯然與常規(guī)意義下的卷積有所不同,但只要將{ω1,ω2,…,ωk}從左到右按鏡像排列預(yù)置于模塊中即可??梢钥闯?,每個輸入點(diǎn)xi都要與模塊中的所有元素進(jìn)行累加和相乘。
VHDL程序頂層文件代碼如下:
[!--empirenews.page--]
假設(shè)模板為{1,l,1},其仿真波形如圖3所示。
在實(shí)際操作中,模板的值預(yù)置于每個單元中,很容易修改,可以方便地完成各種“窗口”的卷積運(yùn)算。在卷積實(shí)現(xiàn)的基礎(chǔ)上,只要采用不同系數(shù)的模板就可以完成各種運(yùn)算,而且如果將卷積中的乘法和加法運(yùn)算,分別換成比較運(yùn)算和布爾運(yùn)算中的“與”運(yùn)算,那么卷積問題就換成了圖像匹配問題。如果將乘法運(yùn)算改為加減法,將累加運(yùn)算改為取最大、最小值,就可以完成灰度圖像的膨脹和腐蝕運(yùn)算,這對于進(jìn)行玻璃缺陷檢測是有著極大幫助的。
3 結(jié) 語
這里闡述了一種基于FPGA的玻璃缺陷圖像采集處理系統(tǒng)方案,給出了具體的應(yīng)用和設(shè)計(jì)框圖,它體積小、系統(tǒng)集成度高,能有效地對圖像進(jìn)行高速采集處理。系統(tǒng)中采用的圖像數(shù)據(jù)卷積算法,大大減輕DSP后期數(shù)據(jù)處理的壓力,在研究過程中表明,采用FPGA實(shí)現(xiàn)圖像低層次算法,設(shè)計(jì)者必須非常了解FPGA器件內(nèi)部的資源,同時系統(tǒng)中涉及到時鐘信號、RAM、PCI接口等各種器件,大量復(fù)用的數(shù)據(jù)、地址線要求設(shè)計(jì)者必須精心考慮邏輯結(jié)構(gòu)和功能時序才能充分發(fā)揮出FPGA的功能,取得理想的應(yīng)用效果。