经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。 |
图像的连通域是指图像中具有相同像素值并且位置相邻的像素组成的区域,连通域分析是指在图像中寻找出彼此互相独立的连通域并将其标记出来。提取图像中不同的连通域是图像处理中较为常用的方法,例如在车牌识别、文字识别、目标检测等领域对感兴趣区域分割与识别。一般情况下,一个连通域内只包含一个像素值,因此为了防止像素值波动对提取不同连通域的影响,连通域分析常处理的是二值化后的图像。
在了解图像连通域分析方法之前,首先需要了解图像邻域的概念。图像中两个像素相邻有两种定义方式,分别是4-邻域和8-邻域,这两种领域的定义方式在图6-7给出。4-邻域的定义方式如图6-7中的左侧所示,在这种定义下,两个像素相邻必须在水平和垂直方向上相邻,相邻的两个像素坐标必须只有一位不同而且只能相差1个像素,例如点 P 0 ( x , y ) {P_0}(x,y) P0(x,y)的4-邻域的4个像素点分别为 P 1 ( x − 1 , y ) {P_1}(x - 1,y) P1(x−1,y)、 P 2 ( x + 1 , y ) {P_2}(x + 1,y) P2(x+1,y) P 3 ( x , y − 1 ) {P_3}(x,y - 1) P3(x,y−1) 和 P 4 ( x , y + 1 ) {P_4}(x,y + 1) P4(x,y+1)。8-邻域的定义方式如图6-7中的右侧所示,这种定义下两个像素相邻允许在对角线方向相邻,相邻的两个像素坐标在X方向和Y方向上的最大差值为1,例如点 P 0 ( x , y ) {P_0}(x,y) P0(x,y)的8-邻域的8个像素点分别为 P 1 ( x − 1 , y ) {P_1}(x - 1,y) P1(x−1,y)、 P 2 ( x + 1 , y ) {P_2}(x + 1,y) P2(x+1,y) P 3 ( x , y