matlab的图像形状分类 有没有大神能看懂教教我~

lemon1997 2019-05-24 10:05:03
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

每一步分别是做什么??
...全文
62 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,423

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧