因此,我正在使用FAST檢測器和FREAK描述符進行應用。當涉及到匹配時,我想使用BRUTEFORCE_HAMMING匹配,但我沒有得到預期的結果(給出了與原始圖像無關的更多匹配,然後圖像看起來相似)匹配FREAK描述符的最佳方法是什麼?
我試過下面的代碼
MatOfDMatch matches = new MatOfDMatch();
matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING);
matcher.match(descriptors,descriptors1,matches);
MatOfDMatch goedematches = new MatOfDMatch();
double max_dist = 0;
double min_dist = 100;
//if (descriptors.cols() == descriptors1.cols())
//{
for(int i = 0; i < descriptors.rows(); i++)
{ double dist = matches.toArray()[i].distance;
if(dist < min_dist) min_dist = dist;
if(dist > max_dist) max_dist = dist;
}
// should only draw good matches
for(int i = 0; i < descriptors.rows(); i++)
{ MatOfDMatch temp = new MatOfDMatch();
if(matches.toArray()[i].distance <= 2*min_dist)
{ temp.fromArray(matches.toArray()[i]);
goedematches.push_back(temp);
}
// }
}
Log.d("LOG!", "Number of good matches= " + goedematches.size());
但它給出了「壞」的結果。所以我的問題是,有沒有其他方法與FREAK描述符進行匹配? (我使用的OpenCV庫2.4.4和Java包裝,所以沒有C代碼)
我知道如何獲得兩個圖像的關鍵點,但不知道如何連接它們。任何想法如何做到這一點? – user1393500 2013-05-04 13:31:24
在矩陣中彼此相鄰繪製兩個圖像,並在點之間繪製線條(cv :: line)。 – JonesV 2013-05-04 16:02:50