本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,特別是一種基于快速霍夫變換的路口斑馬線檢測(cè)方法。
背景技術(shù):
無(wú)人駕駛汽車從根本上改變了傳統(tǒng)的人—車控制方式,將不可控的駕駛員從駕駛中分離出去,從而大大提高了交通系統(tǒng)的效率和安全性。無(wú)人駕駛汽車需要通過(guò)各類感知器對(duì)道路信息、車輛位置和障礙物信息進(jìn)行采集和運(yùn)算,實(shí)時(shí)分析復(fù)雜的道路情況,并通過(guò)總控程序給車輛作出最優(yōu)的行駛選擇。其中計(jì)算機(jī)視覺(jué)在對(duì)路況分析和處理中起到至關(guān)重要的作用,也是無(wú)人駕駛能否成功的關(guān)鍵。如何準(zhǔn)確識(shí)別和判斷出公路上的各類事物是進(jìn)行進(jìn)一步分析和處理的前提條件,例如,汽車若能對(duì)路口的斑馬線進(jìn)行提前識(shí)別,則能在通過(guò)路口時(shí)提前告知總控程序要對(duì)汽車進(jìn)行減速處理,從而增強(qiáng)了汽車行駛的安全性。
現(xiàn)有的技術(shù)通常采用模式匹配的方法,對(duì)公路上的各類事物通過(guò)采集大量的圖像數(shù)據(jù)讓計(jì)算機(jī)進(jìn)行學(xué)習(xí)并進(jìn)一步分類,然后在實(shí)際運(yùn)行環(huán)境中對(duì)實(shí)時(shí)拍攝到的公路圖像進(jìn)行模式匹配,將匹配度高的結(jié)果作為物體識(shí)別的結(jié)果。然而該方法需要大量的訓(xùn)練數(shù)據(jù),對(duì)不同類的物體運(yùn)用同樣的訓(xùn)練方法,忽略了物體間的差異性,從而導(dǎo)致計(jì)算量很大,而且對(duì)某些路況,如公路上的地面標(biāo)志信息的識(shí)別精確度較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是克服現(xiàn)有技術(shù)的不足而提供一種基于快速霍夫變換的路口斑馬線檢測(cè)方法,以準(zhǔn)確高效地對(duì)公路上的斑馬線進(jìn)行識(shí)別檢測(cè)。
本發(fā)明為解決上述技術(shù)問(wèn)題采用以下技術(shù)方案:
根據(jù)本發(fā)明提出的一種基于快速霍夫變換的路口斑馬線檢測(cè)方法,包括以下步驟:
步驟1、采集公路圖像,對(duì)公路圖像進(jìn)行灰度處理,得到處理后的n×n圖像矩陣g,n代表g中的行數(shù)和列數(shù);
步驟2、對(duì)g進(jìn)行高斯濾波操作,得出更新后的矩陣g′;具體步驟如下:
步驟21、定義模糊半徑r和大小為r*r的模糊矩陣,利用高斯函數(shù)計(jì)算模糊矩陣中每個(gè)元素的值,r<n且r為奇數(shù);
步驟22、對(duì)模糊矩陣中的元素做歸一化處理:計(jì)算模糊矩陣中元素的和sp,并將模糊矩陣中每個(gè)元素除以sp,得到歸一化后的模糊矩陣p;
步驟23、定義矩陣g′=g,計(jì)算更新
步驟3、對(duì)步驟2得到的矩陣g′做邊緣檢測(cè);具體步驟如下:
步驟31、計(jì)算g′(i,j)的水平方向梯度dx(i,j)=g′(i,j+1)-g′(i,j);
步驟32、計(jì)算g′(i,j)的垂直方向梯度dy(i,j)=g′(i+1,j)-g′(i,j);
步驟33、計(jì)算g′(i,j)的梯度值
步驟34、對(duì)矩陣g′中每個(gè)元素的梯度值進(jìn)行非極大值抑制:對(duì)于g′(i,j),若在α(i,j)方向上的若干個(gè)元素梯度值當(dāng)中,d(i,j)為極大,則g′(i,j)=255;否則g′(i,j)=0;
步驟4、用雙閾值算法對(duì)矩陣g′中的邊緣進(jìn)行連接,具體步驟如下:
步驟41、定義一個(gè)高閾值λ,對(duì)矩陣g′中的元素按梯度值進(jìn)行排序,排序后的元素個(gè)數(shù)為m個(gè);取排序后的前ω*m個(gè)元素中梯度值最大的元素,該元素所對(duì)應(yīng)的梯度值作為λ的值,其中,0.6≤ω≤0.8,且ω*m向下取整;掃描矩陣g′中的每個(gè)元素,對(duì)于元素g′(i,j),若d(i,j)<λ,則g′(i,j)=255,否則g′(i,j)不變;
步驟42、定義一個(gè)低閾值μ,且
步驟43、重復(fù)步驟42,直到對(duì)矩陣g′中所有的元素都判斷完畢;
步驟5、對(duì)矩陣g′中的元素進(jìn)行快速霍夫變換;具體步驟如下:
步驟51、在矩陣g′中任取一個(gè)g′(i,j),判斷g′(i,j)是否等于0,若是則把該元素加入集合s中,執(zhí)行步驟52,否則重新執(zhí)行步驟51;
步驟52、記新加入集合s中的元素為q,依次對(duì)q的鄰域內(nèi)的元素進(jìn)行判斷,若q的鄰域中存在像素點(diǎn)的值等于0的元素,且該元素不屬于集合s,則將該元素加入s中;
步驟53、重復(fù)步驟52直到集合s不再擴(kuò)大為止;
步驟54、選取集合s中距離最遠(yuǎn)的兩個(gè)元素作為線段s的端點(diǎn),線段s的端點(diǎn)坐標(biāo)分別記為(x1,y1)和(x2,y2),計(jì)算集合s中該線段最大的偏離距離d=max{[(y3-y1)(x2-x1)-(x3-x1)(y2-y1)]/l},(x3,y3)為集合s中元素的坐標(biāo)且(x3,y3)≠(x1,y1),(x2,y2);
步驟55、定義偏離比
步驟56、經(jīng)過(guò)步驟55,集合s被劃分成若干個(gè)子集:{s1,s2,...,sn},n為s被劃分成的子集個(gè)數(shù);取矩陣g′的第n行第1列元素的左下方任意一點(diǎn)作為坐標(biāo)原點(diǎn)(0,0),以矩陣g′的行方向?yàn)閤軸正方向,以矩陣g′的列方向?yàn)閥軸正方向,構(gòu)建出平面直角坐標(biāo)系,使得矩陣g′位于該坐標(biāo)系的第一象限;在步驟55得到的每個(gè)子集中,選取υ個(gè)元素,過(guò)這些元素作與x軸負(fù)方向且直線向上方向的夾角為1度到180度的直線,以<距離,夾角>的形式記錄坐標(biāo)原點(diǎn)(0,0)到每條直線的距離和每條直線向上方向與x軸負(fù)方向形成的夾角;
步驟57、對(duì)于每一組<距離,夾角>,統(tǒng)計(jì)與其在距離和夾角上都相同的<距離,夾角>的個(gè)數(shù),若個(gè)數(shù)大于ε,則該<距離,夾角>確定一條直線,ε為一條直線上的元素個(gè)數(shù)閾值;
步驟6、統(tǒng)計(jì)矩陣g′中直線密集的區(qū)域,將該區(qū)域作為斑馬線所在的區(qū)域,具體步驟如下:
步驟61、對(duì)步驟57確定出的若干條直線,統(tǒng)計(jì)在1度到180度上每個(gè)角度所對(duì)應(yīng)的直線數(shù)量:若某一直線向上方向與x軸負(fù)方向的夾角為α°,則α°對(duì)應(yīng)的直線數(shù)量加1;
步驟62、對(duì)同一角度上的所有直線按離原點(diǎn)(0,0)的距離從小到大進(jìn)行排序;對(duì)于每一個(gè)角度,按照距離從近到遠(yuǎn)掃描該角度上的所有直線:定義計(jì)數(shù)變量cnt=1,從第2條直線到最后一條直線逐條判斷,若當(dāng)前判斷直線與前一條直線距離在γ以內(nèi),則cnt=cnt+1,否則cnt=1;對(duì)該角度上所有直線判斷完畢后,若cnt>δ,則選定該角度的直線所在區(qū)域?yàn)榘唏R線區(qū)域;否則該角度上不存在斑馬線區(qū)域,δ為直線數(shù)量閾值,γ為直線間的距離閾值。
作為本發(fā)明所述的一種基于快速霍夫變換的路口斑馬線檢測(cè)方法進(jìn)一步優(yōu)化方案,所述步驟1具體如下:采集公路圖像,對(duì)公路圖像中每個(gè)像素點(diǎn)的紅、綠、藍(lán)三個(gè)色彩值取平均,取得的平均值作為該像素點(diǎn)的灰度值。
作為本發(fā)明所述的一種基于快速霍夫變換的路口斑馬線檢測(cè)方法進(jìn)一步優(yōu)化方案,所述步驟21中高斯函數(shù)為:
作為本發(fā)明所述的一種基于快速霍夫變換的路口斑馬線檢測(cè)方法進(jìn)一步優(yōu)化方案,所述步驟4中ω=75%;
作為本發(fā)明所述的一種基于快速霍夫變換的路口斑馬線檢測(cè)方法進(jìn)一步優(yōu)化方案,所述步驟5中υ的取值為4或5。
本發(fā)明采用以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下技術(shù)效果:
(1)本發(fā)明提出一種基于快速霍夫變換的路口斑馬線檢測(cè)方法,其完整的方法過(guò)程包括對(duì)圖像進(jìn)行灰度處理和高斯濾波處理,再通過(guò)canny算子提取出圖像的邊緣,對(duì)邊緣圖像進(jìn)行快速霍夫變換得到圖像中直線所在的位置,根據(jù)直線的密集程度判斷出路口斑馬線所在的區(qū)域;
(2)本發(fā)明通過(guò)對(duì)圖像進(jìn)行高斯濾波,有效地減少原始圖像存在的噪聲干擾提高識(shí)別的準(zhǔn)確性;
(3)本發(fā)明采用雙閾值法對(duì)圖像邊緣進(jìn)行提取,有效減少圖像中的假邊緣數(shù)并對(duì)圖像邊緣的不連貫區(qū)域進(jìn)行連接;
(4)本發(fā)明通過(guò)快速霍夫變換先對(duì)圖像中近似在同一直線的元素進(jìn)行聚合,再對(duì)聚合元素中的5-6個(gè)元素進(jìn)行霍夫變化即可確定出一條直線,大大改善了傳統(tǒng)霍夫變換計(jì)算量大的缺點(diǎn)。
附圖說(shuō)明
圖1是基于快速霍夫變換的路口斑馬線檢測(cè)方法流程。
圖2是公路圖像實(shí)例。
圖3是圖像邊緣檢測(cè)實(shí)例。
圖4是霍夫變換效果圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)說(shuō)明:
根據(jù)附圖1所示快速霍夫變換的路口斑馬線檢測(cè)方法對(duì)應(yīng)的流程圖,附圖2所示公路圖像實(shí)例,附圖3所示圖像邊緣檢測(cè)實(shí)例,附圖4所示霍夫變換效果圖,本發(fā)明具體實(shí)施方式為:
1)輸入公路圖像如附圖1所示,對(duì)圖像進(jìn)行灰度處理得到處理后的n×n圖像矩陣g,n代表g中的行數(shù)和列數(shù),具體步驟如下:
11)對(duì)圖像中每個(gè)像素點(diǎn)的紅、綠、藍(lán)三個(gè)色彩值取平均,取得的平均值作為該像素點(diǎn)的灰度值。
2)對(duì)g進(jìn)行高斯濾波操作,具體步驟如下:
21)定義模糊半徑r=3和大小為3*3的模糊矩陣p,利用高斯函數(shù)計(jì)算p中每個(gè)元素的值,計(jì)算結(jié)果如下:
22)對(duì)p中的元素做歸一化處理:計(jì)算p中元素的和sp,并將p中每個(gè)元素除以sp,得到歸一化后的矩陣p:
23)定義矩陣g′=g,計(jì)算更新
3)對(duì)步驟2)得到的矩陣g′做邊緣檢測(cè)。具體步驟如下:
31)計(jì)算g′(i,j)的水平方向梯度dx(i,j)=g′(i,j+1)-g′(i,j)。
32)計(jì)算g′(i,j)的垂直方向梯度dy(i,j)=g′(i+1,j)-g′(i,j)。
33)計(jì)算g′(i,j)的梯度值
34)對(duì)g′中每個(gè)元素的梯度值進(jìn)行非極大值抑制:對(duì)于元素g′(i,j),若在α(i,j)方向上的若干個(gè)元素梯度值當(dāng)中,d(i,j)為極大,則g′(i,j)=255;否則g′(i,j)=0。以矩陣
4)用雙閾值算法對(duì)g′中的邊緣進(jìn)行連接,具體步驟如下:
41)定義一個(gè)高閾值λ,對(duì)g′中的元素按梯度值進(jìn)行排序,排序后的元素個(gè)數(shù)為m個(gè);取排序后的前0.75*m個(gè)元素中梯度值最大的元素,該元素所對(duì)應(yīng)的梯度值作為λ的值,其中0.75*m下取整整數(shù);掃描g′中的每個(gè)元素,對(duì)于元素g′(i,j),若d(i,j)<λ,則g′(i,j)=255,否則g′(i,j)不變;
42)定義一個(gè)低閾值μ,且
43)重復(fù)步驟42),直到對(duì)g′中所有的元素都判斷完畢,得到如附圖3所示的邊緣檢測(cè)效果圖。
5)對(duì)矩陣g′中的元素進(jìn)行快速霍夫變換。具體步驟如下:
51)在g′中任取一個(gè)點(diǎn)g′(i,j),判斷g′(i,j)是否等于0,若是則把該點(diǎn)加入集合s中,執(zhí)行步驟52),否則重新執(zhí)行步驟51)。
52)記新加入集合s中的點(diǎn)為q,依次對(duì)q鄰域內(nèi)的元素進(jìn)行判斷,若q的鄰域中存在像素點(diǎn)的值等于0的元素,且該元素不屬于集合s,則把該元素加入s中。
53)重復(fù)步驟52)直到集合s不再擴(kuò)大為止。
54)選取集合s中距離最遠(yuǎn)的兩個(gè)點(diǎn)作為線段s的端點(diǎn),線段s的端點(diǎn)坐標(biāo)分別記為(x1,y1)和(x2,y2),計(jì)算集合s中該線段最大的偏離距離d=max{[(y3-y1)(x2-x1)-(x3-x1)(y2-y1)]/l},(x3,y3)為集合s中元素的坐標(biāo),且(x3,y3)≠(x1,y1),(x2,y2);所述
55)定義偏離比
56)經(jīng)過(guò)步驟55)集合s被劃分成若干個(gè)子集:{s1,s2,...,sn},n為s被劃分成的子集個(gè)數(shù)。取矩陣g′的第n行第1列元素的左下方任意一點(diǎn)作為坐標(biāo)原點(diǎn)(0,0),以矩陣g′的行方向?yàn)閤軸正方向,以矩陣g′的列方向?yàn)閥軸正方向,構(gòu)建出平面直角坐標(biāo)系,使得矩陣g′位于該坐標(biāo)系的第一象限;在步驟55得到的每個(gè)子集中,選取5-6個(gè)元素,過(guò)這些元素作與x軸負(fù)方向且直線向上方向的夾角為1度到180度的直線,以<距離,夾角>的形式記錄坐標(biāo)原點(diǎn)(0,0)到每條直線的距離和每條直線向上方向與x軸負(fù)方向形成的夾角;原點(diǎn)到每條直線的距離可由公式:dr=xcosθ+ysinθ計(jì)算得到。以元素g(3,4)為例,過(guò)該元素作與橫坐標(biāo)軸夾角為60度的直線,原點(diǎn)到該直線的距離為3*cos60°+4*sin60°=4.96,把<60,4.96>記錄下來(lái)。
57)對(duì)于每一組<距離,夾角>,統(tǒng)計(jì)與其在距離和夾角上都相同的<距離,夾角>的個(gè)數(shù),若個(gè)數(shù)大于4,則該<距離,夾角>確定一條直線。
6)統(tǒng)計(jì)圖像矩陣g′中直線密集的區(qū)域,把該區(qū)域作為斑馬線所在的區(qū)域,具體步驟如下:
61)對(duì)步驟57)確定出的若干條直線,統(tǒng)計(jì)在1度到180度上每個(gè)角度所對(duì)應(yīng)的直線數(shù)量:若某一直線向上方向與x軸負(fù)方向的夾角為α°,則α°對(duì)應(yīng)的直線數(shù)量加1
62)對(duì)同一角度上的所有直線按離原點(diǎn)(0,0)的距離從小到大進(jìn)行排序。對(duì)于每一個(gè)角度,按照距離從近到遠(yuǎn)掃描該角度上的所有直線:定義計(jì)數(shù)變量cnt=1,從第2條直線到最后一條直線逐條判斷,若當(dāng)前判斷直線與前一條直線距離在γ以內(nèi),則cnt=cnt+1,否則cnt=1。對(duì)該角度上所有直線判斷完畢后,若cnt>δ,則選定該角度的直線所在區(qū)域?yàn)榘唏R線區(qū)域;否則該角度上不存在斑馬線區(qū)域,δ為直線數(shù)量閾值,γ為直線間的距離閾值。
本發(fā)明能精確快速地檢測(cè)出斑馬線所在區(qū)域,通過(guò)高斯濾波減少原始圖像中存在的噪聲干擾,而且在邊緣提取過(guò)程中采用雙閾值法減少了假邊緣的數(shù)量,對(duì)后序快速霍夫變換提取直線的準(zhǔn)確性起到至關(guān)重要的作用。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說(shuō)明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說(shuō)明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替代,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。