任永强,李 润,李掌珠
(合肥工业大学机械工程学院,合肥 230009)
图像配准作为图像处理中的一项基本技术,其主要用于求解不同传感器、不同视角、不同时间获取的图像的最佳几何变换,在目标识别、图像诊断、图像拼接、缺陷检测等领域有着广泛应用。其中图像特征点的提取与匹配是图像配准的关键步骤。
常用的特征点提取方法有SIFT(scale invariant feature transform)、SURF(speeded up robust features)、ORB(oriented fast and rotated brief)和AKAZE算法[1]。目前在工业中,ORB算法由于检测特征点速度快的优点被广泛应用。钟鹏程等[2]提出将ORB和SURF相结合的方法完成图像匹配,虽然鲁棒性增加了,但是提取的特征点较少且出现“簇集”现象。成怡等[3]利用余弦相似度改进ORB算法,提高精确度的同时,增加了运行时间。针对标准ORB算法分布不均匀的问题,RAúL[4]等在ORB_SLAM2中提出Qtree_ORB(quadtree-based ORB algorithm)算法,采用四叉树对特征点进行均匀化,但是标准Qtree_ORB存在四叉树过度分割,部分特征点质量较差的情况。廖泓真等[5]使用四叉树均匀化特征点,并采用GMS筛选匹配点对,但是四叉树过度分割的情况没有得到改善,并且精度达不到缺陷检测的要求。针对上述问题,本文在Qtree_ORB算法的基础上,设定Harris响应阈值在进行四叉树划分前筛选部分特征点并在原有的基础上增加划分深度判定条件,在提取特征点后使用融合的特征点描述符进行描述,通过空间余弦值进行预筛选并利用PROSAC算法得到强匹配点和变换矩阵,最后如果得到的变换矩阵不能满足检测要求,可以使用RMSProp算法对矩阵进行优化,得到更为精确的图像变换矩阵。实验结果表明,该方法提高了电池包图像配准的精度,算法效率满足工业检测要求,能有效的完成电池包焊点的缺陷检测,具有实际意义。
图1 预处理对比图
在使用Qtree_ORB算法进行特征点提取前,需要对电池包图像进行预处理,其目的是减少图像噪声和突出图像细节。通过对灰度图像的分析,图像中主要存在椒盐噪声,选择对椒盐噪声具有较强过滤作用的中值滤波,在去除噪声的同时较好的保留图像的边缘特征。经滤波处理后的图像部分细节被模糊,在进行特征提起前,需要先通过图像锐化处理来突出图像中的细节,本文通过拉普拉斯算子对图像进行锐化处理。处理后的图像如图1所示。
标准的ORB算法因为实时性较好得到广泛的应用,但是标准ORB算法提取的特征点容易产生“簇集”现象,大多数特征点会集中在纹理信息较强的区域,其他区域的特征点数目较少,所提取的特征点并不能反映图像的整体信息,不利于后续的特征点匹配和图像配准。对于Qtree_ORB算法,通过四叉树对特征点进行均匀化处理,同时采用自适应阈值的方法对ORB进行了改进,虽然该算法在一定程度上缓解了上述问题,但是存在算法迭代次数过多和部分特征点质量较差的缺陷[6-7]。针对此类问题,本文使用改进的Qtree_ORB算法对特征点进行提取和描述。
ORB主要包括oFAST(oriented features from accelerated segment test)和rBRIEF(rotation-aware brief),分别是特征检测的算法和生成特征描述符的算法。
oFAST算法是任选图像中一点P为圆心,以3个像素为半径的圆上16个像素点与圆心P的灰度差来提取角点。如果圆周上有N个连续像素点的灰度值与圆心P的差大于某一阈值t,则将圆心像素点P作为候选特征点,判断公式为:
(1)
为实现特征点的尺度不变性和旋转不变性,还需分别使用图像金字塔和灰度质心法。图像金字塔是单个图像的多尺度表示法,由一系列原始图像的不同分辨率版本组成,每个级别都由上个级别的图像下采样完成,通过在金字塔每个级别的图像中检测特征点,使得到的特征点具有尺度不变性。灰度质心法赋予特征点一个主方向,通过主方向对特征点的描述子进行旋转,使其具有旋转不变性。
rBRIEF算法提取的是一种二进制描述符,主要通过比较中心像素点p任意领域内的n对像素之间的差值,表达式为:
(2)
二进制描述符可以表述为:
fn(p)=∑1≤i≤n2i-1τ(p:xi,yi)
(3)
将点对集合转换为2×n矩阵A,其中A为:
(4)
由特征点的主方向θ,确定旋转向量Rθ,对矩阵A进行旋转,可得到矩阵Aθ:
(5)
Qtree_ORB算法以ORB算法为基础,主要包括以下几个部分:①首先对图像采用下采样的方式构建图像金字塔,为图像增加尺度信息;②对每一层图像金字塔进行网格划分,并进行FAST角点提取,提取的过程中通过自适应阈值的方式,提取到更多的特征点;③最后通过四叉树均匀的提取特征点,实现对特征点的筛选。四叉树的原理是二维空间数据递归划分为不同层次的树结构[8],首先初始化四叉树节点,令该节点为父节点,然后划分节点,若节点中没有特征点则删除节点,若节点为1则不继续划分,节点个数超过1则以该节点为父节点继续划分,多次迭代后保留节点中响应值最大的特征点,原理如图2所示。
图2 四叉树原理图
标准的Qtree_ORB算法会保留部分质量较差的特征点,影响图像配准的效率和精度。基于此,本文对Qtree_ORB算法进行改进,在FAST角点提取后,由于自适应的阈值的存在,会有较多的质量较差的点被分为特征点候选点,在进行四叉树均匀化之前,通过设定Harris[9]响应阈值的方式删除部分质量较差特征点,增加四叉树运算的效率,减少不必要的分支。
同时标准算法会存在迭代次数过多的缺陷,针对此类问题,本文在原有的基础上增加限定条件,通过限定整个算法四叉树的迭代次数的方式避免算法迭代次数过多。传统四叉树的结束条件为,通过判断每一层有效的节点数(node)和最大特征点数的差值或者分隔到不能分割为止。每层图像金字塔的特征点最大数量根据面积均匀分配,图像金字塔的总面积为:
s=HW(s2)0+HW(s2)1+…+HW(s2)m-1
(6)
单位面积应分配的特征点数量为:
(7)
由此得出第i层应分配的特征点数量为:
(8)
式中,N为提取的特征点总数;m为金字塔总层数;W为图像的宽;H为图像的高;S为图像金字塔的缩放因子。
通过特征点的数量作为判定条件难以控制四叉树的划分深度,本文增加四叉树总体划分次数的判定条件,通过特征点总数计算出整体划分深度,表达式为:
N=4(D+α)δ
(9)
式中,D为四叉树划分深度;α为位移系数;δ为修正系数。得到的D为图像金字塔的总划分次数,经过多次下采样后,图像的信息丢失严重,所以优先满足上层图像金字塔的四叉树均匀化。拟合曲线如图3所示,其中α取11.0,δ取0.148,经计算得到的D向上取整。
图3 修正系数拟合图
改进的四叉树的工作流程如图4所示。
图4 改进四叉树算法流程图
传统ORB算法中,通过rBRIEF算法提取二进制描述,具有较高的快速性和实时性,但是算法仅仅使用了图像的灰度信息,在匹配数据较大时不具备鲁棒性和区分性没有充分地使用图像信息且对噪声较为敏感[10]。本文提出LDB(local difference binary)和MB-LBP(multiscale block LBP)描述符融合的方式对特征点进行描述,充分利用图像信息。首先对图像进行高斯掩膜,对噪声进行抑制,然后使用LDB算法和MB-LBP算法分别提取特征点描述符,最后将两个二进制描述符进行拼接融合,形成新的特征描述符。
LDB描述符除了运用图像灰度同时还引入了垂直和水平方向均值信息。大致过程为:相对于BRIEF算法,利用特征点主方向对图像区域进行校正,将二值测试单元扩大为一个子区域,同时将子区域划分为网格,以尺度系数进行多重采样得到一系列的网格区域,通过计算网格的水平和垂直方向的导数得到二进制描述子,此时描述符的维度增加到了3 bit,增强了描述符的可区分性。
MB-LBP(local binary pattern,多尺度局部二值模式)是一种用来描述图像局部纹理特征的算子,它具有旋转不变性和灰度不变性等优点。针对传统LBP特征描述对噪声敏感,与LDB类似利用主方向校正后通过图像块的方式,用小区域的灰度等级的平均值作为当前区域的灰度值,与周围的灰度进行比较。本文在传统的MB-LBP描述符的基础上增加描述符的维度,以特征点为中心,提取27×27像素大小的区域,对区域进一步划分为3×3的主块,每个主块大小为9×9像素,对每个主块再次进行划分为3×3的次块,每个次块的大小为3×3像素。计算每一个次块灰度的平均值,并以此灰度值代替每一个次块的灰度值,在每一个主块中计算LBP描述符,并由此生成72维MB-LBP特征的二进制描述符。原理图如图5所示。
图5 MB-LBP原理图
使用改进Qtree_ORB算法对电池包图像进行特征点提取,结果如图6所示,可以看到特征点较为均匀,能较大程度概括图片的信息。然后根据特征点周围的像素值和纹理信息得到特征点对应的特征描述子。
图6 Qtree_ORB特征点
图像配准中的关键步骤是得到图像之间的变换矩阵H,变换矩阵H是一个3×3矩阵,归一化后有8个参数求解,所以至少需要提供4对特征匹配点对,才能求解出变换矩阵H[11]。本文提出使用PROSAC算法方法计算图像的变换矩阵,变换方程为:
(10)
提取到的特征点通过汉明距离进行匹配获得粗匹配集合,匹配结果如图7所示,汉明距离是通过记录两个字符串对应位置的不同字符的个数来判断两个字符串之间的相似度。汉明距离匹配具有速度快的特点,但同时也带来了较多的错误匹配。传统的剔除错误匹配的方式是运用随机抽样一致性算法(RANSAC),但RANSAC在计算误匹配较多的模型参数时,其迭代次数变多,效率变低,且计算出的结果并非一定为最佳参数。针对上述问题,本文使用PROSAC算法对匹配点对进行筛选,并且在筛选前通过匹配点对的空间余弦值对粗匹配进行预筛选,剔除大部分错误匹配,缩短筛选时间。
通过空间中使用两个向量之间的余弦值来衡量向量之间的相似度,与汉明距离反映两向量在对应数值位置的相似度不同,余弦值反映的是两向量在方向上的差异性,通过余弦值进行筛选可更好的利用描述符中的特征信息。计算为:
(11)
式中,a、b为匹配点对的描述符向量;cosθ为描述符向量之间的余弦值,余弦值越大,表示两个描述符向量之间角度越小,描述符也就越相似。通过设置阈值的方式进行预筛选,删除部分误匹配点对,阈值一般设置为余弦值的平均值,结果如图8所示。
图7 初始匹配 图8 预筛选匹配图
PROSAC算法是一种补偿随机抽样一致性算法的随机性算法[12],相对于RANSAC可减少迭代次数提高运算的效率和准确率,具体过程如下:
(1)使用汉明距离得到匹配点对以后,使用空间余弦值对粗匹配特征点对进行预筛选。
(2)设置PROSAC算法相关参数,最大迭代次数,内点的误差范围,内点数量等参数。
(3)在经过空间余弦值筛选过的匹配点对中,按照匹配质量进行升序排列,选取匹配质量排列在前的m个匹配点对,从m个匹配点对中随机抽取四个点对,计算变换矩阵,由得到的变换矩阵计算其余匹配点与投影点的误差,如果误差在允许的范围内,则判定为内点,否则判定为外点。在遍历完所有的匹配点对后,统计内点的数量。
(4)重复执行(3)直到迭代次数达到预先设定的最大迭代次数,返回内点数量最多的一组匹配点对集合。
(5)判断内点数量是否大于预先设定的临界值,如果小于则返回(3)且迭代次数加一。如果大于临界值,则完成迭代输出匹配点对集合,并得到对应的图像变换矩阵H。
在上述的算法中,由于存在预筛选的过程,样本属于内点的概率大大增加,可以大幅降低迭代次数,相对于传统的RANSAC可以大幅降低运行时间,提高工业检测效率,同时提高结果的准确性。
经过PROSAC算法计算后,得到内点集合和变换矩阵H,经计算得到的变换矩阵已经可以满足一般检测的要求,但是由于在选取内点时有误差阈值的存在,变换矩阵的精度可能存在不满足要求的情况,严重的情况甚至影响后续的误差检测。因此在检测过程中,出现检测失败现象时,可以使用RMSProp算法进一步获取更为精确的变换矩阵H,再次进行检测。
算法中将标准图中的特征点作为标签数据,待检测图片中的特征点作为训练数据,由此得到损失函数J(H)和参数更新方程为:
(12)
指数加权平均数为:
SdH=βSdH+(1-β)dH2
(13)
参数更新方程为:
(14)
式中,m为内点集合中特征点个数;∂为学习率;β为常数,控制着指数加权平均数;δ为常数,一般较小可取0,用于保持数值稳定;SdH为指数加权平均数。RMSProp算法在收敛的过程中能大幅减少震荡,收敛速度较快。
本文试验环境为:Ubuntu18系统,AMD R5处理器,算法实现采用C++编程语言,调用了OpenCV4.4开源库。实验使用的图片来自某公司工业生产线上的电池包图片。通过采用多组图片在不同条件的图像配准实验来对比本文算法,以下是其中一组在不同光照配准图片,本文仅验证在光照缺乏情况下算法的可行性,提取特征点略少于光照充足情况,分别使用本文算法、Qtree_ORB+RANSAC和ORB+RANSAC算法,实验结果如图9所示。本文算法在光照均匀和光照缺乏条件下的实验结果如图9a、图9b所示,弱光条件下不存在明显的误匹配点对,本文算法具有一定的抗光照变化能力、尺度不变性和旋转不变性。图9c和图9d为传统Qtree_ORB算法实验结果,由于缺少对特征点的筛选,存在少数的误匹配,算法效率较低。图9e和图9f为传统ORB算法试验结果,出现了特征点聚集现象,不能充分反映图片信息,配准精确度难以保证。
(a) 光照均匀下本文算法 (b) 光照缺乏下本文算法
(c) 光照均匀下Qtree_ORB算法 (d) 光照缺乏下Qtree_ORB算法
(e) 光照均匀下ORB算法 (f) 光照缺乏下ORB算法
分别使用3种算法在光照充足情况下得到的图像变换矩阵为:
为验证本文算法在求出的变换矩阵的准确性,本文采用图像作差的方式,经过形态学处理后,将作差后图像中的最大区域的轮廓面积作为评价变换矩阵的精确度指标,实验结果如表1所示。
表1 实验数据对比
图10 工程实践图(截取缺陷部分图像)
从表1和图9得到,传统Qtree_ORB+RANSAC算法相比ORB+RANSAC算法变换矩阵的精度相差无几,同时匹配点对的分布也较为均匀,传统的ORB+RANSAC算法出现了特征点聚集的现象,这主要得益于使用四叉树均匀特征点,但是该算法整体较为复杂,相对存在较多质量较差匹配点和匹配点对,筛选时间较长,运行效率较低,匹配运行时间较传统算法增加了29.1%。本文算法通过设定Harris阈值和特征融合的方式进一步提高变换矩阵精度的同时,通过限定四叉树划分深度和引入预处理的方式提高运算效率,匹配运行时间相对Qtree_ORB+RANSAC算法降低了13.0%,可以使电池包图像配准更加精准迅速。本文算法在特征点提取和描述子计算阶段增加了四叉树均匀化算法和计算LBP描述子,算法的整体运行时间相较于ORB+RANSAC算法有所提高,但是满足工业检测要求,工程中应用结果如图10所示。当出现电池包焊点缺失的情况时,出现巨大白色区域,通过白色区域的大小判断电池包是否符合工程要求。
本文提出一种基于改进Qtree_ORB算法和PROSAC相结合的优化方法来解决电池包焊点缺陷检测中的图像配准精度问题。首先使用图像预处理去除图像噪声并增强图像相关细节信息,通过改进Qtree_ORB特征检测算法提取出电池包标准图像和待测图像的特征点和描述符,利用匹配点对的空间余弦值初步去除误匹配点对,再通过PROSAC算法能够快速获得强匹配点对以及对应的图像变换矩阵,同时也可以使用RMSProp优化算法进一步优化出精确的变换矩阵,实验结果表明,本文算法能够有效提升图像变换矩阵的精度且配准速度较快,能够满足工业上电池包焊点缺陷检测的要求。本文算法,在一定程度上也适用于其他的图像配准场景,具有较强的实用性。