馬 禮,趙曉偉,李德江*
(1.中國(guó)地質(zhì)大學(xué)(北京)信息工程學(xué)院,北京 100083;2.黑龍江省測(cè)繪科學(xué)研究所,黑龍江 哈爾濱 150081)
視覺(jué)定位技術(shù)[1-3]是智能機(jī)器人自主導(dǎo)航的關(guān)鍵技術(shù)之一,在各類工程中具有迫切的需求和廣闊的應(yīng)用價(jià)值?;谟?jì)算機(jī)視覺(jué)的目標(biāo)定位是近年來(lái)發(fā)展起來(lái)的一種定位方法[4],是利用視覺(jué)傳器獲取物體圖像,然后用計(jì)算機(jī)進(jìn)行圖像處理,進(jìn)而獲得物體的位置信息?,F(xiàn)有的室內(nèi)定位技術(shù)[5-7],測(cè)量方法大多受測(cè)量精度或室內(nèi)信號(hào)強(qiáng)度的限制,無(wú)法真正滿足現(xiàn)代化生產(chǎn)對(duì)高精度、大尺寸三維整體現(xiàn)場(chǎng)測(cè)試技術(shù)需求,因此,多目視覺(jué)方法[8-10]應(yīng)運(yùn)而生。多目視覺(jué)定位技術(shù)不依賴于內(nèi)置信源和天然信源,不受信源信號(hào)強(qiáng)弱的影響,并且具有非接觸、自動(dòng)化、效率高等優(yōu)點(diǎn),具有很高的實(shí)用價(jià)值[11]。本文基于攝影測(cè)量與機(jī)器視覺(jué)理論,提出一種基于多目視覺(jué)的標(biāo)記點(diǎn)定位方法,最后通過(guò)實(shí)驗(yàn)驗(yàn)證了本研究算法的正確性和有效性,同時(shí)對(duì)本研究識(shí)別的橢圓誤差來(lái)源進(jìn)行了有效的分析。本研究能夠?yàn)橄嚓P(guān)室內(nèi)定位技術(shù)以及標(biāo)志點(diǎn)提取算法提供有價(jià)值的參考。
本文采用的環(huán)形編碼標(biāo)志具有結(jié)構(gòu)簡(jiǎn)單、提取容易、識(shí)別方便、精度高且穩(wěn)定等特點(diǎn)。標(biāo)志設(shè)計(jì)采用代表性的Schneider[12]等設(shè)計(jì)的環(huán)狀編碼方式:二進(jìn)制編碼原理。編碼帶上每個(gè)位置都可以作為二進(jìn)制的一位,再換算為十進(jìn)制,作為該編碼標(biāo)志的編碼數(shù),使每個(gè)編碼標(biāo)志都有唯一的數(shù)字與之相對(duì)應(yīng)。本文采用8位編碼帶環(huán)形編碼(CCT),并將編碼設(shè)計(jì)為對(duì)稱形狀,便于識(shí)別。編碼帶8等分,每個(gè)單元之間相隔45°,白色為1,黑色為0,以任意單元為起點(diǎn),組成的編碼環(huán)帶對(duì)應(yīng)的最小8位二進(jìn)制數(shù),就是該編碼標(biāo)號(hào)。按此方法,設(shè)計(jì)以下易于識(shí)別的編碼標(biāo)志點(diǎn),如圖1所示。
圖1 編碼標(biāo)志點(diǎn)
本研究環(huán)形編碼標(biāo)記點(diǎn)提取主要分為2個(gè)步驟:
1)檢測(cè)圖片中的所有圖斑,并篩選出可能為編碼標(biāo)志的中心圓。本文采用一種基于梯度和位置的橢圓檢測(cè)函數(shù),對(duì)原圖進(jìn)行初步檢測(cè)和篩選,以找到編碼標(biāo)志點(diǎn)中心圓可能存在的區(qū)域,從而減小基于梯度和位置檢測(cè)橢圓的檢測(cè)范圍。首先將圖像基于Otsu算法[18]二值化,然后利用以輪廓為基礎(chǔ)的橢圓檢測(cè)函數(shù)檢測(cè)圖中所有可能的橢圓。
2)進(jìn)行多次橢圓篩選。篩選出圓形在可接受傾角范圍(45°)內(nèi)的投影長(zhǎng)短軸之比范圍為1~1.6內(nèi)的橢圓,剔除2個(gè)圓心距離小于兩個(gè)圓中大圓半徑的大圓,剔除橢圓周圍連通域過(guò)小或者不存在連通域的橢圓,即不符合編碼標(biāo)志形態(tài)的橢圓剔除。最后對(duì)篩選出的可能的編碼標(biāo)志點(diǎn)中心圓進(jìn)行以梯度為基礎(chǔ)的橢圓檢測(cè),確定所有編碼標(biāo)志點(diǎn)的中心圓,并精確計(jì)算出其坐標(biāo)。首先以經(jīng)過(guò)第一步篩選的橢圓為中心,截取其周圍的一個(gè)矩形區(qū)域,作為橢圓檢測(cè)的目標(biāo)區(qū)域,再將基于梯度的橢圓檢測(cè)函數(shù)中的感興趣區(qū)域設(shè)為該矩形區(qū)域,以此類推,對(duì)所有目標(biāo)區(qū)域進(jìn)行橢圓檢測(cè)。
解碼過(guò)程可以分為以下幾步:
1)以中心圓的圓心為中心裁剪一個(gè)能覆蓋編碼標(biāo)志點(diǎn)的小圖像,對(duì)小圖像進(jìn)行輪廓提取得到每個(gè)白色區(qū)域輪廓的質(zhì)心(編碼環(huán)的質(zhì)心),從而得到“1”的個(gè)數(shù)。
2)計(jì)算所有編碼環(huán)的質(zhì)心與中心圓的質(zhì)心連線間的夾角,并且將這些夾角除以45°取整,從而得到“0”的個(gè)數(shù)。
3)將“1”和“0”組成的8位二進(jìn)制數(shù)循環(huán)移位得到編碼值。將相機(jī)采集到的圖像中編碼值相同的點(diǎn)對(duì)應(yīng)起來(lái),對(duì)CCT橢圓區(qū)域進(jìn)行仿射變換將其變?yōu)檎龍A。
4)得到仿射變換矩陣,計(jì)算仿射變換后的中心點(diǎn)坐標(biāo),該坐標(biāo)可以視為CCT中心坐標(biāo),得到CCT的3個(gè)半徑,8位編碼,轉(zhuǎn)45圈,每圈加一度,360°/N,以N為標(biāo)準(zhǔn)在2.5倍的圓環(huán)上均勻采樣,每一圈得到的編碼都轉(zhuǎn)換為最小編碼,調(diào)用解碼函數(shù),二進(jìn)制數(shù)轉(zhuǎn)換為最小整數(shù),進(jìn)行解碼。
首先對(duì)圖像進(jìn)行預(yù)處理,在復(fù)雜的圖像信息中提取出邊緣特征。使用Otsu閾值分割算法[13]對(duì)圖像進(jìn)行二值化,二值化后的圖像進(jìn)行輪廓提取,Roberts[14]邊緣提取方法,返回所有輪廓點(diǎn),方便后面做篩選。將邊緣提取細(xì)化后得到的二值圖像作為橢圓識(shí)別的基礎(chǔ)輸入數(shù)據(jù)。
由橢圓方程ax2+2bxy+cy2+2dx+2yf+1=0可知,至少需要5個(gè)方程才能夠解算出所有參數(shù)。傳統(tǒng)的隨機(jī)Hough變換[15]橢圓檢測(cè)方法是基于邊緣點(diǎn)位置,隨機(jī)選取橢圓上5個(gè)點(diǎn)以上求解橢圓方程,但是必須保證該5個(gè)點(diǎn)來(lái)自同一橢圓,否則會(huì)采樣到虛假橢圓,采樣無(wú)效,運(yùn)算效率較低。而三點(diǎn)橢圓檢測(cè)方法[16]會(huì)同時(shí)考慮到3個(gè)點(diǎn)的位置和梯度,基于兩點(diǎn)位置和梯度來(lái)確定一組橢圓,由第三點(diǎn)位置來(lái)橢圓組中確定一橢圓,梯度信息驗(yàn)證這三點(diǎn)是否是同一橢圓。因?yàn)檫@種驗(yàn)證機(jī)制,采樣有效性大大提高。但是隨機(jī)噪音和圖像像素化的影響,該方法在計(jì)算橢圓中心存在較大的誤差,且多橢圓檢測(cè)效率較低。本研究將結(jié)合2種橢圓檢測(cè)方法,設(shè)計(jì)同時(shí)基于梯度與位置來(lái)確定橢圓的算法,具體算法如下:
隨機(jī)選取N個(gè)點(diǎn)(N≥3),設(shè)這N個(gè)點(diǎn)的坐標(biāo)為(xi,yi)。i=1,2,3,4,…,N,代入橢圓方程得:
由此,可利用N個(gè)點(diǎn)的坐標(biāo)有N個(gè)方程。然后基于N個(gè)點(diǎn)梯度信息構(gòu)建方程組,fi為N個(gè)點(diǎn)中任意pi(xi,yi)處灰度值。
而橢圓方程的切線方向?yàn)椋?/p>
因?yàn)樘荻确较虼怪庇谇芯€方向可得:
將式(6)代入式(5),并將(xi,yi)的坐標(biāo)代入,可得:
這樣利用梯度信息也得到了N個(gè)方程。聯(lián)立式(4)和(7),便可利用最小二乘法得到橢圓方程的系數(shù)。橢圓的中心點(diǎn)坐標(biāo)(x0,y0)為:
長(zhǎng)軸平方a2為:
長(zhǎng)軸平方b2為:
沿逆時(shí)針?lè)较驈膞軸正方向旋轉(zhuǎn)到橢圓長(zhǎng)軸的角度θ為:
首先布設(shè)標(biāo)記點(diǎn),用手機(jī)拍攝照片,導(dǎo)入本文的標(biāo)記點(diǎn)識(shí)別系統(tǒng),先對(duì)圖片進(jìn)行灰度化和Otsu二值化處理,使標(biāo)記點(diǎn)在圖片中更突出地顯示。接下來(lái),根據(jù)編碼標(biāo)志點(diǎn)的識(shí)別算法步驟對(duì)編碼標(biāo)志點(diǎn)進(jìn)行橢圓檢測(cè)與識(shí)別。本文采用的中心圓識(shí)別算法中,圓形可接的傾角范圍為45°,長(zhǎng)短半軸之比在0~1.6。當(dāng)相機(jī)同時(shí)拍攝2個(gè)相互垂直的平面時(shí),這2個(gè)平面的45°相交平面互相平行。因此,此場(chǎng)景必須采用至少3個(gè)視角拍攝才能實(shí)現(xiàn)。此拍攝場(chǎng)景光線較暗,Otsu閾值設(shè)置較低(為70),拍攝距離為0.5 m左右,成像時(shí)橢圓比場(chǎng)景大,相應(yīng)地,將最小像素設(shè)置為30。依據(jù)上述實(shí)驗(yàn)步驟,分別在0.5 m、1 m、2 m不同距離下進(jìn)行3次拍攝測(cè)試,圖2~5為距離0.5 m下的測(cè)試過(guò)程圖。
為了進(jìn)一步驗(yàn)證本研究算法在復(fù)雜的室內(nèi)環(huán)境下的有效性和精確性,隨機(jī)選取室內(nèi)比較復(fù)雜的場(chǎng)景(電腦辦公桌)。同樣,此場(chǎng)景采用3視角拍攝Otsu閾值設(shè)置為60,拍攝距離為0.5 m左右,最小像素設(shè)置為30。依據(jù)上述測(cè)試實(shí)驗(yàn)步驟,在0.5 m距離下進(jìn)行3次拍攝測(cè)試,圖6為該測(cè)試下的過(guò)程圖。
圖6 橢圓檢測(cè)結(jié)果和標(biāo)記點(diǎn)編碼
以測(cè)試1為例,表1為測(cè)試1的檢測(cè)標(biāo)記點(diǎn)編碼及解算的中心圓圓心坐標(biāo)。
表1 檢測(cè)標(biāo)記點(diǎn)編碼及其中心圓圓心坐標(biāo)
結(jié)合圖2~6和表1可以看出,采用本文提出的室內(nèi)多目視覺(jué)標(biāo)記點(diǎn)定位算法,無(wú)需人工,能夠提高工作效率,且提取率較高。無(wú)論是單物體還是相對(duì)復(fù)雜的室內(nèi)環(huán)境,均可實(shí)現(xiàn)環(huán)形編碼標(biāo)記點(diǎn)的快速定位,快速的計(jì)算出檢測(cè)標(biāo)記點(diǎn)編碼及其中心圓圓心坐標(biāo)。
圖2 編碼標(biāo)志點(diǎn)成像
圖3 Otsu閾值分割二值化成像
圖4 識(shí)別的環(huán)形編碼帶
圖5 橢圓檢測(cè)結(jié)果和標(biāo)記點(diǎn)編碼
實(shí)現(xiàn)編碼標(biāo)志點(diǎn)的自動(dòng)提取的主要目的是提高自動(dòng)提取與定位的效率和精度,從而提高識(shí)別與定位效率。本文從精度提取率和誤差等方面對(duì)上述實(shí)驗(yàn)結(jié)果進(jìn)行分析。采用手動(dòng)橢圓提取為基于輪廓的橢圓中心檢測(cè),在同一橢圓尺寸、同一噪聲水平下進(jìn)行測(cè)試。
將本文算法提取的圓心坐標(biāo)與手動(dòng)提取的圓心坐標(biāo)進(jìn)行對(duì)比,定量分析坐標(biāo)提取的精度,如表2所示。
表2 提取圓心坐標(biāo)誤差分析
表2中,在拍攝距離為0.5 m時(shí),x、y坐標(biāo)平均誤差分別為0.019 5和0.021 5;中誤差為0.021 1和0.015 4,為0.01~0.02像素級(jí)別。由于實(shí)驗(yàn)材料有限,共有6個(gè)編碼點(diǎn),其中成功識(shí)別6個(gè),成功率為100%,識(shí)別成功率高,可以初步驗(yàn)證本算法的穩(wěn)定性。此外還進(jìn)行了另外30組實(shí)驗(yàn),提取率穩(wěn)定在90%以上。
本研究在同一橢圓、同一噪聲水平條件下,此算法的精度表現(xiàn)與拍攝距離有關(guān)。如圖7所示,當(dāng)拍攝距離為0.5 m、1 m、1.5 m、2 m、3 m時(shí),中心圓圓心坐標(biāo)提取中誤差按照0.01~0.04像素左右依次遞增。
圖7 拍攝距離與像素誤差
從圖7可知,拍攝距離越小,環(huán)形編碼標(biāo)記點(diǎn)在圖像中成像越大,中心圓圓心坐標(biāo)提取誤差越小,算法精度表現(xiàn)越好,拍攝距離與中心圓圓心坐標(biāo)提取中誤差呈現(xiàn)正相關(guān)關(guān)系。
本研究在實(shí)驗(yàn)過(guò)程中,發(fā)現(xiàn)拍攝角度為0°時(shí),即相機(jī)鏡頭和標(biāo)記點(diǎn)圖像相互平行時(shí),橢圓的識(shí)別率最高。而當(dāng)二者的角度大于45°時(shí),環(huán)形編碼標(biāo)記點(diǎn)中心圓投影橢圓變形過(guò)大,程序無(wú)法識(shí)別。為進(jìn)一步探討二者的關(guān)系,本研究將拍攝傾斜角度做按照0°~45°,間隔為1°進(jìn)行拍攝實(shí)驗(yàn),檢測(cè)橢圓識(shí)別率,如圖8所示。
圖8 拍攝角度與橢圓識(shí)別率
從圖8可知,拍攝角度越大,環(huán)形編碼標(biāo)記點(diǎn)中心圓投影橢圓的識(shí)別率越低,這樣勢(shì)必導(dǎo)致中心圓圓心坐標(biāo)提取誤差越大,算法精度表現(xiàn)越差,拍攝角度與中心圓圓心坐標(biāo)提取中誤差呈現(xiàn)負(fù)相關(guān)關(guān)系。對(duì)于此類標(biāo)記點(diǎn),可以采取調(diào)整相機(jī)位置或增加視覺(jué)點(diǎn)進(jìn)行拍攝后再次識(shí)別的方法來(lái)改善。
室內(nèi)光照的強(qiáng)弱同樣對(duì)橢圓檢測(cè)率有一定的干擾,也是誤差的來(lái)源之一,但是因?yàn)閷?shí)驗(yàn)條件限制,無(wú)法對(duì)光照進(jìn)行定量計(jì)算。結(jié)合本研究的實(shí)驗(yàn)經(jīng)驗(yàn)來(lái)看,室內(nèi)光照越強(qiáng),橢圓識(shí)別效果越差。這是因?yàn)楣庹諘?huì)導(dǎo)致灰度化后的圖像中亮圖斑多,易被系統(tǒng)識(shí)別為編碼中心圓。第二個(gè)原因是在二次橢圓篩選,計(jì)算平均橢圓大小時(shí)會(huì)將非橢圓圖斑的面積計(jì)算在內(nèi),導(dǎo)致最終識(shí)別結(jié)果出現(xiàn)誤差。
針對(duì)多目視覺(jué)定位技術(shù),本文主要對(duì)標(biāo)志點(diǎn)視覺(jué)定位和環(huán)形編碼標(biāo)志點(diǎn)的設(shè)計(jì)、檢測(cè)和識(shí)別等技術(shù)進(jìn)行研究,利用基于梯度和位置的橢圓檢測(cè)算法進(jìn)行實(shí)驗(yàn),最后做出精度驗(yàn)證和誤差分析。
1)本文編碼標(biāo)記點(diǎn)采用8位編碼帶環(huán)狀編碼的設(shè)計(jì),此類編碼標(biāo)記點(diǎn)具有結(jié)構(gòu)簡(jiǎn)單、提取容易、識(shí)別方便、精度高且穩(wěn)定等優(yōu)點(diǎn)。
2)在標(biāo)記點(diǎn)提取中最重要的步驟為橢圓識(shí)別,本文采用了一種基于梯度與位置的橢圓檢測(cè)方法,并在篩選出可能的橢圓圖斑后進(jìn)行多次篩選,保證提取橢圓的準(zhǔn)確度。
3)采用本文提出的室內(nèi)多目視覺(jué)標(biāo)記點(diǎn)提取算法,提取率較高,并且速度較快,能夠大大提高工作效率,實(shí)現(xiàn)環(huán)形編碼標(biāo)記點(diǎn)快速定位;環(huán)形編碼標(biāo)記點(diǎn)自動(dòng)提取獲取的圓心坐標(biāo)與標(biāo)記點(diǎn)實(shí)際圓心坐標(biāo)之間的中誤差均分布在0.05像素以下,說(shuō)明算法精度較高。