基于FPGA的图像退化算法verilog实现,分别实现横向和纵向运动含糊,包罗tb和M ...

打印 上一主题 下一主题

主题 994|帖子 994|积分 2982

目录
1.算法运行效果图预览
2.算法运行软件版本
3.部分核心程序
4.算法理论概述
5.算法完整程序工程


1.算法运行效果图预览

(完整程序运行后无水印)

将数据导入MATLAB,体现图像:

2.算法运行软件版本

vivado2019.2,matlab2022a
3.部分核心程序

(完整版代码包含具体中文注释和操作步调视频)
  1. ............................................................
  2. module test_image;
  3. reg i_clk;
  4. reg i_rst;
  5. reg [7:0] Buffer [0:100000];
  6. reg [7:0] II;
  7. wire [7:0] o_Ith;
  8. wire [7:0] o_Itv;
  9. integer fids,idx=0,dat;
  10. //D:\FPGA_Proj\FPGAtest\code_proj\project_1\project_1.srcs\sources_1
  11. initial
  12. begin
  13.         fids = $fopen("D:\\code2\\code_proj\\data.bmp","rb");
  14.         dat  = $fread(Buffer,fids);
  15.         $fclose(fids);
  16. end
  17. initial
  18. begin
  19. i_clk=1;
  20. i_rst=1;
  21. #1000;
  22. i_rst=0;
  23. end
  24. always #5 i_clk=~i_clk;
  25. always@(posedge i_clk)
  26. begin
  27.         II<=Buffer[idx];
  28.         idx<=idx+1;
  29. end
  30. tops tops_u(
  31. .i_clk           (i_clk),
  32. .i_rst           (i_rst),
  33. .i_I             (II),
  34. .o_Ith           (o_Ith),
  35. .o_Itv           (o_Itv)
  36. );
  37. integer fout1;
  38. integer fout2;
  39. initial begin
  40. fout1 = $fopen("SAVEDATA1.txt","w");
  41. fout2 = $fopen("SAVEDATA2.txt","w");
  42. end
  43. always @ (posedge i_clk)
  44. begin
  45.     if(idx<=66614 & idx>=2)
  46.         $fwrite(fout1,"%d\n",o_Ith);
  47.         else
  48.         $fwrite(fout1,"%d\n",0);
  49.        
  50.     if(idx<=66614 & idx>=2)
  51.         $fwrite(fout2,"%d\n",o_Itv);
  52.         else
  53.         $fwrite(fout2,"%d\n",0);
  54. end
  55. endmodule
  56. 0X_040m
复制代码
4.算法理论概述

       在图像处理领域,图像退化是一个常见的问题,而运动含糊是其中一种典型的退化情势。运动含糊通常是由于相机与物体之间的相对运动而产生的,会导致图像变得含糊不清。基于 FPGA(现场可编程门阵列)实现图像退化算法具有及时性高、并行处理能力强等长处。
连续空间中的运动含糊模型

离散空间中的运动含糊模型

横向运动含糊的点扩散函数

纵向运动含糊的点扩散函数

算法流程
横向运动含糊的实现可以通过对图像的每一行进行一维卷积来完成。具体步调如下:
1.读取图像数据:从图像存储器中逐行读取图像数据。
2.卷积操作:对每一行图像数据进行一维卷积,卷积核为横向运动含糊的点扩散函数。
3.存储结果:将卷积后的结果存储到另一个图像存储器中。
纵向运动含糊的实现可以通过对图像的每一列进行一维卷积来完成。具体步调如下:
1.读取图像数据:从图像存储器中逐列读取图像数据。
2.卷积操作:对每一列图像数据进行一维卷积,卷积核为纵向运动含糊的点扩散函数。
3.存储结果:将卷积后的结果存储到另一个图像存储器中。
5.算法完整程序工程

OOOOO

OOO

O


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表