⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zncc.m

📁 基于哈日日食的角点检测程序
💻 M
字号:
N=1;
[ligne1,col1]= size(posc1);
[ligne2,col2]= size(posc2);


%la valeur moyenne de l'image 1
for i=1:ligne1
    somme = 0;
    for l=-N:1:N
        for k=-N:1:N
            somme=somme+double(ori_im1(posr1(i)+l,posc1(i)+k));
        end
    end
    moyenne1(i)=somme/(2*N+1)^2;
end


%la valeur moyenne de l'image 2
for j=1:ligne2
    somme =0;
    for l=-N:1:N
        for k=-N:1:N
            somme = somme+double(ori_im2(posr2(j)+l,posc2(j)+k));
        end
    end
    moyenne2(j) = somme/(2*N+1)^2;
end


for i=1:ligne1
    for j=1:ligne2
        ZNCC1 = 0;
        num=0;   %le numérateur de la formule
        denom=0; %le dénominateur de la formule
        denom1=0;
        denom2=0;
        for l=-N:1:N
            for k=-N:1:N
                num = num+(double(ori_im1(posr1(i)+l,posc1(i)+k))-double(moyenne1(i)))*(double(ori_im2(posr2(j)+l,posc2(j)+k))-double(moyenne2(j)));
                denom1 = denom1+sqrt((double(ori_im1(posr1(i)+l,posc1(i)+k))-double(moyenne1(i)))^2);
                denom2 = denom2+sqrt((double(ori_im2(posr2(j)+l,posc2(j)+k))-double(moyenne2(j)))^2);
                denom = denom1+denom2;
                ZNCC1 = num/denom;
            end
        end
        ZNCC(i,j)=ZNCC1;
    end
end


point1=zeros(100,2,'double');   % la matrice de zero pour s'adapter la taille de la matrice du point d'intérêt
point2=zeros(100,2,'double');
point3=zeros(100,2,'double');
point4=zeros(100,2,'double');


realpt1=1
for i = 1:ligne1
    pt1 = find(ZNCC(i,:)==max(ZNCC(i,:)));
    if (posr1(i)-posr2(pt1(1)))^2+(posc1(i)-posc2(pt1(1)))^2<=512
        point1(realpt1,1)=posr1(i);
        point1(realpt1,2)=posc1(i);
        point2(realpt1,1)=posr2(pt1);
        point2(realpt1,2)=posc2(pt1);
        %         figure(3)
        %         imshow(ori_im1);
        %         hold on;
        %         plot(posc1(i),posr1(i),'r+')
        %
        %         figure(4)
        %         imshow(ori_im2);
        %         hold on;
        %         plot(posc2(pt),posr2(pt),'r+')
        %         pause;
        realpt1=realpt1+1;
    end
end

ZNCCiv=ZNCC';  %la validation croisée
realpt2=1;
for j = 1:ligne2
    pt2 = find(ZNCCiv(j,:) == max(ZNCCiv(j,:)));
    if  (posr2(j)-posr1(pt2(1)))^2+(posc2(j)-posc1(pt2(1)))^2<512
        point3(realpt2,1)=posr2(j);
        point3(realpt2,2)=posc2(j);
        point4(realpt2,1)=posr1(pt2);
        point4(realpt2,2)=posc1(pt2);

        %         figure(5);
        %         imshow(ori_im3);
        %         hold on;
        %         plot(point3(realpt2,2), point3(realpt2,1),'r+');
        %
        %         figure(6);
        %         imshow(ori_im4);
        %         hold on;
        %         plot(point4(realpt2,2), point4(realpt2,1),'r+');
        %         pause ;
        realpt2=realpt2+1;
    end
end

% la validation croisée
pp=1;
for i = 1:realpt1-1
    for j=1:realpt2-1
        if point1(i,1)==point4(j,1)&&point1(i,2)==point4(j,2)&&point1(i,1)>0&&point1(i,2)>0

            figure(7);
            imshow(ori_im1);
            hold on;
            plot(point1(i,2),point1(i,1),'r+');

            figure(8);
            imshow(ori_im2);
            hold on;
            plot(point3(j,2),point3(j,1),'r+');

            P1(pp,1)=point1(i,1);  % enregistrer des point d'interet de première image après la validation croisée
            P1(pp,2)=point1(i,2);
            P2(pp,1)=point3(j,1);  % enregistrer des point d'interet de deuxième image après la validation croisée
            P2(pp,2)=point3(j,2);
            
            pp=pp+1;
            pause;
        end
    end
end

A=(pp-1)/nombre1
B=(pp-1)/nombre2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -