我一直在智能手机上的Android应用程序,其中2张图片可以比较(一个在SD卡上,一个从相机)。我在有限的关键点上使用FREAK描述符(根据响应筛选出500个最好的关键点)。当我尝试将它与BRUTEFORCE_SL2匹配时,它会返回0个匹配项。Bruteforce匹配与FREAK描述符一起工作吗?
这是因为FREAK和Bruteforce在一起工作不好吗?或者我在代码中做错了什么?
匹配情况与
MatOfDMatch matches = new MatOfDMatch();
matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_SL2);
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 < 3*min_dist)
{ temp.fromArray(matches.toArray()[i]);
goedematches.push_back(temp);
}
// }
}
Log.d("LOG!", "Number of good matches= " + goedematches.size());
当我只是做了
matcher.match(descriptors,descriptors1,matches);
与
Log.d("LOG!", "Number of good matches= " + matches.size());
宣读了比赛,我得到约450即使我拿的图片甚至不像我的形象。
你最后一句话是什么意思?谢谢你的信息,我会试试汉明并检查我的结果 – user1393500 2013-05-01 18:11:31
我编辑了我的答案。我希望现在更清楚。 – JonesV 2013-05-01 19:31:55
是的,我一直在尝试汉明,但goedematches.size()给出了奇怪的结果。与原始图像没有任何关系的图像比与原始图像几乎相同的图像更好地匹配。 – user1393500 2013-05-01 23:48:52