查看: 149|回复: 3|关注: 0

[未答复] 请教matlab处理图像重叠的问题。怎么样使后面的两个像前面一样,分别显示出轮廓和质心。

[复制链接]

新手

5 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
发表于 6 天前 | 显示全部楼层 |阅读模式
本帖最后由 chengqianfan 于 2020-9-14 17:43 编辑
  1. thresh=Autothresh(Y);  %自适应阈值法得到二值化所用阈值
  2. Z=im2bw(Y,thresh/255);  %灰度图像二值化
  3. Z0=bwareaopen(Z,1000);   %定值需调试
  4. se0=strel('square',1);  %结构元素及大小需调试(如果实验时擦掉中间的线,设置为10比较合适)
  5. Z0=imclose(Z0,se0);
  6. se1=strel('square',1);   %结构元素及大小需调试
  7. Z0=imdilate(Z0,se1);     %膨胀
  8. figure('visible','on'),imshow(Z0,'Border','tight','InitialMagnification',50);

  9. [L,num]=bwlabel(Z0,8);

  10. polygon=regionprops(L,'ConvexHull');   %得到外接多边形的顶点坐标
  11. stats=regionprops(L,'Centroid');    %质心数据保存在stats中
  12. angle_side=regionprops(L,'Orientation');   %得到外接多边形的偏转角度

  13. for i = 1:4
  14.     angle(i)=angle_side(1).Orientation; %相对于y轴正轴的偏转角度
  15. hold on;
  16.     patch(polygon(i).ConvexHull(:,1),polygon(i).ConvexHull(:,2),'w','edgecolor','none')%白色填充多边形
  17.     plot(stats(i).Centroid(1),stats(i).Centroid(2),'R+'); %画出质心
  18.     line(polygon(i).ConvexHull(:,1),polygon(i).ConvexHull(:,2),'color','g','linewidth',1); %画出外接多边形轮廓
  19. end
复制代码


微信图片_20200913222200.png
微信图片_20200913222313.png
回复主题 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
 楼主| 发表于 5 天前 | 显示全部楼层
求教,有大神指导一下
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
 楼主| 发表于 4 天前 | 显示全部楼层
有人吗,求大神解答一下
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
 楼主| 发表于 前天 21:52 | 显示全部楼层
请大神指导一下,谢谢
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表