使用OpenCV進行對象檢測
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達

目標檢測是圖像處理的重要組成部分。自動駕駛汽車必須檢測車道,路面,其他車輛,人,標志和信號等。我們生活在一個動態(tài)的世界中,一切都在不斷變化。對象檢測的應用無處不在。
我們正在研究自動駕駛汽車的深度學習和計算機視覺。特征檢測是對象檢測的任務之一。那么,什么是特征檢測?對于人類,我們了解圖案,形狀,大小,顏色,長度以及其他可識別物體的物體。它也有點類似于計算機。
特征可以是形狀,邊緣,長度等任何形式,也可以是所有特征的組合。在我們之前有DeepFake檢測的項目,我們使用MSE(均方誤差),PSNR(峰值信噪比),SSIM(結(jié)構(gòu)相似性指數(shù))和直方圖作為特征從真實圖像中識別DeepFake圖像。
一個好的算法必須是可重復的和可擴展的。例如,假設目標是從大量圖像中檢測狗,其中還包含貓和其他動物的圖像。

關于特征的表述,它必須是獨特的,并且需要在大多數(shù)數(shù)據(jù)中顯示。如果我們有大部分與上述兩張圖片相似的圖片,那么這里的不好的特征是什么?
在這種情況下,一個不好的特征就是耳朵的大小。我們的理解是狗耳朵的大小通常較大。但這不是示例圖像中的原因。在第一個圖像中,狗的耳朵與貓相似,甚至更小。如果我們僅使用耳廓大小作為特征來僅使用這兩個圖像來訓練模型,則我們將有50%的真陰性或假陽性。這帶來了另一個重要的觀點。如果您想在模型中獲得更高的成功,則應謹慎選擇該功能。大小尺寸也不是一個好的特征。
我們的目標是識別其他物體,例如道路上的卡車。我們可以使用哈里斯角點檢測或精巧邊緣檢測之類的技術來檢測邊緣。我們需要將汽車,行人,標志與圖像分開。我們可以使用OpenCV專門識別卡車。
import cv2cv2.matchTemplate()
模板匹配只是一種將輸入圖像復制到模板圖像上,并在模板圖像下比較模板圖像和輸入圖像的技術。它返回一個灰度圖像,表示該模板與多少個像素匹配。OpenCV提供了許多模板匹配方法。這是相關系數(shù)的數(shù)學公式。

一旦在兩個圖像中都找到匹配項,它將選出相似點。OpenCV官方文檔在此處提供了帶有代碼示例的詳細信息。讓我們找到路上的卡車。
import cv2import numpy as npimport matplotlib.image as mpimgfrom matplotlib import pyplot as plt%matplotlib inlineimage_color =cv2.imread('actual_truck.jpg')plt.imshow(image_color)
我們從文件中讀取圖像。我們將在此圖像中找到卡車。


使用灰度的原因是使圖像盡可能簡單。不需要彩色圖像。顏色增加了圖像的復雜度,并增加了信噪比。
image_gray = cv2.cvtColor(image_color,cv2.COLOR_BGR2GRAY)plt.imshow(image_gray,cmap ='gray')

這是我們的模板圖像。OpenCV使用此圖像收集了特征并找到了卡車。
import cv2import numpy as npimport matplotlib.image as mpimgfrom matplotlib import pyplot as plt%matplotlib inlineimage_color =cv2.imread('sample_truck.jpg')x= 235y = 350h = 200w = 150cropped=image_color[y:y+h, x:x+w]plt.imshow(cropped)status = cv2.imwrite('t.jpg', cropped)print("Image written to file-system :",status)

# Perform template matching using OpneCVresult = cv2.matchTemplate(image_gray,template, cv2.TM_CCOEFF_NORMED)print(result.shape)plt.imshow(result)

min_val, max_val, min_loc, max_loc =cv2.minMaxLoc(result)top_left = max_locbottom_right = (top_left[0] + w,top_left[1] + h)cv2.rectangle(image_color, top_left,bottom_right, (10,10,255), 5)plt.imshow(image_color)

我們介紹了什么是圖像處理及其應用。然后我們討論有關cv2.matchTemplate()。最后,我們使用模板匹配來識別道路上的卡車。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

