📄 fenlitiqu.asv
字号:
bw0=imread('D:\MATLAB701\work\sxt5.bmp');
flag=islogical(bw0);
if(flag==0),bw=im2bw(bw0,0.5);
else bw=bw0;
end
bw1=bw;
[B,L]=bwboundaries(bw,4);
gs=0;
c1=zeros(1,100);
c2=zeros(1,100);
c3=zeros(1,100);
c4=zeros(1,100); %找到每个连通域的质心
stats=regionprops(L,'Area','Centroid'); %循环历遍每个连通域的边界
for k=1:length(B) %获取一条边界上的所有点
boundary=B{k};
h=boundary(1,1);
w=boundary(1,2); %获取边界所围面积
area=stats(k).Area;
if(bw(h,w)==0&area>6) %提取该连通域所对应在二值图像中的矩形区域
goalboundary=boundary;
s=min(goalboundary,[],1);
e=max(goalboundary,[],1);
for i=0:(e(2)-s(2)),bw1(s(1),s(2)+i)=0;bw1(e(1),s(2)+i)=0;
end
for i=0:(e(1)-s(1)),bw1(s(1)+i,s(2))=0;bw1(s(1)+i,e(2))=0;
end
gs=gs+1;
c1(gs)=s(1);c2(gs)=s(2);c3(gs)=e(1);c4(gs)=e(2);
end
end
sl=gs;
for i=1:gs
for j=1:gs
if((c1(i)>c1(j))&(c1(i)<c3(j))&(c2(i)>c2(j))&(c2(i)<c4(j)))|((c1(i)>c1(j))&(c1(i)<c3(j))&(c4(i)>c2(j))&(c4(i)<c4(j)))|((c3(i)>c1(j))&(c3(i)<c3(j))&(c2(i)>c2(j))&(c2(i)<c4(j)))|((c3(i)>c1(j))&(c3(i)<c3(j))&(c4(i)>c2(j))&(c4(i)<c4(j)))
xg1=c3(i)-c1(j);xg2=c3(j)-c3(i);xg3=c2(i)-c2(j);xg4=c4(j)-c2(i);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -