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

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

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

如何通過計(jì)算機(jī)視覺去識別車道線

深度學(xué)習(xí)實(shí)戰(zhàn) ? 2018-01-15 10:03 ? 次閱讀

因?yàn)榉N種原因?qū)е律蟼€(gè)月沒有更新推文,所以特此發(fā)此推文表示歉意。

今天介紹的是如何通過計(jì)算機(jī)視覺去識別車道線,其實(shí)現(xiàn)在也有各種方法去識別車道線了。這次是基于Matlab的實(shí)現(xiàn),過幾天會更新Python版本的實(shí)現(xiàn),雖然用的語言不一樣,但是原理都是一樣的。

預(yù)處理

攝像機(jī)獲得的視頻圖像,由于受到周圍環(huán)境的影響,存在著很多無用信息和各種各樣的噪聲干擾。為了準(zhǔn)確的檢測到道路線必須對圖像進(jìn)行預(yù)處理。首先,通過灰度化處理將原始彩色圖像轉(zhuǎn)換為灰色圖像,然后采用大小為5*5的模板進(jìn)行高斯濾波平滑處理,減小噪聲干擾。高斯濾波的具體操作是:用一個(gè)模板(或稱卷積、掩模)掃描圖像中的每一個(gè)像素,用模板確定的鄰域內(nèi)像素的加權(quán)平均灰度值去替代模板中心像素點(diǎn)的值。

若使用3×3模板,則計(jì)算公式如下

g(x,y)={f(x-1,y-1)+f(x-1,y+1)+f(x+1,y-1)+f(x+1,y+1)+[f(x-1,y)+f(x,y- 1)+f(x+1,y)+f(x,y+1)]*2+f(x,y)*4}/16;

其中,f(x,y)為圖像中(x,y)點(diǎn)的灰度值,g(x,y)為該點(diǎn)經(jīng)過高斯濾波后的值

由于天空并不存在車道的感興趣區(qū)域,所以對圖片進(jìn)行了劃分,將感興趣區(qū)域劃為一個(gè)三角形區(qū)域。如圖1。

圖一

預(yù)處理代碼如下:

%讀入RGB圖片

I=imread('IMG00061.jpg');

%把RGB圖轉(zhuǎn)換為灰度圖

I=rgb2gray(I);

%高斯濾波平滑處理

sigma = 1;

gausFilter =fspecial('gaussian', [5,5], sigma);

gaus= imfilter(I, gausFilter,'replicate');

%得到圖片的寬和高

[h, w]=size(I);

%k是直線的斜率

%找出圖片的感興趣區(qū)域

k = 1.3;

for y=1:h

for x=1:w

if y < x*k + h-k*w || y < -k*x +h

I(y, x) = 0;

end

end

end

邊緣檢測

由于車道線的灰度比路面更加明亮,以此可以用邊緣檢測的方法把車道的邊緣檢測出來。在邊緣檢測中,我用了‘Sobel’算子。在技術(shù)上,它是一離散性差分算子,用來運(yùn)算圖像亮度函數(shù)的灰度之近似值。在圖像的任何一點(diǎn)使用此算子,將會產(chǎn)生對應(yīng)的灰度矢量或是其法矢量

Sobel卷積因子為:

該算子包含兩組3x3的矩陣,分別為橫向及縱向,將之與圖像作平面卷積,即可分別得出橫向及縱向的亮度差分近似值。如果以A代表原始圖像,Gx及Gy分別代表經(jīng)橫向及縱向邊緣檢測的圖像灰度值,其公式如下:

如何通過計(jì)算機(jī)視覺去識別車道線

圖像的每一個(gè)像素的橫向及縱向灰度值通過以下公式結(jié)合,來計(jì)算該點(diǎn)灰度的大小:

通常,為了提高效率使用不開平方的近似值:

所得到的結(jié)果如圖2:

圖2

霍夫變換直線檢測

有了邊緣檢測的二值圖后可以對圖像進(jìn)行霍夫變換,霍夫變換是圖像變換中的經(jīng)典手段之一,主要用來從圖像中分離出具有某種相同特征的幾何形狀(如,直線,圓等)?;舴蜃儞Q的原理是將特定圖形上的點(diǎn)變換到一組參數(shù)空間上,根據(jù)參數(shù)空間點(diǎn)的累計(jì)結(jié)果找到一個(gè)極大值對應(yīng)的解,那么這個(gè)解就對應(yīng)著要尋找的幾何形狀的參數(shù)(比如說直線,那么就會得到直線的斜率k與常數(shù)b,圓就會得到圓心與半徑等等)。經(jīng)過霍夫變換后可得到如圖3關(guān)于ρ和θ的圖。

圖3

圖中最亮的幾個(gè)點(diǎn)則為峰值,峰值中極有可能存在直線??梢赃x出一組候選的峰值,然后決定線的起始點(diǎn)和終點(diǎn)。函數(shù)houghlines用默認(rèn)的語法執(zhí)行這個(gè)任務(wù):

lines = houghlines(f, theta,rho, peaks)

或者使用完整的語法形式:

lines = houghlines(...,'FillGap', val1, 'MinLength', val2)

其中,theta和rho是來自函數(shù)hough的輸出,peaks是函數(shù)houghpeaks的輸出。

效果

為了美觀和效果,我對檢測出來的線段進(jìn)行了延長處理,效果如下圖4。

圖4

完整代碼如下:

clear

close all

%讀入RGB圖片

I=imread('IMG00061.jpg');

%把RGB圖轉(zhuǎn)換為灰度圖

I=rgb2gray(I);

%高斯濾波平滑處理

sigma = 1;

gausFilter = fspecial('gaussian', [5,5], sigma);

gaus= imfilter(I, gausFilter, 'replicate');

%得到圖片的寬和高

[h, w]=size(I);

%k是直線的斜率

%切圖,找出圖片的感興趣區(qū)域

k = 1.3;

for y=1:h

for x=1:w

if y < x*k + h-k*w || y < -k*x + h

I(y, x) = 0;

end

end

end

imshow(I)

%用Sobel算子做邊緣檢測

BW = edge(I,'sobel');

%霍夫變換

[H,T,R] = hough(BW);

imshow(H,[],'XData',T,'YData',R, 'InitialMagnification','fit');

xlabel(' heta'), ylabel(' ho');

axis on, axis normal, hold on;

%找出霍夫變換的峰值

P = houghpeaks(H,2);

%用霍夫變換檢測和連接線

lines = houghlines(BW,T,R,P);

figure;

imshow(I); hold on

%畫線

for k = 1:length(lines)

p1 = lines(k).point1;

p2 = lines(k).point2;

syms slope b

[b, slope] = solve(slope*p1(1)-p1(2)+b, slope*p2(1)-p2(2)+b);

plot([(h-b)/slope, (0.4*h-b)/slope], [h, 0.4*h], 'g-', 'LineWidth',3);

end

代碼中用到的圖片:

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

    關(guān)注

    185

    文章

    2976

    瀏覽量

    230535
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4790

    瀏覽量

    68654
  • 計(jì)算機(jī)視覺
    +關(guān)注

    關(guān)注

    8

    文章

    1698

    瀏覽量

    46005

原文標(biāo)題:項(xiàng)目實(shí)戰(zhàn) | 車道線檢測與定位

文章出處:【微信號:gh_a204797f977b,微信公眾號:深度學(xué)習(xí)實(shí)戰(zhàn)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    什么是計(jì)算機(jī)視覺計(jì)算機(jī)視覺的三種方法

    計(jì)算機(jī)視覺是指通過計(jì)算機(jī)賦予人類視覺這一技術(shù)目標(biāo),從而賦能裝配檢查到駕駛輔助和機(jī)器人等應(yīng)用。
    的頭像 發(fā)表于 11-16 16:38 ?4630次閱讀
    什么是<b class='flag-5'>計(jì)算機(jī)</b><b class='flag-5'>視覺</b>?<b class='flag-5'>計(jì)算機(jī)</b><b class='flag-5'>視覺</b>的三種方法

    基于OpenCV的計(jì)算機(jī)視覺技術(shù)實(shí)現(xiàn)

    基于OpenCV的計(jì)算機(jī)視覺技術(shù)實(shí)現(xiàn)OpencV是用來實(shí)現(xiàn)計(jì)算機(jī)視覺相關(guān)技術(shù)的開放源碼工作庫,是計(jì)算機(jī)
    發(fā)表于 11-23 21:06 ?0次下載
    基于OpenCV的<b class='flag-5'>計(jì)算機(jī)</b><b class='flag-5'>視覺</b>技術(shù)實(shí)現(xiàn)

    單目視覺車道識別算法及其ARM實(shí)現(xiàn)

    單目視覺車道識別算法及其ARM實(shí)現(xiàn)
    發(fā)表于 09-24 11:38 ?6次下載
    單目<b class='flag-5'>視覺</b><b class='flag-5'>車道</b><b class='flag-5'>線</b><b class='flag-5'>識別</b>算法及其ARM實(shí)現(xiàn)

    AI新聞:計(jì)算機(jī)視覺和模式識別會議

    了解和注冊計(jì)算機(jī)視覺和模式識別會議(CVPR 2018)!
    的頭像 發(fā)表于 11-05 06:14 ?3085次閱讀

    計(jì)算機(jī)視覺與機(jī)器視覺區(qū)別

     “計(jì)算機(jī)視覺”,是指用計(jì)算機(jī)實(shí)現(xiàn)人的視覺功能,對客觀世界的三維場景的感知、識別和理解。計(jì)算機(jī)
    的頭像 發(fā)表于 12-08 09:27 ?1.3w次閱讀

    計(jì)算機(jī)視覺常用算法_計(jì)算機(jī)視覺有哪些分類

    本文主要介紹了計(jì)算機(jī)視覺常用算法及計(jì)算機(jī)視覺的分類。
    的頭像 發(fā)表于 07-30 17:34 ?1.4w次閱讀

    剖析計(jì)算機(jī)視覺識別簡史

    最近,物體識別已經(jīng)成為計(jì)算機(jī)視覺和 AI 最令人激動的領(lǐng)域之一。即時(shí)地識別出場景中所有的物體的能力似乎已經(jīng)不再是秘密。隨著卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)的發(fā)展,以及大型訓(xùn)練數(shù)據(jù)集和高級
    的頭像 發(fā)表于 04-30 10:14 ?2794次閱讀
    剖析<b class='flag-5'>計(jì)算機(jī)</b><b class='flag-5'>視覺</b><b class='flag-5'>識別</b>簡史

    基于計(jì)算機(jī)視覺的客機(jī)艙門識別與定位方法

    基于計(jì)算機(jī)視覺的客機(jī)艙門識別與定位方法
    發(fā)表于 06-22 16:37 ?42次下載

    模式識別計(jì)算機(jī)視覺手冊

    模式識別計(jì)算機(jī)視覺手冊免費(fèi)下載。
    發(fā)表于 06-24 10:02 ?3次下載

    計(jì)算機(jī)視覺識別是如何工作的?

    計(jì)算機(jī)視覺識別是一種人工智能技術(shù),旨在使計(jì)算機(jī)系統(tǒng)從數(shù)字圖像、視頻等視覺信息中識別和提取有意義信
    的頭像 發(fā)表于 02-09 13:41 ?3813次閱讀

    計(jì)算機(jī)視覺中手語識別研究

    計(jì)算機(jī)視覺中手語識別研究 手語識別的目的就是通過計(jì)算機(jī)提供一種有效的、準(zhǔn)確的機(jī)制將聾啞人常用的手
    的頭像 發(fā)表于 04-14 16:11 ?1189次閱讀

    計(jì)算機(jī)視覺是什么 計(jì)算機(jī)視覺歷史及發(fā)展趨勢

    正像其它學(xué)科一樣,一個(gè)大量人員研究了多年的學(xué)科,卻很難給出一個(gè)嚴(yán)格的定義,模式識別如此,目前火熱的人工智能如此,計(jì)算機(jī)視覺亦如此。與計(jì)算機(jī)視覺
    發(fā)表于 07-20 15:41 ?2次下載

    機(jī)器視覺計(jì)算機(jī)視覺的區(qū)別

    機(jī)器視覺計(jì)算機(jī)視覺的區(qū)別 機(jī)器視覺計(jì)算機(jī)視覺是兩個(gè)相關(guān)但不同的概念。雖然許多人使用這兩個(gè)術(shù)語
    的頭像 發(fā)表于 08-09 16:51 ?2031次閱讀

    人工智能計(jì)算機(jī)視覺方向是什么

    ”并作出決策。 計(jì)算機(jī)視覺是人工智能領(lǐng)域的一大分支,是以計(jì)算機(jī)和數(shù)字圖像處理技術(shù)為手段,通過視覺信息的處理和分析來實(shí)現(xiàn)人工智能的各類應(yīng)用。
    的頭像 發(fā)表于 08-15 16:06 ?1683次閱讀

    計(jì)算機(jī)視覺屬于人工智能嗎

    屬于,計(jì)算機(jī)視覺是人工智能領(lǐng)域的一個(gè)重要分支。 引言 計(jì)算機(jī)視覺是一門研究如何使計(jì)算機(jī)具有視覺
    的頭像 發(fā)表于 07-09 09:11 ?1323次閱讀