侵權(quán)投訴
訂閱
糾錯(cuò)
加入自媒體

詳解車(chē)道線(xiàn)檢測(cè)算法之傳統(tǒng)圖像處理

        / 導(dǎo)讀 /

車(chē)道線(xiàn)檢測(cè)算法分為傳統(tǒng)圖像處理方法和深度學(xué)習(xí)方法。本文詳細(xì)介紹用傳統(tǒng)圖像處理方法來(lái)解決車(chē)道線(xiàn)檢測(cè)問(wèn)題,后文的算法源于Udacity無(wú)人駕駛課程的項(xiàng)目,僅做參考。

計(jì)算機(jī)視覺(jué)基礎(chǔ)

在正式開(kāi)始算法之前,我們先簡(jiǎn)單補(bǔ)充些計(jì)算機(jī)視覺(jué)的基礎(chǔ)知識(shí)。已有基礎(chǔ)的童鞋,可以略過(guò)直接看算法。

像素

像素Pixel,是picture和element的合成詞,表示圖像元素的意思,可以理解為構(gòu)成圖像的最小單位。像素的大小與圖像的分辨率有關(guān),分辨率越高,像素就越小,圖像就越清晰。

灰度圖像度化,即對(duì)彩色圖像進(jìn)行灰度化處理。由于很多算法對(duì)顏色的依賴(lài)性不高,通常會(huì)對(duì)彩色圖像進(jìn)行灰度化預(yù)處理,去除彩色信息,不僅能提高魯棒性,還可以提高處理速度。

灰度圖像的每個(gè)像素信息是由一個(gè)量化的灰度級(jí)來(lái)描述的,沒(méi)有彩色信息;而彩色圖像(例如RGB)的每個(gè)像素信息由RGB三原色構(gòu)成的,RGB分別通過(guò)三個(gè)不同的灰度級(jí)來(lái)描述。

二值圖像

二值化就是將彩色圖像變成二值圖像。由于二值圖像的數(shù)據(jù)足夠簡(jiǎn)單,只有兩個(gè)值,所以算法都依賴(lài)二值圖像。

二值圖像,即黑白圖像。二值圖像的每個(gè)像素只能是黑或白,沒(méi)有中間的灰度級(jí)過(guò)渡,像素值為0、1。最常用的就是采用閾值的方法進(jìn)行二值化。最常用的二值化處理簡(jiǎn)單來(lái)說(shuō),就是選取一個(gè)閾值,大于它的像素就視為白,小于它就視為黑。

色彩空間

不同色彩空間對(duì)顏色采用不同的表示方式,我們最常用的是RGB色彩空間,除此之外還有HLS、HSV、YUV、Lab色彩空間等。我們可以針對(duì)個(gè)人需求,轉(zhuǎn)換到適合的彩色空間中處理。

例如,RGB色彩空間中的R表示紅色Red,G表示綠色Green,B表示藍(lán)色Blue,這三種顏色以不同的量進(jìn)行疊加,就可以顯示出所有顏色。HSL色彩空間即色相Hue、飽和度Saturation、亮度Lightness;HSV色彩空間則是由色相Hue、飽和度Saturation、明度Value組成。YUV色彩空間是由一個(gè)亮度Y和兩個(gè)色度UV決定的。而在Lab色彩空間中,L表示亮度Lightness,A表示從綠色到紅色的漸變;B表示從藍(lán)色到黃色的漸變。

顏色閾值過(guò)濾

閾值過(guò)濾需要設(shè)定一個(gè)數(shù)值,像素值高于此值的像素點(diǎn)變?yōu)榘咨?低于此值則變?yōu)楹谏。具體來(lái)說(shuō),例如在RGB色彩空間中,R紅色是表示在一個(gè)區(qū)間內(nèi)的連續(xù)數(shù)值;我們通過(guò)設(shè)置[min, max]值區(qū)間,將大小位于該區(qū)間內(nèi)的數(shù)值保留,不在該區(qū)間的數(shù)值統(tǒng)一設(shè)置為0。通過(guò)這種操作,實(shí)現(xiàn)對(duì)圖像顏色特征的過(guò)濾。

邊緣檢測(cè)

這里要介紹的是使用圖像濾波的方式實(shí)現(xiàn)邊緣檢測(cè)。濾波,其實(shí)就是通過(guò)放大圖像中的某些頻段,同時(shí)濾掉或減弱某些頻段的方法。例如,低通濾波器的作用是消除圖像中的高頻部分,高通濾波器的作用是消除圖像中的低頻部分。

Sobel算法

Sobel算法是通過(guò)放大圖像中高頻部分,再對(duì)圖像進(jìn)行二值化,可以實(shí)現(xiàn)邊緣檢測(cè)。雖然它只對(duì)垂直或水平方向的圖像頻率起作用,能夠分別得出x和y方向上的亮度函數(shù)的梯度近似值。x方向(水平方向)的Sobel濾波傾向于檢測(cè)垂直方向的邊緣,y方向(垂直方向)的Sobel濾波則傾向于檢測(cè)水平方向的邊緣。而在車(chē)道線(xiàn)檢測(cè)中,車(chē)道線(xiàn)是傾向于垂直方向的線(xiàn),所以采用x方向的Sobel算法較為有效。

Canny算法

Canny算法通常是基于梯度算法,用兩個(gè)不同的閾值(高閾值和低閾值)來(lái)判斷那個(gè)點(diǎn)屬于邊緣,雙閾值可以有效降低邊緣的漏檢率。雖然Canny算法能夠精度高,能清晰檢測(cè)出所有邊緣,但在車(chē)道線(xiàn)檢測(cè)中,除了車(chē)道線(xiàn)還會(huì)檢測(cè)出各種陰影。因此相比之下Sobel單方向的檢測(cè)也許效果更好。

霍夫變換

霍夫變換是一種一般用于檢測(cè)直線(xiàn)(也可檢測(cè)圓形)的經(jīng)典算法。可以結(jié)合上文的Canny算法檢測(cè)直線(xiàn)車(chē)道線(xiàn)。經(jīng)過(guò)Canny算法得到邊緣分布圖像后,構(gòu)建一個(gè)霍夫參數(shù)空間,利用點(diǎn)與線(xiàn)的對(duì)偶性,將原始圖像空間的直線(xiàn)變換為參數(shù)空間的一個(gè)點(diǎn)。這樣就把原始圖像中直線(xiàn)檢測(cè)問(wèn)題轉(zhuǎn)變?yōu)閷ふ覅?shù)空間中的峰值問(wèn)題。

簡(jiǎn)單解釋下,元空間的點(diǎn)都對(duì)應(yīng)霍夫參數(shù)空間的線(xiàn),原空間的直線(xiàn)都對(duì)應(yīng)參數(shù)空間中曲線(xiàn)的交點(diǎn)。即可以通過(guò)參數(shù)空間曲線(xiàn)的交點(diǎn)個(gè)數(shù)來(lái)尋找原空間中在一條直線(xiàn)上的點(diǎn)。

圖片來(lái)自Udacity無(wú)人駕駛課程

感興趣區(qū)域

感興趣區(qū)域,即ROI。在圖像處理過(guò)程中,我們可能會(huì)對(duì)圖像的某一個(gè)特定區(qū)域感興趣,只對(duì)該區(qū)域?qū)嵤┎僮。?duì)于車(chē)道線(xiàn)檢測(cè)來(lái)說(shuō),由于相機(jī)是固定安裝,可以選取一個(gè)區(qū)域以排除其他噪聲干擾。感興趣區(qū)域可以是任意圖形,例如四邊形或其他任意多邊形。

1  2  3  4  下一頁(yè)>  
聲明: 本文由入駐維科號(hào)的作者撰寫(xiě),觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問(wèn)題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無(wú)評(píng)論

暫無(wú)評(píng)論

    文章糾錯(cuò)
    x
    *文字標(biāo)題:
    *糾錯(cuò)內(nèi)容:
    聯(lián)系郵箱:
    *驗(yàn) 證 碼:

    粵公網(wǎng)安備 44030502002758號(hào)