人体轮廓机器视觉检测算法的研究进展
2021-04-06冯文倩李新荣
冯文倩, 李新荣, 杨 帅
(1. 天津工业大学 机械工程学院, 天津 300387; 2. 天津市现代机电装备技术重点实验室, 天津 300387)
基于机器视觉的非接触式人体围度测量,具有快速高效的优势,是服装定制行业未来发展的技术支撑。非接触式人体围度测量分为三维测量和二维测量。非接触式三维人体围度测量速度快,精度高,但是所需扫描仪器价格昂贵,在服装行业中很难被广泛应用;非接触式二维人体围度测量是通过拍照获取人体正侧面图像,在二维图像的基础上进行人体轮廓检测与特征部位尺寸提取,借助手机就能完成测量以及服装样式的选取,从而实现远程服装定制,是未来服装定制行业的发展趋势。当前服装定制市场主要是通过三维扫描仪检测人体轮廓;而基于二维图像的人体轮廓视觉检测多是基于理论层面的研究,缺乏实际应用,因此,有必要对基于二维图像的人体轮廓视觉检测的方法进行分析与探讨。
先前有学者对轮廓检测的算法进行了论述,主要介绍了每种算法的原理及特点,内容相对基础[1],而近几年不断有学者提出轮廓检测的新方法[2-4],如:以双边滤波器取代高斯滤波器的Canny算子边缘检测方法、融合神经网络的轮廓检测算法以及二进小波与形态学结合的算法,这些算法在很大程度上解决了轮廓边缘不清晰、定位不精确以及对噪声敏感的问题。当前轮廓视觉检测方法主要有基于边缘算子、基于数学形态学、基于水平集算法的主动轮廓模型方法,还有学者将Otsu算法(最大类间方差法)、K-means聚类的方法应用到轮廓检测当中[5]。基于边缘算子的轮廓检测方法是最传统的一种方法,其能够依据物体的轮廓特征,去除多余的边缘,并对边缘进行修补,定位较准确,但是检测到的轮廓边缘不连续,且该方法对噪声较敏感。Navdeep等[6]提出改进的局部二值模式(LBP)方法,以像素差矩阵代替原本的固定加权矩阵,性能优于边缘算子。基于数学形态学的检测方法去噪能力较好,边缘连续,但是定位不够精确,轮廓边缘不清晰。刘晓刚等[7]提出的采用多尺度多结构的数学形态学的轮廓提取方法,解决了传统的边缘算子检测时轮廓边缘出现断裂的问题。基于水平集算法的主动轮廓模型方法主要应用于图像分割当中,而对图像进行分割之后,所分割的边界就是物体的轮廓[8]。刘其思等[9]在基于变分水平集的算法上对服装图案的轮廓进行提取,该方法能够有效地对图案进行分割,提取出的轮廓边缘清晰,有利于提高服装企业的工作效率。
对于人体围度尺寸测量来说,需要获取肩宽、手臂、胸围、腿围等部位的准确数据,所以要求所检测的人体图像轮廓清晰完整,且定位准确;但在人体轮廓检测时会受到背景和穿着的影响,易检测到错误边缘。本文通过效果图对比,对这几种轮廓检测算法进行了系统的分析比较,并对其在人体轮廓检测方面的实际应用进行了展望。
1 边缘检测算子
1.1 边缘检测算子简介
通过边缘检测算子对目标轮廓进行检测,就是基于图像的亮度及颜色特征,对变化明显的点进行标记,以此完成边缘点的检测。但是由于图像模糊、存在大量噪声,给获取完整和连续的目标轮廓带来了很大困难。通常选择一阶和二阶导数来检测边界不连续的效果。边缘检测可借助微分算子利用卷积来实现,常用的算子有Laplacian算子、Sobel 算子、Roberts 算子和Canny算子等[10]。
通过python中的opencv模块,采用4种边缘算子分别对人体轮廓边缘进行检测,效果如图1所示。可以看出, Lapacialn算子和Roberts 算子提取出的轮廓边缘不清晰,且不连续,噪声较大;Sobel算子检测到的图像较清晰,但对于小细节部分的边缘检测不到。与前面3种边缘检测算子相比,Canny 算子能够检测到图像中真正的的弱边缘,并且轮廓相对清晰,定位准确,但也会受到噪声的影响。Canny 算子相对于其他算子,应用较为广泛,本文只针对Canny检测算子在轮廓提取中的应用进行深入探讨。
图1 不同边缘算子的检测效果Fig.1 Detection effect of different edge operators. (a) Laplacian operator; (b) Roberts operator; (c) Sobel operator; (d) Canny operator
1.2 基于Canny边缘算子的轮廓检测算法
Canny边缘算子检测物体轮廓,即先用高斯滤波器对图像进行平滑处理,防止噪声干扰,再用一阶微分计算图像的梯度幅值及方向,对梯度幅值进行非极大值抑制,通过设置双阈值检测物体轮廓的边缘,从而有效地去除图像的伪边缘,精准定位到真正的边缘,以便提取准确的目标物体轮廓信息[11]。
在实际应用中,Canny边缘算子采用一阶微分计算梯度幅值和方向,计算简单,但也存在着不足,其抗噪性能比较差,边缘不连续。为了解决噪声干扰问题,很多学者对其进行了研究。Zhang等[12]通过采用自动各向异性高斯核平滑图像来减少噪声,并提出多方向角点检测算法;Qin等[13]用中值滤波替代传统Canny算法的高斯滤波,改进梯度幅度的计算方法,并通过迭代选择阈值,与传统Canny算法相比,该方法可提高抵抗随机噪声的能力,同时更准确地检测边缘。Xu等[14]用基于B样条的拉着拉斯算子(LOBS)算法计算梯度来确定目标图像边缘,非边缘区域能得到有效去噪,边缘区通过设置阈值达到去噪目的。以上方法虽有效抑制了噪声,但也消除了部分灰度值高的边缘像素点。
此外,Canny边缘算子检测的轮廓边缘存在边缘点断裂的情况,传统的方法是通过人工设定双阈值来解决该问题,但这种方法使得Canny算法易丢失局部特征边缘信息。对于阈值设定的问题,有很多学者提出了改进算法,Xu等[15]提出基于块类型和图像块梯度局部分布自适应计算阈值;杨静娴等[16]基于机器视觉,先通过Otsu算法确定最佳阈值,再用Canny算法提取白酒的酒花轮廓;齐英兰[17]采用最大类间方差法自适应地确定高低阈值,克服弱边缘丢失的问题。此外,李东兴等[18]采用数学形态学滤波技术对图像进行平滑处理,取代了传统的高斯滤波,有效地提高边缘的连续性,并能检测到很多边缘细节。庞明明等[19]提出一种融合模糊局部二值模式的Canny边缘检测算法(FLBP-Canny算法),将模糊数学和局部二值模式相融合,结合Canny算子提取目标轮廓,不仅增强了目标轮廓,而且在很大程度上改善了Canny 边缘检测出现的轮廓边缘点断裂问题,形成了封闭的轮廓边缘曲线。此外还有很多国外学者[20-22]提出了改进的边缘检测算法。
综上,以中值滤波替代传统Canny算法的高斯滤波、用Otsu算法来确定最佳阈值和融合模糊局部二值模式的Canny边缘检测等方法,均能改善Canny边缘算子的检测效果,提取到边缘连续且相对清晰的人体轮廓图像。
2 数学形态学
2.1 数学形态学原理
数学形态学是使用数学的方法,把图像看作是许多点的集合,用集合论的观点来研究图像中物体的形态和结构的图像处理方法。一般先对图像进行增强处理,再对图像进行形态学计算,从而将前景目标与背景分离,提取出轮廓。数学形态学的基本运算包含膨胀、腐蚀、开运算和闭运算4种,开运算就是先腐蚀再膨胀,闭运算就是先膨胀再腐蚀,通过组合这4种基本运算可得到其他复杂的形态学运算,李怡燃等[23]就是根据图像特点,使用形态学算子时,将膨胀运算和开运算进行加权求和,有效地克服了图像的双边缘现象。
2.2 基于数学形态学的轮廓检测算法
数学形态学的方法相比于边缘检测算子,能够有效去除噪声,且边缘点连续,能形成封闭的轮廓;但是对复杂的图像,检测到的边缘模糊不清晰,容易丢失边缘细节[24],所以要考虑增强图像轮廓边界。为此,很多学者提出基于多尺度多方向结构元素的数学形态学轮廓检测算法,其原理如图2所示(●为像素点)。鄂那林等[25]通过构造4个不同方向的结构元素,得到图像4个方向的边缘检测结果,并将这些结果加权平均,得到最终的图像边缘。吴朔媚等[26]利用递归的多尺度多方向结构元素形态学滤波得到图像的初始轮廓,能够有效抑制噪声并保留边缘细节。秦玮等[27]提出一种利用全向元素全向多尺度元素绘制方形滤波器窗口的方法,该方法能够检测低对比度区域的特征,并保留这些特征。
图2 多方向结构元素图Fig.2 Comprehensive structural element diagram
有学者提出基于各向异性形态学的图像轮廓检测算法,吴一全等[28]先计算图像的平均平方梯度向量,并由其表示平均梯度向量,然后对其进行扩散,得到图像的平均梯度向量场,再计算图像中各像素点的平均梯度方向,以此构造适合的形态结构元素,得到形态学梯度,由此检测出火焰图像的轮廓信息。与边缘算子以及各向同性的检测算法相比,该方法的边缘定位准确,并且边缘清晰,具有较好的连续性,抗噪声强。
此外,还有学者将数学形态学与Otsu算法相结合,但是其对图像进行了二级分割,检测到的轮廓不够精确[29-30]。为此,王文豪等[31]对Otsu算法进行了改进,结合图像的熵,降低光亮对图像背景与前景目标的影响。王涛等[32]将K-means聚类与数学形态学相结合,K-means算法是一种无监督的聚类算法,聚类效果好且易实现,使聚类本身尽可能的相似,但各聚类之间又各有不同,该方法运算速度快,且提取的轮廓较为完整。
Endo等[33]基于图像颜色空间转换,增强轮廓边缘,使其更加清晰。刘千等[34]先用改进的数学形态学算法检测原图像的轮廓边缘,再用训练的丰富的卷积特征(RCF)网络模型检测原图像的轮廓边缘,最后将二者融合,从而得到完整光滑的图像轮廓。以上方法在一定程度上能够解决数学形态学对图像轮廓检测不清晰的问题,有效地应对人体轮廓视觉检测时拍照设备的不同和背景的复杂程度而带来的检测难题。
3 基于水平集的主动轮廓模型方法
3.1 主动轮廓模型原理
1988年,Kass等[35]提出将主动轮廓模型应用于图像分割问题,该模型将图像分割问题转化为求能量泛函极小值的问题,再利用变分法,将求能量泛函极小值的问题转化为对偏微分方程的求解,求出的极小值就是图像分割的结果,即检测出的目标轮廓边缘。利用变分思想求解,是目前图像分割应用最多的方法。主动轮廓模型方法可分为参数活动轮廓模型和几何活动轮廓模型,几何活动轮廓模型与水平集函数结合的方式能够很好地处理轮廓曲线的拓扑变化,利于方程的求解问题。
3.2 在轮廓检测中的应用
几何活动轮廓模型的结合水平集方法的优点在于图像经过初始化后,能量函数在轮廓曲线的约束下能自主地达到极值,计算的复杂程度低,但是该模型对初始轮廓较为敏感,含有较多的噪声点轮廓,轮廓边缘模糊。为了解决这个问题,翁桂荣等[36]提出水平集函数的自适应符号距离函数,使主动轮廓在演化的过程中,能根据自适应符号函数的方向对初始轮廓进行扩大或缩小,从而降低水平集对初始轮廓的敏感性。Wang等[37]提出了一种基于区域信息和图像边缘信息相结合的新型主动轮廓模型,通过增加新颖的加权函数,实现了局部信息和全局信息的自适应平衡,加快了模型的进化速度,增强了模型的适应性;将发散算子替换为高斯滤波器,从而平滑了水平集函数,简化了计算;最后,引入符号函数的惩罚项,以减少由于重新初始化和正则化过程而导致的水平集函数的计算复杂度。此外,水平集方法在曲线演化过程中距离不规则,为此赵方珍等[38]提出一种改进的距离规则化水平集方法,使水平集函数的梯度模向势函数的2个极小值点快速趋近,一定程度上保证了水平集函数的稳定性。
在检测人体轮廓时,通常会受到穿着和复杂背景的影响,人的手腕、颈部等细节部分的检测难度比较大,传统的主动轮廓模型对人体的局部轮廓检测效果不佳[39],由此Zou等[40]研究出一种非闭合的主动轮廓模型的人体局部轮廓检测方法,以自动设置初始轮廓代替人工设置初始轮廓,在能量函数中融入了形状约束,降低背景和穿着对于人体轮廓的影响,并在简单背景和复杂背景中做出对比,如图3所示。可以看出,传统的主动轮廓模型在复杂背景下容易检测出与人体无关的边缘轮廓,而基于非闭合主动轮廓模型的局部轮廓检测曲线贴近于人体真实轮廓,但是该方法对自动设置初始轮廓方法有较高要求,在极其复杂的背景下,自动设置初始轮廓方法也会存在偏差。
图3 不同背景下不同方法的实验对比Fig.3 Experimental comparison of different methods in different backgrounds.(a) Traditional active contour model effect; (b) Automatically set initial contour effect; (c) Non-closed active contour model effect
4 分析与讨论
基于机器视觉的人体轮廓可通过边缘检测算子、数学形态学、主动轮廓模型的方法完成检测,以便实现非接触式人体围度尺寸测量。基于边缘算子的轮廓检测算法中,Canny算子相对于其他边缘算子来说,具有定位准确的优点,能够检测到细小的边缘,通过高斯滤波平滑图像,以降低噪声的影响,但是也容易平滑掉一些有效的边缘。通过控制平滑程度参数和空间尺度参数,可增强图像轮廓信息,还可通过Canny算子与局部二值模式相融合的方式增强轮廓目标,同时解决边缘不连续问题,但是该方法对于背景复杂的人体轮廓检测,仍存在着很大的挑战。
基于数学形态学的轮廓检测算法,与边缘检测算子相比,在很大程度上提高了抗噪能力,但是基本的形态学方法不能对目标轮廓进行准确的定位,尤其是人的手腕、腋下、肩部等细节部位容易受到穿着和背景的干扰,极大地影响了检测精度。基于多尺度多元素的形态学、基于各向异性的数学形态学的轮廓检测方法可在一定程度上改善定位能力和轮廓清晰度,尤其是形态学结合神经网络模型,能够很好地解决这一问题,该方法在视觉轮廓检测中有很好的发展前景。当然形态学的算法仍需进一步优化,以便更好地提高检测精度,获得更好的检测效果。
基于水平集和主动轮廓模型的检测方法,其优点在于能够检测到连续的轮廓曲线,但是传统的水平集算法对初始轮廓较为敏感,容易检测到虚假边界,对人体轮廓的全局检测更容易出现偏差,有很多学者提出了对初始轮廓进行改善,还有学者对水平集函数进行了优化。另外,基于非闭合主动轮廓模型对人体局部轮廓检测,也需要自动设置初始轮廓才能在复杂背景下检测出相对正确、光滑连续的轮廓曲线,但是在极其复杂的背景条件下,自动设置初始轮廓也会检测到无关物体的轮廓。
5 结束语
基于机器视觉轮廓检测在非接触式二维人体围度尺寸测量应用中的关键性作用不可忽视,其不仅解决了传统手工测量速度慢,三维人体测量仪器昂贵的难题,同时可实现远程人体围度数据测量,极大地推动服装行业定制化的发展。虽然通用的轮廓检测算法的研究已经相对成熟,但是针对人体轮廓检测的研究还较少,在人体轮廓检测中还存在一些不足:一是图像背景复杂,轮廓难以精确区分;二是人体的颈部和手臂等部位的关键点位置检测不精确。因此,针对于人体的视觉轮廓检测算法仍需进一步改善。