基于grubcut和人工智能的人像背景分离及轮廓提取方法与流程

文档序号:12598039阅读:479来源:国知局
基于grubcut和人工智能的人像背景分离及轮廓提取方法与流程

本发明属于图像识别技术领域,特别是指一种基于grubcut和人工智能的人像背景分离及轮廓提取方法。



背景技术:

现有的技术中在获取人体轮廓这一步骤中通常采用的是诸如canny边缘检测算子或者K-means算法等去提取人体轮廓,从而达到分离背景的目的。这种办法实际操作效果不理想,因为这些算法只有在背景简单的情况下才能达到良好的分离背景的效果。在背景复杂的情况下,比如背景中包含多个其他复杂物体的情况下去提取人体的轮廓效果很不理想。

于是有关研究人员就利用了一种叫做背景差分法的算法去除背景。这种算法要用户每一次都拍两张照片,一张背景照片,一张包含人像和背景的照片,然后用后者减去前者,这样就去掉了背景。但是这种算法由于前后两张照片的拍摄有时间差,即使这个时间差很小也会引起前后两张照片的不一致。这些不一致表现为前后照片的光线条件不可能完全一样,导致前后两张照片在相同背景的地方像素其实是不同的,这样相减之后其实不能把背景像素完全去掉。由于每个用户在前后的时间差拍照时外界光线或多或少都产生了一定变化。

当然,针对此问题,研究人员会想到设置一定的前后变化差的阈值条件。但是实际上每个用户拍照前后变化的程度都是不一样的,所以阈值的值其实是无法确定的。此外,前后拍摄的两张照片由于是用户自己拍摄的,所以会存在或多或少的位移和旋转情况,这样的话就要将后面那张照片先旋转再平移以保证它和原来的背景照片相应的像素点能够严格对应上,这就要用到诸如模板匹配的算法,但是无论用什么匹配算法去匹配前后这两张照片都不太稳定,这些匹配算法没办法保证在任何背景条件下匹配的准确率能够精确到每一个像素点。再次,更致命的是背景差分法前后两张照片存在畸变情况,这种畸变情况矫正难度是非常大的,因为在一张图片的不同区域的畸变程度往往还不一样,每个小区域内的像素点之间的畸变程度往往还不一样,也就是整张图片上每处小区域相比原图的放大和缩小的比例还是变化的,这样如果要将前后两张图片完全以一个像素点的精确度一一对应上操作性不强。



技术实现要素:

针对目前的一些算法诸如canny边缘检测算子或者K-means算法等方法在背景稍微复杂情况下提取人体轮廓不准确的问题,本发明提出基于grubcut算法和人工智能的人像图片背景分离方法及轮廓提取方法,以实现快速有效的分离采集到的人像图片的背景,以更精确地提取人体轮廓。技术方案如下:

一种基于grubcut和人工智能的人像图片背景分离方法,包括:

步骤S1、采用人工智能模型分别定位出待背景分离的原始人像图片中第一区域、第二区域和第三区域的位置,所述第一区域、第二区域和第三区域的面积依次增大;

步骤S2、根据步骤S1定位的第三区域的位置,在原始人像图片中分割生成一个待处理的人像矩形框,所述人像矩形框包括整个人像;

步骤S3、在人像中以步骤S1定位的第一区域作为起始点,垂直生成至少一条前景色线,所述前景色线的长度根据步骤S1定位的第二区域的半径为比例设定的;

步骤S4、根据步骤S1定位的第二区域和第三区域的位置,在所述前景色线两侧均匀生成多条背景色线;

步骤S5、根据生成的所述前景色线和背景色线,采用grubcut迭代算法对步骤S2生成的人像矩形框中的原始人像图片进行背景分离处理。

进一步地,所述第一区域为鼻子区域,第二区域为人脸区域,第三区域为人体上半部分区域;

进一步地,在所述前景色线两侧均匀生成多条背景色线至少覆盖包括人体外侧区域以及两耳边之间、两手之间和两脚之间的区域。

进一步地,在步骤S5之后还包括利用人像图片中像素的不对称性进行迭代去背景操作。

进一步地,以已定位出的人脸或者人体的上半部分的中心点做垂直线,然后以这条垂直线为中心搜索人体手与胸之间左右两侧的像素点,若发现左右两侧像素明显不对称,那么不对称的地方标记上背景色线,进一步采用grubcut迭代算法去掉背景。

进一步地,采集的人像图片中包括正面、侧面和背面图像。

本发明还提供一种基于grubcut和人工智能的人像轮廓提取方法,采用上述任一项所述的基于grubcut算法和人工智能的人像图片背景分离方法之后,还包括:

步骤S10、将已经去除背景的人像图片进行灰度化;

步骤S11、分析已经灰度化的人像图片的像素分布图,并据此设置像素阈值;

步骤S12、根据像素阈值,设置滑动窗口检测灰度图像,当检测到边缘的时候,记录下坐标位置即提取生成人像轮廓。

本发明一种基于grubcut算法和人工智能的人像图片背景分离方法,具有以下技术效果:利用在人像图片中定位不同大小的区域的组合获取grubcut算法需要的前景色线和背景色线,使得结果更准确,效率更高;根据图片给像素的是否对称性去背景的过程中,本发明采取了变步长的思路去搜索像素,提高定位速度;在分离背景和人体部位的定位中均引入了先进的人工智能算法,使得结果更准确,算法效率更高;针对原来的grubcut算法,本发明grubcut改进算法将原来的grubcut算法从人机交互变成了自动化。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一种基于grubcut算法和人工智能的人像图片背景分离方法的流程示意图;

图2~图7为本发明实施例采用图1所示的方法处理的人像图片的各阶段效果图;

图8为本发明一种基于grubcut和人工智能的人像轮廓提取方法的流程示意图;

图9为图7所示的人像图片像素分布图;

图10为图7所示的人像图片去掉0~5之间的像素分布图;

图11~图13为采用本发明方法提取的正面、侧面和背面的人体轮廓;

图14~图16为采用canny算子提取的正面、侧面和背面的人体轮廓。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种基于grubcut算法和人工智能的人像图片背景分离方法,如图1所示,包括:

步骤S1、采用人工智能模型分别定位出待背景分离的原始人像图片中第一区域、第二区域和第三区域的位置,所述第一区域、第二区域和第三区域的面积依次增大;第一区域优选是比较容易识别的人体特征部位,比如说鼻子,眼睛等;第二区域和第三区域的定位区域较大一些,比如第二区域为人脸区域,第三区域为人体上半部分区域。采用不同区域的划分进行多级定位,是为了后面的作基础准备。上述的人工智能模型是通过海量的大数据训练获得的,因此定位这些较容易识别的部位区域时,识别精确率比较高。

步骤S2、根据步骤S1定位的第三区域的位置,在原始人像图片中分割生成一个待处理的人像矩形框,所述人像矩形框包括整个人像;因为人像有个大致的区域,因此可以划分出一个包含全部人像的矩形框,此矩形框的范围缩小了图像处理的区域范围,减少背景噪声的干扰。

步骤S3、在人像中以步骤S1定位的第一区域作为起始点,垂直生成至少一条前景色线,所述前景色线的长度根据步骤S1定位的第二区域的半径为比例设定的;

步骤S4、根据步骤S1定位的第二区域和第三区域的位置,在所述前景色线两侧均匀生成多条背景色线;

本步骤中,进一步地,在所述前景色线两侧均匀生成多条背景色线至少覆盖包括人体外侧区域以及两耳边之间、两手之间和两脚之间的区域,因为这些区域一般较难区分,但是由于在步骤S1中有三个定位区域的基础上,因此定位这些区域时较容易也比较精确。

步骤S5、根据生成的所述前景色线和背景色线,采用grubcut迭代算法对步骤S2生成的人像矩形框中的原始人像图片进行背景分离处理。

在步骤S1~S5的技术方案中,首先利用经过训练获取的人工智能算法对原始的人像图片根据特征部位的区域大小先定位多级区域,再利用这些多级区域为grubcut迭代算法标记需要的前景色线和背景色,然后进行grubcut迭代算法对图像背景进行分离处理。由于前景色线和背景色是在多级人体特征区域的定位和划分基础上获取的,所以精确度要远远大于直接进行的识别,而且上述步骤完全可以实现全部自动化,只要输入图片就可以自动生成人体的轮廓,效率很高。

进一步地,在步骤S5之后还包括利用人像图片中像素的不对称性进行迭代去背景操作,比如以已经定位出的人脸或者人体的上半部分的中心点做垂直线,然后以这条垂直线为中心搜索人体手与胸之间左右两侧的像素点,若发现左右两侧像素明显不对称,那么不对称的地方标记上背景色线,进一步采用grubcut迭代算法去掉背景。因为经过1万张测试样本的测试发现,在不断利用grubcut迭代的过程中,图片中的像素点总是存在不对称性,利用这个不对称性就可以不断消除背景。在测试样本中这个不对称性的存在高达100%,也就是每一张图片都会。这里提到的不对称性指的是图片在grubcut迭代的过程中,某些背景被去掉了,但是以人体为中心的左右侧背景,并不是同步对称去掉的,而是总有一侧的背景比另外一侧去的更干净一些,于是就利用像素搜索的办法,以人体为中心,搜索左右侧中不对称的像素点,然后将搜索到的这些不对称的还没有去掉背景的像素点同样画上背景色线,这样利用grubcut算法进一步去掉背景。并且经过1万个测试样本测试发现,这个背景色线不需要画在非常接近人体的部位,只要画在相对接近人体的部位,就能将人体和背景相邻的背景去掉,这个测试成功率在98.5%。经过研究发现,另外1.5%的失败是因为背景实在太复杂,并且背景中存在某些像素块和人体的像素块非常接近。

为了获取人体的三维模型,进一步地,采集的人像图片中包括正面、侧面和背面图像,每个角度的处理方式一致。

下面以一个具体实施例详细说明上述基于grubcut算法和人工智能的人像图片背景分离方法:

1、将用户手机拍摄的照片大小进行处理,弄成统一尺寸大小的图片;

2、输入一张待包含背景的原始人像图片,可以规定用户拍照的时候站在图像的中间位置,目的就是使得人像左右两边和上下两侧留出的背景空间大小一样,从坐标位置来说,人是对称处于图片中间的。需要说明的是,这个对称并不需要非常严格,只要大致以肉眼的角度来看是对称的就可以了,这样用户照实施起来也相对容易。大致站姿如图2所示即可;

3、如图3所示采用人工智能算法定位出鼻子,人脸和人体上半部分位置,目的为了把人的大致位置进行多级区域确定,为后面的算法做准备;

4、由于上面已经识别了人脸,并且这个人脸图像的中心经过1万张测试样本测试能够保证在人脸鼻子位置的概率是99.4%。以人脸鼻子为中心在人的四周对称地画出一个矩形框。也就是说识别出人脸的概率是非常高的。但是如果没有识别到人脸的话,由于已经事先规定了人要处于照片中心的位置。所以以中心位置为基准画矩形框。在人像的周围画一个矩形框,可以使得矩形框将人像包围,并且人也是大致对称地处于矩形框之中。经过1万张测试样本测试,能达到上述目标的成功率为97.6%,系统自动画出矩形框如图3所示;

5、上一步定的中心点(通常是人的鼻子为中心点),在人的鼻子上方20个像素点作为起始点往下让机器自动画一条当作grubcut算法中的前景色线。这条前景色线以人的鼻子上方20个像素点作为起始点,垂直照片的宽度方向,长度是以图3中识别出的人体上半部分的半径为比例选择的,也就是说人体上半部分的半径越大,把前景色线的长度相应变大,经过测试选择了一个比较好的比例,能够确保这条直线划过人体整个上半段。然后在人脸两侧对称地画背景色线。这个背景色线由于有了人脸和人体上半部分的中心和半径的参考,肯定能画到人的身体两侧以及人头上方,这些直线相对接近人的对方又不会画到人的身体上,最终效果如图4所示;

6、利用grubcut算法经过第一次迭代之后,图片变成如图5所示,图片经过处理后,原图中有一些背景已经去掉了,但是还有一些背景没有去掉,比如两手之间夹着的背景,还有两脚之间夹着的背景。这些背景的去除再利用步骤5的方法迭代处理,同样地,在人像脑袋上方,两耳边,两手之间,两脚之间分别画上背景色线,告诉机器这就是背景色进行去除处理,即得到如图6所示的处理图片;任何一张图片都可以原图上恰当地画上背景色和前景色已经矩形框,而不会在该画背景色的地方画上了前景色,也不会在该画前景色的地方画上了背景色。这是因为结合了人工智能算法定位了人体的一些特征部位,比如人脸和人的上半部分,并且得到了每张图片人脸和人的上半部分的中心位置和半径大小,有了这些中心位置和半径大小以及规定被拍摄者的站姿,总是可以合理的自动选择合理的前景色以及背景色线段的位置和长度,已达到目的。经过1万张测试图片测试,上面合理画出前景色和背景色的算法的成功率为96%,然后进行算法迭代操作,得到的结果图如图6所示;

7、利用图片中像素的不对称性进行迭代去背景操作。因为经过1万张测试样本的测试发现,在不断利用grubcut迭代的过程中,图片中的像素点总是存在不对称性,利用这个不对称性就可以不断消除背景。在测试样本中这个不对称性的存在高达100%,也就是每一张图片都会。这里提到的不对称性指的是图片在grubcut迭代的过程中,某些背景被去掉了,但是以人体为中心的左右侧背景,并不是同步对称去掉的,而是总有一侧的背景比另外一侧去的更干净一些,于是就利用像素搜索的办法,以人体为中心,搜索左右侧中不对称的像素点,然后将搜索到的这些不对称的还没有去掉背景的像素点同样画上背景色线,这样利用grubcut算法进一步去掉背景。并且经过1万个测试样本测试发现,这背景色线不需要画在非常接近人体的部位,只要画在相对接近人体的部位,就能将人体和背景相邻的背景去掉,这个测试成功率在98.5%。经过研究发现,另外1.5%的失败是因为背景实在太复杂,并且背景中存在某些像素块和人体的像素块非常接近。图7中利用人体左右两手之间像素点的不对称性进行进一步的去背景操作。那么以已经定位出的人脸或者人体的上半部分的中心点做垂直线,然后以这条垂直线为中心搜索人体手与胸之间左右两侧的像素点,如果发现左右两侧像素明显不对称,那么就在不对称的地方画上代表背景色的线段,进一步去掉背景,最后去除背景之后的效果图如图7所示。

上面只是做了正面去背景,至于背面和侧面去背景的算法类似,也是同理可得,这里就不再累赘阐述。

图8为本发明一种基于grubcut和人工智能的人像轮廓提取方法的流程示意图,如图8所示,方法步骤如下:

步骤S10、将已经去除背景的人像图片进行灰度化;

步骤S11、分析已经灰度化的人像图片的像素分布图,并据此设置像素阈值;

步骤S12、根据像素阈值,设置滑动窗口检测灰度图像,当检测到边缘的时候,记录下坐标位置即提取生成人像轮廓。

以上述经过背景分离的人像图片为例,首先将已经去除背景的图像进行灰度化;然后利用这个灰度图片设置一定的阈值,做出待处理的图片的像素分布图,看看待处理的图片的像素分布情况,以图7为例,其像素分布图9所示。图9是像素分布图,可以看出像素值在0~5之间分布数量最多,这些主要是去除背景之后图片中黑色像素的点。其他像素值的个数相比这一范围的数量差了几个数量级,所以在柱状图中高度非常低以至于从图中难以分辨。于是这就是临界的像素值,也就是想要的轮廓的阈值点。换句话说可以取像素值为5作为阈值。去掉这个数量巨大的0~5之间的像素,就可以观察其他像素的分布了,为了体现完整性,也做出了这样的像素分布图如图10所示。

加入了这一步判断图像阈值的算法之后,就可以自动化地根据不同图片设置不同的阈值,这样就可以接着下一步骤也就是提取轮廓的操作了。

注意这里是像素分布图,和通常见到的主要体现亮度分布的直方图有所区别,主要体现像素的值。然后根据这个阈值,设置滑动窗口检测灰度图像。当检测到边缘的时候,记录下坐标位置。合理的利用阈值和设置滑动窗口的形状和大小可以达到比常规边缘检测算法更好的效果。

图11~图13是用了上面所述的方法去提取正面、侧面和背面的人体轮廓,图14~图16为采用canny算子提取的正面、侧面和背面的人体轮廓,对比图11和图14可以看出本发明的算法提取的轮廓更加完整,并且去除了一些和人体轮廓无关的东西,这些无关的东西诸如背景,人体轮廓内部像素。并且用canny算子提取轮廓通常无法得到完美的轮廓,比如图14中人像右手有残缺。

对比图12和图15可以看出本发明的算法提取的轮廓更加完整,并且去除了一些和人体轮廓无关的东西,这些无关的东西诸如背景,人体轮廓内部像素。从图15可以看出,用canny算子提取轮廓的时候保留了不必要的手臂部分,在接下来的人体特征部位的定位和测量中侧面轮廓图不需要手臂,手臂会形成干扰。而用本发明的算法提取到的轮廓如图12所示很好的满足了要求,用canny算法提取的轮廓如图15所示是不满足要求的。

对比图13和图16可以看出本发明的算法提取的轮廓更加完整,并且去除了一些和人体轮廓无关的东西,这些无关的东西诸如背景,人体轮廓内部像素。并且用canny算子提取轮廓的时候保留了不必要的部分,这使得图16中的人体下半部分的腿部轮廓提取失败,这样用canny算子也无法进行下一步的人体特征部位的定位和测量过程。

上面举例了canny算子提取轮廓的过程,至于用其他的一些常规边缘提取算法去提取轮廓效果也不理想,这里就不再累赘。

最后应说明的是以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1