戴 睿 ,謝 雁
1.中國(guó)航空研究院 研究生院,江蘇 揚(yáng)州 225006;2.沈陽(yáng)飛機(jī)設(shè)計(jì)研究所 揚(yáng)州協(xié)同創(chuàng)新研究院,江蘇 揚(yáng)州 225006
隨著人工智能與傳感器技術(shù)的發(fā)展,智能小車(chē)[1-5]越來(lái)越成為工業(yè)場(chǎng)景下的巡檢工具。智能小車(chē)在執(zhí)行巡檢工作時(shí),首先通過(guò)攜帶的攝像頭采集周?chē)h(huán)境的信息;再通過(guò)計(jì)算機(jī)視覺(jué)算法對(duì)采集到的圖像信息進(jìn)行識(shí)別與處理,確定圖像中的障礙物與目標(biāo)物;最后通過(guò)一系列控制算法,對(duì)小車(chē)的運(yùn)動(dòng)進(jìn)行控制,使其完美地規(guī)避障礙物,從而順利到達(dá)目標(biāo)地點(diǎn)。
本文主要針對(duì)具有規(guī)則引導(dǎo)線(xiàn)的智能小車(chē)日常巡檢中的直線(xiàn)導(dǎo)引和弧線(xiàn)導(dǎo)引進(jìn)行研究。通過(guò)對(duì)采集到的圖像信息進(jìn)行識(shí)別,對(duì)目標(biāo)場(chǎng)景的引導(dǎo)線(xiàn)進(jìn)行閾值分割及邊緣檢測(cè);再通過(guò)霍夫變換及骨架提取算法分別對(duì)直線(xiàn)引導(dǎo)線(xiàn)和弧線(xiàn)引導(dǎo)線(xiàn)進(jìn)行追蹤;最后通過(guò)參數(shù)化方法確定智能小車(chē)的設(shè)定點(diǎn)和設(shè)定方向。算法流程如圖1所示。
圖1 行進(jìn)道路路線(xiàn)確定流程Fig. 1 Road route determination process
根據(jù)圖1 的算法流程,對(duì)于采集到的圖像信息需要進(jìn)行預(yù)處理,以減少圖像識(shí)別中的無(wú)關(guān)信息,提高圖像識(shí)別的魯棒性。本文主要通過(guò)圖像灰度化、尺寸調(diào)整、模式濾波[6]對(duì)采集到的圖像進(jìn)行預(yù)處理。由于智能小車(chē)在日常巡檢中需要對(duì)目標(biāo)場(chǎng)景的引導(dǎo)線(xiàn)進(jìn)行閾值分割及邊緣檢測(cè),而引導(dǎo)線(xiàn)的檢測(cè)無(wú)需色彩信息,因此首先將原始輸入圖像進(jìn)行灰度化處理;其次,為了提高算法的運(yùn)行速度,需要對(duì)輸入圖像進(jìn)行尺寸調(diào)整;最后,為了保留圖像的邊緣信息,濾除由于尺寸調(diào)整及原始輸入所產(chǎn)生的噪音點(diǎn),采用模式濾波器對(duì)調(diào)整過(guò)尺寸的圖像進(jìn)行濾波。經(jīng)過(guò)圖像預(yù)處理后,輸出圖像的像素計(jì)算如公式(1)所示。
式中:g(i,j)為輸出圖像像素點(diǎn)(i,j)的灰度值;f(k,l)為當(dāng)前輸入圖像像素點(diǎn)(k,l)的灰度值;S(i,j) 是 以(i,j) 為 中 心 的 濾 波 核 所 在 區(qū) 間;w(i,j,k,l) =ws?wr(ws為基于空間的高斯函數(shù),wr為基于像素的高斯函數(shù)),為由高斯函數(shù)經(jīng)過(guò)兩次計(jì)算得到的數(shù)值。
當(dāng)引導(dǎo)線(xiàn)圖像處于變化程度小的區(qū)域時(shí),wr無(wú)限趨近于1,此時(shí)模式濾波為高斯濾波;當(dāng)引導(dǎo)線(xiàn)圖像處于變化程度高的區(qū)域時(shí),wr與ws都無(wú)限趨近于0,此時(shí)可將圖像輸入。因此,通過(guò)模式濾波器能有效地保留引導(dǎo)線(xiàn)圖像的邊緣信息。
引導(dǎo)線(xiàn)圖像預(yù)處理前后的結(jié)果如圖2所示。
圖2 引導(dǎo)線(xiàn)圖像預(yù)處理前后的結(jié)果Fig. 2 Results before and after preprocessing of guide line image
由圖2可知,經(jīng)過(guò)模式濾波處理后的引導(dǎo)線(xiàn),其灰度值明顯區(qū)別于作為背景的周遭環(huán)境的灰度值,但還是不能滿(mǎn)足小車(chē)智能識(shí)別的需要,需要對(duì)其圖像進(jìn)行分割。本文使用閾值分割法對(duì)目標(biāo)圖像進(jìn)行分割,即通過(guò)最大化類(lèi)間方差法[7-8]計(jì)算引導(dǎo)線(xiàn)與背景之間的方差,如式(2)所示。
式中:σ2為引導(dǎo)線(xiàn)與背景之間的方差;k為灰度級(jí),取值范圍為0~255;pA(k)為像素被分到前景的概率;mA(k)為前景的平均灰度;pB(k)為像素被分到背景的概率;mB(k)為背景的平均灰度;mG為整個(gè)圖像的平均灰度值。
通過(guò)式(2)遍歷0~255 個(gè)灰度級(jí),求出引導(dǎo)線(xiàn)與背景之間方差σ2的最大值,此時(shí)的灰度級(jí)t即為分割引導(dǎo)線(xiàn)與背景的閾值。
以求出的閾值t為分界線(xiàn),通過(guò)閾值二值化分割法,將引導(dǎo)線(xiàn)區(qū)域(前景)的像素置為255,引導(dǎo)線(xiàn)周遭環(huán)境區(qū)域(背景)的像素置為0,如式(3)所示。
式中:s(x,y)、D(x,y)分別為二值化分割前、后的灰度值。
引導(dǎo)線(xiàn)圖像經(jīng)過(guò)二值化分割后即可進(jìn)行邊緣檢測(cè)。經(jīng)常使用的邊緣檢測(cè)算法有Sobel算子、拉普拉斯變換、Prewitt 算子、Roberts 算子、Canny算子[9]等。由于含有引導(dǎo)線(xiàn)的輸入圖像有較少的道路邊緣干擾,經(jīng)過(guò)二值化處理后進(jìn)行邊緣檢測(cè)時(shí)無(wú)需擔(dān)心因閾值設(shè)置不合理而導(dǎo)致有效的邊緣信息被去除;同時(shí)又排除了其他干擾,無(wú)需擔(dān)心輸入圖像中的噪聲干擾被視作邊緣而不會(huì)被表示出來(lái)等問(wèn)題,本文選用Canny 檢測(cè)算子對(duì)二值化處理后的引導(dǎo)線(xiàn)邊緣進(jìn)行檢測(cè),結(jié)果如圖3所示。
從圖3可以看出,Canny算子能夠很好地檢測(cè)出道路引導(dǎo)線(xiàn)的邊緣,滿(mǎn)足智能小車(chē)視覺(jué)導(dǎo)引的需求。
圖3 Canny二值化結(jié)果Fig. 3 Result of canny binarization
直線(xiàn)行駛的小車(chē)引導(dǎo)線(xiàn)圖像經(jīng)Canny 邊緣檢測(cè)后得到引導(dǎo)線(xiàn)邊界,再通過(guò)Hough 變換[10]檢測(cè)引導(dǎo)線(xiàn)的直線(xiàn)邊界,進(jìn)而通過(guò)兩邊界線(xiàn)求得道路中心線(xiàn),并與道路中心線(xiàn)的數(shù)學(xué)模型一起得到小車(chē)行進(jìn)過(guò)程中的設(shè)定點(diǎn)與設(shè)定方向。
運(yùn)用Hough變換檢測(cè)引導(dǎo)線(xiàn)邊界的算法如圖4所示,參數(shù)化引導(dǎo)如圖5所示。引導(dǎo)線(xiàn)邊界擬合算法流程如下:
圖4 引導(dǎo)線(xiàn)邊界擬合檢測(cè)算法Fig. 4 Detection algorithm of boundary fitting of line guide
(1)對(duì)圖3 二值化結(jié)果進(jìn)行Hough 變換,將其圖像空間轉(zhuǎn)換成參數(shù)空間。
(2)任意選取一個(gè)邊緣點(diǎn),如果該邊緣點(diǎn)落在已經(jīng)找到的直線(xiàn)上,則重新選擇邊緣點(diǎn);否則,通過(guò)累加器累加邊緣點(diǎn)個(gè)數(shù),得到累加值。
(3)通過(guò)峰值檢測(cè)函數(shù)找到累加器的最大累加值,與經(jīng)統(tǒng)計(jì)得到的閾值500 相比較。如果累加值大于或等于閾值,則執(zhí)行下一步;反之,返回步驟2重新選取邊緣點(diǎn)。
(4)將找到的邊緣點(diǎn)集通過(guò)擬合公式擬合,得到引導(dǎo)線(xiàn)的邊界。
(5)將引導(dǎo)線(xiàn)邊界繪制在圖5 上,并判斷邊緣點(diǎn)是否全部檢測(cè)。如果邊緣點(diǎn)全部檢測(cè)完畢,則流程結(jié)束;如果沒(méi)有,則返回步驟2,重復(fù)選取邊緣點(diǎn),直至邊緣點(diǎn)全部檢測(cè)。
圖5 引導(dǎo)參數(shù)化Fig.5 Parameterization of line guide
直線(xiàn)行走引導(dǎo)的目的是讓偏離引導(dǎo)線(xiàn)中心的小車(chē),通過(guò)給定的位置修正小車(chē)行駛過(guò)程中的位姿偏差。
假定攝像頭安裝在小車(chē)的前方正中心,攝像機(jī)捕捉到圖像的中心方向即小車(chē)的行駛方向。假定小車(chē)的初始位置為坐標(biāo)原點(diǎn)(0,0),觀測(cè)點(diǎn)距離小車(chē)位置為R,以小車(chē)質(zhì)心為圓心,觀測(cè)點(diǎn)到小車(chē)質(zhì)心距離為半徑作圓弧C,如圖5所示。
由于直線(xiàn)行走的小車(chē)其引導(dǎo)線(xiàn)邊緣相互平行,假定引導(dǎo)線(xiàn)的兩條邊緣線(xiàn)方程分別為x1=k1× y1+ c1(直線(xiàn)1)、x2= k2× y2+ c2(直線(xiàn)2),則引導(dǎo)線(xiàn)的中心線(xiàn)到兩邊的距離如式(4)所示。
由式(4)可得道路中心線(xiàn)的方程為x = k ×y + xe- ye,該中心線(xiàn)與圓弧C 的交點(diǎn)即為小車(chē)的設(shè)定點(diǎn)(xe,ye)。智能小車(chē)行駛時(shí)只需要根據(jù)設(shè)定點(diǎn)的坐標(biāo),通過(guò)運(yùn)動(dòng)控制策略即可實(shí)現(xiàn)實(shí)時(shí)位姿控制。
對(duì)弧線(xiàn)引導(dǎo)的道路圖像采用直線(xiàn)引導(dǎo)道路圖像相同的預(yù)處理操作,得到經(jīng)Canny 邊界提取后的二值化圖像,通過(guò)圖像骨架提取算法提取弧線(xiàn)道路的中心線(xiàn);以智能小車(chē)質(zhì)心為圓心,質(zhì)心與觀測(cè)點(diǎn)之間的距離為半徑作圓弧,中心線(xiàn)與圓弧的交點(diǎn)即為設(shè)定點(diǎn);以設(shè)定點(diǎn)為圓心搜索弧形引導(dǎo)線(xiàn)輪廓邊界到設(shè)定點(diǎn)的最小距離,該最小距離的垂線(xiàn)方向即為設(shè)定方向。
弧線(xiàn)引導(dǎo)道路的中心線(xiàn)是弧線(xiàn)引導(dǎo)道路的中軸,也是智能小車(chē)行駛的最短路徑,因此弧線(xiàn)引導(dǎo)道路的骨架提取問(wèn)題本質(zhì)上是最短路徑規(guī)劃問(wèn)題。本文應(yīng)用Astar 最短路徑搜索算法對(duì)弧形引導(dǎo)線(xiàn)進(jìn)行骨架提取,解決了骨架提取算法提取的骨架偏離引導(dǎo)線(xiàn)中軸的問(wèn)題。骨架提取算法流程如圖6所示。
圖6 中,首先對(duì)Canny 檢測(cè)后的二值圖片進(jìn)行距離變換,得到弧形引導(dǎo)道路的距離場(chǎng),再經(jīng)過(guò)分水嶺算法獲取含有引導(dǎo)道路的骨架潛在圖;同時(shí)由主動(dòng)輪廓模型確定引導(dǎo)道路的凸點(diǎn),通過(guò)引導(dǎo)道路中心線(xiàn)端點(diǎn)到引導(dǎo)道路凸包的距離對(duì)引導(dǎo)線(xiàn)的骨架點(diǎn)進(jìn)行篩選,得到骨架關(guān)鍵點(diǎn);利用 Astar 算法搜索引導(dǎo)道路的骨架關(guān)鍵點(diǎn),從而得到引導(dǎo)線(xiàn)的骨架,如圖7所示。
圖6 骨架提取算法流程Fig. 6 Skeleton extraction algorithm flow
由圖7 可以看出,通過(guò)此方法得到的引導(dǎo)線(xiàn)骨架十分接近引導(dǎo)線(xiàn)的中心線(xiàn),說(shuō)明基于Astar的骨架提取算法在弧形引導(dǎo)線(xiàn)的骨架提取中非常適用。
圖7 弧形道路的骨架提取Fig. 7 Skeleton extraction of curved road
同直線(xiàn)行走引導(dǎo)相似,以智能小車(chē)質(zhì)心為圓心,質(zhì)心到觀測(cè)點(diǎn)的距離為半徑作圓弧D,圓弧D與弧形道路中心線(xiàn)即骨架輪廓線(xiàn)的交點(diǎn)即為智能小車(chē)的設(shè)定點(diǎn),如圖8所示。
圖8 弧形道路引導(dǎo)示意圖Fig. 8 Schematic diagram of arc-shaped road guidance
由于弧形道路中心線(xiàn)沒(méi)有一個(gè)通用的數(shù)學(xué)程式去建模,因此為簡(jiǎn)化算法,本文采用遍歷的思想,以設(shè)定點(diǎn)為圓心,在道路區(qū)間找尋最大內(nèi)切圓,從而求得設(shè)定點(diǎn)與兩邊界線(xiàn)距離和的最小值,如式(5)。
式中:(xl,yl)、(xr,yr)分別為小車(chē)的設(shè)定點(diǎn)(x′e,y′e)到左、右兩側(cè)邊界線(xiàn)的交點(diǎn)。
由式(5)可以得到道路中心線(xiàn)的方程為x=k × y + x′e- y′e,該中心線(xiàn)與圓弧D 的交點(diǎn)即為小車(chē)的設(shè)定點(diǎn)(x′e,y′e)。智能小車(chē)行駛時(shí)只需要根據(jù)設(shè)定點(diǎn)的坐標(biāo),通過(guò)運(yùn)動(dòng)控制策略即可實(shí)現(xiàn)實(shí)時(shí)位姿控制。
圍繞智能小車(chē)視覺(jué)導(dǎo)引,采用C++編程輔以O(shè)PENCV 庫(kù)處理圖像,采用Hough 變換法、Astar骨架提取法找尋引導(dǎo)道路中心線(xiàn);引入引導(dǎo)道路參數(shù)化模型,確定智能小車(chē)的設(shè)定點(diǎn)與設(shè)定方向。實(shí)驗(yàn)結(jié)果表明,提出的引導(dǎo)線(xiàn)參數(shù)化方法,降低了智能小車(chē)導(dǎo)引的復(fù)雜度,能滿(mǎn)足具有規(guī)則引導(dǎo)線(xiàn)的智能小車(chē)的日間巡檢。