所以我正在制作一个使用 FAST 检测器和 FREAK 描述符的应用程序。当涉及到匹配时,我想使用 BRUTEFORCE_HAMMING 匹配,但我没有得到预期的结果(与原始图像无关的图像提供更多匹配,然后是看起来相似的图像)
我尝试了以下代码
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 代码)