亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于二維碼的相機(jī)位姿求解

        2021-08-24 10:00:46介遠(yuǎn)航余神志
        關(guān)鍵詞:位姿二維碼邊緣

        吳 飛, 介遠(yuǎn)航, 余神志

        (武漢理工大學(xué) 機(jī)電工程學(xué)院, 湖北 武漢 430070)

        二維碼因其信息容量大,編碼范圍廣,已被廣泛應(yīng)用于手機(jī)支付和信息查閱,極大方便了人們的生活.在定位技術(shù)領(lǐng)域,二維碼也得到了廣泛應(yīng)用[1].在定位技術(shù)中,二維碼可以很好地存儲(chǔ)絕對(duì)位置信息,且信息獲取簡(jiǎn)單易用,為機(jī)器人里程計(jì)提供的后驗(yàn)信息可用于修正機(jī)器人里程計(jì)數(shù)據(jù).現(xiàn)已廣泛應(yīng)用于智能物流、機(jī)器人巡檢等場(chǎng)景,是重要的定位方式之一[2].目前研究人員針對(duì)機(jī)器人定位問題提出諸多解決方案,例如,利用慣性傳感器構(gòu)建電子地圖完成定位[3],利用二維碼實(shí)現(xiàn)機(jī)器人之間的相對(duì)定位[4].但慣性傳感器累計(jì)誤差較大,而傳統(tǒng)二維碼定位過程中,機(jī)器人相機(jī)識(shí)別二維碼的位姿通常是未知的,傳統(tǒng)二維碼定位技術(shù)為機(jī)器人提供的定位信息不能實(shí)現(xiàn)機(jī)器人的精準(zhǔn)定位.因此,在二維碼為機(jī)器人提供位置信息的基礎(chǔ)上,如果通過特征點(diǎn)匹配反解出相機(jī)位姿,那就可以為機(jī)器人提供更為精準(zhǔn)、全面的位置信息,包括機(jī)器人的平移量和旋轉(zhuǎn)量,進(jìn)而實(shí)現(xiàn)機(jī)器人的精準(zhǔn)定位.機(jī)器人位姿求解示意圖如圖1所示.

        圖1 機(jī)器人位姿求解示意圖

        機(jī)器人在全局坐標(biāo)系下的旋轉(zhuǎn)矩陣R和平移向量t定義如下:

        R=R1×R2,

        t=t1+t2,

        式中:R1和t1分別為相機(jī)坐標(biāo)系相對(duì)于二維碼坐標(biāo)系的旋轉(zhuǎn)矩陣和平移向量;R2和t2分別為機(jī)器人坐標(biāo)系相對(duì)于相機(jī)坐標(biāo)系的旋轉(zhuǎn)矩陣和平移向量.因此,利用二維碼進(jìn)行相機(jī)位姿求解的方法,不僅對(duì)動(dòng)態(tài)相機(jī)識(shí)別二維碼有重要的指導(dǎo)意義[5],還可以為定位問題提供一定的技術(shù)支持.

        1 標(biāo)定二維碼

        筆者選取戴爾720p HD攝像頭,對(duì)地面粘貼的二維碼進(jìn)行拍攝.為了保證計(jì)算效率,定義圖像分辨率為480×640像素,同時(shí)選取二維碼標(biāo)準(zhǔn)位置進(jìn)行標(biāo)定,以便下一步進(jìn)行特征點(diǎn)匹配和位姿求解[6].標(biāo)準(zhǔn)位置定義如下:二維碼中心像素位于圖像中央,二維碼邊長(zhǎng)為100像素,如圖2所示.此時(shí)相機(jī)位姿定義為標(biāo)準(zhǔn)位姿,所對(duì)應(yīng)的旋轉(zhuǎn)矩陣為Rs,即三階單位矩陣E.用激光測(cè)距儀測(cè)量相機(jī)光心至二維碼中心距離為Zs=0.58 m,故定義平移向量ts=(0,0,0.58),此位姿下的4個(gè)特征點(diǎn)定義為標(biāo)準(zhǔn)位姿特征點(diǎn)集Ps.

        圖2 二維碼標(biāo)準(zhǔn)位置

        2 標(biāo)定相機(jī)

        無論是在三維重建還是在機(jī)器視覺應(yīng)用中,相機(jī)參數(shù)的標(biāo)定都極為重要,標(biāo)定結(jié)果的精度將直接影響獲得圖像數(shù)據(jù)的準(zhǔn)確性,所以做好相機(jī)標(biāo)定是進(jìn)行圖像處理的基礎(chǔ)[7].相機(jī)標(biāo)定的本質(zhì)是獲得世界坐標(biāo)系下三維坐標(biāo)到圖像中像素點(diǎn)二維坐標(biāo)的轉(zhuǎn)化矩陣K,也稱為相機(jī)內(nèi)參矩陣.標(biāo)定相機(jī)就是求解相機(jī)內(nèi)參矩陣K中的未知量.K是一個(gè)三階矩陣,未知量有4個(gè).K的定義如下:

        式中:fx為像素在x方向的縮放量;fy為像素在y方向的縮放量;cx為像素在x方向的平移量;cy為像素在y方向的平移量.世界坐標(biāo)系到像素坐標(biāo)系的坐標(biāo)變換關(guān)系為

        (1)

        式中:Q為世界坐標(biāo)系到相機(jī)坐標(biāo)系的變換矩陣;u、v為像素在像素坐標(biāo)系中的x、y坐標(biāo)值;x0、y0和z0為像素在世界坐標(biāo)系中的x、y、z坐標(biāo)值.

        筆者使用棋盤格和OpenCV內(nèi)置API實(shí)現(xiàn)相機(jī)標(biāo)定,棋盤格采用6個(gè)×8個(gè)角點(diǎn),棋盤格邊長(zhǎng)為24 mm,通過相機(jī)標(biāo)定可以得出內(nèi)參矩陣K.

        3 圖像預(yù)處理

        為了獲得特征點(diǎn),需要對(duì)獲得的源圖像進(jìn)行預(yù)處理,筆者首先利用OpenCV庫(kù)中的API算法接口對(duì)圖像進(jìn)行預(yù)處理,最終獲得二維碼邊緣輪廓,以便下一步對(duì)邊緣輪廓進(jìn)行特征點(diǎn)篩選.

        3.1 初步預(yù)處理

        初步預(yù)處理包括對(duì)圖像采用灰度轉(zhuǎn)化、圖像平滑和增強(qiáng)對(duì)比度.其目的如下:降低計(jì)算量[8]和顏色干擾;在保持良好邊緣的情況下,對(duì)噪聲進(jìn)行消除和抑制;提高圖像對(duì)比度,使目標(biāo)區(qū)域更容易區(qū)分.初步預(yù)處理后的圖像如圖3所示.

        圖3 初步預(yù)處理后的圖像

        3.2 分組閾值分割

        通過閾值分割可以使圖像只保留二維碼像素點(diǎn).傳統(tǒng)閾值分割是反復(fù)嘗試,直至得到合適的閾值.但不同的拍攝角度、光照條件使得每個(gè)圖像的最佳閾值不同,此時(shí)若仍采用傳統(tǒng)閾值分割,需進(jìn)行大量的嘗試.由于本研究中的研究對(duì)象均為單色背景的二維碼圖像,隨著閾值增大,二維碼像素將逐漸顯現(xiàn),隨著閾值的繼續(xù)增大,最終趨于穩(wěn)定.故可將閾值進(jìn)行分組,選擇方差最小的組為最佳組,再?gòu)淖罴呀M中選擇最接近平均數(shù)的閾值為最佳閾值.算法步驟如下:

        1) 將[0,255]閾值分為16組,每組16個(gè)閾值,i為組數(shù),可取[0,15],j為序數(shù),可取[0,15],由此可知第i組的第j個(gè)閾值為15×i+j.

        2) 計(jì)算每個(gè)閾值所對(duì)應(yīng)的二維碼像素個(gè)數(shù),設(shè)第i組的第j個(gè)閾值的二維碼像素個(gè)數(shù)為Nij.

        3) 設(shè)第i組的像素平均值為ni,方差為σi,計(jì)算公式為

        (2)

        (3)

        4) 設(shè)最佳組的組數(shù)為m,得到

        (4)

        5)m組中距離像素平均值最小的閾值為最佳閾值.設(shè)最佳閾值為e,可得

        (5)

        綜上步驟可求出該圖像的最佳閾值為15m+e.分組閾值分割后得到的二值化圖像如圖4所示.

        圖4 分組閾值分割后的二值化圖像

        3.3 邊緣求解

        在進(jìn)行圖像邊緣提取之前,采用形態(tài)學(xué)閉運(yùn)算,對(duì)二維碼內(nèi)部進(jìn)行黑色填充,以免在邊緣檢測(cè)時(shí)得到較多無用的輪廓信息,增加算法的計(jì)算量.圖像邊緣就是灰度值發(fā)生劇烈變化的地方,采用Canny算子可以較好地得到二維碼圖像的邊緣輪廓[9].邊緣求解后的圖像如圖5所示.

        圖5 邊緣求解后的圖像

        4 特征點(diǎn)集求解方法

        圖像預(yù)處理得到了二維碼邊緣輪廓.邊緣輪廓構(gòu)成的點(diǎn)集稱為邊緣點(diǎn)集合.可從邊緣點(diǎn)集合中通過循環(huán)遍歷等算法提取二維碼特征點(diǎn).設(shè)4個(gè)二維碼特征點(diǎn)構(gòu)成的集合為待求位姿下特征點(diǎn)集T,用于與標(biāo)準(zhǔn)位姿下的特征點(diǎn)集Ps進(jìn)行匹配,以求解位姿.

        4.1 循環(huán)遍歷算法

        傳統(tǒng)提取二維碼特征點(diǎn)的方法是采用霍夫直線檢測(cè)算法[10],該算法的基本原理是首先檢測(cè)出二維碼的4條邊界直線,然后求解出這些直線的交點(diǎn),即特征點(diǎn)集T.但是由于霍夫直線檢測(cè)算法需要對(duì)圖像進(jìn)行離散化處理,離散化程度較大,會(huì)造成圖像失真、邊界點(diǎn)的坐標(biāo)誤差變大,進(jìn)而導(dǎo)致所匹配的直線較多,不能精確地獲得4條邊界直線;若離散化程度較小,會(huì)得到較為密集的離散點(diǎn),降低算法的效率.同時(shí),由于霍夫直線的篩選是采用投票制,閾值過大或過小依然會(huì)導(dǎo)致所篩選出的直線偏少或偏多,如圖6所示.最佳投票閾值的參數(shù)設(shè)置需要大量試驗(yàn),故采用霍夫直線檢測(cè)算法去提取二維碼特征點(diǎn)的魯棒性較差.

        圖6 霍夫直線篩選情況

        可針對(duì)二維碼特征點(diǎn)提出循環(huán)遍歷算法,步驟如下:通過對(duì)像素點(diǎn)從上到下逐行遍歷,從左到右逐列遍歷,總能找到第1個(gè)特征點(diǎn),定義為T1;同理,對(duì)像素點(diǎn)從下到上逐行遍歷,從右到左逐列遍歷,能找到第2個(gè)特征點(diǎn),定義為T2. 同時(shí),正方形的二維碼邊緣經(jīng)過透視變換后得到的圖形是凸四邊形.由幾何關(guān)系可知,通過循環(huán)遍歷算法識(shí)別出的2個(gè)特征點(diǎn)正好是原二維碼對(duì)角方向的一對(duì)特征點(diǎn),如圖7所示.

        圖7 特征點(diǎn)T1和T2位置示意圖

        4.2 最大距離算法

        通過循環(huán)遍歷算法,可以得到一對(duì)在對(duì)角方向的特征點(diǎn),其坐標(biāo)分別為T1(x1,y1)和T2(x2,y2),而剩余2個(gè)特征點(diǎn)坐標(biāo)為T3(x3,y3)和T4(x4,y4),它們?yōu)榫嚯xT1和T2兩點(diǎn)間直線L的最遠(yuǎn)點(diǎn).根據(jù)已知2個(gè)特征點(diǎn)的坐標(biāo)分別為T1(x1,y1)和T2(x2,y2),采用式(6)可得出通過這2個(gè)特征點(diǎn)的直線L的方程,即

        (y2-y1)x-(x2-x1)y+x2y1-x1y2=0.

        (6)

        然后,對(duì)圖像邊緣點(diǎn)進(jìn)行遍歷,設(shè)第i個(gè)邊緣點(diǎn)坐標(biāo)為Pi(Xi,Yi).遍歷到第i個(gè)邊緣點(diǎn)Pi時(shí),點(diǎn)Pi到直線L的距離di定義如下:

        (7)

        若點(diǎn)Pi在L上方,則di>0;若點(diǎn)Pi在L下方,則di<0;若點(diǎn)Pi在L上,則di=0.

        di=(y2-y1)Xi-(x2-x1)Yi+x2y1-x1y2.

        (8)

        由于特征點(diǎn)T3和T4距離直線L最遠(yuǎn),所以di的最大值dmax和最小值dmin所對(duì)應(yīng)的特征點(diǎn)即為T3和T4.至此,可得到二維碼的特征點(diǎn)T3和T4.特征點(diǎn)集T示意圖如圖8所示.

        圖8 特征點(diǎn)集T示意圖

        4.3 邊緣失真優(yōu)化算法

        二維碼邊緣傾斜程度較大時(shí),總能篩選出正確的特征點(diǎn)集T.但如果二維碼邊緣與圖像邊緣平行,且出現(xiàn)失真現(xiàn)象時(shí),就會(huì)導(dǎo)致誤匹配,如圖9所示.失真現(xiàn)象是由于像素過低,導(dǎo)致二維碼邊界直線輪廓出現(xiàn)偏移.

        圖9 失真現(xiàn)象示意圖

        誤匹配現(xiàn)象如圖10所示.由于失真現(xiàn)象,通過循環(huán)遍歷算法會(huì)首先遍歷到T1的誤匹配位置,造成誤匹配.

        圖10 誤匹配現(xiàn)象示意圖

        對(duì)于邊緣失真問題,提出“像素突變”算法進(jìn)行優(yōu)化,算法的基本原理是對(duì)于失真圖像進(jìn)行逐行遍歷,得到每行的首個(gè)邊緣點(diǎn),定義為行首邊緣點(diǎn).圖11為行首邊緣點(diǎn)集和局部視圖.行首邊緣點(diǎn)構(gòu)成的集合定義為F,從上到下的第i個(gè)行首邊緣點(diǎn)定義為Fi,通過“像素突變”算法,首先得到5個(gè)行首邊緣點(diǎn)F1、F2、F3、F4和F5,如圖11a所示.為方便觀察,每個(gè)行首邊緣點(diǎn)均配有局部視圖,如圖11b-f所示.經(jīng)過預(yù)處理后的圖像是二值化圖像,即只有白色像素和黑色像素,邊緣輪廓為白色像素,像素值為255,設(shè)(rowi,coli)為Fi在像素坐標(biāo)系下的坐標(biāo),M[x][y]表示在像素坐標(biāo)系下坐標(biāo)為(x,y)的像素值.因此,F(xiàn)i的坐標(biāo)表示為(rowi,coli),M[rowi][coli]表示Fi的像素值.通過局部視圖可以看出,行首邊緣點(diǎn)Fi的像素值M[rowi][coli]=255(白色).求解特征點(diǎn)的方法如下:判斷下一個(gè)點(diǎn)像素值M[rowi][coli+1]是否突變?yōu)?(黑色),若突變?yōu)?,特征點(diǎn)即為上一個(gè)行首邊緣點(diǎn),若不突變?yōu)?,則繼續(xù)遍歷行首邊緣點(diǎn),直至突變情況的出現(xiàn).如圖11所示,F(xiàn)2、F3、F4和F5的下一個(gè)像素點(diǎn)均沒有發(fā)生突變,行首邊緣點(diǎn)F1的下一個(gè)像素突變?yōu)楹谏?,故可得特征點(diǎn)為點(diǎn)F2.

        圖11 行首邊緣點(diǎn)集和局部視圖

        通過“像素突變”算法的優(yōu)化,利用循環(huán)遍歷算法與最大距離算法,均能夠正確找到特征點(diǎn),以證明算法的準(zhǔn)確性和可行性.圖12為特征點(diǎn)求解試驗(yàn)中特征點(diǎn)提取前后對(duì)比.圖12a是8次隨機(jī)拍攝的圖像進(jìn)行的特征點(diǎn)提取,試驗(yàn)結(jié)果圖12b所示,均能正確篩選出特征點(diǎn).

        圖12 特征點(diǎn)集求解試驗(yàn)

        5 位姿求解與修正

        通過以上算法可以得到二維碼的4個(gè)特征點(diǎn)T1(x1,y1)、T2(x2,y2)、T3(x3,y3)和T4(x4,y4).由于特征點(diǎn)均位于同一個(gè)平面上,利用特征點(diǎn)的單應(yīng)性[11],對(duì)4個(gè)特征點(diǎn)進(jìn)行位姿求解.平面方程定義如下:

        (x,y,z)nT+d=0.

        式中:n為平面方程的法向量;d為平面方程的常數(shù)項(xiàng).

        根據(jù)式(1),進(jìn)行坐標(biāo)變換得到

        T=K(RPs+t).

        代入平面方程與特征點(diǎn),可得

        (9)

        式中:R為標(biāo)準(zhǔn)位姿到當(dāng)前位姿的旋轉(zhuǎn)矩陣;t為標(biāo)準(zhǔn)位姿到當(dāng)前位姿的平移向量.

        T=HPs.

        (10)

        代入求得的4個(gè)特征點(diǎn),與標(biāo)準(zhǔn)位姿特征點(diǎn)集Ps進(jìn)行匹配[12],可求解出當(dāng)前相機(jī)位姿相對(duì)于標(biāo)準(zhǔn)位姿的旋轉(zhuǎn)矩陣R和平移向量t.求解位姿后,通過透視變換,可將非標(biāo)準(zhǔn)位姿二維碼進(jìn)行矯正.與標(biāo)準(zhǔn)位姿二維碼對(duì)比,若定位標(biāo)志位置相同,則不必對(duì)旋轉(zhuǎn)矩陣R進(jìn)行修正.若不同,則需對(duì)旋轉(zhuǎn)矩陣R進(jìn)行修正.修正步驟如下:

        1) 圖13為區(qū)域定義示意圖.圖13中,標(biāo)準(zhǔn)位姿二維碼的定位標(biāo)志在區(qū)域1、2、3處.設(shè)i區(qū)域存在的黑色像素個(gè)數(shù)為bi,對(duì)于標(biāo)準(zhǔn)位姿二維碼,min(bi)=b4.

        圖13 區(qū)域定義示意圖

        2) 對(duì)于矯正后的二維碼:

        若min(bi)=b1,則矯正角angle=180°;

        若min(bi)=b2,則矯正角angle=90°;

        若min(bi)=b3,則矯正角angle=270°;

        若min(bi)=b4,則矯正角angle=0°.

        修正矩陣Rf定義如下:

        Rf=RangleR,

        (11)

        式中:Rangle為旋轉(zhuǎn)角度為angle時(shí)的旋轉(zhuǎn)矩陣.

        修正平移向量tf定義如下:

        tf=t+ts.

        (12)

        通過修正計(jì)算可以得出修正矩陣Rf和修正平移向量tf,通過Rf求解旋轉(zhuǎn)軸A和旋轉(zhuǎn)角度θ,其計(jì)算公式如下:

        A=RfA,

        (13)

        (14)

        在旋轉(zhuǎn)上,當(dāng)前相機(jī)位姿相對(duì)于二維碼中心的旋轉(zhuǎn)軸為A,旋轉(zhuǎn)角度為θ;在平移上,當(dāng)前相機(jī)位姿相對(duì)于二維碼中心的平移向量為tf.

        6 誤差分析

        為證明算法的準(zhǔn)確、有效,拍攝50張Rf與tf已知的圖像進(jìn)行位姿求解,現(xiàn)對(duì)求解結(jié)果的誤差進(jìn)行分析.誤差在x、y和z方向均有分布,定義總誤差為在x、y和z方向上誤差的內(nèi)積,總誤差分布曲線如圖14所示.

        圖14 總誤差分布曲線

        由圖14可知:旋轉(zhuǎn)軸總誤差約為±0.18 m;旋轉(zhuǎn)角誤差約為±2°;平移量總誤差約為±0.02 m.故該算法能夠?yàn)闄C(jī)器人提供較準(zhǔn)確的位姿信息,包括機(jī)器人相對(duì)于世界坐標(biāo)系的旋轉(zhuǎn)軸、旋轉(zhuǎn)角和平移量,可以幫助其實(shí)現(xiàn)精準(zhǔn)定位.

        7 結(jié) 論

        1) 提出一種針對(duì)二維碼的分組閾值分割算法,與傳統(tǒng)閾值分割算法相比,該算法能自動(dòng)求解適合提取二維碼區(qū)域的閾值,針對(duì)不同光照、不同角度拍攝得到的二維碼圖像,均能有效地完成二維碼區(qū)域的二值化.

        2) 提出運(yùn)用循環(huán)遍歷算法和最大距離算法求解特征點(diǎn)集,并采用像素突變優(yōu)化出現(xiàn)的失真現(xiàn)象,通過多次試驗(yàn)驗(yàn)證了特征點(diǎn)集求解方法的可行性和有效性.

        3) 提出基于二維碼的相機(jī)位姿求解算法,通過對(duì)相機(jī)和二維碼進(jìn)行標(biāo)定、圖像預(yù)處理、求解特征點(diǎn)集、位姿求解與修正,完成相機(jī)位姿的求解.測(cè)試數(shù)據(jù)集中的誤差表明,相較于傳統(tǒng)的定位算法,提出的基于二維碼的相機(jī)位姿求解算法可以為機(jī)器人提供準(zhǔn)確的定位信息,包括機(jī)器人的旋轉(zhuǎn)量和位移量,實(shí)現(xiàn)對(duì)機(jī)器人的精準(zhǔn)定位.

        猜你喜歡
        位姿二維碼邊緣
        可以吃的二維碼
        二維碼
        童話世界(2020年32期)2020-12-18 18:15:41
        讓嚴(yán)肅的二維碼呆萌起來
        一張圖看懂邊緣計(jì)算
        基于共面直線迭代加權(quán)最小二乘的相機(jī)位姿估計(jì)
        基于CAD模型的單目六自由度位姿測(cè)量
        小型四旋翼飛行器位姿建模及其仿真
        二維碼,別想一掃了之
        基于幾何特征的快速位姿識(shí)別算法研究
        在邊緣尋找自我
        雕塑(1999年2期)1999-06-28 05:01:42
        仙女白丝jk小脚夹得我好爽| 好吊妞无缓冲视频观看| 成av免费大片黄在线观看| 欧美成人久久久| 在线观看黄片在线播放视频| 白白色发布会在线观看免费| 久久久国产打桩机| 亚洲av无码乱码国产麻豆穿越| 无码人妻少妇久久中文字幕| 东风日产车是不是国产的| 亚洲精品乱码久久久久久中文字幕| 国产一区二区不卡老阿姨| 亚洲AV日韩Av无码久久| 亚洲捆绑女优一区二区三区| 玩弄人妻少妇精品视频| 亚洲不卡中文字幕无码| 无码伊人久久大香线蕉| 国产精品性色av麻豆| 精品一区二区三区a桃蜜| 97久人人做人人妻人人玩精品| 亚洲 自拍 另类 欧美 综合 | 超薄肉色丝袜一区二区| 亚洲一区二区三区免费av在线| 日本精品一区二区三区在线观看 | 亚洲av无码第一区二区三区 | 中文字幕无码成人片| 日韩a无v码在线播放| 青榴社区国产精品| 日韩av天堂一区二区| 成人美女黄网站色大免费的| 国产夫妻av| 国产精品第一区亚洲精品| 麻花传媒68xxx在线观看| 丰满人妻妇伦又伦精品国产| 免费国人成人自拍视频| 亚洲精品av一区二区| 亚洲精品第一国产综合亚av| 免费看国产精品久久久久| 久久想要爱蜜臀av一区二区三区| 成人国产精品一区二区网站公司 | 久久天天躁狠狠躁夜夜avapp|