基于 GPU 的实时亚像素 Harris角点检测
- 格式:pdf
- 大小:169.64 KB
- 文档页数:3
一种基于Harris和图像对比度的角点检测方法王长元;赵亚亭【期刊名称】《计算机与数字工程》【年(卷),期】2011(39)10【摘要】目前各种角点检测方法,对于不同的图像需要选取不同的阈值才能保证结果的精确度,而阈值的选取是比较麻烦的.此处提出了一种通用的方法,通过适当改变图像直方图增大图像对比度,再使用固定阈值的Harris方法对图像中的角点进行提取.该方法解决了阈值选取困难的问题,实验结果表明该方法有效提高了结果的精度,在很多场合比较适合.%In each method of corner detection, different thresholds should be chosen for different images in order to ensure that the results are acceptable. However, tt's waste of time and difficult to choose a threshold. Here a universal method is proposed to solve this problem. In this method the histogram of an image is changed first, and then Harris corner detection method with a constant threshold is used to detect the corners in this image. This method solved the difficulty of choosing a threshold. And the result of experiments showed that this method can detect the corners more precise, and is quite useful in some fields.【总页数】3页(P174-175,184)【作者】王长元;赵亚亭【作者单位】西安工业大学西安 710032;西安工业大学西安 710032【正文语种】中文【中图分类】TP391.41【相关文献】1.一种快速自适应的Harris角点检测方法研究 [J], 王慧勇2.一种改进的基于Harris的角点检测方法 [J], 毛雁明;兰美辉;王运琼;冯乔生3.基于图像对比度区域的自适应Harris角点检测算法 [J], 唐雄;潘骏;王岳;孙亮;4.基于图像对比度区域的自适应Harris角点检测算法 [J], 唐雄;潘骏;王岳;孙亮5.一种基于Harris-Laplace算法的亚像素角点检测方法 [J], 高翔;万成浩;李润生因版权原因,仅展示原文概要,查看原文内容请购买。
角点检测的原理角点检测是一种计算机视觉领域中常用的图像处理技术,它的原理是通过对图像中的角点进行检测和提取,从而分析和识别图像中的特定目标或结构。
角点是图像中具有显著变化的位置,它们通常位于物体的边缘、交叉处或纹理变化明显的区域。
在角点检测中,我们希望找到这些具有显著变化的点,因为它们对于图像的特征描述和目标识别非常重要。
角点检测的原理是基于图像中的灰度变化或梯度变化来判断某个点是否为角点。
常用的角点检测算法有Harris角点检测、Shi-Tomasi 角点检测等。
Harris角点检测算法是由Chris Harris和Mike Stephens于1988年提出的,它通过计算图像中每个像素点的灰度梯度来确定其是否为角点。
该算法首先计算每个像素点的梯度值,然后根据梯度的变化情况来判断该点是否为角点。
如果一个点的梯度变化比较大,说明该点可能是角点。
Shi-Tomasi角点检测算法是在Harris角点检测算法的基础上进行改进的。
它引入了一个新的评价指标,即最小特征值,来代替Harris算法中的响应函数。
该算法通过计算每个像素点的最小特征值来判断其是否为角点。
最小特征值越大,说明该点越可能是角点。
除了Harris角点检测和Shi-Tomasi角点检测,还有一些其他的角点检测算法,如FAST角点检测、SIFT角点检测等。
这些算法在原理和实现方式上有所不同,但都是基于图像中的灰度变化或梯度变化来检测角点。
角点检测在计算机视觉和图像处理中有着广泛的应用。
它可以用于目标识别、图像匹配、图像拼接等领域。
通过检测和提取图像中的角点,我们可以得到图像的特征描述,从而实现对图像的分析、识别和处理。
总结起来,角点检测是一种通过对图像中的角点进行检测和提取的图像处理技术。
它的原理是基于图像中的灰度变化或梯度变化来判断某个点是否为角点。
角点检测在计算机视觉和图像处理中有着广泛的应用,可以用于目标识别、图像匹配、图像拼接等领域。
计算视觉——Harris⾓点检测⽬录⼀、Harris ⾓点检测1.1 Harris ⾓点检测原理1.2⾓点检测算法⼆、基于Harris⾓点检测对不同类型图像做出的对⽐实验2.1 平坦图像的Harris⾓点检测实验结果2.2 边缘丰富图像的Harris⾓点检测实验结果2.3⾓点丰富图像的Harris⾓点检测实验结果三、结论与总结⼀.、Harris ⾓点检测1.1 Harris ⾓点检测原理Harris⾓点检测算法是最简单的⾓点检测⽅法之⼀。
它的基本思想是使⽤⼀个固定窗⼝在图像上进⾏任意⽅向上的滑动,⽐较滑动前与滑动后两种情况,窗⼝中的像素灰度变化程度,如果存在任意⽅向上的滑动,都有着较⼤灰度变化,那么我们可以认为该窗⼝中存在⾓点。
⽤数学⽅法来刻画⾓点特征:公式解释:>[u,v]是窗⼝的偏移量>(x,y)是窗⼝内所对应的像素坐标位置,窗⼝有多⼤,就有多少个位置>w(x,y)是窗⼝函数,最简单情形就是窗⼝内的所有像素所对应的w权重系数均为1。
但有时候,我们会将w(x,y)函数设定为以窗⼝中⼼为原点的⼆元正态分布。
如果窗⼝中⼼点是⾓点时,移动前与移动后,该点的灰度变化应该最为剧烈,所以该点权重系数可以设定⼤些,表⽰窗⼝移动时,该点在灰度变化贡献较⼤;⽽离窗⼝中⼼(⾓点)较远的点,这些点的灰度变化⼏近平缓,这些点的权重系数,可以设定⼩点,以⽰该点对灰度变化贡献较⼩,那么我们⾃然想到使⽤⼆元⾼斯函数来表⽰窗⼝函数,这⾥仅是个⼈理解,⼤家可以参考下。
所以通常窗⼝函数有如下两种形式:根据上述表达式,当窗⼝处在平坦区域上滑动,可以想象的到,灰度不会发⽣变化,那么E(u,v) = 0;如果窗⼝处在⽐纹理⽐较丰富的区域上滑动,那么灰度变化会很⼤。
算法最终思想就是计算灰度发⽣较⼤变化时所对应的位置,当然这个较⼤是指针任意⽅向上的滑动,并⾮单指某个⽅向。
1.2⾓点检测算法⾓点检测算法可归纳为3类:基于灰度图像的⾓点检测、基于⼆值图像的⾓点检测、基于轮廓曲线的⾓点检测。
harris角点检测算法的原理宝子!今天咱来唠唠这个超有趣的Harris角点检测算法的原理呀。
你看啊,在图像里呢,角点可是很特别的存在。
就像是人群里那个特别出众的帅哥或者美女,一眼就能被瞅见。
角点不是那种平平无奇的点哦。
比如说在一个方形的图像里,四个角就是很典型的角点。
那这个Harris角点检测算法呢,就像是一个超级侦探,专门去把这些角点给找出来。
想象一下,这个算法是怎么看待图像的呢?它把图像看成是一个充满变化的小世界。
对于图像中的每个小区域,算法会去研究这个区域周围的像素是怎么变化的。
就好比你站在一个小广场上,看看周围的人是怎么分布的,是均匀散开呢,还是有某个方向特别密集或者稀疏。
这个算法有个很关键的东西叫自相关函数。
这函数就像是一个小魔法棒,它会去计算每个小区域在不同方向上的像素变化情况。
如果在某个点的周围,不管你朝哪个方向去看,像素的变化都很明显,那这个点就很有可能是角点啦。
比如说,你在一个十字街头,不管你是看南北方向的街道,还是东西方向的街道,周围的景色(也就是像素)变化都很大,那这个十字路口就像是图像里的角点一样。
那这个算法具体是怎么操作的呢?它会先建立一个小的窗口,就像拿着一个小放大镜在图像上到处看。
这个窗口会在图像上滑动,每到一个地方,就开始计算这个地方的自相关函数。
这个计算过程呢,其实就是在看这个小窗口里的像素和周围像素的关系。
如果这个关系在各个方向上都很独特,那就有可能是角点啦。
你知道吗,这个算法还会用到矩阵呢。
不过别被矩阵吓到,它就像是一个小账本,记录着这个小区域像素变化的各种信息。
比如说,矩阵会告诉你这个区域在水平方向和垂直方向上像素变化的快慢呀之类的。
如果这个矩阵的特征值有某种特殊的情况,那就说明这个点很可能是角点。
就好像是这个小账本上的某些数字组合起来,就指向了这个特别的角点。
而且哦,这个Harris角点检测算法还有个很贴心的地方。
它不是那种很死板的算法,它会根据不同的图像特点去调整自己的判断标准。
【ComputerVision 】⾓点检测和匹配——Harris 算⼦⼀、基本概念⾓点corner:可以将⾓点看做两个边缘的交叉处,在两个⽅向上都有较⼤的变化。
具体可由下图中分辨出来:兴趣点interest point :兴趣点是图像中能够较鲁棒的检测出来的点,它不仅仅局限于⾓点. 也可以是灰度图像极⼤值或者极⼩值点等⼆、Harris ⾓点检测Harris 算⼦是 Haris & Stephens 1988年在 "A Combined Corner and Edge Detector" 中提出的 提出的检测算法, 现在已经成为图像匹配中常⽤的算法.对于⼀幅RGB 图像我们很很容易得到corner 是各个⽅向梯度值较⼤的点, 定义 函数WSSD(Weighted Sum Squared Difference)为:S (x ,y )=∑u ∑v w (u ,v )(I ((u +x ,v +y )−I (u ,v ))2(1)其中w (u ,v )可以看作采样窗,可以选择矩形窗函数,也可以选择⾼斯窗函数:I (u +x ,v +y )−I (u ,v )可以看作像素值变化量(梯度):使⽤泰勒展开:I (u +x ,v +y )≈I (u ,v )+I x (u ,v )x +I y (u ,v )y (2)(1)代⼊(2) S (x ,y )≈∑u ∑v w (u ,v )(I x (u ,v )x +I y (u ,v )y )2写成S (x ,y )≈(x ,y )A (x ,y )T其中 A 为 ⼆阶梯度矩阵(structure tensor/ second-moment matrix)A =∑u ∑v w (u ,v )I 2x I x I yI x I yI 2y 将A 定义为Harris Matrix,A 的特征值有三种情况:1. λ1≈0,λ2≈0,那么点x 不是兴趣点2. λ1≈0,λ2为⼀个较⼤的正数, 那么点x 为边缘点(edge)3. λ1,λ2都为⼀个较⼤的正数, 那么点x 为⾓点(corner)由于特征值的计算是 computationally expensive ,引⼊如下函数M c =λ1λ2−κ(λ1+λ2)2=det (A )−κtrace 2(A )为了去除加权常数κ 直接计算[]M ′c =det (A )trace (A )+ϵ三、⾓点匹配Harris ⾓点检测仅仅检测出兴趣点位置,然⽽往往我们进⾏⾓点检测的⽬的是为了进⾏图像间的兴趣点匹配,我们在每⼀个兴趣点加⼊descriptors 描述⼦信息,给出⽐较描述⼦信息的⽅法. Harris ⾓点的,描述⼦是由周围像素值块batch 的灰度值,以及⽤于⽐较归⼀化的相关矩阵构成。
特征点又叫兴趣点或者角点。
常被用于目标匹配,目标跟踪,三维重建等应用中。
点特征主要指图像中的明显点,如突出的角点、边缘端点、极值点等等。
特征点具有以下三种特性:▪旋转不变性;▪光照不变性;▪视角不变性。
用于点特征提取的算子称为兴趣点提取(检测)算子。
常用的有▪Harris角点检测;▪FAST特征检测;▪SIFT特征检测;▪SURF特征检测。
预备数学实对称矩阵如果有n阶矩阵A,其矩阵的元素都为实数,且矩阵A的转置等于其本身,则称A为实对称矩阵。
性质:▪实对称矩阵A的不同特征值对应的特征向量是正交的;▪n阶实对称矩阵A必可相似对角化,且相似对角阵上的元素即为矩阵本身特征值。
对角化:优点:满秩的对角方阵,可以直接看出特征值,特征向量等重要特征。
卷积算子—Sobel算子主要用于边缘检测,分别对水平和垂直方向上的边缘敏感。
对图像任意一点使用会产生对应的梯度矢量或者其法矢量。
对噪声具有平滑抑制作用,但是得到的边缘较粗,且可能出现伪边缘。
该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。
如果以A代表原始图像,Gx 及Gy分别代表经横向及纵向边缘检测的图像,其公式如下:梯度计算公式梯度方向计算公式如果等于零,代表图像该处拥有纵向边缘,左边比右边要暗。
基础知识1、角点使用一个滑动窗口在下面三幅图中滑动,可以得出以下结论:▪左图表示一个平坦区域,在各方向移动,窗口内像素值均没有太大变化;▪中图表示一个边缘特征(Edges),如果沿着水平方向移动(梯度方向),像素值会发生跳变;如果沿着边缘移动(平行于边缘) ,像素值不会发生变化;▪右图表示一个角(Corners),不管你把它朝哪个方向移动,像素值都会发生很大变化。
所以,右图是一个角点。
2、角点类型下图展示了不同角点的类型,可以发现:如果使用一个滑动窗口以角点为中心在图像上滑动,存在朝多个方向上的移动会引起该区域的像素值发生很大变化的现象。
—213— 基于GPU的实时亚像素Harris角点检测 朱遵尚,刘肖琳 (国防科技大学机电工程与自动化学院,长沙 410073) 摘 要:针对Harris角点检测精度和检测速度问题,利用现代图形处理器(GPU)对角点检测算法进行改进,提出一种基于GPU的快速亚像素Harris角点检测算法,该算法利用了GPU的并行处理能力和亚像素Harris角点检测算法的并行性特点。实验结果表明,对于分辨率为720×720的24 bit视频图像,该算法能够实现实时的亚像素级Harris角点检测。 关键词:亚像素;角点检测;图形处理器
Real-time Sub-pixel Harris Corner Detection Based on Graphics Processing Unit
ZHU Zun-shang, LIU Xiao-lin (College of Mechatronics Engineering and Automation, National University of Defense Technology, Changsha 410073) 【Abstract】In order to increase precision and efficiency of Harris corner detection algorithm, this paper takes advantage of the modern Graphics Processing Unit(GPU) to improve Harris corner detection algorithm by parallelizing. A fast sub-pixel Harris corner detection algorithm is presented based on GPU. This fast algorithm combines the parallel characteristics of GPU with Harris corner algorithm. Experimental result shows that GPU can implement the real-time sub-pixel Harris corner detection for 24 bit 720×720 video images. 【Key words】sub-pixel; corner detection; Graphics Processing Unit(GPU)
计 算 机 工 程 Computer Engineering第36卷 第12期
Vol.36 No.12 2010年6月
June2010
·图形图像处理· 文章编号:1000—3428(2010)12—0213—03文献标识码:A
中图分类号:TP391
1 概述 随着图形处理器(Graphics Processing Unit, GPU)[1]的快速发展,GPU不仅用于图形处理,可完全编程的顶点和片段处理器、支持浮点运算和支持绘制到纹理等特性使得GPU在通用计算[2]中表现突出。GPU在视觉模拟、图像处理、数值计算和系统模拟等领域已经成功应用。利用GPU的并行处理能力处理机器视觉领域的计算任务具有广泛的应用前景。 图像特征点检测是机器视觉的一个重要内容,在运动跟踪、姿态估计、3D重建、视觉定位和测量方面有着重要的应用。特征点检测的精度与速度直接对机器视觉系统产生影响。目前特征点检测的方法有:基于灰度的方法,基于轮廓的方法和基于参数模型的方法。基于灰度的方法简单直接,比较适合快速检测。Harris角点检测[3]是一种基于灰度的方法,通过计算像素所在位置的梯度检测角点。如果像素所在位置的2个方向梯度都比较大,则认为该像素位置为角点。Harris角点作为图像的一个重要局部特征,具有很好的定位性能和鲁棒性,在目标跟踪和基于特征的立体匹配中有着广泛应用。 为进一步提高Harris角点检测精度,在Harris角点检测的基础上,对角点检测进行亚像素级的改进,通过高斯曲面拟合实现亚像素级的Harris角点检测。同时,为了提高算法的实时性,利用现代的图形处理硬件来实现算法,对角点检测和高斯曲面拟合环节设计并行算法,实现基于GPU的实时亚像素级Harris角点检测的并行算法。 2 亚像素级角点检测算法 2.1 Harris角点检测[4] 对于一幅图像,角点与自相关函数的曲率特性有关。自
相关函数描述了局部图像灰度的变换程度,可表示为 2,,,,(,)uvxuyvuvuv
ExyIIω++=−∑ (1)
其中,(,)Exy是由于2个图像窗口偏移(,)xy而造成的图像灰度的平均变化;ω是图像窗口;I表示图像灰度。在角点处,图像窗口的偏移将造成自相关函数(,)Exy的显著变化。 对于式(1)在像素点(,)uv展开,局部图像灰度的自相关函数(,)Exy可近似表示成一次泰勒多项式形式:
22(,)2ExyAxByCxy=++ (2)
其中,A, B和C是二阶方向微分的近似,可分别表示为
22(,)(,)(,)AXhxy
BYhxyCXYhxy
⎧=⊗
⎪=⊗⎨
⎪=⊗
⎩
(3)
[][]T101101IXIxIYIy∂⎧=⊗−≈
⎪∂⎪
⎨∂⎪=⊗−≈
⎪∂
⎩
(4)
其中,(,)hxy是一个高斯平滑滤波函数;X和Y是一阶方向微分,可分别用图像灰度与x向差分算子[]101−和y向差分算子[]T
101−表示。式(2)可以写成:
[](,)xExyxyy⎡⎤=⎢⎥⎣⎦M (5)
作者简介:朱遵尚(1986-),男,硕士研究生,主研方向:图像处理,虚拟现实;刘肖琳,教授 收稿日期:2009-12-03 E-mail:zzs2623@yahoo.com.cn —214—
这里,矩阵M是自相关函数(,)Exy的近似Hessian矩阵: (,)(,)(,)(,)(,)AxyCxyMxyCxyBxy⎡⎤=⎢⎥
⎣⎦
(6)
在某一点的图像灰度自相关函数的极值曲率可以由矩阵M的特征值近似表示。如果矩阵M的2个特征值都比较大,说明在该点的图像灰度自相关函数的2个正交方向上的极值曲率都较大,所以,可认为该点为角点。 矩阵M行列式的值det()M正比于2个正交方向上的极值曲率的乘积。因此,定义的Harris角点量可由下式给出: 22222()(,)XYXY
Rxy
XY
−=
+ (7)
只要在某一点(,)Rxy超过某一阈值并且(,)Rxy为局部极大值,即认为该点为角点。 2.2 亚像素级角点提取 由上面Harris角点检测算法可以看出,角点的检测精度
是像素级的。为了更好地对角点定位,需要在Harris像素级角点检测的基础上,对角点邻域像素的自相关函数进行拟合内插。常用的拟合曲面是高斯曲面,其函数为 22002
()()2(,)exxyyfxycσ−+−−
= (8)
其中,拟合出的00(,)xy即为角点的内插位置。由于高斯函数
具有可分离的性质,这样就使得两维高斯曲面拟合可由2个一维高斯曲线拟合来完成,简化了拟合过程,因此有:
202
202
()2
()2
(,)()()()e()exxyyfxyfxfyfxcfycσ
σ
−−
−−
=⎧
⎪⎪=⎨
⎪⎪=⎩
(9)
其中,0x,0y即为角点的偏移量;σ为标准差。直接对式(9)
进行拟合很困难,这里的目的是找出曲线的顶点位置。对高斯曲线做变换,两边取对数得到: 202
202
()ln()ln2()ln()ln2xxfxc
yyfyc
σ
σ
⎧−
=−⎪
⎪
⎨−⎪
=−⎪⎩
(10)
式(10)分别是对应x, y的二次曲线,这样就能用取对数后的值来拟合抛物线,求出顶点坐标,使计算简化。 通过高斯曲面拟合内插后的角点检测精度在亚像素级。一维的高斯曲线拟合如图1所示。
(x+1,y)(x,y)(x-1,y)(x,y-1)(x,y-1)
图2 GPU图形处理管线 根据GPU图形处理管线的特点,将图像数据作为纹理,利用GPU片段程序实现亚像素Harris角点检测的计算任务,然后将渲染后的纹理读回CPU。 基于GPU算法的实现流程为: (1)初始化OpenGL和CG,主要是设定OpenGL环境,
初始化CG环境,设定OpenGL视口,使纹素与图像像素 一一对应。 (2)将CPU中图像以纹理形式传送到GPU中,GPU上的基本数组数据结构是纹理和顶点数组,CPU上任何数据数组都能在GPU上使用纹理代替。 (3)初始化片段程序,对于通用计算来说,片段处理器比顶点处理器更有用,因此,在片段程序中实现本文的算法。
(4)启动渲染过程,渲染过程实现将片段程序的结果写入存储器。在本文算法中,计算被拆成许多步,每一步依赖于前一步的输出。为了实现反馈,必须使用渲染到纹理技术。 (5)将纹理数据传回CPU并显示。 流程如图3所示。
图3 基于GPU算法流程 3.2 基于GPU算法的设计实现 根据GPU的编程特点,结合亚像素Harris角点检测算法
的并行性特点,利用Cg语言[5]编写算法的片段程序。由于算法不能在一个片段程序中完成,需要利用渲染到纹理技术的支持。 Harris角点检测算法步骤可以表达为: (1)利用水平、竖直差分算子对图像每个像素滤波以求得
X,Y,进而求得22,,XYXY;