王玉偉,尹顏朋
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
快遞箱的體積是快遞行業(yè)收取運(yùn)費(fèi)的一項(xiàng)重要指標(biāo),而如何智能、快速、精確、低成本、高效率地獲取快遞箱的體積是快遞行業(yè)需要解決的問題。目前,對快遞箱等規(guī)則物體的體積測量方法[1]主要有:人工測量法、儀器測量法[3]、通過三維建模獲取點(diǎn)云并計(jì)算體積、基于雙目立體視覺的體積測量[1-2]等方法。以上方法要么測量效率低、準(zhǔn)確性差,要么成本高、不宜推廣。
針對以上問題,提出了基于RCF邊緣檢測[6]和雙目視覺的箱體體積測量算法,該方法的核心思想如圖1所示:首先通過雙目攝像機(jī)標(biāo)定,對圖像進(jìn)行畸變矯正;然后,采集圖像數(shù)據(jù)訓(xùn)練好RCF網(wǎng)絡(luò)模型,把用雙目圖像傳感器得到的圖像進(jìn)行邊緣的提取并獲得邊緣二值圖;其次,對邊緣二值圖進(jìn)行細(xì)化、輪廓提取、直線檢測與擬合、邊緣聚類等預(yù)處理,準(zhǔn)確定位出目標(biāo)箱體的邊緣與頂點(diǎn);最后,通過雙目立體視覺測距的方法,計(jì)算箱體同名頂點(diǎn)的視差、深度,便可計(jì)算出箱體的長寬高與體積。
雙目標(biāo)定首先要獲取左右相機(jī)的內(nèi)外參數(shù),然后對左右兩幅圖像進(jìn)行立體校準(zhǔn)和對齊。只有獲得準(zhǔn)確的內(nèi)參與外參,才可用于后面的雙目測距。實(shí)際情況下,相機(jī)的主點(diǎn)(cx,cy)并不位于圖像中心,兩者存在一定的偏差,而且X方向的等效焦距 fx和Y方向的等效焦距 fy也不相等,所以還需要求解相機(jī)的畸變參數(shù);設(shè)畸變坐標(biāo)為(x,y),矯正后坐標(biāo)為(x`,y`),則畸變矯正的數(shù)學(xué)模型為:
其中,k1、k2、k3為切向畸變參數(shù),p1、p2為競徑向畸變參數(shù);
因此,為了得到精確的標(biāo)定參數(shù),選擇平面棋盤作為標(biāo)定物,采用ROS系統(tǒng)提供的標(biāo)定方法進(jìn)行雙目立體視覺的標(biāo)定,該標(biāo)定方法可快速準(zhǔn)確地得到相機(jī)參數(shù)。有了精確的參數(shù),才可以保證立體測距有比較好的效果。
為了定位出目標(biāo)物體,需要得到目標(biāo)物體的邊緣與輪廓信息。邊緣檢測是圖像處理和計(jì)算機(jī)視覺中的基本問題,圖像邊緣檢測能夠大幅減少數(shù)據(jù)量,在保留重要結(jié)構(gòu)屬性的同時,剔除弱相關(guān)信息。近些年,有很多基于CNN邊緣檢測的方法,然而由于不同卷積層之間的信息是可以互補(bǔ)的,傳統(tǒng)方法只使用了Pooling前最后一個卷積層的信息,信息利用不充分。而本文采用的是Ming-Ming Cheng副教授2017年在CVPR上發(fā)表的文章[6]中提到的RCF邊緣檢測方法,該方法充分利用了所有卷積層的信息,而不是池化之前的最后一層,使得檢測結(jié)果有了很大改善,用訓(xùn)練好的RCF網(wǎng)絡(luò)模型提取的輪廓二值圖如圖2所示。
如果想要在圖中定位出箱體的邊緣與頂點(diǎn),僅僅利用RCF網(wǎng)絡(luò)模型訓(xùn)練出的邊緣二值圖遠(yuǎn)遠(yuǎn)不夠,需要對邊緣二值圖做細(xì)化、提取最大輪廓、邊緣分類、直線擬合等預(yù)處理。
圖像細(xì)化,就是指二值圖像的骨架化的一種操作運(yùn)算,經(jīng)過一層層的剝離,從原來圖中去掉一些點(diǎn),但仍要保持原來的形狀。細(xì)化算法一定要滿足:(1)保持原圖的基本形狀;(2)減少筆畫相交處的畸變;(3)細(xì)化結(jié)果是原圖像的中心線;(4)細(xì)化的快速性和迭代次數(shù)少。為了達(dá)到比較好的細(xì)化結(jié)果,本文采用了Zhang等人1984年發(fā)表文章[4]中提到的細(xì)化算法。
由于將要測量箱體體積的環(huán)境不確定,在RCF邊緣檢測的時候可能有外部因素的干擾,導(dǎo)致邊緣二值圖圖中不僅有箱體的邊緣,而且存在不確定的物體邊緣;又因?yàn)橐獪y量的箱體占了圖像的主體部分,因此,需要提取邊緣二值圖的最大輪廓圖,就可以得到箱體的邊緣;本文通過算法實(shí)現(xiàn)提取的最大輪廓,效果如圖3所示。
圖3 由Figure 2右邊提取最大輪廓得到的結(jié)果圖
通過以上算法,可以得到準(zhǔn)確的箱體邊緣二值圖,但要想定位出箱體的邊緣與頂點(diǎn),我們需要把邊緣二值圖中的箱體邊緣進(jìn)行分類,讓左右圖中箱體的邊緣一一對應(yīng);本文,首先利用LSD[5]直線檢測算法,提取出箱體邊緣的直線;然后,把這些檢測到的直線利用K-means聚類算法,按照直線斜率以及位置關(guān)系進(jìn)行分類。
在邊緣分類以后,由于箱體的每一類邊緣都是由多條直線組成,因此我們需要把這些直線擬合成一條直線。而本文采用的是RANSAC直線擬合算法,該算法的主要思想是每一次選取兩點(diǎn),擬合一條直線,不僅要保證該條直線的內(nèi)點(diǎn)數(shù)達(dá)到總數(shù)的一定比例,而且該直線的斜率與所有直線的平均斜率接近,并且本文采用的是自適應(yīng)平均斜率;假設(shè)每條直線的斜率為gi,每條直線的長度為li,則自適應(yīng)平均斜率為:
圖2 左邊為雙目相機(jī)拍攝的原始圖像,右邊為RCF網(wǎng)絡(luò)模型提取的邊緣二值圖
然后,按照此步驟迭代K次,一旦擬合的直線數(shù)的內(nèi)點(diǎn)達(dá)到規(guī)定的值,就可以結(jié)束迭代;否則,就按迭代K次中得到的最大內(nèi)點(diǎn)數(shù)的那條直線為想要的直線。
以上所得到的都是在邊緣二值圖中得到的結(jié)果,想要在原圖中定位出邊緣與頂點(diǎn)則需要進(jìn)一步處理;由于邊緣二值圖和原圖是對應(yīng)關(guān)系,因此,首先在原圖進(jìn)行LSD直線檢測,再找到與邊緣二值圖中邊緣直線相似的直線,即斜率和位置相近,然后再次進(jìn)行RANSAC直線擬合,就可得到原圖的邊緣,最后利用直線相交得到箱體的頂點(diǎn);效果圖如圖4所示:
圖4 在原圖中定位的邊緣與頂點(diǎn)效果圖
雙目立體視覺測距是利用兩個攝像機(jī)對同一場景拍攝的左右圖像對進(jìn)行立體匹配,獲得包含場景三維信息的視差圖,根據(jù)視差圖和相機(jī)參數(shù),計(jì)算各個匹配點(diǎn)在場景中的深度信息。假設(shè)左右相機(jī)的像平面位于同一平面上,并且兩幅圖像是行對準(zhǔn)的,那么對于三維空間中的一個點(diǎn)P,其在左右兩幅圖像中的行坐標(biāo)分別為 xl、xr,則有:
其中,Z為三維空間點(diǎn)X與攝像機(jī)之間的距離,f為攝像機(jī)的焦距,B為兩幅攝像機(jī)的中心距,xl-xr,定義為視差值。為了得到場景的三維信息,還需要計(jì)算空間點(diǎn)P的X坐標(biāo)與Y坐標(biāo),假設(shè)x、y為P對應(yīng)的圖像坐標(biāo),相機(jī)的主點(diǎn)為(cx,cy),X方向的等效焦距和Y方向的等效焦距分別為 fx、fy,則有:
由于左右攝像機(jī)拍攝的是同一場景,那么左右圖像對中箱體的頂點(diǎn)存在一一對應(yīng)的關(guān)系,再根據(jù)雙目立體視覺測距的原理,就可以計(jì)算得到箱體各個頂點(diǎn)的三維信息;最后根據(jù)兩點(diǎn)之間的距離計(jì)算公式,就可得到箱體在三維空間中的長寬高。假設(shè)V表示箱體體積,則有V=l*w*h,其中l(wèi)、w、h分別為箱體的長寬高。
本文分別對7個不同的箱體進(jìn)行了實(shí)驗(yàn),具體的測量結(jié)果及誤差分析如圖5所示:
圖5 實(shí)驗(yàn)的測量結(jié)果與誤差分析
本文算法Linux環(huán)境以及雙目攝像機(jī)提出的一套箱體體積測量。實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)方法相比,提出的箱體體積測量算法,可以更智能、更快速、更準(zhǔn)確地計(jì)算出箱體體積,但仍有改進(jìn)空間。
[1]Gao R X,Wang J M.Volume Measurement of Coal based on Binocular Stereo Vision[J].Computer Systems&Applications,2014.
[2]Liu Z,Chen T.Distance Measurement System Based on Binocular Stereo Vision[C].International Joint Conference on Artificial Intelligence.IEEE,2009:456-459.
[3]Mao J,Lou X,Weixian L I,et al.Binocular 3D Volume Measurement System Based on Line-Structured Light[J].Optical Technique,2016,42(1).
[4]Zhang T Y.A Fast Parallel Algorithm for Thinning Digital Patterns[J].Communications of the Acm,1984,27(3):236-239.
[5]Grompone Von Gioi R1,Jakubowicz J.A Fast Line Segment Detector with a False Detection Control[J].IEEE Trans Pattern Anal Mach Intell,2010 Apr;32(4):722-32.
[6]Liu Y,Cheng M M,et al.Richer Convolutional Features for Edge Detection[J].CVPR,2017.