end figure;title('去孔洞');imshow(u); %寻找不包括孔连通域的边缘,并且把每个连通域的边界描出来 [B,L]=bwboundaries(u,4); figure;imshow(label2rgb(L, @jet, [.5 .5 .5])) hold on for k = 1:length(B) boundary = B{k}; plot(boundary(:,2),boundary(:,1),'w','LineWidth',2) end % 找到每个连通域的质心 stats2=regionprops(L,'Area','Centroid','Perimeter'); S2=[stats2.Area];C2=[stats2.Perimeter]; s=abs(S(n1)-S2);c=abs(C(n1)-C2); [g1,g2]=min(s);[w1,w2]=min(c); Z2=[stats2.Centroid]; for i=1:2:length([stats2.Centroid]) x2(1,ceil(i/2))=Z2(1,i); y2(1,ceil(i/2))=Z2(1,i+1); end if (x1(n1)-x2(g2))>0 disp('右移') else disp('左移') end if (x1(3)-x2(g2))>0 disp('右移') else disp('左移') end if (x1(3)-x2(g2))==0 disp('不移动') end if (y1(3)-y2(g2))>0 disp('下移') else disp('上移') end if (y1(3)-y2(g2))==0 disp('不移动') end 、
16
附件三
17