本發(fā)明屬于機器人和計算機視覺技術(shù)領(lǐng)域,更為具體地講,涉及一種基于Kinect2傳感器的室內(nèi)夜間視覺導航方法。
背景技術(shù):
導航技術(shù)是機器人的核心關(guān)鍵技術(shù)之一。隨著行業(yè)對機器人需求的不斷提出,機器人市場的蓬勃發(fā)展,不斷涌現(xiàn)出各類的導航技術(shù)?,F(xiàn)有的室內(nèi)導航定位技術(shù)主要分為基于視覺的傳感器和非視覺傳感器。采用視覺導航方式的優(yōu)勢在于價格低廉,容易消除累計誤差,但難以實現(xiàn)夜間定位。非視覺傳感器包括編碼器、慣性測量單元、激光、RFID、Wifi、藍牙、超寬帶等。非視覺傳感器對于光線沒有要求,可以工作在白天和黑夜,但編碼器、慣性測量單元容易產(chǎn)生累計誤差且無法消除;激光和超寬帶的精度高,但價格通常比較昂貴;RFID、Wifi、藍牙的定位精度不高,且需要分布式布點。
如前所述,視覺傳感器有非視覺傳感器不可比擬的優(yōu)勢,而視覺傳感器在室內(nèi)夜間移動平臺上通常不可用,原因如下:一方面,視覺傳感器對光照有要求,在無光或少光的情況下,通常需要增加曝光時間;另一方面,增長曝光時間會使得運動中的移動平臺采集到模糊圖像,極大地影響準確度。Kinect2是微軟公司推出的第二代體感感應器,主要采用Time of Flight的技術(shù)實現(xiàn),其深度信息是通過主動發(fā)射紅外光所獲得,獲得的紅外光同時可以產(chǎn)生輸出紅外圖像。當然,紅外圖像相對于普通RGB圖像來講,圖像對比度較弱,提取的特征明顯少于普通的RGB圖像,這增加了夜間視覺導航的難度,故不能直接轉(zhuǎn)移應用至RGB的視覺導航技術(shù)。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種基于Kinect2傳感器的室內(nèi)夜間視覺導航方法,基于Kinect2傳感器獲取的紅外圖像和深度圖像來實現(xiàn)可靠的室內(nèi)夜間視覺導航。
為實現(xiàn)上述發(fā)明目的,本發(fā)明基于Kinect2傳感器的室內(nèi)夜間視覺導航方法包括以下步驟:
S1:在室內(nèi)運動區(qū)域的機器人視野范圍內(nèi)搜索夜間紅外特征缺乏處,如果存在,則補充紅外特征圖案,否則不作任何操作;
S2:機器人在運動過程中,采用Kinect2傳感器獲取紅外圖像和深度圖像序列,并分別對紅外圖像和深度圖像進行預處理,其中紅外圖像采用圖像增強處理,深度圖像的預處理方法為:對深度圖像進行深度判斷,如果深度超過Kinect2傳感器的有效距離,將深度圖像中與Kinect2傳感器距離大于有效距離的點刪除,僅保留有效距離范圍內(nèi)的點;
S3:如果當前圖像序號t=1,進入步驟S4,否則進入步驟S5;
S4:對首幀紅外圖像進行紅外特征提取,得到紅外特征點,將各個紅外特征點信息放入紅外特征數(shù)據(jù)庫;記首幀的投影矩陣P1為:
其中,R1表示首幀的旋轉(zhuǎn)矩陣,T1表示首幀的平移矩陣;
采用首幀深度圖像初始化3D點云數(shù)據(jù)庫,形成3D地圖,將首幀所對應的機器人位置坐標作為坐標原點,然后返回步驟S2;
S5:對當前幀紅外圖像中進行紅外特征提取,得到紅外特征點,根據(jù)當前幀的深度圖像獲取紅外特征點對應的3D點,如果對應3D點存在,則不作任何操作,否則刪除該紅外特征點;
S6:如果步驟S5得到的紅外特征點數(shù)量大于預設閾值TH1,進入步驟S7,否則丟棄當前幀返回步驟S2;
S7:將當前幀的紅外特征點與紅外特征數(shù)據(jù)庫中的紅外特征點進行匹配,獲得匹配特征點對集合;并將當前幀的紅外特征點加入紅外特征數(shù)據(jù)庫中,對紅外特征數(shù)據(jù)庫進行更新;
S8:對于匹配特征點對集合中的每個特征點對(It,I*),其中It表示當前幀紅外圖像的紅外特征點,I*表示紅外特征點It在紅外特征數(shù)據(jù)庫中的匹配特征點,根據(jù)當前幀的深度圖像獲取紅外特征點It對應的3D點X,利用匹配特征點I*對應幀的投影矩陣P*對3D點X進行投影得到對應的二維坐標x′=aP*X,其中a表示尺度因子;計算二維坐標x′與紅外特征點It在當前幀紅外圖像中的二維坐標x的距離,如果該距離小于預設閾值TH2,則保留,否則將該匹配特征點對作為外點去除;
S9:根據(jù)步驟8得到的匹配特征點對集合,獲取當前幀對應的旋轉(zhuǎn)矩陣Rt和平移矩陣Tt,獲得當前幀對應的投影矩陣Pt=[Rt|Tt];
S10:根據(jù)旋轉(zhuǎn)矩陣Rt和平移矩陣Tt對當前幀的點云與現(xiàn)有3D地圖進行對齊,對當前幀3D點云與現(xiàn)有3D地圖進行拼接,實現(xiàn)3D地圖擴展,然后返回步驟S2。
本發(fā)明基于Kinect2傳感器的室內(nèi)夜間視覺導航方法,機器人在運動過程中采用Kinect2傳感器獲取紅外圖像和深度圖像序列,采用首幀紅外圖像的特征點對紅外特征數(shù)據(jù)庫進行初始化,采用首幀深度圖像初始化3D點云數(shù)據(jù)庫,然后在后續(xù)幀紅處圖像中提取紅外特征點,與紅外特征數(shù)據(jù)庫中的特征點進行匹配,與3D點云對應,去除外點,根據(jù)剩下的匹配特征點對獲取當前幀對應的旋轉(zhuǎn)矩陣Rt和平移矩陣Tt,并將當前幀的點云與現(xiàn)有3D地圖進行對齊與拼接,實現(xiàn)3D地圖擴展。本發(fā)明利用Kinect2傳感器獲取的紅外圖像,結(jié)合深度圖像,實現(xiàn)可靠性較高的機器人室內(nèi)夜間視覺導航。
附圖說明
圖1是本發(fā)明基于Kinect2傳感器的室內(nèi)夜間視覺導航方法的具體實施方式流程圖;
圖2是本實施例中所采用的紅外特征圖案示例圖;
圖3是本實施例中紅外圖像增強處理前后對比圖;
圖4是本實施例中采用本發(fā)明得到的3D地圖與機器人運動路徑圖;
圖5是本實施例中有光情況下基于彩色圖像得到的3D地圖與機器人運動路徑圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明的具體實施方式進行描述,以便本領(lǐng)域的技術(shù)人員更好地理解本發(fā)明。需要特別提醒注意的是,在以下的描述中,當已知功能和設計的詳細描述也許會淡化本發(fā)明的主要內(nèi)容時,這些描述在這里將被忽略。
實施例
圖1是本發(fā)明基于Kinect2傳感器的室內(nèi)夜間視覺導航方法的具體實施方式流程圖。如圖1所示,本發(fā)明基于Kinect2傳感器的室內(nèi)夜間視覺導航方法的具體步驟包括:
S101:在室內(nèi)運動區(qū)域內(nèi)按需補充紅外特征圖案:
在室內(nèi)運動區(qū)域的機器人視野范圍內(nèi)搜索夜間紅外特征缺乏處,例如大面白色墻體等,如果存在,則補充帶反光材質(zhì)或者帶吸收紅外顏色(如黑色)的紅外特征圖案,否則不作任何操作。
為了便于進行驗證測試,本實施例中自行搭建了一個家居實驗環(huán)境作為機器人的運動區(qū)域,在搭建時設置了較為豐富的紅外特征。圖2是本實施例中所采用的紅外特征圖案示例圖。如圖2所示,該特征圖案是具有較強對比的黑白色圖案,具有較為明顯的紅外特征。
S102:獲取紅外圖像和深度圖像:
機器人在運動過程中,采用Kinect2傳感器獲取紅外圖像和深度圖像序列,并分別對紅外圖像和深度圖像進行預處理。
紅外圖像的預處理為圖像增強處理,其目的是增強紅外圖像細節(jié)。紅外圖像增強處理的具體方法有很多,經(jīng)實驗發(fā)現(xiàn),本發(fā)明中采用冪律函數(shù)或指數(shù)函數(shù)進行圖像增強處理效果較好。本實施例中選用冪律函數(shù)進行紅外圖像增強,即紅外圖線每個像素點采用c·rγ以拉伸暗區(qū)域,其中r表示像素值,c、γ分別是冪律函數(shù)的參數(shù),本實施例中設置c=1000、γ=0.4。圖3是本實施例中紅外圖像增強處理前后對比圖。如圖3所示,經(jīng)過圖像增強處理后,紅外圖像中的細節(jié)信息更加清晰,更有利于后續(xù)紅外特征的提取。
對深度圖像的預處理方法為:對深度圖像進行深度判斷,如果深度超過Kinect2傳感器的有效距離(目前為4.5m),直接截取深度圖像,即將深度圖像中與Kinect2傳感器距離大于有效距離的點刪除,僅保留有效距離范圍內(nèi)的點。
S103:判斷是否當前圖像序號t=1,如果是,進入步驟S104,否則進入步驟S105。
S104:數(shù)據(jù)庫初始化:
采用首幀紅外圖像和深度圖像對紅外特征數(shù)據(jù)庫進行初始化,其具體方法為:對首幀紅外圖像進行紅外特征提取,得到紅外特征點,將各個紅外特征點信息放入紅外特征數(shù)據(jù)庫。目前行業(yè)內(nèi)已提出多種適用于紅外圖像的圖像特征,本實施例中選用ORB(Oriented FAST and Rotated BRIEF)特征。
記首幀的投影矩陣P1為:
其中,R1表示首幀的旋轉(zhuǎn)矩陣,T1表示首幀的平移矩陣。
采用首幀深度圖像初始化3D點云數(shù)據(jù)庫,形成3D地圖,將首幀所對應的機器人位置坐標作為坐標原點,然后返回步驟S102。
S105:提取紅外特征點:
對當前幀紅外圖像中進行紅外特征提取,得到紅外特征點,根據(jù)當前幀的深度圖像獲取紅外特征點對應的3D點,如果對應3D點存在,則不作任何操作,如果對應3D點不存在,即已在步驟S1的深度圖像預處理中被刪除,則刪除該紅外特征點。
S106:判斷當前幀是否為關(guān)鍵幀,即判斷步驟S105得到的紅外特征點數(shù)量是否大于預設閾值TH1,該閾值是根據(jù)運動區(qū)域內(nèi)紅外特征的具體情況以及圖像大小來確定的,本實施例中設置TH1=15,如果是,進入步驟S107,否則丟棄當前幀,返回步驟S102。
S107:紅外特征點匹配與數(shù)據(jù)庫更新:
將當前幀的紅外特征點與紅外特征數(shù)據(jù)庫中的紅外特征點進行匹配,獲得匹配特征點對集合。將當前幀的紅外特征點加入紅外特征數(shù)據(jù)庫中,對紅外特征數(shù)據(jù)庫進行更新。
S108:外點去除:
對于匹配特征點對集合中的每個特征點對(It,I*),其中It表示當前幀紅外圖像的紅外特征點,I*表示紅外特征點It在紅外特征數(shù)據(jù)庫中的匹配特征點,根據(jù)當前幀的深度圖像獲取紅外特征點It對應的3D點X,利用匹配特征點I*對應幀的投影矩陣P*對3D點X進行投影得到對應的二維坐標x′=aP*X,其中a表示尺度因子。然后計算二維坐標x′與紅外特征點It在當前幀紅外圖像中的二維坐標x的距離,如果該距離小于預設閾值TH2,則保留,否則將該匹配特征點對作為外點去除。閾值TH2是根據(jù)實際情況來設置的,本實施例中設置TH2=20。
S109:獲取旋轉(zhuǎn)矩陣和平移矩陣:
根據(jù)步驟108外點去除處理后的匹配特征點對集合,獲取當前幀對應的旋轉(zhuǎn)矩陣Rt和平移矩陣Tt,也就是當前幀的相機姿態(tài),顯然根據(jù)旋轉(zhuǎn)矩陣Rt和平移矩陣Tt就可以獲得當前幀對應的投影矩陣Pt=[Rt|Tt]。本實施例中采用BundleAdjustment束調(diào)整優(yōu)化方法來獲取旋轉(zhuǎn)矩陣Rt和平移矩陣Tt,該旋轉(zhuǎn)矩陣Rt和平移矩陣Tt即為機器人當前的絕對坐標。
S110:3D地圖擴展:
根據(jù)旋轉(zhuǎn)矩陣Rt和平移矩陣Tt對當前幀的點云與現(xiàn)有3D地圖進行對齊,對當前幀3D點云與現(xiàn)有3D地圖進行拼接,實現(xiàn)3D地圖擴展,然后返回步驟S102。通過3D地圖擴展,從而隨著機器人的前進,逐漸形成整個運動區(qū)域的3D地圖,直到機器人停止導航。
為了更好地說明本發(fā)明的技術(shù)效果,在本實施例中采用本發(fā)明與普通有光情況下基于彩色圖像的室內(nèi)視覺導航方法進行對比實驗驗證。圖4是本實施例中采用本發(fā)明得到的3D地圖與機器人運動路徑圖。圖5是本實施例中有光情況下基于彩色圖像得到的3D地圖與機器人運動路徑圖。如圖4和圖5所示,圖中的白色點為3D地圖,黑色曲線為機器人運動路徑。對比圖4和圖5可知,采用本發(fā)明在室內(nèi)夜間環(huán)境下所得到的3D地圖和機器人運動路徑,其效果和準確度已經(jīng)非常接近普通有光情況下基于采用彩色圖像的室內(nèi)視覺導航所得到的結(jié)果,可見本發(fā)明通過結(jié)合紅外圖像和深度圖像,能夠在室內(nèi)夜間環(huán)境下得到較為準確的導航信息,實現(xiàn)可靠性較高的機器人室內(nèi)夜間視覺導航。
盡管上面對本發(fā)明說明性的具體實施方式進行了描述,以便于本技術(shù)領(lǐng)域的技術(shù)人員理解本發(fā)明,但應該清楚,本發(fā)明不限于具體實施方式的范圍,對本技術(shù)領(lǐng)域的普通技術(shù)人員來講,只要各種變化在所附的權(quán)利要求限定和確定的本發(fā)明的精神和范圍內(nèi),這些變化是顯而易見的,一切利用本發(fā)明構(gòu)思的發(fā)明創(chuàng)造均在保護之列。