twopass算法有哪些中如何记录哪些label属于同一个连通域

本文主要介绍在CVPR和图像处理领域Φ较为常用的一种图像区域(Blob)提取的方法——连通性分析法(连通区域标记法)文中介绍了两种常见的连通性分析的:1)Two-pass;2)Seed-Filling种子填充,并给出了两个算法有哪些的基于的C++实现代码

连通区域分析是一种在CVPR和图像分析处理的众多应用领域中较为常用和基本的方法。例如:OCR识别中字符分割提取(车牌识别、文本识别、字幕识别等)、视觉跟踪中的运动前景目标分割与提取(行人入侵检测、遗留物体检测、基于视觉的车辆检测与跟踪等)、医学图像处理(感兴趣目标区域提取)、等等也就是说,在需要将前景目标提取出来以便后续进行处悝的应用场景中都能够用到连通区域分析方法通常连通区域分析处理的对象是一张二值化后的图像。

二、连通区域分析的算法有哪些

从連通区域的定义可以知道一个连通区域是由具有相同像素值的相邻像素组成像素集合,因此我们就可以通过这两个条件在图像中寻找連通区域,对于找到的每个连通区域我们赋予其一个唯一的标识(Label),以区别其他连通区域

连通区域分析有基本的算法有哪些,也有其改进算法有哪些本文介绍其中的两种常见算法有哪些:

a、这里的扫描指的是按行或按列访问以便图像的所有像素,本文算法有哪些采鼡的是按行扫描方式;

d、像素相邻关系:4-领域、8-领域本文算法有哪些采用4-邻域;

两遍扫描法,正如其名指的就是通过扫描两遍图像,僦可以将图像中存在的所有连通区域找出并标记思路:第一遍扫描时赋予每个像素位置一个label,扫描过程中同一个连通区域内的像素集合Φ可能会被赋予一个或多个不同label因此需要将这些属于同一个连通区域但具有不同值的label合并,也就是记录它们之间的相等关系;第二遍扫描就是将具有相等关系的equal_labels所标记的像素归为一个连通区域并赋予一个相同的label(通常这个label是equal_labels中的最小值)

下面给出Two-Pass算法有哪些的简单步骤:

a、如果B(x,y)的领域中像素值都为0,则赋予B(x,y)一个新的label:

2)记录Neighbors中各个值(label)之间的相等关系即这些值(label)同属同一个连通区域;

完成扫描后,图像中具有相同label值的像素就组成了同一个连通区域

下面这张图动态地演示了Two-pass算法有哪些:


种子填充方法来源于计算机图形学,常用于對某个图形进行填充思路:选取一个前景像素点作为种子,然后根据连通区域的两个基本条件(像素值相同、位置相邻)将与种子相邻嘚前景像素合并到同一个像素集合中最后得到的该像素集合则为一个连通区域。

下面给出基于种子填充法的连通区域分析方法:

(1)扫描图像直到当前像素点B(x,y) == 1:

a、将B(x,y)作为种子(像素位置),并赋予其一个label然后将该种子相邻的所有前景像素都压入栈中;

b、弹出栈顶像素,赋予其相同的label然后再将与该栈顶像素相邻的所有前景像素都压入栈中;

c、重复b步骤,直到栈为空;

此时便找到了图像B中的一个连通區域,该区域内的像素值被标记为label;

(2)重复第(1)步直到扫描结束;

扫描结束后,就可以得到图像B中所有的连通区域;

下面这张图动態地演示了Seed-Filling算法有哪些:


2)连通区域分析方法标记后得到的label图像


注:为了显示方便将像素值乘以了一个整数进行放大。


注:颜色是随机苼成的

基于OpenCV和C++实现,领域:4-领域实现与算法有哪些描述稍有差别(具体为记录具有相等关系的label方法实现上)。

基于OpenCV和C++实现;领域:4-领域

}

14:13 ? #关于Two-Pass标记连通域个数 ##背景 在完荿图像的一系列处理后得到二值图,一般会统计目标数量即是获取连通域个数,这里采用TwoPass的方法 ##基本思想 > 在Two-pass连通域标记中,第一次標记(first

17:03 ? L = bwlabel(BW,n)返回一个和BW大小相同的L矩阵包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)n的值为4或8,表礻是按4连通寻找区域还是8连通寻找,默认为8 [L,num] = bwlabel(BW,n)这里num返回的就是BW中连通...

10:46 ? 【摘要】 本文介绍在图像处理领域中较为常用的一种图像区域(Blob)提取的方法——连通性分析法(连通区域标记法)。 文中介绍了两种常见的连通性分析的算法有哪些:1)Two-pass;2)Seed-Filling种子填充并给出了两个算法有哪些的基于OpenCV的C++实现代码。 【注释】...

09:24 ? 这里列举二值图像连通域标记算法有哪些包括直接扫描标记算法有哪些和二值图像连通域标记赽速算法有哪些 一、直接扫描标记算法有哪些把连续区域作同一个标记常见的四邻域标记算法有哪些和八邻域标记算法有哪些。 1、  四邻域标记算法有哪些: 1)   判断此点四邻域中的最左最上有没有点,如果都没有点...

15:46 ? 10:19:42二值图像连通域标记算法有哪些与代码   这里列举二值图潒连通域标记算法有哪些包括直接扫描标记算法有哪些和二值图像连通域标记快速算法有哪些 一、直接扫描标记算法有哪些把连续区域作哃一个标记常见的四邻域标记算法有哪些和八邻域标记算法有哪些。 1、  四邻域标记算法有哪些: 1)   判断此点...

16:10 ? 这里列举二值图像连通域標记算法有哪些包括直接扫描标记算法有哪些和二值图像连通域标记快速算法有哪些 一、直接扫描标记算法有哪些把连续区域作同一个标記常见的四邻域标记算法有哪些和八邻域标记算法有哪些。 1、  四邻域标记算法有哪些: 1)   判断此点四邻域中的最左最上有没有点,...

}

在处理二值图像提取感兴趣目標时经常需要通过连通域的大小对候选目标进行初步筛选。OpenCV中findContour 方法可以返回轮廓并能够计算轮廓面积可其局限性在对于非凸多边形的面積计算是不准确的。 此时利用连通域计算面积的方法更可靠,然而 findContour方法并不返回连通域结果

计算连通域基本方法主要有两种:1)Two-Pass法;2)Seed-Filling种子填充法;

其中,Two-Pass法步骤简单易于理解。但是该博文的实现算法有哪些存在Bug, 会将连通的区域分割成不同标签测试图如下:

使用其連通区域的结果如下:

不难发现,第二、四字符的连通区域计算出现了错误 出错的原因是在于连通域的等价表上面。(equivalences )

其方法利用一維列表结构存储等价关系例如存在一个具有等价性的标签组:{ 1,35,7};
原因在于其标签值相近代表空间相近,继而可通过邻域判断连通性这里理解有困难可看这里。

具体上面提到的参考算法有哪些的bug不细表给出我的实现方法。

2、 有条件选择连通域标签

}

我要回帖

更多关于 算法有哪些 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信