首页 > 编程知识 正文

matlab灰度图像二值化,matlab求卷积和并画图

时间:2023-05-04 18:33:14 阅读:110467 作者:2676

本发明涉及图像处理技术领域,特别涉及一种二值图像快速连通区域的计算方法。

背景技术:

连通分量表示(或连通分量分析、连通区域表示),是图论应用中的算法,对二值图像中的各连通区域标注特定的符号。 该算法可用于定位和计数图像中的目标。 连通分量标记通常也可以在计算机视觉区域中检测二值图像的连通区域,并处理彩色图像和更高维的数据。 在将其集成到图像识别系统和人机交互系统中时,该算法也起着重要的作用。 目前生产环境中使用的二值图像连通域计算主要有两种方法:双扫描法(two-pass algorithm )和种子填充法。

双扫描方法(two-pass algorithm )基于算法的粗略流程是从左到右从上到下扫描图像,其中背景像素保持为0,且当遇到值时分析其8邻域)

1 .如果这四个方向的值都为0,则在该位置创建新标签(在原始标签上加1 );

2 .如果这四个方向的非零值,即标签相同,则该位置标签为该区域的非零标签;

3 .如果这四个方向的非零值具有两个不同的标签,则选择该位置的标签之一并记录这两个不同的标签(这两个标签是相连的,因此视为等效标签);

该算法的主要问题是算法简单,但需要对一幅图像进行两次扫描。 算法的时间复杂度很高。

子填充法(Seed Filling )作为算法的大致流程,选取一个前景像素点作为种子,根据连通区域的两个基本条件(像素值相同位置相邻)将与种子相邻的前景像素合并为相同的像素集合,最终得到

基于种子填充法的连通区域分析方法如下所示。

1 .扫描图片使当前像素点不为0:a,将该像素点作为种子(像素位置),给出label,将与该种子相邻的所有前景像素推入堆栈; b、弹出堆栈顶部的像素,给出相同的标签,然后将与该堆栈顶部像素相邻的所有前景像素推入堆栈; c、重复步骤b直到堆栈变空; 在该时刻,发现图像b中的一个连接区域,该区域内的像素值被标记为label;

2 .重复步骤1直到扫描结束; 可以得到图像中的所有连通区域。

该算法的主要问题是提高了时间复杂度,但频繁的堆栈操作会影响机器的性能。

在实时序列图像处理中,当视频大小过大时,实时处理非常困难。 或者,在处理过程中,程序中的堆栈操作过于频繁,会影响机器的性能,甚至有堆栈溢出的危险。

技术实现要素:

本发明的目的是克服现有技术的不足,提供二值图像快速连通区域计算方法,提高处理速度,可以实时处理至少720p、25fps的视频,降低处理堆栈的使用频率,使程序更顺畅。

本发明的目的通过以下技术手段实现。

二值图像快速连通区域计算方法包括以下步骤:

S01 )将分割后测定对象图像在水平方向或垂直方向上进行n分割;

S02 )计算出的各个目标图像中的连接区域的个数,设为m;

S03 )标记各连接区域端点坐标并记录该坐标点的标记;

S04 )合并后计算出每个连通区域的坐标点,将端点坐标点相同或相近的连通区域合并为一个连通区域,合并后得到的连通区域个数为p,未合并的连通区域个数为s,则原目标图像中的连通区域总数为P S。

上述n可取值优选为计算机CPU的核数; 其原理是利用计算机多核和编程多线程技术,计算时间可以缩短到几分之一。

优选,所述步骤S01的测定对象图像在水平方向或垂直方向上被平均分割n份。 通过使水平方向或垂直方向分割得到的图像的边界点的坐标一致,可以使连接区域的合并计算的工序更简单,通过均匀分配,可以使计算机处理各图像的时间相等,整体上可以节约计算时间。 在水平方向分割情况下,同一切断线上的所有端点的纵坐标相同,相反在垂直方向切断的情况下,根据同一切断线上的横坐标相同的特征,可以判断改端点位于哪个图像上,在测定的坐标点完全相同或者大致相同但存在微妙的误差的情况下表示其两个端点属于同一连通区域,将这两个连通区域相互合并,以三个连通区域为例进行说明,如果连通区域a、连通区域b、连通区域c在连通区域a、连通区域b中存在坐标点相同或附近端点,则认为连通区域a和连通区域b属于同一连通区域表示连通区域c、连通区域b和连通区域c三者属于同一连通区域,能够导出连通区域a、连通区域b、连通区域c三者属于同一连通区域

所述步骤S02中各连接区域的计算方法优选采用两次扫描法或子填充法. 也就是说,剪切出各个图像仍然是以往的方法,但是由于各图像成为原始图像的n分之一,所以处理时间也变成原来的n分之一,作为整体,时间缩短到原来的n分之一,计算速度变快,并且各图像的处理变得更简单,被解决

优选地,所述步骤S01在将测量对象图像n分割后,对每个图像依次编号,当在水平方向上分割测量对象图像时,从上向下或从下向上依次编号; 当测量对象物沿垂直方向前进时

行分割则从左至右或从右至左依次进行编号。

优选的,所述每一份图像中连通区域端点坐标用K(X,Y)表示,其中K表示图像编号,X、Y分别表示横坐标和纵坐标。

优选的,所述坐标点是指待测目标图像中像素点的值,除了利用像素点的特性进行坐标点标记以外,还可以采取用户自定义的方式确定图像的坐标系。

优选的,所述端点坐标相近是指相邻两份图像两端点坐标的X和Y的值误差分别不超过一个像素点单位,其原因在于连通区域是指相邻像素点彼此连通的区域,因此当两个端点坐标值超过一个像素点时则表示这两个端点之间存在“隔离带”,即这两个端点所在的连通区域并非彼此连通的区域。

优选的,所述端点坐标是指连通区域分布在分割线上的端点坐标,连通区域本身具备端点然而只有在分割时分布在分割线上的端点才是本方案采集的端点,其余部位的端点坐标本方案不采集,采集的依据是根据分割线的坐标值,例如图像水平分割,则与水平分割线纵坐标相同的点全部采集,其余点则不采集。

优选的,所述分割线的线宽宽度不超过一个像素点单位,同理的,当分割线的线宽超过一个像素点值,则有可能会将本身不连通的区域误认为是连通的区域,因此在进行图像分割时,务必保证分割处图像的边沿丢失尺寸不超过1个像素点。

本发明的有益效果是:和传统的计算方法相比较,本发明的优势在于将待测图像按计算机的核心数分割相应的分数,运用计算机的多核和编程的多线程技术,将每一幅图多核同时进行处理,可以将计算时间缩短为原来的若干分之一,同时也降低进程栈的使用频率,从而使程序更加顺畅。

附图说明

图1为本发明的流程图;

图2为实施例1待测目标图像未分割前图像;

图3为实施例1待测目标图像分割后编号为1的图像;

图4为实施例1待测目标图像分割后编号为2的图像。

具体实施方式

下面结合附图1-4和具体实施例进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。

实施例

二值图像快速连通区域计算方法,本实施例以双核计算机为例进行说明,即计算机的CPU核数为双核,同样的选择将待测目标图像分割成两份,如图2-4,图2是待测目标图像,图3和图4分别是分割以后的图样,在本实施例中分割方向选择的是水平方向分割,分割线的线宽像素点选择为1。图像编号选择由上至下,即图3标号为1图4标号为2。通过肉眼可以直接获得图2中连通区域的个数为4个分别标记为1、2、3、4,下面安装本发明提供的方法进行计算。通过图3、图4可以知道每一份目标图像中的连通区域个数之和M=5;

其中被分割线切开的图3和图4中只有连通区域1,定义待测图样即图2的左下角为坐标原点,坐标点的单位以像素点为单位,横坐标X表示像素点的列数,纵坐标Y表示像素点的行数,分别测量图3和图4中连通区域1位于分割线上的端点,可以看出图像3有两个端点分布在切割线上,测得其坐标点分别为1(137,567)和1(153,567);图4中分布在切割线上的端点也有两个,测得坐标点分别为2(137,565)和2(153,565),即坐标点1(137,567)和坐标点2(137,565)属于同一连通区域,坐标点1(153,567)和坐标点2(153,565)属于同一个连通区域,其纵坐标点相差一个像素点,是由于切割线的宽度为1个像素点,在图像分割过程中出现图像像素点丢失的现象,为了避免图像在分割过程中大范围的像素点丢失导致连通区域的计算误差,切割线的宽度应该越低越好,当期小于一个像素点时,测得的端点坐标点完全相同的两个区域可以互相合并成为一个连通区域;也就是说在本实施例中合并得到的连通区域个数P=1,未合并的连通区域个数S=2,待测目标图像中连通区域的个数P+S=3,因此该方法测得的连通区域个数并无误差与实际相同。

除以上实施例所举之外,本发明还可以根据计算机的核数选择待测目标图像的分割分数,同时为了提高计算精度,在进行图像分割时,分割线的宽度应该越小越好。

优选的,除上述实施例提到的水平分割待测目标图像以外,还可以选择垂直将图像进行分割,并根据分割线所在的坐标位置,查找位于分割线上的连通区域端点坐标,并将端点坐标值相同或相近的连通区域进行合并成为一个连通区域,为了方便分割区域的拼接,对于4核及其以上的计算机处理时需要将待测目标图像分割成多份,因此可以对每一条分割线进行编号,位于同一分割线上的坐标进行相同的编号,从而使得连通区域在合并时可以简单准确的完成拼接。

以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。