文/吳海游 孫艷娜 左弟俊
現(xiàn)場可編程邏輯器件(Field Programmable Gate Array ,FPGA)具有顯著的靈活性和可再編寫性等獨特的技術(shù)優(yōu)勢。目前,基于計算機軟件的圖像處理理論與后處理技術(shù)已經(jīng)非常成熟,但其不利于系統(tǒng)的實時化。相比于圖像采集的后處理、FPGA 不但能夠?qū)D像進(jìn)行實時處理、還能減小數(shù)據(jù)上傳壓力,具有非常重大的意義。
圖1:成像系統(tǒng)疵點處理原理框圖
在成像與跟蹤識別系統(tǒng)中,過多疵點不僅嚴(yán)重影響成像系統(tǒng)的成像質(zhì)量,而且還會引起對有效目標(biāo)的錯誤跟蹤與識別,因此非常有必要對圖像的疵點進(jìn)行處理。傳統(tǒng)方法是計算機軟件處理圖像疵點,整個過程需要開發(fā)計算機軟件,增加額外的數(shù)字圖像采集設(shè)備,而且該方法不適用于模擬成像系統(tǒng)。因此本文提出一種利用FPGA 在線處理疵點的方法,主要包括子圖劃分、疵點坐標(biāo)分時計算、排序與存儲、疵點流水線補償?shù)冗^程。
在成像系統(tǒng)中,針對不同的需求,圖像疵點判斷標(biāo)準(zhǔn)有細(xì)微的差別。但其主要思想和依據(jù)為:強光照條件下,將灰度偏離圖像平均灰度X1 的像素判定為疵點,在無光條件下,灰度高于平均灰度X2 的像素判定為疵點。一般來說,采用二維平面坐標(biāo)系來表示每個像素在圖像中的位置,即(x,y)來表示每個像素的位置。
圖2:疵點坐標(biāo)計算狀態(tài)轉(zhuǎn)換圖
圖3:疵點坐標(biāo)排序與存儲狀態(tài)轉(zhuǎn)換圖
圖4:圖像疵點補償時序圖
相對于計算機,F(xiàn)PGA 存儲資源有效,無法完整存儲一幅及以上的高分辨率圖像數(shù)據(jù),因此將分辨率為H x V 的圖像劃分為V/K 個子圖。每次計算出K 行圖像的疵點坐標(biāo)值并存儲至FPGA 片上的RAM1 中,直至計算出整幅圖像的疵點坐標(biāo)。然后將疵點坐標(biāo)順序存儲至RAM2 中,最后將所有疵點坐標(biāo)再存儲至FLASH 中,此時完成圖像疵點坐標(biāo)的計算、排序與存儲。成像系統(tǒng)每次上電啟動時,將FLASH 中存儲的疵點坐標(biāo)順序讀取至FPGA片上的RAM3 中,然后對圖像進(jìn)行實時處理,其原理框圖如圖1所示。
在疵點計算時,當(dāng)接收到疵點計算觸發(fā)開始指令后,將第一幀圖像的前K 行數(shù)據(jù)依次寫入RAM1 內(nèi)。當(dāng)?shù)? 幀圖像的前K 行到來時,依次讀出RAM1 中的數(shù)據(jù)加上第2 幀圖像對應(yīng)位置的像素灰度,并存儲至RAM1中,依次類推直至接收完M 幀圖像。本設(shè)計采用三段式同步有限狀態(tài)機來完成,其狀態(tài)轉(zhuǎn)移圖如圖2所示,主要包括以下9 個狀態(tài):
(1)空閑狀態(tài)(IDLE):若疵點計算開始信號到來,則狀態(tài)轉(zhuǎn)移至INIT 狀態(tài)。
(2)初始化狀態(tài)(INIT):初始化完成后進(jìn)入LIGHT_A 狀態(tài)。
(3)計算亮場平均灰度(LIGHT_A):使成像系統(tǒng)置于強光條件下,計算圖像平均灰度,狀態(tài)轉(zhuǎn)移至LIGHT_R 狀態(tài)。
(4)讀出亮場平均灰度(LIGHT_R):生成RAM1 的讀使能、讀地址信號,同時狀態(tài)轉(zhuǎn)移至LCOMP_W 狀態(tài)。
(5)亮場疵點坐標(biāo)寫入RAM(LCOMP_W):若vcnt ==V,則狀態(tài)轉(zhuǎn)移至WAIT 狀態(tài)。
(6)等待(WAIT):若暗場疵點計算開始信號到來,則狀態(tài)轉(zhuǎn)移至DARK_A 狀態(tài)。
(7)計算暗場場平均灰度(DARK_A):使成像系統(tǒng)置于無光條件下,計算圖像平均灰度,狀態(tài)轉(zhuǎn)移至DARK_R 狀態(tài)。
(8)讀出暗場平均灰度(DARK_R):生成RAM1 的讀使能、讀地址信號,同時狀態(tài)轉(zhuǎn)移至DCOMP_W 狀態(tài)。
(9)暗場疵點坐標(biāo)寫入RAM(DCOMP_W):若vcnt ==V,則狀態(tài)轉(zhuǎn)移至IDLE 狀態(tài),此時疵點坐標(biāo)信息計算完成。
當(dāng)疵點計算完成后,需要對疵點坐標(biāo)信息按從小到大的順序進(jìn)行排序,本設(shè)計中采用基于FPGA 的冒泡排序法對疵點坐標(biāo)信息進(jìn)行排序,同樣采用三段式同步有限狀態(tài)機來完成。其狀態(tài)轉(zhuǎn)移圖如圖3所示,主要包括以下6 個狀態(tài):
(1)空閑狀態(tài)(IDLE):若疵點計算完成信號到來,則狀態(tài)轉(zhuǎn)移至START 狀態(tài)。
(2)起始狀態(tài)(START):初始化RAM2的讀地址。
(3)比較后交換寫入RAM(SWAP_RAM):比 較RAM2 地 址addr 與addr+1 空間內(nèi)的數(shù)據(jù)data0 與data1,同時狀態(tài)轉(zhuǎn)移至ADDR_RAM 狀態(tài)。
(4)RAM 讀地址(ADDR_RAM):讀地址addr 加1,若RAM2 讀地址等于L-delta-1,狀態(tài)轉(zhuǎn)移至START 狀態(tài);若delta 等于L,狀態(tài)轉(zhuǎn)移至FLASH_W 狀態(tài);否則轉(zhuǎn)移至SWAP_RAM 狀態(tài)。
(5)FLASH 寫 入(FLASH_W):將RAM2 中的數(shù)據(jù)分包寫入FLASH 中,同時狀態(tài)轉(zhuǎn)移至WAIT。
(6)等待(WAIT):若RAM2 中數(shù)據(jù)全部寫入FLASH,則進(jìn)入IDLE 狀態(tài)。
在實時成像系統(tǒng)中采用流水線操作對疵點像素進(jìn)行處理。本設(shè)計中采用左替換的方法補償疵點像素,即若坐標(biāo)位置為(i,j)處像素是疵點像素,則利用坐標(biāo)(i,j-1)處像素替換該疵點像素,若(i,j-1)也為疵點像素,則利用(i,j-2)處像素替換,依次類推。其操作過程如圖4所示。
本設(shè)計的硬件平臺主要由ALTERA公司的FPGA 芯片5CEBA4U15I7 和On Semiconductor 公司的圖像傳感器芯片NOIP1SN1300A 構(gòu)成。疵點圖像得到了有效地補償處理,從而驗證了設(shè)計的正確性。
本設(shè)計提出關(guān)于圖像疵點坐標(biāo)計算、存儲與處理設(shè)計方法,能夠很好地解決圖像疵點對成像系統(tǒng)的不良影響,并且此設(shè)計在硬件平臺上得到充分驗證,可靠性高。