当前位置: 首页 > news >正文

基于FPGA的图像缩小算法实现,包括tb测试文件和MATLAB辅助验证

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

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

2.算法运行软件版本

vivado2019.2

matlab2022a

3.部分核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2022/07/28 01:51:45
// Design Name: 
// Module Name: test_image
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module test_image;reg i_clk;
reg i_rst;
reg i_en;
reg [7:0] image_buff [0:100000];
reg [7:0] II0;
wire [7:0] o_image;
wire flager;
integer fids,jj=0,dat;//D:\FPGA_Proj\FPGAtest\codepzinitial 
beginfids = $fopen("D:\\FPGA_Proj\\FPGAtest\\codepz\\data.bmp","rb");dat  = $fread(image_buff,fids);$fclose(fids);
endinitial 
begin
i_clk=1;
i_rst=1;
#2000;
i_rst=0;
end always #10  i_clk=~i_clk;always@(posedge i_clk) 
beginif(i_rst)beginII0<=0;jj<=0;endelsebeginif(jj<=66614 & jj>=1)i_en<=1'b1;elsei_en<=1'b0;II0<=image_buff[jj];jj<=jj+1;end
endtops tops_u(
.i_clk              (i_clk),
.i_rst              (i_rst),
.i_en               (i_en),
.i_I0               (II0),
.o_image            (o_image),
.flager             (flager)
);reg[19:0]cnts;
always @(posedge i_clk or posedge i_rst)
beginif(i_rst)begincnts<=20'd0;end
else begincnts<=cnts+20'd1;end
end  integer fout1;
integer fout2;
initial beginfout1 = $fopen("flager.txt","w");fout2 = $fopen("expansion.txt","w");
endalways @ (posedge i_clk)beginif(cnts <= 66514)begin$fwrite(fout1,"%d\n",flager);$fwrite(fout2,"%d\n",o_image);endelsebegin$fwrite(fout1,"%d\n",0);$fwrite(fout2,"%d\n",0);endendendmodule
0X_014m

4.算法理论概述

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

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

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

5.算法完整程序工程

OOOOO

OOO

O

http://www.lryc.cn/news/187731.html

相关文章:

  • 黑马店评-04缓存更新策略,保证MySQL数据库中的数据和Redis中缓存的数据一致性
  • matlab相机标定实验
  • 【每日一题Day343】LC2731移动机器人 | 脑筋急转弯+数学
  • 疯狂java 1.7垃圾回收机制
  • day01_基础
  • RabbitMQ开启消息发送确认和消费手动确认
  • 嵌入式系统开发【深入浅出】 GPIO 类设备的驱动程序
  • 项目管理必备的22个公式
  • ccache加速编译速度
  • Apache POI使用
  • UNIQUE VISION Programming Contest 2023 Autumn(AtCoder Beginner Contest 323)
  • Docker 网络管理
  • 网络安全国家队-安防思考与实践
  • epoll 定时器
  • BUUCTF Java逆向解密 1
  • BUUCTF [MRCTF2020]Ez_bypass1
  • 深入理解强化学习——强化学习和有监督学习
  • 设计模式 - 结构型模式考点篇:装饰者模式(概念 | 案例实现 | 优缺点 | 使用场景)
  • 计算机竞赛 题目:基于深度学习的手势识别实现
  • 手撕各种排序
  • 视频号的链接在哪,视频号视频链接地址获取办法!
  • 深度学习笔记之优化算法(六)RMSprop算法的简单认识
  • 10架构管理之公司整体技术架构
  • 联邦学习综述
  • 几行cmd命令,轻松将java文件打包成jar文件
  • BuyVM 卢森堡 VPS 测评
  • JavaScript 编写一个 数值转换函数 万以后简化 例如1000000 展示为 100万 万以下原来数值返回
  • PyG两个data Datsaset v.s. InMemoryDataset
  • ArcGIS Engine:视图菜单的创建和鹰眼图的实现
  • POI 和 EasyExcel 操作 Excel