码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 基于FPGA的图像缩小算法实现,包括tb测试文件和MATLAB辅助验证


    目录

    1.算法运行效果图预览

    2.算法运行软件版本

    3.部分核心程序

    4.算法理论概述

    5.算法完整程序工程


    1.算法运行效果图预览

    将FPGA的处理结果导出到matlab中显示图像效果:

    2.算法运行软件版本

    vivado2019.2

    matlab2022a

    3.部分核心程序

    1. `timescale 1ns / 1ps
    2. //
    3. // Company:
    4. // Engineer:
    5. //
    6. // Create Date: 2022/07/28 01:51:45
    7. // Design Name:
    8. // Module Name: test_image
    9. // Project Name:
    10. // Target Devices:
    11. // Tool Versions:
    12. // Description:
    13. //
    14. // Dependencies:
    15. //
    16. // Revision:
    17. // Revision 0.01 - File Created
    18. // Additional Comments:
    19. //
    20. //
    21. module test_image;
    22. reg i_clk;
    23. reg i_rst;
    24. reg i_en;
    25. reg [7:0] image_buff [0:100000];
    26. reg [7:0] II0;
    27. wire [7:0] o_image;
    28. wire flager;
    29. integer fids,jj=0,dat;
    30. //D:\FPGA_Proj\FPGAtest\codepz
    31. initial
    32. begin
    33. fids = $fopen("D:\\FPGA_Proj\\FPGAtest\\codepz\\data.bmp","rb");
    34. dat = $fread(image_buff,fids);
    35. $fclose(fids);
    36. end
    37. initial
    38. begin
    39. i_clk=1;
    40. i_rst=1;
    41. #2000;
    42. i_rst=0;
    43. end
    44. always #10 i_clk=~i_clk;
    45. always@(posedge i_clk)
    46. begin
    47. if(i_rst)
    48. begin
    49. II0<=0;
    50. jj<=0;
    51. end
    52. else
    53. begin
    54. if(jj<=66614 & jj>=1)
    55. i_en<=1'b1;
    56. else
    57. i_en<=1'b0;
    58. II0<=image_buff[jj];
    59. jj<=jj+1;
    60. end
    61. end
    62. tops tops_u(
    63. .i_clk (i_clk),
    64. .i_rst (i_rst),
    65. .i_en (i_en),
    66. .i_I0 (II0),
    67. .o_image (o_image),
    68. .flager (flager)
    69. );
    70. reg[19:0]cnts;
    71. always @(posedge i_clk or posedge i_rst)
    72. begin
    73. if(i_rst)
    74. begin
    75. cnts<=20'd0;
    76. end
    77. else begin
    78. cnts<=cnts+20'd1;
    79. end
    80. end
    81. integer fout1;
    82. integer fout2;
    83. initial begin
    84. fout1 = $fopen("flager.txt","w");
    85. fout2 = $fopen("expansion.txt","w");
    86. end
    87. always @ (posedge i_clk)
    88. begin
    89. if(cnts <= 66514)
    90. begin
    91. $fwrite(fout1,"%d\n",flager);
    92. $fwrite(fout2,"%d\n",o_image);
    93. end
    94. else
    95. begin
    96. $fwrite(fout1,"%d\n",0);
    97. $fwrite(fout2,"%d\n",0);
    98. end
    99. end
    100. endmodule
    101. 0X_014m

    4.算法理论概述

           图像放小算法主要通过抽取算法实现,常见的抽取算法最大值抽取,和均值抽取。其示意图如下所示:

           以缩小一半为例,如果是最大值抽取,则在一个2*2窗口内,选择最大的像素输出,那么整个图像的维度就变为了原图像的一半。如果是均值抽取,则在一个2*2窗口内,选择四个像素均值输出,那么整个图像的维度就变为了原图像的一半。

           在FPGA上实现图像放小算法时,可以采用硬件并行处理的方式,以提高处理速度。具体地,可以通过图像数据缓冲单元模块来实现。

    5.算法完整程序工程

    OOOOO

    OOO

    O

  • 相关阅读:
    tailwindcss -原子化 CSS 框架
    ES新特性与TypeScript、JS性能优化
    Appium 自动化测试环境搭建
    常用的代码片段
    设0<c<1,a1=c/2,a(n+1)=c/2+an²/2,证明数列an收敛,并求其极限
    uniapp 路由与页面跳转
    Python 2022年面试题总结
    Chrome 115之后的版本,安装和使用chromedriver
    浅谈SSL通配符证书优势
    机器学习笔记 - GluonCV:基于MXNet/PyTorch + Kinetics400 + 各种先进网络的动作识别的预训练模型
  • 原文地址:https://blog.csdn.net/aycd1234/article/details/133721850
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号