- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于FPGA的自适应阈值Harris角点检测硬件实现
潘聪,黄鲁
(中国科学技术大学 信息科学技术学院,安徽 合肥 230026)
摘要:基于FPGA实现了一种自适应阈值Harris角点检测,用于解决低成本ARM处理器无法实时检测到目标角点的问题。该算法首先对整帧像素点进行预筛选,将筛选通过的点进行Harris角点检测,通过设置容忍距离剔除伪角点,得到最终角点并通过LCD屏实时显示。采用自适应阈值方法来解决单一阈值不适应于多样化环境的问题,使每帧(分辨率为480×272)都能检测到大约120个角点,在低成本FPGA芯片Spartan6 XC6SLX45上验证实现。实验结果表明,该实现方法处理速度为115 f/s,能高效准确地检测到目标角点,满足精度、稳定性和实时性要求。
关键词:角点检测;预筛选;自适应阈值;FPGA
0引言
图像处理中角点有多种定义,如图像边界上曲率足够大的点[1]、图像边界上曲率变化明显的点[2]、图像边界方向变化不连续的点[3]、图像中梯度值和梯度变化率都很高的点[4]等。
Harris角点检测算法在计算机视觉领域中应用广泛,是很关键的前期步骤,如果角点检测的精度或者速度达不到要求,将直接导致后期处理无法正常进行。低成本的ARM处理器很难达到实时角点检测的效果,综合考虑,低成本FPGA芯片实现Harris角点检测是最佳方案。本文设计的基于FPGA的Harris角点检测实现方案相比于传统方法,增加了角点预筛选步骤和自适应阈值的步骤,在XC6SLX45芯片为主的硬件平台上得到了验证。实验结果证明,检测到角点的精度和实时效果都能达到工程要求。
1Harris角点检测原理
Harris算子步骤[5]如下:
(1)利用水平、竖直相邻像素值之差求得Ix、Iy,进而求得M矩阵中4个元素的值。
(2)对M的4个元素进行高斯滤波,得到新的矩阵N。
(3)计算每个像素的角点响应值R,公式如下:
选取k为0.04。
(4)R大于阈值且满足容忍距离的点认为是角点。
2系统设计方案
2.1硬件环境
FPGA芯片通过I2C接口对摄像头的寄存器进行配置,采集30 f/s帧频、分辨率为480×272的灰度图像。由于光照对角点检测影响很大,需要先对采集进来的图像做直方图均衡,将均衡后的图像通过DPRAM进行4行缓存后进行Harris角点检测逻辑运算,将检测到的角点在原图上以黑色点的形式实时显示在LCD上,如图1所示。
2.2硬件实现
本文的实现思路如下:(1)对直方图均衡后的图像进行预筛选;(2)对筛选通过的像素点进行角点检测运算,将R大于阈值的像素点记为角点;(3)采用容忍距离剔除伪角点,得到最终角点。自适应阈值的思路是:第一帧图像的阈值人为设定,从第二帧开始阈值由其前一帧的最大R值和角点数目得到。
硬件实现方法分为4个模块:角点预筛选模块、高斯滤波模块、角点剔除模块、自适应阈值模块。具体实现电路如图2所示。
2.2.1角点预筛选模块
角点预筛选模块包括窗口生成逻辑,x/y方向导数计算逻辑,角点预筛选逻辑。窗口生成逻辑利用16个8 bit寄存器和3个深度为476、宽度为8的DPRAM构成,如图3所示。
x/y方向导数逻辑分别计算x、y方向上的导数,计算方法是分别将4×4方形窗口的相邻两个像素相减(如图4所示)。
对图像进行预筛选能有效提高算法的处理速度。预筛选逻辑的思想为:如果中心点像素的灰度值之差的绝对值小于阈值t,则判定中心点与周边像素点相似,否则认为与周边像素点差异较大。一般情况下当两个黑白图像中的点的像素灰度差值小于像素灰度最大值的10%~15%时,人眼难以分辨[6]。本文选取阈值为35,预筛选实现电路如图5所示。
2.2.2高斯滤波模块
乘2、乘4利用简单的移位操作,除16则直接去掉低4位作为计算结果。避免使用乘法器和除法器,节省了大量的硬件资源。对这3个系数同时进行高斯滤波(如图6)能最大程度地发挥并行优势,提高运算速度。
2.2.3角点剔除模块
角点剔除模块包括角点响应值计算逻辑,R值比较逻辑,伪角点筛选逻辑。
为了方便实现,现将k值取5/128,乘以5的计算逻辑可以转化为左移两位的移位寄存器和一个加法器,除以128可以直接去掉低7位作为计算结果。
R值比较逻辑是为了得到每帧图像计算得到的最大R值,实现电路如图7所示。
如果大于阈值则认为该像素点是角点(其中包含很多伪角点)。在一定区域范围内只允许有一个角点,本文利用寄存器和linebuffer设置25个像素点的容忍距离,当feature信号的25 bit按位或非取值为1时表示该像素点为最终角点。图8为角点剔除逻辑实现电路。
2.2.4自适应阈值模块
传统方法设置单一的常量阈值,无法满足多样化环境,本文采用自适应阈值的方法来解决这个问题。只有第一帧图像的阈值是人为设置,其余帧的阈值则是由前一帧的最大角点响应值Rmax和检测到的角点数目来得到(如表1)。
选取一系列多种环境下的图像进行实验,不断调整设定的p值[7]来适应绝大多数图像,经数据统计发现p取1.5×10-7~2.5×10-7时,基本上能检测到所有角点,且错误角点和漏检角点都较少。本文最终选取的p值为2.3×10-7,约为2-22。
3实验结果
硬件平台角点检测实时效果见图9,局部放大效果见图10。
3.1资源占用分析
FPGA资源消耗如表2。
3.2实时性分析
本文提出了采用50 MHz时钟频率作为系统时钟,Harris角点检测算法处理每帧图像(检测大约120个角点)消耗时间为8.7 ms左右。经过测试,在检测相同角点数目的情况下,PC耗时大约是15 ms,ARM系统上耗时大约是120 ms。相比较可以知道,本文提出的实现方案能够很好地满足后续处理的实时性要求。
4结论
本文提出了一种基于FPGA的自适应Harris角点检测实现方法,试验结果表明此方法能检测到足够数目的有效角点,充分发挥FPGA硬件平台的并行优势,相比于传统的算法运算速度有大幅度提高,能很好地满足实时性要求。因此,此硬件实现方案,在精度和速度上都可满足实际工程应用需要。
参考文献
[1] SMITH S M, BRADY J M. SU SAN—a new approach to low level image processing [ J]. International Journal of Computer Vision, 1997, 23(1): 45-78.
[2] ZUNIGA O A,HARALICK R M. Corner detection using the facet model[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Piscataway , USA: IEEE, 1983: 30-37.
[3] SHEU H T, HU W C. A rotationally invariant two phase scheme for corner detection [J]. Pattern Recognition, 1996, 29(5): 819-828.
[4] WU Z Q, ROSENFELD A. Filtered projections as an aid in corner detection[J]. Pattern Recognition, 1983,16(1):31-38.
[5] 李博. 图像的不变特征检测与描述研究[D]. 重庆:重庆大学,2007.
[6] 周大伟,耿金玲,郑继明,等.一种基于人眼视觉特性的ROI渐进图像传输算法[J].计算机应用,2007,27(7):1654 1656,1673.
[7] 沈士喆,张小龙,衡伟,等.一种自适应阈值的预筛选Harris角点检测方法[J].数据采集与处理,2011,26(2):207-213.
上一篇:罗德与施瓦茨公司携全方位测试技术亮相2016上海国际电磁兼容暨微波展
下一篇:国产化数据库管理系统软件测试方法
际跹芯