这篇不要看 是用来我以后自己观看回忆的 因为这个程序后来没办法将特征点显示出来 所以是有问题的 你们别看这篇 可以看下下篇鱼眼拼接之SIFT提取特征点
原理还是来自于这位大神http://blog.csdn.net/v_JULY_v/article/details/6245939 昨天得到了DOG高斯差分空间 共四层塔 每层塔有四幅图 每层图的大小是上一层的一半 今天继续通过这位大神所说 每次比较26个极值 得到候选特征点 只是这位大神所说的我没太理解 理解得有歧义 检测特征点时 比如我第一步得到的四层DOG金字塔中第一层四幅图是D11,D12,D13,D14,第二层分别是D21,D22,D23,D24,那么D12通过和自身和D11和D13每26个像素比较,得到了D12的关键点,同理D13也与自身和前后两个比较得到D13的关键点,这位大神的意思是还用D14与自身与D13还与第二层的D21比较得到D14的关键点?可是第一层和第二层图像的大小不一样 第二层图像是第一层的一半 那 D14和D21怎么比呢?这里我没怎么懂他的意思 所以就暂时按我自己想的来编 每一层就只得到两幅图的关键点(特征点),比如第一层 就可得到D12和D13的,我用一个新的矩阵E来装,特征点显示白色 故共八幅图E11,E12;E21,E22;E31,E32;E41,E42
接着昨天的程序继续写:(比较极值还是很简单的 就是循环 )
E11=zeros(m2,n2);
for i=3:m2-2
for j=3:n2-2
if(D12(i,j)>D12(i-1,j-1) && D12(i,j)>D12(i,j-1) && D12(i,j)>D12(i+1,j-1) && D12(i,j)>D12(i-1,j) && D12(i,j)>D12(i+1,j) && D12(i,j)>D12(i-1,j+1) && D12(i,j)>D12(i,j+1) && D12(i,j)>D12(i+1,j+1))
if(D12(i,j)>D11(i,j) && D12(i,j)>D11(i-1,j-1) && D12(i,j)>D11(i,j-1) && D12(i,j)>D11(i+1,j-1) && D12(i,j)>D11(i-1,j) && D12(i,j)>D11(i+1,j) && D12(i,j)>D11(i-1,j+1) && D12(i,j)>D11(i,j+1) && D12(i,j)>D11(i+1,j+1))
if(D12(i,j)>D13(i,j) && D12(i,j)>D13(i-1,j-1) && D12(i,j)>D13(i,j-1) && D12(i,j)>D13(i+1,j-1) && D12(i,j)>D13(i-1,j) && D12(i,j)>D13(i+1,j) && D12(i,j)>D13(i-1,j+1) && D12(i,j)>D13(i,j+1) && D12(i,j)>D13(i+1,j+1))
E11(i,j)=1;
end
end
elseif(D12(i,j)<D12(i-1,j-1) && D12(i,j)<D12(i,j-1) && D12(i,j)<D12(i+1,j-1) && D12(i,j)<D12(i-1,j) && D12(i,j)<D12(i+1,j) && D12(i,j)<D12(i-1,j+1) && D12(i,j)<D12(i,j+1) && D12(i,j)<D12(i+1,j+1))
if(D12(i,j)<D11(i,j) && D12(i,j)<D11(i-1,j-1) && D12(i,j)<D11(i,j-1) && D12(i,j)<D11(i+1,j-1) && D12(i,j)<D11(i-1,j) && D12(i,j)<D11(i+1,j) && D12(i,j)<D11(i-1,j+1) && D12(i,j)<D11(i,j+1) && D12(i,j)<D11(i+1,j+1))
if(D12(i,j)<D13(i,j) && D12(i,j)<D13(i-1,j-1) && D12(i,j)<D13(i,j-1) && D12(i,j)<D13(i+1,j-1) && D12(i,j)<D13(i-1,j) && D12(i,j)<D13(i+1,j) && D12(i,j)<D13(i-1,j+1) && D12(i,j)<D13(i,j+1) && D12(i,j)<D13(i+1,j+1))
E11(i,j)=1;
end
end
end
end
end
E12=zeros(m2,n2);
for i=3:m2-2
for j=3:n2-2
if(D13(i,j)>D13(i-1,j-1) && D13(i,j)>D13(i,j-1) && D13(i,j)>D13(i+1,j-1) && D13(i,j)>D13(i-1,j) && D13(i,j)>D13(i+1,j) && D13(i,j)>D13(i-1,j+1) && D13(i,j)>D12(i,j+1) && D13(i,j)>D13(i+1,j+1))
if(D13(i,j)>D12(i,j) && D13(i,j)>D12(i-1,j-1) && D13(i,j)>D12(i,j-1) && D13(i,j)>D12(i+1,j-1) && D13(i,j)>D12(i-1,j) && D13(i,j)>D12(i+1,j) && D13(i,j)>D12(i-1,j+1) && D13(i,j)>D12(i,j+1) && D13(i,j)>D12(i+1,j+1))
if(D13(i,j)>D14(i,j) && D13(i,j)>D14(i-1,j-1) && D13(i,j)>D14(i,j-1) && D13(i,j)>D14(i+1,j-1) && D13(i,j)>D14(i-1,j) && D13(i,j)>D14(i+1,j) && D13(i,j)>D14(i-1,j+1) && D13(i,j)>D14(i,j+1) && D13(i,j)>D14(i+1,j+1))
E12(i,j)=1;
end
end
elseif(D13(i,j)<D13(i-1,j-1) && D13(i,j)<D13(i,j-1) && D13(i,j)<D13(i+1,j-1) && D13(i,j)<D13(i-1,j) && D13(i,j)<D13(i+1,j) && D13(i,j)<D13(i-1,j+1) && D13(i,j)<D12(i,j+1) && D13(i,j)<D13(i+1,j+1))
if(D13(i,j)<D12(i,j) && D13(i,j)<D12(i-1,j-1) && D13(i,j)<D12(i,j-1) && D13(i,j)<D12(i+1,j-1) && D13(i,j)<D12(i-1,j) && D13(i,j)<D12(i+1,j) && D13(i,j)<D12(i-1,j+1) && D13(i,j)<D12(i,j+1) && D13(i,j)<D12(i+1,j+1))
if(D13(i,j)<D14(i,j) && D13(i,j)<D14(i-1,j-1) && D13(i,j)<D14(i,j-1) && D13(i,j)<D14(i+1,j-1) && D13(i,j)<D14(i-1,j) && D13(i,j)<D14(i+1,j) && D13(i,j)<D14(i-1,j+1) && D13(i,j)<D14(i,j+1) && D13(i,j)<D14(i+1,j+1))
E12(i,j)=1;
end
end
end
end
end
E21=zeros(m3,n3);
for i=3:m3-2
for j=3:n3-2
if(D22(i,j)>D22(i-1,j-1) && D22(i,j)>D22(i,j-1) && D22(i,j)>D22(i+1,j-1) && D22(i,j)>D22(i-1,j) && D22(i,j)>D22(i+1,j) && D22(i,j)>D22(i-1,j+1) && D22(i,j)>D22(i,j+1) && D22(i,j)>D22(i+1,j+1))
if(D22(i,j)>D21(i,j) && D22(i,j)>D21(i-1,j-1) && D22(i,j)>D21(i,j-1) && D22(i,j)>D21(i+1,j-1) && D22(i,j)>D21(i-1,j) && D22(i,j)>D21(i+1,j) && D22(i,j)>D21(i-1,j+1) && D22(i,j)>D21(i,j+1) && D22(i,j)>D21(i+1,j+1))
if(D22(i,j)>D23(i,j) && D22(i,j)>D23(i-1,j-1) && D22(i,j)>D23(i,j-1) && D22(i,j)>D23(i+1,j-1) && D22(i,j)>D23(i-1,j) && D22(i,j)>D23(i+1,j) && D22(i,j)>D23(i-1,j+1) && D22(i,j)>D23(i,j+1) && D22(i,j)>D23(i+1,j+1))
E21(i,j)=1;
end
end
elseif(D22(i,j)<D22(i-1,j-1) && D22(i,j)<D22(i,j-1) && D22(i,j)<D22(i+1,j-1) && D22(i,j)<D22(i-1,j) && D22(i,j)<D22(i+1,j) && D22(i,j)<D22(i-1,j+1) && D22(i,j)<D22(i,j+1) && D22(i,j)<D22(i+1,j+1))
if(D22(i,j)<D21(i,j) && D22(i,j)<D21(i-1,j-1) && D22(i,j)<D21(i,j-1) && D22(i,j)<D21(i+1,j-1) && D22(i,j)<D21(i-1,j) && D22(i,j)<D21(i+1,j) && D22(i,j)<D21(i-1,j+1) && D22(i,j)<D21(i,j+1) && D22(i,j)<D21(i+1,j+1))
if(D22(i,j)<D23(i,j) && D22(i,j)<D23(i-1,j-1) && D22(i,j)<D23(i,j-1) && D22(i,j)<D23(i+1,j-1) && D22(i,j)<D23(i-1,j) && D22(i,j)<D23(i+1,j) && D22(i,j)<D23(i-1,j+1) && D22(i,j)<D23(i,j+1) && D22(i,j)<D23(i+1,j+1))
E21(i,j)=1;
end
end
end
end
end
E22=zeros(m3,n3);
for i=3:m3-2
for j=3:n3-2
if(D23(i,j)>D23(i-1,j-1) && D23(i,j)>D23(i,j-1) && D23(i,j)>D23(i+1,j-1) && D23(i,j)>D23(i-1,j) && D23(i,j)>D23(i+1,j) && D23(i,j)>D23(i-1,j+1) && D23(i,j)>D23(i,j+1) && D23(i,j)>D23(i+1,j+1))
if(D23(i,j)>D22(i,j) && D23(i,j)>D22(i-1,j-1) && D23(i,j)>D22(i,j-1) && D23(i,j)>D22(i+1,j-1) && D23(i,j)>D22(i-1,j) && D23(i,j)>D22(i+1,j) && D23(i,j)>D22(i-1,j+1) && D23(i,j)>D22(i,j+1) && D23(i,j)>D22(i+1,j+1))
if(D23(i,j)>D24(i,j) && D23(i,j)>D24(i-1,j-1) && D23(i,j)>D24(i,j-1) && D23(i,j)>D24(i+1,j-1) && D23(i,j)>D24(i-1,j) && D23(i,j)>D24(i+1,j) && D23(i,j)>D24(i-1,j+1) && D23(i,j)>D24(i,j+1) && D23(i,j)>D24(i+1,j+1))
E22(i,j)=1;
end
end
elseif(D23(i,j)<D23(i-1,j-1) && D23(i,j)<D23(i,j-1) && D23(i,j)<D23(i+1,j-1) && D23(i,j)<D23(i-1,j) && D23(i,j)<D23(i+1,j) && D23(i,j)<D23(i-1,j+1) && D23(i,j)<D23(i,j+1) && D23(i,j)<D23(i+1,j+1))
if(D23(i,j)<D22(i,j) && D23(i,j)<D22(i-1,j-1) && D23(i,j)<D22(i,j-1) && D23(i,j)<D22(i+1,j-1) && D23(i,j)<D22(i-1,j) && D23(i,j)<D22(i+1,j) && D23(i,j)<D22(i-1,j+1) && D23(i,j)<D22(i,j+1) && D23(i,j)<D22(i+1,j+1))
if(D23(i,j)<D24(i,j) && D23(i,j)<D24(i-1,j-1) && D23(i,j)<D24(i,j-1) && D23(i,j)<D24(i+1,j-1) && D23(i,j)<D24(i-1,j) && D23(i,j)<D24(i+1,j) && D23(i,j)<D24(i-1,j+1) && D23(i,j)<D24(i,j+1) && D23(i,j)<D24(i+1,j+1))
E22(i,j)=1;
end
end
end
end
end
E31=zeros(m4,n4);
for i=3:m4-2
for j=3:n4-2
if(D32(i,j)>D32(i-1,j-1) && D32(i,j)>D32(i,j-1) && D32(i,j)>D32(i+1,j-1) && D32(i,j)>D32(i-1,j) && D32(i,j)>D32(i+1,j) && D32(i,j)>D32(i-1,j+1) && D32(i,j)>D32(i,j+1) && D32(i,j)>D32(i+1,j+1))
if(D32(i,j)>D31(i,j) && D32(i,j)>D31(i-1,j-1) && D32(i,j)>D31(i,j-1) && D32(i,j)>D31(i+1,j-1) && D32(i,j)>D31(i-1,j) && D32(i,j)>D31(i+1,j) && D32(i,j)>D31(i-1,j+1) && D32(i,j)>D31(i,j+1) && D32(i,j)>D31(i+1,j+1))
if(D32(i,j)>D33(i,j) && D32(i,j)>D33(i-1,j-1) && D32(i,j)>D33(i,j-1) && D32(i,j)>D33(i+1,j-1) && D32(i,j)>D33(i-1,j) && D32(i,j)>D33(i+1,j) && D32(i,j)>D33(i-1,j+1) && D32(i,j)>D33(i,j+1) && D32(i,j)>D33(i+1,j+1))
E31(i,j)=1;
end
end
elseif(D32(i,j)<D32(i-1,j-1) && D32(i,j)<D32(i,j-1) && D32(i,j)<D32(i+1,j-1) && D32(i,j)<D32(i-1,j) && D32(i,j)<D32(i+1,j) && D32(i,j)<D32(i-1,j+1) && D32(i,j)<D32(i,j+1) && D32(i,j)<D32(i+1,j+1))
if(D32(i,j)<D31(i,j) && D32(i,j)<D31(i-1,j-1) && D32(i,j)<D31(i,j-1) && D32(i,j)<D31(i+1,j-1) && D32(i,j)<D31(i-1,j) && D32(i,j)<D31(i+1,j) && D32(i,j)<D31(i-1,j+1) && D32(i,j)<D31(i,j+1) && D32(i,j)<D31(i+1,j+1))
if(D32(i,j)<D33(i,j) && D32(i,j)<D33(i-1,j-1) && D32(i,j)<D33(i,j-1) && D32(i,j)<D33(i+1,j-1) && D32(i,j)<D33(i-1,j) && D32(i,j)<D33(i+1,j) && D32(i,j)<D33(i-1,j+1) && D32(i,j)<D33(i,j+1) && D32(i,j)<D33(i+1,j+1))
E31(i,j)=1;
end
end
end
end
end
E32=zeros(m4,n4);
for i=3:m4-2
for j=3:n4-2
if(D33(i,j)>D33(i-1,j-1) && D33(i,j)>D33(i,j-1) && D33(i,j)>D33(i+1,j-1) && D33(i,j)>D33(i-1,j) && D33(i,j)>D33(i+1,j) && D33(i,j)>D33(i-1,j+1) && D33(i,j)>D33(i,j+1) && D33(i,j)>D33(i+1,j+1))
if(D33(i,j)>D32(i,j) && D33(i,j)>D32(i-1,j-1) && D33(i,j)>D32(i,j-1) && D33(i,j)>D32(i+1,j-1) && D33(i,j)>D32(i-1,j) && D33(i,j)>D32(i+1,j) && D33(i,j)>D32(i-1,j+1) && D33(i,j)>D32(i,j+1) && D33(i,j)>D32(i+1,j+1))
if(D33(i,j)>D34(i,j) && D33(i,j)>D34(i-1,j-1) && D33(i,j)>D34(i,j-1) && D33(i,j)>D34(i+1,j-1) && D33(i,j)>D34(i-1,j) && D33(i,j)>D34(i+1,j) && D33(i,j)>D34(i-1,j+1) && D33(i,j)>D34(i,j+1) && D33(i,j)>D34(i+1,j+1))
E32(i,j)=1;
end
end
elseif(D33(i,j)<D33(i-1,j-1) && D33(i,j)<D33(i,j-1) && D33(i,j)<D33(i+1,j-1) && D33(i,j)<D33(i-1,j) && D33(i,j)<D33(i+1,j) && D33(i,j)<D33(i-1,j+1) && D33(i,j)<D33(i,j+1) && D33(i,j)<D33(i+1,j+1))
if(D33(i,j)<D32(i,j) && D33(i,j)<D32(i-1,j-1) && D33(i,j)<D32(i,j-1) && D33(i,j)<D32(i+1,j-1) && D33(i,j)<D32(i-1,j) && D33(i,j)<D32(i+1,j) && D33(i,j)<D32(i-1,j+1) && D33(i,j)<D32(i,j+1) && D33(i,j)<D32(i+1,j+1))
if(D33(i,j)<D34(i,j) && D33(i,j)<D34(i-1,j-1) && D33(i,j)<D34(i,j-1) && D33(i,j)<D34(i+1,j-1) && D33(i,j)<D34(i-1,j) && D33(i,j)<D34(i+1,j) && D33(i,j)<D34(i-1,j+1) && D33(i,j)<D34(i,j+1) && D33(i,j)<D34(i+1,j+1))
E32(i,j)=1;
end
end
end
end
end
E41=zeros(round(m4/2),round(n4/2));
for i=3:round(m4/2)-2
for j=3:round(n4/2)-2
if(D42(i,j)>D42(i-1,j-1) && D42(i,j)>D42(i,j-1) && D42(i,j)>D42(i+1,j-1) && D42(i,j)>D42(i-1,j) && D42(i,j)>D42(i+1,j) && D42(i,j)>D42(i-1,j+1) && D42(i,j)>D42(i,j+1) && D42(i,j)>D42(i+1,j+1))
if(D42(i,j)>D41(i,j) && D42(i,j)>D41(i-1,j-1) && D42(i,j)>D41(i,j-1) && D42(i,j)>D41(i+1,j-1) && D42(i,j)>D41(i-1,j) && D42(i,j)>D41(i+1,j) && D42(i,j)>D41(i-1,j+1) && D42(i,j)>D41(i,j+1) && D42(i,j)>D41(i+1,j+1))
if(D42(i,j)>D43(i,j) && D42(i,j)>D43(i-1,j-1) && D42(i,j)>D43(i,j-1) && D42(i,j)>D43(i+1,j-1) && D42(i,j)>D43(i-1,j) && D42(i,j)>D43(i+1,j) && D42(i,j)>D43(i-1,j+1) && D42(i,j)>D43(i,j+1) && D42(i,j)>D43(i+1,j+1))
E41(i,j)=1;
end
end
elseif(D42(i,j)<D42(i-1,j-1) && D42(i,j)<D42(i,j-1) && D42(i,j)<D42(i+1,j-1) && D42(i,j)<D42(i-1,j) && D42(i,j)<D42(i+1,j) && D42(i,j)<D42(i-1,j+1) && D42(i,j)<D42(i,j+1) && D42(i,j)<D42(i+1,j+1))
if(D42(i,j)<D41(i,j) && D42(i,j)<D41(i-1,j-1) && D42(i,j)<D41(i,j-1) && D42(i,j)<D41(i+1,j-1) && D42(i,j)<D41(i-1,j) && D42(i,j)<D41(i+1,j) && D42(i,j)<D41(i-1,j+1) && D42(i,j)<D41(i,j+1) && D42(i,j)<D41(i+1,j+1))
if(D42(i,j)<D43(i,j) && D42(i,j)<D43(i-1,j-1) && D42(i,j)<D43(i,j-1) && D42(i,j)<D43(i+1,j-1) && D42(i,j)<D43(i-1,j) && D42(i,j)<D43(i+1,j) && D42(i,j)<D43(i-1,j+1) && D42(i,j)<D43(i,j+1) && D42(i,j)<D43(i+1,j+1))
E41(i,j)=1;
end
end
end
end
end
E42=zeros(round(m4/2),round(n4/2));
for i=3:round(m4/2)-2
for j=3:round(n4/2)-2
if(D43(i,j)>D43(i-1,j-1) && D43(i,j)>D43(i,j-1) && D43(i,j)>D43(i+1,j-1) && D43(i,j)>D43(i-1,j) && D43(i,j)>D43(i+1,j) && D43(i,j)>D43(i-1,j+1) && D43(i,j)>D43(i,j+1) && D43(i,j)>D43(i+1,j+1))
if(D43(i,j)>D42(i,j) && D43(i,j)>D42(i-1,j-1) && D43(i,j)>D42(i,j-1) && D43(i,j)>D42(i+1,j-1) && D43(i,j)>D42(i-1,j) && D43(i,j)>D42(i+1,j) && D43(i,j)>D42(i-1,j+1) && D43(i,j)>D42(i,j+1) && D43(i,j)>D42(i+1,j+1))
if(D43(i,j)>D44(i,j) && D43(i,j)>D44(i-1,j-1) && D43(i,j)>D44(i,j-1) && D43(i,j)>D44(i+1,j-1) && D43(i,j)>D44(i-1,j) && D43(i,j)>D44(i+1,j) && D43(i,j)>D44(i-1,j+1) && D43(i,j)>D44(i,j+1) && D43(i,j)>D44(i+1,j+1))
E42(i,j)=1;
end
end
elseif(D43(i,j)<D43(i-1,j-1) && D43(i,j)<D43(i,j-1) && D43(i,j)<D43(i+1,j-1) && D43(i,j)<D43(i-1,j) && D43(i,j)<D43(i+1,j) && D43(i,j)<D43(i-1,j+1) && D43(i,j)<D43(i,j+1) && D43(i,j)<D43(i+1,j+1))
if(D43(i,j)<D42(i,j) && D43(i,j)<D42(i-1,j-1) && D43(i,j)<D42(i,j-1) && D43(i,j)<D42(i+1,j-1) && D43(i,j)<D42(i-1,j) && D43(i,j)<D42(i+1,j) && D43(i,j)<D42(i-1,j+1) && D43(i,j)<D42(i,j+1) && D43(i,j)<D42(i+1,j+1))
if(D43(i,j)<D44(i,j) && D43(i,j)<D44(i-1,j-1) && D43(i,j)<D44(i,j-1) && D43(i,j)<D44(i+1,j-1) && D43(i,j)<D44(i-1,j) && D43(i,j)<D44(i+1,j) && D43(i,j)<D44(i-1,j+1) && D43(i,j)<D44(i,j+1) && D43(i,j)<D44(i+1,j+1))
E42(i,j)=1;
end
end
end
end
end
第一列分别是第一层塔得到的两幅图的特征点 第二列是第二层塔。。。。。。以此类推
即 第一幅是E11 第二幅是E21。。。第五幅图是E12 第六幅是E22 第七幅是E32.。。。。
我也不知道检测特征点比较极值时是不是这个意思 论文里跟本没讲这个细节 博主讲的我也理解得有歧义。。。再想想