本發(fā)明涉及一種基于雙目立體視覺的物體三維尺寸簡便測(cè)量方法,屬于測(cè)量設(shè)備領(lǐng)域。
背景技術(shù):
物體的幾何尺寸信息對(duì)于運(yùn)輸和倉儲(chǔ)是非常重要的,可以用于解決貨物堆放的最優(yōu)化問題。在實(shí)際操作過程中,為了滿足掃描的拍攝要求,需要操作人員圍繞貨物選擇角度,或者搬動(dòng)貨物以獲得需要的拍攝角度,對(duì)于實(shí)際操作帶來很大的困難。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種基于雙目立體視覺的物體三維尺寸簡便測(cè)量方法。該方案利用立體視覺技術(shù)快速測(cè)量商品的三維尺寸,采用智能識(shí)別算法,自動(dòng)識(shí)別拍攝角度,基于對(duì)應(yīng)特征點(diǎn)進(jìn)行計(jì)算,測(cè)量精度高,自動(dòng)化程度好。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
一種基于雙目立體視覺的物體三維尺寸簡便測(cè)量方法,包括手持式三維掃描儀,所述的手持式三維掃描儀包括機(jī)殼和安裝在所述的機(jī)殼內(nèi)部的電子控制裝置,所述的電子控制裝置包括電源模塊,進(jìn)行集中控制的處理器,與所述的處理器連接的第一紅外攝像頭和第二紅外攝像頭,設(shè)置在所述的機(jī)殼的前部,以固定間距進(jìn)行水平放置,用于采集紅外視覺信息,與所述的處理器連接的紅外結(jié)構(gòu)光發(fā)生器,設(shè)置在所述的第一紅外攝像頭和第二紅外攝像頭之間,用于發(fā)射網(wǎng)狀主動(dòng)紅外光,與所述的處理器連接的人機(jī)界面,包括按鍵和lcd顯示器,用于指令輸入和信息顯示,所述的處理器內(nèi)部設(shè)置環(huán)境深度計(jì)算算法和物體三維尺寸測(cè)量算法,所述的物體三維尺寸測(cè)量算法包括以下步驟:
(1)首先,將所述的手持式三維掃描儀對(duì)準(zhǔn)物體進(jìn)行拍攝,所述的環(huán)境深度計(jì)算算法輸出當(dāng)前場(chǎng)景的深度信息f(x,y)=(x,y,z),其中x,y為圖像坐標(biāo),x∈(0,u),y∈(0,v),x,y,z是以所述的第一紅外攝像頭為原點(diǎn)的世界坐標(biāo);
(2)利用邊緣搜索算法提取物體頂部的邊緣點(diǎn)fe(xe,ye),并從邊緣點(diǎn)中提取兩側(cè)的端點(diǎn)a:fa(xa,ya),和端點(diǎn)b:fb(xb,yb),以及中間點(diǎn)m:fm(xm,ym),其中xa=max(xe),xb=min(xe),xm=(xa+xb)/2;
(3)沿著端點(diǎn)a,向下搜索物體的端點(diǎn)c:fc(xc,yc)滿足|fc(xc,yc)|=max|f(x,y)|=max(x2+y2+z2)1/2,其中xc=xa,yc<ya;沿著端點(diǎn)b,向下搜索物體的端點(diǎn)d:fd(xd,yd),滿足|fd(xd,yd)|=max|f(x,y)|=max(x2+y2+z2)1/2,其中xd=xb,yd<yb;
(4)取端點(diǎn)a和端點(diǎn)c的中間點(diǎn)e:fe(xa,(ya+yc)/2),沿著中間點(diǎn)e向左搜索極值點(diǎn)g:fg(xg,yg),滿足yg=y(tǒng)e,同時(shí),|fg(xg,yg)|>|fg(xg+1,yg)|和|fg(xg,yg)|>|fg(xg-1,yg)|,然后進(jìn)入步驟(5);如果搜索到中間點(diǎn)f:ff(xb,(ya+yc)/2),還沒找到極值點(diǎn)則進(jìn)入步驟(6);
(5)計(jì)算邊長lac=sqrt((xa-xc)2+(ya-yc)2+(za-zc)2),lag=sqrt((xa-xg)2+(ya-yg)2+(za-zg)2),lcg=sqrt((xc-xg)2+(yc-yg)2+(zc-zg)2),利用余弦定理計(jì)算極值點(diǎn)g到邊ac的垂直距離lg⊥ac=lag*sin(arcos((l2ac+l2ag-l2cg)/2lac*lag)),同樣計(jì)算,邊長lbd=sqrt((xb-xd)2+(yb-yd)2+(zb-zd)2),lbg=sqrt((xb-xg)2+(yb-yg)2+(zb-zg)2),ldg=sqrt((xd-xg)2+(yd-yg)2+(zd-zg)2),利用余弦定理計(jì)算極值點(diǎn)g到邊bd的垂直距離lg⊥bd=lbg*sin(arcos((l2bd+l2bg-l2dg)/2lbd*lbg)),即得到物體的長l=lg⊥ac,寬w=lg⊥bd,高h(yuǎn)=lac,結(jié)束測(cè)量;
(6)中間點(diǎn)m與端點(diǎn)a和端點(diǎn)b組成三角形,計(jì)算邊長lab=sqrt((xa-xb)2+(ya-yb)2+(za-zb)2),lam=sqrt((xa-xm)2+(ya-ym)2+(za-zm)2),lbm=sqrt((xb-xm)2+(yb-ym)2+(zb-zm)2),利用余弦定理計(jì)算中間點(diǎn)m到邊ab的垂直距離lm⊥ab=lam*sin(arcos((l2ab+l2am-l2bm)/2lab*lam));如果lm⊥ab>5%*lab,則物體的長l=lm⊥ab,寬w=lab,高h(yuǎn)=lac=sqrt((xa-xc)2+(ya-yc)2+(za-zc)2),結(jié)束測(cè)量;如果lm⊥ab<5%*lab,進(jìn)入步驟(7);
(7)通過所述的人機(jī)界面,提示重新選擇角度進(jìn)行測(cè)量,并返回步驟(1)。
所述的邊緣搜索算法包括以下步驟:
(2-1)沿著y軸從下到上,沿著x軸從左向右搜索,如果abs(|f(x,y)|-|f(x,y+1)|)>tedge,則標(biāo)記為邊緣點(diǎn)fe(xe,ye),tedge為經(jīng)驗(yàn)閾值;
(2-2)在邊緣點(diǎn)fe(xe,ye)中搜索距離最小點(diǎn),femin(xemin,yemin):|femin(xemin,yemin))|=min|fe(xe,ye)|=min(xe2+ye2+ze2)1/2,如果femin(xemin,yemin)的左側(cè)是邊緣點(diǎn),即femin(xemin-1,yemin)∈fe(xe,ye)或者femin(xemin-1,yemin±1)∈fe(xe,ye),則向左繼續(xù)搜索邊緣點(diǎn),或者femin(xemin,yemin)的右側(cè)是邊緣點(diǎn)femin(xemin+1,yemin)∈fe(xe,ye)或者femin(xemin+1,yemin±1)∈fe(xe,ye),則向右繼續(xù)搜索邊緣點(diǎn),這些相鄰的邊緣點(diǎn)標(biāo)記為fe(xe,ye);如果femin(xemin,yemin)的兩側(cè)沒有邊緣點(diǎn),則將femin(xemin,yemin)從邊緣點(diǎn)fe(xe,ye)中刪除,重新執(zhí)行步驟(2-2)。
本發(fā)明的有益效果主要表現(xiàn)在:1、自動(dòng)識(shí)別拍攝角度,并進(jìn)行物體三維尺寸測(cè)量;2、測(cè)量精度高,自動(dòng)化程度好。
附圖說明
圖1是小件物體的側(cè)面測(cè)量示意圖;
圖2是大件物體的側(cè)面測(cè)量示意圖;
圖3是小件物體的正面測(cè)量示意圖;
圖4是大件物體的正面測(cè)量示意圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述:
參照?qǐng)D1-4,一種基于雙目立體視覺的物體三維尺寸簡便測(cè)量方法,包括手持式三維掃描儀,所述的手持式三維掃描儀包括機(jī)殼和安裝在所述的機(jī)殼內(nèi)部的電子控制裝置,所述的電子控制裝置包括電源模塊,進(jìn)行集中控制的處理器,與所述的處理器連接的第一紅外攝像頭和第二紅外攝像頭,設(shè)置在所述的機(jī)殼的前部,以固定間距進(jìn)行水平放置,用于采集紅外視覺信息,為三維信息計(jì)算提供原始數(shù)據(jù),與所述的處理器連接的紅外結(jié)構(gòu)光發(fā)生器,設(shè)置在所述的第一紅外攝像頭和第二紅外攝像頭之間,用于發(fā)射網(wǎng)狀主動(dòng)紅外光,增加環(huán)境物體的表面紋理,與所述的處理器連接的人機(jī)界面,包括按鍵和lcd顯示器,用于指令輸入和信息顯示,所述的處理器內(nèi)部設(shè)置環(huán)境深度計(jì)算算法和物體三維尺寸測(cè)量算法,所述的環(huán)境深度計(jì)算算法提取環(huán)境的深度信息,可采用成熟算法,所述的物體三維尺寸測(cè)量算法包括以下步驟:
(1)首先,將所述的手持式三維掃描儀對(duì)準(zhǔn)物體進(jìn)行拍攝,所述的環(huán)境深度計(jì)算算法輸出當(dāng)前場(chǎng)景的深度信息f(x,y)=(x,y,z),其中x,y為圖像坐標(biāo),x∈(0,u),y∈(0,v),x,y,z是以所述的第一紅外攝像頭為原點(diǎn)的世界坐標(biāo);
其中,u,v為圖像的最大寬度和最大高度。
(2)利用邊緣搜索算法提取物體頂部的邊緣點(diǎn)fe(xe,ye),并從邊緣點(diǎn)中提取兩側(cè)的端點(diǎn)a:fa(xa,ya),和端點(diǎn)b:fb(xb,yb),以及中間點(diǎn)m:fm(xm,ym),其中xa=max(xe),xb=min(xe),xm=(xa+xb)/2;
在測(cè)量的時(shí)候,物體是單獨(dú)放置的,因此與背景之間存在隔開的距離,物體成像以后與背景存在深度差,很容易找到物體與背景的邊界,這個(gè)邊界就成為物體測(cè)量的首要特征。
(3)沿著端點(diǎn)a,向下搜索物體的端點(diǎn)c:fc(xc,yc)滿足|fc(xc,yc)|=max|f(x,y)|=max(x2+y2+z2)1/2,其中xc=xa,yc<ya;沿著端點(diǎn)b,向下搜索物體的端點(diǎn)d:fd(xd,yd),滿足|fd(xd,yd)|=max|f(x,y)|=max(x2+y2+z2)1/2,其中xd=xb,yd<yb;
由于物體是放置在地面或者平臺(tái)上,在物體與地面或者平臺(tái)的交界處存在一個(gè)極值點(diǎn),也就是局部最大點(diǎn),這個(gè)也是物體測(cè)量的重要特征
(4)取端點(diǎn)a和端點(diǎn)c的中間點(diǎn)e:fe(xa,(ya+yc)/2),沿著中間點(diǎn)e向左搜索極值點(diǎn)g:fg(xg,yg),滿足yg=y(tǒng)e,同時(shí),|fg(xg,yg)|>|fg(xg+1,yg)|和|fg(xg,yg)|>|fg(xg-1,yg)|,然后進(jìn)入步驟(5);如果搜索到中間點(diǎn)f:ff(xb,(ya+yc)/2),還沒找到極值點(diǎn)則進(jìn)入步驟(6);
對(duì)于可以同時(shí)觀測(cè)到兩個(gè)側(cè)面的情況,比如圖1和圖2,在交界的邊線上存在局部的極值點(diǎn);而對(duì)于圖3和圖4的情況,只能觀測(cè)到1個(gè)側(cè)面,則不存在局部的極值點(diǎn),只能尋找其他的特征。
(5)計(jì)算邊長lac=sqrt((xa-xc)2+(ya-yc)2+(za-zc)2),lag=sqrt((xa-xg)2+(ya-yg)2+(za-zg)2),lcg=sqrt((xc-xg)2+(yc-yg)2+(zc-zg)2),利用余弦定理計(jì)算極值點(diǎn)g到邊ac的垂直距離lg⊥ac=lag*sin(arcos((l2ac+l2ag-l2cg)/2lac*lag)),同樣計(jì)算,邊長lbd=sqrt((xb-xd)2+(yb-yd)2+(zb-zd)2),lbg=sqrt((xb-xg)2+(yb-yg)2+(zb-zg)2),ldg=sqrt((xd-xg)2+(yd-yg)2+(zd-zg)2),利用余弦定理計(jì)算極值點(diǎn)g到邊bd的垂直距離lg⊥bd=lbg*sin(arcos((l2bd+l2bg-l2dg)/2lbd*lbg)),即得到物體的長l=lg⊥ac,寬w=lg⊥bd,高h(yuǎn)=lac,結(jié)束測(cè)量;
對(duì)于圖1和圖2的情況,基于兩點(diǎn)間的距離公式和余弦定理,可以計(jì)算出物體的長寬高。
(6)中間點(diǎn)m與端點(diǎn)a和端點(diǎn)b組成三角形,計(jì)算邊長lab=sqrt((xa-xb)2+(ya-yb)2+(za-zb)2),lam=sqrt((xa-xm)2+(ya-ym)2+(za-zm)2),lbm=sqrt((xb-xm)2+(yb-ym)2+(zb-zm)2),利用余弦定理計(jì)算中間點(diǎn)m到邊ab的垂直距離lm⊥ab=lam*sin(arcos((l2ab+l2am-l2bm)/2lab*lam));如果lm⊥ab>5%*lab,則物體的長l=lm⊥ab,寬w=lab,高h(yuǎn)=lac=sqrt((xa-xc)2+(ya-yc)2+(za-zc)2),結(jié)束測(cè)量;如果lm⊥ab<5%*lab,進(jìn)入步驟(7);
對(duì)于圖3的情況,物體的頂面是可見的,同樣可以利用兩點(diǎn)間的距離公式和余弦定理計(jì)算物體的長寬高;但是對(duì)于圖4,屬于只能觀測(cè)到一個(gè)面的情況,不能計(jì)算出物體的所有參數(shù)。
在步驟(6)中,通過中間點(diǎn)m到邊ab的垂直距離lm⊥ab來判斷頂面的可見程度,如果太小而影響測(cè)量精度,也是建議重新調(diào)整拍攝角度。
(7)通過所述的人機(jī)界面,提示重新選擇角度進(jìn)行測(cè)量,并返回步驟(1)。
在步驟(2)中所使用的邊緣搜索算法包括以下步驟:
(2-1)沿著y軸從下到上,沿著x軸從左向右搜索,如果abs(|f(x,y)|-|f(x,y+1)|)>tedge,則標(biāo)記為邊緣點(diǎn)fe(xe,ye),tedge為經(jīng)驗(yàn)閾值;
(2-2)在邊緣點(diǎn)fe(xe,ye)中搜索距離最小點(diǎn),femin(xemin,yemin):|femin(xemin,yemin))|=min|fe(xe,ye)|=min(xe2+ye2+ze2)1/2,如果femin(xemin,yemin)的左側(cè)是邊緣點(diǎn),即femin(xemin-1,yemin)∈fe(xe,ye)或者femin(xemin-1,yemin±1)∈fe(xe,ye),則向左繼續(xù)搜索邊緣點(diǎn),或者femin(xemin,yemin)的右側(cè)是邊緣點(diǎn)femin(xemin+1,yemin)∈fe(xe,ye)或者femin(xemin+1,yemin±1)∈fe(xe,ye),則向右繼續(xù)搜索邊緣點(diǎn),這些相鄰的邊緣點(diǎn)標(biāo)記為fe(xe,ye);如果femin(xemin,yemin)的兩側(cè)沒有邊緣點(diǎn),則將femin(xemin,yemin)從邊緣點(diǎn)fe(xe,ye)中刪除,重新執(zhí)行步驟(2-2)。
最終提取出物體上部與背景的邊界,以及三個(gè)特征點(diǎn)。
在實(shí)際使用時(shí),只需將所述的手持式三維掃描儀對(duì)準(zhǔn)待掃描的物體,物體的三維尺寸就自動(dòng)進(jìn)行測(cè)量和計(jì)算,極個(gè)別的情況下,由于拍攝角度的原因無法測(cè)量,再根據(jù)提示進(jìn)行位置和角度的調(diào)整,完成測(cè)量。