图像的灰度、边缘、轮廓、纹理、色彩和颗粒属性等都可作为图像的特征,它们均从某一维度对图像中的目标关键属性进行描述。然而,在实际工作中,有时需要寻找一种可以对图像的各个局部都能进行抽象描述的特征。
例如,若要在图像存在透视畸变且被测目标会发生旋转和缩放的情况下,对图像中多个关键部分进行关联拼接,然后再进行目标识别或匹配,此时就需要使用一种可以对旋转、缩放和畸变均保持不变的局部特征。
角点(Corner Point)是解决这类问题的一种理想选择。
图像中的兴趣点(又称为关键点、特征点)是在图像中容易检测且具有代表意义的点。基于这些点,可以进行目标识别、图像匹配和缺陷检测等。角点是图像中最基本的一种兴趣点,它可定义为图像中两个边缘的交点,或目标轮廓线上曲率的局部极大点。角点特征具有计算量少,匹配简单以及旋转、平移、放缩不变性等特点,因此在图像配准与匹配、目标识别、运动分析、目标跟踪等应用领域都起着非常重要的作用。
图像在角点处不仅梯度的数值大,而且梯度方向的变化速率也很大。也就是说,角点显示了图像在二维空间内灰度变化剧烈的位置,它和周围邻点有着明显差异。
例如,下图中,当小窗口位置在任意方向上发生变化时,含有角点的窗口的灰度就会有明显变化。因此可以通过计算图像中的角点获知图像各个局部的信息,从而实现对图像的一种抽象描述。而基于该抽象描述,即可进行图像的匹配及识别等工作。
以角点为特征的机器视觉应用一般涉及角点检测、角点描述和角点匹配3个过程。
角点检测过程使用Harris、Shi-Tomasi或FAST等算法来确定图像中的角点。角点描述过程使用BRISK (Binary Robust Invariant Scalable Keypoints)或FREAK (FastRetina Keypoint)方法,基于检测到的角点生成以二值方式编码的特征向量。而角点匹配过程则计算两幅图像二值特征向量之间的汉明距离,并依据距离的大小来判断其是否匹配。
下图对常用的角点检测、描述及匹配方法进行了汇总。
Nl Vision使用位于LabVIEW的视觉与运动→Machine Vision→FeatureCorrespondence函数选板中的IMAQ Corner Detector和IMAQ FAST Feature PointDetector封装角点检测过程,返回从矩形ROI中检测到的角点坐标和强度。
其中IMAQ Corner Detector封装了Harris和Shi-Tomasi角点检测算法,且支持在图像不同的金字塔图层进行多尺度检测。换句话说,在进行角点检测时,它不仅能对光照和旋转变化保持不变性,还能通过多尺度的近似方法对图像的缩放变化保持不变性。
lMAQ FAST Feature Point Detector封装了FAST检测算法,它以像素为中心,取距其半径为3的圆环上的16个点,若其中有连续的12个点的灰度与像素的灰度差超过输入参数Min Feature Point Strength设定的阈值,就将像素标记为角点。VI对于光照、旋转和尺度变化保持不变,但是当图像中噪点较多时,FAST健壮性较差,而且算法的效果也依赖于阈值的选取。
通过使用角点特征进行图像匹配的实例,了解角点算法的应用,程序设计思路如下所示:
程序首先为模板图像和待检测图像分配缓冲区,并将它们分别读入内存;
随后调用IMAQ FAST Feature PointDetector,基于FAST算法分别检测两幅图像中的角点,并由IMAQ Feature PointDescriptor以FREAK算法对角点信息进行二进制描述;
这样一来,从图像中检测到的各个角点特征都可以由一个二进制的角点特征字符串表示;
IMAQ Match Feature Points能通过计算各个角点特征字符串之间的汉明距离,在设定的最大可接受距离范围内(本例为32),对两幅图像中的角点进行匹配关联。
程序设计如下所示:
程序运行效果如下所示:
IMAQ Match Feature Points还能基于在两幅图像中匹配到的角点坐标,返回它们之间的单应性矩阵(Homography Matrix)。在机器视觉领域中,若成像系统可抽象为针孔比如,通过旋相机,则空间中同一平面内的任意两幅图像就可由单应性矩阵进行关联。比如,通过旋转相机镜头可获取某一个物体的两张不同图像,这两张图像的内容不可能只有部分对应。
若存在一个二维的3×3矩阵,与其中一幅图像相乘可得到第二幅图像,则该矩阵就称为两幅图像的单应性矩阵。单应性矩阵可以通过两幅图像中对应的4个特征点来计算,一旦得到单应性矩阵,就可以在已知原图像中关键特征点坐标时,计算得到其在匹配图像中的坐标位置。如上述例子所示,程序使用IMAQ Match FeaturePoints计算得到的单应性矩阵,在检测图像中标出所匹配到的目标范围。
角点是图像中一种特殊的特征点,基于角点进行图像检测和匹配,能在较难找到图像特征的情况下,创建图像拼接或图像匹配应用。常见的角点检测方法有Harris、Shi-Tomasi和FAST等。计算两幅图像角点特征向量之间的汉明距离即可完成角点的匹配。基于4个以上的匹配角点,可求得关联两幅图像的单应性矩阵,进而基于此矩阵,就能确定模板图像的位置。
角点作为图像上的特征点,包含有重要的信息,在图像融合和目标跟踪及三维重建中有重要的应用价值。但是基于实际应用需求,从角点检测的快速性、准确性、鲁棒性等要求出发,可以看出上面对各种角点检测算法的分析各有利弊。直接基于图像的角点检测基本上是全局搜索;基于边缘轮廓的角点检测数据量较少,可以采用多分辨分析并行处理,从灰度图像得到边缘轮廓曲线要经过两次以上的全局搜索,速度并不是很快,但对角点的误检和漏检要比直接基于图像的方法好得多。如果在得到轮廓曲线的过程中应用一些其他的变换方法,就计算的速度而言,下降不少,所以一般快速的、较准确的角点检测使用直接基于图像模板的方法完全可以满足需要,但如果对角点的完备性要求较高,那么使用基于轮廓线的多尺度分析方法应该给予考虑。
也称为特征点检测。角点通常被定义为两条边的交点,更严格的说,角点的局部邻域应该具有两个不同区域的不同方向的边界。而实际应用中,大多数所谓的角点检测方法检测的是拥有特定特征的图像点,而不仅仅是“角点”。这些特征点在图像中有具体的坐标,并具有某些数学特征,如局部最大或最小灰度、某些梯度特征等。现有的角点检测算法并不是都十分的鲁棒。很多方法都要求有大量的训练集和冗余数据来防止或减少错误特征的出现。角点检测方法的一个很重要的评价标准是其对多幅图像中相同或相似特征的检测能力,并且能够应对光照变化、图像旋转等图像变化。 Moravec角点检测算法Moravec角点检测算法是最早的角点检测算法之一。该算法将角点定义为具有低“自相关性”的点。算法会检测图像的每一个像素,将像素周边的一个邻域作为一个patch,并检测这个patch和周围其他patch的相关性。这种相关性通过两个patch间的平方差之和(SSD)来衡量,SSD值越小则相似性越高。如果像素位于平滑图像区域内,周围的patch都会非常相似。如果像素在边缘上,则周围的patch在与边缘正交的方向上会有很大差异,在与边缘平行的方向上则较为相似。而如果像素是各个方向上都有变化的特征点,则周围所有的patch都不会很相似。Moravec会计算每个像素patch和周围patch的SSD最小值作为强度值,取局部强度最大的点作为特征点。 Harris角点检测算法Moravec角点检测算法有几个很明显的缺陷:1,强度值的计算并不是各向同性的,只有离散的8个45度角方向被考虑。因为patch的评议比较最多只有8个方向;2,由于窗口是方形并且二元的,因此相应函数会有噪声;3,对边缘的相应太简单,因为强度值尽取SSD的最小值;FAST角点检测算法Smith 和 Brady在1997年提出了一种完全不同的角点提取方法,即“SUSAN (Smallest UnivalueSegment AssimilatingNucleus)”提取算子。SUSAN 提取算子的基本原理是,与每一图像点相关的局部区域具有相同的亮度。如果某一窗口区域内的每一像元亮度值与该窗口中心的像元亮度值相同或相似,这一窗口区域将被称之为“USAN”。计算图像每一像元的“USAN”,为我们提供了是否有边缘的方法。位于边缘上的像元的“USAN”较小,位于角点上的像元的“USAN”更小。因此,我们仅需寻找最小的“USAN”,就可确定角点。该方法由于不需要计算图像灰度差,因此,具有很强的抗噪声的能力。Edward Rosten and TomDrummond 在2006年提出了一种简单快速的角点探测算法,该算法检测的角点定义为在像素点的周围邻域内有足够多的像素点与该点处于不同的区域。应用到灰度图像中,即有足够多的像素点的灰度值大于该点的灰度值或者小于该点的灰度值。考虑下图中p点附近半径为3的圆环上的16个点,一个思路是若其中有连续的12个点的灰度值与p点的灰度值差别超过某一阈值,则可以认为p点为角点。这一思路可以使用机器学习的方法进行加速。对同一类图像,例如同一场景的图像,可以在16个方向上进行训练,得到一棵决策树,从而在判定某一像素点是否为角点时,不再需要对所有方向进行检测,而只需要按照决策树指定的方向进行2-3次判定即可确定该点是否为角点。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)