基于FPGA的結(jié)構(gòu)光圖像中心線提取
摘要:在線結(jié)構(gòu)光視覺三維測(cè)量系統(tǒng)中,為了實(shí)現(xiàn)對(duì)結(jié)構(gòu)光圖像線條紋中心的實(shí)時(shí)高精度提取,本文采用了極值法、閾值法和灰度重心法相結(jié)合的中心線提取方法。利用現(xiàn)場(chǎng)可編程門陣列器件(FPGA)的流水線技術(shù)以及并行技術(shù)的硬件設(shè)計(jì)來完成運(yùn)算,保證了光條紋中心點(diǎn)的實(shí)時(shí)準(zhǔn)確提取。實(shí)驗(yàn)表明采用FPGA 實(shí)現(xiàn)圖像處理的專用算法能滿足圖像數(shù)據(jù)進(jìn)行實(shí)時(shí)準(zhǔn)確提取的要求。
本文引用地址:http://cafeforensic.com/article/274762.htm引言
隨著測(cè)控技術(shù)及數(shù)字圖像處理技術(shù)的高速發(fā)展,基于三角法線結(jié)構(gòu)光的三維測(cè)量具有高精度、非接觸、實(shí)時(shí)性和強(qiáng)主動(dòng)受控性的特性,因此在現(xiàn)實(shí)中有廣泛的應(yīng)用,尤其是在計(jì)算機(jī)視覺、醫(yī)療診斷和工業(yè)檢測(cè)等領(lǐng)域應(yīng)用價(jià)值日漸增強(qiáng)。在結(jié)構(gòu)光檢測(cè)系統(tǒng)中,利用CCD相機(jī)以及工業(yè)相機(jī)攝取用線結(jié)構(gòu)平面激光照射照在物體表面形成的光條紋中心信息,然后根據(jù)光條紋中心偏移量進(jìn)行三維定標(biāo),這樣可以得到物體表面的各類信息,比如表面的缺陷以及形變等。有鑒于此,線結(jié)構(gòu)光條中心信息的圖像處理在測(cè)量過程中就顯得十分關(guān)鍵[1-3]。雖然目前結(jié)構(gòu)光中心線的提取方法有許多種,比如:閾值法、極值法、灰度重心法、方向模板法、Hessian矩陣法等[4-6],這些方法都有各自的優(yōu)缺點(diǎn)以及一定的應(yīng)用范圍?;跀?shù)字圖像處理的特點(diǎn)是處理的數(shù)據(jù)量非常大,處理非常耗時(shí)。所以本文研究了在FPGA上用硬件描述語言實(shí)現(xiàn)圖像的中心線提取算法,采用了極值法、閾值法和重心法相結(jié)合的中心線提取方法。通過功能模塊的硬件化,以便高速提取結(jié)構(gòu)光中心線。結(jié)果表明,實(shí)驗(yàn)系統(tǒng)達(dá)到了基于視頻速度的應(yīng)用要求。
1 系統(tǒng)硬件設(shè)計(jì)
圖1為光條中心線提取系統(tǒng)的硬件設(shè)計(jì)框圖。整個(gè)中心線提取系統(tǒng)主要有四個(gè)組成部分:
(1)視頻數(shù)據(jù)編碼模塊:編碼器采用ANALOG DEVICES公司的ADV7179芯片,該編碼器能實(shí)現(xiàn)ITU—R BT601/BT656 YCrCb(其比例為4:2:2)格式的數(shù)字信號(hào)轉(zhuǎn)為NTSC/PAL摸擬視頻輸出信號(hào);
(2)DDR2 SDRAM存儲(chǔ)器控制模塊:選用兩片MICRON公司的MT47H64M16 DDR2存儲(chǔ)器來實(shí)現(xiàn)圖像幀數(shù)的交叉緩存,為后面的中心線提取提供像素值以及坐標(biāo)值;
(3)中心線提取模塊:FPGA采用的是Altera公司Cyclone III系列的EP3C40F484C6芯片,該芯片價(jià)格低廉、實(shí)用性強(qiáng),能充分發(fā)揮芯片的并行計(jì)算能力,實(shí)現(xiàn)中心線的快速提取;
(4)視頻數(shù)據(jù)編解碼模塊:解碼器采用TEXAS INSTRUMENT 公司的TVP5150芯片,該芯片低功耗,能解決視頻輸入輸出同步問題,而且輸出型號(hào)的特性可以通過I2C串行接口進(jìn)行編程配置。
整個(gè)系統(tǒng)從CCD攝像機(jī)接收的模擬視頻信號(hào)通過視頻解碼芯片解碼后,轉(zhuǎn)換成BT656(4:2:2)YCbCr SDTV(標(biāo)清)格式的數(shù)字視頻信號(hào),通過一個(gè)FIFO來進(jìn)行行/場(chǎng)消隱、解出同步信息等操作,之后提取圖像信息的Y(亮度值)分量,然后在數(shù)據(jù)上傳輸。對(duì)于圖像的傳送采用兩片DDR2來進(jìn)行奇偶兩場(chǎng)傳送;同時(shí)對(duì)視頻解碼器輸出的同步信號(hào)進(jìn)行檢測(cè)。當(dāng)有效數(shù)據(jù)到來時(shí),F(xiàn)PGA選擇一片DDR2,使用隔行存儲(chǔ)方式,完成一幀圖像的存儲(chǔ),當(dāng)?shù)诙瑘D像有效數(shù)據(jù)到來時(shí),F(xiàn)PGA選擇另一片DDR2,以相同的方式完成第二幀圖像的存儲(chǔ),依次交叉存儲(chǔ),然后經(jīng)內(nèi)部的處理模塊處理后得到圖像光帶中心線坐標(biāo)[8]。將提取的一行中心線坐標(biāo)存儲(chǔ)在RAM里面,再經(jīng)過視頻編碼器將數(shù)字視頻信號(hào)轉(zhuǎn)換成模擬視頻信號(hào)輸出到顯示終端顯示。
2 算法的FPGA實(shí)現(xiàn)
2.1 算法流程
我們首先以列掃描的方式讀出一幀數(shù)據(jù),并將讀出的亮度值與所設(shè)定的閾值進(jìn)行比較。濾除不需要的點(diǎn),然后通過像素值比較得到像素值最大點(diǎn),之后用最大點(diǎn)周邊的3*3鄰接點(diǎn)來進(jìn)行灰度重心法計(jì)算出光條中心點(diǎn)。具體做法如下:
(1)由于光帶圖像中的亮點(diǎn)太多,所以對(duì)讀出的像素值與設(shè)定的閾值進(jìn)行比較,濾除雜點(diǎn);
(2)對(duì)大于閾值的點(diǎn)進(jìn)行比較,找到亮度值最大的點(diǎn)及其周邊3*3鄰域點(diǎn);
(3)然后,對(duì) 分別運(yùn)用(1)式求得其亞像素坐標(biāo):
(1)
2.2 存儲(chǔ)單元
對(duì)于算法的實(shí)現(xiàn),還要考慮圖像數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。這其中包括:點(diǎn)存儲(chǔ)器,用來存儲(chǔ)需要運(yùn)算的單個(gè)像素點(diǎn);行存儲(chǔ)器,用來緩存需要運(yùn)算的圖像的一行像素點(diǎn);幀存儲(chǔ)器,用來存儲(chǔ)整幀圖像。一般幀存儲(chǔ)器都需要很大的容量,而FPGA內(nèi)部實(shí)現(xiàn)起來比較困難,所以FPGA板都會(huì)增加外部存儲(chǔ)器,由外部的DDR2 SDRAM 芯片實(shí)現(xiàn)[9];為了使進(jìn)行運(yùn)算的領(lǐng)域9個(gè)3*3的像素點(diǎn)能在同一時(shí)鐘輸出,便于進(jìn)行之后的流水線算法模塊,因此在3*3的滑動(dòng)窗的硬件設(shè)計(jì)中,本文采用了2個(gè)RAM存儲(chǔ)器來進(jìn)行行存儲(chǔ)。具體操作是:先用兩個(gè)RAM存儲(chǔ)器存儲(chǔ)兩行數(shù)據(jù),等到第三行到來時(shí),再將前兩行的數(shù)據(jù)讀出來,之后用9個(gè)寄存器存儲(chǔ)這9個(gè)數(shù)據(jù),以保證數(shù)據(jù)的同時(shí)獲取[10]。存儲(chǔ)結(jié)構(gòu)見圖2所示。
這樣,當(dāng)圖像像素點(diǎn)串行輸入時(shí),經(jīng)過這種結(jié)構(gòu)的存儲(chǔ)器系統(tǒng),即可得到相應(yīng)點(diǎn)進(jìn)行灰度重心法計(jì)算所需的所有鄰域點(diǎn)的并行輸出。
fpga相關(guān)文章:fpga是什么
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
評(píng)論