FPGA图像处理(高斯滤波)仿真篇

简介: 高斯滤波是一种低通平滑滤波,常用于模糊处理和减少噪声信号,其中模糊处理常用于预处理,即在提取目标之前去除图像中的一些细节等,这有利于高通处理。对于二维的数字图像信号,一般通过线性滤波器和非线性滤波器的模糊处理来减少强噪声信号。平滑滤波器就是用滤波掩模确定的邻域内的像素与加权值相卷积后得到的灰度均值来代替每个像素的值,这就很容易使用硬件实现。 GAUSS 滤波算法克服了边界效应,因而滤波后的图像较好。

高斯滤波是一种低通平滑滤波,常用于模糊处理和减少噪声信号,其中模糊处理常用于预处理,即在提取目标之前去除图像中的一些细节等,这有利于高通处理。对于二维的数字图像信号,一般通过线性滤波器和非线性滤波器的模糊处理来减少强噪声信号。平滑滤波器就是用滤波掩模确定的邻域内的像素与加权值相卷积后得到的灰度均值来代替每个像素的值,这就很容易使用硬件实现。 GAUSS 滤波算法克服了边界效应,因而滤波后的图像较好。其

image.png

gauss滤波的算子为:

image.png

gauss滤波的数学公式为:

G(I,j) ={
   
   f(i-1,j-1)+f(i-1,j+1)+f(i+1,j-1)+f(i+1,j+1)+[f(i-1,j)+(i+1,j)+f(i,j-1)+f(i,j+1)]*2+f(i,j)*4}/16 ----------------------------------------------------(1)

以上是FPGA实现高斯滤波的思路:

模块结构结构

FPGA源码:

`timescale 1ns /1ps



modulegauss_filter(

       input clk,    //

               input rst_n,



               input [15:0] data_in,

               input en_data_in,



               output [15:0] data_out,

               output en_data_out

       );

wire [15:0] line0;

wire [15:0] line1;

wire [15:0] line2;


wire [33:0]  acc_result0;

wire [33:0]  acc_result1;

wire [33:0]  acc_result2;


line3x3line3x3_inst(

           .clken(en_data_in),

           .clock(clk),

           .shiftin(data_in),

           .shiftout(),

           .taps0x(line0),

           .taps1x(line1),

           .taps2x(line2)

);    


acc acc0_inst(

       .aclr3(),

       .clock0(clk),

       .dataa_0(line0),

       .datab_0(16'd1),

       .datab_1(16'd2),

       .datab_2(16'd1),

       .result(acc_result0)

       );


acc acc1_inst(

       .aclr3(),

       .clock0(clk),

       .dataa_0(line1),

       .datab_0(16'd2),

       .datab_1(16'd4),

       .datab_2(16'd2),

       .result(acc_result1)

       );


acc acc2_inst(

       .aclr3(),

       .clock0(clk),

       .dataa_0(line2),

       .datab_0(16'd1),

       .datab_1(16'd2),

       .datab_2(16'd1),

       .result(acc_result2)

       );


wire [31:0]gauss_data;

assign gauss_data= (acc_result0 + acc_result1 + acc_result2)>>4;

assign data_out =gauss_data[15:0];


endmodule

IP设置:

image.png

image.png

image.png

image.png

image.png

波形仿真:

image.png

image.png

相关文章
|
2月前
|
芯片 异构计算
FPGA——modelsim上R型指令的仿真
FPGA——modelsim上R型指令的仿真
|
9月前
|
算法 异构计算
m基于FPGA的GFDM调制解调系统verilog实现,包含testbench仿真测试文件
m基于FPGA的GFDM调制解调系统verilog实现,包含testbench仿真测试文件
43 0
|
10月前
|
机器学习/深度学习 算法 C语言
FPGA图像处理之边缘检测算法的实现
边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。这些包括(i)深度上的不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。
FPGA图像处理之边缘检测算法的实现
|
10月前
|
算法 计算机视觉 异构计算
FPGA图像处理之rgbtogray算法的实现
Ycbcrr或Y'CbCr有的时候会被写作:YCBCR或是Y'CBCR,是色彩空间的一种,通常会用于影片中的影像连续处理,或是数字摄影系统中。Y'为颜色的亮度(luma)成分、而CB和CR则为蓝色和红色的浓度偏移量成份。Y'和Y是不同的,而Y就是所谓的流明(luminance),表示光的浓度且为非线性,使用伽马修正(gamma correction)编码处理。
|
算法 数据安全/隐私保护 异构计算
基于FPGA的AES加密解密vivado仿真,verilog开发,包含testbench
基于FPGA的AES加密解密vivado仿真,verilog开发,包含testbench
258 0
基于FPGA的AES加密解密vivado仿真,verilog开发,包含testbench
|
算法 异构计算
m基于FPGA的viterbi译码verilog实现,包含testbench和MATLAB配套验证仿真程序
m基于FPGA的viterbi译码verilog实现,包含testbench和MATLAB配套验证仿真程序
151 0
|
算法 异构计算
m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序
m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序
347 0
m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序
|
算法 异构计算
m分别通过matlab和FPGA实现基于高阶循环谱的信号载波调制识别(四阶循环累量)仿真
m分别通过matlab和FPGA实现基于高阶循环谱的信号载波调制识别(四阶循环累量)仿真
216 0
m分别通过matlab和FPGA实现基于高阶循环谱的信号载波调制识别(四阶循环累量)仿真
|
异构计算
FPGA新起点V1开发板(五)——Modelsim软件的使用(联合仿真
FPGA新起点V1开发板(五)——Modelsim软件的使用(联合仿真
177 0
FPGA新起点V1开发板(五)——Modelsim软件的使用(联合仿真
|
算法 测试技术 异构计算
FPGA:逻辑功能的仿真与验证
⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。
101 0
FPGA:逻辑功能的仿真与验证

热门文章

最新文章