边缘检测算法的实现

Sobel和Prewitt算子都是基于3*3模板的,所以我们再进行边缘检测的时候,也需要产生一个3*3的模板。本次毕业设计产生3*3的模板的办法是,用RAM来存储图像的前两行数据,当前输入的数据作为第三行。详细的办法为,第三行数据到来时,我们先读出寄存在RAM的前两行数据,这样就获得了一个为一列三行的数据,再将这个一列三行的数据寄存三次,也就获得了3*3的数据模板。在此模块中,我们例化了两个双端RAM,其详细设置如图4-13、图4-14、图4-15所示。

图4-13 RAM配置页面

Figure 4-13 RAM configuration page

图4-14 RAM时钟设置

Figure 4-14 RAM Clock Settings

图4-15 RAM输出配置

Figure 4-15 RAM output configuration

然后我们先求x方向的偏导数,再求y方向的偏导数,其中Prewitt和Sobel算子是靠sel信号来区别的,当sel=0时,进行Prewitt算法,当sel=1时,进行Sobel算法。然后两个方向偏导数的平方相加,再开根号,计算出来的值就是梯度向量的大小。再将这个值与我们所设置的阈值相比较,本次毕业设计设置的为20,大于它,表示为边缘,即为1,反之,为0。其中,所需要的开方计算可调用SQRT,详细配置如图4-16所示。

图4-16 SQRT配置界面

Figure 4-16 SQRT configuration interface

压缩包里包含源程序、仿真、AD原理图、PDF文档(具体内容见下图目录)、答辩PPT、调取仿真的视频介绍。(说明:本人FPGA开发板用的是某某原子新起点V1开发板,如果是此开发板源程序直接下载就可以用。)

设计具有创新点,也就是可以用按键在Sobel算子和Prewitt算子边缘检测间进行切换,也就是下板子时是Sobel边缘检测,再摁一下key0,就变成Prewitt边缘检测,再摁一下变成Sobel边缘检测。网上的资源基本只有单个的,如Sobel的边缘检测或者Canny的边缘检测,这样的话,可以与别人形成差异。检测效果如下图所示。

仿真仅仅展示Prewitt边缘检测的,其他的还包括Sobel、VGA、PLL、摄像头配置等。

PDF文档的查重率为18.65。

边缘检测代码

//1.首先计算x方向的偏导数
always@(posedge clk or negedge rst_n)beginif(!rst_n)beginGy_temp1 <= 10'd0;Gy_temp2 <= 10'd0;endelse case(sel)0:begin//prewitt算法Gy_temp1 <= matrix_p13 + (matrix_p23 ) + matrix_p33; Gy_temp2 <= matrix_p11 + (matrix_p21 ) + matrix_p31; end1:begin//soble算法Gy_temp1 <= matrix_p13 + (matrix_p23 << 1) + matrix_p33; Gy_temp2 <= matrix_p11 + (matrix_p21 << 1) + matrix_p31; enddefault:beginGy_temp1 <= Gy_temp1;Gy_temp2 <= Gy_temp2;endendcaseendassign     Gy_data = (Gy_temp1 >= Gy_temp2) ?     Gy_temp1 - Gy_temp2     : (Gy_temp2 - Gy_temp1) ;//2.再计算y方向的偏导数
always@(posedge clk or negedge rst_n)beginif(!rst_n)beginGx_temp1 <= 10'd0;Gx_temp2 <= 10'd0;endelse case(sel)0: begin//prewwit算法Gx_temp1 <= matrix_p11 + (matrix_p12 ) + matrix_p13; Gx_temp2 <= matrix_p31 + (matrix_p32 ) + matrix_p33; end1:begin//soble算法Gx_temp1 <= matrix_p11 + (matrix_p12 << 1) + matrix_p13; Gx_temp2 <= matrix_p31 + (matrix_p32 << 1) + matrix_p33; enddefault:beginGx_temp1 <= Gx_temp1;Gx_temp2 <= Gx_temp2;endendcase
endassign Gx_data = (Gx_temp1 >= Gx_temp2) ? Gx_temp1 - Gx_temp2 : (Gx_temp2 - Gx_temp1);//3.计算x和y平方和
always@(posedge clk or negedge rst_n)beginif(!rst_n)Gxy_square <= 21'd0;elseGxy_square <= (Gx_data * Gx_data) + (Gy_data * Gy_data);
end//4.平方和开平方(梯度向量的大小)
SQRT  u_SQRT
(.radical   (Gxy_square),.q         (Dim),.remainder ()
);
assign gry=Dim[10:3];
//5.将开平方后的数据与预设阈值比较(阈值所设为20)
always@(posedge clk or negedge rst_n)beginif(!rst_n)post_img_Bit_r <= 1'b0; //初始值else if(Dim >= SOBEL_THRESHOLD)post_img_Bit_r <= 1'b1; //检测到边缘1elsepost_img_Bit_r <= 1'b0; //不是边缘 0
end

毕设或者课设,如果需要此资源,请私信我。

基于FPGA的图像边缘检测系统设计相关推荐

  1. Matlab与FPGA图像处理系列——基于FPGA的实时边缘检测系统设计,sobel边缘检测流水线实现

    注:下载链接的资源是图片存 ROM 后读取进行 Sobel 检测显示在 VGA上,可供参考. 摘要:本文设计了一种基于 FPGA 的实时边缘检测系统,使用OV5640 摄像头模块获取实时的视频图像数据 ...

  2. 基于FPGA的图像中值滤波原理与实现

    图像中值滤波的FPGA实现 项目简述 中值滤波器原理 中值滤波器的实现 测试模块的代码 仿真结果 下板结果 总结 项目简述 中值滤波器在去除尖端噪声中非常重要,是信号处理中最长用到的滤波器.图像中的一 ...

  3. 基于FPGA的实时图像边缘检测系统设计(上)

    今天给大侠带来基于FPGA的实时图像边缘检测系统设计,由于篇幅较长,分三篇.今天带来第一篇,上篇,话不多说,上货. 导读 随着科学技术的高速发展,FPGA在系统结构上为数字图像处理带来了新的契机.图像 ...

  4. sobel算子原理_「学术论文」基于Sobel算法图像边缘检测的FPGA实现

    摘要: 针对嵌入式软件无法满足数字图像实时处理速度问题,提出用硬件加速器的思想,通过FPGA实现Sobel边缘检测算法.通过乒乓操作.并行处理数据和流水线设计,大大提高算法的处理速度.采用模块的硬件设 ...

  5. 基于FPGA的图像浮雕效果实现

    基于FPGA的图像浮雕效果实现 项目简述 算法原理及MATLAB实现 浮雕效果的FPGA实现 FPGA工程代码 下板效果 参考文献 总结 项目简述 为什么要做这个小项目,因为最近正在在学习FPGA开源 ...

  6. verilog 算法加速模块设计流程_基于FPGA的图像加速器的设计

    基于 FPGA 的图像加速器的设计 摘 要 介绍了一种基于 FPGA 的图像加速器的设计.本文硬件加速器的实质是通过流水线 设计来减少多余的操作达到加速的目的的, 内存是由 DMA 控制器访问, 之后 ...

  7. 基于fpga的sobel边缘检测

    基于fpga的sobel边缘检测,部分的代码参考的是野火正点原子的代码和视频.通过matlab将图片转成txt文件,并编写verilog代码将处理好的数据再转成txt文件,同时通过matlab将txt ...

  8. matlab实现sobel边缘检测图像,基于Sobel算子图像边缘检测的MATLAB实现

    <基于Sobel算子图像边缘检测的MATLAB实现>由会员分享,可在线阅读,更多相关<基于Sobel算子图像边缘检测的MATLAB实现(3页珍藏版)>请在人人文库网上搜索. 1 ...

  9. 基于FPGA的通信显示系统设计

    一.系统介绍 本设计给出了一种基于FPGA的通信显示系统设计方法,采用EDA作为开发工具,QuartusII作为运行程序的平台,结合所学知识设计一个基于FPGA的通信显示系统设计,通过串口调试器发送图 ...

最新文章

  1. FPGA硬件构成详解
  2. sgi---1 vector
  3. oracle sql 表个数,【oracleSQL】查看当前用户各个表的记录数
  4. request重定向_golang不想http自动处理重定向的解决方案
  5. java实现apriori算法_各种排序算法的分析及java实现(一)
  6. vscode初次配置
  7. java并发编程(6)--CAS会导致“ABA问题“ 解决方案
  8. 小米手机解锁,root
  9. 2019_GDUT_新生专题I选集 L Codeforces-1260B
  10. 小猫钓鱼纸牌游戏java_java实现纸牌游戏-小猫钓鱼算法
  11. matlab c1083,致命錯誤C1083:不能打開包含文件:'mexutils。沒有這樣的文件或目錄。...
  12. there is the flag
  13. 赵小楼《天道》《遥远的救世主》深度解析(144)问题本身就是答案。需要强调的东西不是本来的那个东西。
  14. Apache httpd 几个报错的解决记录
  15. k8s部署tomcat及web应用_k8s介绍 k8s搭建一个应用(mysql+tomcat)
  16. 希腊海底失落之城最新打揭秘
  17. 云控系统-移动互联网时代发展的一次飞跃
  18. mpx-小程序开发框架
  19. 赶紧入手,python面试题之Python如何实现单例模式?
  20. 《python数据分析(第2版)-阿曼多.凡丹戈》读书笔记第1章-jupyter及常见库

热门文章

  1. 献给杭电五十周年校庆的礼物+递推
  2. 孢子社群:今日推荐人工智能微信群:中国高端工业智造生态圈
  3. Nginx根据Pc端和手机端访问不同页面
  4. JAVA的异常处理机制有什么好处,你造吗?
  5. PETS渗透测试标准总结
  6. Oracle 19c本地监听配置出现错误-无监听程序
  7. 怎样使用nat和桥接方式解决虚拟机联网问题
  8. Word-1:使用poi-tl引擎导出word文档
  9. [ 李超线段树 ] BZOJ3165
  10. BZOJ 3165 李超线段树