zncc.m

来自「harris角点检测算子」· M 代码 · 共 62 行

M
62
字号
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

for i=80:ligne1
    pt = find(ZNCC(i,:)==max(ZNCC(i,:)));
    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
end


⌨️ 快捷键说明

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