2013-06-18 74 views
2

我正在嘗試爲iPhone創建應用程序,但我是openCV和iOS的新開發者。我有超過50個物體圖像,我有一個來自相機的場景圖像。每次我在場景中都有這些物體之一。我可以通過篩選算法找到一個對象,但我找不到一種計算置信度的方法,以便與對象之間進行比較,因爲某些對象非常相似。我使用了findHomography函數,但仍然不知道如何獲得信心。我從openCV庫找到這個,opencv篩選算法,如何從findHomography獲得信心

struct CV_EXPORTS MatchesInfo 
{ 
    MatchesInfo(); 
    MatchesInfo(const MatchesInfo &other); 
    const MatchesInfo& operator =(const MatchesInfo &other); 

    int src_img_idx, dst_img_idx;  // Images indices (optional) 
    std::vector<DMatch> matches; 
    std::vector<uchar> inliers_mask; // Geometrically consistent matches mask 
    int num_inliers;     // Number of geometrically consistent matches 
    Mat H;        // Estimated homography 
    double confidence;     // Confidence two images are from the same panorama 
}; 

但我不知道如何使用它。

謝謝

回答

0

您應該提供一些與您一起工作的圖像示例。 SIFT可能會或可能不適合你想要做的事情。這項任務有很多不同的方法。

請注意,單應性是P2到P2的可逆映射,這基本上意味着它對平面物體(或對於遠處的場景)是精確的,因爲你的物體(可能)不是平面的近似值。

你可能會想出很多方法來衡量這種信心。基本上重要的是對單應性的支持(即RANSAC在所有SIFT匹配中選擇了多少點,以便計算單應性)以及單應映射這些「內點」點的能力。要查找比分,請使用單應投影將點投影到第二張圖像上,並查找原始點的重新投影的累積距離。得分越低,比賽就越好(注意你需要用點數來歸一化,否則對於少量的對應關係你會得到更好的得分,這不是你想要的)

希望這有助於, 亞歷克斯

0

如果你想找到對象之間的信心。我以爲以下這些步驟將幫助:

(因爲你提到的同形矩陣,所以我認爲這是平面物體),從每個平面物體圖像

  • 比較場景圖像

    1. 抽象篩關鍵點通過匹配關鍵點與對象圖像。

    2. 對於某些對象圖像,您無法找到它們之間的單應性矩陣。但是對於其他人來說,你可以找到它們之間的單應性矩陣,通過使用同構矩陣將物體圖像轉換成場景圖像,或許與函數warppespective **有關。

    3. 然後您可以使用模板匹配來查找場景中的對象,並且還可以獲得置信度值。

    我希望它能解決您的問題。