图5-4 腐蚀算法效果图
Fig5-4 Effect diagram of Corrosive algorithm
5.3数学形态学在人数统计过程中的应用
5.3.1边缘膨胀
由边缘图像可以看出,仅仅基于canny算子提取的边缘,虽然肉眼看上去已经比较完美,实际在像素级别,还是有很多细小的边缘没有连接上,这样就无法构成一个完整的连通域,就无法进行图像的填充。膨胀的作用就是将背景中临近的点合并到目标物体中,也就是说膨胀的过程让目标图像在面积上增加了一定数量的点,如果边缘不连续的地方相隔比较小的像素,膨胀能够将他们连接起来,形成一个边缘封闭的图像。本文就是采用膨胀来将上章中提取的目标边缘的不连续部分连接起来。如图5-5所示:
图 5-5 基于canny算子提取的边缘轮廓膨胀图
Fig5-5 The extracted contour expansion plans based on canny operator
5.3.2图像连通域填充
提取到完整的图像轮廓后,接着进行图像的填充,在二值化轮廓图中,所有背景点为0,将1赋给P点。根据以下过程:
k=1,2,3?? (2)
Xk?(Xk?1?B)?A
图像将被填充,当部分和边界。
时,迭代在第K步结束,Xk和A的并集包含被填充的
Xk?Xk?1在实际实现过程中,首先,从左至右逐行扫描图形,如果像素值为0,则是背景,不做任何改变,继续往后扫描,直到遇到像素值为l的点,如果这个点的下一个点像素值为0,表示扫描到了最左边的轮廓点,这时设置一个标记,从这个点往后所有像素值为0的点全部置1,直到再次遇到像素值为1的点为止,此过程将这两个边界点之间的区域填充起来。然后接着扫描后面的点,当再次遇到像索值为1的点事时,重复以上步骤。这样一行行的扫描填充,整幅轮廓图就被填充起来了。填充后的效果如图所5-6示:
图5-6 轮廓填充图
Fig5-6 After filling profile image
5.3.3瑕疵的剔除
经过了填充的图像,会有一部分点状小瑕疵,这是因为在轮廓提取过程中,有一部分的背景也被提取到了轮廓,经过了连通域的填充,它们的面积也可能很大,这些小瑕疵的存在,直接影响到了我们后续的计数,当我们需要去除图像中的细小瑕疵,却又想保留其它结构的时候,通常通过选取一个足够合适的结构元素来对其进行腐蚀就可以了,如图5-7所示:
图5-7 利用腐蚀算法去除小面积干扰
Fig5-7 Corrosion algorithm used to remove small areas interference
5.4 实验结果
5.4.1 标记连通域
在最大可能的去除了可能的干扰后,我们获得了一幅包含目标连通域的二值图像,因此,背景区像素的灰度值都是0,而目标区域的像素灰度值都是1。当对该图像从左到右、从上到下扫描时,要标记当前像素,就需要判定它与在它之前被扫描的像素的连通性。此时就有几种情况需要考虑,如果当前需要判定的像素灰度值为1,则应该标记其为目标像素,而如果发现了一个像素,它的灰度值由1变为0,则赋予其新的目标标记。
要确定连通域的序号,必须要考虑每个像素和其领域像素的关系,按照考虑范围的不同,分为4-连通关系和8-连通关系两种情况。如图5-8所示:
图5-8 连通关系示意图
Fig5-8 Schematic diagram of Connectivity
如图5-8(a)所示,4-连通关系就是以当前像素点为中心点,如果当前像素的上下左右四个方向的像素点和该像素具有相同的灰度值,就认为该方向的点和中心点相互连通。如图5-8(b)所示,8-连通关系就是以当前像素点为中心点,除了考虑4-连通关系中的四个方向,还包括左上、右上、左下、右下四个方向。
按照这样的规则,对二值图像进行扫描,如果当前象素的灰度值是0.就移到下一个扫描位置。而若当前象素的灰度值是1,则检测它左边和上边的两个相邻象素(根据所自左而右,自上而下的扫描顺序,这两个点已经被扫描过了),然后按照这两个像素的灰度值决定是不是要将其标记。本文采用8-连通关系对二值图像进行了标记,
相关推荐: