基于FPGA的Kirsch算法实时图像处理研究
2015-11-25陈跃东陈孟元
朱 枫,陈跃东,陈孟元
(安徽工程大学电气传动与控制重点实验室,安徽芜湖 241000)
基于FPGA的Kirsch算法实时图像处理研究
朱 枫,陈跃东∗,陈孟元
(安徽工程大学电气传动与控制重点实验室,安徽芜湖 241000)
随着图像数据量愈发庞大,相较于传统图像处理方法采用FPGA进行图像处理更具有明显优势.Kirsch算法具有检测边缘信息多、抗噪效果较好等优点.设计选用FPGA来实现Kirsch算法,同时将处理后的图像再次结合形态学处理.结果表明,本设计能够更好地提取边缘信息、增强抗噪声能力,而且实时性较好,具有较高的实用价值.
FPGA;实时性;Kirsch算法;边缘检测;形态学
边缘是图像的一项基本特征,图像边缘处理是图像处理的重要组成部分.其中,图像边缘检测被应用于诸多领域,如图像分割、模式识别等.常用的边缘检测方法有Robert算子、Prewitt算子、Sobel算子、Laplace算子、Canny算子、LOG算子等[1].近年来,随着数学理论的丰富和人工智能技术的发展,涌现出许多更先进的边缘检测处理方法,如基于小波变换的数学形态学[2]边缘检测法、基于神经网络的自适应阈值[3]调整的边缘检测法等.
研究分析了Kirsch[4-5]算法处理边缘的原理和特点,同时结合形态学[6]闭操作处理,使得抗噪声能力增强的同时,增强边缘的明朗程度,从而保证较高的边缘质量.随着图像分辨率等的提高,图像信息的数据量也越来越大,结合FPGA的高速并行处理特性[7],FPGA越来越适用于图像处理方面[8],将算法在FPGA上实现,能够较好地实现处理算法的实时性[9-10],具有较好的应用价值.
1 Kirsch算子边缘检测
R.Kirsch提出了Kirsch算子,用来检测边缘方向:采用8个模板确定梯度幅度值以及梯度方向.Kirsch算子梯度模板如图1所示,其中M1~M8为8个梯度模板.由图1可知,每个模板的方向相差45°, 8个模板完全将360°划分完全,模板的完整性保证了边缘检测信息的最大完整,从而检测效果更好.
设A为图像数据,A(x,y)为图像数据在(x,y)处的数值,图像数据3∗3模板[11-12]如图1中M9所示.令Mn(i,j)为第n个梯度模板在(i,j)处的值.Kirsch算法采用图像和模板卷积来确定(x,y)点的梯度值和梯度方向,令Kn(x,y)为图像数据A(x,y)经过模板卷积后的数值.可知,
式中,D为3∗3的区域范围.i取值范围为-1,0,1;j取值范围为-1,0,1;x取值范围为1,2,…,G;y的取值范围为1,2,…,Q.G和Q分别为图像的行和列.结合图像数据模板和梯度模板,可得出以下计算公式:由上式求出8个模板的梯度最大值为Kmax(x,y),Kmax(x,y)的定义为:
Kmax(x,y)=max{K1(x,y),K2(x,y),K3(x,y),K4(x,y),K5(x,y),K6(x,y),K7(x,y), K8(x,y)}
将计算得到的Kmax(x,y)与设定好的阈值T进行比较,如果Kmax(x,y)>T,则定义A 5(x 5,y 5)点是边缘点.
Kirsch算法的实现框图如图2所示.其中,灰度图像数据通过移位寄存器转换为3∗3的数据模块,数据模块与8个梯度模板分别卷积,卷积后的值相互比较,这样得出Kmax(x,y),再与阈值T比较大小.如果是边缘点,还可通过根据哪个梯度模板卷积为Kmax(x,y)来确定边缘梯度方向.
2 Kirsch算法的FPGA实现
2.1 系统结构
Kirsch算法从8个方向计算梯度,然后再对边缘图像进行形态学处理.实现改进的边缘检测算法的计算量是很庞大的,低分辨率图像的实时处理比较容易,对于高分辨率的图像实时处理,常用运算器的顺序执行较难满足实时性的要求.FPGA的高速并行性具有高速处理数据的能力,而且根据Kirsch算法所涉及的运算结构相对规律,利用FPGA并行信息处理的优势以及采用流水线数据处理技术,能够较好地实现实时性.
选用的FPGA芯片是ALTERA系列的EP4CE10E22C8N,在FPGA内实现Kirsch算法,系统结构框图如图2所示.
系统采用的摄像头为CMOS摄像头,摄像头分辨率设置为640∗480分辨率,帧数为50fps.图像数据的存储与读取用SDRAM来实现,SDRAM可以有效地缓存数据[13-14]从而实现实时性.CMOS摄像头驱动、图像数据存储与读取、Kirsch算法实现和形态学处理均由FPGA实现.图像输出是上位机输出.
2.2 Kirsch算法实现
Kirsch算法的FPGA硬件结构图如图3所示,所得图像数据需要转换为3∗3窗口从而进行梯度运算.3∗3图像数据由移位寄存器构成,设计选择的分辨率为640∗480的256级灰度图像,所以移位寄存器的存储数据延迟均为640像素,即640字节.移位寄存器先存储2行数据,再与输入的图像数据构成3行数据.图3中的line buffer代表3行数据,其中line buffer0和line buffer1存储图像第1、2行数据,line buffer2存储当前输入的图像数据,D1~D9分别为对应行的数据,继而形成3∗3图像数据窗口.3∗3数据窗口与Kirsch算子的8个梯度进行卷积运算,运算结果产生最大值,最后与选定的阈值比较,比较结果即为输出边缘.
2.3 形态学处理
集合论是数学形态学语言,为大量的图像处理问题提供了一种有效的方法.最基本的形态学运算有腐蚀、膨胀、开和闭[15-16].设计运用形态学闭操作对边缘图像进行处理,闭操作记为腐蚀-膨胀运算.设A为图像数据,用结构元素B对图像A进行腐蚀运算记为AΘB,定义如下,腐蚀算法能够滤除图像中的噪声,提高抗噪性.
(AΘB)(x,y)=min{A(x+x′,y+y′)|(x′,y′)∈DB},DB是B的定义域.
与腐蚀算法对应的是膨胀算法.用结构元素B对图像A进行膨胀运算记为A⊕B,定义如下,膨胀算法可以加深图像,使区域图像更加明朗.
(A⊕B)(x,y)=max{A(x-x′,y-y′)|(x′,y′)∈DB},DB是B的定义域.
图像处理应用中,可以通过各种组合形式来使用膨胀和腐蚀运算.A被B形态学闭运算记为A·B,是先膨胀再腐蚀.形态学闭运算可用于平滑对象的轮廓.运算结果为A·B=(A⊕B)ΘB.
本次形态学闭操作是对Kirsch算法运算后的边缘图像进行处理.腐蚀运算可以较为有效地滤除噪声,而之后的膨胀运算可以加深边缘效果.
形态学闭操作结构图如图4所示.经过Kirsch运算的边缘图像窗数据设为Z 1~Z 9,经过腐蚀算子卷积运算,腐蚀运算后的数据设为E 1~E 9,再次经过膨胀算子运算,最后输出的图像数据即为形态学处理图像.设计中的3∗3数据窗实现和Kirsch算子中的实现方式相同,设计中采用的腐蚀算子和膨胀算子如图5所示.腐蚀算法为与运算,膨胀算法为或运算.由图5可知,腐蚀运算为Z=Z 2&Z 4&Z 5&Z 6&Z 8;膨胀运算为E=E 1|E 2|E 3|E 4|E 5|E 6|E 7|E 8|E 9.
3 结果和分析
在FPGA上实现Kirsch算法(阈值设定为55),采用CMOS摄像头,分辨率为640∗480,帧数为50fps.调试验证如图6所示.调试验证直接实时采集头像进行处理,可见Kirsch算法在FPGA上调试成功,并且能实时显示.
对整个图像处理系统进行更为详细地验证,灰度源图像和Kirsch算法处理图像如图7所示.图7a为摄像头采集的源灰度图像,图7b为Kirsch算法处理后的边缘图像.形态学处理图像如图8所示.其中,图8a为腐蚀算法处理后图像,图8b为膨胀算法处理后图像.结合图7、图8的结果表明,设计采用FPGA实现Kirsch算法取得较好的结果.FPGA本身的并行处理能力使得算法处理更快.设计采用FPGA实现边缘算法,每秒可以达到50 fps,基本实现Kirsch算法的实时处理.
4 结论
采用形态学闭操作处理Kirsch算法处理后的边缘图像,加强整个系统抗噪能力并使边缘更加明朗.将Kirsch算法用FPGA实现,利用FPGA并行处理的优势,极大地提高了算法处理的速度.实验结果显示,采用FPGA实现Kirsch图像处理算法,效率高、实时性好,且灵活性强.
[1] 米曾真,谢志江,陈涛,等.重轨图像增强与边缘提取的关键技术厂[J].光学精密工程,2012,20(7):1 645-1 652.
[2] 周宁宁,赵正旭,翁素文.图像的中介边缘检测方法[J].中国图形图像学报,2010,15(3):397-402.
[3] 周箩鱼,张葆,杨杨.自适应阈值的超变分正则化图像盲复原[J].光学精密工程,2012,20(12):2 755-2 767.
[4] Kirsch R.Computer detection of the constituent structure of biological image[J].Computers and Biomedical Research,1971,4(3):315-328.
[5] 康牧,王宝树.自适应Kirsch边缘检测算法[J].华中科技人学学报:自然科学版,2009,4(37):47-50.
[6] 徐毅,邓廷权.基于路径形态学的图像边缘连接方法[J].计算机工程与应用,2014,50(7):180-185.
[7] 宁赛男,朱明,孙宏海,等.一种改进的Sobel自适应边缘检测的FPGA实现[J].液晶与显示,2014,29(3):395-402.
[8] 焦淑红,关晨辉.实时视频信号的Sobel边缘检测的FPGA实现[J].电子科技,2014,27(9):62-64.
[9] 陈伦海,黄君凯,杨帆,等.基于FPGA的实时边缘检测系统[J].液晶与显示,2011,26(2):200-204.
[10]谭会生.Laplacian图像边缘检测器的FPGA实现研究[J].电子设计工程,2009(3):45-47.
[11]李杏华,刘宁,张晶.基于FPGA的图像实时处理系统的设计[J].半导体光电,2014,35(3):563-566.
[12]胡越黎,计慧杰,吴频,等.图像的中值滤波算法及其FPGA实现[J].计算机测量与控制,2008,16(11):1 672-1 675.
[13]黄丛,孟升卫,付平.基于SDRAM的海量FIFO设计[J].仪器仪表学报,2009,30(6):349-352.
[14]林志煌,解梅.一种简易SDRAM控制器的设计方法[J].现代电子技术,2008,31(16):81-91.
[15]刘炜,刘宏昭.形态学方法检测与定位石油管道泄漏[J].控制土程,2014,21(5):744-747,752.
[16]韦皞,张光锋,娄国伟.基于分水岭和形态学的图像特征提取方法[J].探侧与控制学报,2014,36(1):63-66,70.
Research on Kirsch algorithm for real-time image processing based on FPGA
ZHU Feng,CHEN Yue-dong∗,CHEN Meng-yuan
(Anhui Key Laboratory of Electric Drive and Control,Anhui Polytechnic University,Wuhu 241000,China)
With the increasingly huge amount of image data,the effect of using FPGA for real-time image processing is more obvious than conventional approach.Kirsch algorithm has the following advantages:more edge detection information,better anti-noise capability,etc.Therefore,FPGA is chosen to realize Kirsch algorithm and then the processed image would be reprocessed by using morphology.Finally, a conclusion is reached that the design is better to extract the edge information,enhance the ability to eliminate noise,and has good real-time performance and high practical value.
FPGA;real-time;Kirsch algorithm;edge detection;morphology
TP752.1;TN911.73
A
1672-2477(2015)04-0049-05
2014-12-17
朱 枫(1990-),男,安徽合肥人,硕士研究生.
陈跃东(1956-),男,湖北宜昌人,教授,硕导.