本發(fā)明屬于視覺定位技術(shù)領(lǐng)域,尤其涉及一種室內(nèi)地圖構(gòu)建方法及基于室內(nèi)地圖的室內(nèi)定位方法。
背景技術(shù):
近年來國內(nèi)外的很多研究人員使用各種不同的傳感器和方法,對移動機器人的定位進行了深入的研究,移動機器人常用的傳感器有攝像機、激光雷達、超聲波、紅外線、陀螺儀、速度或加速度計等。其中超聲波、紅外線精度較差,一般僅僅用于緊急避障。激光雷達成本較高,不利于移動機器人的大范圍普及推廣。陀螺儀、指南針、速度或加速度計等一般只用作輔助的傳感器。攝像機相對于其它傳感器而言,能夠提供最豐富的信息,利用攝像機進行定位硬件成本低、定位精度高。在室內(nèi)定位中,基于視覺的定位方法被廣泛的應(yīng)用。
基于視覺的室內(nèi)定位方法首先是要構(gòu)建精確的室內(nèi)地圖,用于絕對坐標系下的攝像機姿態(tài)的計算以及機器人移動路徑的規(guī)劃。可以利用環(huán)境地標或人工路標來構(gòu)建地圖,但其中基于環(huán)境地標的方法雖然普適性較好,不需要人工布設(shè)額外的標志,但是計算復(fù)雜,實用性較差,而現(xiàn)有的基于人工路標大多是通過透視投影矩陣來實現(xiàn)室內(nèi)定位,在定位之前,需要在傳感器上安裝兩軸傾角儀算出兩個軸上的傾角,其次還要標定兩軸傾角儀與相機平面的誤差,因此,通過透視投影矩陣來實現(xiàn)室內(nèi)定位不僅操作復(fù)雜,且成本相對較高。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供一種基于室內(nèi)地圖的室內(nèi)定位方法,旨在解決通過透視投影矩陣來實現(xiàn)室內(nèi)定位不僅操作復(fù)雜,且成本相對較高的問題。
本發(fā)明是這樣實現(xiàn)的,一種室內(nèi)地圖構(gòu)建方法,所述方法包括如下步驟:
S1.提取當(dāng)前拍攝圖像中的路標,包括已知路標和未知路標;
S2.根據(jù)所述已知路標或未知路標中的路標點在圖像上的距離及路標點間的實際距離,計算相機到天花板的垂直距離H;
S3.根據(jù)所述相機到天花板的垂直距離H、內(nèi)參矩陣Matcam、及已知路標的路標點的像素坐標的齊次坐標及在地圖坐標系中的世界坐標的齊次坐標,計算仿射變換矩陣一;
S4.根據(jù)所述仿射變換矩陣一及未知路標的路標點的像素坐標、計算未知路標的路標點在地圖坐標系中的坐標;
已知路標為已納入地圖坐標系的路標,未知路標是指未納入地圖坐標系的路標。
本發(fā)明實施例提供了另一種基于室內(nèi)地圖的室內(nèi)定位方法,所述方法包括如下步驟:
S5.提取當(dāng)前拍攝圖像中的路標,判斷所述路標是否為已知路標;
S6.若判斷結(jié)果為是,則根據(jù)所述路標中的路標點在圖像上的距離及路標點間的實際距離計算相機到天花板的垂直距離H;
S7.根據(jù)所述垂直距離H、內(nèi)參矩陣Matcam、所述路標點在圖像中的坐標及在所述地圖坐標系中的平面坐標,計算仿射變換矩陣二;
S8.根據(jù)所述仿射變化矩陣二中的相機相對于所述地圖坐標系的旋轉(zhuǎn)矩陣Matrotat及平移向量Matt,計算相機中心在所述地圖坐標系中的平面坐標Xcam。
本發(fā)明實施例基于構(gòu)建的室內(nèi)地圖實現(xiàn)室內(nèi)定位,通過提取圖像中的路標,根據(jù)第一個路標中的路標點在圖像上的距離與路標點間的實際距離計算相機到天花板的垂直距離H,進而利用仿射變換矩陣確定相機中心在所述地圖坐標系中的位置,本技術(shù)方案只需根據(jù)相機拍攝的路標圖像即可計算出相機中心的位置,該定位方法不僅操作簡單,且成本相對較少。
附圖說明
圖1是本發(fā)明實施例提供的室內(nèi)地圖構(gòu)建方法的流程圖;
圖2是本發(fā)明實施例提供的基于室內(nèi)地圖的室內(nèi)定位方法的流程圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
圖1為本發(fā)明實施例提供的室內(nèi)地圖構(gòu)建方法的流程圖,該方法包括如下步驟:
S1.提取當(dāng)前拍攝圖像中的路標,包括已知路標和未知路標;
在本發(fā)明實施例中,地圖坐標系是指將室內(nèi)所有的路標系納入到統(tǒng)一的坐標系中,這里將其稱之為地圖坐標系,已知路標是指已納入地圖坐標系的路標,未知路標是指未納入地圖坐標系的路標,本發(fā)明實施例中的路標是指點陣式紅外路標,路標點按預(yù)定規(guī)則排列,路標貼附于室內(nèi)天花板上,路標的尺寸根據(jù)相機到天花板的距離而變化,由于攝像機的視角有限,不能涵蓋整個天花板,因此需要布置多個路標標簽來進行“接力”定位,因此為了識別和區(qū)別不同的路標將不同分布的路標點映射成一個唯一的ID號,通過ID號來識別和區(qū)分各個路標。
在本發(fā)明實施例中,提取當(dāng)前拍攝圖像中路標的方法具體包括如下步驟:
S11.根據(jù)標定得到的相機畸變參數(shù)對拍攝的圖像進行畸變矯正;
在發(fā)明實施例中,相機在使用前需要進行標定,得到相機的畸變參數(shù),根據(jù)畸變參數(shù)對采集的圖像進行畸變矯正,提高點位提取精度。
S12.計算畸變矯正后圖像的平均灰度值以作為二值化的閾值,對圖像進行二值化。
在本發(fā)明實施例中,對進行畸變矯正后的圖像進行灰度處理,計算平均灰度值由于平均值一般都比較小,二值化的時候噪聲多,因此,將平均灰度值乘以系數(shù)k(k>1)作為閾值,對圖像進行二值化,以減少噪音點的出現(xiàn)。
S13.利用像素點的形狀和像素點之間的距離約束提取路標點。
在本發(fā)明實施例中,利用像素點的形狀和像素點之間的距離約束提取路標點的步驟具體包括:
S131.對二值化后圖像中的白色像素塊進行橢圓擬合;
S132.獲取橢圓面積小于面積閾值,且擬合橢圓的長短軸之比位于設(shè)定區(qū)間內(nèi)的橢圓的中心;
在本發(fā)明實施例中,二值化后的圖像會存在若干個像素塊,對一個個的像素塊進行橢圓擬合,若擬合后的橢圓面積大于面積閾值,則該像素塊為噪聲,這樣的像素塊需要丟棄;面積閾值是根據(jù)相機的分辨率、光源強度、鏡頭的視場角等來設(shè)定的,且對于擬合后橢圓的短軸與長軸之比位于設(shè)定區(qū)間,該區(qū)間的范圍為大于0.5小于1。
S133.計算相互距離小于距離閾值的橢圓中心點的個數(shù)n(n為正整數(shù)),當(dāng)個數(shù)滿足3<n<m2(m≥3)時,將相互距離小于距離閾值的橢圓中心點作為路標的路標點。
在本發(fā)明實施例中,橢圓中相互距離小于距離閾值的點的個數(shù)n大于3,至少有3個點用來坐標系定位使用,個數(shù)n小于m2(m≥3)是路標點要滿足旋轉(zhuǎn)非對稱結(jié)構(gòu),便于識別和定位。以紅外路標為3*3點陣式為例進行說明,個數(shù)n的數(shù)值范圍為3<n<9。
在本發(fā)明實施例中,地圖坐標系指定為第一個路標對應(yīng)的路標坐標系,路標坐標系的建立步驟具體包括:
獲取路標中距離最遠的兩個路標點A、B及距離直線AB最遠的路標點O;
判斷直線OA、OB之間的夾角是否位于夾角指定區(qū)域;
若判斷結(jié)果為是,則以路標點A、B作為坐標軸上的點,O作為坐標原點建立路標坐標系,若判斷結(jié)果為否,則丟棄該路標對應(yīng)的圖像。
在本發(fā)明實施例中,夾角指定區(qū)間一般為85度至95度。由于紅外路標通常為3*3點陣式、4*4點陣式,以對角線的兩端點A、B作為坐標軸上的點,以另一對角線上的另一個端點O為原點,構(gòu)成了OAB直角坐標系,OA軸與OB軸之間的夾角一般為90度,根據(jù)路標坐標系兩坐標軸之間的夾角可以獲知圖像傾斜度,圖像傾斜度過大,會引起較大的定位誤差,這樣的圖像需要被丟棄,通過計算兩坐標軸的夾角即可獲知圖像的傾斜程度,由于相機與天花板大致平行,通過圖像的傾斜程度即可獲知相機的傾斜度,無需額外借助傾角傳感器來進行相機的傾斜角的測量。
S2.根據(jù)所述已知路標或未知路標中的路標點在圖像上的距離及路標點間的實際距離,計算相機到天花板的垂直距離H;
在本發(fā)明實施例中,可以選擇通過已知路標或未知路標中的路標點來計算相機到天花板的垂直距離,路標點間的實際距離在將路標布置在天花板時就已經(jīng)設(shè)定好,而根據(jù)步驟S1提取的路標,即可獲取已知路標或未知路標在圖像上的距離。
在本發(fā)明實施例中,步驟S2具體包括:
S21.在當(dāng)前圖像中的已知路標或未知路標中任選兩個路標點M1、M2;
S22.將內(nèi)參矩陣Matcam的逆矩陣乘以路標點M1、M2對應(yīng)像點m1、m2的齊次坐標即獲取坐標ui1、ui2;
在本發(fā)明實施例中,相機在使用前需要進行標定,得到相機的內(nèi)參矩陣,內(nèi)參矩陣是指從相機坐標系到像平面坐標系的變換參數(shù)。
S23.根據(jù)坐標ui1、ui2之間的距離Si、及路標點M1、M2間的實際距離SW,計算相機到天花板的距離為
S3.根據(jù)所述相機到天花板的垂直距離H、內(nèi)參矩陣Matcam、及已知路標的路標點的像素坐標的齊次坐標及在地圖坐標系中的世界坐標的齊次坐標,計算仿射變換矩陣一;
在本發(fā)明實施例中,根據(jù)公式為已知路標點的像素坐標的齊次坐標,H為天花板到相機的距離,為相機內(nèi)參矩陣的逆矩陣,求得的u1也是一個齊次坐標,為已知路標點在地圖坐標系中的世界坐標的齊次坐標,則根據(jù)公式可求出仿射變換矩陣一
S4.根據(jù)所述仿射變換矩陣一及未知路標的路標點的像素坐標、計算未知路標的路標點在地圖坐標系中的坐標。
在本發(fā)明實施例中,根據(jù)公式即可計算Xw為未知路標點在地圖坐標系中的坐標,u為未知路標點的像素坐標、Mcam為相機內(nèi)參和s為攝影深度因子(即為相機到天花板的距離H)、為仿射變換矩陣。
本發(fā)明實施例通過提取拍攝圖像中的已知路標和未知路標,根據(jù)所述已知路標或未知路標中的路標點在圖像上的距離及路標點間的實際距離,計算相機到天花板的垂直距離H,再通過仿射變換矩陣一計算未知路標的路標點在地圖坐標系中的坐標,實現(xiàn)室內(nèi)地圖的構(gòu)建,為實現(xiàn)室內(nèi)定位提供室內(nèi)地圖。
本發(fā)明實施例中的室內(nèi)定位方法是基于前文室內(nèi)地圖構(gòu)建方法構(gòu)建的室內(nèi)地圖進行定位的,所以在進行室內(nèi)定位之前還包括室內(nèi)地圖的構(gòu)建,室內(nèi)地圖的構(gòu)建方法如前文所述。
圖2為本發(fā)明實施例提供的基于室內(nèi)地的圖室內(nèi)定位方法的流程圖,該方法包括如下步驟:
S5.提取拍攝圖像中的路標,判斷該路標是否為已知路標;
在本發(fā)明實施例中,當(dāng)拍攝的路標用于室內(nèi)定位時,當(dāng)前圖像中必須有一個已知路標的存在,為了防止構(gòu)建室內(nèi)地圖時出現(xiàn)有路標未被納入地圖坐標系內(nèi),導(dǎo)致無法進行定室內(nèi)定位,獲取拍攝圖像中的路標的ID,檢測拍攝圖像中的路標的ID是否與已納入地圖坐標系內(nèi)的路標的ID號,若檢測結(jié)果為是,則執(zhí)行步驟S6,若檢測結(jié)果為否,則丟棄該路標對應(yīng)的拍攝圖像。
S6.若判斷結(jié)果為是,則根據(jù)所述路標中的路標點在圖像上的距離及路標點間的實際距離計算相機到天花板的垂直距離H;
在本發(fā)明實施例中,路標點間的實際距離在將路標布置在天花板時就已經(jīng)設(shè)定好,而根據(jù)步驟S5提取的路標,即可獲取路標在圖像上的距離。
在本發(fā)明實施例中,步驟S6具體包括:
S61.在當(dāng)前圖像中的任選兩個路標點M1、M2;
S62.將內(nèi)參矩陣Matcam的逆矩陣乘以路標點M1、M2對應(yīng)像點m1、m2的齊次坐標即獲取坐標ui1、ui2;
S63.根據(jù)坐標ui1、ui2之間的距離Si、及路標點M1、M2間的實際距離SW,計算相機到天花板的距離為
S7.根據(jù)所述垂直距離H、內(nèi)參矩陣Matcam、所述路標點在圖像中的坐標及在所述地圖坐標系中的平面坐標,計算仿射變換矩陣二;
在本發(fā)明實施例中,提取路標點的像點坐標u、相機內(nèi)參Mcam及相機到天花板的垂直距離H,根據(jù)公式計算路標點在相機坐標系中的坐標XC,再利用路標點在相機坐標系中的坐標XC及路標點地圖坐標系中的平面坐標XW,根據(jù)公式XC=Mataff*XW計算出仿射變化矩陣二Mataff。
S8.根據(jù)所述仿射變化矩陣二中的相機相對于地圖坐標系的旋轉(zhuǎn)矩陣Matrotat及平移向量Matt,計算相機中心在地圖坐標系中的平面坐標Xcam。
在本發(fā)明實施例中,相機中心在地圖坐標系中的平面坐標Xcam計算公式如下:
其中,Matrotat為相機相對于地圖坐標系的旋轉(zhuǎn)矩陣,Matt為平移相機相對于地圖坐標系的向量。
本發(fā)明實施例基于構(gòu)建的室內(nèi)地圖實現(xiàn)室內(nèi)定位,通過提取圖像中的路標,根據(jù)第一個路標中的路標點在圖像上的距離與路標點間的實際距離計算相機到天花板的垂直距離H,進而利用仿射變換矩陣確定相機中心在所述地圖坐標系中的位置,本技術(shù)方案只需根據(jù)相機拍攝的路標圖像即可計算出相機中心的位置,該定位方法不僅操作簡單,且成本相對較少。
在本發(fā)明實施例中,提取拍攝圖像中路標的方法具體包括如下步驟:
S51.根據(jù)標定得到的相機畸變參數(shù)對拍攝的圖像進行畸變矯正;
在發(fā)明實施例中,相機在使用前需要進行標定,得到相機的畸變參數(shù),根據(jù)畸變參數(shù)對采集的圖像進行畸變矯正,提高點位提取精度。
S52.計算畸變矯正后圖像的平均灰度值以作為二值化的閾值,對圖像進行二值化。
在本發(fā)明實施例中,對進行畸變矯正后的圖像進行灰度處理,計算平均灰度值由于平均值一般都比較小,二值化的時候噪聲多,因此,將平均灰度值乘以系數(shù)k(k>1)作為閾值,對圖像進行二值化,以減少噪音點的出現(xiàn)。
S53.利用像素點的形狀和像素點之間的距離約束提取路標點。
在本發(fā)明實施例中,利用像素點的形狀和像素點之間的距離約束提取路標點的步驟具體包括:
S531.對二值化后圖像中的白色像素塊進行橢圓擬合;
S532.獲取橢圓面積小于面積閾值,且擬合橢圓的長短軸之比位于設(shè)定區(qū)間內(nèi)的橢圓的中心;
在本發(fā)明實施例中,二值化后的圖像會存在若干個像素塊,對一個個的像素塊進行橢圓擬合,若擬合后的橢圓面積大于面積閾值,則該像素塊為噪聲,這樣的像素塊需要丟棄;面積閾值是根據(jù)相機的分辨率、光源強度、鏡頭的視場角等來設(shè)定的,且對于擬合后橢圓的短軸與長軸之比位于設(shè)定區(qū)間,該區(qū)間的范圍為大于0.5小于1。
S533.計算相互距離小于距離閾值的橢圓中心點的個數(shù)n(n為正整數(shù)),當(dāng)個數(shù)滿足3<n<m2(m≥3)時,將相互距離小于距離閾值的橢圓中心點作為路標的路標點。
在本發(fā)明實施例中,橢圓中相互距離小于距離閾值的點的個數(shù)n大于3,至少有3個點用來坐標系定位使用,個數(shù)n小于m2(m≥3)是路標點要滿足旋轉(zhuǎn)非對稱結(jié)構(gòu),便于識別和定位。以紅外路標為3*3點陣式為例進行說明,個數(shù)n的數(shù)值范圍為3<n<9。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。