2017-04-18 79 views
1

我想在場景中查找多個對象(對象看起來相同,但可能在比例和旋轉方面不同,我不知道要檢測的對象是什麼)。我已實現了以下想法,基於OpenCV中的featuredetectors,它的工作原理:檢測多個對象(使用OpenCV)

detect and compute keypoints from the object 
for i < max_objects_todetect; i++ 
    1. detect and compute keypoints from the whole scene 
    2. match scene and object keypoints with Flannmatcher 
    3. use findHomography/Ransac to compute the boundingbox of the first object (object which hast the most keypoints in the scene with multiple objects) 
    4. set the pixel in the scene, which are within the computed boundingbox to 0, -> in the next loopcycle there are no keypoints for this object to detect anymore. 

這個實現的問題是,我需要計算的關鍵點爲現場多次這就需要計算時間的很多(250毫秒)。有沒有人有更好的想法檢測多個對象?

感謝Drian

+0

你使用什麼檢測器和描述符? –

+0

現在使用SURF檢測器和描述符 – Drian

+0

也許你應該使用ORB,而不是SURF。但我不知道你的圖像有多準確。 –

回答

0

你好togehter我試圖ORB這的確是更快,我會盡量Akaze。

雖然測試ORB我已經encouterd以下問題:

雖然chaning我的圖片的大小doesn't影響衝浪檢測關鍵點(發現在小和大畫面相同的關鍵點(在鏈接圖片右)),它會影響ORB檢測到的關鍵點。在小野菜中,我無法找到這些關鍵點。我試圖用ORB參數進行試驗,但不能使其工作。

圖片:http://www.fotos-hochladen.net/view/bildermaf6d3zt.png

SURF:

cv::Ptr<cv::xfeatures2d::SURF> detector = cv::xfeatures2d::SURF::create(100); 

ORB:

cv::Ptr<cv::ORB> detector = cv::ORB::create(1500, 1.05f,16, 31, 0, 2, ORB::HARRIS_SCORE, 2, 10); 

你知道,以及如何it's可以檢測獨立的大小相同的關鍵點圖片?

問候Drian

+0

如果它檢測到與大小無關的相同關鍵點,它有什麼關係?如果您正在檢測多個對象並將它們的像素設置爲0,如果對象檢測是正確的,與大小無關,在我看來,這並不重要。 –

+0

當我想要檢測大部分中的小部分時,我無法使用ORB查找對象,導致我在ORB檢測到的小圖片中沒有關鍵點,但是當我使用SURF時,我擁有關鍵點並且我是能夠檢測到對象。 – Drian

+0

這確實是一個問題。您應該嘗試使用參數,特別是'scaleFactor'和'patchSize'。如果這不起作用,請嘗試使用「BRISK」進行檢測,並使用「對手BRISK」進行說明。探測器應該給你很多'關鍵點',所以你可能想在估計單應性之前過濾來自描述符的匹配。 –