sift算法图像相似度matlab,matlab – 如何使用SIFT算法计算两个图像的相似程度?...

首先,你不应该使用vl_sift而不是sift吗?

其次,您可以使用SIFT特征匹配来查找两个图像中的对应关系.这是一些示例代码:

I = imread('p1.jpg');

J = imread('p2.jpg');

I = single(rgb2gray(I)); % Conversion to single is recommended

J = single(rgb2gray(J)); % in the documentation

[F1 D1] = vl_sift(I);

[F2 D2] = vl_sift(J);

% Where 1.5 = ratio between euclidean distance of NN2/NN1

[matches score] = vl_ubcmatch(D1,D2,1.5);

subplot(1,2,1);

imshow(uint8(I));

hold on;

plot(F1(1,matches(1,:)),F1(2,matches(1,:)),'b*');

subplot(1,2,2);

imshow(uint8(J));

hold on;

plot(F2(1,matches(2,:)),F2(2,matches(2,:)),'r*');

vl_ubcmatch()基本上执行以下操作:

假设你在F1中有一个P点,你想在F2中找到“最佳”匹配.一种方法是将F1中P的描述符与D2中的所有描述符进行比较.通过比较,我的意思是找到欧几里德距离(或两个描述符之差的L2范数).

然后,我在F2中找到两个点,比如U& V分别具有来自P的最低和第二低的距离(例如,Du和Dv).

这是Lowe推荐的:如果Dv / Du> = threshold(我在示例代码中使用了1.5),那么这个匹配是可以接受的;否则,它是模糊匹配的并且作为对应被拒绝,我们不匹配F2到P中的任何点.基本上,如果最佳匹配和次优匹配之间存在很大差异,那么您可以期望这是一个质量匹配.

这很重要,因为在图像中存在很多模糊匹配的范围:想象一下湖中的匹配点或具有多个窗口的建筑物,描述符看起来非常相似,但对应关系显然是错误的.

您可以通过多种方式进行匹配.您可以使用MATLAB轻松地完成匹配,或者您可以使用KD树或近似数字搜索(如FLANN中已实施的FLANN)来加快速度.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值