最小值和最大值对SURF来说意味着什么,弗兰马赫
What is the meaning of min_dist and max_dist for SURF, FlannMatcher
我正在使用Opencv C++作为人脸识别应用程序。为此,我使用SURF
作为描述符,使用FlannMatcher
来匹配点。我的代码如下,
FlannBasedMatcher matcher;
std::vector< DMatch > matches;
matcher.match( descriptors_1, descriptors_2, matches );
double max_dist = 0; double min_dist = 100;
for( int i = 0; i < descriptors_1.rows; i++ )
{
double dist = matches[i].distance;
if( dist < min_dist ) min_dist = dist;
if( dist > max_dist ) max_dist = dist;
}
这里我们找到min_dist
和max_dist
来检查两个面之间是否匹配。但是我不明白min_dist
和max_dist
是什么意思。
这到底意味着什么?为什么我们需要为单个描述符找到min_dist
和max_dist
如您所知,SIFT描述符是高维空间中的向量,即128。当你在图像上运行它来寻找兴趣点时,它会找到一些点作为兴趣点,并将它们的描述符作为向量来描述高维空间中的这个点。
第一个图像中的这些点中的每一个,比如A
,在另一个图像中应该有一个对应的点,比如B
!这意味着,那些距离最小的人最有可能是通讯员,但并非所有人。其中一些可能是异常值,我们预计在其检测到的对应关系中具有较高的距离值。这使得我们在代码中使用max_dsist
。在某些类型的上下文中,您可能不希望所有最佳匹配,因为对应点的数量可能相对较高,或者。。。。因此,我们定义了距离的下界,我们用min_dist
这样做。
我希望这能给你真知灼见!
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- C++避免重复声明的语法是什么
- c++库的公共头文件中应该包含什么
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- ifstream什么都没读
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 从仿真数据构建非常大的马尔可夫链的最佳/最快方法是什么?
- 马洛克的优势是什么?
- 结构向量 --> 苹果马赫-O 链接器错误
- C++ 找不到"::"架构的苹果马赫-O链接器错误/符号
- 最小值和最大值对SURF来说意味着什么,弗兰马赫