其中一条命令是
CC=bwconncomp(A,4)
其中A是经过二值化后的图像。想在想请教一下这条命令中CC和bwconncomp分别是什么意思。我在help中看的有点晕,本人化学专业,数学方面实在太差。
还有就是那个4在help中我看是二维四连通邻域,想请教一下这个命令中4代表什么?与6,8,16,28有什么区别?
bwconnecomp()是找出二值图像中连通的区域, CC返回结果,比如这样一幅图(简化便于理解):
BW = [ 0 0 0 0 0;
0 1 1 0 0;
0 1 1 0 0;
0 0 0 1 1;
1 1 0 0 0];
CC = bwconncomp(BW,4);
其中,4/8表示查找连通像素的搜索路径, 4:如下查询4个方向,8: 查询8个方向, (6 18 26 用于三维图)
0 1 0
1 p 1 ===> 4连接,p为当前像素点。
0 1 0
1 1 1
1 p 1 ====》8连接, p为当前像素点。
1 1 1
CC中返回内容:
Connectivity: 4 --> 4连通
ImageSize: [5 5] -> 图像大小
NumObjects: 3 -> 找到连通区域数量
PixelIdxList: -->连通区域序列号,比如上图,List的内容为:
5,10
7,8,12,13
19,24
(从列方向数)
追问
首先谢谢您的耐心解答,我还有几个问题没明白:
1、这个命令可以理解成在图像中每一个像素点都相应查找的连通区域然后扣除其中重叠部分统计其总个数吗?
2、这个连通区域怎么理解呢?就是四个方向有一个相似的元素就算是连通区域吗?这个程序的目的是找出图像上孔的个数和面积,而这些孔都不是连通的,为什么要有这一步找连通区域呢?
字数限制,评论里还有一点,麻烦您关注一下,谢谢您
回答
应该理解为找出具有两个像素以上,相互连通的区域,标记连通像素点,并统计连通域数量.具体算法会计算每个像素的4个或8个方向是否连通,然后把整个连通域确定下来.
连通域首先是一个集合,且集合中任意两个点之间都存在着完全属于该集合的连通路径. 因为是二值图像所以不存在"相似",而是都为1或0.
图像上的孔就是一个独立的连通域,找到所有的连通域就得到了孔的数量,和构成各个孔的所有像素从而进一步计算面积