資源簡介
攝影測量必備程序代碼之一,用于角點檢測,根據不同的原始訓練數據需要有不同的閾值調整!

代碼片段和文件信息
function[TZ]=Forstern(imgn)
[hw]=size(img);
imgs=img;
figure(1);
imshow(img[]);
hold?on;
result=zeros(hw);
Qq=zeros(hw);
Nn=zeros(hw);
gu?=?zeros?(hw);
gv?=?zeros(hw);
%?計算gugv
for?i=1:h-1
????for?j=1:w-1
????????gu(ij)=imgs(i+1j+1)-imgs(ij);
????????gv(ij)=imgs(ij+1)-imgs(i+1j);?
????end
end
%?5*5窗口計算協方差矩陣
z=2;
for?i?=?1+z:h-z
????for?j?=?1+z:w-z
????????gu_w=gu(i-z:i+zj-z:j+z);
????????gv_w=gv(i-z:i+zj-z:j+z);
????????gu2=gu_w.^2;
????????gv2=gv_w.^2;
????????sum_gu2=sum(gu2(:));
????????sum_gv2=sum(gv2(:));
????????guv=gu_w.*gv_w;
????????sum_guv=sum(guv(:));
????????N=[gu2guv;guvgv2];
????????Q=-N;
????????q=4*det(N)/trace(N)^2;
????????omg=det(N)/trace(N);
????????Qq(ij)=q;
????????Nn(ij)=omg;
????end
end
%?將值為NaN數組置零
Z=find(isnan(Qq));
Qq(Z)=[0];
X=find(isnan(Nn));
Nn(X)=[0];
Tq=0.75;
Tw=mean(Nn(:));
%?獲取候選點
for?i?=?1+z:h-z
????for?j?=?1+z:w-z
????????if?Qq(ij)<=Tq&&Nn(ij)<=0.5*Tw
????????????Nn(ij)=0;
????????end
????end
end
%?選取特征點
k=1;
TZ=zeros(k2);
for?i?=?1+n:h-n
????for?j?=?1+n:w-n
?????????????tempiv=Nn(i-n:i+nj-n:j+n);
?????????????if?max(tempiv(:))==Nn(ij)&&max(tempiv(:))~=0
?????????????????TZ(k1)=i;
?????????????????TZ(k2)=j;
?????????????????k=k+1;
?????????????end
????end
end
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1340??2018-06-22?17:07??F.m
?????文件??????584744??2018-06-21?22:59??left.tif
?????文件????????2391??2018-07-24?23:17??matching.m
?????文件??????560712??2018-06-21?23:46??right.tif
評論
共有 條評論