2013-03-12 56 views
1

簡短介紹:增強現實項目對象跟蹤openCV,問題,建議?

目標:在某人的頭上加載3D髮型模板。

所以我使用OpenCV跟蹤人臉,然後我必須跟蹤帽子(我們假設用戶有帽子,我們可以決定一個地標或帽子上需要的一切來檢測它)的用戶。一旦我檢測到地標,我必須獲取地標的座標,然後將其發送到3D引擎以啓動/更新3D對象。

因此,精確地檢測蓋的我第一次測試的幾種方法具有里程碑意義的(S):

今天我來找你想想和你一起。我需要帽子上的特殊地標嗎? (如果是,哪一個?如果不是,我該怎麼辦?) 混合檢測顏色和檢測表單是否是一個好主意?

....我在正確的路上嗎? ^^ 我很欣賞任何有關使用cap來定位用戶頭部以及我必須在OpenCV庫中使用的不同功能的建議。

對不起,我的英文,如果它不完美。

非常感謝!

回答

2

一個快速的方法,我的頭頂,是結合這兩種方法。

顏色跟蹤使用直方圖和均值漂移

下面是一個替代的顏色檢測方法,使用直方圖: Robust Hand Detection via Computer Vision

的想法是這樣的: 對於已知顏色的帽,說明亮的綠色/藍色(就像您在圖像蒙版畫面中看到的那種顏色),您可以僅使用色調和飽和度顏色通道預先計算直方圖。我們故意排除亮度通道,使其更適合照明變化。現在,通過直方圖,您可以創建一個反投影映射,即在圖像中的每個像素處具有概率值的掩碼,表示該顏色存在頂點顏色的概率。

現在,獲得概率圖後,就可以運行這個概率圖(不是圖像)上meanshiftcamshift算法(在OpenCV中提供),與您使用的OpenCV算法檢測到的面部上方某處放置的初始窗口。這個窗口最終將以概率分佈的模式即封頂結束。

有關詳細信息,請參閱上面給出的「穩健手部檢測」鏈接。有關更多詳細信息,您應該考慮獲取官方OpenCV書籍或從當地圖書館借閱。關於使用meanshift和camshift跟蹤對象有一個非常好的章節。或者,只需使用沿meashift/camshift進行對象跟蹤的任何查詢來搜索網絡。

檢測方塊/界得到頭的方向

如果除了你想進一步證實這個最終的位置,你可以在帽子的前面加上4個小方塊/圈,並使用OpenCV的內置的算法僅在感興趣區域(ROI)中檢測它們。這就像檢測那些QR碼中的方塊。這一步進一步爲您提供有關帽子方向的信息,並因此提供有關頭髮的信息,這可能在您渲染頭髮時非常有用。例如。在找到2個相鄰的方塊/圓之後,可以計算它們與水平/垂直線之間的角度。

您可以使用OpenCV中的標準角檢測器等來檢測正方形/拐角。 圓形,您可以嘗試使用HoughCircle算法:http://docs.opencv.org/modules/imgproc/doc/feature_detection.html#houghcircles

加快這件事

廣泛使用地區的利益(投資回報)​​

爲了加快速度,你應該,儘可能經常在圖像的小區域(ROI)(也是概率圖)上運行算法。您可以從OpenCV圖像中提取ROI,這些圖像本身就是圖像,並且可以像運行整個圖像一樣運行OpenCV的算法。例如,您可以計算檢測到的臉部周圍ROI的概率圖。同樣,meanshift/camshift算法只應該在這個較小的地圖上運行。同樣,檢測正方形或圓形的附加步驟也是如此。詳情可以在OpenCV書籍中找到,也可以在線快速搜索。

編譯的OpenCV與TBB和CUDA

簡單地用TBB(線程構建模塊)編譯的OpenCV庫許多的OpenCV算法可以實現顯著速度提升,而不程序員需要做任何額外的工作並開啓了CUDA支持。特別是,OpenCV(Viola Jones)中的人臉檢測算法運行速度要快幾倍。

只有在安裝TBB和CUDA的軟件包後,才能打開這些選項。

TBB:http://threadingbuildingblocks.org/download

CUDA:https://developer.nvidia.com/cuda-downloads

然後從源代碼編譯的OpenCV:http://docs.opencv.org/doc/tutorials/introduction/windows_install/windows_install.html#windows-installation

最後,我不知道您是否使用OpenCV中的 「C版本」。除非嚴格必要(對於兼容性問題等),否則我建議使用OpenCV的C++接口,因爲它更方便(至少從我的個人經驗來看)。現在讓我先說明一下,我不打算用這個語句就C vs C++的優點展開一場火焰戰。

希望這會有所幫助。