1. 程式人生 > >影象目標檢測(Object Detection)原理與實現(一)

影象目標檢測(Object Detection)原理與實現(一)

基於閾值影象處理的目標檢測    

      從今天起開始要寫一些關於目標檢測的文章,涵蓋從簡單的閾值影象處理檢測、霍夫變換(hough transform)檢測、模版匹配檢測(剛體匹配)、AAM+ASM+ACM(非剛體)匹配檢測到近代機器學習方法檢測,儘量貼一些程式碼,這些很實用。本篇就從閾值影象處理檢測開始。閾值顧名思義就是一個分界值,做影象處理的都明白閾值的用途,但是考慮到各種觀眾,乾脆把OpenCV中的各種閾值識別符號和對應程式碼示意都貼出來,如(圖一)所示:


(圖一)

       仔細閱讀下(圖一)中的各種虛擬碼,就很容易明白閾值函式的工作機制,其中src(x,y)是影象畫素點值。下面就給出一個處理答題卡的例子,(圖二)是從網上找到的一個答題卡樣圖,我們的目標是檢測到哪些選項被塗黑了,然後根據座標判定是哪個數字,其實根據座標是有依據的,因為答題卡四個角有一些對準線,對齊後用掃描器掃描後緊跟著經過演算法處理就可以判斷出考生選項,本篇文章就簡化流程,考慮到塗的選項是黑色的,因此我們使用第二個閾值方法,經過處理後如(圖三)所示。

    

(圖二)                                         (圖三)

幾乎perfect,嘿嘿大笑,下面把程式碼也貼出來,python版本的。

  1. import numpy as np  
  2. import cv2  
  3. img=cv2.imread('anwser_sheet.jpg')  
  4. grey=cv2.cvtColor(img,cv2.cv.CV_BGR2GRAY)  
  5. retval,grey=cv2.threshold(grey,90,255,cv2.cv.CV_THRESH_BINARY_INV)  
  6. grey=cv2.erode(grey,None
    )  
  7. grey=cv2.dilate(grey,None)  
  8. contours,hierarchy=cv2.findContours(grey.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)  
  9. newimg=np.zeros_like(grey)   
  10. cv2.drawContours(newimg, contours, -1255)  
  11. cv2.imshow('test',newimg)  
  12. cv2.imwrite("processed.jpg",newimg)  
  13. cv2.waitKey()  
程式碼流程先是讀取影象檔案,接著轉成灰度圖,接著做個開運算(腐蝕後再膨脹),接著閾值處理,最後把目標輪廓畫出,根據目標塊的座標可以大概的推算出對應的數字,接著秀一下打印出某個塗項,比如最後一個,那麼只需要把

cv2.drawContours(newimg, contours, -1, 255) 改成 cv2.drawContours(newimg, contours, 0, 255)

第三個引數為負數表示列印所有輪廓,0表示列印最後一個選項,列印是倒著數的。如(圖四)所示:


(圖四)

      基於閾值影象處理的目標檢測一般只適應於自己能控制顏色和亮度的專案中,這也為什麼規定答題卡要儘量使用黑色的(同一顏色方便閾值處理),另外這種方法也可以用在目標的三維重建上,如(圖五)所示,用閾值的方法找到汽車上的標定點對後續點雲的獲取很有幫助,進而完成整個汽車模型的三位重建,此方法雖然簡單,但對這幾種場景很實用,通過簡單的影象處理(各個階段去噪)後,然後簡單的查詢下各種閉合小輪廓就OK了,好了,今天就說到這,比較簡單,後續會越來越複雜些,用到的數學知識也越來越多。


(圖五)

@ 參考:http://www.mathworks.com/matlabcentral/fileexchange/44166-generalized-hough-transform

相關推薦

影象目標檢測Object Detection原理實現()

基於閾值影象處理的目標檢測           從今天起開始要寫一些關於目標檢測的文章,涵蓋從簡單的閾值影象處理檢測、霍夫變換(hough transform)檢測、模版匹配檢測(剛體匹配)、AAM+ASM+ACM(非剛體)匹配檢測到近代機器學習方法檢測,儘量貼一些程式

影象目標檢測Object Detection原理實現(三)

基於霍夫森林的目標檢測        上節說了霍夫變換(HT)和廣義霍夫變換(GHT),今天就接著廣義霍夫變換說下去,在廣義霍夫變換中,每個投票元素(比如邊緣畫素中的點)在霍夫空間中累加投票的權重是相等的,每個元素投票的權重互不影響,這其實是假設了影象空間中的每個畫

目標檢測Object Detection原理實現()

基於閾值影象處理的目標檢測           從今天起開始要寫一些關於目標檢測的文章,涵蓋從簡單的閾值影象處理檢測、霍夫變換(hough transform)檢測、模版匹配檢測(剛體匹配)、AAM+ASM+ACM(非剛體)匹配檢測到近代機器學習方法檢測,儘量貼一些程式碼,

目標檢測Object Detection原理實現(六)

基於形變部件模型(Deformable Part Models)的目標檢測         上節說了基於cascade的目標檢測,cascade的級聯思想可以快速拋棄沒有目標的平滑窗(sliding window),因而大大提高了檢測效率,但也不是沒缺點,缺點就是它僅僅

目標檢測Object Detection原理實現(五)

基於Cascade分類器的目標檢測        從今天開始進入基於機器學習的目標檢測,前幾節雖然也接觸了一些機器學習的方法,但它主要是做輔助工作,機器學習的方法和非機器學習的方法結合在一起使用,說到這想起來前幾天看到一位博士師兄發的笑話,說的是百度實驗室:     

目標檢測Object Detection原理實現

基於形變部件模型(Deformable Part Models)的目標檢測         上節說了基於cascade的目標檢測,cascade的級聯思想可以快速拋棄沒有目標的平滑窗(sliding window),因而大大提高了檢測效率,但也不是沒缺點,缺點就是它僅僅是

DeepLearning.ai作業:(4-3)-- 目標檢測Object detection

title: ‘DeepLearning.ai作業:(4-3)-- 目標檢測(Object detection)’ id: dl-ai-4-3h tags: dl.ai homework categories: AI Deep Learning date:

DeepLearning.ai筆記:(4-3)-- 目標檢測Object detection

title: ‘DeepLearning.ai筆記:(4-3)-- 目標檢測(Object detection)’ id: dl-ai-4-3 tags: dl.ai categories: AI Deep Learning date: 2018-10-11 1

CVPR2018 目標檢測object detection演算法總覽

CVPR2018上關於目標檢測(object detection)的論文比去年要多很多,而且大部分都有亮點。從其中挑了幾篇非常有意思的文章,特來分享,每篇文章都有詳細的部落格筆記,可以點選連結閱讀。 Cascaded RCNN這篇文章的出發點非常有意思,是

ECCV2018目標檢測object detection演算法總覽

這篇部落格記錄我個人比較感興趣的ECCV2018關於目標檢測(object detection)的一些文章。 1、IOU-Net 論文:Acquisition of Localization Confidence for Accurate Object Dete

CVPR2018 目標檢測object detection演算法總覽(關於2018年最新的目標檢測文章分析)

CVPR2018上關於目標檢測(object detection)的論文比去年要多很多,而且大部分都有亮點。從其中挑了幾篇非常有意思的文章,特來分享,每篇文章都有詳細的部落格筆記,可以點選連結閱讀。Cascaded RCNN這篇文章的出發點非常有意思,是通過分析輸入propo

物件檢測object detection演算法圖解

摘要: 本文簡要介紹影象檢測中常用的深度學習方法——RCNN家族系列演算法,以影象講解形式,便於理解。        在生活中,經常會遇到這樣的一種情況,上班要出門的時候,突然找不到一件東西了,比如鑰匙、手機或者手錶等。這個時候一般在房間翻一遍各個角落來尋找

Tensorflow物體檢測Object Detection

最近工作需要折騰 tensorflow, 學會圖片分類後開始折騰物體檢測。 感謝前人的工作,現在把物體檢跑起來還是比較容易的,但優化就不容易了。Tensorflow在更新1.2版本之後多了很多新功能,其中放出了很多用tf框架寫的深度網路slim模型,大大降低了開發難度,無論是fine-tuning還是修改網路

目標識別object detection中的 IoUIntersection over Union

首先直觀上來看 IoU 的計算公式: 由上述圖示可知,IoU 的計算綜合考慮了交集和並集,如何使得 IoU 最大,需要滿足,更大的重疊區域,更小的不重疊的區域。 兩個矩形窗格分別表示: 左上點、右下點的座標聯合標識了一塊

DeepLearning深度學習原理實現

經過三年的狂刷理論,覺得是時候停下來做些有用的東西了,因此決定開博把他們寫下來,一是為了整理學過的理論,二是監督自己並和大家分享。先從DeepLearning談起吧,因為這個有一定的實用性(大家口頭傳的“和錢靠的很近”大笑),國內各個大牛也都談了不少,我儘量從其他方面解釋一下。

DeepLearning深度學習原理實現

       經過三年的狂刷理論,覺得是時候停下來做些有用的東西了,因此決定開博把他們寫下來,一是為了整理學過的理論,二是監督自己並和大家分享。先從DeepLearning談起吧,因為這個有一定的實用性(大家口頭傳的“和錢靠的很近”),國內各個大牛也都談了不少,我儘量從其他

【 專欄 】- 目標檢測實踐object detection

目標檢測實踐(object detection) 本專欄致力於實踐並總結目標檢測各種經典的模型,如:R-CNN,SPP-Net,Fast-RCNN,Faster-RCNN,YOLO,Mask-RCNN等。

數字影象處理筆記——邊緣檢測Edge detection

邊緣檢測 我們之前講邊緣檢測的時候講到了一階導和二階導,理想邊緣的畫素值是跳變的,而斜坡邊緣的畫素值是漸變的。我們在求一階導的時候導數值大的地方可以看做邊緣;若是對於斜坡邊緣,我們不想得到一長條邊緣,而只想得到這個漸變的中央點時,我們可以看二階導,二階導只在邊緣開始與結束的地方會出現,因此我們只

課程四(Convolutional Neural Networks),第三 周Object detection —— 0.Learning Goals

member 數據 定位 finding dataset pre intersect sta nal Learning Goals: Understand the challenges of Object Localization, Object Detection a

課程四(Convolutional Neural Networks),第三 周Object detection —— 1.Practice questions:Detection algorithms

car mage 分享圖片 nbsp blog obj 分享 圖片 pos 【解釋】 tree的兩個bounding boxes 都要保留,因為交並比小於0.5;car 0.73保留;pedestrain 0.98保留;motor