温锦彬,黄 政
(中海油能源发展装备技术有限公司南海工程分公司,广东湛江 524057)
ORB 算法的操作步骤如下:①从图像中查找关键点;②为每个关键点构建只包括0和1的二元特征向量;③通过多个特征向量对更大区域或特定对象进行识别。ORB 算法运算高效,同时不受噪点和图像变换的影响,具有较高的准确性。
FAST 可以快速选择关键点,算法步骤如下。(1)确定选定特征点的阈值参数h的数值。
(2)对图像上任意一个像素点p而言,以点p为圆心的圆圈范围中的16个像素,如果圆圈上灰度值小于lp-h(lp 即p 点灰度值)或灰度值大于lp+h的像素共计有8个以上,则将像素p选作关键点。
FAST 寻找关键点的效率较高,根本原因为其在确定关键点时仅将p与4 个等距像素进行比较,相比与16个周围像素进行比较,效率提升了4 倍。由FAST 确定特征点算法可以看出,FAST 确定的关键特征点位于灰度有快速变化的区域,此类区域通常为某种边缘[1]。
BRIEF 算法生成特征描述符的具体步骤如下。
(1)对图像进行平滑处理,降低描述符对高频噪点敏感性。
(2)对给定关键点,在以该关键点为中心的高斯分布范围内抽取一个像素,将该点称作关键点的一号点,标准差为σ。
(3)在以一号点为中心的高斯分布范围内抽取一个像素,将该点称作关键点的二号点,标准差为σ/2,这种选择可以提高特征匹配率。
(4)为关键点构建二进制特征描述符,比较(2)和(3)得到的一号点和二号点的灰度值。如果一号点比二号点亮,则描述符中相应位分配值为1,否则分配值为0。
(5)对同一关键点选择新的一号点和二号点,基于比较结果为特征向量中下个位分配1或0。
(6)对设定生成不同维度的具体程序,BRIEF 算法会重复对应次数,产生指定长度的特征描述符。
BRIEF 算法可以为关键点构建二进制特征描述符,但不具备图像缩放旋转不变性,故不能直接用于要求较高的图像匹配。为克服这一缺点,对BRIEF作下述改进。
1284 Relationship of learning burnout and subjective well-being of military medical university students and the mediating role of psychological capital
(1)缩放不变性。为使特征满足缩放不变性,BRIEF 算法构建了图像金字塔。图像金字塔是单个图像的多尺度表示,每个级别都由上个级别的下采样版本组成[2]。下采样是指图像分辨率被降低,如图像按1/2比例下采样。因此一开始4×4正方形区域现在变成2×2正方形,图像下采样包含更少像素。
ORB 创建好图像金字塔后,通过FAST 算法从各个级别图像中快速找到关键点。金字塔每个级别由原始图像更小版本组成,因此原始图像中的任何对象在金字塔每个级别也会降低大小。通过确定每个级别的关键点,ORB 便实现了部分缩放不变性。
(2)旋转不变性。为满足特征旋转不变性,ORB为每个关键点分配了一个方向,该方向取决于关键点周围灰度的变化情况。在运算时ORB 首先选择级别最低图像,计算该图像关键点的方向。首先计算以该关键点为中心的指定大小方框中的强度形心,将其作为给定区域平均像素灰度的位置。之后画一条从关键点到强度形心的向量,获得该关键点的方向。
为金字塔最低级别图像中的每个关键点分配方向后,依次对其他级别图像重复相同流程。需注意,在每个图像金字塔级别,关键点周围用于确认方向的区域大小并没有缩减,因此相同区域在每个金字塔级别覆盖的图像区域将更大,导致关键点大小各不相同。
(3)使用修改后的BRIEF 版本创建特征向量。无论对象方向如何,其都可以为关键点创建相同向量,使得ORB 算法具有旋转不变性。这意味着其可以在朝着任何角度旋转的图像中检测到相同关键点。其操作步骤如下:①在给定关键点周围的已界定区域中随机选择256个像素对,构建256维的位向量;②基于关键点方向角度对随机像素对进行旋转;③对比随机像素对的亮度并相应地分配1和0,创建对应的特征向量。
高斯滤波器可以降低图像中的噪点。滤波后的结果图像中的纹理和次要细节、噪声等得到有效抑制,仅留下图像的边缘和轮廓特征。得到不同尺度和不同高斯模板的降采样高斯滤波结果后,已经滤除了大部分无用信息,但图像轮廓等特征信息有待进一步凸显。为进一步削弱图像无用信息、凸显特征,对同一尺度下不同高斯模板滤波的图像进行差分(两两相减)[4]。经过差分得到的结果图像相较于之前更能凸显图像特征,图像无用成分进一步缩减,代表图像特征的边缘、轮廓成分被进一步凸显。
在获得高斯差分金字塔后,应利用高斯差分金字塔中的图像特征信息确定图像特征点。SIFT 算法选择高斯差分金字塔中的极值点作为代表图像特征的关键点。选出的高斯差分金字塔极值点只是候选特征点。虽然高斯差分金字塔极值点已经能够较好代表图像特征并且具有尺度不变性,但在选取过程中没有考虑图像特征点对于图像噪声的鲁棒性,这样确定出的图像特征点在实际应用时易出现图像匹配不当等问题。
为提高图像特征点对噪声的鲁棒性,SIFT 算法通常做法是对比测试和边缘测试。对比测试是指为解决对比度较低的极值点,对所有极值点进行二阶泰勒展开,如果结果值小于0.03,则剔除该关键点。边缘测试是指使用二阶海森矩阵(Hessian Matrix)来识别具有高边缘度但对少量噪声没有鲁棒性的关键点。
在建立高斯差分金字塔以选取图像特征点时,算法考虑了关键点的尺度不变性。而对于图像特征而言,与尺度不变性同等重要的还有旋转不变性。为使算法定义图像特征具有旋转不变性,需要在定位特征点后对特征点定义“主方向”,该“主方向”生成特征点周围局部区域的梯度方向基准,使图像在旋转后仍能与旋转前保持相同特征描述。
算法将关键点指定大小领域中的所有点计算梯度方向与赋值,统计所有梯度方向对应的赋值和,作关键点周围邻域梯度方向直方图。将梯度方向直方图中最高数值对应方向作为关键点主方向,如果其他方向幅值达到主方向的80%,则将其作为辅方向。
得到特征点二维位置、尺度位置、主方向等具体信息后,需要解决的最后一个问题就是生成关键点信息的描述子,即用一个向量描述图像中的特征点信息。算法将特征点周围1 616邻域分为4个88区域,再将88的区域划为22区域,即每个小区域为44的范围。统计每个44区域的梯度方向直方图,对应生成128维向量(值为梯度方向的幅值)。该128维向量即该点的特征描述子。
BRISK 算法具有旋转不变性、尺度不变性及较好鲁棒性等[5]。在图像配准应用中,BRISK 算法速度介于ORB 算法和SIFT 算法之间。在对模糊图像进行配准时,BRISK 算法优势较为明显。
BRISK 算法通过FAST9-16进行特征点检测,可以有效解决尺度不变性问题。该算法需要在尺度空间进行特征点检测,因此需要通过图像金字塔方式对图像进行多尺度表达。
(1)建立尺度空间。构造octave(八度)层和intra-octave(内部)层,对不同层分别采用ci和di进行表示。c0层是原图像,c1层为c0层的2 倍下采样,ci层为ci-1层的2倍下采样。d0层是原图像的1.5倍下采样,d1层是d0层的2倍下采样,di层为di-1层的2倍下采样。在层数为4的情况下,可以在原图像基础上获得8张图,octave 层及intra-octave 层之间均为2倍采样关系。
(2)特征点检测。通过FAST9-16对上述8 张图均进行角点检测,可以得到具有角点信息的8张图。再对原图像开展一次FAST5-8角点检测,叠加上述8张角点检测图,总共得到9张角点信息图。
(3)非极大值抑制。明确特征点,要求其在26个邻域点FAST 得分值最大,包括位置空间的8个邻域点和尺度空间的18个领域点(上下两层,每层9个邻域点);此时得到的极值点较为粗糙,需要进一步精确定位。
(4)亚像素插值。在获得图像特征点位置和尺度信息之后,在极值点所在层位置及上下两层相对应位置,对3个FAST 得分值分别沿x和y方向进行插值,获得真正的得分极值点(特征点)及坐标信息。然后沿尺度方向进行插值,得到特征点尺度信息。
(1)高斯滤波。在获得特征点坐标位置信息及尺度信息之后,需要对特征点进行描述。在均匀采样情况下,以特征点为中心构建多个同心圆,对每个圆进行等间隔采样,共得到N个采样点(包括特征点)。这种采样方法会导致混叠效应,为了避免该效应产生,需要对同心圆采样点开展高斯滤波。特征点采样和高斯滤波如图1所示。
图1 特征点采样和高斯滤波
其中,采样为实线圈;高斯滤波半径与高斯方差成正比,为虚线圈,最终获得高斯平滑后的N个采样点(图1中N=60)。
(2)局部梯度计算。考虑共有N个采样点,两两组合共有N(N-1)/2种组合方式,所有方式集合构成采样点对。在此基础上分别定义短距离点对子集和长距离点对子集(L个),利用上面信息计算特征点的主方向。
(3)特征描述符。为了满足旋转不变性,以主方向为标准对特征点周围的采样区域进行旋转,形成新的采样区域,依然采用上述采样模式进行采样和局部梯度计算。BRISK 依然采用二进制方式生成特征描述符。采样点共有N(N-1)/2种组合方式,因此生成包括N(N-1)/2个距离的集合,对短距离子集512个短距离点对进行二进制编码,共得到512位的二进制编码,即64个字节。
综上所述,ORB 算法、SIFT 算法及BRISK 算法均是较为常用的视频拼接中匹配点选取和标定算法,但是不同算法原理存在明显差异,这从根本上决定了不同算法具有不同的适用性和优缺点。在视频拼接中需要基于实际需求进行合理选取,只有这样才能获得满意的视频拼接效果。