基于FPGA的Sobel算子的边缘响应算法实现
soble边缘检测算法的verilog实现

soble边缘检测算法的verilog实现先来说说soble算子,soble算子是一种离散性差分算子,用来运算图像亮度函数的灰度的近似值,在图像的任何一点使用这个算子,会得到对应的灰度矢量或法矢量。
SOBLE算子的卷积因子为:soble算子包含两组3*3的矩阵,分别为横向和纵向,将Gx 和Gy 与图像做卷积,即可分别得出横向和纵向的亮度差分近似值,如果用A表示原始图像,Gx 和 Gy 分别代表经横向和纵向边缘检测的图像灰度值,公式如下:图像每一个像素的横向和纵向灰度值通过一下公式结合,来计算该点灰度的大小:通常,为了提高效率,使用不开平方的近似值,但是这样做会损失精度,迫不得已的时候可以这样做:就是这个G就是判断条件,如果梯度G大于某一阈值(THRESHOLD),则认为该点(X,Y)为边缘点。
可以使用下面公式计算梯度方向(如果只是边缘检测则不需要计算方向)soble算子的verilog实现,可以划分为4个步骤,解析和实现分别如下:(1)计算Gx, Gy与3*3像素阵列每行的乘积。
以上是例化生成3*3矩阵的模块,下面的代码是计算Gx, Gy。
(2个clk)这个理解起来不难,比较简单,先用一个时钟计算3*3矩阵每行的像素乘积,再求的卷积后的Gx,Gy,因此消耗了两个时钟。
(2)求Gx^2+Gy^2的结果,及Gx与Gy的平方和。
(1个clk)这一步直接通过veilog中的乘法器的描述来实现,综合时会自动布线为片内乘法器,如下。
(3)求Gx^2+Gy^2的平方根。
(1个clk)强大的ALTERA在QII软件中提供了平方根的IP核,如下所示。
下面给出SQRT的例化代码:(4)根据外部输入阈值,判断并实现边缘的检测。
(1个clk)将post_bit_r扩展到8bit, ~{8{post_bit_r}}, 检测到的边缘为黑色。
soble_threshold 是外部输入的一个人为设定的阈值。
(5)前面几步对图像数据的处理总共消耗了5个时钟,因此图像阵列的同步信号需要延迟5个时钟。
基于FPGA的Sobel边缘检测算法研究与实现

181
若 G大 于 阈值 ,则 该点 为边 缘 点 。梯 度 方 向
=
(2) 计算 式 为 :
用下 式计 算 得到 该点 的灰 度值 :
G=
(3)
但 为 了提高 运算 效率 ,经 常使 用绝 对值 计算 ,
即 :
Gl= I GxI+ l GyI
(4)
(5)
3 Sobel算 子边 缘检 测 的硬件 实现 3.1 硬件 系统结 构
FPGA具有 高 速 并 行 处 理 、高 性 能 及 灵 活 性 等特 点 ,可 以通 过 外 部 按键 改变 阈值 得 到 不 同的 处理 效果 。Sobel算 子 的优 势 在 于平 滑去 噪 ,对 水 文监 测处 理 有极 大 帮 助 。FPGA在 对 底 层 图像 进 行 处理 时 ,处 理速 度 得到 了提 升 ,符 合监 测 系统 所 需 的实 时性 要求 ,因 此 在视 频 图像 处 理 领 域 也 得 到 了广 泛 的使 用 。笔 者 以 Sobel算 子 为 基 础 ,对 阈值 的调整 方 式进 行 改进 ,使 它更 适 合 现 场 工 作 环 境 ,实 现 Sobel阈值 的 可调 性 ,同 时增 强 了它 在 监 控领 域 的应 用 性 。最 后 采 用 Verilog语 言 实 现 图像 的边 缘 检测 。 1 边缘检 测概 述
基于FPGA的Sobel图像边缘检测算法

第43卷第6期应 用科技V〇1.43N q.6 2016 年12月Applied Science and Technology Dec.2016D01:10.11991/yykj.201511014网络出版地址:/kcms/detai1/23.1191.U.20161127.0907.016.htm1基于FP G A的Sobel图像边缘检测算法刘博峰,郜丽鹏哈尔滨工程大学信息与通信工程学院,黑龙江哈尔滨150001摘要:数字图像处理主要是对图像像素进行处理,由于像素众多,因而图像处理需要消耗大量时间,而FPGA并行性、实时性等优点可有效弥补这一缺点。
文中主要介绍如何用FPGA来实现图像的Sobel边缘检测算法,并同Matlab联合仿 真,验证FPGA图像处理的可靠性,最终得到让人满意的处理图案。
关键词:FPGA;MATLAB;Sobel;图像处理;边缘检测中图分类号:TN911.73 文献标志码:A文章编号:1009-671X(2016)06-059-03Sobel image edge detection method based on FPGALIU Bofeng, GAO LipengCollege of Inlormation and Communication Engineering,Harbin Engineering University,Harbin150001, China Abstract :Image pixels are mainly processed in digital image processing.Due to the large number of pixels,the image processing costs a lot of time.The advantages of FPGA,such as parallelism,real-time,can effectively compensate this shortcoming.This article describes how to use FPGA to implement Sobel image edge detection algorithm, by verifies the reliability of FPGA image processing by co-simulation with Matlab,and finally obtains a satisfactory processing pattern.Keywords:FPGA;MATLAB;Sobel;image processing;edge detection边缘检测是图像处理和计算机视觉的基本问 题,是图像特征提取的一个研究领域,图像边缘含有 图像丰富的特征信息,在图像分析和处理中有重要 的意义。
基于可编程逻辑阵列的索贝尔边缘检测算法的两种实现方案

基于可编程逻辑阵列的索贝尔边缘检测算法的两种实现方案张海斌;朱苏磊;徐明亮【摘要】基于可编程逻辑阵列(FPGA)的片上可编程及并行流水线具有处理快、实时性等优点,采用Quartus II自带知识产权(IP)核进行设计的方案耗资源多,处理速度慢,针对于此提出了改进的索贝尔(Sobel)算子方案,使以上缺点得到改善;结合Matlab和Modelsim对这两种方案的仿真和验证结果表明,改进后的Sobel算子方案明显优于Quartus II自带IP核进行设计的方案,并且能很好地实现图像边缘检测,减少了偏差.%In this paper,two kinds of edge detection scheme based on Field Programmable Gate Array(FPGA) are realized and analyzed by using the Sobel operator.In view of the design which utilizes the intellectual property(IP) cores embedded in the Quartus II has some disadvantages such as more resources are consumed、process is relatively slow and so on,an improved scheme which improves the first design′s shortcomings is proposed.Simulation and verification results of these two schemes which are combined with Matlab and Modelsim show that the improved Sobel operator scheme is better than the previous scheme designed by using IP cores embedded in the Quartus II,achieving a good image detection and reducing errors.【期刊名称】《上海师范大学学报(自然科学版)》【年(卷),期】2017(046)002【总页数】7页(P247-253)【关键词】边缘检测;可编程逻辑阵列;数字图像处理【作者】张海斌;朱苏磊;徐明亮【作者单位】上海师范大学信息与机电工程学院,上海 200234;上海师范大学信息与机电工程学院,上海 200234;上海师范大学信息与机电工程学院,上海 200234【正文语种】中文【中图分类】TN911.73数字图像处理就是采用计算机或嵌入式系统对图像进行深度加工,并从中获得有用的信息.伴随着计算机技术、集成电路技术的飞速发展,数字图像处理技术也得到了很大的发展,并且也出现了许多与数字图像处理技术相关的新理论、新技术、新设备.这些新理论、新技术在工业生产、科学研究、医疗卫生等领域得到了广泛应用,对社会的发展及人类生活水平的提高做出了极大的贡献[1].边缘是图像的基本特征,是指图像灰度变化率最大的位置,由图像像素点数据局部的不连续而形成.边缘的表现形式有图像纹理结构的突变及灰度级的突变,彩色变化等等,边缘检测利用物体与背景在某些特征上的差异而实现.由于实时图像边缘检测算法涉及到的数据量大,一般运算器的顺序执行或者传统软件处理实时图像很难满足要求.而采用可编程逻辑阵列(FPGA)的流水线和并行处理技术,不仅可以提高数字图像的处理速度,也可以在一定程度上满足实时系统中的应用需求.边缘检测算子可以分为一阶微分算子和二阶微分算子.常见的一阶微分算子有Prewitt算子,Canny算子、Sobel算子、Roberts Cross算子,Kirsch算子,罗盘算子等等;二阶微分算子包括Laplacian算子以及高斯-拉普拉斯(LOG)算子等等[2].本研究主要介绍了基于FPGA的索贝尔(Sobel)边缘检测算法实现的两种方案,方案一完全采用Quartus II自带的知识产权核(IP)核进行实现,实现简单、工程周期短,但占用逻辑资源多,设计效果不够理想;方案二针对方案一的缺点进行了改进,改善了系统处理速度,减少了逻辑资源的消耗,在一定程度上改善了设计效果,优化了系统性能.1.1 Sobel边缘检测算子索贝尔算子(Sobel operator)是数字图像处理中的常用算子之一,在图像边缘检测和噪声滤波中都有运用,它是离散型差分算子,用来提取图像亮度函数的梯度近似值.在图像的任何像素点上运用这一算子,都可以产生对应像素点的梯度矢量或是其法矢量[2].现在假设图像数据点上有9个像素点:现用一个二次曲面z(x,y)来拟合这9个点的灰度值,即用来近似图像灰度函数f(x,y),并使均方误差最小.令分别对a、b、c、d、e、g的一阶偏导数为0,联立解得各个系数.将二次曲面z(x,y)对x,y求偏导数,得到梯度的幅度值[3]:[f(i+1,j-1)+2f(i+1,j)+f(i+1,j+1)]+[f(i-1,j-1)+2f(i,j-1)+f(i+1,j-1)]-[f(i-1,j+1)+2f(i,j+1)+f(i+1,j+1)].它的两个卷积模块为:1.2 基于FPGA的Sobel算子实现框图Sobel边缘检测算法的实现主要包括三个模块,如图1所示.图1中,前两个模块主要是实现图像像素点的梯度值计算,图像数据输入通过数据缓存模块构成3×3矩阵像素阵列,然后再分别计算水平梯度和垂直梯度,然后把两个方向上的梯度结合起来,接着通过门限处理模块,实现判别输出.假设输入的像素值依次为:p11、p12、p13、p21、p22、p31、p32、p33,那么在垂直方向上的梯度和在水平方向上的梯度分别为:GV=(p11+2p12+p13)-(p31+2p32+p33).梯度结合后的梯度值G为:通常为了提高程序的运行速度都采用如下的公式:门限处理模块之后输出数值P22,当设定的门限值大于G时,输出为0,当G大于设定的门限值时输出为255.综上分析Sobel算子在理论设计上容易实现,并且具有滤除噪声的作用,所以适合用在图像噪声较多的图像处理中.2.1 图像缓存实现由于Sobel算子理论基于3×3像素块计算中心像素梯度,构造3×3像素矩阵特别重要,要实现这个效果,必须使用一个容量足够大的存储单元来缓存串行输入的图像数据流,并把串行数据转化成并行的3行像素值,这样在3个像素时钟后就可以得到3×3图像像素矩阵.过去常使用先入先出(FIFO)作为图像数据的存储方式,但对FIFO 的读写操作较为复杂.而本设计中主要是调用了Quartus II软件自带的altshift_taps移位寄存器宏模块.软件中提供的altshift_taps宏模块是一个可设置参数的并具有多个端口(Taps)输出的移位寄存器,每一个抽头在移位寄存器链的指定位置上输出数据.对于Matlab经常应用的256×256大小图像进行Sobel边缘检测,altshift_taps模块配置为8 bit输入/8 bit输出、3个抽头,相邻两个抽头有256个registor(寄存单元).经过预处理的9个图像灰度像素点进入缓冲区后数据流如,图2所示.2.2 卷积计算和门限比较模块编写的卷积计算模块是为了得到水平的、垂直的两个方向上的梯度值,要达到卷积运算的效果需要做大量的乘法、加法运算.若是采用以往分立的D触发器、加法器和乘法器来完成,可以实现预期的功能,但其结构复杂,设计繁琐.在本方案中先通过调用Quartus II开发工具提供的IP核模块中的可编程乘加法器altmult_add、可编程多路加法器parallel_add以及开方模块(altsqrt)来实现.其原理如图3所示.图3中前面的3个Line就是缓存数据模块,而后面的实现水平梯度和垂直梯度的计算及开方后的结果再与门限比较,输出判别后的结果.考虑到上述方案调用IP时,占用FPGA逻辑资源大,在处理数据乘、开方时,占用大量CPU资源,提出了改进设计方案.3.1 图像缓冲模块设计改进基于图2的图像数据缓冲模块的数据流结构,构想在shift_RAM中存储2行数据,同时与当前的输入行数据组成3行的陈列,具体的实现步奏如下:(1) 首先,将输入的信号用像素使能时钟同步一拍,以保证数据和宏模块altshift_taps输出的数据保持同步,主要实现代码如图4所示.(2) 例化并输入row3_data,经过Modelsim仿真可以观察到3行数据同时存在.(3) row_data读取信号的分析及生成数据在altshift-taps里存储消耗一个时钟,因此3×3阵列阵列读取使能需要一个时钟的偏移.(4) 此时,根据read_image_clken信号直接读取3×3像素阵列,最后得到的matrix_p11、matrix_p12、matrix_p13、matrix_p21、matrix_p22、matrix_p23、matrix_p31、matrix_p32、matrix_p33即为得到的3×3像素阵列,主要代码如图5所示.3.2 卷积模块的实现在1.2节中,可以利用(7),(8)式实现Sobel算子算像素点P22处的水平和垂直梯度值计算,在上面构成的3×3陈列中可以得到图像的每一个像素值,所以只要把(7),(8)式用Verilog语言实现就可以了,水平梯度值计算主要代码如图6所示.这里只分析像素P22在水平上的梯度值,从3×3矩阵模块中出来的像素值matrix_p11,matrix_p12,matrix_p13,matrix_p21,matrix_p22,matrix_p23,matrix_p31,matrix_p32,matrix_p33都是reg无符号数型,即分别为P1、P2、P3、…、P9,在计算机内部数字乘以2就是bit位向左移一位,代码中通过暂存正结果和负结果,通过比较这个数值的大小最终给出水平上的梯度值.垂直上的梯度值同理实现.接着另一个进程中实现平方加的结果,最后再把平方加的结果送入开方模块SQRT中,输出对应像素点的估算梯度值,得到的梯度估算值与阀门值比较得出该像素点是否为边缘像素点.4.1 两种方案在Quartus II下的分析对比两种方案都是基于altera的CycloneIVE EP4CE10F17C8为目标芯片,在Quartus II下编译综合,得出两种方案的硬件资源使用情况综合报告及在约定输入时钟25 mHz时TimeQuest的时序分析报告如表1、2所示.从表1、2可以看出方案二明显比方案一占用资源少,首先,内嵌乘法器只占用了9%,这样数据处理大大减少;其次,专用逻辑寄存器和引脚也明显减少,这样可以在FPGA 上留用更多的资源来处理其他信息;最后在25 mHz时钟约束下,从TimeQuest的分析时钟看,方案一最大工作效率为34.19 mHz,方案二可以达到47.78 mHz,这可以看出优化后的方案二数据处理速度明显提高,满足实时性的要求.4.2 仿真结果分析采用Matlab对灰度图像的各个像素点以16进制存储在image.txt文本文件下,然后将本文文件下的数据通过函数readmemh(image.txt,data_mem)读到存储器类型的data_mem中,再通过always进程通过寻址方式把各个图像数据输给输入端口.在仿真时再通过函数fdisplay(文件句柄,“数据存储格式”,模块输出端口)将两个方案处理后的数据分别存储在ima_process.txt文本里,再采用Matlab软件把ima_process.txt里的数据通过相应函数实现处理后的图像显示,具体代码如图7所示.图8,9分别为输入相同图像数据时在Modelsim下两种方案的Sobel边缘检测仿真结果,门限设定都为200,从图8,9中可以看出在clk时钟的作用下,图像的各个像素值逐个输进输入端口,可以从输出端口(oDATA、post_img_Bits)看到只有两种状态,若该点在边缘上,则通过系统后该点值变为0xff,若不在边缘则变为0x00.两种方案可以实现对图像的边缘检测.图10是设定阈值为200时两种方案对图像边缘提取后的结果对比,从图10中可以看出方案二的处理效果明显比方案一好,进一步说明改进后的方案优于采用IP核的方案;处理后的图片边沿明显出现了误判,这是没有对边沿像素点采取处理的结果,在实际工程中可以对图像边沿采取重叠复制、忽略处理等方法.本文作者基于FPGA采用两种设计方案对Sobel边缘检测进行了实现并仿真分析,首先方案一中完全采用Quartus II自带的IP核设计各个模块,实现图像各个像素值卷积实现图像边缘检测,针对方案一占用FPGA逻辑资源多,处理图像数据慢等特点,设计了另一种设计方案,一方面,针对数据的左移一位(乘2)的思想很好地实现了数据点的水平和垂直梯度的提取,这样大大减少了FPGA内嵌乘法器的使用,也减少了结果误差的舍入;另一方面,为了构建3×3的图像矩阵,就需要构建图像数据缓冲模块,方案一中采用的图像数据缓冲模块完全采用3个taps的数据缓冲模块,每个taps 的深度均为图片行的像素点,这样FPGA的逻辑资源很大程度上就被浪费了,影响FPGA的性能.为了改善这种状况,方案二只调用了2个taps的数据缓冲模块,并结合输入的数据端口利用FIFO的思想构成3×3矩阵,很好地改善了方案一中的占用逻辑资源较大的情况.综合对比两种方案,改善后的方案明显比方案一效果好,消耗资源少,耗时少,并且处理效果较好,完全满足实时图像处理的要求.导师简介: 朱苏磊(1975-),女,副教授,主要从事图像处理及嵌入式方面的研究.E-mail:****************【相关文献】[1] Fang H R.The application of FPGA in image edge detection [J].Information and Communication,2015(1):9-11.[2] Yan L,Lei B,Ding W,et al.Based on local adaptive thresholds edge detection of colorimage color difference [J].Journal of Electronics and Information,2012,34(9):2058-2063. [3] Liao C Z.A Sobel edge-detection algorithm based on FPGA and emulation [J].Journal of Yangtze University,2015,12 (7):37-40.[4] Pan M,Chen Y,Li Q.Design of image sampling system based on FPGA [J].Research and Development,2012,31 (3):58-61.[5] Ruan Q Q,Ruan Y Z.Image processing [M].Beijing:Publishing House of Electronics Industry,2014.[6] Xia Y W.Verilog course in digital systems design [M].Beijing:Beihang University Press,2008.[7] Zhang Z Y.The master of Matlab [M].Beijing:Beihang University Press,2011.[8] Zhang Y J.Design and algorithm realization of FPGA-based image processing systems[D].Chongqing:Chongqing University,2006.[9] Wu Y.Basic algorithms of digital image processing based on FPGA design and implementation [D].Harbin:Harbin Institute of Technology,2008.。
219506018_基于FPGA_的多方向阈值自适应Sobel_算法实现

第9期2023年5月无线互联科技Wireless Internet TechnologyNo.9May,2023作者简介:程伟涛(1998 ),男,安徽巢湖人,硕士研究生;研究方向:图像处理㊂基于FPGA 的多方向阈值自适应Sobel 算法实现程伟涛,郭来功,汪㊀强(安徽理工大学电气与信息工程学院,安徽淮南232001)摘要:Sobel 边缘检测技术是图像处理中最基本的技术之一㊂传统算法速度较慢且只有垂直和水平两个方向的梯度,对于一些其他方向的边缘检测效果不明显㊂文章设计了一种四方向(0ʎ,45ʎ,90ʎ,135ʎ)的Sobel 算法来提高边缘检测的准确性,针对传统Sobel 边缘检测算法阈值设置会出现偏差的缺点,基于中值滤波,采用自适应算法提高阈值准确性㊂本设计采用Verilog 语言编程㊂仿真结果表明:多方向阈值自适应Sobel 处理速度快,自适应阈值合理,边缘的完整性比传统方法有显著提高㊂关键词:Sobel ;自适应阈值;FPGA ;MATLAB 中图分类号:TP391㊀㊀文献标志码:A0㊀引言㊀㊀传统Sobel 算子只有水平和垂直两个方向[1]㊂传统Sobel 算法具有阈值无法自适应的缺点㊂本实验采用多方向的自适应阈值Sobel 算法[2],利用中值滤波的思想来实现自适应阈值㊂边缘检测在速度和准确性上,已经有多种提高方式[3]㊂应用单片机㊁数字信号处理芯片来进行图像处理,采用串行方式,实时性和系统性能并不理想[4]㊂因此,实验采用FPGA 的瞬时并行处理数据的特点,可以满足实时性要求[5]㊂FPGA 这一特性的处理速度远远快于软件处理平台[6]㊂1㊀传统Sobel 边缘检测㊀㊀传统Sobel 算子是一阶的边缘检测算子,采用的是x 和y 方向的两个3ˑ3的卷积因子,记为Gx 和Gy,卷积因子由图1所示㊂Gx 为垂直梯度方向,用于检测水平边缘;Gy 为水平梯度方向,用于检测垂直边缘[7],如图1所示㊂将x 和y 两个方向的卷积因子和原灰度图像对应位置的灰度值进行卷积,f (x ,y )为图像的矩形窗口,见公式(1)和(2)㊂图1㊀Gx(左)和Gy(右)卷积因子g x (x ,y )=ð1i =-1ð1j =-1G x (i ,j )ˑf (x +i ,y +i )(1)g y (x ,y )=ð1i =-1ð1j =-1G y (i ,j )ˑf (x +i ,y +i )(2)选取一个3ˑ3窗口的灰度值,记为:a 1㊁a 2㊁a 3㊁b 1㊁b 2㊁b 3㊁c 1㊁c 2和c 3㊂将它们和x ㊁y 方向的卷积因子分别进行卷积,得出结果就是x 和y 方向的灰度值,为g 1和g 2,根据公式(1)和(2)可得g 1和g 2的结果㊂根据公式(3)计算出这个3ˑ3的窗口的梯度值大小,记为G xy ㊂但是考虑到FPGA 的资源占用问题,本实验采用简单的绝对值求和的方式来计算最终的梯度值㊂如公式(4):G xy =g 12+g 22(3)G xy =g 1+|g 2|(4)实验计算出窗口的梯度值,然后进行图像分割㊂将公式(4)的结果和给出的阈值做比较,设阈值大小为T ,大于阈值的赋值为1,小于阈值的赋值为0㊂G =1,G xy >T 0,G xy <T{(5)2㊀改进的Sobel 算子2.1㊀四方向Sobel 算子㊀㊀传统Sobel 算子的检测方向只有x 和y 两个方㊀㊀向,当像素点其他方向的幅值较高,而x 和y 方向的幅值较低,传统算法无法检测到边缘点㊂本文在水平和竖直两个方向的基础上,增加了45ʎ和135ʎ两个方向,同样采用3ˑ3大小的窗口,全部4个卷积因子如图2所示,从左到右分别是0ʎ㊁45ʎ㊁90ʎ和135ʎ,分别记为G 1㊁G 2㊁G 3和G 4㊂将0ʎ㊁45ʎ㊁90ʎ和135ʎ方向的算子与目标窗口进行卷积,得到改进的梯度计算结果为记为g 1,g 2,g 3,g 4,见公式(8):图2㊀四方向算子㊀㊀g 1=(a 3+2b 3+c 3)-(a 1+2b 1+c 1)g 2=(c 1+2c 2+c 3)-(a 1+2a 2+a 3)g 3=(b 3+2a 3+a 2)-(c 2+2c 1+b 1)g 4=(a 2+2a 1+b 1)-(b 3+2c 3+c 2)ìîíïïïïïï(8)将所求的4个方向的差分的绝对值相加,即为最终的梯度值,如公式(9)所示㊂G xy =|g 1|+|g 2|+|g 3|+|g 4|(9)2.2㊀自适应阈值㊀㊀计算自适应阈值通常采用大津法或基于直方图的方法等,这一类的算法较为复杂,一般应用于软件实现,而在硬件上这一类方法不太容易实现㊂本文参考的是中值滤波的思想,考虑到图像灰度值都是非负数,所以比较大小对的方式可以直接使用有符号数减法来表示㊂同时,本研究对张琪等[5]的方法做出改进:第一步,在3ˑ3的窗口中,先将每一行按照从大到小的顺序排列,得到一个新矩阵㊂第二步,找出这个新矩阵第一列的最大值(MAX _MAX )和最小值(MAX _MIN ),第二列的中间值(MID _MID )以及第三列的最大值(MIN _MAX )和最小值(MIN _MIN )㊂第三步,找出第二步5个数值的中值,即为阈值T ㊂这种方法所需要比较的数值较多,步骤较为烦琐,因此对第二步做出改进㊂第二步中第一列的最大值就已经确定为第三步的最大值,同理第三列的最小值也是第三步的最小值,因此可以直接将这两个数值去掉,在MAX _MIN ,MID _MID ,MIN _MAX 中比较出中值㊂3㊀系统框架3.1㊀FIFO 数据处理㊀㊀Sobel 数据处理采用的FIFO 求和的思想㊂本实验选取一个3ˑ3的窗口数据,因此采用FIFO 来处理数据[8]㊂两个FIFO 的作用是缓存两行,可以得到三行数据㊂这里用到了FPGA 的流水线特性,其优点可以实现数据的无缝缓存和处理,不仅节约了缓存区空间,而且提高了数据流的处理速度[9]㊂将数据写入寄存器之后,需要将寄存器里的数据进行Sobel 处理,因此,再次定义一个读出标志信号,当行计数器计数到第三行的时候,将缓存的数据往外读出㊂对数据进行Sobel 运算和阈值计算㊂3.2㊀Sobel 模块㊀㊀数据由FIFO 进入Sobel 模块之后,由于时序信号需要延迟一个周期,因此,每一列的数据都会比前一列慢一个时钟周期,当FPGA 标志信号有效时,可以得出Sobel 计算所需要的9个数据㊂根据公式(8)和公式(9),计算出灰度值㊂模块由一个最高位判断框和一个数据选择器组成,当最高位是0时,表示正数,此时输出的绝对值就是本身,当最高位是1的时候,表示为负数,就需要对负数进行取反码再加一位㊂利用加法器和减法器计算出g1,g2,g3,g4,然后对这4个梯度值进行绝对值求和,所得结果为梯度值g xy㊂3.3㊀阈值自适应模块㊀㊀4个方向的Sobel算法抗噪能力并没有多高,因此使用自适应阈值尽可能地避免噪声的干扰㊂本实验根据中值滤波的原理,找出窗口的中值作为图像的阈值,这种方法相对简单,易于实现㊂实验利用FPGA 的并行特性,信号进入Sobel模块之后,分成两个方向,一个方向是进入Sobel灰度值计算模块,另一部分是进行阈值自适应㊂3.4㊀边缘判定模块㊀㊀边缘判定条件是阈值比较㊂计算所得的灰度值和自适应阈值模块给出的常数做出对比,大于这个常数,则判断为边缘,高电平为FF,显示为白色;小于或者等于给定的阈值,则判断不是边缘,为低电平00,显示为黑色㊂4㊀实验结果与分析㊀㊀本过FPGA对图像进行边缘检测㊂首先使用㊀㊀MATLAB2018a版本对图像进行预处理㊂所处操作环境是Windows10系统,CPU为i5-7300,GPU为1050Ti㊂采用的数据是一个大小为541ˑ541的Lena 灰度图㊂经过QuartusⅡ13.1软件编写Verilog HDL 语言来实现数据的传递㊁处理,通过Modelsim10.4和MATLAB双重验证算法的可行性㊂在Verilog的测试文件中,新建一个txt文件,将最终仿真的数据存入这个txt文件,然后在MATLAB中打开这个txt文件,得到最终的边缘检测图㊂图片选用的是一张541ˑ541的Lena图㊂实验结果如图3所示㊂从a,b,c,d依次是原灰度图㊁人为设置阈值为116的传统Sobel检测图㊁认为设置阈值为70的传统Sobel检测图以及改进之后的自适应阈值的Sobel检测图㊂结合原图发现,图3(a)对比图3(d),两者使用同样的阈值,有4处比较明显的边缘没有检测到,由图中红色圈标记可以看出㊂图3(c)和图3(d)也有3处比较明显的差距㊂总体来说都是在45ʎ和135ʎ方向上差距明显,边缘的完整性比两方向的Sobel检测算法好㊂在运算速度上, FPGA的所用时间约为0.05s,而传统Sobel时间约为2.63s,速度提升了50倍㊂5㊀结语㊀㊀本文分析了边缘检测的作用以及传统Sobel边缘㊀㊀图3㊀改进前后的对比检测算子的优缺点,并针对缺点做出两处改进㊂第一个改进就是将边缘检测的方向由x和y两个方向增加到0ʎ㊁45ʎ㊁90ʎ和135ʎ4个方向㊂第二个是对阈值设定做出改进,将原先的人为设置改成自适应阈值㊂在速度方面,结合FPGA并行特性和流水性,运行速度高于软件的运行速度,处理一张大小为541ˑ541的图片所用时间仅为0.05s,而软件平台的处理时间为2.6s,速度提升了50倍㊂对比传统Sobel算子,改进之后检测的边缘效果明显优于传统算法㊂参考文献[1]刘逢丁,曹杰,王营博,等.激光雷达距离像的实时边缘检测[J].光学技术,2021(4):404-409. [2]陈磊,叶焱.多方向自适应阈值边缘检测算法及FPGA并行实现[J].无线通信技术,2019(4):21-26.[3]ALMOMANY A,ALOMARI A M,JARRAH A,et al. An OpenCL-based parallel acceleration of a Sobel edge detection algorithm Using Intel FPGA technology[J]. South African Computer Journal,2020(1):3-26. [4]祁欣,陈剑锋,罗伟林.图像预处理算法的FPGA 实现[J].国外电子测量技术,2021(2):102-107. [5]张棋,贾方秀,殷婷婷.基于改进Sobel算法的实时图像边缘检测系统设计[J].仪表技术与传感器, 2018(2):101-104,108.[6]叶惠娇,冉全,成果.FPGA图像边缘检测系统的设计与实现[J].计算机应用与软件,2018(12):237-240,302.[7]谭媛,黄辉先,徐建闽,等.基于改进Sobel算子的遥感图像道路边缘检测方法[J].国土资源遥感,2016 (3):7-11.[8]SUDHARSHAN K M.Design of a Sobel Edge Detection Algorithm on FPGA[J].Turkish Journal of Computer and Mathematics Education(TURCOMAT), 2021(12):2458-2462.[9]陈鑫元,李筠,杨海马,等.自适应阈值图像二值化及形态学处理的FPGA实现[J].电子测量技术, 2016(7):67-71.(编辑㊀王永超)Implementation of multidirectional threshold adaptive Sobel algorithm based on FPGACheng Weitao Guo Laigong Wang QiangSchool of Electrical and Information Engineering Anhui University of Science and TechnologyHuainan232001 ChinaAbstract Sobel edge detection technology is one of the most basic technologies in image processing.The traditional algorithm is slow and has only two gradients in the vertical and horizontal directions.The effect of edge detection in some other directions is not obvious.This paper designs a four-direction0ʎ 45ʎ 90ʎ 135ʎSobel algorithm to improve the accuracy of edge detection.Aiming at the defect that the threshold setting of the traditional Sobel edge detection algorithm may deviate based on median filtering adaptive algorithm is adopted to improve the accuracy of the threshold.The design is programmed in Verilog language.The simulation results show that the multi-directional threshold adaptive Sobel processing speed is fast the adaptive threshold is reasonable and the integrity of the edge is significantly improved than the traditional method.Key words Sobel adaptive threshold FPGA MATLAB。
基于FPGA的Sobel算子图像边缘检测算法

0 引言
二维 图像窗 口中央的像素灰度用 0来代替 。 图1 ( a ) 为一帧图像 的 3× 3区域 , P为 各点的灰 度值 , 图l ( b ) 和图 1 ( e ) 分别为 S o b e l 算子水平 、 垂直方 向梯度算子 。
o p e r a t o r a l g o i r t h m b a s e d o n Ah e r a DE 2 —7 0 w h i c h i n c l u d e d a C MOS 5 mi l l i o n p i x e l s c a me r a nd a LC D. T h e a l g o i r t h m w a s p r o —
由于图像的边缘 蕴含了丰富的内在信息 , 是图像 的基 本 特征之一 。图像边缘检测 不仅能减少 所处理 的, 又能保 留图
边缘检 测算法处理后 由液 晶显示器显示。算法采用 了可编程宏功 能模 块与 V e r i l o g H D L语 言相结合 的方法 实现 , 实验 结
果表 明 , 基于 F P G A的硬件 系统能够很好 的实现 S o b e l 算子边缘检 测算法 , 通过设 置合 适的梯 度比较 阀值 , 较 为理 想的提
YANG Xi n — h u a , KO U We i — g a n g
( 1 . C o l f e g e o f E l e c t r i c a l a n d I n f o r ma t i o n E n g i n e e r i n g , L nz a h o u Un i v e r s i t y o f T e c h n o l o g y , L nz a h o u 7 3 0 0 5 0 , C h i n a ;
基于FPGA的Sobel边缘检测的实现
基于FPGA的Sobel边缘检测的实现 前⾯我们实现了使⽤PC端上位机串⼝发送图像数据到VGA显⽰,通过MATLAB处理的图像数据直接是灰度图像,后⾯我们在此基础上修改,从⽽实现,基于FPGA的动态图⽚的Sobel边缘检测、中值滤波、Canny算⼦边缘检测、腐蚀和膨胀等。
那么这篇⽂章我们将来实现基于FPGA的Sobel边缘检测。
图像边缘:简⾔之,边缘就是图像灰度值突变的地⽅,亦即图像在该部分的像素值变化速度⾮常之快,这就好⽐在坐标轴上⼀条曲线有刚开始的平滑突然来个⼤转弯,在变化出的导数⾮常⼤。
Sobel算⼦主要⽤作边缘检测,在技术上,它是⼀离散型差分算⼦,⽤来计算图像亮度函数灰度之近似值。
在图像的恩和⼀点使⽤此算⼦,将会产⽣对应的灰度⽮量或是其法⽮量。
边缘是指其周围像素灰度急剧变化的那些像素的集合。
边缘存在于⽬标、背景和区域之间,所以,他是图像分割所以来的最重要的依据。
由于边缘是位置的标志,对灰度的变化不敏感,因此,边缘也是图像匹配的重要的特征。
Sobel边缘检测的核⼼在于像素矩阵的卷积,卷积对于数字图像处理⾮常重要,很多图像处理算法都是做卷积来实现的。
卷积运算的本质就是对制定的图像区域的像素值进⾏加权求和的过程,其计算过程为图像区域中的每个像素值分别与卷积模板的每个元素对应相乘,将卷积的结果作求和运算,运算到的和就是卷积运算的结果。
卷积公式如下。
3x3的窗⼝M与卷积模板C的卷积运算如下。
Gx和Gy是sobel的卷积因⼦,将这两个因⼦和原始图像做如下卷积。
如图3-22所⽰。
Sobel卷积因⼦其中A代表原始图像。
得到图像中的每⼀个点的横向纵向灰度值Gx、Gy。
最后通过如下公式来计算改点灰度的⼤⼩。
但是通常为了提⾼效率,使⽤不开平⽅的近似值,虽然这样做会损失精度,,使⽤并⾏流⽔线的设计思想将Sobel算⼦的实现划分为五个步骤,加流⽔线后的计算可以将整个模块的计算提⾼5倍。
(1)计算Gx与Gy与模板每⾏的乘积(2)两个3x3矩阵的卷积即将每⼀⾏每⼀列对应相乘然后想加(3)求得3*3模板运算后的Gx、Gy(4)求Gx^2 + Gy^2的结果,和Gx和Gy的平⽅和(需要消耗两个时钟)(5)求Gx^2 + Gy^2的平⽅根边缘检测同样需要⽣成3x3矩阵⽽这与中值滤波和均值滤波中⽣成3X3矩阵的⽅法是完全⼀样的,3X3矩阵的⽣成⽅法可以参考前⾯的博客:最近发现Xilinx也有⾃⼰的Shift RAM,Shift_RAM简直就是为3X3矩阵⽽⽣的,所以这我使⽤Xilinx shift_RAM来实现3X3矩阵,配置如下:这⾥Xilinx的shift_ram⼀次只能⽣成⼀⾏数据,所以我采⽤两个IP Core和正在输⼊的⼀⾏来⽣成三⾏数据这是我设计的模块端⼝,clken为串⼝接收的完成标志信号,接收到的⼋位数据输⼊,最后经过Sobel算⼦计算完成后,将单bit数据通过位扩展为⼗六位输出。
基于Sobel算子的数字图像边缘检测与FPGA实现
a d i t g a e n aFP n n e r t d i GA h p o i n p r a c i f l x S a t n3 XC3 5 5 X i S 0- PQ2 . e sm u a e e u ti d c t st a h r s n e GA 08Th i l t d r s l n i a e h t e p e e t d FP t c i h p XC3 5 - P S 0 5 Q2 8 c n r n a 3 M Hzs e d F n ly t e e p rm e t 0 a u t1 4 p e . i a l , h x e i n sd n o t n ma e o 0 4 X 1 2 i e s Th wa o e t e a i g f 1 2 0 4 p x l. e
级 . 大 大 增 加 了设 计 过 程 和 最 后 工 程 的 灵 活 性 。 这
S b l . 检 测 算 子 结 合 了边 缘 检 测 和 平滑 算 子 . 其 在 o e: 缘  ̄ 使 嘈杂 的环 境 下 有 良 好 的 检 测 能 力 。因此 本 文 选 择 S b l o e算子 应
一二 、 Biblioteka e边 缘 检 测 原 理 sbl
图 像 边 缘 是 图 像 的 基 本 特 征 之 一 , 包 含 对 人 类 视 觉 它
直 是 一 个 难 题 。虽 然 DSP 备 指 令 流 水 线 特 性 和 很 高 的 具
t he Edge D e ec i i t lI a nd is r alza i t ton ofD gia m ge a t e i ton by FPG A ec t hni que bas d e on be SO lope a o r tr
基于FPGA联合Sobel算法的实时图像边沿检测系统的设计与实现
基于FPGA联合Sobel算法的实时图像边沿检测系统的设计与实现王晓娟;翟成瑞【摘要】边沿检测技术作为数字图像处理领域的重要一支,在目标匹配,交通管控,国防安全等多个领域有着广泛的应用,能够精确高效地实现边沿检测对于后续进行更高层次的图像识别以及图像处理有着密切的联系;为了实现实时有效的图像边沿检测提出了基于FPGA结合Sobel算法的实时图像边沿检测系统,硬件使用流水线结合并行处理的解决方案,能够有效提高图像处理的速度;算法设计采用Sobel算法,不但简化了运算同时获得了不错的检测效果;实验结果显示,系统可高效地达成实时图像边沿检测的设计目的,而且提升了图像的处理效率与边沿检测的效果,便于满足后续图像处理的要求.【期刊名称】《计算机测量与控制》【年(卷),期】2017(025)001【总页数】4页(P34-37)【关键词】FPGA;Sobel算法;图像边沿检测【作者】王晓娟;翟成瑞【作者单位】中北大学,太原030051;中北大学,太原030051【正文语种】中文【中图分类】TP3图像形状信息的边沿信息作为图像信息的重要组成部分,是图像的一个重要特征。
边沿检测是进行图像处理分析,计算机以及人类视觉和模式识别技术的重要前提,其不但可以减少图像处理的数据量,同时能够最大限度保留图像中物体的形状信息,当前已经在目标识别与跟踪,计算机视觉等领域获得了非常广泛的应用。
因而,研究设计出能够实时,准确,高效,稳定实现边沿检测的系统,对于图像处理具有极其关键的使用价值和理论意义[1]。
在实际工程需求中,图像的处理系统对于实时性的要求比较高,同时由于图像的数据量越来越大等问题,依靠单纯的软件系统来对图像进行实时处理已经显得力所不及,为此,采用FPGA或者DSP等硬件设备设计实时图像处理系统成为当前的主流[2]。
由于DSP仍然采用串行指令执行系统,这很大程度上影响了他的执行效率以及吞吐量,而且扩展性不佳。
另一方面,由于FPGA逻辑结构独特,存储资源丰富,同时具有实时性,可靠性以及灵活性等方面的优势,使得其在众多的图像处理芯片中脱颖而出,得到了越来越广泛的关注和使用。
Sobel边缘检测的FPGA实现
0 引言随着设计复杂度的增加,使用IP核已经成为一种常用的设计方法。
QuartusⅡ软件提供的Megafunt-tions是基于Altera底层硬件结构最合理的成熟应用模块,在代码中使用Megafunctions这类IP资源,不但能将设计者从繁琐的代码编写中解脱出来,更重要的是,在大多数情况下Megafunctions的综合和实现结果比用户编写的代码更优。
而且只需要简单地设置选取宏功能模块的相关参数就可以在程序中调用它们,因此宏功能模块的使用也十分方便。
QuartusⅡ的Mega-functins中包含有算术运算(Arithmetic)、逻辑门(Gates)、I/O、存贮器(Storage)等四个系列,可以根据系统设计需求灵活选用。
在实时图像处理中,用Sobel算子进行物体的边缘检测是经常用到的算法,由于对处理速度要求较高,因此用纯软件的方法很难达到要求。
而FPGA对同时可完成的处理任务几乎没有限制,适合高速、并行信号处理,并且FPGA密度高、容量大,有内置存储器、容易实现,所以FPGA广泛用于实时图像处理系统中。
在此通过调用基于RAM的移位寄存器altshifttaps、可编程乘加器altmult add、可编程多路并行加法器parallel_add和参数化绝对值运算模块lpm_abs,实现了基于FPGA的Sobel边缘检测。
最后给出设计系统的仿真结果,通过与Matlab仿真结果相比较,可以看出该设计获得了很好的边缘检测效果。
1 Sobel边缘检测算法图1给出了Sobel边缘检测算法框图。
从图中可以看出对一副图像进行Sobel边缘检测时首先要利用Sobel算子计算出水平梯度和垂直梯度,然后再把两个方向的梯度结合起来,最后应用门限处理模块判断图像边缘并输出边缘检测结果。
图2(a)为一副图像的3×3区域,图2(b)和图2(c)分别为Sobel算子的x方向(垂直方向)梯度算子和y方向(水平方向)梯度算子。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
边缘检测算法主要用于地面复杂背景下的球 形目标检测,由于缺少地面背景和目标的有关灰 度信息方面的先验知识,可以确定利用的只有边 缘信息。边缘用于寻找区域的边界,利用图像函数 在单个像素的一个邻域处的特性来计算。因此,描 述边缘的检测算子可以用一阶或二阶偏导数来实 现。常用基于梯度的边缘检测方法,主要有Ro— bens、Sobel、Laplace算子。
缘方向。这个结果以19位数据形式输出,低16位 为数据位,高3位为模板号。
(3)数据存储模块B与数据存储模块A功能 相同,存储的数据是边缘响应的结果(低16位)并 带边缘方向(高3位),数据宽度为19位。数据的 存入和取出的设计中仍需注意尽量少地使用存储 空间,并要兼顾存人的数据不会覆盖未被取出的 数据和避免数据重复取出的情况。送给后面模块 做“非最大值抑制”时需10个数据为一组并行送 出,9个位于模板位置数据的数据位和位于模板中 间位置的数据的边缘方向。
·34·
航空兵器2007年第6期
r
二J麟黼.. =爪瓣 熏 16位数据
…….一q个1^待耕摇
串行输入 l璎AM广1出模块I
曦l 磊刨 }咧枷些趱赫户 jt
刊些筮矍l
模
::l匹疆蹦 板
计 算
一]模判块断l1
边缘响应结果及:
边缘方向输出!同iii百k
!I垦△丛r
数据 并行 输出
抑制结果 判断
—延 模
一1
—2
一l
—1
0
一l
0
0
0
一2
0
2
l
2
1
—1
0
l
图1 Sobel边缘算子(其余6个方向可通过简单旋转得到)
1 用SobeI算子实现边缘检测算法的步骤 基于sobel算子的边缘检测算法流程图如图2
赵 亮等:基于FPGA的sobel算子的边缘响应算法实现
·33·
所示,可通过六个步骤实现。
图2基于Sobel算子的边缘检测算法流程图
考虑到“非最大值抑制”已经矫正了sobel算 子使边缘变粗的影响,本算法利用边缘梯度方向 信息,在作阈值分割时,对每个高于门限TH的像 素hg(x,y),考虑其梯度方向上相邻像素是否高过 门限TH,如果高于TH,则像素hg(x,y)置0,最后 得到边缘二值图像sg(x,y)。图像sg(x,y)虽然不 能保证线条宽度全为1,但对于后续的Hough变换 影响不大。
利用软件仿真,对备选方案进行了评估和测 试,目前采用的分割阈值选取方法为基于全局门 限的“最大距离法”。
(6)对整帧边缘响应图像hg(x,y)作阈值分 割,高于TH的边缘响应视为真正边缘,低于TH 的边缘响应视为背景。红外图像边缘较为模糊,简 单的二值化不会提供理想的单像素宽的连续边界。 常用的边缘细化方法有许多种,大多数方法需要 对二值图像作扫描,并考虑每个非。像素邻域内的 连通性,实施起来较为复杂。
期即可得到9个数据与四个模板计算的结果,大大 节省了计算时问。在比较模块中将四个计算结果 两两比较,比较结果及对应的模板号送入判断模 块中。由于每个计算结果对应两个模板号,在判断 模块中做标记后,再将前两次比较后大的两个再 次比较,得到最大值及其所对应的模板号。这个最 大值即为边缘响应结果,其对应的模板号即为边
(4)对修正后的直方图数组count(256)中的 所有非O像素进行平均,得出均值Th0。由于图像 hg(x,y)中大部分非0像素为非边缘响应,所以低 于均值Th0的像素都可视为非边缘像素。
(5)对于所有高于均值ThO的像素,仍然会 万方数据
包含有非边缘响应。通过选取一合适的阈值TH来 加以排除。对于本算法而言,最困难的是阈值TH 的选取,因此作了一些备选方案。
age real—time processing based on FPGA+DSP,introduces the six steps of edge response algorithm real—
ized by Sobel arithmetic operatos and the elements of“edge response撕thmetic”and“non-maximum sup-
sobel算子利用像素的上、下、左、右邻域的 灰度加权算法,根据在边缘点处达到极值这一原
收稿日期:2006一09—12 作者简介:赵亮(1980一),男,黑龙江人,本科,研究方向 是FPGA。
万方数据
理进行边缘检测。此算法检测效果较好,对噪声也 具有平滑作用。缺点是会产生伪边缘,定位精度稍 差,且在提供较为精确的边缘方向信息时增加了运 算量。考虑到可以利用边缘方向信息来对卷积结果 进行修正,且容易用硬件实现,所以目前确定的算 法为Sobel边缘检测。图1所示为Sobel边缘算子。
2007年第6期 2007年1 2月
航空兵器 AER0 WEAPONRY
2007 No.6 Dec.2007
基于FPGA的Sobel算子的边缘响应算法实现
赵 亮。吕 雷
(中国空空导弹研究院,河南洛阳471009)
\
摘要:由于边缘检测等图像处理算法数据量较大,要求实时信号处理系统必须具有处理大 数据量的能力。提出了一种用FPGA+DSP实现图像实时处理的方案。介绍了用Sobel算子实现图 像边缘检测算法的六个步骤以及用FPGA实现“边缘响应计算”和“非最大值抑制”的原理。FPGA 对数据并行处理的特点,大大提高了图像信号处理速度,保证了信号处理系统的实时性。
关键词:实时信号处理系统;Sobel算子;边缘响应算法;非最大值抑制;现场可编程门阵列 中图分类号:TN911.73;TJ765.3文献标识码:A文章编号:1673—5048(2007)06—0032—04
Realization for Edge Response Algorithm with Sobel Arithmetic Operators Based on FPGA
块 l出蕉墨l
模块
模块
控制l
■—茵藕赫
!制”结果输肆
图3 FPGA实现“边缘响应计算”和“非最大值抑制”的原理图
图3各个模块原理分析如下: (1)数据存储模块A由一个双端口RAM,一 个数据存取控制模块和一个数据并行输出模块构 成。“数据存取控制模块”将串行的数据写入双端 口RAM,并从RAM中读出。在此处为了尽量少地 占用FPGA的存储资源,并满足模板计算所需数据 的特殊位置,定义双端口RAM的存储深度为320 ×4。写入地址按计数器正常累加即可,读出时地 址要根据Sobel算子模板的要求每次按3×3的矩 阵位置依次取出9个数。为了避免数据重复取出, 在新的一行数据写入完毕后给出指令,在收到指 令后进行对三行数据的读出操作。读出三行数据 需要2 862个时钟周期,为了使写数和读数的等待 时间不至于过长,这里设计写数时钟为10 M,读数 时钟为100 M。“数据并行输出模块”将从双端口 RAM中取出的9个一组的数据依次赋给9个变量, 然后在一个周期内将这9个数据送给后面的模板 做边缘响应计算。在数据的存入和取出的设计中 尽量少地使用存储空问,并要兼顾存人的数据不 会覆盖未被取出的数据和避免数据重复取出的情 况是设计的难点。 (2)“Sobel检测算子”计算模块中主要包括一 个模板计算模块,一个判断模块和三个比较模块。 对计算模块的设计要求在尽量少的时钟周期里计 算出边缘响应结果及找出其所对应的边缘方向, 观察8个方向的Sobel检测算子之间系数位置的特 点,计算结果应该是两两互为相反数,因此只需将 其中的4个模板与存储模块送来的9个并行数据 进行卷积计算即可。模板中系数包括一2,一1,0, 1,2五种,在VHDL语言设计中乘2相当于数据 位左移一位,负数可以用其相反数取反加1来表 示。如果将9个数据依次和四个模板计算一遍仍需 耗费大量的时钟周期,这里利用VHDL语句并行 处理可在一个时钟周期内将9个数据与可能遇到 的系数相乘的结果全部计算出来,再分别和四个 模板的系数位置相对应。这样仅需要五个时钟周
Key words: real一time signal processing system; Sobel arithmetic opemtors; edge response algo— rithm;non—maximum suppression;field programmable gate array(FPGA)
ZHA0 Liang,Ln Lel (China Airbome Missile Academy,Luoyang 47 1 009,China)
Abstract:The real—time si弘al processing system Inust have the如ility of dealing with large amount of data when the edge detection algo血hm is used in image processing.This paper presents a way to realize im-
pression”redized by FPGA.The parallel processing data characteristic of FPGA improves the pmcessing speed of image signal and ensures the real—time responsibility in the real—time signal precessing system.
2用FPGA实现“边缘响应计算"和“非最 大值抑制”
实时信号处理系统要求必须具有处理大数 据量的能力,以保证系统的实时性;其次对系统 的体积、功耗、稳定性等也有较严格的要求。实 时信号处理算法中经常用到对图像的求和、求 差运算,二维梯度运算,图像分割及区域特征提 取等不同层次、不同种类的处理,其中有的运算本 身结构比较简单,但是数据量大,计算速度要求 高,例如基于sobel算子的“边缘响应计算”和“非 最大值抑制”。