利用matlab将得到的多个连通域进行连接

项目中需要实现剪纸效果,通过MATLAB的边缘检测得到的边缘不连续。为此,进行连通域连接操作:先将图片二值化,再对连通域编号,然后计算并连接最短距离。最终用plot展示连接路径。
摘要由CSDN通过智能技术生成

最近在做一个项目,需要得到一个剪纸的效果,但是通过matlab中边缘检测得到的边缘信息并不是都是连续的,而剪纸的效果是全部都是一刀下来的。因此需要对得到的边缘信息进行连接,这也是一个将图中多个连通域连接的问题。

首先可以先看一下通过canny边缘检测得到的边缘信息,发现还是很碎的。


接下来就进行连通域连接操作。具体步骤如下

  1. 首先将图片格式转换为二值化
  2. 将各个连通域进行编号
  3. 计算当前连通域和剩余连通域中的最短距离,进行连接。

二值化:

I_bw=im2bw(ed);

编号:

L =bwlabel(I_bw);

L矩阵中各个连通域都被进行了编号,每个位置的数值表示其所在的连通域的号码:


求最短距离:

for i =1:max
    distance=999999;
    [x,y] =find(L==i);
    size_x =size(x);
    for j =1:max
 

  • 9
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值