本文檔是基於一項項目的總結,該項目的初步目標是在一幅圖像中基於頭頂的形狀和大小檢測頭頂,輔助提高人流軌跡的精確度。其中涉及的技術基本上都是計算機視覺領域的基礎,相關知識儲備來自計算機視覺(Linda和George)一書。在這一過程中遇到問題,我積極通過OpenCV論壇(www.opencv.org.cn)和OpenCV羣尋求解決方案,在此感謝。
大體流程
區域特徵
區域特徵feature計算
區域特徵feature
區域標記 |
區域面積 |
區域中心所在的行 |
區域中心所在的列 |
半徑平均值 |
半徑標準差 |
圓度 |
1.0e+004 *
0.0004 0.0312 0.0458 0.0001 0.0000 0.0002 0.0045
0.0556 0.0339 0.0149 0.0013 0.0001 0.0024 0.0046
頭頂檢測的判斷標準
區域面結(100~1000),區域圓度(>6)
二值圖
標記圖,可見區域內部的孔洞,fill hole
二值圖取反後的標記圖
最後的結果
後記:
本來我想進一步完善這個搭建在matlab之上的實驗項目,通過以下兩種方案
1、通過圖像分割技術,分割背景和前景,二值化圖,以獲得感興趣的區域。
2、頭頂區域的判斷準則通過訓練自動獲得,具體方法是準備若干圖片,一半用於訓練,一半用於測試,通過訓練獲得的判斷準則,判斷測試圖像,得出誤報率和漏報率。
公司需要將這個項目整合入人流軌跡的項目中形成demo版,向客戶演示,所以我的優先任務是將這個項目變遷到C++,整合入人流軌跡BlobTrack項目,上述任務空閒的時候做做了。
如果頭頂與顏色相近的物體挨着,那麼極有可能形成的連通區域中兩個是連着的,我想也許圖像分割或紋理之類的能夠幫助解決這個問題。
另外形狀和大小類似頭頂的話,會誤認爲頭頂,這個問題我打算通過增加區域特徵以供區分,目前可以想到的是紋理特徵,直方圖特徵之類的。
這個項目做了一個月,絕大部分時間用於方案的遴選和理論知識的學習,摸索過SVM和harr特徵,走了不少彎路,不過也學到不少東西。