文章轉載于微信公眾號:小白學視覺
作者: 努比
本期教程我們將和小伙伴們一起研究如何使用計算機視覺和圖像處理技術來檢測汽車在行駛中時汽車是否在改變車道!大家一定聽說過使用OpenCV 的haar級聯文件可以檢測到面部、眼睛等,但是如果目標是汽車,公共汽車呢?
01. 數據集
我們將道路上汽車的視頻文件用作數據集。當然可以使用圖像數據集檢測來汽車,但是由于汽車在變道時我們需要通過彈出窗口提供警報,因此對于這些動態情況,視頻輸入更為可行。
02. 輸入
第一步是提供要在本教程中使用的輸入-OpenCV的haar級聯文件,用于檢測汽車的坐標,道路上的汽車的視頻文件-
cascade_src = 'cascade/cars.xml'
cv2.VideoCapture()方法用于捕獲輸入視頻,視頻通常為每秒25個圖像/幀(fps)。捕獲輸入后,使用循環提取幀,并使用汽車的haar級聯文件檢測到的坐標,我們在循環中在汽車周圍繪制一個矩形,以在對捕獲的幀執行其他操作時獲得一致性。
while(1):
在OpenCV中,使用BGR而不是RGB,因此(0,0,255)將在汽車上繪制一個紅色矩形,而不是藍色。
03. 圖像處理
如果幀的分辨率很高,則會減慢執行的操作,此外,該幀還包含噪聲,可以使用模糊降低噪聲,這里使用高斯模糊。
3.1 HSV框架
在此,我們使用從cv2.VideoCapture()捕獲的幀中獲得的HSV幀僅突出顯示汽車轉彎的點,并遮擋其余道路和在道路上直行的汽車。設置上限和下限閾值是為了定義HSV中的顏色范圍,以查看汽車改變車道的點,并用作框架的遮罩。以下是用于獲取此代碼的代碼段-
3.2腐蝕與膨脹
腐蝕和膨脹是圖像處理中常使用的兩個基本形態學操作。腐蝕算子在內核區域上具有局部最小值的作用。腐蝕用于減少圖像中的斑點噪聲,斑點會從圖像中的對象邊界腐蝕掉。膨脹具有局部最大值運算符的作用。當添加像素以平滑圖像中對象的邊界時,將使用膨脹來重新獲得一些丟失的區域。現在,通過基本形態學操作(腐蝕和膨脹)處理從HSV幀的第一步生成的蒙版。通過將幀和掩碼之間的按位與運算應用于獲取 ROI(感興趣區域),可以生成結果幀。
kernel = np.ones((3,3),np.uint8)
3.3車道檢測
canny邊緣檢測器與霍夫線變換一起用于檢測車道。
canny邊緣檢測(作者提供的圖像)
04. 邊緣檢測
諸如canny邊緣檢測器之類的算法用于查找將圖像中的邊緣像素,但是由于我們無法融合某些點和邊緣,因此它無法找到實際對象,在這里我們可以使用OpenCV中的cv2.findContours()實現輪廓的查找。
定義-“輪廓是代表圖像中曲線的點的列表。”等高線由序列表示(序列是結構的鏈表),每個序列都編碼有關下一點位置的信息。我們在ROI中多次運行cv2.findContours()以獲得實體,然后使用cv2.drawContours()繪制輪廓區域。等高線可以是點,邊,多邊形等,因此在繪制等高線時,我們進行多邊形近似,以找到邊的長度和區域的面積。函數cv2.drawContours()的工作方式是從根節點開始繪制一棵樹(數據結構),然后將后續點,邊界框和freeman鏈代碼連接在一起。
找到輪廓后的另一個重要任務是匹配它們。輪廓匹配意味著我們有兩個單獨的計算輪廓相互比較,或者輪廓與抽象模板相比較。
thresh = mask
05. 中心矩
我們可以通過計算輪廓矩來比較兩個輪廓。“中心矩是通過將輪廓的所有像素相加而得出的輪廓的總體特征。”
中心矩型-
- 空間矩:m00,m10,m01,m20,m11,m02,m30,m21,m12,m03。
- 中心矩:mu20,mu11,mu02,mu30,mu21,mu12,mu03。
- Hu矩:有七個Hu矩(h0 — h6)或(h1 — h7),兩種表示法都使用。
我們使用cv2.fitEllipse()計算矩并將橢圓擬合在這些點上。從輪廓和力矩中得出角度,因為改變車道需要45度旋轉,這被認為是汽車轉彎角度的閾值。
現在,我們不僅可以打印檢測變化的車道,還可以使用Tkinter作為一個簡單的彈出窗口來提醒更改。
使用Greenline測量角度,并在框架中的汽車上繪制矩形
彈出警報(作者提供的圖片)
輸出
06. 總結
在本教程中,使用車道變更檢測方法探索了智能汽車導航的小型演示。計算機視覺正在迅速發展,其應用不僅在汽車的本地導航中而且在火星導航和產品檢查領域中也在不斷發展,甚至醫療應用也正在開發中,并可以在早期用于檢測X射線圖像中的癌癥和腫瘤階段。
代碼鏈接:https://github.com/Hitesh-Val.../_Opencv
參考文獻:
- Bradski, Gary and Kaehler, Adrian_,_Learning OpenCV: Computer Vision in C++ with the OpenCV Library, O’Reilly Media, Inc., 2nd edition, 2013, @10.5555/2523356, ISBN — 1449314651.
- Laganiere, Robert, OpenCV Computer Vision Application Programming Cookbook, Packt Publishing, 2nd edition, 2014, @10.5555/2692691, ISBN — 1782161481.
推薦閱讀
審核編輯:符乾江-
AI
+關注
關注
87文章
31042瀏覽量
269391 -
深度學習
+關注
關注
73文章
5506瀏覽量
121260
發布評論請先 登錄
相關推薦
評論