我有一张图像,我想通过使用 SIFT 检测器定位关键点并将它们分组,然后我想通过使用 SIFT 为每个关键点生成局部特征,请你帮我怎么做?请给我任何建议我非常感谢您的帮助
2 回答
If you are using opencv here are the commands to do it, else if you are using the matlab see the link MATCHING_using surf
USING OPENCV::
// you can change the parameters for your requirement
double hessianThreshold=200;
int octaves=3;
int octaveLayers=4;
bool upright=false;
vector<KeyPoint>keypoints;
//The detector detects the keypoints in an image here image is RGBIMAGE of Mat type
SurfFeatureDetector detector( hessianThreshold, octaves, octaveLayers, upright );
detector.detect(RGB_IMAGE, keypoints);
//The extractor computesthe local features around the keypoints
SurfDescriptorExtractor extractor;
Mat descriptors;
extractor.compute( last_ref, keypoints, descriptors);
// all the key points local features are stored in rows one after another in descriptors matrix...
Hope it is useful:)
我不确定我理解你的意思,但是如果你从图像中提取 SIFT 特征,你会自动获得用于相互比较特征的特征描述符。当然你也可以用它得到特征位置、大小、方向和粗麻布值。
虽然您可以按图像中的位置对这些特征进行分组,但目前我知道无法比较这些组,因为它们可能是局部相关的,但可能具有截然不同的特征描述符。
我也建议冲浪。它速度更快且不受专利保护。
如果您需要有关如何检索和比较描述符的具体说明,请查看OpenCV 中的示例。