我改了下报错矩阵维度不一致
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天,您在需要使用的时候【私信】联系我,我会为您补发。