按要求实现matlab中bwlabel的功能。本方法是基于图的广度,深度优先遍历。
% 找二值图像中联通区域的个数,以及大小
% 算法思想:
% 在图像中找到一个目标点(可以是自顶向下、从左到右的第一个目标点),
% 然后采用图的搜索方法,找出与该目标点连通的区域。
% 对该连通区域进行标记(相当于将该目标区域变成背景)
% 重复上述过程,直到找不到目标点(整幅图像扫描完毕)
% 关键算法:找出与一个目标点连通的区域
% 采用图的搜索算法。
% 设置一个open表(待搜素的结点表),将种子点放入该表中。
% 从open表中取出一个元素,将其邻域中以前未搜索到的目标点加入到open表中。
% 重复上述过程,直到open表为空。
% 关键数据结构:
% visited[rows][cols], 用于记录各个像素点是否被访问过(搜索过,1;未访问过,0)
% 在下面程序中,注意使用不同的语句带来的程序运行效率差别
% 程序优化
% 比较不同写法的程序执行效率差别
% I=imread('rice.png');
% I=imread('moon.tif');
% I=imread('moon.tif');
% I=imread('rice.png');
% I=imread('paper1.tif');
% I=imread('concordorthophoto.png');
I=imread