APP下载

基于MSER的弹孔识别算法的研究

2019-03-22杨章含曾培峰

网络安全与数据管理 2019年3期
关键词:弹孔像素点斑点

杨章含,曾培峰

(东华大学 计算机科学与技术学院,上海 201620)

0 引言

科技的发展迎来了各行各业的技术革新。在军事领域,传统的人工报靶模式逐渐被自动化报靶取代。自动化报靶关键问题是弹点识别。通常训练的目标靶采用胸环靶,为了正确区分胸环靶中弹孔和非弹孔,可将图像处理中斑点检测技术用于弹孔识别。

斑点检测中,特征提取算法的优劣直接影响检测结果的精准度。斑点检测方法主要有以下三类[1],(1)帧间差分法:通过两帧背景相同的图像相减获取斑点。文献[2]弹孔识别中,首先使用基准点对图像矫正,用中值滤波去除噪声,然后用膨胀腐蚀操作定位靶心,将射击前后的两帧图像进行异或运算,获取新增弹孔。YE等人对失真图像矫正后,膨胀腐蚀获取胸环靶中心,采用Roberts边缘检测算子检测胸环靶轮廓,通过帧间差获取新增弹孔[3]。帧间差分法对背景变化敏感,胸环靶纸抖动会导致较大的检测误差。(2)模板检测法:计算模板核,将其用于图像卷积,通过局部极值检测斑点。KONG等人用高斯拉普拉斯(Laplacian of Gaussian,LoG)算子检测斑点,随着LoG算子尺度增加,斑点结构在某种程度上收敛于局部极值[4]。文献[5]采用高斯差分(Difference of Gaussian,DoG)算子检测不同尺寸的斑点。DoG算子与LoG算子类似,运算效率较高,对不同尺寸的斑点检测更有优势。Ming等人使用Hessian行列式(Determinant of Hessian, DoH)检测斑点,用二维高斯函数分别求解行、列坐标方向的二阶偏导,以及先行后列坐标的二阶偏导,用三个偏导算子生成的模板分别对原图卷积,检测图像在不同尺度空间的极值点[6]。文献[7]提出基于Hessian矩阵的LoG算子(Hessian-based Laplacian of Gaussian,HLoG)检测斑点,使用Hessian矩阵预分割斑点候选区域,计算单一最佳尺度作为LoG滤波器的平滑参数检测斑点,简化运算复杂度,通过区域特征排除非斑点区域。模板检测法中,运算量与卷积核大小呈正相关,每个像素访问次数为卷积核大小。对于尺寸不同的斑点,需使用不同的高斯核进行卷积运算,单一参数的算子不能覆盖所有尺寸的弹孔。(3)MSER[8]检测法:MSER算法常用于连通区域检测(例如:斑点、文本等),David在文献[8]基础上,提出线性复杂度的MSER算法,成为目前普遍采用的方法[9]。文献[10]对图像灰度处理后,采用MSER算法检测斑点,通过最小二乘拟合椭圆排除不符合形状要求的区域。Donoser等人在文献[9]基础上,提出检测彩色区域的MSER算法[11],将图像转换至LUV色彩空间,计算ROI之间的巴氏距离(Bhattacharyya Distance),作为MSER中的约束值。

本文研究基于自然环境下胸环靶内新增弹孔的识别。帧间差分法虽然算法简单,但对靶纸颤动十分敏感。模板检测法中,采用单尺度的LoG、DoG及DoH检测弹孔可能无法检测重合弹孔区域。采用多尺度方式,不仅运算复杂度较高,而且可能将已经检测过的弹孔再次检测。MSER算法常用于自然环境下连通区域的检测,算法具有线性复杂度和仿射不变性的优势,因此本文采用MSER算法。针对MSER算法中参数随图像变化需要调整的问题,将MSER算法与文献[12]中基于积分图像的阈值自适应算法相结合,提出改进的MSER算法(MSER-I),使MSER算法在不同环境下检测弹孔时参数可自调节。通过透视变换[13]、弹孔特征及报靶记录,排除胸环靶外部候选区域、非弹孔区域及已报靶区域,识别出新增的弹孔。

1 MSER算法

MSER算法基于分水岭概念,将图像视为高低起伏的地面,像素灰度值大小代表地势高低,选取某一起始点开始注水,水会流入低地势区域。当水聚集到一个低洼区,继续注水,水位会上升。当水位越过分水线时,会流入其它低洼区,若水位继续上升,两个或两个以上的低洼区可能被合并[8]。

水面覆盖区域称为ER区,在同一ER区水位上升过程中,低水位区为子ER区,高水位区为父ER区。一个父ER区可能由多个子ER区合并而成,父ER区与子ER区形成树状结构,在树中仍保持原有的父子关系。针对ER区水位上升的历史记录,通过参数约束保留符合要求的ER区。

MSER算法中,由以下5个参数约束ER区的大小及稳定度:

(1)Amin:最小连通区域,限制ER区域最小尺寸。

(2)Amax:最大连通区域,限制ER区域最大尺寸。

(3)Vmax:区域间的最大稳定度。

(4)Delta:相邻ER区边界的灰度差。

(5)Dmin:约束父子ER区之间的尺寸变化率。

MSER算法中,每一个ER区的增长变量var可由公式(1)计算得到。若某个ER区的var值小于Vmax,这个ER区则为稳定区域。公式(1)中R(level)表示每个ER区灰度值小于等于level的像素点数。图1为ER区截面处灰度曲线,示意ER区的大小。

(1)

图1 连通域面积变化图

MSER算法运算步骤如下:

(1)选取起始点作为当前点;

(2)建立空ER区将当前点入栈;

(3)在当前像素4邻域内搜索,若任意邻域点灰度值低于当前点灰度值,返回步骤(2),否则,邻域点加入边界像素集合,重复步骤(3),直至所有邻域点访问结束,执行步骤(4);

(4)若边界像素集合为空,算法结束,否则执行步骤(5);

(5)弹出一个地势最低的边界像素,作为当前点,原本的当前点作为上一点,若当前点与上一点的像素灰度值相同,执行步骤(3),否则执行步骤(6);

(6)若当前点灰度小于栈中第二层像素元素灰度值,返回步骤(3),否则执行步骤(7);

(7)将水位升高1,合并栈顶两层的ER区,记录水位升高历史;

(8)若当前点灰度大于栈顶元素灰度,返回步骤(6),否则返回步骤(3)。

如图2所示为MSER算法流程图。

图2 MSER算法执行步骤

MSER算法无需对图像平滑、增强等预处理,可直接实现多尺度连通区域检测,具有较高的通用性。图3为LoG、DoG、DoH以及MSER算法检测弹孔的结果对比图。图3(a)为胸环靶原图,图3(b)采用单尺度的LoG算子检测弹孔,图3(c)采用多尺度的DoG算子检测弹孔。图3(b)与图3(c)均采用3×3的高斯核对图像卷积,在10环内的弹孔及靶环外的弹孔均能较准确地检测出,但在其他环内的弹孔检测效果不太理想。图3(d)采用DoH算子检测弹孔,部分弹孔无法检测出。图3(b)、3(c)及3(d)已检测的弹孔中,部分弹孔被重复检测,如图4所示。图3(e)为MSER算法检测弹孔的结果图,文中将检测的MSER区用淡色填充。弹孔均能被检测出,只有一些靶环文字区域被误检,精确率较高。

图3 不同算法弹孔检测结果的对比图

图4 DoH算法重复弹孔检测

由于狙击训练中,图像明暗会随时间推移而改变,对于不同图像,MSER算法中delta、Vmax值变化较大,为提升系统报靶性能及用户体验,需要改进MSER算法实现参数自适应功能。

2 MSER-I—MSER改进算法

根据MSER中参数变化的规律,结合基于积分图像的阈值自适应算法,提出了改进的MSER算法(MSER-I),使delta和Vmax可自适应。其余3个参数中,Amax和Amin(弹孔尺寸参数)根据弹孔尺寸确定。Dmin参数通过实验确定。经反复实验得出Dmin取0.5 可较好地提取不同图像中弹孔深色区域。

delta和Vmax分别描述ER区与其边缘的灰度差值以及ER区的稳定度,这两个参数与胸环靶图像的灰度对比度有密切的关系,胸环靶图像对比度越高,弹孔与靶面的灰度差越大,弹孔区域稳定度越高,因此可以将胸环靶与背景像素的平均灰度差值作为对比度参考。

2.1 基于积分图像的对比度计算

积分图像中任意像素的值为左上起始像素至当前像素构成的矩形区域内灰度值之和。若需计算灰度图中某区域内像素灰度值之和,可对积分图像查表,迅速获取结果。积分图像由式(2)计算,其中x代表行,y代表列,tij为灰度图像中第i行、第j列像素的灰度值,I(x,y)为积分图像中x行y列像素的值。图5(a)是数字图像中每个像素的灰度值,图5(b)是积分图像的像素值。

(2)

图5 积分图像矩阵

通过式(3)可计算任意矩形区域的灰度值之和sumGray。其中(x1,y1)是矩形区域内左上起始像素位置,(x2,y2)是矩形区域右下终止像素位置。如图6,D区域灰度值之和为9。

sumGray=I(x2,y2)-I(x2,y1-1)-I(x1-1,y2)+I(x1-1,y1-1)

(3)

图6 积分图像区域灰度值的和

基于积分图像的对比度算法适用于光照不均或不同灰度范围的图像,将各像素与其周围矩形区域像素的灰度值比较,获取胸环靶与背景像素。算法将灰度图中每个像素的灰度值curGray与其所在矩形区域内的像素点数之和sum值相乘,将得到的结果与sumGray比较,若结果小于sumGray,当前像素记为胸环靶像素,反之记为背景像素。i由式(4)确定,矩形区域长、宽均设定为原图的1/8。

sum=(x2-x1+1)×(y2-y1+1)

(4)

区分胸环靶与背景像素后,计算胸环靶与背景像素的平均灰度差,表示图像对比度,实现MSER算法中参数delta与Vmax自适应。

2.2 MSER-I参数自适应

本文在不同光照环境下,分别计算200帧图像中胸环靶与背景像素的平均灰度差ε,并统计每帧图像较理想的delta和Vmax取值。通过线性拟合与反比例曲线拟合,求解理想的delta、Vmax取值与ε的函数关系。图7为delta(ε)的拟合直线,delta取值为整数,当delta大于6时,弹孔检测结果基本不变,因此将delta值限定为6,图中虚线后方为分段函数delta=6。图8为Vmax(ε)的拟合曲线,Vmax为浮点数,最大值为1.0, 图中虚线前方为分段函数Vmax=1.0。

图7 ε与delta函数关系

图8 ε与Vmax函数关系

根据拟合曲线,ε与delta函数关系可以用式(5)表示,ε与Vmax函数关系可以用式(6)表示。

(5)

(6)

2.3 MSER-I弹孔尺寸参数的确定

参数Amax和Amin用于限定目标弹孔区域的尺寸。由于在训练场合摄像头放置的位置不固定,弹孔的尺寸(像素点数)不确定,因此Amax和Amin需要根据实际场合调整。通过计算弹孔像素点数Sb与胸环靶区域像素点数Sc的比值k,作为弹孔尺寸的一致性指标。弹孔像素点数Sb与胸环靶区域像素点数Sc可以通过试验获取。如图9所示,在胸环靶上取ABCDE特征点位置信息,假设经过E点的胸环靶边缘直线与BC平行,求解出胸环靶四边形边框的4个顶点坐标信息,据此计算胸环靶区域像素点数Sc。并在摄像头位置保持不变的情况下,对采集的图像统计各弹孔区域像素点数Sb,将像素点数的分布情况进行高斯拟合。

图9 采集胸环靶图像与标准胸环靶图像映射

本文统计140个弹孔的像素点数,计算得出k值分布情况,如图10所示,拟合的高斯分布均值μ为1.224×10-4,标准差σ为2.503×10-5。在本次试验中,Sc为593×577,根据3σ准则,式(7)和(8)计算出Amin=15,Amax=69。

Amin=(μ-3σ)×Sc-1

(7)

Amax=「(μ+3σ)×Sc⎤+1

(8)

图10 弹孔与胸环靶像素点数比例

执行MSER-I算法后,对于检测的弹孔候选区域,需进一步判断新增弹孔。

3 新增弹孔判断

MSER-I算法在检测弹孔候选区域时,会受到部分字符、靶环等非弹孔区域的干扰。对于候选弹孔区域,本文采用图11所示流程辨别真假弹孔:(1)通过透视变换将图9(a)中胸环靶内弹孔候选区域像素映射至标准胸环靶图9(b),以此排除胸环靶外的弹孔候选区域。(2)MSER-I算法基于灰度图,不同弹孔灰度差异较小,将弹孔灰度范围作为评判标准。遍历胸环靶内每个弹孔候选区域,若候选弹孔的平均灰度值在弹孔灰度范围内,判为弹孔区域,否则为非弹孔区域,以此将胸环靶内非弹孔区域排除。

图11 识别真假弹孔流程图

剩余的弹孔候选区域中,采用帧间差法排除MSER-I输出的弹孔图像已经报靶的弹孔,并判断是否有新增弹孔。本文使用胸环靶纸厚度为0.2 mm,风力和子弹冲击都会引起靶纸晃动,同一弹孔在时间轴上不同图像中的位置会有一定差异。将当前弹孔区域依次与已报靶的弹孔区域比较,若弹孔像素重合率大于已报弹孔的70%,判定为同一弹孔,反之判为新增弹孔。

4 算法验证与分析

图像处理中,评价一个算法好坏有两个指标:精准度P(Precision)和召回率R(Recall)。精准度反映了被判定为正例中真正的正例比重,召回率反映被判定的正例占总的正例的比重。例如图像中有100个弹孔,算法检测出120个候选域,其中80个是弹孔,40个不是弹孔,精准度P为80/120,召回率R为80/100。据公式(9),可用F这一指标描述P、R,若P、R中任意一值偏小,F值都会较小,而F值越大,算法性能越好。以此作为本文算法评判指标。

(9)

本文通过一组试验,评估MSER与MSER-I算法性能。图12给出了不同光照环境下使用自适应阈值的MSER-I弹孔检测结果。

图12 不同光照环境下MSER-I弹孔检测

表1给出9组MSER与MSER-I算法的数据对比,由表可知,F值在MSER-I中有明显提升,可见MSER-I算法相对更优。

表1 MSER算法改进前后数据对比

新增弹孔检测结果如图13所示,将新增弹孔内所有像素根据透视变换矩阵映射至标准胸环靶中,并将映射后的像素求取环数平均值,作为弹孔环数。

试验结果表明,本文弹孔检测精准度为83.78%,召回率为100%,F值为91.18%。

图13 自动报靶部分结果图

系统的时间指标方面,摄像头模块传输图像的帧率为30 fps。为进一步提升算法效率,本文通过帧间差快速定位可能的弹孔区域,在定位的区域中执行MSER-I,并根据上文提及的算法步骤识别新增弹孔,实际测试中,算法时延稳定在28 ms,可较有效地处理摄像头获取的每帧图像。

5 结束语

本文研究了基于MSER的弹孔识别算法,以改进的MSER算法检测弹孔候选区域,通过透视变换排除胸环靶外区域,根据弹孔尺寸、灰度等特征排除非弹孔区域,通过像素重合率排除已报靶的弹孔区域,识别新增弹孔。通过实践验证,算法在自然环境下检测新增弹孔,能够满足报靶的实时性。

猜你喜欢

弹孔像素点斑点
图像二值化处理硬件加速引擎的设计
斑点豹
基于局部相似性的特征匹配筛选算法
最后的弹孔
基于视频图像处理的弹孔检测提取算法研究∗
基于像素点筛选的舰船湍流尾迹检测算法
基于canvas的前端数据加密
Finding beauty in your scars Alexandra Heather Foss
摆脱病毒
闲趣一刻