APP下载

一种改进的Shi-Tomasi角点检测方法

2023-01-31彭晓星韩宝玲

计算机应用与软件 2022年12期
关键词:角点金字塔灰度

彭晓星 罗 霄 韩宝玲

1(北京理工大学光电学院 北京 100081) 2(北京理工大学计算机学院 北京 100081) 3(北京理工大学机械与车辆学院 北京 100081)

0 引 言

为了从图像中获取我们感兴趣的信息,我们通常通过提取图像特征的方式来实现。点特征作为图像特征的其中一种,它保留了图像中物体的重要特征信息并且具有表征图像特征准确、稳定可靠的特点[1]。角点检测算法广泛应用在图像匹配、运动估计、相机标定与视觉定位等方面[2]。

目前已有的角点检测算法主要分为两大类:(1) 基于图像边缘信息的角点检测;(2) 基于图像灰度变化的角点检测算法。基于图像边缘信息的角点检测算法是通过对图像进行边缘提取,再通过寻找边缘上曲率较大的点或者多条边缘线的交点来提取角点。这类算法有基于小波变换模极大的角点检测算法[3]、基于边界曲率的角点检测算法[4]等,此类算法中角点对边缘线依赖较大,当边缘发生中断时,角点提取算法则会产生很大误差。基于图像灰度变化的角点提取算法是通过图像中像素的灰度变化来实现角点提取。这类算法有Moravec算法[5]、Harris算法[6]、SUSAN算法[7]、Shi-Tomasi算法[8]等。此类算法中Harris角点检测算法表现较好,应用十分广泛,但其不具备尺度不变性的特点,基于此许多学者提出了相应的改进算法,为了使Harris算法具备在多尺度下实现角点的有效提取,张小洪等[2]在Harris算法中引入了多尺度的思想,从大尺度到小尺度提取候选点集,从而实现Harris多尺度角点检测的算法。文献[9-10]基于小波变换和B样条函数实现Harris多尺度角点检测。但是他们只使用了单一尺度,在提取候选角点时尺度过大时容易丢失真实角点,尺度过小容易受噪声的影响。针对此缺陷,叶鹏等[11]提出在多个尺度上分别求得角点响应值和模糊系数,通过叠加求出原始图像每个点的模糊角点响应值,充分利用了各个尺度的信息。上述方法都具有计算量大且提取角点不够准确的问题,本文针对这些问题,选择比Harris角点计算量小的Shi-Tomasi角点算法来进行改进,首先通过构建图像金字塔使得算法可以在多尺度下提取角点,同时通过对每层图像进行均值滤波对图像去噪,提升抗噪性,利用双模板组合的方式去除伪角点,提升角点检测的精度。

1 Shi-Tomasi角点检测算法原理及其局限性

1993年Shi等在Harris算法的基础上提出Shi-Tomasi角点检测算法,他们发现使用Harris角点检测算法中自相关矩阵较小的特征值即可很好地表示角点。因此定义了更为简单的角点响应函数。Shi-Tomasi算法的主体与Harris算法一致,首先来看Harris算法,Harris算法角点的原理是计算窗口内点的灰度变化来检测角点。如图1所示,朝各个方向移动固定大小窗口,如果窗口内的灰度几乎不变,认为是平坦区域,不存在角点;如果在某个方向上灰度发生了较大的变化而在另一些方向上灰度几乎不变,认为窗口内是直线;如果沿各个方向移动,窗口区域内灰度发生了较大的变化,认为窗口内存在角点。

图1 Harris角点窗口示意图

将上述过程建立数学模型,对于二维图像I(x,y),当点在(x,y)处平移了(Δx,Δy),用自相关函数表示窗口移动前后的相似度:

I(u+Δx,v+Δy))2

(1)

式中:W(x,y)是以(x,y)为中心的窗口;w(u,v)是窗口内的加权函数,一般为高斯函数。I(u+Δx,v+Δy)进行一阶泰勒展开并忽略二阶高次项:

I(u+Δx,v+Δy)≈I(u,v)+Ix(u,v)Δx+Iy(u,v)Δy

(2)

式中:Ix(u,v)和Iy(u,v)为图像的偏导数。将式(2)代入式(1)可得:

(3)

其中:

(4)

式中:矩阵M为图像梯度的协方差矩阵;λ1和λ2为矩阵M的特征值。

Harris算法利用矩阵的迹tr(M)和行列式det(M)来定义角点响应函数R(x,y),其表达式为:

R(x,y)=det(M)-k(Trace(M))2

(5)

式中:det(M)=λ1λ2;Trace(M)=λ1+λ2;k为经验常数,k∈[0.04,0.06]。给定阈值T,当R(x,y)>T,并且在局部窗口内取得最大时,则该像素点(x,y)为特征点。

Shi-Tomasi算法的角点响应函数定义如下:

R(x,y)=min(λ1,λ2)

(6)

只需要找最小的特征值来获取角点即可,其定义较Harris角点响应函数定义更为简单,减少了角点响应函数的计算时间。

虽然Harris算法及其改进算法Shi-Tomasi都十分经典,但是它们都具有一些局限性:Shi-Tomasi算法只能在单一尺度下提取角点,角点响应函数的阈值的设定对角点提取影响较大,当阈值较大时,容易漏检角点,当阈值较小时,又容易提取出伪角点。因此提取角点的准确度不高。

2 改进的Shi-Tomasi角点检测算法

针对Shi-Tomasi角点在单一尺度下角点提取精度低、易提取伪角点、抗噪性差的问题,本文提出一种改进的Shi-Tomasi角点检测方法,首先通过构建图像金字塔使得算法可以在多尺度下提取角点,同时通过对每层图像进行均值滤波对图像去噪,提升抗噪性,利用双模板组合的方式去除伪角点,进一步提升角点检测的精度。

2.1 图像金字塔构建

图像金字塔的形式类似于金字塔,它指的是通过上采样或下采样的方式使同一幅图像能够拥有在不同尺度下的表达。上采样是指通过对原始图像在偶数行和列上进行插值并进行卷积运算平滑新增的像素,使图片的尺寸越来越大,图像的分辨率越来越高,上采样方式构建的代表算法有拉普拉斯图像金字塔算法。而下采样则是朝着相反的方向,它指的是选择原始图像的偶数行和列的像素并删除,这样使得图片尺寸越来越小,图像的分辨率越来越低,下采样方式构建的代表算法有高斯图像金字塔算法。本文构建的图像也采用下采样的方式。

传统的高斯图像金字塔是由很多组金字塔构成,并且每组金字塔都包含若干层。从第i幅图像到第i+1幅图像需要进行的操作为:首先对第i幅图像进行高斯内核卷积,达到平滑图像的效果。其次去除图像的偶数的行和列,缩减图像的尺寸大小。两个步骤循环反复,直到构建出完整高斯图像金字塔。

通过构建多层图像进行角点的提取,虽然实现了多尺度下的角点提取,但是此种方法计算量大,且容易提取出伪角点。因此,本文通过构建简单的图像金字塔(如图2所示)来减少计算量,后续再通过双模板组合的方式去除伪角点。本文只构建简单的图像金字塔,其算法大致步骤为:

(1) 将原始图像进行均值滤波去除图像中的椒盐噪声后作为第0层,并push到图像数组中。

(2) 将第0层图像按照设定的scale进行下采样,获得第1层图像,并进行均值滤波去噪声。

(3) 循环直至满足设定的图像金字塔的层数阈值。

(4) 遍历所有层图像,设定角点提取总数nfeatures,并按照1/scale的比例一次减少每层角点提取数量,从第0层到第nlevels-1层提取Shi-Tomasi角点,push到角点数组中。

图2 图像金字塔

本文构造的图像金字塔较为简单,不像传统高斯图像金字塔那样,每一组有多层图像,本文构建的图像金字塔每一组只有1层图像,既解决了尺度的问题。又通过缩小总图像的数量,达到减少计算量的效果。并且在构建图像金字塔的过程中,进行了多次均值滤波,达到去噪的效果。其流程如图3所示。

图3 图像金字塔提取Shi-Tomasi角点流程

2.2 双模板组合剔除伪角点

通过构建图像金字塔虽然解决了尺度的问题,但是在这样的情况下很容易提取伪角点,所以本文提出通过图像金字塔提取的角点集作为候选点集,之后通过双模板组合的方式进一步剔除伪角点,提高角点提取的准确度。该算法步骤为:

(1) 遍历候选点集,对每一个候选点进行操作。

(2) 构建1个3×3的模板和一个4×4的模板(如图4所示),以候选角点为中心,其灰度表示为Ip_i-Ip_center,求出8邻域内和24邻域内的像素的灰度与候选角点的灰度差绝对值:|Ip_i-Ip_center|,首先将8领域内的像素差绝对值与设定阈值τ1进行比较,如果|Ip_i-Ip_center|小于阈值τ1,表示两个像素灰度相似的个数nums1值加一,其次对4×4的模板也进行同样的处理,将模板内邻域像素点与中心点像素灰度进行比较,同理设置阈值τ2,如果满足条件,则表示两个像素灰度相似的个数nums2值加一。

(3) 如果nums1<2,认为该候选角点为噪声点或孤立点。如果nums1>6,认为该候选角点与邻域相似像素过多,认为是平坦区域。2

(4) 当nums1满足条件时,进一步限制nums2的取值范围,经过反复试验,得出当nums2处于6至18的区域时能获取较好的伪角点去除效果,选取此候选角点push到角点集中。

(a) 模板样式 (b) 角点 (c) 角点 (d) 噪声点 (e) Flat区域图4 模板及角点判断示例图

通过双模板组合的方式能够对候选角点进行伪角点的剔除,实现进一步的精提取,提高角点检测的准确性。

3 实验结果与分析

3.1 多尺度实验

本文提出通过构建图像金字塔使得Shi-Tomasi角点提取算法具有尺度不变性的特点,我们在同一幅图像的5个不同尺度下提取角点,设定提取角点数为100,实际角点提取情况如表1所示。

表1 不同尺度角点提取数

由表1可知,本文算法在5个不同尺度上按比例提取不同数量的角点,实现角点的粗提取。提取出的角点数量比原算法只能在单一尺度上提取的角点数量大,避免了在单一尺度下角点可能漏检的情况。但是由于引入多尺度会提取出一些伪角点,后续通过双模板组合的方式去除伪角点,实现精提取。

3.2 精确性

为了验证本文提出的多尺度Shi-Tomasi角点提取算法提取角点的精确性,进行了与原Shi-Tomasi角点提取算法的对比实验。首先,取两个不同场景的图像对本文算法不同阶段提取角点情况进行对比说明,如图5所示。

(a) 本文初步提取角点 (b) 本文最终提取角点图5 本文算法不同阶段角点提取情况

本文构建图像金字塔实现在多尺度下提取角点,构成粗选点集。如图5(a)所示。再通过双模板组合的形式去除伪角点,实现精提取,如图5(b)所示。

此外,将本文算法与原算法及文献[2]算法进行对比,结果如图6所示。表2为三种算法提取角点中伪角点个数的对比,从图6和表2可以看出原算法和文献[2]算法都会提取出很多伪角点,而本文提出的多尺度Shi-Tomasi角点提取算法能有效地去除伪角点,提升角点检测的精确性。

(a) 本文算法 (b) 文献[2]算法 (c) 原算法图6 本文算法与原Shi-Tomasi角点提取算法对比图

表2 两种算法提取角点情况对比

3.3 抗噪性

除了上述两个实验外,本文还针对抗噪性这一指标进行了对比实验,通过对图像添加椒盐噪声,在此条件下对比两种算法角点提取的情况,如图7所示。

(a) 本文算法 (b) 文献[2]算法 (c) 原算法图7 噪声条件下角点提取情况对比

可以看出,在添加噪声后,原Shi-Tomasi角点提取算法和文献[2]算法的准确性快速下降,将很多噪声误认为是角点提取出来;相对而言本文算法在噪声条件下依然能有效提取出部分角点,且伪角点较少,说明了本文算法有一定的抗噪性。

4 结 语

本文基于原Shi-Tomasi角点不具备尺度不变性的特点,通过构建图像金字塔实现Shi-Tomasi算法可在多尺度下提取角点,并通过构建双模板组合的方式减少由引入多尺度带来的伪角点,最后进行了对比实验,表明本文算法增强了图像的抗噪性以及提升了提取角点的精确性。

猜你喜欢

角点金字塔灰度
“金字塔”
采用改进导重法的拓扑结构灰度单元过滤技术
多支撑区域模式化融合角点检测算法仿真
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
Great Vacation Places
角点检测技术综述①
基于FAST角点检测算法上对Y型与X型角点的检测
金字塔是用金子造的吗
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于像素重排比对的灰度图彩色化算法研究