杜 睿,段發(fā)階,李 遙,傅 驍
(1.天津大學(xué),精密測(cè)試技術(shù)及儀器國(guó)家重點(diǎn)實(shí)驗(yàn)室,天津 300072;2.中國(guó)船舶工業(yè)系統(tǒng)工程研究院,北京 100861)
隨著智能制造水平的提高,空間點(diǎn)坐標(biāo)測(cè)量的作用日益凸顯?;跈C(jī)器視覺的測(cè)量方法由于具有使用靈活、精度較高且非接觸等優(yōu)點(diǎn),成為研究熱點(diǎn)[1-6]。然而,傳統(tǒng)面陣相機(jī)最高幀率僅約數(shù)百Hz,限制了其在高頻測(cè)量領(lǐng)域的應(yīng)用。正交分光成像系統(tǒng)是近年來出現(xiàn)的一種結(jié)構(gòu)新穎的光學(xué)測(cè)量裝置,其包含球面鏡、柱面鏡等光學(xué)結(jié)構(gòu)與2套正交放置的線陣電荷耦合器件(線陣CCD)傳感器。當(dāng)成像系統(tǒng)拍攝光點(diǎn)時(shí),光點(diǎn)在2套線陣CCD傳感器上形成的光斑峰值坐標(biāo),可等效于面陣相機(jī)中成像點(diǎn)的x、y軸坐標(biāo)。
正交分光成像系統(tǒng)在高頻動(dòng)態(tài)坐標(biāo)測(cè)量領(lǐng)域具有獨(dú)特優(yōu)勢(shì)。一方面,由于其使用2套線陣CCD傳感器代替面陣傳感器,因此幀率遠(yuǎn)高于普通面陣相機(jī);另一方面,線陣CCD中光斑峰值位置提取速度高于面陣CCD,使得圖像處理效率極大提升。因此正交分光成像系統(tǒng)在高頻測(cè)量領(lǐng)域具有普通面陣相機(jī)無可比擬的優(yōu)勢(shì)。
目前,國(guó)內(nèi)外對(duì)基于線陣相機(jī)的坐標(biāo)測(cè)量已經(jīng)開展了諸多研究[7-9],但針對(duì)正交分光成像系統(tǒng)中采用的光學(xué)結(jié)構(gòu),國(guó)外尚未見相關(guān)報(bào)道。國(guó)內(nèi)天津大學(xué)對(duì)該成像系統(tǒng)進(jìn)行了較深入的研究[10],劉昕彤采用正交分光成像系統(tǒng),對(duì)剛體上多光點(diǎn)進(jìn)行成像,通過對(duì)成像位置的解算,完成剛體的位姿測(cè)量[11];劉海慶等使用多臺(tái)系統(tǒng),搭建正交分光成像系統(tǒng)網(wǎng)絡(luò),通過立體視覺原理,實(shí)現(xiàn)對(duì)空間點(diǎn)的三維坐標(biāo)測(cè)量[12]。但上述文獻(xiàn)中,正交分光成像系統(tǒng)均采用商業(yè)線陣CCD相機(jī)搭建,相機(jī)將采集的整幀圖像上傳。上位機(jī)對(duì)圖像中光斑峰值的亞像素級(jí)位置進(jìn)行提取。這種情況下,單幀圖像數(shù)據(jù)處理時(shí)間長(zhǎng)于單幀圖像生成時(shí)間,使得亞像素級(jí)光斑坐標(biāo)難以實(shí)時(shí)獲取,影響成像系統(tǒng)使用時(shí)的測(cè)量效率。
為解決此問題,本文采用現(xiàn)場(chǎng)可編程門陣列(FPGA)作為主控制器,搭建了正交分光成像系統(tǒng)。完成圖像采集后,在FPGA內(nèi)部通過模板匹配、閾值比較、曲線擬合等步驟,實(shí)現(xiàn)了多光斑峰值的實(shí)時(shí)亞像素定位,大幅減少了上位機(jī)數(shù)據(jù)處理壓力,提升了測(cè)量效率。
正交分光成像系統(tǒng)結(jié)構(gòu)如圖1所示。其主要包含球面鏡組、柱面鏡組、分光棱鏡、線陣CCD等部分。成像時(shí),入射光經(jīng)球面鏡組后,出射成為平行光束。平行光束進(jìn)入50∶50分光棱鏡后,部分光束按原方向出射,其余光束被折射90°后出射,即原本的平行光束被平分至正交方向。正交方向上均放置柱面鏡組。柱面鏡在平行于母線方向上等效于平行平板,在垂直于母線方向上等效于球面透鏡。當(dāng)平行光束入射至柱面鏡組后,被柱面鏡組在垂直于母線方向上壓縮,成為垂直于母線方向的光斑。線陣CCD置于柱面鏡組之后,且與柱面鏡母線平行。正交方向上光束形成的光斑在2套線陣CCD上成像,成像位置可等效于光點(diǎn)在面陣相機(jī)相面上的橫縱坐標(biāo)。
圖1 正交分光成像系統(tǒng)結(jié)構(gòu)示意圖
正交分光成像系統(tǒng)內(nèi)部包含2套獨(dú)立的線陣CCD傳感器,為提高數(shù)據(jù)處理速度,采用FPGA作為主控制器,整體電路結(jié)構(gòu)如圖2所示。FPGA驅(qū)動(dòng)線陣CCD與A/D芯片獲取圖像,F(xiàn)PGA內(nèi)部對(duì)圖像中的峰值進(jìn)行亞像素提取后,經(jīng)FIFO緩存后通過以太網(wǎng)與交換機(jī)傳入上位機(jī),2套線陣CCD之間通過同步信號(hào)互連。
圖2 正交分光成像系統(tǒng)結(jié)構(gòu)示意圖
選用TCD1209D型線性CCD傳感器。暗黑條件下正交分光成像系統(tǒng)對(duì)8個(gè)共線等距、豎直平面內(nèi)斜45°放置的LED光源成像,正交分光成像系統(tǒng)中2套線陣CCD輸出圖像如圖3所示。圖中橫軸為各像素位置,縱軸為各像素輸出模擬信號(hào)經(jīng)A/D轉(zhuǎn)換后的強(qiáng)度。由圖3可知,光斑波形是比較理想的單峰圖像,光點(diǎn)成像效果良好。
(a)x軸
亞像素計(jì)算是提升成像系統(tǒng)分辨率的有效方式。其中質(zhì)心法是應(yīng)用廣泛的亞像素提取方法,其原理是對(duì)某個(gè)閾值之上的像素按像素值進(jìn)行加權(quán),將求得的質(zhì)心坐標(biāo)作為中心坐標(biāo)[13]。然而使用FPGA進(jìn)行峰值亞像素坐標(biāo)提取時(shí),質(zhì)心法存在明顯的缺點(diǎn)。質(zhì)心法能夠取得較好效果的前提,是參與計(jì)算的像素可以基本反映峰值整體分布情況。正交分光成像系統(tǒng)中光斑整體寬度約20像素,則至少需要光斑峰值左右共15像素參與運(yùn)算,這將導(dǎo)致參與運(yùn)算的像素較多,面積與速度兩方面因素難以平衡。
為減少參與運(yùn)算的像素?cái)?shù),本文主要使用曲線擬合法進(jìn)行峰值定位。一般情況下,可直接以峰值像素為中心,對(duì)附近像素進(jìn)行高斯或二次曲線擬合,根據(jù)擬合結(jié)果得到峰值亞像素位置。然而實(shí)際實(shí)驗(yàn)中發(fā)現(xiàn),正交分光成像系統(tǒng)中,光斑峰值處的2個(gè)像素?cái)?shù)值極為接近,受噪聲影響,這2個(gè)像素?cái)?shù)值將不存在確定的大小關(guān)系。若直接以最大像素為中心進(jìn)行擬合,即使在目標(biāo)點(diǎn)靜止的情況下,連續(xù)多幀圖像的擬合中心間會(huì)存在1像素的偏差,使得擬合結(jié)果出現(xiàn)較大的波動(dòng),重復(fù)定位誤差增大。
為解決這一問題,在擬合之前,首先對(duì)圖像進(jìn)行模板匹配。設(shè)計(jì)與光斑強(qiáng)度分布相近的模板,使用模板與圖像進(jìn)行互相關(guān)運(yùn)算,在光斑位置處即可得到穩(wěn)定銳利的單峰圖像。相關(guān)峰的位置為模板出現(xiàn)在圖像中的位置,也反映了光斑峰值的像素級(jí)位置,實(shí)現(xiàn)了光斑峰值的粗定位。接著對(duì)相關(guān)峰進(jìn)行高斯擬合,高斯曲線的峰值位置即可作為光斑中心的亞像素級(jí)位置。FPGA數(shù)據(jù)處理過程如圖4所示,主要包括相關(guān)匹配、閾值比較與峰值檢測(cè)、RAM乒乓存儲(chǔ)、峰值位置擬合、FIFO數(shù)據(jù)緩存、以太網(wǎng)傳輸?shù)炔糠帧?/p>
圖4 FPGA數(shù)據(jù)處理過程示意圖
模板匹配采用互相關(guān)函數(shù)來評(píng)價(jià)模板與圖像之間的相似程度,表達(dá)式見式(1),其中G(n)為匹配模板,I(x)為對(duì)應(yīng)位置的像素值。由于相關(guān)操作僅需移位、乘、加的運(yùn)算,易于在FPGA內(nèi)部實(shí)現(xiàn)。
(1)
進(jìn)行互相關(guān)匹配之前,需針對(duì)匹配對(duì)象設(shè)計(jì)合理的匹配模板。對(duì)發(fā)光LED標(biāo)志點(diǎn)在各位置的成像波形分析后可知,其峰值處波形近似為高斯分布。對(duì)多個(gè)位置處的光斑統(tǒng)計(jì)發(fā)現(xiàn),標(biāo)準(zhǔn)差為2.63的高斯函數(shù)可對(duì)光斑進(jìn)行較好擬合。在上述標(biāo)準(zhǔn)差下,5點(diǎn)高斯模板如式(2)所示:
G(n)=(0.171 8,0.213 4,0.229 4,0.213 4,0.171 8)
(2)
FPGA進(jìn)行浮點(diǎn)數(shù)運(yùn)算時(shí)會(huì)消耗大量的邏輯資源,為節(jié)省硬件開銷,利用整數(shù)與移位操作對(duì)上述模板加以近似。近似結(jié)果如式(3)所示。誤差如表1所示。
表1 高斯模板近似結(jié)果
(3)
計(jì)算中模板與對(duì)應(yīng)位置的像素?cái)?shù)值相乘相加后,將結(jié)果右移8位即可。FPGA內(nèi)模板匹配部分的電路結(jié)構(gòu)如圖5所示,將像素移位、相乘、相加置于3條流水線上。經(jīng)時(shí)序分析,該電路最高運(yùn)行頻率達(dá)170 MHz,高于20 MHz的線陣CCD采樣頻率,不會(huì)造成數(shù)據(jù)阻塞的問題,可穩(wěn)定運(yùn)行。
圖5 FPGA相關(guān)運(yùn)算示意圖
實(shí)際情況下,正交分光成像系統(tǒng)同時(shí)對(duì)多光點(diǎn)進(jìn)行測(cè)量,線陣CCD圖像中將出現(xiàn)多處峰值。模板匹配后同樣出現(xiàn)多個(gè)峰值,因此無法通過查找最大像素值的方式進(jìn)行峰值位置定位。
由光斑信號(hào)的先驗(yàn)分布可知,圖像中光斑內(nèi)與暗處像素強(qiáng)度差異明顯,由于模板中各元素之和為1,因此互相關(guān)計(jì)算后,整體像素強(qiáng)度不會(huì)改變。因此通過設(shè)定閾值,將相關(guān)值與閾值實(shí)時(shí)比對(duì),即可判斷像素是否位于光斑內(nèi)。將閾值作為比較器的觸發(fā)電平,從而輸出圖6所示的窗口信號(hào)。FPGA對(duì)單個(gè)窗口內(nèi)的最大像素值進(jìn)行查找,從而得到峰值像素位置[14]。將峰值像素及左右各1個(gè)像素的像素值、像素位置存入RAM中,用于后續(xù)的光斑中心亞像素計(jì)算。
圖6 窗口信號(hào)示意圖
為保證數(shù)據(jù)處理實(shí)時(shí)性,閾值比較與亞像素計(jì)算將在FPGA內(nèi)并行進(jìn)行。采用乒乓操作完成數(shù)據(jù)的緩存與處理,保證了上述2個(gè)部分的彼此獨(dú)立。具體實(shí)現(xiàn)時(shí),將當(dāng)前幀中閾值比較與峰值像素提取后的數(shù)據(jù)存入RAM1內(nèi)。將下一幀的數(shù)據(jù)存入RAM2中,同時(shí)將RAM1中的數(shù)據(jù)輸入亞像素計(jì)算單元進(jìn)行計(jì)算。RAM1與RAM2中的數(shù)據(jù)通過乒乓操作交替計(jì)算。由于亞像素計(jì)算時(shí)長(zhǎng)小于接收一幀圖像的時(shí)間,因此一幀圖像經(jīng)過閾值提取后的數(shù)據(jù),會(huì)完整地進(jìn)入亞像素計(jì)算單元。
對(duì)模板匹配之后得到的峰值及周圍各一個(gè)像素進(jìn)行高斯擬合,高斯曲線的中心坐標(biāo)即代表整體峰值的亞像素位置。三點(diǎn)高斯擬合的中心坐標(biāo)計(jì)算方法見式(4),其中xm為擬合中心,即提取到的光斑亞像素位置,xi為像素位置,yi為xi對(duì)應(yīng)的像素強(qiáng)度。
(4)
由于xi-1、xi、xi+1為相鄰像素位置,因此式(4)可化簡(jiǎn)為
(5)
計(jì)算時(shí),整數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)、對(duì)數(shù)與浮點(diǎn)數(shù)加減乘除運(yùn)算均可調(diào)用對(duì)應(yīng)的IP核實(shí)現(xiàn)。計(jì)算過程如圖7所示。浮點(diǎn)數(shù)相除需6個(gè)時(shí)鐘周期,浮點(diǎn)數(shù)相乘需5個(gè)時(shí)鐘周期,對(duì)數(shù)計(jì)算需21個(gè)時(shí)鐘周期,浮點(diǎn)數(shù)加減需7個(gè)時(shí)鐘周期。根據(jù)浮點(diǎn)數(shù)編碼規(guī)則,浮點(diǎn)數(shù)第31~23位代表其指數(shù)部分,因此對(duì)該8位二進(jìn)制數(shù)加1、加2,即可實(shí)現(xiàn)式(5)中的乘2、乘4運(yùn)算。計(jì)算過程需要55個(gè)時(shí)鐘周期。光斑亞像素位置最終以32位單精度浮點(diǎn)數(shù)的格式輸出。
圖7 亞像素計(jì)算過程示意圖
在設(shè)計(jì)中,亞像素計(jì)算部分的時(shí)鐘頻率是像素采集頻率的5倍,因此對(duì)于像素采集部分來說,僅相當(dāng)于占用11個(gè)時(shí)鐘周期即可完成計(jì)算。由于光斑整體寬度約20個(gè)像素,即單個(gè)光斑需約20個(gè)時(shí)鐘周期才能完成采集,亞像素計(jì)算時(shí)間小于光斑采集時(shí)間,因此可實(shí)現(xiàn)光斑位置的實(shí)時(shí)提取。經(jīng)測(cè)算,亞像素計(jì)算部分共消耗11 356個(gè)LUT資源,約占FPGA整體資源的14.6%。
正交分光成像系統(tǒng)測(cè)試平臺(tái)如圖8所示。二維導(dǎo)軌帶動(dòng)LED標(biāo)志點(diǎn)在像面內(nèi)移動(dòng),正交分光成像系統(tǒng)將光點(diǎn)坐標(biāo)傳輸至上位機(jī)進(jìn)行分析。
圖8 正交分光成像系統(tǒng)測(cè)試平臺(tái)
良好的重復(fù)定位精度是進(jìn)行精密測(cè)量的前提。進(jìn)行重復(fù)定位實(shí)驗(yàn)時(shí),正交分光成像系統(tǒng)對(duì)4個(gè)位置處的靜止光點(diǎn)連續(xù)拍攝300幀圖像,統(tǒng)計(jì)成像系統(tǒng)直接輸出的亞像素坐標(biāo)。4個(gè)位置處x、y軸線陣CCD重復(fù)定位波動(dòng)曲線如圖9所示。
圖9 4點(diǎn)重復(fù)定位波動(dòng)曲線
統(tǒng)計(jì)結(jié)果見表2。根據(jù)統(tǒng)計(jì)結(jié)果,重復(fù)定位極差小于0.1像素,標(biāo)準(zhǔn)差為0.014像素,重復(fù)定位精度良好。
表2 4點(diǎn)重復(fù)定位精度統(tǒng)計(jì)結(jié)果 像素
分辨力測(cè)試用來對(duì)光斑亞像素提取效果進(jìn)行檢測(cè)。相機(jī)標(biāo)定后,導(dǎo)軌控制成像點(diǎn)沿x、y軸線陣CCD等距移動(dòng),取步距約合0.2像素長(zhǎng)度,連續(xù)前進(jìn)5步,之后再后退5步,共采集5 000張圖像。x、y軸線陣CCD輸出像點(diǎn)位置如圖10所示。取每個(gè)位置下的像素均值,作為該位置下的光斑坐標(biāo)。統(tǒng)計(jì)各相鄰位置的坐標(biāo)間隔均值與標(biāo)準(zhǔn)差,統(tǒng)計(jì)結(jié)果如表3所示。由表3可知,在步距長(zhǎng)度約為0.2像素時(shí),線陣CCD可準(zhǔn)確分辨,分辨力達(dá)到亞像素級(jí)別。
(a)x軸
表3 分辨力測(cè)試實(shí)驗(yàn)結(jié)果統(tǒng)計(jì) 像素
針對(duì)正交分光成像系統(tǒng)中光斑亞像素坐標(biāo)難以實(shí)時(shí)提取的問題,使用FPGA作為主控制器,通過模板匹配、閾值比較、曲線擬合等步驟,完成了正交分光成像系統(tǒng)中多光斑峰值亞像素坐標(biāo)的實(shí)時(shí)提取。通過實(shí)驗(yàn)對(duì)峰值亞像素提取效果進(jìn)行驗(yàn)證,結(jié)果表明峰值重復(fù)定位極差小于0.1像素,且分辨力達(dá)到亞像素級(jí)別。該方法減少了上位機(jī)的數(shù)據(jù)處理壓力,有效提升了正交分光成像系統(tǒng)使用過程中的測(cè)量效率。