怎么把二维的Zernike边缘检测代码改成能提取三维立体图特征的代码

 我改了下报错矩阵维度不一致

function Z=Edgedectect(I)
%使用Zernike矩进行边缘检测
%Z:边界检测结果
%I:输入灰度图
N=size(I,1);
M=size(I,2);
M11R=[   0   -0.0150   -0.0190         0    0.0190    0.0150         0
   -0.0224   -0.0466   -0.0233         0    0.0233    0.0466    0.0224
   -0.0573   -0.0466   -0.0233         0    0.0233    0.0466    0.0573
   -0.0690   -0.0466   -0.0233         0    0.0233    0.0466    0.0690
   -0.0573   -0.0466   -0.0233         0    0.0233    0.0466    0.0573
   -0.0224   -0.0466   -0.0233         0    0.0233    0.0466    0.0224
         0   -0.0150   -0.0190         0    0.0190    0.0150         0];    
M11I=[   0   -0.0224   -0.0573   -0.0690   -0.0573   -0.0224         0
   -0.0150   -0.0466   -0.0466   -0.0466   -0.0466   -0.0466   -0.0150
   -0.0190   -0.0233   -0.0233   -0.0233   -0.0233   -0.0233   -0.0190
         0         0         0         0         0         0         0
    0.0190    0.0233    0.0233    0.0233    0.0233    0.0233    0.0190
    0.0150    0.0466    0.0466    0.0466    0.0466    0.0466    0.0150
         0    0.0224    0.0573    0.0690    0.0573    0.0224         0];    
M20=[    0    0.0224    0.0394    0.0396    0.0394    0.0224         0
    0.0224    0.0272   -0.0128   -0.0261   -0.0128    0.0272    0.0224
    0.0394   -0.0128   -0.0528   -0.0661   -0.0528   -0.0128    0.0394
    0.0396   -0.0261   -0.0661   -0.0794   -0.0661   -0.0261    0.0396
    0.0394   -0.0128   -0.0528   -0.0661   -0.0528   -0.0128    0.0394
    0.0224    0.0272   -0.0128   -0.0261   -0.0128    0.0272    0.0224
         0    0.0224    0.0394    0.0396    0.0394    0.0224         0];
%选取的模板为7*7,K,L,φ需要Z11,Z20矩所以需要构造M11,M20模板,M11包含实部和虚部
I=padarray(I,[3,3],'symmetric','both');    
Z11R=convn(I,M11R,'same');
Z11I=convn(I,M11I,'same');
Z20=convn(I,M20,'same');
Z11R=Z11R(4:end-3,4:end-3);
Z11I=Z11I(4:end-3,4:end-3);
Z20=Z20(4:end-3,4:end-3);
Phi=atan2(Z11I,Z11R);
Z11p=Z11R.*cos(Phi)+Z11I.*sin(Phi);
L=Z20./Z11p;
K=1.5*Z11p./((1-L.^2).^1.5);
[X,Y]=meshgrid(1:M,1:N);
x=X-(N+1)/2;y=(N+1)/2-Y;
%[p_x,q_x] = size(x)
%[L_m,L_n] = size(L)
%[K_m,K_n] = size(K)
% L = L(:,1:103);
% K=K(:,1:103);
index=(abs(L)<0.14)&(abs(K)>40);
xx=x+(7/2)*L.*cos(Phi);
yy=y+(7/2)*L.*sin(Phi);
Z=zeros(size(I));
for i=1:N
    for j=1:N
        if(index(i,j)==0)continue;end
        col=round(xx(i,j)+(N+1)/2);
        row=round((N+1)/2-yy(i,j));
        if(row<1||row>N||col<1||col>N) continue;end
        Z(row,col)=1;
    end
end

 

有偿,有无老哥帮忙指点下

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。