本发明涉及计算机图像处理技术领域,具体涉及一种图像的自动精细分割方法。
背景技术:
目前,在图像分割领域众多国内外的专家学者进行了多年深入的研究,涌现出大量图像分割的算法,然而在图像的分割效果方面,没有一种分割理论能够达到精确分割的效果。图像分割之后的许多工作,如图像分类、图像分析等能否达到预期的效果,受图像分割质量的影响很大。因而获取具有精确边缘的分割图像具有重要的科研价值。
技术实现要素:
针对现有技术中存在的问题,本发明提供了一种图像的自动精细分割方法,通过结合多种图像分割算法的优点,再经过改进的grabcut算法分割图像,得到边缘更精确的目标分割掩膜,提高算法的分割精度。
本发明的技术方案如下:
一种图像的自动精细分割方法,其特征在于,包括以下步骤:
1)通过具有实例分割功能的maskrcnn算法对输入的原始图像进行初步的分割,得到初始掩膜;
2)通过slic超像素分割算法对原始图像进行超像素分割得到超像素块,并结合超像素块对初始掩膜的边缘进行扩展;
3)结合扩展后的掩膜和初始掩膜进行形态学操作得到grabcut算法分割的初始三元图;
4)利用改进的grabcut算法建立高斯混合模型,并反复迭代高斯混合模型参数,最后利用最大流最小割算法得到最优目标分割结果。
所述的一种图像的自动精细分割方法,其特征在于,所述步骤1)具体为:
1.1)将原始图像输入maskrcnn程序中,maskrcnn使用rpn网络来产生候选区域roi;
1.2)利用resnet-101残差卷积网络提取出图像的整体特征,从而进一步得到该原始图像的特征图;
1.3)通过rpn网络生成多个roi候选区域,然后映射到共享卷积特征图上得到每个roi区域的特征图,对每一个roi使用roialign进行像素校正,在每个roi区域的特征图上对每个roi进行类别以及boundingbox预测;
1.4)最后使用设计的fcn框架预测roi区域每个像素点所属的类别,最终得到图像实例分割的结果。
所述的一种图像的自动精细分割方法,其特征在于,所述步骤2)具体为:
2.1)输入原始图像和maskrcnn分割后的初始掩膜,记为m1;
2.2)直接将原始图像放在slic超像素算法中进行超像素分割,最后得到一张超像素图,该超像素图中分别为每个超像素块设置一个标签,每个超像素块集合中的像素点的标签就是该超像素块聚类中心的标签,标签从0开始排序,超像素图记为s1;
2.3)将初始掩膜m1腐蚀一次,得到腐蚀后的掩膜,记为m2;
2.4)将初始掩膜减去腐蚀后的掩膜,即m1-m2,得到初始掩膜的边缘区域,记为m3;
2.5)将边缘区域m3与超像素图s1相乘,得到边缘处每个像素点所对应的标签,对边缘处的标签去重,根据边缘标签在超像素图中找到标签所对应的超像素块,将超像素块与初始掩膜相加,得到扩展之后的掩膜m4。
所述的一种图像的自动精细分割方法,其特征在于,所述步骤3)具体为:
3.1)对初始掩膜m1进行多次形态学腐蚀操作,将初始掩膜腐蚀到面积只占原掩膜面积的1/3,该部分像素点置为1,即确定的前景,记作m5,周围其他区域都是背景;
3.2)对经过超像素扩展后的掩膜m4进行多次膨胀,膨胀得到的面积为超像素扩展后掩膜面积的1/3,该部分像素点置为2,即不确定区域,记作m6,周围其他区域都是背景;
3.3)计算m5+m6,将值为3的像素点置为1,其他的不变,得到grabcut分割初始掩膜m7。
所述的一种图像的自动精细分割方法,其特征在于,所述步骤4)具体为:
4.1)将分割初始掩膜m7输入到grabcut程序中,同时输入原图,grabcut算法通过初始掩膜在分割原图上使用改进的gmm建模,再计算各个分量,最后通过最大流最小割得到最终分割结果,后续再对分割结果进行crf处理,能够使边缘更加精细。
所述的一种图像的自动精细分割方法,其特征在于,所述步骤4.1)中改进的gmm建模具体为:
4.1.1)通过得到的maskrcnn掩膜计算得到掩膜的质心pc;
4.1.2)遍历待分割区域每一个像素点p,计算得到离质心距离最大的一个点的距离,记为dm,计算公式如下所示:
dm=max(||p-pc||)
计算每个像素点与质心的距离d,计算公式如下所示:
d=||p-pc||
4.1.3)通过dm、d计算得到位置信息,加入位置信息后本文特征向量为:
其中,pr,pg,pb分别是图像的三通道分量。
本发明的有益效果是:
1)给定任意包含目标物体的图片,指定需要分割物体的类别,本发明可在图片中将指定类别的物体表面掩膜分割出来。
2)算法执行过程中几乎无需人工干预,只需要指定需要分割物体的类别,使得本发明可以用来批量分割物体的掩膜,有助于实现掩膜分割的自动化。
3)本发明分割所得到的物体掩膜,分割效果在直观上能保证物体的完整性,基本能够将物体的所有信息都分割出来,边缘精度较高,具有很好的视觉效果。
附图说明
图1是本发明的分割流程图;
图2是本发明的maskrcnn算法流程图;
图3是本发明的位置信息可视化图;
图4是本发明的k-means聚类效果对比图;
图5是本发明的实验结果图。
具体实施方式
以下结合说明书附图及实施例,对本发明作进一步描述。
一种图像的自动精细分割方法,结合多种图像分割算法的实例分割方案,本方案分割流程如图1所示。首先输入待分割rgb图像,通过maskrcnn算法得到初始的各个物体的实例分割掩膜,同时通过slic算法得到图像的超像素标签图,结合实例分割掩膜采用形态学方法得到grabcut算法分割初始掩膜,最后将原始的rgb图像输入grabcut算法得到精细化后的分割掩膜。
具体包括以下步骤:
步骤一:maskrcnn算法预分割
首先,将图5(a)输入maskrcnn程序中,maskrcnn的算法流程如图2所示。maskrcnn使用rpn网络来产生候选区域(roi)。然后利用resnet-101残差卷积网络提取出这幅图像的整体特征,从而进一步得到这幅图像的特征图,这里的特征提取过程与fasterrcnn网络提取特征的过程相同。下一步就是通过rpn网络生成多个roi候选区域,然后映射到共享卷积特征图上得到每个roi区域的特征图,对每一个roi使用roialign进行像素校正。在每个roi区域的特征图上对每个roi进行类别以及boundingbox预测。最后使用设计的fcn框架预测roi区域每个像素点所属的类别,最终得到图像实例分割的结果。
图片经过maskrcnn算法处理后能够得到三个预测结果:1)图片中的物体所对应的目标检测框。2)图片中的物体所对应的类别置信度(score)。3)图片中的每个物体所对应像素上覆盖的分割掩膜(mask)。从分割结果中选择分割掩膜显示,如图5(b)所示。
步骤二:基于slic超像素算法掩膜扩展
此方法是将掩膜边缘所对应的超像素块添加扩展到初始mask上,具体的方法流程如下:
1)输入待分割原图和maskrcnn分割后的初始掩膜,记为m1。
2)直接将原图放在slic超像素算法中进行超像素分割(根据多次实验比较,超像素块数量设置为:
最后得到一张超像素图,该超像素图中分别为每个超像素块设置一个标签,每个超像素块集合中的像素点的标签就是该超像素块聚类中心的标签,标签从0开始排序,超像素图记为s1。
3)将初始掩膜m1腐蚀一次,得到腐蚀后的掩膜,记为m2。
4)将初始掩膜减去腐蚀后的掩膜,即m1-m2,得到初始掩膜的边缘区域,记为m3。如图5(c)所示。
5)将边缘区域m3与超像素图s1相乘,得到边缘处每个像素点所对应的标签。对边缘处的标签去重,根据边缘标签在超像素图中找到标签所对应的超像素块,将超像素块与初始掩膜相加,得到扩展之后的掩膜m4。如图5(d)所示。
步骤三:掩膜形态学处理
在正式输入grabcut算法进行分割之前,还需要对得到的扩展后的掩膜进行分割前预处理。具体的步骤如下:
1)对初始掩膜m1进行多次形态学腐蚀操作。该操作的目的是由于maskrcnn分割的掩膜边缘精细度不高,对物体内部的空间不做分割,目标物体内部细节的空间信息无法体现,导致掩膜只是内部完全相连的一块,不够精细。而作为grabcut的分割原始mask,将视为确定的前景,因此需要腐蚀到合适的大小,既能作为确定的前景来生成grabcut分割的初始mask,又不会引入过多的背景,导致分割结果不理想。根据多次试验比较,将初始掩膜腐蚀到面积只占原掩膜面积的1/3能得到比较好的实验效果。该部分像素点置为1,即确定的前景,记作m5,周围其他区域都是背景(像素点值为0)。
2)与对maskrcnn分割掩膜进行简单的膨胀不同,本方案对经过超像素扩展后的掩膜m4进行多次膨胀(经过试验对比,当膨胀得到的面积为超像素扩展后掩膜面积的1/3时可以达到比较满意的效果)。其目的是尽可能多的扩展待分割的区域,因为maskrcnn分割的掩膜的边缘信息存在缺失,缺失的部分在形态上可能比较尖锐或者比较狭长,像素点之间可能存在大面积的连通,简单的膨胀无法把缺失的部分覆盖进来。而超像素扩展后的图像对物体的边缘已经进行了一定的延伸和扩展,对缺失部分有了一定的填补,通过多次膨胀就能够尽可能多的将目标前景缺失的部分都填补上。但是也不能扩展的过大,导致分割时将不属于目标物体但像素值与初始掩膜相近的物体误认为是目标而引入。该部分像素点置为2,即不确定区域,记作m6,周围其他区域都是背景(像素点值为0)。
3)然后计算m5+m6,将值为3的像素点置为1,其他的不变,得到grabcut分割初始掩膜m7,将其可视化如图5(e)所示。该图是一幅三元图,其中具有三个区域,从外到内分别为确定背景区域,不确定区域和确定的前景区域,后续的操作主要是对不确定区域进行分割。
步骤四:grabcut算法分割
最后将分割初始掩膜m7输入到grabcut程序中,同时输入原图,grabcut算法通过初始掩膜在分割原图上使用改进的gmm建模,再计算各个分量,最后通过最大流最小割得到最终分割结果。
原始的grabcut算法在进行k-means聚类时只考虑到了像素的rgb颜色信息,其结果就会使gmm中每个分量的分布不均匀,这对后续迭代过程中能量函数的收敛是不利的,最终会影响分割结果。
原始像素对应特征向量为:
xi=(pr,pg,pb)
其中,pr,pg,pb分别是图像的rgb三通道分量。本文所采用位置信息的计算步骤如下:
1)通过得到的maskrcnn掩膜计算得到掩膜的质心pc。
2)遍历待分割区域每一个像素点,计算得到离质心距离最大的一个点的距离,记为dm,计算公式如下所示:
dm=max(||p-pc||)
计算每个像素点与质心的距离d,计算公式如下所示:
d=||p-pc||
3)通过dm、d计算得到位置信息,加入位置信息后本文特征向量为:
将位置信息可视化如图3所示,加入的位置信息能够减小背景的像素差异,使属于背景的一类像素点能够更容易聚类成一类。越靠近目标前景区域的像素点越保留较大的像素差异。
实验结果如图4所示,图片4(a)中原始的聚类算法将作为前景飞机的像素分类成了两类,作为背景的天空中的像素分类到了三个高斯分量中,背景结构复杂。图片4(b)是采用加入位置信息后的聚类算法处理后得到的图片,从中可以看出,飞机的大部分像素点被分为了一类,并且天空的像素点也只是剩下了两类,背景像素类别大大简化,这种方法可以使前景目标位于较少的高斯分量上,使高斯分量的分布更加合理,有利于后续能量函数的收敛。
后续再对分割结果进行crf(conditionalrandomfield,条件随机场)处理,能够使边缘更加精细。最终得到的分割结果如图5(f)所示。