多尺度Harris角点检测的FPGA实现
2012-08-10肖得胜刘桂华
肖得胜,刘桂华
(西南科技大学 信息工程学院,四川 绵阳 621010)
0 引言
图像角点检测是图像处理领域中的经典研究方向。Harris[1]角点检测算子以其计算简单、角点检测效果好的优点得到了广泛的运用。但是,Harris角点检测算子不具有尺度不变性。Mikolajczyk和 Schmid[2]将Harris角点检测算子与高斯尺度空间相结合,在多个尺度上进行Harris角点的检测,使其具有尺度不变性。
多尺度Harris角点检测虽然克服了Harris算子只能在单一尺度下检测角点的缺点,但是却大大增加了计算量和计算时间,难以进行实时处理。通过分析发现,虽然多尺度Harris角点检测计算量很大,但是其结构相对简单,适合利用现场可编程门阵列(FPGA,Field Programmable Gate Array)来实现以提高处理速度[3-4]。本文充分考虑FPGA的结构及多尺度角点提取原理[5-6],对算法进行改进,在FPGA上实现了图像的多尺度角点检测。
1 多尺度Harris角点检测算法
(1)高斯尺度空间的构建
图像通过与不同标准差高斯函数的卷积得到不同尺度的高斯图像,一系列不同尺度的高斯图像就构成了高斯尺度空间。
(2)位置、尺度空间响应值计算[7]多尺度Harris角点检测二阶矩如下:
其中,g (σI)表示标准差为的高斯函数,符号“ ⊗ ”表示卷积,(x,y,) 和(x,y,) 表示图像经标准差为σD的高斯函数g() 卷积后,在x和y方向的微分图像。Mikolajczyk和 Schmid建议取σD=0.7×σI。
位置空间响应值计算公式为:
det表示矩阵的行列式,trace表示矩阵的迹。α是取值于0.04~0.06的参数。
尺度空间响应值计算公式为:
(3)多尺度Harris角点检测
位置空间大于阈值的局部极大值点若在尺度空间也大于阈值且大于相邻两层对应点尺度响应值,那么此点为多尺度Harris角点。
2 算法改进及FPGA实现分析
多尺度Harris角点检测算法的计算量主要集中在高斯尺度空间的建立、微分计算及响应值计算。
2.1 改进高斯函数的FPGA实现分析
在FPGA实现中,采用不同权值的高斯模版(矩形窗口)替代高斯函数。给定标准差 sigma和模板大小n×n,用matlab计算高斯模版对应数值核心代码如下:
高斯函数标准差越大,高斯函数值越分散,为了设计的精度,对应高斯模板也应该取的越大,但大窗口的高斯模板不易于FPGA的实现,为减少高斯函数标准差,后一尺度图像通过前一尺度图像经高斯卷积得到,同时却增加了FPGA实现时的延时。
在充分考虑精度与FPGA器件延时情况下,前3个尺度图像采用直接由原始图像经过高斯卷积得到,后三个尺度图像则采用由其前一个尺度图像经过高斯卷积得到。
2.2 微分计算的FPGA实现[8]
在设计中,涉及图像x和y方向的一阶、二阶微分运算。FPGA中采用图像与微分模块的卷积来实现。x方向一阶微分模版为:[-1 0 1;-2 0 2;-1 0 1];y方向一阶微分模版为:[-1 -2 -1;0 0 0;1 2 1];x方向二阶微分模版为:[1 0 -2 0 1;4 0 -8 0 4;6 0 -12 0 6;4 0 -8 0 4;1 0 -2 0 1];y方向二阶微分模版为:[1 4 6 4 1;0 0 0 0 0;-2 -8 -12 -8 -2;0 0 0 0 0;1 4 6 4 1]。
2.3 位置空间响应值的改进
公式(2)中包含参数α,α的取值有些任意,不太令人满意。考虑到FPGA实现多尺度Harris角点检测时,先构建尺度空间图像,然后计算差分,再将差分后的图像数据与高斯函数 g (σD) 相卷,对多尺度Harris角点响应计算函数进行改进,改进后的响应函数如下:
其中:
2.4 多尺度Harris角点搜索的改进
为提高搜索速度,在FPGA实现过程中,同时对位置空间和尺度空间响应值点进行搜索。先将各层图像的位置、尺度空间响应值经先进先出缓存器(FIFO,First Input First Output)缓存对齐,每层图像响应值均经过3×3窗口模板并行输出3×3领域的响应值。并行比较每个位置空间响应值与它所在尺度的8个相邻位置响应值、尺度空间响应值与它相邻两层对应点的尺度响应值。
2.5 FPGA整体结构设计
根据上面的多尺度Harris角点FPGA实现分析,FPGA整体结构框图如图1所示。初始图像与不同标准差的高斯函数卷积得到不同尺度的图像,然后将尺度图像数据与微分模板相卷得到图像微分数据,再利用图像微分数据求得图像各像素点在位置、尺度空间的响应值,最后将各个响应值经FIFO缓存后同步并行输出,通过并行比较位置、尺度空间的响应值,快速检测出图像的多尺度Harris角点。
图1 多尺度Harris角点检测框架
3 仿真分析及验证
采用 Altera公司 Cyclone Ⅲ系列 EP3C120 F484C7芯片实现,测试图像为8位灰度图,分辨率为256×256,采用50 MHz时钟频,整个设计处理时间约为1.4 ms。用ModelSim进行仿真验证,功能仿真结果如图2所示。
图2 ModelSim功能仿真结果
直接观察波形很难看出角点提取的效果,将ModelSim的仿真结果存入文本中,然后通过Matlab读取文本中的角点信息,将角点在原图中显示如图3,其中符号“*”表示角点在图中的位置。
图3 多尺度Harris角点检测图
4 结语
本文根据多尺度Harris角点检测原理,通过对高斯函数、角点响应值计算函数、角点搜索方法的改进,提出了改进多尺度Harris角点的FPGA实现方案,通过 ModelSim验证了角点检测的正确性,并在FPGA芯片上得到实现,从处理时间可以看出,本文设计能够满足多尺度Harris角点提取实时性的需求,在实时图像处理领域具有很好的应用价值。
[1] HARRIS C, STEPHENS M. A Combined Corner and Edge Detector[C].UK: Manchester University Press, 1988:147-151.
[2] MIKOLAJCZYK K, SCHMID C. Scale & Affine Invariant Interest Point Detectors[J].International Journal on Computer Vision,2004,60(01):63-86.
[3] 王刚,卿粼波,滕奇志.基于嵌入式平台的实时双目视觉测量系统[J].通信技术,2011,44(10):55-57.
[4] 雷明,马游春,李锦明,等.基于 FPGA的多通道图像采集存储系统设计[J].通信技术,2010,43(04):204-207.
[5] 杨金孝,赵强,杨百平,等.一种改进型SUSAN算法的FPGA实现[J].信息安全与通信保密,2010(03):57-59.
[6] 张怡,冯飞,宋冠群.基于 FPGA的图像预处理缩放算法[J].信息安全与通信保密,2007(01):77-78,81.
[7] 王永明,王贵锦.图像局部不变特征与描述[M].北京:国防工业出版社,2010:53-56.
[8] 王渝,王刚,梅员.基于FPGA的改进Harris角点检测方法[J].通信技术,2010,43(04):158-160.