应用Sift算子的模式识别方法 内核篇

博客地址:http://blog.csdn.net/abcjennifer/article/details/7372880

总的来说,模式识别方法分两步:train&predict.
经过谭敏师姐细心讲解和细读 siftdemov4 code,将这两部的理解解释如下:
(以下提到的feature都是指sift feature)


一、train

1.提取+/- sample的feature,每幅图提取出的sift特征个数不定(假设每个feature有128维)

2.利用聚类方法(e.g K-means)将不定数量的feature聚类为固定数量的(比如10个)words即BOW(bag of word)

3.normalize,并作这10个类的直方图e.g [0.1,0.2,0.7,0...0];

4.将each image的这10个word作为feature_instance 和 (手工标记的) label(+/-)进入SVM训练



二、predict

1. 提取test_img的feature(如137个)

2. 分别求each feature与10个类的距离(e.g. 128维欧氏距离),确定该feature属于哪个类

3. normalize,并作这10个类的直方图e.g [0,0.2,0.2,0.6,0...0];

4. 应用SVM_predict进行结果预测

                                                                                                                                                                        


另外,讲一下有关两个img的sift特征match:

[cpp]  view plain  copy
  1. des2t = des2';                          % Precompute matrix transpose转置  
  2. for i = 1 : size(des1,1)  
  3.    dotprods = des1(i,:) * des2t;        % Computes vector of dot products两幅图像的keypoints的128个维度做点积  
  4.    [vals,indx] = sort(acos(dotprods));  % Take inverse cosine and sort results,将点积的逆余弦排序  
  5.   
  6.    % Check if nearest neighbor has angle less than distRatio times 2nd.  
  7.    if (vals(1) < distRatio * vals(2))  
  8.       match(i) = indx(1);%match(i)表示图1中i-th keypoint的匹配点是图2中的第几个keypoint  
  9.    else  
  10.       match(i) = 0;  
  11.    end  
  12. end  

这里,两个matrix做点积(转置后) dotprods = des1(i,:) * des2t; 可以得出img1中的一个feature点与img2中所有点的点乘

这样做的目的:因为for向量a,b,

a·b=|a|*|b|*cos<a,b>

那么arccos(dotprods)就是夹角。对夹角排序,vals(1),vals(2)分别是所夹最小角和次小角

[cpp]  view plain  copy
  1. vals(1) < distRatio * vals(2)  

是match的条件,即最小角小于distRatio(const value)乘以次小角。

满足该条件即可将图1中的第i个feature和图2中的第indx(1)个feature进行匹配。


关于sift的其他讲解:

http://blog.csdn.net/abcjennifer/article/details/7639681

http://blog.csdn.net/abcjennifer/article/details/7372880

http://blog.csdn.net/abcjennifer/article/details/7365882

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值