技术领域
[0001] 本
发明涉及
计算机视觉技术领域,具体涉及一种网格背景下的高精度靶标识别检测方法。
背景技术
[0002] 随着无人机技术的不断发展,固定翼无人机自助回收方式主要包括空中勾取、伞降回收、撞网撞绳回收以及气囊减震回收和
反冲火箭等回收方式。其中撞网回收可使无人机减小因阵
风和地面撞击而造成的
机体及机载设备的损坏,同时,撞网回收还可以将无人机回收伞去掉,从而增加机上的任务
载荷或加大油量,延长续航时间。目前主要采用视觉引导的方式实现撞网回收,视觉引导部分的可靠性和精确性对于撞网回收有着决定性的作用,现有的撞网回收过程中视觉识别方法,存在以下问题有待解决:
[0003] (1)单纯的对准中心的
算法无法精确计算无人机与靶标降落网之间的距离,对撞网回收的策略提出了较高的要求。
[0004] (2)基于
颜色的靶标识别算法,抗阳光性能较差,同时容易颜色受相似靶标的干扰。
[0005] (3)基于ArUco Marker等二维码的识别算法,无法解决回收网的网格对靶标轮廓的影响问题。
[0006] 综上所述:
现有技术无法实现网格背景下的远距离高精度的识别。
发明内容
[0007] 有鉴于此,本发明提供了一种网格背景下的高精度靶标识别检测方法,能够实现网格背景下靶标的实时、高精度识别,为无人机撞网回收提供可靠的视觉导航信息。
[0008] 本发明提供了一种网格背景下的高精度靶标识别检测方法,包括如下步骤:
[0009] 步骤1,设计靶标;所述靶标为白色的、裁去一
角的
底板;底板上设有由多个相同图标规则排布形成的图标阵列;
[0010] 步骤2,
飞行器对靶标进行成像识别;具体地,
[0011] 步骤2.1,对当前
帧图像进行低通滤波后进行二值化处理;其中,二值分割
阈值在设定的阈值范围内循环梯度变化,每一帧选取一个阈值计算;初始帧的二值分割阈值设定为其阈值范围的最大值或最小值;
[0012] 步骤2.2,对二值化处理后的图像进行膨胀及
腐蚀;
[0013] 步骤2.3,对步骤2.2处理后的图像进行轮廓提取,并判断提取到的轮廓是否满足要求a)~c),若满足,则判断识别到靶标,执行步骤3;否则,判断未识别到靶标,提取下一帧图像,执行步骤2.1,并按步骤2.1的梯度变化规律设定下一帧的二值分割阈值;
[0014] 其中,要求a)~c)为:
[0015] a)提取到的外轮廓与设计的靶标底板外轮廓形状一致;
[0016] b)提取到的外轮廓的内部具有N个内轮廓,所有内轮廓的面积之和与外轮廓面积的比值为设计靶标中所有图标面积之和与底
板面积的比值的0.7~1.3倍;
[0017] c)设计靶标上位于同一直线上的图标所对应的内轮廓仍共线;
[0018] 步骤3,二值分割阈值更新:
[0019] 将当前帧识别出的靶标区域转成灰度直方图,然后根据下式更新二值化阈值:
[0020]
[0021] 其中,threshold为更新后的二值化阈值;i的取值范围为0~255;P(t)为灰度值为t的
像素的个数;Sblack为N个内轮廓的面积之和;Sall为靶标外轮廓的面积;
[0022] 步骤4,以上一帧识别到的靶标
位置为中心,确定并提取下一帧图像的感兴趣区域,并令下一帧的二值分割阈值为threshold,在感兴趣区域内按照步骤2的方式进行靶标识别;
[0023] 重复执行步骤3~步骤4,直到飞行器成功撞网。
[0024] 较佳的,所述步骤3中,根据上一帧识别到的靶标外轮廓的像素面积,确定目标尺度K的大小,根据K值,确定下一帧图像的感兴趣区域:
[0025] 若0<S≤4000,则K=1,提取下一帧图像的感兴趣区域为:感兴趣区域的中心与上一帧识别出的靶标区域的中心相同,且感兴趣区域的高度为上一帧靶标区域高度的七倍,宽度为上一帧靶标区域宽度的三倍;
[0026] 若4000<S≤30000,则K=2,提取下一帧图像的感兴趣区域为:感兴趣区域的中心与上一帧识别出的靶标区域的中心相同,且感兴趣区域的高度为上一帧靶标区域高度的五倍,宽度为上一帧靶标区域宽度的三倍;
[0027] 若30000<S≤80000,则K=3,提取下一帧图像的感兴趣区域为:感兴趣区域的中心与上一帧识别出的靶标区域的中心相同,且感兴趣区域的高度为上一帧靶标区域高度的三倍,宽度为上一帧靶标区域宽度的三倍;
[0028] 若S>80000,则K=4,对下一帧图像进行降
采样,对降采样后的图像进行靶标识别。
[0029] 较佳的,利用公式(4)计算获得修正后的二值化阈值后,将修正后的阈值和当前帧的二值化阈值进行平滑滤波,得到最优阈值,利用最优阈值按照步骤2的方式进行靶标识别。
[0030] 较佳的,所述步骤1中,底板外围设有黑色边框。
[0031] 较佳的,所述步骤2.1中,采用高斯滤波法进行低通滤波。
[0032] 较佳的,所述步骤2.1中,采用高斯滤波法进行低通滤波;并且在识别出靶标后,根据目标尺度设定下一帧滤波的高斯核大小;其中,高斯核大小与目标尺度成正相关。
[0033] 较佳的,所述步骤2.2中,膨胀的核小于腐蚀的核。
[0034] 较佳的,所述步骤2.3中,采用Canny
边缘检测算子进行轮廓提取。
[0035] 较佳的,所述步骤2.3中,采用如下方法确定内轮廓与靶标上图标的对应关系:
[0036] S1,分别计算N个内轮廓的中心与靶标外轮廓中心之间的距离,与外轮廓中心距离最短的内轮廓即对应靶标中位于中心位置的图标,记为中心图标;
[0037] S2,对靶标外轮廓进行多边形拟合,五边形
顶点中最近的两个顶点即为缺角处;N个内轮廓中,内轮廓中心距离上述两个顶点距离之和最短的内轮廓即对应靶标中最靠近缺角处的图标,记为0号图标;
[0038] S3,以中心图标为中心,以中心图标中心到0号图标中心的射线为极轴,转到极
坐标系,对其余内轮廓中心的极角进行冒泡排序,完成剩余内轮廓与靶标图标的对应。
[0039] 有益效果:
[0040] 本发明设计了一种靶标,并基于梯度搜索阈值和最优阈值更新的算法,获取合适的二值化阈值,并利用形态学滤波和粗细轮廓筛选算法实现在网状背景下靶标识别,同时为了实现实时检测,采用生成感兴趣区域和降采样的方式实现算法
加速,在无人机撞网回收过程中,本发明采用
图像处理的方式为导航提供位置解算信息,使得无人机可以实现自主回收的功能。
[0041] 本发明靶标
中底板上的N个图标的中心均可以在解算目标位置时进行使用,可确保目标位置的高精度解算。
附图说明
[0042] 图1为靶标示意图。
[0043] 图2为高斯滤波前后图像对比;其中,(a)原始图像;(b)高斯滤波后的图像。
[0044] 图3为OTSU二值化处理前后图像对比;其中,(a)原图;(b)二值化后图像。
[0045] 图4为靶标部分的二值化示意图;其中,(a)高斯滤波后的图像;(b)二值化后的图像。
[0046] 图5为膨胀原理示意图。
[0047] 图6为腐蚀原理示意图。
[0048] 图7为膨胀操作示意图;其中,(a)膨胀前的图像;(b)膨胀后的图像。
[0049] 图8为腐蚀操作示意图;其中,(a)腐蚀前的图像;(b)腐蚀后的图像。
[0050] 图9为边缘提取示意图;其中,(a)原图;(b)Canny边缘;(c)膨胀后的边缘。
[0051] 图10为共线检测示意图。
[0052] 图11为感兴趣区域示意图;其中,(a)上一帧图像靶标区域示意图;(b)下一帧图像感兴趣区域示意图。
[0053] 图12为靶标在边界的情况时的感兴趣区域提取。
具体实施方式
[0055] 下面结合附图并举
实施例,对本发明进行详细描述。
[0056] 本发明提供了一种网格背景下的高精度靶标识别检测方法,包括如下步骤:
[0057] 步骤一:设计靶标
[0058] 所述靶标为白色的、裁去一角的底板;底板上设有由多个相同图标规则排布形成的图标阵列;图标的尺寸、图标之间的间距已知。图标为圆形、矩形、六边形或星形等规则图形,为黑色。
[0059] 其中,为提高提取轮廓的可靠性,在底板外围加设黑色外框,更利于底板轮廓提取。
[0060] 如图1所示,靶标参数:底板为缺一角的白色正方形,图标阵列为由9个黑色圆形图标组成的标准矩形阵列,每个圆形图标的直径均为15cm,相邻图标圆心间间距为15cm,最外围圆形图标的圆心与黑色外框的内边界之间的间距为15cm,缺角的长度为15cm。
[0061] 设计完靶标后,则利用设计的靶标实现飞行器在飞行过程中的靶标识别,识别过程如图13所示,本实施例以图1所示的靶标为例,具体说明如下:
[0062] 步骤二:飞行器在飞行过程中对拍摄到的图像进行靶标识别,具体包括如下子步骤:
[0063] 步骤2.1,对图像进行低通滤波,降低噪声对识别的影响,实现对网格的模糊处理;然后对低通滤波后的图像进行二值化处理;
[0064] (1)低通滤波
[0065] 可以采用高斯滤波、中值滤波等方法实现对网格的模糊处理。其中高斯模糊是一个低通
滤波器具有较为平滑的优点,被广泛用在图像降噪上。在边缘检测之前,高斯滤波常用来移除细节。本实施例采用高斯滤波,在OpenCV中可通过函数GaussianBlur进行操作。高斯滤波结果如图2所示,其中,当靶标已经被识别到后,可以根据每帧图像中目标(靶标)尺度选择合适的高斯核,标准为:高斯核的大小与目标尺度成正相关,这样有利于保证在模糊线的同时不影响圆心的提取。而由于初始飞行高度较高,初始高斯核可选择为3×3,过大的高斯核会模糊,导致识别效果变差。
[0066] (2)二值化处理
[0067] 利用设定的分割阈值对低通滤波后的图像进行二值分割;其中,目前最为常见的阈值选择算法为最大类间方差法,最大类间方差法是由日本学者大津(Nobuyuki Otsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。但该算法具有一定的局限性,无法在大背景场景中分割出小物体,比如想识别出场景中的靶标,利用大津法获取的阈值进行二值化后,只能区分路面与人行道,无法准确分割出靶标的区域,如图3所示。
[0068] 因此,本发明提出一个循环寻找阈值的算法,以适应不同的场景。循环搜索算法是首先确定一个阈值变化范围,在该范围内按照一定灰度间距进行测试,由于相机
分辨率较高,在滤波消除噪声的过程中计算量较大,因此每一帧只进行一个阈值的测试。如图4所示。例如,设定阈值变化范围为[120,200],设定阈值变化梯度为20,则可以从120开始,设定下一帧的二值化阈值比上一帧增加20,若上一帧二值化阈值已经达到200则下一帧的二值化阈值重新设置为120。也可以由200梯度变化到120。利用这种阈值循环梯度变化的方法,确定最佳二值分割效果的分割阈值。在变化梯度的选择上,可根据具体情况判断,如果飞行器飞行速度较慢则可以选择较小的间距保证识别精度,如果飞行器飞行速度较快则选择较大的间距,一般间距的选择为5、10、15或20。
[0069] 此外,在实际飞行过程中,可能会存在个别帧由于遮挡等复杂环境因素导致识别不到的情况,因此设置一个阈值,当连续识别不到的次数超过该值后,按照最开始搜索阈值的方式重新开始循环寻找合适的阈值。
[0070] 步骤2.2,利用形态学滤波完成网格的消除。
[0071] 形态学滤波主要包括腐蚀和膨胀。
[0072] 首先介绍一下腐蚀与膨胀的概念:腐蚀和膨胀是对高
亮度区域而言,膨胀后的图比原图有更大的高亮区域,腐蚀则与之相反。按数学方面来说,膨胀或者腐蚀操作就是将图像(或图像的一部分区域,称之为A)与核(称之为B)进行卷积。核可以是任何的形状和大小,它拥有一个单独定义出来的参考点,称其为
锚点(anchorpoint)。多数情况下,核是一个小的中间带有参考点和实心正方形或者圆盘,因此,可以把核视为模板或者掩码。
[0073] 膨胀就是求局部最大值的操作,核B与图形A卷积,即计算核B
覆盖的区域A的像素点的最大值,并把这个最大值赋值给参考点
指定的像素。这样就会使图像A中的高亮区域逐渐增长,如5图所示,这就是膨胀操作的初衷。而腐蚀就是求局部极小值的操作,核B与图形A卷积,即计算核B覆盖的区域A的像素点的最小值,并把这个最小值赋值给参考点指定的像素。
[0074] 膨胀的数学表达式:
[0075]
[0076] 腐蚀的数学表达式:
[0077]
[0078] 腐蚀原理示意图如图6所示。
[0079] 本实施例采用先膨胀后腐蚀的方法对二值化图像进行形态学滤波处理,采用先膨胀后腐蚀,可以保证远距离识别时靶标边缘不被
消融。并且,本实施例采用小核膨胀大核腐蚀的方法,先进行3×3的核进行膨胀,再利用5×5的核进行将网格的残余点消除,这样做可以避免在靶标很小的情况下,如果直接利用5×5的核进行网格消除容易出现消除过多的情况。
[0080] 膨胀操作示意图如图7所示,腐蚀操作示意图如图8所示。
[0081] 步骤2.3,进行轮廓提取
[0082] 经步骤2.2处理后,已经消除了背景网格,在此
基础上,进行靶标底板及底板上图标的轮廓提取。其中,可以利用Canny边缘检测算子、Laplacian算子、Sobels算子等方法提取边缘;其中,Canny边缘检测算子是John F.Canny于1986年开发出来的一个多级边缘检测算法。更为重要的是Canny创立了边缘检测计算理论(Computational theory ofedge detection),解释了这项技术是如何工作的。Canny边缘检测算法以Canny的名字命名,被很多人推崇为当今最优的边缘检测的算法。本实施例采用Canny边缘检测算子。
[0083] 提取的边缘由于非极大值抑制的问题,存在不连续的情况,因此在进行轮廓提取前,对轮廓进行膨胀处理,继而完成轮廓提取,在轮廓提取过程中只考虑图形的外部轮廓。边缘提取示意图如图9所示。
[0084] 步骤2.4,对提取的轮廓进行筛选,从而提取出靶标。本发明设计了粗筛选和精筛选,解决了候选靶标轮廓高效筛选的问题。
[0085] (1)对提取的图像进行粗筛选:
[0086] 首先,检测提取到的外轮廓是否与设计的靶标底板外轮廓形状一致;然后,检测外轮廓内部是否具有N个内轮廓(N为靶标中图形的个数),且所有内轮廓的面积之和与外轮廓面积的比值为设计靶标中所有图标面积之和与底板面积的比值的0.7~1.3倍。由靶标可知,每个圆形在靶标中所占的比例是一定的,假设为m%,若检测的N个内轮廓的面积均满足:为整个靶标外轮廓面积的0.7*m%~1.3*m%,则判断为提取到可靠的轮廓。拟合出这N个内轮廓的圆心坐标,并确定这N个内轮廓与靶标中图标的对应关系。
[0087] 其中,本发明采用如下方法实现九个内轮廓与靶标中图标阵列中各图标的对应:
[0088] i)根据九个圆心坐标与外部轮廓中心之间的距离,寻找与外部轮廓中心坐标距离最短的圆心坐标,该圆心即为靶标中的4号图标所对应的圆心。
[0089] ii)对外部轮廓进行多边形拟合,五边形顶点中最近的两个顶点为缺角处,距离上述两个顶点距离之和最近的点为0号图标所对应的圆心。
[0090] iii)利用冒泡排序法对九个点进行排序:以4号圆心为中心,以4号圆心到0号圆心的射线为极轴,转到极坐标系,对其余圆心的极角进行冒泡排序,按照顺
时针为正的方式从小到大进行排列,从而将其余圆心与图标阵列中的1、2、3、5、6、7、8号图标对应上。
[0091] (2)对提取的图像进行细检测:
[0092] 利用透视变换的保线性,即空间中在一条直线的三点,在图像中仍在一条线上,以此对共线圆心点进行循环检测,以增加系统的鲁棒性。即算法检测如图10中的八条线(横向三条、纵向三条和斜向两条)是否仍为直线。
[0093] 若各圆心对应的共线关系均不变,则判断识别出靶标,提取下一帧执行步骤三;否则,判断未识别出靶标,提取下一帧图像,执行步骤2.1,并按步骤2.1的梯度变化规律设定下一帧的二值化阈值。
[0094] 此外,若上一帧图像已经识别出靶标,则可以利用帧间信息提取下一帧的感兴趣区域,下一帧中在感兴趣区域内利用步骤二的方式进行靶标识别,直到飞行器撞网,结束靶标识别;这样可以直接在下一帧图像中的重点关注区域(感兴趣区域)进行靶标识别,提高靶标识别的识别速度,确保算法的实时性。此外,当前帧识别出靶标后,在下一帧中,还可以利用靶标的黑白比例对上一帧的二值分割阈值进行更新,下一帧识别时采用更新后的二值分割阈值进行
图像分割,二值化分割效果更好,且提高抗环境变化干扰;即,识别出靶标后,下一帧图像采用步骤三~步骤四的方式进行:
[0095] 步骤三,检测成功后进行阈值更新:
[0096] 因为靶标的形状及尺寸是已知的,其最优二值分割阈值为二值化后图像中靶标与实际靶标,黑白区域比例一致,于是将上一帧识别出的靶标区域转成灰度直方图,利用九个圆心占整个靶标的比例寻找更合适的阈值,阈值更新算法如式(3)所示,利用公式(3)更新后的阈值作为下一帧的二值分割阈值。此外,为了避免阈值震荡的过于激烈对修正后的阈值进行平滑滤波,得到最优阈值,利用最优阈值进行下一帧的二值化分割。
[0097]
[0098] 其中,threshold为修正后的阈值;i为0~255中间的灰度值;P(t)为灰度值为t的像素的个数;Sblack为靶标内部黑色区域面积;Sall为靶标面积。
[0099] 步骤四:利用帧间信息生成感兴趣区域和降采样算法保证实时性。
[0100] 针对2048×2048的高分辨率图像,进行全局的图像滤波处理是极其耗费计算资源的,这样是无法保证系统的实时性。
[0101] 因此,如果前一帧识别到靶标,则根据前一帧检测到的靶标区域,根据帧间信息,划定本帧的感兴趣区域,本帧在感兴趣区域内按照步骤二的方式进行靶标识别,提高识别速度,确保识别的实时性,本帧识别过程中的二值分割阈值为更新后的二值分割阈值threshold。
[0102] 重复执行步骤三~步骤四,直到飞行器成功撞网。
[0103] 此外,步骤四中,根据上一帧靶标像素面积进行分尺度,根据尺度的不同,分别提取不同大小的感兴趣区域,能进一步提高识别速度。尺度可按照如下方法进行划分:
[0104]
[0105] 其中,K为目标尺度;S为上一帧靶标像素面积,即上一帧图像中靶标的外轮廓像素面积。
[0106] 下一帧根据尺度的不同,生成不同的感兴趣区域,如图11所示:黑色区域为上一帧提取的靶标的最小外接四边形;灰色区域为下一帧的感兴趣区域(ROI);
[0107] 当目标尺度为1时:
[0108] 靶标在非边界的情况,保证黑色区域的中心与灰色区域的中心相同,灰色区域的高度为黑色区域的七倍,宽度为黑色区域的三倍。
[0109] 当目标尺度为2时:
[0110] 靶标在非边界的情况,保证黑色区域的中心与灰色区域的中心相同,灰色区域的高度为黑色区域的五倍,宽度为黑色区域的三倍。
[0111] 当目标尺度为3时:
[0112] 靶标在非边界的情况,保证黑色区域的中心与灰色区域的中心相同,灰色区域的高度为黑色区域的三倍,宽度为黑色区域的三倍。
[0113] 当目标尺度为4时:
[0114] 图像中靶标的尺寸在使用降采样的情况下仍可以被识别,同时继续使用感兴趣区域的方法无法保证实时性,因此使用降采样的方法将下一帧获取的图像的横纵轴坐标缩小为四分之一,然后进行识别。
[0115] 而对于靶标在边界的情况,先按照与不在边界情况生成感兴趣区域,再在获取的图像内部补全超出图像边界的区域,超出图像的部分即图12(b)中短线包围区域以保证感兴趣区域的高度和宽度与靶标不在边界的情况一致,图像的内部白色区域为补充部分如图12(c)所示。图12(a)中黑色为上一帧的靶标区域。
[0116] 有关实时性的测试,在使用Intel Corei5-6400HQ处理器,同时不使用任何GPU加速的情况下,成功识别后,每帧的运算的平均时间为30ms。
[0117] 综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何
修改、等同替换、改进等,均应包含在本发明的保护范围之内。