matlab的图像形状分类 有没有大神能看懂教教我~
format long
i=imread('t2.bmp');
imshow(i);
a=rgb2gray(i); %将索引图像转化为灰度图像
bw=edge(a,'canny');
imshow(bw);
bw = bwareaopen(bw,30); %从二进制图像中移除所有少于p像素的连接的组件
se = strel('disk',2);
bw = imclose(bw,se);
bw = imfill(bw,'holes');
imshow(bw);
L = bwlabel(bw);
s = regionprops(L, 'centroid'); %用来度量图像区域属性
dt = regionprops(L, 'area');
cv = regionprops(L, 'perimeter');
dim = size(s)
BW_filled = imfill(bw,'holes');
boundaries = bwboundaries(BW_filled); %获取二值图中对象的轮廓
imshow(bw);
figure;imshow(i);
hold on;
for k=1:dim(1)
b= boundaries{k};
dim = size(b)
for i=1:dim(1)
khoangcach{k}(1,i) = sqrt ( ( b(i,2) - s(k).Centroid(1) )^2 + ( b(i,1) - s(k).Centroid(2) )^2 )
end
a=max(khoangcach{k});
b=min(khoangcach{k});
c=dt(k).Area;
dolech=a-b;
vuong = c/(4*b^2)
chunhat=c/(4*b*(a^2-b^2)^0.5);
tamgiacdeu=(c*3^0.5)/((a+b)^2);
elip =c/(a*b*pi);
thoi= (c*( a^2 - b^2 )^0.5) / (2*a^2*b)
if dolech < 10
text(s(k).Centroid(1)-20,s(k).Centroid(2),'圆')
elseif (vuong < 1.05 ) & (vuong > 0.95 )
text(s(k).Centroid(1)-20,s(k).Centroid(2),'正方形')
elseif (elip < 1.05 ) & (elip > 0.95 )
text(s(k).Centroid(1)-20,s(k).Centroid(2),'椭圆')
elseif (thoi < 1.05 ) & (thoi > 0.95 )
text(s(k).Centroid(1)-20,s(k).Centroid(2),'菱形')
elseif ((chunhat <1.05) & (chunhat >0.95))
text(s(k).Centroid(1)-20,s(k).Centroid(2),'长方形')
elseif (tamgiacdeu < 1.05 ) & (tamgiacdeu > 0.95 )
text(s(k).Centroid(1)-20,s(k).Centroid(2),'三角形')
end
end
每一步分别是做什么??