该MATLAB代码是利用SIFT算法进行特征提取。只需下载代码并运行。然后你可以得到特征和描述符。注意,如果你想得到更具适应性的结果。请更改工厂:行、列、级别、阈值和d(在最后一部分)。对于其他工厂,请不要更改,直到你了解大卫G。洛的文件和我的代码。
邢迪(2020)。SIFT特征Extreaction(//www.tatmou.com/matlabcentral/fileexchange/50319-sift-feature-extreaction),MATLAB中央文件交换。检索。
1.9.0.0条 | 注:描述符某关键点的描述符和功能是整个点的总描述符 |
|
1.8.0.0 | 描述错误正确,更清晰的评论来了解。 |
|
1.7.0.0 | 小错误修正 |
|
1.6.0.0 | 导致图像更新 |
|
1.5.0.0 | 错误变化 |
|
1.4.0.0 | 感谢Lester Oropesa的错误发现,如果你们已经下载了代码,不想重新下载。请将“/m”(“.m”)替换为“/n”(“.n”)。如果不起作用,请重新下载。很抱歉给您带来不便。 |
|
1.3.0.0 | 1.纠正错误 |
|
1.2.0.0条 | 很抱歉给您带来不便,这时候该代码是正确的。 |
|
1.1.0.0条 | 有在最后一次更新一个错误,我已经改正了。抱歉给你带来不便。 |
VELAMMAL SORIMUTHUPILLAI(查看配置文件)
笑脸达克(查看配置文件)
如果我八度到4的数量和级别的数量更改为5,关键点仅在图像的左上角季度发现的。任何人都可以说明为什么这会发生?
王怡然(查看配置文件)
自闭症(查看配置文件)
翁池(查看配置文件)
拉韦尔阿卜杜拉(查看配置文件)
埃布拉希姆卡(查看配置文件)
郭帅(查看配置文件)
艾尔莎卡兹米(查看配置文件)
你好。谢谢你的分享代码。
我不一定方形图像工作。我用不同的宽度和高度的灰度影像。我一直在测试你的代码,给我的错误:
siftme错误(第95行)
子= d {I}(X:X + 2,Y:Y + 2,K-1:K + 1);
的Krishnakumar小号(查看配置文件)
图像中的关键点是什么?如何确定关键点?
穆罕默德·伊姆兰沙菲(查看配置文件)
能否请你告诉图像特征提取的过程中,我想用SIFT检测图像伪造....
m.imran1103@gmail.com
马可法里纳(查看配置文件)
关键点坐标位置:
%的x,y森特拉尔点和位置旋转准备
X =地板((极值(4 *(I-1)+3)-1)/(N /(2 ^(极值(4 *(I-1)+1)-2))))+ 1;
y=mod((极值(4*(i-1)+3)-1),m/(2^(极值(4*(i-1)+1)-2)))+1;
z=极值(4*(i-1)+2);
在他们中的一些代码丢弃,所以你只需要保持被用来构建功能载体的最后一个。
贾瓦德·伊克巴勒(查看配置文件)
梅鲁尚·霍夫汉尼斯(查看配置文件)
徐勤(查看配置文件)
代码需要很长时间才能执行。我还没有得到图像的结果。这段代码得到的点数似乎很大。为什么图像的大小必须调整为256×256?
S.萨哈尔(查看配置文件)
嗨,任何人都可以请告诉我如何可以计算的特征的坐标?
朱朝阳(查看配置文件)
有人知道如何提取检测到的特征点的坐标吗?
特雅斯维尼卡尔(查看配置文件)
Asanka佩雷拉(查看配置文件)
喜马可,你可以分享你的代码用于提取坐标一块。
望天星(查看配置文件)
比例尺=sigma0*sqrt(2)^(1/level)^((i-1)*level+j);
这是排什么意思?
有人能给我解释一下吗?或者让我看看方程式?
马可法里纳(查看配置文件)
我计算出来:关键点有多个方向,因此当然特征载体的还包含每个关键点的多个描述符。我能够提取的坐标。反正邢迪匹配算法不正确地为不同的旋转工作。你可以建议我如何解决这个问题?叙不能是不变的旋转,不管你使用的关键点定向用于这一目的。
马可法里纳(查看配置文件)
任何人都能够获得关键点xy坐标?我试图从RX,RX提取出来,但我有不同数量的关键点相比,功能大小。
ZUHAIR卡迪尔(查看配置文件)
谢谢
伊沙帕特尔(查看配置文件)
错误:数组大于该限制的创建可能需要很长的时间和原因MATLAB变得反应迟钝。
该图像的大小是必需的?
雷震(查看配置文件)
我得到通过使用你的代码的好成绩,thanks.Do你的代码匹配两幅图像之间的功能?
王大杰(查看配置文件)
哈桑·艾哈迈德(查看配置文件)
德加弘(查看配置文件)
后来我来试试
桑杰(查看配置文件)
没关系:)想通了。
桑杰(查看配置文件)
试图下载该文件。它不是一个.m文件。这是一个HTML文件。我缺少的东西吗?还有在这个文件中没有Matlab代码。只有HTML。
Nidheeshñ(查看配置文件)
嗨,星,我把你的代码和洛的原始代码做了比较。可以看出,对于256x256灰度图像,返回的描述符(特征)的数量有所不同。我试了几张照片。每个案子我都有不同的号码。代码返回的描述符数量相对较多。为什么会这样?
程宁(查看配置文件)
谢谢
张学友(查看配置文件)
基尼五世(查看配置文件)
通过使用此代码为第一图像的特征是50 * 128和用于第二图像特征是40 * 128。特征尺寸对于两个影像,然后我们将如何这两个图像匹配不同。
塞利姆诺盖塞利姆诺盖(查看配置文件)
mukemmel olmus elinize kolunuza SAGLIK ...超完美的在你的手塞利姆健康
HyungWoo金(查看配置文件)
在关键点定位的过程中限定图像x坐标时,第一八度充分环围绕x坐标的范围,但由于开始第二环路按比例减小。为x =小区(J / n)的适当?
米奥德拉格Potpara(查看配置文件)
为什么用这种方法计算极值数?
对于i=2:octave+1 number=number+(2^(i-octave)*column)*(2*row)*interval;
结束
李明旭(查看配置文件)
在标题“Extreaction” A错字应该是“提取”。:)
DARSHAN英格尔(查看配置文件)
筛
崔占标(查看配置文件)
谢谢
浩邦(查看配置文件)
KHAN(查看配置文件)
我无法理解编码的最后一个步骤。
kori=(kori*10+(kori-1)*10)。/2-180;
kpoli(f:(f+长度(kori)-1))=kori;
f=f+长度(kori);
什么都是在这里完成了。
请帮助我理解关键点描述部分的编码。
Raghavendra Gulagundi(查看配置文件)
Nachiket Patki(查看配置文件)
我想用Harris角检测眼睛和SIFT我该怎么办呢?
高丽萨胡(查看配置文件)
松鸦(查看配置文件)
If I am not wrong, in this code in order to create DoG images in each octave, rather than subtracting two subsequent Gaussian Images(e.g.Dog2 = 3-2, Dog1 = 2-1),the subtraction is done with reference of original image in each octave(eg. Dog1 = 1-original,DoG2 = 2-original, DoG3 = 3-original), which is different from the paper, in which I guess two subsequent images are suggested. Does It make any difference on the overall performance of the algorithm?
法纳阿里(查看配置文件)
好了,现在我得到的所有关键点是特征向量如你所说的符向量。然而,还是有识别所述关键点的xy坐标的问题,即对应于在特征矢量中的描述符。
魏经理(查看配置文件)
嗨,邢迪
谢谢你的分享代码。
在高斯的区别是SIFT的第一步,我的兴趣。有一个问题让我感到困惑如何计算尺度参数。尺度参数首先计算,但是计算第二八度之前,该图像是滴采样。因此,规模变化。是不是该尺度参数需要乘以2?
本(查看配置文件)
我把一个500x374 RGB JPG,和脚本了2.5小时拥有的RAM的i5-4570和8 GB的系统上用Matlab 2015A运行。任何想法,为什么它这么慢?
阳旭,Pyng(查看配置文件)
感谢分享,很不错。
墨西·安卡姆雷迪(查看配置文件)
亲爱的邢迪,
我怎么能提取
关键点的空间位置?u能请建议
我。
法赫曼(查看配置文件)
请我有一个问题:
为什么特征的数量的图像非常高。
在Sift(尺度不变特征变换)算法的启发下,这个文件中的描述符数量很小,在你的代码中可能是1800对183599。
如果我使用256 * 256尺寸计算我挂。
严(查看配置文件)
嗨,邢迪,
谢谢你分享密码。
我对aazz也有同样的问题,我怎么知道矩阵告诉了与特征向量中的描述符相对应的所有关键点的坐标?
谢谢你
高爽(查看配置文件)
嗨,邢迪,
在“精确关键点定位”的代码块中,只使用二阶导数计算一个方向导数,然后定位局部极值点。基于我目前对论文的理解,我们是否应该解一个线性系统(具有二阶x和二阶y)来得到位置?
Canlin郑(查看配置文件)
我希望这对我有帮助
aazz NN(查看配置文件)
嗨,邢迪,
感谢回复。
好了,现在我得到的所有关键点是特征向量如你所说的符向量。然而,还是有识别所述关键点的xy坐标的问题,即对应于在特征矢量中的描述符。
我可以知道哪一个矩阵告诉所有与特征向量中的描述符相对应的关键点的坐标吗?
星地(查看配置文件)
aazz,我在我的代码混淆对不起,变量“描述”是一个特定点的描述,而变量“功能”是整个关键点的描述符
aazz NN(查看配置文件)
嗨,邢迪,
我是一个新人进行筛选。我有一组图片,其变化仅在规模上。我跑你的代码来检测的关键点和它是好的。然而,我注意到,有比计算描述符的更多的关键点。从我的理解,应该是为了在该图像中关键点与图像的翻译版本匹配关键点和描述符给定图像的数量相等。
我的问题是如何将图像中没有相等数量的描述符和关键点与另一个图像匹配?
星地(查看配置文件)
莱斯特,我感到非常抱歉。我真的想帮你解决问题。不过,我真的不明白发生了什么,因为我真的不符合我自己的错误。请尝试更新之一。如果还没有工作,我希望你能理解基础上的纸张和我的代码SIFT算法。然后,你可以写一个自己。或者,如果你有任何问题,你可以与我联系与代码中的电子邮件地址。
莱斯特·奥罗佩萨(查看配置文件)
我下载了新版本。我的工作不一定是正方形的图像。我使用不同宽度和高度的灰度图像。我的初始代码如下:
%ROW = 256;
%式柱= 256;
IMG = imread( 'v41.jpg');
[行,列,平面]=尺寸(img);
如果飞机== 3
img=rgb2gray(img);
结束
%IMG = imresize(IMG,[行,式柱]);
%IMG = rgb2gray(IMG);
然后SIFT的全过程。需要注意的是v41.jpg可以是任意大小。
这一次的代码给我的错误:
矩阵维数必须一致。
误差在==> SIFT_feature在137
。d {I}(:,:,J)=温度* CONV2(测试 '[ - 1,-1,1.1],' 相同“)* 0.5 +试验;
它的实施是与大卫·罗伊算法非常兼容,是我在Matlab见过的最全面的。这将是有益的,我用你的SIFT的实施不是方形的图像。问候。
星地(查看配置文件)
亲爱的莱斯特·奥罗佩萨,事实上,这是我代码中的一个错误。现在,我已经修好了。你有两个选择,首先,下载我的更新代码。其次,交换“/m”和“/n”,因为当我们想知道x标签时,需要使用total来划分列长度,而不是行长度。你可以自己修理。但是,如果不起作用,我建议您下载更新的。
莱斯特·奥罗佩萨(查看配置文件)
莱斯特·奥罗佩萨(查看配置文件)
你好,可观的邢迪。我一直在测试你的david lowe算法,在第81行给出了错误
??? 指数超过矩阵维数。
误差在==> SIFT_feature在81
子= {d I}(小区(J / M)为:ceil(J / M)+ 2模(J-1,N)+1:MOD(J-1,N)+ 3,K-1:K +1);
我注意到,为256×256行不同的价值观和科拉姆的alforitmo失败。
行= 480;
式柱= 640;
你知道我该怎么纠正这个错误吗?
问候语。莱斯特
连旺(查看配置文件)
非常好
黄新龙(查看配置文件)
很好
敬万富(查看配置文件)
很好!继续!
星地(查看配置文件)
这是我的第一部作品!
星地(查看配置文件)
很 完美!你真是天才!