• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: Matlab
  • 标签: photogrammtr  

资源简介

摄影测量必备程序代码之一,用于角点检测,根据不同的原始训练数据需要有不同的阈值调整!

资源截图

代码片段和文件信息

clc;
clear;
I=imread(‘1.jpg‘);    
[mn]=size(I);   %宽m,长n
% 利用差分算子(像素(cr)在上下左右四个方向的灰度差分绝对值)提取初选点。
g=double(I);
T=30;               %阈值
Initpointcoord=[];   %初选点坐标
for i=2:m-1
    for j=2:n-1
        dg1=abs(g(ij)-g(i-1j));   %上侧
        dg2=abs(g(ij)-g(i+1j));   %下侧
        dg3=abs(g(ij)-g(ij-1));   %左侧
        dg4=abs(g(ij)-g(ij+1));   %右侧
        dg=[dg1 dg2 dg3 dg4];
        temp=sort(dg);
        if temp(3)>T
            Initpointcoord=[Initpointcoord;i j];
        end
    end
end
%  以初选点(cr)为中心的w*w窗口中,计算协方差矩阵N与误差椭圆的圆度q确定备选点。
w=3;                          %窗口宽的值
Initlen=length(Initpointcoord);   %初选点个数
k=floor(w/2);
Tq=0.51;                       %阈值Tq
candidatepoint=[];             %候选点
for no=1:Initlen
    Initpoint=Initpointcoord(no:);
    c=Initpoint(1);
    r=Initpoint(2);
    h=c-k;
    l=c+k-1;
    p=r-k;
    w=r+k-1;
    gu2=0;gv2=0;guv=0;
    for e=h:l
        for f=p:w
            gu2=gu2+(g(e+1f+1)-g(ef))^2;
            gv2=gv2+(g(ef+1)-g(e+1f))^2;
            guv=guv+(g(e+1f+1)-g(ef))*(g(ef+1)-g(e+1f));
        end
    end
    DetN=gu2*gv2-guv^2;
    trN=gu2+gv2;
    q=4*DetN/(trN*trN);
    if q>Tq
        candidatepoint=[candidatepoint;c r];
    end
end
clear h p q j c r
w2=10;
cadipotlen=length(candidatepoint);
k2=floor(5/w2);
featurepoint=[];
h=floor(m/w2);   %窗口行数
d=floor(n/w2);   %窗口列数
for p=1:h
    for q=1:d
        tp=(p-1)*w2;
        tq=(q

评论

共有 条评论

相关资源