摘要:霍夫變化是圖像變化中的經典算法,主要用來尋找圖像中符合某種特征的集合,說白了就是檢測直線圓橢圓。定向梯度直方圖相比于之前的特征,特征更加健壯,并且無視顏色的影響。行為克隆算是的一種。
Lanes Finding with Computer Vision
利用計算機視覺進行道路檢測,一般包括6部分:攝像頭校正(camera calibration)、圖像失真校正(distortion correction)、色彩/梯度二值化(color/gradient threshold)、視角轉換 Perspective transform 、行道線檢測(Detect lane lines)、 道路彎度測量(Determine the lane curvature)
Calibration 校正首先要對失真的程度進行測量,然后根據measurement的結果進行undistort
這個東西叫做chessboard pattern, 用的時候從不同的角度拍這個chessboard,利用的是每個方塊的corner去校正 (圖像要記得轉成灰度圖)
得到的結果其實只跟拍照的相機有關。對于每個的鏡頭,要多帶帶做一遍這種校正。
理論上,只要不是針孔攝像機,基本都會存在圖像失真的問題(透鏡成像更快點,針孔相機這點上比不了)
圖像失真會影響到道路檢測(將直線判斷成曲線),車輛檢測(用CNN檢測的時候,識別出來的車比實際更大或者更?。?br>
由透鏡引起的失真主要是兩個:
徑向畸變(Radial Distortion)
原因是光線穿過透鏡的邊緣時發生的偏轉大于穿過中心發生的偏轉
切線畸變(Tangential Distortion)
原因是光線穿過透鏡之后并沒有垂直打在成像平面上
道路檢測要先從攝像頭視角獲取道路信息,然后選取ROI(目標區域), 包括選顏色和選區域。
選顏色比較接近直覺, 路上的線也就兩種顏色,要么白線,要么黃線。
白線其實比較好找
但是黃線的話就不能直接用原圖了。要先把原圖分成RGB三層
而黃色的線在藍色那層是看不到的
(因為是互補色)
選區域是可以直接利用CV解決的問題。
從車頭視角向前看,大部分像素都是沒有用的。尤其是天空的部分。對于自動駕駛來說差不多等價于干擾信號,基本上可以直接過濾掉
在RGB色彩空間(以RGB建立三維空間)中,白色是由紅綠藍三種顏色的最大值組成的。
因此想獲得白線,可以通過設置RGB值的閾值
但是這種情況下,會丟失黃線的信息。一般的處理方式是使用別的色彩空間,比如HSV, HLS, LUV...
其中HSV(色相、飽和度、明度)和HLS(色相、亮度、飽和度)使用最多
也叫HSL,甚至叫HSL的還更多點。
其實圖像本身在光亮條件下變化最大,HS信道一般倒是不怎么變。所以我們把圖像按照HSL拆分,在S信道下黃線非常明顯
下一步是使用邊緣檢測算法尋找邊線。如果我們把視圖當成一張灰度圖來看待,那么每一條邊其實都在明暗塊交替的位置
通過計算亮度的變化,可以把原圖轉化成一張梯度圖
然后再將結果銳化,得到亮度數值變化最大的像素點
實際上,在做Canny算法之前,要對圖像做高斯平滑(Gaussian smoothing / Gaussian Blur) ,消除噪聲和偽梯度點
(題外話) Sobel Operator 索伯算子首先,為什么卷積神經網絡會有卷積(convolution)這種操作…
看完Sobel算子總算懂了,卷積這種運算講究的是一個信號疊加。相比于Canny邊緣檢測,Sobel邊緣檢測其實更容易理解(然而還是Canny效果好)。
Hough Transform是圖像變化中的經典算法,主要用來尋找圖像中符合某種特征的集合,說白了就是檢測直線、圓、橢圓。
Hough變化要將笛卡爾坐標下的點變化到霍夫極坐標系,原來的點共線問題會由此轉化計算成曲面在極坐標下的共點,效果上就是該算法對邊緣間斷不敏感。大致上是這個意思,實際操作的時候是統計累加空間里的局部最大值(峰值),以該峰值作為結果(所以說抗噪能力還是很強的)。
總結一下就是:
原圖 -> 灰度圖 -> 邊緣檢測 -> 直線檢測 -> 過濾掉斜率過低的直線 -> 將最后結果疊加回原圖
由于Perspective的存在,2D圖像存在近大遠小的現象
這樣會導致原本平行的行道線,出現匯聚的趨勢
因此需要把視角轉換成俯視
將行道線還原到平行
解決道路彎曲(Lane Curvature)問題,實際上比較復雜。先要依次校正原圖
選取ROI
然后要進行視角轉換(Perspective Transform)
最后根據俯視圖(Top-down view) 用二次函數擬合行道線
在檢測弧線的過程中,首先在圖像底部選取一小段,在垂直方向做直方圖
將頂點連接,變成峰值圖
出現峰值的地方是行道線的位置
以此為起點,使用逐步向上移動,每次處理一小段圖像
這種檢測模式叫做滑動窗口
一旦擁有了第一幀的行道線位置,在隨后的檢測中可以利用邊緣檢測 + ROI 的方式獲得之后的行道線
得到道路的二次函數并沒有用,從駕駛的角度來看,真正需要的是當前的轉彎弧度。所以需要求出圖片組的曲率半徑(radius of curvature),在對應計算出現實中的曲率半徑
還有一些小的細節,包括Offset, Sanity Check, Look-Ahead Filter, etc. 懶得講
在 CNN (Convolutional Neural Networks 卷積神經網絡) 普遍運用之前,車輛檢測是通過使用條件隨機場或者SVM(支持向量機)來實現的。操作上分為兩步,先是從圖像上提取特征,然后基于特征建立模型,判斷車輛位置。
template matching 模板匹配對于圖像上的每一塊顏色,計算與背景圖的distance
甚至更硬核一點,直接把各種可能的車輛圖片存起來,然后跟相機視角的圖片進行比較
這類解決方案統稱 template matching
template matching的缺陷也很明顯,對于沒有預存過的模板,自然無從識別。因此出現了 Color Histogram方案
將車輛的模板轉換成顏色直方圖,運算時比較目標物體與預存直方圖的相似度。優點是同一個物體在不同角度仍可識別。比如對于一輛紅色的車,從不同方向看過去,模板匹配無法很好地識別,而利用Color Histogram則不受影響。
Histogram of Oriented Gradients (定向梯度直方圖), 相比于之前的特征,HOG特征更加健壯,并且無視顏色的影響。
操作的時候,首先捕捉圖像的輪廓與紋理信息
然后將圖像劃分為多個cell。對每個cell計算梯度方向
統計每個cell的局部直方圖
將結果歸一化,得到的主方向將成為局部特征梯度方向
匯總每個cell得到的局部信息,就可以得到HOG特征
首先是數據預處理,這里主要是進行特征組合。
比如HOG特征是針對梯度信息的特征,HSV特征則是針對顏色信息的特征
可以直接將二者拼接,得到顏色+梯度的組合信息
這里面有一些要注意的地方,一般多個特征擁有不同的模量,所以數字上相差很大
那么就需要進行正則化,將數據對齊
還可以利用決策樹等方法,舍棄影響不大的變量
使用滑動窗口進行車輛檢測,在這種場景下有一些機巧
首先還是ROI, 車輛其實只會出現在圖片的下半塊區域
其次可以預先設定好車輛可能的最大寬度和最小寬度
這樣在檢測時進行有限的multi-scale window
減小搜索空間
最后對于同一車輛的Multiple Detection
建立heat-map,計算中心位置
模型的選取倒是比較簡單,SVM, Decision Tree, Nerual Network, etc. 這些都是常見的選擇
針對每一幀圖像,檢測車輛位置,形成連續追蹤
使用神經網絡進行無人駕駛的理論基礎來源于Imitation Learning (模仿學習)。行為克隆算是Imitation Learning的一種。思路倒是很簡單,將人類駕駛作為基礎數據全部收集下來,然后讓神經網絡去擬合數據。目前Tesla主要采用的就是Behavior Cloning.
這類端到端的解決方案基本上是一個路子,優點:簡單且有效,缺點:受限于收集的數據。因為訓練集總是有限的,如果出現了神經網絡之前沒見過的數據,那么效果就會很差。
一個比較經典的條件是天氣,下雨天的路面跟晴天的路面不一樣,有霧的天氣下道路能見度也會對攝像頭收集的數據有很大影響。
原發布于掘金。2019年初遷移至思否
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19935.html
摘要:對于無人駕駛系統而言,多傳感器已經是默認配置卡爾曼濾波經常運用于無人駕駛系統中感知模塊,用于目標狀態估計。所以利用一階泰勒展開,用局部的線性系統接近整個非線性系統。 Sensor 對于無人駕駛系統而言,多傳感器已經是默認配置showImg(https://segmentfault.com/img/remote/1460000018252000?w=5120&h=2880); Kalma...
摘要:這篇文章主要為大家詳細介紹了原生仿今日頭條知乎日報點擊查看全文的效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下移動端展示王者榮耀攻略網需要設置過最大高度然后把超出部分隱藏。 這篇文章主要為大家詳細介紹了原生JS+css仿QQ今日頭條、知乎日報點擊查看全文的效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下.showImg(https://segmentfault.com/i...
摘要:目前每年全球有萬人死于車禍,損失,相關于很多國家的,自動駕駛可以很大效率的減少車禍,拯救生命。美國汽車工程師協會和美國高速公路安全局將自動駕駛技術進行了分級。特定場所的高度自動駕駛。這叫基于規則的一種自動駕駛,簡單的。 來自 GitChat 作者:劉盼更多IT技術分享,盡在微信公眾號:GitChat技術雜談 進入 GitChat 閱讀原文我們先以汽車在現代科技領域的演進來開始這次的ch...
摘要:年來,途靈智能無人車實驗室一直致力于研發級全自動駕駛系統。目前,同濟大學途靈智能無人車實驗室正在攻克的課題就是提高級自動駕駛技術突破環境局限的能力,這種突破需要將駕駛腦放置在仿真模擬場景下進行大量的極限訓練。車水馬龍的道路上,各種車輛交錯匯聚,各種道路狀況頻出。從行駛緩慢的環衛車到疾駛搶道的出租車、因施工臨時封閉的道路、突發的交通事故現場。作為路面上的車輛,是互不相讓,還是借道通過,又或者是...
閱讀 2995·2021-11-23 09:51
閱讀 3616·2021-10-13 09:39
閱讀 2503·2021-09-22 15:06
閱讀 887·2019-08-30 15:55
閱讀 3153·2019-08-30 15:44
閱讀 1784·2019-08-30 14:05
閱讀 3439·2019-08-29 15:24
閱讀 2369·2019-08-29 12:44