ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:260.30KB ,
资源ID:29745729      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29745729.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FPGA在缘检测中的应用.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

FPGA在缘检测中的应用.docx

1、FPGA在缘检测中的应用FPGA在边缘检测中的应用摘 要:目前,FPGA以其算法硬件处理速度快、可编程、可重配置等特性,非常适合图像处理系统。本文针对边缘检测算法实现方法的研究,利用FPGA这一平台进行了实现。文章分析了FPGA在边缘检测中的应用,主要是Sobel边缘检测算子、Prewitt边缘检测算子。在论文中,根据FPGA的并行流水线性,对Sobel、Prewitt边缘检测算子分别进行了FPGA设计与实现,并进行了仿真,并且利用两种边缘检测算子对图像进行了处理比较。最后,从时间和效果与软件处理的结果方面,对两种边缘检测算子进行了比较。关键词 数字图像处理 Sobel边缘检测法 Prewit

2、t边缘检测算法 现场可编程逻辑门阵列(FPGA)0 引言所谓的数字图像处理技术,就是我们利用计算机对图像进行加工处理,并从中获取一些对我们来说有用的信息。在现实生活中,我们也亲身体会到我们是通过图像获取视觉信息的。伴随着计算机信息技术、集成电路技术的飞速发展,数字图像处理技术也得到了很大的发展,并且也出现了许多与数字图像处理技术相关的新理论、新技术、新设备。这些新理论、新技术、新技术在工业生产、科学研究、医疗卫生等领域得到了广泛应用,也对人类社会的发展以及人类生活水平的提高做出了巨大的贡献。我们知道边缘一般是指图像灰度变化率最大的位置,图像的边缘是图像最重要的特征,它是由于图像局部特征的不连续

3、形成的。边缘的表现形式有图像灰度级与纹理结构的突变、彩色变化等等,在图像的边缘信息里含有许多对图像分析特别重要的特征信息。在利用计算机进行数字图像处理的过程中,为了使图像的轮廓更加突出,容易辨别,而采取的一种图像处理方法就是边缘检测,有时也称其为边缘增强。在图像处理的过程中,边缘检测主要运用于图像中的目标与图像的背景、图像中的不同区域之间、图像中的一个目标与另一个目标之间,是人们描述、识别目标以及解释图像的一个非常重要的参数。边缘包含了图像丰富的信息,它是完实现图像分割、图像配准、图像分类以及图像识别的重要保障,如果边缘检测能够成功,那么图像分析就会变得很方便很简单,并且其精度也会得到相应的提

4、高。边缘检测算子分为一阶微分算子和二阶微分算子。常见的一阶微分算子有Prewitt算子,Canny算子、Sobel算子、Roberts Cross算子,Kirsch算子,罗盘算子等等。二阶微分算子包括Laplacian算子和LOG算子等等。本文主要介绍了Prewitt边缘检测算子的原理以及基于FPGA的Prewitt边缘检测算法的实现。1边缘检测算子介绍图像的边缘是图像最基本的特征之一,边缘检测是模式识别、图像分析中非常重要部分,因此在机器人视觉、图像处理、卫星遥感技术等领域中起着很重要的作用。边缘一般是指图像灰度变化率最大的位置,含有图像中最重要的信息,因此边缘总存在于两个相邻的且具有不同灰

5、度值的区域之间。通常情况下,信号中的边缘点有两种,一种是突变点,再者就是奇异点,边缘点附近灰度的变换可以由相邻象素灰度分布的梯度反映出来。1.1 Sobel边缘检测算子索贝尔算子(Sobel Operator)是数字图像处理中的常用算子之一,主要应用于边缘检测。在技术上,它是一离散型差分算子,用来运算图像亮度函数的梯度近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。现在假设在图像平面上有一个9个点的小区域: (1-1)现用一个二次曲面来拟合这9个点的灰度值,即用 (1-2)来近似图像灰度函数,并使均方误差 (1-3)最小。令分别为零,联立解得各系数。将二次曲面对,求偏导

6、数,得到梯度的幅值为: (1-4)它的两个卷积模板为: (1-5) (1-6)1.2 Prewitt边缘检测算子Prewitt算子是一种边缘模板算子,这种算法是利用局部差分平均方法来寻找边缘的,该算法体现了三对像素点像素值之差的平均概念。首先这些算子的模板是由理想的边缘算子图像构成的,然后依次用边缘模板去检测待检测的图像,再由与被检测区域最为相似的模板给出检测的最大值,并且用这个最大值代替算子的输出值,这样边缘像素就被检测出来了。在这里我们假设在图像平面上有一个9个点的小区域: (1-7)Prewitt算子是通过对平面上9个点进行曲面拟合进而求拟合曲面偏导数,最后再计算梯度的幅值。根据Prew

7、itt的定义可以得到Prewitt算子:(1-8)其中两个卷积为: (1-9) (1-10)2. 基于FPGA的设计思路FPGA设计流程如图2-1所示:图2-1 FPGA典型设计流2.1设计思路介绍由于sobel算子和Prewitt算子的实现思路是类似的,他们的区别只是在于算子的不同。这里我们以sobel算子为例介绍,Prewitt算子是一样的。Sobel边缘检测的算法基本原理如图2-2所示:图2-2 Sobel边缘检测算法原理图首先分别计算水平梯度和垂直梯度,然后将两个方向的梯度值结合起来,接着通过一个门限值后,最后输出二值图像。通过前面的分析可知,假设输入的像素点分别为,。那么x方向的梯度

8、和y方向的梯度分别为: (2-1)梯度结合后的梯度值G为: (2-2)门限处理函数: (2-3)其中为门限处理的阈值。综上分析Sobel算子在空间域上比较容易实现,而且可以有效的滤除图像噪声的影响,比较适合处理有害噪声较多的图像。欲在FPGA中实现Sobel边缘检测首先需要生成3*3的窗口,窗口的生成办法已经在前面中值滤波一节中做了介绍,在此不再重复介绍。此处重点介绍如何完成Sobel算子运算。Sobel算法的关键在于计算梯度值G。由前面分析可知(2-4)设计中避免使用乘法和除法运算从而减小系统的面积。其具体的算法实现框图如图2-3所示:图2-3 Sobel算法实现框图在上面框图中,表示对应的

9、像素点。主要的操作是加法操作和减法操作,其中abs为取绝对值操作。编译综合之后生成的RTL级框图如下图所示,图中最左侧的模块是3*3窗口生成模块,接着是水平梯度和垂直梯度计算模块,后面是绝对值计算模块,最后一个是梯度整合模块和阈值计算模块。图2-4 Sobel算法的RTL级原理图从上面这个图能清晰的看出Sobel的内部结构设计,而从下面这个Sobel端口图则能清楚的看出这个模块部分的输入输出关系。图2-5 Sobel算法模块的端口上图中的clk为时钟信号,rst是复位信号。median_out_flag则是输出使能信号,median_data_in是输入的像素灰度信息,其为8位无符号数,取值范

10、围是0255。输出信号包括:输出结果sobel_data。已开始输出指示信号sobel_en。x和y是从内部行计数器输出的像素点的x,y坐标。由于sobel算子和Prewitt算子的实现思路是类似的,他们的区别只是在于算子的不同。其算子形式为: (2-5)2.2 FPGA代码解释下面这个语句中:assign sobel_data = en_grads ? (abs_data = 675) ? 8d255 : 8d0) : 8d0;/设定阈值,此时为675修改标红的数据就是更改阈值。另外比较关心的是算子的实现部分该部分是在data_grads.v文件中实现的,具体代码如下所示,重点关注下标红的部

11、分:/产生Gx横向梯度always(posedge clk or negedge rst)begin if(!rst) begin data_x1 = 0; data_x2 = 0; end else begin if(filter_req) begin data_x1 = P9+P8+P8+P7;(Prewitt算子此处是P9+P8 +P7) data_x2 = P1+P2+P2+P3; (Prewitt算子此处是P1+P2 +P3) end else begin data_x1 = 0; data_x2 = 0; end endendalways(posedge clk or negedg

12、e rst)begin if(!rst) begin Gx = 0; end else begin if(flag_reg) Gx = data_x1-data_x2; else Gx = 0; endend/产生Gy纵向梯度always(posedge clk or negedge rst)begin if(!rst) begin data_y1 = 0; data_y2 = 0; end else begin if(filter_req) begin data_y1 = P9+P6+P6+P3; (Prewitt算子此处是P9+P6 +P3) data_y2 = P1+P4+P4+P7;

13、(Prewitt算子此处是P1+P4 +P7) end else begin data_y1 = 0; data_y2 = 0; end endendalways(posedge clk or negedge rst)begin if(!rst) begin Gy = 0; end else begin if(flag_reg) Gy = data_y1-data_y2; else Gy = 0; end end3. 仿真结果以及分析仿真结果如下图所示:图3-1 算法的仿真结果图3-2算法的仿真结果细节图3-1是仿真的整体图,可以看到在这个图中clk时钟信号已经看不清楚,图3-2能清楚的看到s

14、obel_data(Prewitt边缘检测结果数据)的输出变化。图3-2是将仿真图放大之后的效果,在这个图中能看出clk时钟信号和图像信息输入数据median_data_in的变化。可以看到出sobel_data只有两种状态0x00和0xff。当前点如果是在边缘上则通过系统之后该点的数值变为0xff,如果当前点不是在边缘上则该点输出为0x00。仿真结果如下图所示:图3-3 Sobel边缘检测算子的仿真结果(阈值为675)图3-4 Prewitt边缘检测算子的仿真结果(阈值为675)通过以上仿真结果可以看出, Sobel边缘检测算子对噪声具有平滑作用,提供的边缘方向信息也比较精确,但是Sobel

15、边缘检测算子的边缘定位精度不够高,适用于实际应用中对精度要求不高的场合。Prewitt边缘检测算子也具有平滑噪声的作用,但是其定位精度也不够高。5. 结语在文中,主要基于FPGA对Sobel和Prewitt边缘检测算子的实现进行了分析研究。根据两种边缘检测算子的基本原理,利用FPGA平台对其进行了设计仿真分析,研究FPGA在边缘检测中应用,并通过MATLAB的imshow函数实现了图像数据的显示,并且对仿真结果进行了对比分析。参考文献1 张亶,陈刚编.基于偏微分方程的图像处理.北京:高等教育出版社,2004,20-612 章毓晋.图像工程(上册)-图像处理M.北京:清华大学出版社, 2012.

16、 2.3 范培培. 基于FPGA的图像处理方法研究与实现D. 天津:河北工业大学, 2010.12.4 张永军.基于FPGA的图像处理系统设计与算法实现研究:D.重庆:重庆大学,20065 付麦霞,张元,廉飞宇. 基于CPLD 的图像边缘检测器的研究J. 通信技术, 2009, 42(11):6 云霄.可配置FFT/IFFT处理器的设计及其FPGA构造:硕士论文.西安:西安电子科技大学,20097 郑文明.基于FPGA的数字信号处理算法研究与高效实现:硕士论文.黑龙江:哈尔滨工程大学,20098 唐良瑞,马全明,景晓军等 图像处理实用技术 北京:化学工业出版社,2002.19 吴艳.基于FPGA的数字图像处理基本算法研究与实现:D.黑龙江:哈尔滨工业大学,200810 褚镇勇. FPGA设计及应用.西安:西安电子科技大学出版社,2002.7

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1