怎么提取SURF匹配后的图像特征点坐标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么提取SURF匹配后的图像特征点坐标相关的知识,希望对你有一定的参考价值。

vector<Point2f> object;
vector<Point2f> scene;
for( size_t i = 0; i < goodMatches.size(); i++ )


object.push_back( keypointsObject[ goodMatches[i].queryIdx ].pt );
scene.push_back( keypointsScene[ goodMatches[i].trainIdx ].pt );


for (int i=0;i<object.size();i++)

cout<<"原图坐标=========="<<object[i]<<endl;
cout<<"目标坐标=========="<<scene[i]<<endl;


这就输出了原图和目标特征点坐标
参考技术A 单纯从特征点很难把匹配的区域全部取出来的。

一个思路是: 把源图片进行分割,然后检查特征点在哪个分割区域里面。

opencv中SURF特征提取的最佳hessian阈值+最小描述符匹配

【中文标题】opencv中SURF特征提取的最佳hessian阈值+最小描述符匹配【英文标题】:optimum hessian threshold for SURF feature extraction in opencv + Minimum descriptors matching 【发布时间】:2012-06-22 11:23:39 【问题描述】:

目前我正在从事人脸识别项目,我正在使用 Fisherfaces/LDA 在更广泛的层面上过滤掉图像,然后使用 SURF 来验证 LDA 的输出。应该传递给CvSURFParam() 的好的 Hessian 阈值是多少? OpenCV提供的示例代码有500个,是否最优?

另外,为了使我的代码可以确认身份,应该匹配的描述符的最小数量是多少? 50% 就够了吗?

我在 Windows 上使用 OpenCV 2.4 和 C++。

【问题讨论】:

只有您可以回答此类问题 - 在不同的阈值、常数等上测试您的输入数据,并检查它是否最适合您。 我做到了。但我不确定,因为我的数据库不够大。我只是在检查是否存在任何经过​​研究证明的价值。无论如何,谢谢。 【参考方案1】:

ArtemStorozhuk 是对的。由于我们不知道您的数据集(尤其是图像质量),因此我们无法建议更好的阈值值。是的,没有通用的答案

要增加训练集中测试图像的数量,您可以使用公共领域的人脸数据库(例如FERET)。

请允许我另外指出(也适用于将来通过搜索引擎找到此内容的每个人),您正在尝试的不是一个好主意。使用 SURF 只会确认您找到了另一张脸。再次为必须匹配的描述符设置最小值非常取决于图像质量。发现较少的 SURF 特征可能只是意味着图像有点太模糊了。

【讨论】:

以上是关于怎么提取SURF匹配后的图像特征点坐标的主要内容,如果未能解决你的问题,请参考以下文章

SIFT/SURF

OpenCV+Python特征提取算法与图像描述符之SIFT / SURF / ORB

SURF+GTM基于SURF特征提取,GTM去除错误配准点的图像匹配算法的MATLAB仿真

opencv之SURF图像匹配

siftsurforb 特征提取及最优特征点匹配

SIFT,SURF,ORB,FAST,BRISK 特征提取算法比较