?

基于邊緣特征點篩選的被遮擋盲道檢測算法

2022-01-06 09:20趙建國
科學技術與工程 2021年34期
關鍵詞:盲道邊緣邊界

張 遠,趙建國

(鄭州大學機械與動力工程學院,鄭州 450052)

隨著互聯網不斷發展,人們對于弱勢群體的關注越來越密切,如何設計出能夠安全可靠輔助盲人出行的設備成為研究熱點?;跈C器視覺與圖像處理的導盲設備因其成本低、通用性強而具有很重要的研究與實用價值[1],而準確檢測出盲道邊界是此類導盲設備的基礎。

目前盲道識別大致可分為兩類。第一類為基于模型與特征在灰度圖上進行檢測的傳統方法。文獻[2-3]提出將圖像轉至HSV(hue saturation value)空間后對色相通道進行閾值化,利用盲道的紋理以及直接在原圖上進行Hough變換檢測直線來確定盲道邊界。閆志杰等[4]采用聚類的方法針對盲道的顏色特征進行分割提取并在不同時間和不同的天氣條件下進行試驗。魏彤等[5]提出一種邊界跟蹤的盲道識別算法,首先考慮陰影對盲道的影響,使用灰度共生矩陣與模糊C均值聚類結合的方法,提取盲道區域后對檢測出的盲道邊界進行跟蹤識別。彭玉青等[6]使用顏色直方圖特征結合改進的區域生長法[7]、灰度共生矩陣以及模糊C均值聚類針對不同類型的盲道進行了識別與分割。周毅等[8]使用顏色信息對盲道進行混合高斯模型建模實現盲道的檢測與跟隨。上述方法復雜度較低,檢測時間短,但檢測精度還有待提升,且使用包含信息較少的灰度圖像或是單一顏色特征,所以通常只適于特定環境,不具備較強的適應性。第二類為機器學習的方法。魏彤等[9]提出了基于機器學習聯合分水嶺分割的算法:首先采集大量盲道圖像進行離線訓練,然后進行視角轉換并運用局部二進制模式提取紋理特征,最后使用分類器分類聯合分水嶺算法定位盲道區域。Liu等[10]提出使用卷積神經網絡模型U-net并制作訓練集進行訓練,實現了對盲道的分割與檢測。Cao等[11]為了減少網絡模型參數和提高語義分割檢測速度,采用深度可分離卷積作為模型基本模塊構建輕量級語義分割網絡,實現了對盲道和人行道的快速檢測。因采用彩色圖像進行訓練,上述方法檢測精度較好且響應時間短;不足之處為制作數據集時采集圖像的質量,盲道類型等都會影響檢測結果,且網絡模型一旦建立便很難更改;整個過程消耗資源巨大,不適于廣泛應用。

無論是傳統還是機器學習的方法都將盲道視為十分整潔的道路。而盲道上存在落葉的情況時有發生,忽略其影響必將導致大量誤檢甚至檢測失敗,向使用者傳達錯誤信息繼而影響其人身安全,所以對盲道上存在落葉的情況進行研究是十分必要的。針對傳統方法檢測精度低、機器學習方法消耗資源過多以及盲道上存在落葉等問題,現提出一種基于邊緣特征點篩選的盲道檢測算法。首先使用包含更多信息的彩色圖像精確提取盲道區域,然后對其進行圖像預處理、邊緣檢測和直線檢測得到若干盲道邊界候選線,最后運用邊緣特征點篩選的方法確定真正的盲道邊界,以期在落葉遮擋情況下準確提取盲道區域并檢測出盲道邊界。

1 提取盲道區域

提取出精確的盲道區域是進行盲道邊界檢測的基礎,分粗提取和精確提取兩部分完成盲道區域的提取。粗提取使用盲道顏色信息進行顏色篩選并結合Lab空間b通道二值化完成;精確提取則使用粗提取結果運用GrabCut算法完成。

1.1 粗提取盲道區域

1.1.1 顏色篩選

盲道區域通常為醒目的黃色,如果使用顏色信息對彩色圖像進行顏色篩選,就可以得到盲道大致區域;但圖像采集設備采集的RGB(red green blue)格式圖像不適合顏色篩選,所以將圖像轉至HSV顏色空間進行顏色篩選,轉換公式為

(1)

Cmax=max(R′,G′,B′),Cmin=min(R′,G′,B′)

Δ=Cmax-Cmin

(2)

(3)

(4)

V=Cmax

(5)

式中:H為色度值;S為飽和度值;V為亮度值;R、G、B為某像素在RGB空間坐標值;Cmax、Cmin分別為R′、G′、B′三者中最大、最小值,Δ為二者之差;max、min分別為取多個值中的最大、最小值操作。

圖像轉至HSV顏色空間后,通過限制HSV各個分量至指定取值范圍:H[h1,h2],S[s1,s2],V[v1,v2],就可以完成顏色篩選,其中:h1、h2、s1、s2、v1、v2分別為色度H、飽和度S、亮度V的上下極限值。對采集到不同程度光照、落葉影響的盲道進行顏色篩選的結果如圖1所示,可以看到,經過顏色篩選,盲道區域能夠被提取出來。

圖1 不同程度光照和落葉的顏色篩選結果Fig.1 Color screening results with different degrees of light and fallen leaves

1.1.2 Lab空間b通道閾值化

采集設備采集的圖像易受光照等因素影響,光照會影響圖像亮度,繼而影響盲道提取結果,因而為減少光照影響,需要將圖像轉至Lab顏色空間。Lab顏色空間與設備無關,L分量表示圖像亮度;a、b分量僅表示圖像顏色,與亮度無關;其中a分量表示紅色到綠色,b分量表示黃色到藍色。盲道顏色為黃色,對應于b通道,將b通道二值化即可提取盲道區域。RGB圖像轉至Lab顏色空間的方法與RGB圖像轉至HSV顏色空間方法類似,但需先將RGB圖像轉換到XYZ空間(CIE1931色彩空間)。不同光照圖像b通道二值化結果如圖2(a)所示。

1.1.3 粗提取結果

顏色篩選雖可以指定范圍篩選顏色,但易受光照影響,光照過強時會將盲道與非盲道區域混淆;Lab空間b通道不受光照影響,但其顏色范圍不止包含黃色,將其二值化時容易檢測出盲道區域和其顏色范圍內非盲道區域的其他物體。因此為增強粗提取結果魯棒性,綜合顏色篩選和b通道二值化的結果,方法為將兩幅二值圖像進行邏輯與運算,邏輯與運算計算二者的交集:如果二者某一相同位置像素值相同則取相同值,否則取值0為。不同光照下粗提取的結果如圖2(b)所示。

圖2 不同程度光照和落葉的b通道二值化及粗提取結果Fig.2 b channel binarization and coarse extraction results with different degrees of light and fallen leaves

1.2 精確提取盲道區域

1.2.1 GrabCut算法

GrabCut算法將圖像映射為一幅帶權無向圖[12],使用K個(取K=5)高斯分量組成混合高斯模型(Gaussian mixture model,GMM)對前景和背景進行建模,且圖像中的每個像素只能取自前景或者背景GMM的某個高斯分量,圖像分割問題便可轉化為如何最小化圖像能量的問題[13],定義吉布斯能量函數為

E(α,k,θ,z)=U(α,k,θ,z)+V(α,z)

(6)

式(6)中:

(7)

D(αn,kn,θ,zn)=-lnπ(αn,kn)p(zn|αn,kn,θ)

(8)

(9)

θ={π(α,k),μ(α,k),Σ(α,k)},k=1,…,K

(10)

式中:m、n為不同像素;z為像素灰度值;k為第k個高斯分量(k=1,…,K);α為透明度系數:α=0代表背景,α=1代表前景;β為常數項;γ為經驗系數;θ為由每個高斯分量的權重π、均值向量μ以及協方差矩陣Σ組成的GMM系數。

如果某個像素歸類于正確標簽(前景/背景)的概率越大,則區域項U越??;如果某兩個像素越相似,則它們屬于同一標簽(前景/背景)的概率越大,邊界項V越大。設定一個初始GMM參數后對所有像素進行分類,不斷迭代,直至達到預先設定好的精度或迭代次數為止。然后使用最后一次GMM參數正確標記每個像素,圖像的前景和背景便精確地分割開來。

1.2.2 提取盲道區域

使用OpenCV庫可以實現GrabCut算法,使用模式為GC_INIT_WITH_RECT,即需要找到一個前景所在矩形框提取前景(前景為盲道區域),此矩形框內部為可能前景,外部為確定背景。粗提取結果存在多個輪廓,這些輪廓有的由落葉單獨形成,有的由盲道與落葉相互作用共同形成,只有最大輪廓可以找到所需矩形框,提取出精確的盲道區域。

查找粗提取結果所有輪廓并統計像素數目,最多者即為最大輪廓,計算該輪廓最小外接矩形,將其內部設為可能前景,外部設為確定背景,運用GrabCut算法就可以將盲道區域提取出來。如圖3所示正常光照的盲道圖像,盡管存在落葉干擾,盲道區域還是被精確地提取出來。

圖3 提取盲道區域Fig.3 Extraction of blind track area

2 確定盲道邊界候選線

為檢測出真正的盲道邊界,需要獲取若干邊界候選線。雖已精確提取出盲道區域,但圖像采集過程中采集設備晃動或存在干擾等因素會影響圖像質量,因此需要對盲道圖像進行預處理以突出盲道邊界特征,之后進行邊緣檢測和Hough直線檢測。

2.1 盲道區域圖像預處理

已得到的精確盲道區域圖像為含有大量信息的彩色圖像,如果直接對其進行盲道邊界檢測會增加計算量,影響算法實時性。因此采用加權平均法將彩色圖像轉為灰度圖像以保證算法實時性,灰度化公式為

Gray=0.299R+0.587G+0.114B

(11)

采集的圖像不免有各種噪聲,這些噪聲的存在可能會影響后續盲道邊界檢測,因此對灰度化后的圖像采用中值濾波的方式去除噪聲。中值濾波為非線性濾波,去除噪聲同時可以最大限度保留圖像邊緣信息,使用時將一個N*N(N為奇數,取N=3)的窗口在整個圖像上滑動,將當前窗口覆蓋的N2個像素從小到大排列,以所有像素中值取代當前窗口的中心像素,中值濾波公式為

c=median[f(x-1,y-1),…,f(x,y),…,

f(x+1,y+1)]

(12)

式(12)中:c為濾波后的像素值;median[]為取中值操作;f為某位置像素值;f(x,y)為3*3矩陣的中心像素值。

盲道區域灰度化和中值濾波結果如圖4所示。

圖4 灰度化和中值濾波Fig.4 Grayscale and median filtering

將去除噪聲后的盲道區域圖像二值化以獲得檢測盲道邊界所需的邊緣特征,由于背景像素大多為零,因此可采用最常用且有效的最大類間方差法進行二值化。二值化后的盲道區域可能存在孔洞,而孔洞的存在可能會影響后續的直線檢測。為消除孔洞影響,采用形態學閉運算進行填補[14]。

膨脹運算:

(13)

腐蝕運算:

(14)

閉運算:

f·g=(f⊕g)Θg

(15)

式中:f(x,y)為輸入圖像;(i,j)為某像素坐標;g(i,j)為結構元素;⊕和Θ分別為形態學膨脹和腐蝕。

二值化以及形態學閉運算結果如圖5所示,可以看到,形態學閉運算后二值圖像孔洞消失。

圖5 圖像預處理結果Fig.5 Image preprocessing results

2.2 盲道邊緣特征提取

確定盲道邊界候選線需要提取二值圖像邊緣特征,采用Canny邊緣檢測可以精確找到圖像中盡可能多的邊緣,檢測出的邊緣點精確定位于邊緣的中心且噪聲不產生偽邊緣[15],檢測步驟如下。

(1)應用高斯濾波去除噪聲,即采用高斯函數平滑圖像[16]。

(16)

fs(x,y)=G(x,y)*f(x,y)

(17)

式中:σ為方差;f(x,y)為原始圖像;G(x,y)為高斯函數;fs(x,y)為平滑后的圖像;*為卷積操作。

(2)計算梯度幅值和方向。

(18)

(19)

式中:gx、gy分別為x、y方向的梯度圖像。M(x,y)為梯度幅值圖像;α(x,y)為角度圖像。

(3)非極大值抑制,逐一訪問梯度圖像所有像素,只保留某像素周圍像素點中同方向的最大值,得到細化邊緣圖像gN(x,y)。

(4)雙閾值確定邊緣,設置高低閾值TH和TL對細化邊緣圖像進行閾值處理,得到最終邊緣圖像。二值盲道區域圖像Canny邊緣檢測結果如圖6(a)所示。

2.3 盲道邊界候選線確定

為了后續準確檢測出盲道邊界,采用Hough變換對邊緣圖像進行直線檢測。Hough變換利用圖像空間和參數空間線與點的對偶性,將圖像空間中的檢測問題轉換到參數空間中進行[17]。若盲道邊界沒有或只有少量落葉,對邊緣圖像進行Hough直線檢測就可以檢測出盲道邊界;若較多的落葉覆蓋在盲道邊界上,則落葉可能會在邊緣圖像的盲道邊界附近產生大量干擾,使傳統Hough直線檢測很難設定能夠同時準確檢測出兩條邊界線的參數。為此可采用邊緣特征點篩選的方法確定真正盲道邊界,此方法需要檢測出若干盲道邊界候選線;經反復實驗驗證,設置Hough直線檢測參數最小直線長度minLineLength=25,最大直線間隔maxLineGap=5檢測出多條邊界候選直線;分析實驗樣本圖像發現,一般情況下盲道邊界線角度絕對值大于70°,因此在直線檢測時應限制直線角度,避免檢測出非盲道邊界直線。Hough直線檢測結果如圖6(b)所示,可以看到真實盲道邊界附近檢測出多條長度不同,方向角度有所差異的盲道邊界候選線。

圖6 邊緣檢測與Hough直線檢測Fig.6 Edge and Hough line detection

3 盲道邊界檢測

通過對盲道區域圖像進行預處理、邊緣檢測和Hough直線檢測,提取出了若干盲道邊界候選線,顯然候選線方向上的邊緣特征點越多越接近真實盲道邊界。對同一側的不同候選線而言,雖然彼此角度和方向相差不大,但隨著候選線的延長,其方向上的邊緣特征點數目將會逐漸出現差異,下一步使用邊緣特征點數目對候選線進行篩選和修正。

3.1 初步篩選候選線

盲道左右邊界附近已檢測出多條候選線,計算這些候選線方向上的邊緣特征點數目對其進行初步篩選。以右側第一條候選線為例:在一張新的二值圖像上將此線段延長至圖像邊界,且新的二值圖像只有該延長線上的像素數值為255;將新的二值圖像與邊緣圖像進行與運算,統計與運算結果非零點像素數目,即為該候選線方向上的邊緣特征點數目;真正的盲道邊界為兩條經過圖像邊界的直線,且具有足夠多的邊緣特征點,因此設置邊緣特征點數目閾值T1,計算所有候選線邊緣特征點數目,只保留邊緣特征點數目大于閾值T1者,完成對候選線的初步篩選。

3.2 確定真正盲道邊界

經初步篩選后,左右邊界候選線數量已經大幅度減少,且剩余候選線都極可能是盲道邊界線,取左右候選線中最長者作為進一步判斷對象。以右側最長候選線為例:計算該線段的中點(x,y),設置邊緣特征點數目閾值T2,首先保持x方向不變,以中點為中心將該線段在y方向每次平移一個像素(一般y方向上下各平移一個像素),記此時線段位置為Y,即

Y:(x,y-1),(x,y),(x,y+1)

(20)

每次平移后保持y方向不變,以中點為中心將該線段在x方向每次平移一個像素(一般x方向左右各平移兩個像素),記此時線段位置為X,即

X:(x-2,y),(x-1,y),(x,y),(x+1,y)(x+2,y)

(21)

顯然一個位置Y對應與多個位置X,對該候選線而言,角度也決定了它是否為盲道邊界,因此還需將其旋轉。設初始角度為S0,每次旋轉s度(正負方向均進行旋轉,最大旋轉角度為D度),記此時線段角度為S。

S:S0-D,…,S0,…,S0+D

(22)

每旋轉一個角度統計當前角度的邊緣特征點數目,統計方法與初步篩選候選線所用方法相同,直到完成預先設定的所有平移位置與旋轉角度,可以得到該候選線在多個位置、角度的邊緣特征點數目矩陣N。計算矩陣N的最大元素值nmax并與閾值T2進行比較:如果nmax大于T2,表明該候選線為真正的盲道邊界;如果nmax小于T2,則表明該候選線不是盲道邊界,需要對候選線中次長者進行判斷,直至某候選線對應最大邊緣特征點數目大于T2為止。簡要步驟如下。

(1)取候選線中最長者,以其中點為基準在y方向平移多個位置Y1,Y2,…。

(2)對應每個位置Yi,將線段在x方向平移多個位置X1,X2,…。

(3)對應于確定位置(Xi,Yi),以該線段中點為中心,正負方向旋轉多個角度,計算每個角度的邊緣特征點數目,得到邊緣特征點數目矩陣N以及N的最大元素值nmax。

(4)將nmax與閾值T2進行比較:如果nmax大于閾值T2,則該值對應候選線即為真正盲道邊界;如果nmax小于閾值T2,則將對應候選線刪除后返回步驟1,直到某候選線在某個位置與角度的邊緣特征點數目最大值大于閾值T2,完成盲道邊界確定。

某位置Yi的x方向不同位置不同角度的邊緣特征點數目如圖7所示,可以看到位置3對應角度為-0.5°時的邊緣特征點最多,即該位置角度對應候選線為真正盲道邊界。

圖7 某位置邊緣像素數目Fig.7 Number of edge pixels at one location

4 實驗結果與分析

當盲道被落葉不同程度、不同位置遮擋時,因未考慮落葉影響,傳統基于灰度等特征的檢測算法容易出現失誤。表現為檢測不到盲道邊界、只檢測到一側邊界、能檢測出兩側邊界但偏離真正盲道邊界等現象,一些典型失誤如圖8所示。檢測不到盲道邊界或只檢測到一側邊界會造成系統失效,無法為使用者指引方向;能檢測出兩側邊界但與真實邊界誤差較大則會為使用者指引錯誤方向,這些失誤容易對使用者人身安全造成威脅,應極力避免。本文算法能夠在盲道正常以及被遮擋的情況下準確檢測出盲道邊界,檢測結果如圖9所示。

圖8 傳統算法典型失誤Fig.8 Typical mistakes of traditional algorithms

圖9 本文算法Fig.9 Algorithm in this paper

為對比本文算法與傳統算法檢測結果,現將檢測結果量化,定義盲道覆蓋面積為:算法檢測出的邊界線與圖像邊界所圍封閉區域內的真實盲道區域像素點數目,若沒有組成封閉區域則盲道覆蓋面積為零;標注并計算真實盲道區域面積A,記傳統算法檢測出的盲道邊界偏離正確邊界時[圖8(b)]盲道覆蓋面積為A1,本文算法檢測出的盲道覆蓋面積為A2,定義盲道覆蓋率R為

(23)

經計算,真實盲道區域面積A=40 451,傳統算法與本文算法檢測出的盲道覆蓋面積分別為A1=37 945、A2=39 951,二者盲道覆蓋率分別為

(24)

(25)

可見,對于圖8所示盲道圖像,本文算法相比于傳統算法盲道區域覆蓋率提升5%左右。

傳統與本文算法檢測出的邊界線角度分別為ld1、rd1和ld2、rd2,定義邊界線偏離比L為

(26)

對于盲道圖像(圖8),傳統算法檢測出的左右邊界線角度分別為ld1=-85.236°、rd1=78.690°;本文算法檢測出的左右邊界線角度分別為ld2=-83.909°、rd2=82.269°;由圖9(b)可知,本文算法檢測出的邊界線沒有偏離真正盲道邊界,而傳統算法檢測出的左右邊界線都有一定程度偏離,偏離比Ll1、Lr1分別為1.58%、4.35%。雖然傳統算法盲道覆蓋率達到93.80%,但是檢測出的邊界線都不同程度偏離真正邊界,將會導致導盲設備為使用者指引錯誤方向;而本文算法不僅檢測出的盲道區域覆蓋率高,且檢測出的邊界線不偏離真正的盲道邊界。

盲道上落葉的位置、數量都是隨機的,對算法影響也有不同。所以為進一步驗證算法有效性,使用手機模擬頭戴式導盲儀在鄭州市科學大道采集多段尺寸為544×960的視頻,共計2 030幀;其中包括盲道正常以及被落葉不同程度、不同位置遮擋的圖像。實驗硬件為Intel Core i7-6700HQ CPU、8 GB RAM、NVIDIA GTX 960M GPU的PC機,實驗軟件平臺及編程環境為PyCharm和 Python3.7+OpenCV4.4。同時為驗證算法抗干擾性,實驗時隨機選取200張圖像加入椒鹽噪聲后進行盲道邊界檢測,部分結果如圖10所示。

為進一步對比傳統算法與本文算法,計算采集到的所有圖像平均盲道覆蓋率、平均邊界線偏離比和綜合檢測準確率作為算法的評估指標,實驗對比結果如表1所示。

分析檢測結果發現,傳統算法發生大量誤檢與漏檢是由于盲道區域提取不夠精確以及覆蓋在盲道邊界上的落葉影響了Hough直線檢測造成的。通過對比實驗結果可以看出:本文算法平均盲道覆蓋率高于傳統算法14%,具有較高的穩定性;平均邊界線偏離比相比傳統算法降低8.3%,應用于導盲設備時可以為使用者指引更加準確的前進方向;漏檢幀數和誤檢幀數都遠少于傳統算法,綜合檢測準確率達到97.54%,每張圖片檢測平均用時0.11 s,準確率和實時性均能滿足盲人使用要求;且具備一定的抗干擾能力,有噪聲存在情況下仍能準確檢測出盲道邊界。

圖10 本文算法部分檢測結果Fig.10 Some results of algorithm in this paper

表1 實驗對比結果Table 1 Experimental comparison results

5 結論

針對傳統盲道檢測算法不能應對被落葉遮擋的盲道,容易出現誤檢等問題,提出了一種基于邊緣特征點篩選的被遮擋盲道檢測算法,經過理論分析和實驗驗證,得出以下結論。

(1)提出一種精確的盲道提取方法,主要包括基于顏色篩選與單通道二值化結合的粗提取和基于GrabCut算法的精確提??;該方法使用彩色圖像提取盲道,在落葉遮擋盲道情況下仍能精確提取盲道區域,魯棒性好,精度高。

(2)提出一種基于邊緣特征點篩選的盲道邊界檢測算法,通過計算比較多條候選線在多個位置與角度的邊緣特征點數目,確定出真正盲道邊界。

(3)實驗結果表明,當盲道被落葉不同程度、不同位置遮擋時,相比于傳統算法,本文算法能精確提取盲道區域,準確檢測出盲道邊界,并具有一定的抗干擾能力與較好的實時性,為基于機器視覺與圖像處理的導盲設備提供了更完善的理論支持。

猜你喜歡
盲道邊緣邊界
守住你的邊界
拓展閱讀的邊界
探索太陽系的邊界
“盲道十八彎”之憂
意大利邊界穿越之家
盲道
一張圖看懂邊緣計算
請為盲人留出一條道
盲道?停車道?
在邊緣尋找自我
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合