首页 > 编程语言 >基于直方图相似性的图像分类算法FPGA实现,包括tb测试文件和MATLAB辅助验证

基于直方图相似性的图像分类算法FPGA实现,包括tb测试文件和MATLAB辅助验证

时间:2024-04-15 21:00:33浏览次数:14  
标签:FPGA 直方图 灰度 MATLAB 图像 相似性 reg

1.算法运行效果图预览

MATLAB测试结果:

 

 

 

 

FPGA测试结果:

 

 

 

上述仿真图中,红色XX表示图像读取完毕。因此输出XX。当图像输出完成之后,最下面的相似性指标

 

same1输出为11226,same2输出为67584.即图1和图2相似性较强,图1和图3相似性较弱。

 

2.算法运行软件版本

vivado2019.2

 

matlab2022A

 

3.算法理论概述

       图像直方图是一种统计图像像素强度分布的方法,它将图像空间转化为频率分布空间,反映了图像的颜色或灰度特征。对于灰度图像,每像素点的灰度值可以构建一个一维灰度直方图;对于彩色图像,可以分别构建R、G、B三个通道的直方图或色彩空间下的直方图。

 

      假设图像I的灰度范围是[0, L-1],则其直方图可以表示为:

 

 

 

       直方图相似性度量一般采用距离或相似性系数,如差值,欧氏距离、曼哈顿距离、余弦相似度等。例如,若要计算两幅图像I1和I2的直方图欧氏距离,可表示为:

 

 

 

在本课题中,我们选择较为简单的差值计算方式。

 

在FPGA上实现基于直方图相似性的图像分类算法主要包括以下几个步骤:

 

图像采集与预处理:FPGA通过接口接收图像数据,进行必要的预处理,如去噪、缩放等,以适应后续直方图计算的要求。

 

直方图计算: 对每个像素的灰度值进行累加计数,构建直方图。在FPGA上,可以设计并行流水线结构,对每一行或每一个像素块独立进行灰度值计数,大大提高计算效率。

 

直方图比较: 将待分类图像的直方图与预先训练好的各个类别的参考直方图进行相似性度量。在FPGA中,可以实现高效的并行比较逻辑,计算直方图之间的距离或相似度。

 

分类决策: 根据直方图比较结果,选择最相似或距离最近的类别作为分类结果。这一步也可以通过查找表(LUT)或硬件决策树等硬件结构在FPGA上实现。

 

实时性优化: 由于FPGA的高度并行性和灵活性,可以有效优化算法的时间复杂度,实现实时的图像分类功能。

 

 

 

 

4.部分核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
 
// 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_ready;
reg [7:0] Tmp1[0:100000];
reg [7:0] Tmp2[0:100000];
reg [7:0] datas0;
reg [7:0] datas1;
reg [7:0] datas2;
 
integer fids1,jj1=0,dat1;
integer fids2,jj2=0,dat2;
//D:\FPGA_Proj\FPGAtest\code
 
initial 
begin
	fids1= $fopen("D:\\FPGA_Proj\\FPGAtest\\code\\data1.bmp","rb");
	dat1 = $fread(Tmp1,fids1);
	$fclose(fids1);
end
 
initial 
begin
	fids2= $fopen("D:\\FPGA_Proj\\FPGAtest\\code\\data2.bmp","rb");
	dat2 = $fread(Tmp2,fids2);
	$fclose(fids2);
end
 
 
initial 
begin
i_clk=1;
i_rst=1;
i_ready=0;
#10780;
i_ready=1;
i_rst=0;
#655360;
i_ready=0;
end 
 
always #5  i_clk=~i_clk;
 
reg[3:0]cnts=0;
 
 
always@(posedge i_clk) 
begin
    cnts<=cnts+4'd1;
    datas0<=Tmp1[jj1];
	datas1<=Tmp1[jj1]+{4'd0,cnts};//在第一个相同图片的基础上随机加一些干扰,模拟一个相似的图像
	datas2<=Tmp2[jj2];
	jj1<=jj1+1;
	jj2<=jj2+1;
end
 
 
 
 
wire [31:0]o_same1;
image_similar image_similar_u1(
.i_clk     (i_clk),
.i_rst     (i_rst),
.i_ready   (i_ready),
.i_xin1    (datas0),
.i_xin2    (datas1),
.o_same    (o_same1)
    );
 
 
wire [31:0]o_same2;
image_similar image_similar_u2(
.i_clk     (i_clk),
.i_rst     (i_rst),
.i_ready   (i_ready),
.i_xin1    (datas0),
.i_xin2    (datas2),
.o_same    (o_same2)
    );
 
 
 
endmodule

  

标签:FPGA,直方图,灰度,MATLAB,图像,相似性,reg
From: https://www.cnblogs.com/matlabworld/p/18136895

相关文章

  • m基于FPGA的217卷积编码维特比译码verilog实现,包含testbench不使用IP核
    1.算法仿真效果Vivado2019.2   编码部分:   译码部分输出:   RTL图:   2.算法涉及理论知识概要2.1卷积编码       卷积编码是一种前向纠错编码方式,特别适用于无线通信和其他信道条件恶劣的应用场景。它主要通过卷积算子将信息序列映射成......
  • 利用MATLAB计算颗粒在静止流体中的沉降速度
    下面是MATLAB代码的内容:clear;clc;closeall;%流体粘度kg/(m.s)%Cate等人:0.373miu_f=1.01e-03%液体密度%Cate等人:960rho_f=1000%颗粒密度%Cate等人:1120rho_p=2000%密度差delta_rho=rho_p-rho_f%重力g=9.81%参数PP=(3/4*miu_f^......
  • 【图像增强】双平台直方图均衡化(DPHE)
    一、平台直方图平台直方图均衡是对直方图均衡的一种修正方法。首先选择一个合适的平台阈值T,对统计直方图进行如下修正:如果某灰度级的直方图值大于平台阈值T,将其直方图值置为T,如果其直方图值小于平台阈值T,则保持不变。\[\begin{cases}P_{t}(k)=T,ifp(k)>T\\P_{t}(k)=p(k),p(......
  • 【图像增强】平台直方图均衡(PHE)
    一、传统直方图均衡直方图均衡主要是增强背景和噪声,而平台直方图均衡主要是增强目标,抑制背景和噪声。但是,平台直方图均衡存在如下两个缺点:(1)在图像非常均匀时(如对着均匀黑体),图像灰度级分布非常集中。如果采用平台直方图均衡,灰度级将拉得过开,图像的噪声将变得很大,会严重影响......
  • 有限元方法[Matlab]-笔记
    <<MATLABCodesforFiniteElementAnalysis-SolidsandStructures(Ferreira)>>笔记chapter01matlabbasic略第二章:离散系统笔记、例题Matlab代码problem1.m%MATLABcodesforFiniteElementAnalysis%Problem1:3springsproblem%clearme......
  • 简单处理——FPGA实现图像中心差分变换
    简单处理——FPGA实现图像中心差分变换一、图像中心差分变换算法简介​ 差分图像就是目标场景在连续时间内图像相减所构成的图像,对图像进行中心差分变换的主要目的是计算图像中心每个像素点的梯度,而每个像素点的梯度在图像处理中就可以被用于描述图像中灰度变化的快慢和方向。......
  • 继上期讲述MATLAB如何读取音频文件,这期讲述如何实现播放读取的音频文件并可以随时停止
    1.右击上期保存的GUI界面(.fig格式文件),点击“在GUIDE中打开“,如下图所示:2.然后按照上期绘制按钮操作,绘制出下图所示的GUI界面:3.再分别右击播放音频按钮和停止播放按钮,按照上期教学,输入各按钮所相对应的代码 ,播放音频按钮的代码是:globalyfs%定义全局变量sound(y,fs);......
  • 【多UAV航迹规划】基于ACO蚁群优化的多UAV航迹规划算法matlab仿真
    目录1.算法仿真效果2.MATLAB源码3.算法概述3.1ACO蚁群优化算法原理......
  • 基于PSO的NARMAX模型参数辨识算法matlab仿真
    目录1.算法仿真效果2.MATLAB源码3.算法概述4.部分参考文献1.算法仿真效果matlab2022a仿真结果如下:......
  • 高创新,预测方向小论文有救了!霜冰优化算法+卷积神经网络+注意力机制+LSTM(附matlab代码
    专题推荐:论文推荐,代码分享,视角(点击即可跳转)所有链接建议使用电脑端打开,手机端打开较慢【代码推荐购买指南】电力系统运行优化与规划、时间序列预测、回归分类预测matlab代码公众号历史推文合集23.3.21(电力系统前沿视角/预测和优化方向matlab代码/电力系统优秀论文推荐......