SIFT特征向量提取以及融合问题

goodmorning2014 2017-01-07 05:11:13
加精
在运行SIFT特征向量匹配中,(结果正确)用的是VS2013+opencv2.4.9+windows8.1

代码:
SiftFeatureDetector feature;
vector<KeyPoint> keypoints1;
feature.detect(input1, keypoints1);
Mat output1;
drawKeypoints(input1, keypoints1, output1);

//存储特征1
SiftDescriptorExtractor extractor;//特征提取器
Mat descriptor; //这个描述符才是做实验要用的特征
extractor.compute(input1, keypoints1, descriptor);
descriptor1用于存放特征向量,然而在单步调试中,


却找不到descriptor1中的128维的特征向量,请问128维特征向量在哪呢?或者我哪里理解错了(刚刚学这个)?
还有如何将两个找到的特征向量进行融合,比如SIFT向量descriptor1和LBP特征向量descriptor2如何融合为一个特征向量descriptor3用于匹配?
...全文
4846 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_38036005 2017-03-24
  • 打赏
  • 举报
回复
Sift特征点
celcn 2017-03-24
  • 打赏
  • 举报
回复
学习了 ?!
meadow 2017-03-21
  • 打赏
  • 举报
回复
楼主试试以Sift特征点为基准,仅仅提取关键点附近的LBP特征。 那么关键点具备了两个特征,具体效果如何,等待楼主验证
Datrilla 2017-03-18
  • 打赏
  • 举报
回复
你好,我看到你这里有特征向量的提取。我在看关于高斯的各种资料中有看到SIFT,但是不懂这些。 我目前就一帧的一个频谱图要经过高斯morphing。我知道的是二维平面上有坐标点(X,Y),这些用matlab的plot画出来 是一条幅度不一样的波浪。x是等间隔的从1取到1025,而对应的y是变化的。这里有gaussmix http://blog.csdn.net/u014646950/article/details/62041035 我不知道我这个特征到底算是(x,y)列向放进去呢,还是只有(y)列向放进去。还是这些数据还要经过分析才能放进去
ljheee 2017-03-16
  • 打赏
  • 举报
回复
-牧野- 2017-01-08
  • 打赏
  • 举报
回复 1
说一下我的理解,不对的地方请拍砖。
1. SIFT中128维特征向量在哪?
在compute方法中的descriptor里,OpenCV把图像上的N个SIFT特征保存在Mat矩阵里,这个Mat图像的高和宽分别是N和128;在你贴出来的图里,descriptor1的rows(行/高)和cols(列/宽)分别是555和128,代表input1图像有555个SIFT特征点,当然每个都是128维的:


descriptor1的数据类型是float32,不能直观显示出来,可以经过归一化后输出,大概的样子是这样的:


详细的内容可以看看这篇文章,说的是Surf特征,SIFT特征类推:
http://blog.csdn.net/dcrmg/article/details/52614031

2. 如何将SIFT向量descriptor1和LBP特征向量descriptor2融合:
一个图像有多少个像素点就可以有多少个LBP特征,SIFT特征却没有这么多,所以如果要融合的话,第一步先要对应到同一个位置的SIFT和LBP特征,在detect方法中生成的KeyPoints结构中的pt中保存了SIFT特征的位置信息。对应到同一个位置点之后两个特征的融合可以尝试直接相加,矩阵相乘等等。
还有一个问题是不经改进的LBP特征维度不是128的,任性一点的话也可以不用管这个。可操作性楼主自己验证吧,祝你顺利!

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧