王长庚, 韩瑜,2*
(1.中山大学智能工程学院, 广州 510006; 2.广东省消防科学与智能应急技术重点实验室, 广州 510006)
大型建筑物形变在自然灾害中普遍存在,建筑物形变在一定限度内是安全的,一旦超过限定值,则会造成灾害的发生,因此需要对大型建筑物进行形变监测。形变监测是指使用专门的仪器或者方法去监测变形体的形变情况[1]。大型建筑物表面的形变通常很小,需要用专门的检测方法去检测形变大小。针对大型建筑物形变监测的方法主要有全球定位系统(global positioning system,GPS)卫星定位与导航技术[2]、全站仪定位系统(totalstation positioning sytem,TPS)测量系统[3]、三维激光扫描测量技术[4]、基于摄影测量技术的形变监测方法[5]等,本文重点研究基于摄影成像的大型建筑物形变安全监测。
基于摄影测量技术的形变检测方法根据摄影成像的图片进行形变监测,其误差和难点在于大楼建筑物图片的角点检测。角点检测算法一般分为基于图像边缘轮廓和基于图像梯度的角点检测算法,其中Harris角点检测算法因其原理简单、检测效果好以及适用性广等优点而成为目前使用较为广泛的角点检测算法。但Harris算法仍存在角点检测精度低、计算量大、不具有尺度变化性、角点聚簇现象严重等问题,一直以来研究者们不断对Harris算法进行改进,如文献[6-10]通过构造内外圆环模板、Harris算法和比例积分微分控制(proportion integral differential, PID)算法相结合、图像灰度变化的自相关性角点筛选和非极大值抑制、提出模板边缘思想和自适应阈值、结合深度学习进行参数调整等方法改善了原算法的角点聚簇现象,提高了角点检测的准确性。文献[11-15]通过B样条函数替代高斯窗口函数和采用自适应阈值、灰度差预处理剔除非角点、计算待测点周围邻域内与之相似的像素点数目进行预筛选、邻域比较法滤掉大部分非特征点、通过结合角点灰度特征分析与类曲度检测特征点等方法改进了原算法计算量大、角点检测实时性较差的不足,文献[16-17]通过双边滤波预处理和引入多尺度空间表示、采用多尺度Retinex算法构建图像边缘轮廓特征检测模型等方法提高了算法的尺度多样性。文献[18]通过提出一种自适应阈值和改进算法角点的判别方式,提高其准确性和算法速度。然而上述研究只研究其算法本身,并没有将角点检测与亟待解决的建筑物形变监测联系起来,研究建筑物形变监测过程中的关键点检测精度和响应速度对监测建筑安全具有重大意义。
因此,针对传统Harris算法应用于大型建筑物图像角点检测时角点检测精度低、伪角点较多、运算时间长以及角点聚簇现象严重的现有不足出发,现提出一种基于提升尺度单一性和灰度差值预筛选的改进算法,以提高其在建筑物形变检测中的角点检测效果和响应速度。
Harris算法[19]是一种基于图像灰度变化的角点检测算法。算法核心思想是根据计算待测像素点的灰度变化值判断是否为角点,具体计算方法是根据图像水平方向和垂直方向上的梯度自相关函数得到自相关矩阵M,计算出矩阵M的两个特征值,当两个特征值都很高时认为该点为角点。计算公式为
(1)
(2)
CRF(x,y)=det(M)-k[tr(M)]2
(3)
式中:Eu,v(x,y)为目标像素(x,y)在水平和垂直方向上分别移动u和v后的灰度变化值;wu,v为高斯函数;u为在x方向上移动的距离;v为在y方向上移动的距离;o为无穷小项;I(x+u,y+v)为像素点在(x+u,y+v)处的像素灰度值;I(x,y)为(x,y)处的像素灰度值;Ix和Iy为像素点在(x,y)处水平和垂直方向上的一阶偏导数;CRF(x,y)为角点响应函数;det(M)表示矩阵M的行列式;tr(M)为矩阵M的迹;k为常数,一般在0.04~0.06取值。
为了使本文算法对尺度变化下的相同图像稳定地检测出角点,本文研究中引入高斯核卷积函数与灰度图像进行卷积运算,得到多个尺度下的灰度图像,在这基础上进行角点检测。一个大小为m×n的数字图像I的尺度空间L(x,y,δ)可以定义为该固定尺度参数下的高斯函数G(x,y,δ)与其自身的卷积,如式(4)和式(5)所示:
L(x,y,σ)=G(x,y,σ)*I(x,y)
(4)
(5)
式中:*为卷积运算;σ为高斯模板的大小;(x,y)为像素点位置,通过连续变化的尺度参数对图像进行变换可以获得图像的多尺度序列。
通过与图像序列进行卷积得到变换后的卷积序列,高斯核的大小不同代表着不同尺度下的图像,图像在较小尺度下会保留着图像的细节信息,在一些应用场景如大型建筑物角点检测方面显得尤为重要,而在较大尺度下图像的全局信息会显示得很清楚。而角点具有稳定性和邻域不变性,通过高斯核变换在多次尺度变换后检测到的角点会自动筛除掉那些在大尺度下检测到的点,这种在大尺度下检测到的点由于检测较为模糊,往往容易引入噪声点和冗余点,而在较小的尺度下则会被舍去。
为了减少对大型结构物图像的检测时间,提高响应速度,本文算法通过对待测像素点周围邻域的8个像素点进行灰度差计算,设置一个阈值g,灰度差小于阈值时则保留该像素点,不满足阈值条件则舍去该像素点,依次循环直至将所有满足条件的像素点检测出来。灰度差计算公式为
(6)
设待测像素点坐标为(x,y),与其邻域8像素点的灰度差分别为d1~d8,判断阈值为g,具体计算公式如式(7)所示,依次遍历图像中的所有像素点,直到所有的初始角点被检测出来,如式(8)所示。
设待测像素点邻域中与其相似的像素数目为n(x,y),则计算公式为
(7)
(8)
式中:C(x,y)为计算待测像素点与其邻域内灰度差值较大的点;n(x,y)为待测像素点与其邻域内灰度差值较大的点的集合;(x,y)为模板上的待测像素点;Ω为待测图像上所有点的集合;g为灰度差阈值;i=1,2,…,8。
通过上述步骤得到初始角点后,不可避免地会存在伪角点,经过初步检测到的初始角点相比之前的像素点极大的减少,故可以用SUSAN[20]检测的思想来进一步提取出真实角点。定义一个一定大小的圆形模板,在图像上依次移动圆形模板,如果模板中的像素与核点像素之间的灰度差低于某个阈值,则认为该点与核点相似,所有这些像素点组成的区域称为核值相似区(univalue-segment-assimilating-nucleus, USAN),如式(9)所示。根据USAN面积的大小判断该像素点是否为角点,具体判断公式如式(10)所示。
定义直径D=7的圆形模板,记经过初步筛选后的像素点集为n(u,v),其USAN面积为g(u,v),则
(9)
将USAN的面积和给定的阈值d进行比较,计算出角点响应函数R(u,v),即
(10)
当计算边缘角点时,g一般取3/4Nmax,当计算角点时,g一般取1/2Nmax,一般g不用调整就能取得很好的角点检测效果,最后通过非极大值抑制获得最终角点。
将本文研究中基于提升尺度单一性和灰度差值预筛选算法和Harris原算法、文献[21]算法、文献[22]算法、文献[23]算法对大楼建筑物进行角点检测对比实验,为了避免各种算法运行时各项指标的偶尔误差发生,本文将所有算法统一运行在7-8700 CPU、3.20 GHz,3.19 GHz的处理器,16 GB的内存、Windows 10专业版64位的操作系统,NVIDIA GeForce GTX 1060 6GB的双显卡的台式电脑上,该电脑统一在开机一段时间后电脑运行平稳后再进行角点检测,同时后台未运行其他任何软件,禁止所有程序在运行过程中弹出窗口,运行程序为MATLAB R2020b。为了保证实验数据的真实性和避免实验图片数量过少带来偶然误差,本文实地拍摄了30张具有代表性的大楼建筑物图像,建立了数据库DATASET,记该数据库的大小为n,n代表数据库中图像的数量,本文中n为30。
在相同的硬件条件和外部环境下,为了避免单一实验造成的随机误差,对所有算法在同一条件下均运行N次,本文研究中N为30,对所有数据量取其平均值,最大限度地避免随机误差的产生,使实验数据更具有说服力。为了更好地表现其角点检测效果,以及增强角点检测的实用性,本文研究中实地拍摄了具有代表性的大楼建筑物作为实验对象,5种算法实验结果如图1~图5所示。
图1 Harris算法角点检测结果图Fig.1 Harris algorithm corner detection result
图2 文献[21]算法角点检测结果图Fig.2 The corner detection result of the algorithm in ref.[21]
图3 文献[22]算法角点检测结果图Fig.3 The corner detection result of the algorithm in ref.[22]
图4 文献[23]算法角点检测结果图Fig.4 The corner detection result of the algorithm in ref.[23]
图5 本文算法角点检测结果图Fig.5 The corner detection result of the proposed algorithm
为了科学地比较5种算法的角点检测结果,统计了Harris原算法、文献[21]算法、文献[22]算法、文献[23]算法以及本文算法对同一建筑物图像角点检测的具体数据,为了避免其偶然误差,将5种算法在同一条件下分别对每张图片检测N次,N取取30,将每次的数据记录后取其平均值作为参考数值。
涉及的角点检测算法在评价准确性和可靠性时需和真实角点位置进行对比,为了对比本文涉及的角点检测算法的优劣,需要图像的真实角点作为参考量。采用图像标注软件Labelme对STRUCTURE_DEFORMATION_DATASET中的大楼建筑物图像进行标注。为了进一步计算和比较5种算法对建筑物图像检测的实际效果,分别比较了其准确性、可靠性和高效性。
2.2.1 准确性比较
采用正确率η和伪检率δ来描述算法的准确性,其中正确率为算法检测出来的真实角点数占检测到的角点总数百分比,具体计算公式为
(11)
式(11)中:η为正确率,即η算法检测的正确角点数占检测角点总数的比重;a为正确角点数;b为检测角点总数。5种算法均对数据库图像进行30次角点检测实验,统计并计算出相关平均值指标,求出其平均正确率,具体数值如表1所示。
表1 5种算法的平均正确率Table 1 The average accuracy of the five algorithms
伪检率为算法检测出来的伪角点数占检测到的角点总数的百分比,具体计算公式为
(12)
式(12)中:δ为伪检率,即算法检测的伪角点数占检测角点总数的比重;c为伪角点数;b为检测角点总数。δ越大说明算法检测出来的伪角点数多,算法的准确性较差,5种算法均对数据库图像进行30次角点检测实验,统计并计算出相关平均值指标,依次求出五种算法对数据库中30张实验图片的伪检率,如表2所示。
由于实地拍摄的大楼建筑物表面大都是凹凸不平的,或多或少存在细坑、凸起、附着物等,Harris原算法检测时的区分角点与周围像素点之间的阈值选取的比较小,导致检测到的角点数量非常多,角点聚簇现象明显,正确率低,伪检率高,而本文研究中的4种改进算法均修正了角点筛选标准,只有与周围像素点对比比较明显的角点才被判定出来。
表2 5种算法的平均伪检率Table 2 The average false detection rate of the five algorithms
其中文献[21]中将非极大值抑制中的方形窗口替换为圆形窗口有效地减少了误检;文献[22]中加入一种加权系数自适应的加权均值滤波来有效地减少伪角点的形成;文献[23]中引入自适应的灰度差分理念和积分图像的思想提高了角点提取的准确性,本文算法中通过引入多尺度的高斯核函数,结合了在高斯核小尺度下定位准确和大尺度下抗噪能力强的优点,提高了准确性。从表1和表2中可以看到4种Harris改进算法相较于Harris原算法在正确率上都有着明显的提高,在伪检率上有着明显的降低,而本文算法相较于其他3种Harris新算法有着更明显的效果,正确率更高,伪检率更低,算法检测的准确性更好。
2.2.2 可靠性比较
用检测率来表示可靠性的大小,当算法检测出来的真实角点数在整个图像的真实角点总数的比例越大时,认为该算法越可靠,具体计算公式为
(13)
式(13)中:θ为检测率,表示算法检测的正确角点数占标注角点数的比重来描述可靠性;a为正确角点数量;d为待测图像的标注角点数。当θ越大,表明该算法检测出来的真实角点数越多,可靠性越好,当θ越小,表明该算法检测出来的真实角点数越少,可靠性越差。将5种算法对数据库图像进行30次角点检测实验,统计并计算出相关平均值指标,平均检测率结果如表3所示。
Harris算法对图像中的每个像素点都进行角点判断,通过阈值的判断和非极大值抑制的筛选后,不容易丢失角点,同时可以较稳定地检测出角点,但计算量大实时性不高,而在Harris改进算法中是通过减少初始遍历的角点数来进行修正,不可避免地丢失一些处于孤立处的角点,检测率相比Harris原算法来说没有得到很大的提高,但加快了响应速度。由表3角点平均检测率可知Harris原算法的检测率也并不低,4种改进算法的检测率都优于Harris原算法,进一步地提高了角点检测的精确度,并且本文算法的检测率略微好于其他3种改进算法。
2.2.3 高效性对比
用5种算法对每张大楼建筑物图像角点检测运行N次的平均时间作为对该图像的角点检测所需时间,当所需时间越少,则说明该算法的运行速度更快、算法的高效性更好,具体计算公式为
表3 5种算法的平均检测率Table 3 The average detection rate of the five algorithms
(14)
式(14)中:Ti为角点检测算法运行第i次的时间。将5种算法对数据库图像进行30次角点检测实验,求出5种算法的平均检测时间,具体数据如表4所示。
由表4可知Harris原算法的运行时间最长,4种Harris改进算法相对于Harris原算法都减少了角点检测时间,提高了角点响应速度,与文献[21]算法、文献[22]算法及文献[23]算法相比,本文算法在实时响应、检测速度上具有更快的优势。
将5种算法对30张数据库图像角点检测的相关指标取其平均值,得到5种算法相关指标比较表,如表5所示。
表4 5种算法的平均检测时间Table 4 The average detection time of the five algorithms
表5 5种算法平均指标值Table 5 The average index value of the five algorithms in this paper
由于实际条件下拍摄的大楼建筑物存在诸多干扰信息,图像表面大多凹凸不齐,给大楼建筑物的形变监测带来了困难。由表5可知,Harris原算法对30张大楼建筑物图像角点检测的正确率较低,伪检率较高,而文献[21]算法、文献[22]算法、文献[23]算法、本文算法均提高了对大楼建筑物图像角点检测的正确率,降低了伪检率。
本文算法结合多尺度下的角点检测以及初始像素点预筛选,对大楼建筑物图像角点检测的正确率提升优于其他3种改进算法,平均正确率提高了近14.78%。同时检测率代表着算法检测效果的好坏,文献[21]算法、文献[22]算法、文献[23]算法以及本文算法相对于Harris原算法来说,检测率提升不大,但相比之下本文算法的平均检测率仍提升了近6.40%。结合5种算法平均检测时间来看,可以得出在检测率相差不大的检测结果下,后4种算法所需时间更少,其中本文算法在初始像素点预筛选中使用邻域像素点作差比较来代替原Harris算法中的乘法运算,进一步地缩短了检测时间,综合5种算法的平均检测时间来看,本文的检测时间最短,平均检测时间提升了近21.26%,高效性最好,角点响应速度更快。
本文算法提升了Harris算法的检测精度和响应速度,由图1~图5可知本文算法同样提升了建筑物的角点检测中,可以更好地应用于建筑物形变监测中,扩展了Harris算法的应用范围。近年来,研究者们对Harris算法不断进行改进,应用于不同的实际背景中。如蔡欣展等[24]通过将Harris算法、FAST算法以及Brute-Force匹配相结合,提高了图像配准的速度和精度。许鑫等[25]通过K-means聚类分割算法进行特征提取,再利用Harris算法对小麦苗茎基部端点进行识别,实现了大田小麦基本苗的快速、精确、智能化监测识别。周伟等[26]通过多边形逼近方法提取目标轮廓拐角顶点和最小二乘法对最长边顶点进行直线拟合的改进,提高了对芯片图像的快速校正效率。苗荣慧等[27]通过提出一种基于图像块改进Harris角点检测的农田图像拼接算法,旨在构造大视场的农田图像。而本文算法改进了Harris算法的检测精度和响应速度,在对建筑物形变监测中有着较好的检测效果,因此可以用于地震等自然灾害中建筑物的损毁状况监测,扩展了算法的实际应用领域。
图1~图5即5种算法对顺序排列的1~30张图像进行角点检测的实验结果图,从图1~图5中可以看出本文算法对大楼建筑物图像的角点检测图相比Harris原算法和3种改进算法来说大部分检测效果较好,但也存在少数检测效果较差的结果图,本节特列举3张典型的实验结果图进行分析说明,如图6~图8所示。
由图6可知,在图像25的角点检测中Harris原算法存在角点聚簇现象严重,检测时间较长等缺点。4种算法均在一定程度上进行了优化,由图6可以看出本文算法的检测效果低于文献[22]算法、文献[23]算法,图像25表面颜色较深,本文算法在进行像素点预筛选灰度计算时,角点和周围邻域内的像素点之间的灰度差较大,此时算法检测到过多的伪角点,导致角点聚簇现象严重,由图6(e)可知角点聚簇现象严重,检测率较低。
而文献[21]算法中将非极大值抑制的方形窗口优化为圆形窗口,增强了角点检测的旋转不变性,角点检测的准确度得到改善,但丢失了大量真实角点。文献[22]算法中引入加权均值滤波函数进行角点筛选,进一步减少了角点聚簇现象,但仍存在较多伪角点。文献[23]中利用自适应灰度差分思想和积分图像可以更好地去除伪角点,但明显检测到的真实角点数也大量减少。
图6 图像25的5种算法角点检测结果图Fig.6 Five algorithms of corner detection results of image 25
图7 图像28的5种算法角点检测结果图Fig.7 Five algorithms of corner detection results of image 28
图8 图像6的5种算法角点检测结果图Fig.8 Corner detection results of five algorithms in image 6
如图7(a)所示,Harris原算法对图像28角点检测时同样存在角点聚簇现象严重,准确度较差,运算时间较长的不足。文献[21]算法进一步降低了Harris算法的聚簇效应,提高了实时性,但由图7(b)可知丢失了大量角点。文献[22]算法引入加权均值滤波进一步提高了角点检测的抗噪能力和实时性,从图7(c)中可以清晰地看到角点聚簇现象得到很大改善,角点提取精度进一步提升。文献[23]算法在积分图像和自适应灰度差分思想的改进下提高了对图像28角点检测的准确度,但同样丢失了对大量真实角点的检测。由图7对比可知本文算法虽角点聚簇现象较为严重,但检测出了其他3种改进算法没有检测到的角点,检测率得到提高。
如图8所示,5种算法对图像6的角点检测效果都较差,图像6在拍摄时离相机较远,光线较暗,关键角点信息难以检测出来,算法改进后依然无法将大部分角点检测出来,图像11、图像20、图像27情况类似,由于图像拍摄时成像较差,导致角点检测效果很差。所以在实际大楼建筑物的形变监测中,必须保证大楼建筑物图像拍摄的质量,可以多次拍摄进行角点检测取其平均值降低误差。
从大型建筑物需进行形变监测的实际需求出发,通过摄影成像的方法进行角点检测得到大型建筑物形变前后的位置误差,提出了一种基于提升尺度单一性和灰度差值预筛选的角点检测算法。首先通过引入高斯核函数进行卷积操作实现在多种尺度下角点检测的目标,然后通过对待测像素点与其周围8邻域像素点进行作差筛选像素点以减少计算量,最后再利用最小核值相似区的思想进行角点筛选提升角点检测的精度。实验结果表明,本文算法相比Harris算法及其他改进算法来说更能准确提取出大楼建筑物的角点,正确率平均提升了近15%,平均检测时间缩短了近21%,可以更好地适用于大楼建筑物的形变检测实际应用中,提高其形变检测的准确性和检测速度,扩大实际应用范围。