【发布时间】:2012-07-23 02:22:04
【问题描述】:
我有一张图像,我想使用 SIFT 检测器定位关键点并将它们分组,然后我想使用 SIFT 为每个关键点生成局部特征,请你帮我怎么做?请给我任何建议 非常感谢您的帮助
【问题讨论】:
标签: image-processing similarity sift feature-extraction keypoint
我有一张图像,我想使用 SIFT 检测器定位关键点并将它们分组,然后我想使用 SIFT 为每个关键点生成局部特征,请你帮我怎么做?请给我任何建议 非常感谢您的帮助
【问题讨论】:
标签: image-processing similarity sift feature-extraction keypoint
我不确定我是否理解您的意思,但是如果您从图像中提取 SIFT 特征,您会自动获得用于将特征相互比较的特征描述符。当然你也可以用它得到特征位置、大小、方向和hessian值。
虽然您可以按图像中的位置对这些特征进行分组,但目前我知道没有办法比较这些组,因为它们可能与本地相关,但可能具有截然不同的特征描述符。
我还建议使用 SURF。它速度更快且不受专利保护。
如果您需要有关如何检索和比较描述符的具体说明,请查看 the examples from OpenCV。
【讨论】:
如果您使用的是 opencv,这里是执行此操作的命令,否则如果您使用的是 matlab,请参阅链接 MATCHING_using surf
使用 OPENCV::
//您可以根据需要更改参数
double hessianThreshold=200;
int octaves=3;
int octaveLayers=4;
bool upright=false;
vector<KeyPoint>keypoints;
//检测器检测图像中的关键点 这里图像是Mat类型的RGBIMAGE
SurfFeatureDetector detector( hessianThreshold, octaves, octaveLayers, upright );
detector.detect(RGB_IMAGE, keypoints);
//提取器计算关键点周围的局部特征
SurfDescriptorExtractor extractor;
Mat descriptors;
extractor.compute( last_ref, keypoints, descriptors);
//所有关键点局部特征在描述符矩阵中逐行存储...
希望有用:)
【讨论】: