0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Python和OpenCV在道路上找到車道線

ml8z_IV_Technol ? 來源:未知 ? 作者:李倩 ? 2018-08-01 10:54 ? 次閱讀

識(shí)別道路上的車道是所有司機(jī)的共同任務(wù),以確保車輛在駕駛時(shí)處于車道限制之內(nèi),并減少因越過車道而與其他車輛發(fā)生碰撞的機(jī)會(huì)。

自動(dòng)駕駛汽車來說,這同樣也是一項(xiàng)關(guān)鍵任務(wù)。事實(shí)證明,使用計(jì)算機(jī)視覺技術(shù)識(shí)別道路上的車道標(biāo)記是可能的。本算法將介紹其中的一些技術(shù)。

這個(gè)項(xiàng)目的目標(biāo)是創(chuàng)建一種方法,使用Python和OpenCV在道路上找到車道線。

實(shí)例圖像

Udacity提供了960 x 540像素的示例圖像,用于訓(xùn)練我們的算法。下面是提供的兩個(gè)圖像。

算法步驟

在這一部分中,我們將詳細(xì)介紹本算法所需的不同步驟,這將使我們能夠識(shí)別和分類車道線,如下所示:

將原始圖像轉(zhuǎn)換為HSL

從HSL圖像中分離出黃色和白色

將分離的HSL與原始圖像相結(jié)合

將圖像轉(zhuǎn)換為灰度,便于操作

應(yīng)用高斯模糊來平滑邊緣

在平滑的灰色圖像上應(yīng)用Canny邊緣檢測

跟蹤感興趣的區(qū)域,并剔除其他區(qū)域的信息

執(zhí)行一個(gè)霍夫變換,在我們感興趣的區(qū)域內(nèi)找到車道,并用紅色跟蹤它們

分開左車道和右車道

插入直線梯度來創(chuàng)建兩條平滑的直線

每個(gè)步驟的輸入都是前一步的輸出(例如,我們對區(qū)域分割圖像應(yīng)用Hough變換)。

轉(zhuǎn)換到不同的色彩空間

雖然我們的圖像目前是RBG格式,但是我們應(yīng)該探索在不同的顏色空間,如HSL或HSV中進(jìn)行可視化,看看它們是否能夠幫助我們更好地隔離車道。注意,HSV通常被稱為HSB(色相飽和度和亮度)。

下面的圖表使我們能夠看到兩者之間的區(qū)別:

HSV

HSL

下圖顯示了原始圖像及其HSV和HSL格式。

可以看出,HSL比HSV更擅長對比車道線。HSV對白線“模糊”了太多,所以在這種情況下不適合我們選擇。至少,使用HSL隔離黃色和白色的車道會(huì)更容易些。

分離出黃色和白色

我們首先從原始圖像中分離出黃色和白色。在這樣做之后,我們可以觀察到黃色和白色的車道是如何很好地隔離。

現(xiàn)在我們使用OR操作合并這兩個(gè)掩碼,然后使用AND操作與原始映像合并,并僅保留相交的元素。

到目前為止,結(jié)果非常令人滿意??纯次覀兊腍SL黃面罩是如何清晰地識(shí)別黃色路標(biāo)的!接下來,我們將對圖像進(jìn)行灰度化處理。

轉(zhuǎn)換為灰度圖

我們感興趣的是如何檢測圖像上的白線或黃線,當(dāng)圖像是灰度的時(shí)候,這些線的對比度特別高。記住,道路是黑色的,所以任何在道路上更亮的東西都會(huì)在灰度圖像中產(chǎn)生高對比度。

從HSL到灰度的轉(zhuǎn)換有助于進(jìn)一步降低噪聲。在我們能夠運(yùn)行更強(qiáng)大的算法來隔離行之前,這也是一個(gè)必要的預(yù)處理步驟。

高斯模糊

高斯模糊(也稱為高斯平滑)是一種預(yù)處理技術(shù),用于平滑圖像的邊緣以減少噪聲。我們反直覺地采取這個(gè)步驟來減少我們檢測到的行數(shù),因?yàn)槲覀冎幌腙P(guān)注最重要的線條(車道線),而不是每個(gè)對象上的條。我們必須小心,不要把圖像弄得太模糊,否則很難畫出一條線條來。

高斯模糊的OpenCV實(shí)現(xiàn)采用整數(shù)核參數(shù)來表示平滑的強(qiáng)度。對于我們的任務(wù),我們選擇一個(gè)值為11。

下面的圖像顯示了典型的高斯模糊對圖像的影響,原始圖像在左邊,而模糊圖像在右邊。

Canny邊緣檢測

現(xiàn)在已經(jīng)對圖像進(jìn)行了充分的預(yù)處理,我們可以應(yīng)用Canny邊緣檢測器,它的作用是識(shí)別圖像中的邊緣并剔除所有其他數(shù)據(jù)。最終得到的圖像是線條型的,這使我們更關(guān)注于車道檢測,因?yàn)槲覀冴P(guān)注的是線條。

OpenCV實(shí)現(xiàn)除了模糊圖像外,還需要傳遞兩個(gè)參數(shù),一個(gè)低閾值和一個(gè)高閾值,它決定是否包含給定的邊緣。閾值捕獲給定點(diǎn)的變化強(qiáng)度(可以將其視為梯度)。

超過高閾值的任何點(diǎn)都將包含在我們的結(jié)果圖像中,而閾值之間的點(diǎn)只有在接近高閾值的邊緣時(shí)才會(huì)包含。低于閾值的邊被丟棄。推薦低:高閾值比率為1:3或1:2。對于低閾值和高閾值,我們分別使用值50和150。

下面我們一起展示平滑的灰度和精明的圖像:

關(guān)注區(qū)域

下一步是確定感興趣的區(qū)域,并丟棄這個(gè)區(qū)域之外的任何線。在這項(xiàng)任務(wù)中,一個(gè)關(guān)鍵的假設(shè)是,攝像機(jī)在所有這些圖像上都保持在相同的位置,而且車道是平的,因此我們可以識(shí)別我們關(guān)注的關(guān)鍵區(qū)域。

看看上面的圖片,我們根據(jù)汽車所在車道的輪廓“猜測”這個(gè)區(qū)域可能是什么,并定義一個(gè)多邊形,它將作為我們的關(guān)注區(qū)域。

我們將精明的分割圖像并排放在一起,觀察如何只保留最相關(guān)的細(xì)節(jié):

霍夫變換

下一步是應(yīng)用霍夫變換技術(shù)提取線條并給它們上色。霍夫變換的目標(biāo)是通過識(shí)別所有的點(diǎn)來找到線。這是通過將我們當(dāng)前用軸(x,y)表示的系統(tǒng)轉(zhuǎn)換成軸為(m, b)的參數(shù)系統(tǒng)來實(shí)現(xiàn)的。

直線被表示為點(diǎn)

點(diǎn)被表示為線

相交的線意味著同一點(diǎn)在多條線上

因此,在這樣的平面中,我們可以更容易地識(shí)別出經(jīng)過同一點(diǎn)的直線。然而,我們需要從當(dāng)前的系統(tǒng)移動(dòng)到使用極坐標(biāo)系統(tǒng)的霍夫空間,因?yàn)楫?dāng)m=0(即垂直線)時(shí),我們的原始表達(dá)式是不可微的。

所有直線將通過一個(gè)給定的點(diǎn)對應(yīng)于一個(gè)正弦曲線(ρ和θ)。因此,一組點(diǎn)相同的直線在笛卡爾空間將產(chǎn)生正弦曲線交叉的點(diǎn)(ρ和θ)。這自然意味著在笛卡爾空間的直線上探測點(diǎn)的問題被簡化為在霍夫空間中尋找交叉的正弦信號(hào)。

霍夫變換返回的車道線如下所示:

區(qū)分車道

為了能夠跟蹤整條線并連接圖像上的車道標(biāo)記,我們必須能夠區(qū)分左車道和右車道。幸運(yùn)的是,有一種簡單的方法可以做到這一點(diǎn)。如果仔細(xì)觀察圖像(使用精明的分割圖像可能更容易),您可以得到任何左車道線或右車道線的梯度。

左車道:當(dāng)x值(即寬度)增大時(shí),y值(即高度)減小:因此斜率必須為負(fù)

右車道:當(dāng)x值(即寬度)增加時(shí),y值(即高度)增加:因此斜率必須為正

因此,我們可以定義一個(gè)函數(shù),將行分隔為左和右。當(dāng)梯度的分母(dy/dx)為0時(shí),我們必須小心,忽略任何有這條直線的直線。

在下面的圖片中,我們用紅色標(biāo)注屬于左車道的線條,而屬于右車道的線條用藍(lán)色標(biāo)注:

梯度插值和線性外推

要從屏幕底部跟蹤到感興趣區(qū)域的最高點(diǎn),我們必須能夠插入霍夫變換函數(shù)返回的不同點(diǎn),并找到一條使這些點(diǎn)之間的距離最小化的線。基本上這是一個(gè)線性回歸問題。我們將嘗試通過最小化最小二乘誤差來找到給定車道上的直線。我們方便地使用scipy.stats. linregress(x,y)函數(shù)的作用是:求車道線的斜率和截距。

我們成功地做到了這一點(diǎn),如下圖所示:

視頻上的應(yīng)用

我們還提供了三段視頻來驗(yàn)證本算法:

(1)10秒的視頻,只有白色的車道線

(2)一段27秒的視頻,左邊是一條連續(xù)的黃線,右邊是白色的線

(3)這是一個(gè)挑戰(zhàn)視頻,道路稍微彎曲,幀的分辨率更高

首要任務(wù)

算法在前兩個(gè)視頻中運(yùn)行得還不錯(cuò),但在挑戰(zhàn)練習(xí)中完全失敗了。

為了使車道檢測更平滑,并利用每一幀的排序和位置(因此也包括車道),我決定在幀之間插入泳道梯度和截取,并剔除任何與前一幀的計(jì)算平均值偏離太多的線。

車道檢測器

記住,視頻是一系列的幀。因此,如果在t坐標(biāo)系下,我們計(jì)算出的直線與我們在坐標(biāo)系[0,t-1]中計(jì)算出的直線斜率和截距的平均值有不相稱的差異,那么我們就可以利用之前坐標(biāo)系中的信息來平滑我們在路上跟蹤的直線,并采取糾正步驟。

因此,我們需要將內(nèi)存的概念引入管道中。我們將使用一個(gè)標(biāo)準(zhǔn)的Pythondeque來存儲(chǔ)最后的N個(gè)(我現(xiàn)在將它設(shè)置為15)計(jì)算的行系數(shù)。

這工作相當(dāng)首先在兩個(gè)視頻,甚至設(shè)法體面地挑戰(zhàn)視頻檢測車道線,但由于有曲率的車道直線由一個(gè)簡單的多項(xiàng)式學(xué)位1(即y = Ax1+ b)是不夠的。將來我將在彎曲的道路上設(shè)計(jì)更好的車道線。

存在的問題

我觀察到目前車道線檢測的一些問題:

在第二節(jié)的挑戰(zhàn)視頻中,車道上覆蓋了一些陰影,我的代碼最初沒有檢測到它。我通過將HSL顏色過濾作為另一個(gè)預(yù)處理步驟來解決這個(gè)問題。

當(dāng)?shù)缆飞嫌袕澋罆r(shí),直線就不起作用了。

霍夫變換的參數(shù)很難處理正確。

后續(xù)改進(jìn)

算法的另一個(gè)探索是計(jì)算內(nèi)存探測器中線系數(shù)的加權(quán)平均值,使最近的系數(shù)具有更高的權(quán)重,因?yàn)樗鼈儗儆谧罱膸?。我相信幀的局部性將在視頻中獲得接近完美的車道線起著至關(guān)重要的作用。

我們還應(yīng)該考慮將車道線表示為二級(jí)多項(xiàng)式來處理。

在未來,我們還計(jì)劃利用深度學(xué)習(xí)來識(shí)別車道,并將這些結(jié)果與我用純粹的計(jì)算機(jī)視覺方法得到的結(jié)果進(jìn)行比較。

這是一個(gè)令人興奮和富有挑戰(zhàn)性的算法,它讓我們對色彩空間、圖像處理和一些線性代數(shù)的應(yīng)用有了更多的了解。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)視覺
    +關(guān)注

    關(guān)注

    8

    文章

    1685

    瀏覽量

    45810
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4752

    瀏覽量

    84066
  • 自動(dòng)駕駛
    +關(guān)注

    關(guān)注

    781

    文章

    13449

    瀏覽量

    165250

原文標(biāo)題:自動(dòng)駕駛 | 車道線檢測算法

文章出處:【微信號(hào):IV_Technology,微信公眾號(hào):智車科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    LED顯示屏交通道路上“大展神威”。

    ` 我們一直以為LED屏幕是用來宣傳,舞臺(tái),廣告作用,但近期來我們熟知的LED顯示屏,交通道路上,有了一個(gè)全新的作用:交通引導(dǎo)。 相信我們很多朋友道路上都看到過,
    發(fā)表于 07-20 09:07

    新能源與道路上的結(jié)合

    什么好處呢,主要是節(jié)能環(huán)保,為我們的地球提供更好的生活環(huán)境。 當(dāng)然,我們回歸正題,為什么說新能源和道路上會(huì)有關(guān)聯(lián)呢,最常見的,我們的測速雷達(dá),現(xiàn)在大多數(shù)采用太陽能發(fā)電,仔細(xì)去觀察,攝像頭旁邊有一塊
    發(fā)表于 07-20 10:00

    北斗衛(wèi)星導(dǎo)航系統(tǒng)正在組網(wǎng)建設(shè)的道路上闊步前進(jìn)

    衛(wèi)星導(dǎo)航系統(tǒng)是航天強(qiáng)國的“標(biāo)準(zhǔn)配置”,作為中國自主建設(shè)、獨(dú)立運(yùn)行的重要空間基礎(chǔ)設(shè)施,北斗衛(wèi)星導(dǎo)航系統(tǒng)正在組網(wǎng)建設(shè)的道路上闊步前進(jìn),并有望2020年布局全球。
    的頭像 發(fā)表于 01-02 08:50 ?3523次閱讀

    人工智能道路上看到前進(jìn)的方向,顯得尤為重要

    火熱背后是虛火也很旺盛,通往“詩與遠(yuǎn)方”的人工智能道路上,如何從泡沫中看到前進(jìn)的方向,顯得尤為重要”,而尋找人工智能商業(yè)應(yīng)用場景成為核心。
    的頭像 發(fā)表于 01-08 16:40 ?3074次閱讀

    自動(dòng)駕駛汽車公共道路上行駛,但仍存異常駕駛行為

    8月23日,i-VISTA自動(dòng)駕駛汽車挑戰(zhàn)賽的第4場比賽——?jiǎng)?chuàng)新應(yīng)用挑戰(zhàn)賽,重慶禮嘉白云湖公園周邊的公共道路上舉行,參賽的自動(dòng)駕駛車輛終于經(jīng)歷了“魔性”的重慶道路,對于自動(dòng)駕駛汽車來說這是非常難得的測試路況。
    的頭像 發(fā)表于 08-28 09:01 ?3520次閱讀

    本田和通用在自動(dòng)駕駛道路上“抱團(tuán)取暖”

    各行其道的電動(dòng)化之后,面向自動(dòng)駕駛的道路上,汽車制造商開始“抱團(tuán)取暖”。
    的頭像 發(fā)表于 10-09 09:54 ?3277次閱讀

    如何與道路上無人駕駛的車輛進(jìn)行互動(dòng)

    自動(dòng)駕駛的人機(jī)交互,不僅僅在于車內(nèi)的DMS系統(tǒng),還在于一些自動(dòng)駕駛領(lǐng)域的研究人員稱之為“握手”的機(jī)制——這是研究行人和人類駕駛員如何與道路上無人駕駛的車輛互動(dòng)的過程。
    的頭像 發(fā)表于 11-29 11:36 ?3583次閱讀

    人類通往自動(dòng)駕駛的道路上充滿坎坷

    在線汽車巨頭Uber(優(yōu)步)今天的一份聲明中表示,該公司的無人駕駛汽車于本周四匹茲堡恢復(fù)道路測試。此前,Uber的重啟測試申請獲得了賓夕法尼亞州交通局的批準(zhǔn),并允許
    發(fā)表于 12-25 09:01 ?897次閱讀

    日本期望通過修改交通法 為自動(dòng)駕駛汽車公共道路上通行掃清道路

    據(jù)外媒報(bào)道,如同其他國家一樣,日本也希望通過修改交通法,為駕駛員行為和車輛安全設(shè)定新標(biāo)準(zhǔn),以期為自動(dòng)駕駛汽車公共道路上通行掃清道路。
    發(fā)表于 03-11 15:36 ?705次閱讀

    虧損的道路上越走越遠(yuǎn),蔚來汽車的未來在哪兒?

    銷量遲遲打不開局面,將使以新車銷售為主要收入來源的蔚來,虧損的道路上越走越遠(yuǎn)。這或許也是蔚來決定停止在上海嘉定建生產(chǎn)基地的主要原因—資金鏈太緊張!
    的頭像 發(fā)表于 03-12 17:11 ?3602次閱讀

    傅盛:雖然挑戰(zhàn)重重 但堅(jiān)信人工智能戰(zhàn)略正確的道路上

    人工智能業(yè)務(wù)是正確的道路上,憑借獵豹移動(dòng)所擁有的穩(wěn)健的工具與移動(dòng)娛樂業(yè)務(wù)、優(yōu)秀的研發(fā)團(tuán)隊(duì)、強(qiáng)勁的資產(chǎn)負(fù)債表,一定能在困難面前突圍,迎來新的發(fā)展。
    發(fā)表于 06-28 17:59 ?513次閱讀

    Nuro取得了加州同意可以道路上測試自動(dòng)駕駛車

    自動(dòng)駕駛送貨車(或送貨機(jī)器人)新創(chuàng)公司Nuro成為第一家可以加州開始商用服務(wù)的自駕車公司。Nuro2020年4月時(shí)取得了加州車輛管理局(DMV)同意可以道路上測試自駕車,但這次取
    的頭像 發(fā)表于 12-31 09:44 ?1899次閱讀

    馬斯克:將履行讓電動(dòng)汽車印度道路上行駛的承諾

    1月14日消息,據(jù)國外媒體報(bào)道,特斯拉通過班加羅爾注冊公司進(jìn)入印度市場的消息傳出后,特斯拉首席執(zhí)行官埃隆·馬斯克(Elon Musk)在當(dāng)?shù)貢r(shí)間周三表示,他將履行讓其電動(dòng)汽車印度道路上
    的頭像 發(fā)表于 01-14 10:53 ?1529次閱讀

    使用 USB4 ?就像在高速公路上找到更多快車道

    新技術(shù)星期二:使用 USB4 ?就像在高速公路上找到更多快車道
    的頭像 發(fā)表于 12-30 09:40 ?594次閱讀

    opencv-pythonopencv一樣嗎

    OpenCV的一個(gè)Python語言接口,它允許開發(fā)者使用Python語言來調(diào)用OpenCV庫的功能。 雖然OpenCV
    的頭像 發(fā)表于 07-16 10:38 ?432次閱讀