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