王 直, 汤宁宁
(江苏科技大学 计算机科学与工程学院,江苏 镇江 212003)
基于GPU的Harris图像特征提取
王 直, 汤宁宁
(江苏科技大学 计算机科学与工程学院,江苏 镇江 212003)
船用钢板的加工制造主要采用水火弯板的加工过程,随着三维测量技术的发展,现代工业系统主要采用视觉测量技术,它针对目标钢板的纹理特征不明显的特点,提出了一种点阵结构光的方法来测量钢板的三维形状.通过对钢板投影一些点阵,采用基于GPU的Harris加速角点检测算法提取投影特征点.实验结果表明,对于分辨率为995×646大小的图像加速比提高了26.36倍.
点阵结构光; GPU; Harris; 特征点提取
目前国内的船舶企业在船体大型曲面分段加工环节仍使用人工水火弯板的加工方式,严重影响了船舶建造效率.而且,单纯依靠人工的手段往往会有误差,在误差允许的范围内可以认为达到了加工要求的标准,一旦超出允许范围就需要返工,这样耗时、耗财、耗力.随着科技的发展,利用计算机技术和数控技术来实现船用钢板加工的自动化,这对提高劳动生产率、减轻工人劳动强度、提高加工精度、缩短造船周期有着重大的意义.
物体三维几何形状的测量方法一般可分为接触式和非接触式两大类.考虑加工环境等实际条件,一般采用非接触式测量方法.目前主动式的非接触式视觉测量技术以结构光法和相位移法优势最为显著,测量原理都是基于光学三角法.由于结构光法快速、精确、简便,因而广泛应用在三维物体面型测量中.文中采用光学投影仪投影点阵结构光[1],投影点阵包含足够的信息量以用来测量.图形处理器(graphics processing unit,GPU)的快速发展,已被广泛应用到视觉模拟、图像处理、数值计算等领域.Harris检测算法,不受摄像机姿态以及光照的影响,是效果比较好的一种算法.为提高Harris角点检测算法提取特征点的速度,利用现代图形处理硬件来实现算法,对特征点检测设计并行算法,实现基于GPU的Harris特征点提取并行算法.
1.1 Harris角点检测算法原理
图像特征是指一幅图像中“有趣”的部分,是进文献[2-3]在Moravec算子的基础上提出了Harris角点检测算法,Harris采用了新的角点判定方法,算子用Taylor展开去近似任意方向.以点(x,y)为中心的邻域内,计算矩阵M,矩阵形式即
(1)
式中:Ix为x方向的差分,Iy为y方向的差分,w(x,y)为高斯函数.
矩阵M的两个特征向量I1和I2与矩阵M的主曲率成正比,如果两个曲率值都高,那么就认为该点是特征点.Harris利用λ1,λ2来表征变化最快和最慢的两个方向.若两个都很大则就是角点;一个大一个小就是边缘;两个都小就是在变化缓慢的图像区域.
矩阵特征值的求解过程运算量大,为提高Harris角点检测的效率,实际计算时并不直接计算特征值,而是根据矩阵对角线元素和行列式之间的关系来进行判断.两个特征值的和等于矩阵M的迹(trace),两个特征值的积等于矩阵M的行列式.所以用下式来判定角点质量:
R=det(M)-k·trace2(M)
(2)
式中:k常取0.04~0.06.det(M)在边缘处较小而在角点处较大,trace(M)在边缘和角点处保持一致.因此,当像素点(x,y)的R值为局部最大时,即为角点.
1.2 Harris算法的GPU实现
1.2.1 CUDA技术概述
多年来计算机图形处理器(GPU)以大大超过摩尔定律的速度高速发展,从而极大地提高了计算机图形处理的速度,并促进了与计算机图形相关应用领域的快速发展.与此同时,图形处理器绘制流水线的高速度和并行性以及近年来发展起来的可编程功能为图形处理以外的通用计算提供了良好的运行平台.这些都加速了NVIDIA公司推出的CUDA技术.
CUDA编程[4-5]模型将CPU作为主机(Host),GPU作为CPU的协处理器(co-processor)或者设备(device).CPU通过调用GPU的内核函数(kernel)来给GPU分配计算任务.CUDA采用SIMT(single instruction multiple thread,单指令多线程)执行模型实现GPU计算.CUDA编程模型最重要的创新是在同一个block中的线程,可以进行数据通信.这一特性可以显著提高执行效率,并大大拓展了GPU可以适用的范围.
1.2.2 Harris GPU实现过程
利用GPU技术实现Harris算法,算法中有多个步骤是由GPU以并行的方式进行的:
1)用OpenCV载入彩色图像并初始化图像.
2)将CPU中图像以纹理形式传送到GPU中,GPU上的基本数组数据结构是纹理和顶点数组,CPU上任何数据数组都能在GPU上使用纹理代替.
3)将Harris特征点提取算法以片段程序的形式融入到GPU的渲染管线中[6],GPU图形处理管线如图1.
4)启动渲染过程,渲染过程实现将片段程序的结果写入存储器中.
5)将纹理数据回传CPU并显示.
该实现过程中GPU和CPU的任务分配如图2.
图1 GPU图形处理管线
图2 GPU和CPU的任务分配
其中,步骤3)中Harris特征点提取算法处理过程又可以分为两步:① 根据1.1节中提到的Harris角点检测算法原理,确定衡量角值的函数,并根据函数计算图像中每个像素的角值.角值大于预先指定阈值的像素就会被保留下来作为候选点.角值函数反映的是图像变化的剧烈程度或是图像边缘曲线上的曲率.② 非极值抑制从候选点中挑选出具有局部极值的点作为角点,这保证每个位置的角点具有唯一性.
上述两步算法的实现分析:
首先是角值计算的过程.将CPU中图像以纹理形式载入GPU的显存中,根据函数计算图像中像素的角值,小于阈值的角值被置零,即表明该点不是角点,其余点被保留下来作为角点的候选点.这个过程作为片段程序被GPU中的多个片段处理器并行调用,也即是步骤3)的过程.这正是GPU具有高效并行计算能力的主要原因.
其次是非极值抑制[7]过程.利用收敛算法进行非极值抑制.该算法需要运行若干次直到所有点被判定为止.在每次执行中并行判断图像中每个点,当确定某点是角点,把角值置为1,即表明该点是角点.判断的标准分为两种情况:
1)当前点角值为0或1,说明当前该点已经确定是否为角点.
2)如果当前点角值为其它值,说明该点未被确定是否为角点,则需要进一步判断:①假如当前点存在任何邻点角值为1,就把该点角点置0,说明当前点存在邻点是角点,当前点即不是角点;②假如当前点的所有邻点的角值都不为1,并且当前点角值比所有邻点角值都大,就把当前点的角值置1,即当前点是角点.
算法执行后,仍会有一些点没有确定是否为角点,算法下一次的执行又要开始,整个过程重复上面的步骤,直到所有点有确定的结果.
2.1 实验运算平台
硬件平台:CPU为Pentium(R) Dual-Core E5500,主频2.80GHz,系统内存2.00GB;GPU为NVIDIA GeForce 9600M GT,显存1GB,显卡的核心频率为640MHz.
软件平台:操作系统为Microsoft Windows XP,Microsoft Visual Studio 2008,CUDA Toolkit 3.2.16,NVIDIA GPU Computing SDK 3.2.16,OpenCV_2.4.2.
2.2 实验结果分析
图3为单反相机拍摄的投影点阵结构光的船用钢板原图像,图4为基于GPU的Harris特征点提取后的图像.
本实验统计了同一幅大小相等的图像处理的运行时间,最后取平均值,得到实验结果(表1).
表1 GPU与CPU计算效率比较
由表1可以看出:基于GPU的Harris特征点提取效率明显高于传统算法下CPU的特征点提取运行效率.其次,由于GPU强大的并行计算处理能力,推测图像越大越复杂,计算效率比CPU越高,直接提高了算法在实际应用中的实时性、快速性、有效性.由于文中仅检验GPU的加速情况,故采用的是压缩后的图像,实际中图像比本文采集到图像大几十甚至百倍.最后,由于显卡性能的影响,不同性能的显卡加速比是不同的,越是高端的显卡处理速度越快,加速比越大.
图3 投影点阵结构光船用钢板
图4 基于GPU的Harris特征点提取
通过利用当前显卡中的图形处理单元,Harris算法的GPU实现与普通的CPU实现相比大大提高了实时性.但是,在实现的过程中,并不是所有的步骤都在GPU上快速实现的,而是整个实现过程采用CPU和GPU混合实现的方式进行的.由文中实验结果可知,Harris算法特征点提取的效率还有进一步提高的空间,使运算速度和效率在现有的基础上都能得到新的提升.
References)[1] 王直,赵越超.基于计算机视觉的钢板测量系统研究[J].江苏科技大学学报:自然科学版,2013,27(1):70-73. Wang Zhi, Zhao Yuechao. Study of a measurement system for steel plates based on computer vision[J].JournalofJiangsuUniversityofScienceandTechnology:NaturalScienceEdition, 2013,27(1): 70-73.(in Chinese)
[2] 王崴,唐一平,任娟莉,等. 一种改进的Harris角点提取算法[J].光学精密工程,2008,16(10):1995-2001. Wang Wei, Tang Yiping, Ren Juanli,et al. An improved algorithm for Harris corner detection[J].OpticsandPrecisionEngineering, 2008,16(10):1995-2001.(in Chinese)
[3] 肖汉,周清雷, 张祖勋. 基于多GPU的Harris角点检测并行算法[J].武汉大学学报:信息科学版,2012,37(7):876-881. Xiao Han, Zhou Qinglei, Zhang Zuxun. Parallel algorithm of Harris corner detection based on Multi-GPU[J].GeomaticsandInformationScienceofWuhanUniversity, 2012,37(7):876-881.(in Chinese)
[4] 张树,褚艳利.GPU高性能运算之CUDA[M].北京:清华大学出版社,1997.
[5] 董荦,葛万成,陈康力.CUDA并行计算的应用研究[J].信息技术,2010(4):11-15. Dong Luo, Ge Wancheng, Chen Kangli. Study on application of parallel computation on CUDA[J].InformationTechnology,2010(4):11-15.(in Chinese)
[6] 朱遵尚,刘肖琳.基于GPU的实时亚像素Harris角点检测[J].计算机工程,2010,36(12):213-215. Zhu Zunshang, Liu Xiaolin. Real-time sub-pixel Harris corner detection based on graphics processing unit[J].ComputerEngineering, 2010,36(12):213-215.(in Chinese)
[7] 吴颀峰. 基于GPU的数字图像处理算法研究[D].江西赣州:江西理工大学,2011.
(责任编辑: 曹 莉)
Harris image feature extraction based on GPU
Wang Zhi, Tang Ningning
(School of Computer Science and Engineering, Jiangsu University of Science and Technology, Zhenjiang Jiangsu 212003, China)
The manufacturing of hull steel is mainly adopted for line heating. With the technology innovation and the development of 3D measurement techniques, modern industrial system is mainly used for visual measurement technology. Because of unclear texture of the target steel, a point-array structured light method is used for the measurement of 3D shape. This paper uses the algorithm of Harris corner detection based on GPU to extract these projected feature points on the steel plate. Experimental results show that GPU can implement nearly 26.36 times speedup rate for the resolution of 995×646.
point-array structured light; GPU; Harris; feature points extraction
10.3969/j.issn.1673-4807.2014.03.015
2013-06-29
王 直(1963—),男,教授,研究方向为视觉检测、导航控制等.E-mail:cw@just.edu.cn
TP391
A
1673-4807(2014)03-0277-03
行许多其他高级计算机图像分析的起点,因此算法成功与否与特征的定义和特征提取的结果有很大关系.