2012-02-29 13 views
9

क्या किसी को यह पता चल जाता है कि ओपनसीवी 2 DescriptorMatcher::radiusMatch() और knnMatch()vector<vector<DMatch>>& matches क्यों लेते हैं? मैं थोड़ी उलझन में हूं कि यह सिर्फ एक वेक्टर क्यों नहीं होगा, क्योंकि यह उस दृश्य में केवल एक ही पंक्ति है जो प्रशिक्षण छवि से मेल खाता है, है ना?ओपनसीवी डिस्क्रिप्टर मैटर त्रिज्या मैच और knnMatch परिणाम प्रारूप

मैं कुछ इस तरह है:

void getMatchingPoints(
    const vector<vector<cv::DMatch> >& matches, 
    const vector<cv::KeyPoint>& keyPtsTemplates, 
    const vector<cv::KeyPoint>& keyPtsScene, 
    vector<Vec2f>& ptsTemplate, 
    vector<Vec2f>& ptsScene 
    ) 
{ 
    ptsTemplate.clear(); 
    ptsScene.clear(); 

    for (size_t k = 0; k < matches.size(); k++) 
    { 
     for (size_t i = 0; i < matches[k].size(); i++) 
     { 
      const cv::DMatch& match = matches[k][i]; 
      ptsScene.push_back(fromOcv(keyPtsScene[match.queryIdx].pt)); 
      ptsTemplate.push_back(fromOcv(keyPtsTemplates[match.trainIdx].pt)); 
     } 
    } 
} 

लेकिन मैं थोड़ा कैसे वास्तव में लगभग मैप करने के लिए के बारे में उलझन में हूँ। ऑब्जेक्ट का स्थान एक बार जब मैं उन्हें ptsScene में रखता हूं। जब मैं उन्हें खींचता हूं तो अंक मुझे बिखरे हुए लगते हैं, इसलिए मुझे लगता है कि मुझे याद आ रही है कि नेस्टेड वैक्टर क्या दर्शाते हैं।

उत्तर

23

knnMatch समारोह k निकटतम-पड़ोसी से मेल खाता है वापस आ जाएगी, यानी अगर आपने knnMatch(queryDescriptors, trainDescriptors, matchesQueryToTrain, 3) फोन जहां इस मामले k=3 में, तो प्रत्येक प्रशिक्षण बिंदु के लिए, यह क्वेरी सेट से 3 सबसे अच्छा मैचों मिल जाएगा।

अपने vector<vector<DMatch>> के संदर्भ में, इसका मतलब है कि बाहरी vector प्रत्येक query-> ट्रेन मैच का एक वेक्टर है, और भीतरी vector अपने k निकटतम मैचों में से एक वेक्टर है।

this अन्य प्रश्नों में क्रॉस-चेकिंग विधि के साथ इन k मैचों का उपयोग करने का एक अच्छा उदाहरण है।

यदि आप एक साधारण 1-1 मिलान चाहते हैं, तो आप k = 1 के साथ knnMatch को कॉल कर सकते हैं जो आकार 1 के आंतरिक वेक्टर को वापस कर देगा, या केवल match पर कॉल करें जो vector<DMatch> फॉर्म में कोई दूसरा वेक्टर नहीं है।

+1

बहुत अच्छी तरह से, बहुत बहुत धन्यवाद! –

संबंधित मुद्दे