我有一个图像,我想通过使用SIFT探测器找到关键点并将它们分组,然后我想通过使用SIFT为每个关键点生成局部特征,请你帮助我如何做到这一点?请给我任何建议 我非常感谢你的帮助
答案 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);
//所有关键点局部特征在描述符矩阵中一个接一个地存储在行中......
希望它有用:)