谢 晴
(梧州学院,梧州 543002)
直线是最常见、最基本的几何特征之一,广泛存在于自然界和很多人造物中,是大多数物体的边缘形状的表现形式。在很多应用中,我们需要利用数字图像处理技术识别出这些直线特征,以便作为模式识别和图像分割等后续研究的基础,比如对航拍图像中飞机场跑道线的识别等。针对目前大多数生活小区、银行、交通路口等安装的固定摄像头所监控的角度固定、很多地方安装的太阳能的集热面板与水平面的夹角都为45°以及宝石刻面琢型中刻面之间的角度固定的实际情况,本文提出一种基于模板滤波的已知角度直线检测方法。
现有的直线检测算法主要有两大类[1]:一类是通过对图像的处理,得到目标的边界点集合,然后利用霍夫变换(Hough Transform,以下简称Hough变换)提取目标边界上的直线;另一类是在对图像预处理后,直接获取目标的边界线集合,然后在该集合中进行直线段识别。第一类方法中的Hough变换检测直线方法是所有直线检测方法中最经典的方法,该方法具有较强的抗噪能力,对直线断裂不敏感,具有较高的可靠性和较好的鲁棒性。但传统的Hough变换需要占用较大的内存空间、变换计算量大,因此难以应用于对实时性要求较高的场合,其应用范围有所限制。第二类直线检测方法一般是先对目标边界进行链码跟踪,然后在得到的链码串集合中进行直线段提取[2]。和Hough变换方法相比,这类方法的优点是计算简单,
具有较强的实时性,能比较方便地得到线段的长度、方向等信息。但是,现有算法在识别直线时都不考虑直线的角度,其目的是尽量将图像中的所有直线识别出来,但在某些应用中,我们通常只对一些固定角度的直线感兴趣,比如,固定摄像头所监控的范围内的直线或航拍图像中大多数目标的轮廓线与水平面的夹角都是已知的,因此,本文提出基于模板滤波的直线检测新方法,专门对已知角度直线的检测进行研究。
基于模板滤波的已知角度直线检测算法基于空域滤波的原理,即事先定义一个直线检测模板,在图像中逐点移动,位于直线上的点将对模板产生较大的响应,设置合适的阈值,认为响应大于阈值的点位于直线上,从而识别出直线段。本文设计的水平直线检测模板如图1(a)所示,以水平线检测模板为例,当水平线检测模板在图像上逐点移动时,位于水平直线上的点将对模板产生较大的响应,为了判断某点是否位于水平直线上,就需要设置一个阈值,也就是模板的输出门限。本文设计的垂直线、与水平方向呈45°、135°的直线检测模板如图1(b)~图(d)所示。
图1 直线检测模板示例
基于模板滤波的已知角度直线检测算法步骤:1)读取灰度图像;
2)根据直线角度,设计直线检测模板;
3)用直线检测模板对图像滤波,设置合适的模板输出门限,检测出直线。
可以看出,直线检测模板的设计是本算法的核心,下面介绍检测模板的构造方法。
首先根据直线角度计算出直线的斜率k,由斜率确定模板的尺寸,最后设置合适的模板系数。由于直线y=kx+b与y=kx是平行的位置关系,本文以一般直线y=kx的检测为例讨论直线检测模板的构造方法,步骤如下:
1)由直线角度计算出斜率k;
2)根据斜率k计算出检测模板的尺寸;
3)确定模板系数。
由于直线斜率取值情况的复杂性,经过反复验证,本文确定了直线斜率k和直线检测模板尺寸之间的关系,下面分两种情况说明:
1)k=n和k=1/n(n为整数)
当直线角度在(0°, 45°)或(135°, 180°)范围时,检测模板的行数设为3,列数设+1(|k|表示取斜率k的绝对值);当直线角度在(45°, 90°)或(90°, 135°)范围时,检测模板的行数可设为2|k|+1,列数设为3。
2)k=b/a(a、b为整数)
当直线斜率k表示为b/a形式时,可设直线检测模板的行数为2|b|+1,列数为2|a|+1,其中,|a|和|b|表示取a、b的绝对值。
确定好直线检测模板的尺寸后,就可以确定模板的系数,依据是要使得模板中所有系数的总和为0,因为图像中灰度级恒定的区域来自模板的响应应该为零。为了便于描述,本文将位于直线上的像素点称为关键点,关键点在模板中的对应系数称为关键系数,其余的系数为非关键系数。为了准确的检测出直线,位于直线上的点对模板的响应要大于直线以外的点,因此,关键系数的值应尽可能大于非关键系数,故本文将关键系数的值设为正数,非关键系数的值设为负数,关键系数的总和和非关键系数的绝对值之和要相等。
图2 直线y=x
图3 直线y=x的检测模板
图4 实验结果1
图5 实验结果2
限于篇幅,本文列举以下实验结果:
从实验结果可以看出,本文提出的基于模板滤波直线检测算法检测效果比较好,和经典的Hough变换检测直线方法相比,本算法简单,模板构造方便。从时间方面来说,算法的执行时间短,执行速度快。比如,直线滤波步骤所花费的时间仅0.453秒,直线检测也只用了0.443秒,均快于Hough变换直线检测方法;从空间方面来说,由于检测模板的实质就是一个二维矩阵,其尺寸远远小于原始图像,因此无需太多额外存储空间,克服了Hough变换检测直线方法需要占用大量存储空间的缺陷。
本文提出的基于模板滤波的已知角度直线检测算法可以快速、准确的检测出特定角度的直线而忽略对研究问题无用的直线,为需要检测出特定角度直线的应用领域提供了新的解决途径和思路。当然,本算法也有不足之处,根据一些特殊角度设置的检测模板会出现尺寸过大的情况,如何对本算法进行改进,使检测模板的构造更加简单,以及如何更加科学、合理的设置模板的输出门限是今后的一个研究方向。
[1] 毛伟民, 芦俊, 朱卫良, 胡志川. 基于边缘检测的载带压痕检测[J]. 计算机测量与控制. 2010, 18(7).
[2] Bi Y,Zhao J G,Zhang D H.Research On Power Communication Network and Power Quality Monitoring Using OPNET[z].Industrial Electronics and Applications.2007,507-511.