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