matlab实现bwlabel函数

本文介绍如何在MATLAB中实现bwlabel函数,用于二值图像的连通区域标记。通过逐行扫描图片,判断并连接连通区域,创建并更新连通区域的标识。代码已给出,虽然有待优化,但基本思路清晰。
摘要由CSDN通过智能技术生成

大家都知道bwlabel可以将二值图中的连通区域划分并标记出来

那么如何实现bwlabel算法呢

1、一行一行的遍历图片,寻找该行的连通区域,计作run区域,并用记录其起止位置和行号

2、看当前行的run区域是否与上一行的连通

- 不连通:给标新号

- 只与一个连通:将号替换成连通的那个号

- 与多个连通:都要换成同一个编号

比如cell{1}和cell{2}连通,则让cell{2} = [cell{2} cell{1}],再将cell{1}滞空

若要删掉不连续的标号,就删掉为空的cell即可

注意考虑边界和多个run区域与前一行连通

3、根据标号给图片赋值


具体代码如下,不过以下代码感觉还可以继续优化,,思路大致没问题,之后有机会再改改(不过我感觉我也懒得改了哈哈哈哈哈哈)

img = imread('rice.png');
[rows,cols,colors] = size(img);
imgBinary=imbinarize(img);

%bwlabel遍历每一行
%确定每一行的连通区域run,记录每个run区域所在行标和起止点位置
%sc = 1:count; %开始列标
%ec = 1:count; %结束列标
r = 1:rows;   %所在行标
pre = 0;
idx = 1;
for m = 1 : rows
    for n = 1 : cols
        if(imgBinary(m,n) ~= 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值