使用SIFT为每个关键点生成本地功能

时间:2012-07-24 17:46:22

标签: image-processing similarity sift feature-extraction keypoint

我有一个图像,我想通过使用SIFT探测器找到关键点并将它们分组,然后我想通过使用SIFT为每个关键点生成局部特征,请你帮助我如何做到这一点?请给我任何建议 我非常感谢你的帮助

2 个答案:

答案 0 :(得分:0)

我不确定我理解你的意思,但是如果你从图像中提取SIFT特征,你会自动获得用于相互比较特征的特征描述符。当然,您也可以通过它获得特征的位置,大小,方向和粗糙值。

虽然您可以按照图像中的位置对这些功能进行分组,但目前我无法比较这些组,因为它们可能与本地相关,但可能具有截然不同的功能描述符。

我也建议使用SURF。它更快,不受专利保护。

如果您需要有关如何检索和比较描述符的具体说明,请查看the examples from OpenCV

答案 1 :(得分:0)

如果你在这里使用opencv是执行它的命令,否则如果你使用matlab,请参阅链接MATCHING_using surf


使用OPENCV ::

//您可以更改需求的参数

    double hessianThreshold=200; 
    int octaves=3;
    int octaveLayers=4;
    bool upright=false;
    vector<KeyPoint>keypoints;

//检测器检测图像中的关键点图像是Mattype的RGBIMAGE

SurfFeatureDetector detector( hessianThreshold, octaves, octaveLayers, upright );
detector.detect(RGB_IMAGE, keypoints);

//提取器计算关键点周围的局部特征

SurfDescriptorExtractor extractor;
Mat descriptors;
extractor.compute( last_ref, keypoints, descriptors);

//所有关键点局部特征在描述符矩阵中一个接一个地存储在行中......

希望它有用:)