APP下载

硬度图像角点检测算法

2011-07-05曲福恒杨勇胡雅婷陈学广

关键词:角点灰度边缘

曲福恒,杨勇,胡雅婷,陈学广

(1长春理工大学 计算机科学技术学院,长春 130022;2吉林农业大学 信息技术学院,长春 130118)

硬度是固体材料表面抵抗变形或破坏的能力,是零件机械性能的一个综合体现,通过对硬度的测量可以得到零件的诸多信息[1-3]。实际中应用最广的是压痕硬度,它根据压痕尺寸来确定材料的硬度值。由于压痕尺寸较小,传统方法依靠显微镜下的人工测量,难以达到精度要求[4]。利用图像处理技术进行全自动的硬度检测避免了这方面的问题[2,4]。这类方法主要分为两步:首先通过图像处理技术提取出零件压痕图像四个角点(原文献[2,4]中称为四边形顶点)的位置坐标,根据角点的坐标信息计算出其对角线的长度。然后根据图像像素和实际长度的换算关系利用硬度的计算公式得出材料的硬度值。角点定位的准确程度直接影响着最终的检测结果,而硬度图像的复杂性使角点定位成为硬度自动检测的难点和关键点。硬度图像干扰严重,传统角点检测算法无法定位目标区域角点。现有文献中的硬度检测没有直接利用角点检测算法来寻找目标区域的角点,而是采用直线拟合目标边缘特征点再求交点的方法来确定角点[2,4]。由于图像边缘弯曲复杂、杂质干扰严重,这种单独依靠边缘信息的方法精度必然受到影响,见图6、图8(g)。

目前的角点检测算法分为两大类,一类是以灰度变化来定义角点的算法。典型算法包括Harris算法[5],SUSAN 算法[6],LoG(Laplacian of a Gaussian)算法[7]等。这些算法在硬度图像角点区域由于受噪声和杂质的影响无法找到真正角点,见图8(a)-(e)。而硬度图像边缘区域受杂质干扰具有明显的灰度变化,会在边缘附近检测到大量的非目标区域角点。一类是基于边缘信息的角点检测算法,这类算法通过寻找图像边缘中方向变化较大的点来确定角点的位置[8-10]。但由于硬度图像的边缘本身歪曲复杂,见图1,会把边缘上的曲率较大的点当做角点[见图8(f)],而目标区域的真正角点由于干扰严重无法检测到。综上可知,传统角点检测算法不适合于复杂背景下目标区域的角点检测,其是当目标区域具有模糊、歪曲的边缘时效果更不理想。本文针对硬度图像的特点设计一种新的角点检测算法来解决复杂背景下目标区域的角点检测问题,使其可以直接对硬度图像进行角点精确定位。算法中角点的确定同时考虑了检测点两个方向的灰度变化信息与边界的形状信息,与传统的角点检测算法或直线求交确定角点的方法相比具有更好的检测精度、鲁棒性和适应性。

图1 原始硬度图像Fig.1 Original image

2 基于旋转灰度变化的角点检测算法

2.1 算法原理

通过大量的数据分析我们发现,硬度图像中尽管杂质和噪声较多,但目标区域的内部灰度具有明显的一致性,如图1所示,由此本文提出利用灰度的旋转变化来寻找角点的思想。首先以给定检测区域Ω内的任意一个像素点P(x,y)作为候选角点。以P为圆心,做一条长度为d的虚拟半径R,记半径R上所经过的像素点的灰度总和为G0。然后让半径R以给定的角度dθ进行逆时针(或者顺时针)旋转。设初始半径上有点(x(0),y(0)),则经过k次逆时针旋转后的坐标(x(k),y(k))(顺时针公式类似):

图2 算法示意图Fig.2 Principle diagram of the algorithm

若P为真实的角点,如图2中点a的位置,则在边界附近旋转前后灰度将有明显的变化。从目标外部走进内部时,会遇到灰度减少的最大值记Gmax;当走出时,会遇到灰度减少的最小值Gmin。这两个最值出现位置的角度差是接近于90度的,如图3(a)所示。反之,如果O不是真实的角点,如图2中点b的位置,则不会出现灰度明显减少的位置,即 ||Gmax和 | Gmin|相对较小,且两者角度间隔接近90度的概率也很小,如图3(b)。本文以 | Gmax-Gmin|以及Gmax、Gmin出现位置的角度差作为判断依据进行角点检测。令G(x,y,θ)表示当前旋转角度为θ时的灰度变化值,则区域D内角点坐标(x*,y*)表示为:

图3 灰度减少与旋转角度关系图Fig.3 Relationships between image gray and angles

图3中是硬度图像中角点与非角点处旋转灰度减少值的变化曲线。从图中可以看出,角点处|Gmax-Gmin|>4000,而非角点处 |Gmax-Gmin|<400,明显小于角点处的值。从出现的位置看(横坐标),角点处Gmax、Gmin的角度间隔大约在95到100度之间,非角点处的间隔小于10度,可以看出两者的灰度变化曲线在这两点上均有着明显的差异。

2.2 实施步骤

检测分为角点区域的初步确定和角点检测两个阶段。直接在整幅图像内进行角点检测运算量较大,通过确定角点区域可以降低计算复杂度。

2.2.1 角点区域的确定

角点区域的确定遵循两个原则。第一,确定的所有区域的并集包含硬度图像的全部角点。第二,区域的总面积尽可能小。本文采取直线求交点的方式初步估计出四个角点,再以每个点为中心选择一定面积的区域作为角点区域。主要步骤如下。(1)运用图形学方法估计出目标所在区域记为T,结果见图7。(2)对于提取出来的目标区域,利用canny算子提取目标区域边缘。(3)对提取的边缘进行hough变换来提取直线。(4)把求出的四条直线的交点按逆时针方向记为Q1、Q2、Q3、Q4,并以Qi(i=1,2,3,4)为中心以四边形Q1Q2Q3Q4边长均值的八分之一确定一个正方形区域Si(i=1,2,3,4)。(5)确定角点检测区域Ωi=Si⋂T(i=1,2,3,4),如图7。目标边缘的复杂性可能导致hough变换无法直接定位四条边界直线,或者找到的直线与边界的方向偏离较大,见图5。本文利用hough变换寻找多条直线再选择出两组近似平行但具有一定距离的直线来确定图像的边缘方向,见图6。

2.2.2 角点检测

角点检测区域确定后,对于任意给定点p(x,y)∈Ωi(i=1,2,3,4),需要确定旋转半径的长度d与旋转角度dθ。在角点区域确定阶段中,虽然提取的四条直线与真实的边界有一定的偏差,但其反映了边界的大体位置与走向,因此没有必要让半径旋转360度来寻找角点。对于给定的角点检测区域,根据上面确定的边界方向确定旋转时初始半径和终止半径的方向,按照逆时针的顺序选择其中一条为始边另一条为终边的原则进行旋转。半径的长度取为四边形Q1Q2Q3Q4边长均值的三分之一。每次旋转的偏转角度选择的过小会导致计算量的增大,过大会导致检测不准确。实验发现,旋转角度取为3度时已经具有良好的检测能力。当旋转半径长度d、旋转角度dθ以及角度差阈值δ确定以后,根据公式(2)在检测区域Ωi(i=1,2,3,4)内确定最终的四个角点。

图4 canny算子边缘提取结果Fig.4 Edge detection using canny

图5 Hough变换提取的直线Fig.5 Line extraction using Hough transform

图6 处理后直线Fig.6 Final results of line extraction

图7 提取的角点区域Fig.7 Corner region after extraction

图8 不同算法角点检测结果Fig.8 Corner detection results of different algorithms

3 对比实验结果与分析

提出的方法与经典的角点检测算法进行了对比,对比的算法包括Harris算法[5]、Harris-Laplace算法[11]、Susan 算法[6]、Gilles算法[12]、LOG 算法[7]以及He-Yang算法[8]。此外,还与两种直线求交确定角点(严格来说是四边形顶点,因为这类不是角点检测算法而是根据硬度图像特点设计的算法)方法进行了对比,一个是基于hough变换的方法,另一个是基于canny边缘检测与直线拟合的方法。

从图8可以看出经典的角点检测算法无法检测到硬度图像的角点。Harris算法[5]、Harris-Laplace算法[11]、Susan 算法[6]、Gilles算法[12]、LOG 算法[7]都是基于灰度变化定义角点的,由于硬度图像中大量杂质、噪声的存在,在目标区域边缘附近产生了大量灰度变化幅度大的点,这类算法会把这些点当作角点而无法找到真正角点,见图8(a)-(e)。He-Yang算法[8]是最近提出的一种基于边缘信息的角点检测算法,如图8(f)所示其结果很不理想。这是由两方面引起的,一方面,硬度图像边缘受杂质干扰严重,He-Yang算法在边缘检测阶段无法找到硬度图像的边缘。另一方面,硬度图像边缘形状弯曲复杂,算法无法区分边缘弯曲度大的点和真实的角点。基于直线求交的方法效果也不理想。利用Hough变换法求取直线方程再求交点方法的结果见图6,这种方法只能找到角点的大致位置,精确度有待提高。算法遇到的另一个问题是如何确定目标区域四条边的直线方程,见图5。利用直线拟合的方法精确度也不高,但比Hough方法稍好,见图8(g)。直线拟合法会面临如何选择拟合点的问题,本文实验中采用了手工方法确定每条边的拟合点。在具体应用时必须通过图像处理的方法自动确定拟合点,精度很难保证。另外,这两种方法都需要进行边缘检测,其检测结果依赖于使用的检测方法与边缘提取的精确程度,而硬度图像的复杂性使其很难提取出精确的边缘,这也是这两个方法共同面临的问题。如图8(h)所示,本文的方法比较准确的找出了目标区域的角点位置,这是由于算法同时考虑了检测点两个方向上灰度的整体变化,具有更好的抗干扰性能。

4 结论

硬度图像的复杂性使传统的角点检测算法难以实现,现有的直线求交方法仅考虑图像的边缘信息,检测精度不高。针对以上问题,本文提出一种新的角点检测算法。算法同时考虑了“旋转半径”在两个方向的灰度变化信息及角度信息,具有更好的检测精度、鲁棒性和适应性。在应用上,本文方法不仅适用于硬度图像,同样适用于复杂背景下大尺度(目标区域在整幅图像中的比例较大)目标区域的角点检测。但对于像素级别的小尺度角点,传统的角点检测算法即可得到较好的结果,而本算法的时间复杂度相对较高。我们的下一步的工作是设计快速算法,提高运行速度。

[1]Tuma J,Gubeljak N,Sustarsic B.Fracture toughness of a high-strength low-alloy steel weldment[J].Materiali in Tehnologije,2006,40(6):263-268.

[2]刘祥.基于图像处理技术的维氏硬度检测方法的研究[D].长春理工大学硕士学位论文,2009.

[3]王扬卫,马壮,于晓东.几种典型材料的动态硬度研究[J]. 材料工程,2010(9):62-70.

[4]He B,Zhu M,Yang Y.Application of Harris corner points locating testing of metal hardness[J].Laser&Infrared,2009,40(9):1027-1032.

[5]HarrisC,StephensM.A combinedcornerand edge detector[J].proceedings of the Fourth Alvey Vision Conference[C].1988.

[6]Smith SM,Brady JM.SUSAN—A new approach to low level image processing[J].International Journal of Computer Vision,1997,23(1):45-78.

[7]Lindeberg T.Feature detection with automatic scale selection[J].IEEE Transactions Pattern Analysis Machine Intelligence,1998,30:77-116.

[8]He X,Yung N.Corner detector based on global and local curvature properties[J].Optical Engineering,2008,47(5):1-12.

[9]Rattarangs A,Chin RT.Scale-based detection of corners of planar curves[J].IEEE transactions on pattern analysis and machine Intelligence,1992,14(4):430-449.

[10]Zhong B,Li C,Wang Z.Curvature product corner detection in direct curvature scale space[J].International Journal of Computational Vision and Robotics,2010,1(2):194-205.

[11]Mikolajczyk K,Schmid C.Scale&affine invariant interest point detectors[J].International Journal of Computer Vision,2004,60(1):63-68.

[12]Gilles S.Robust description and matching of images[D].PhD thesis,Oxford University,1988.

猜你喜欢

角点灰度边缘
采用改进导重法的拓扑结构灰度单元过滤技术
基于灰度拉伸的图像水位识别方法研究
基于FAST角点检测算法上对Y型与X型角点的检测
基于最大加权投影求解的彩色图像灰度化对比度保留算法
一张图看懂边缘计算
基于边缘的角点分类和描述算法
基于灰度线性建模的亚像素图像抖动量计算
基于圆环模板的改进Harris角点检测算法
基于Harris角点和质量评价的图像篡改检测
在边缘寻找自我