基于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\codepz

initial 
begin
	fids = $fopen("D:\\FPGA_Proj\\FPGAtest\\codepz\\data.bmp","rb");
	dat  = $fread(image_buff,fids);
	$fclose(fids);
end
 
initial 
begin
i_clk=1;
i_rst=1;
#2000;
i_rst=0;
end 

always #10  i_clk=~i_clk;
 
always@(posedge i_clk) 
begin
     if(i_rst)
     begin
	 II0<=0;
	 jj<=0;
     end
     else
     begin
     if(jj<=66614 & jj>=1)
     i_en<=1'b1;
     else
     i_en<=1'b0;
	 II0<=image_buff[jj];
	 jj<=jj+1;
	 end
end
 
 
tops 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)
begin
     if(i_rst)
     begin
         cnts<=20'd0;
     end
else begin
         cnts<=cnts+20'd1;
     end
end  



integer fout1;
integer fout2;
initial begin
  fout1 = $fopen("flager.txt","w");
  fout2 = $fopen("expansion.txt","w");
end

 
always @ (posedge i_clk)
 begin
    if(cnts <= 66514)
    begin
	$fwrite(fout1,"%d\n",flager);
	$fwrite(fout2,"%d\n",o_image);
	end
	else
    begin
	$fwrite(fout1,"%d\n",0);
	$fwrite(fout2,"%d\n",0);
	end
	
end

endmodule
0X_014m

4.算法理论概述

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

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

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

5.算法完整程序工程

OOOOO

OOO

O

相关推荐
xiao5kou4chang6kai42 天前
MATLAB机器学习、深度学习--从数据预处理到模型训练
深度学习·机器学习·matlab·数据预处理
坏孩子的诺亚方舟2 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
bubiyoushang8882 天前
电力线信道“五类噪声”仿真MATLAB
开发语言·matlab
cici158742 天前
彩色图像模糊增强(Fuzzy Enhancement)MATLAB 实现
开发语言·算法·matlab
kaikaile19952 天前
图像稀疏化分解 + 压缩感知(CS)重建 MATLAB
开发语言·计算机视觉·matlab
yugi9878382 天前
PNCC(Power-Normalized Cepstral Coefficients)— MATLAB 实现
开发语言·人工智能·matlab
FPGA小徐2 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
cooldog123pp2 天前
cplex完全安装手册,适配matlab和python!
人工智能·python·matlab·cplex
FPGA小徐2 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发
2zcode2 天前
项目文档:基于MATLAB语音信号变声算法设计与实现
算法·matlab·语音识别