学校让做网站做完怎么交wordpress弹窗视频播放插件
1.FFT滤波算法介绍
FFT滤波就是通过傅里叶运算将图像转换到频域空间,然后在频域中对图像进行处理,最后将处理后的图像通过傅里叶逆运算将图像转会到时域空间。
在频域空间中,我们能够更好的对图像的噪声进行分析,然后找出相关规律将噪声信息去除。
本文重点讲解如何在FPGA中实现FFT图像算法,对于算法原理不过多讲解。
2.FFT滤波算法系统框架设计
 
如上图所示,本系统程序由5个模块组成,下面对每个每模块进行详细介绍。
2.1 image_sample_switch模块说明
该模块的作用将输入的图像数据进行变化,从而满足蝶形FFT的运算形式。为什么要对图像数据进行变化呢?因为蝶形FFT数据的数据必须满足
 
- 1. image_sample_switch程序接口
 
|   名称  |   方向  |   位宽  |   说明  | 
|   pixel_clk  |   Input  |   1  |   图像工作时钟  | 
|   clk  |   Input  |   1  |   算法运行时钟(2Xpixel_clk)  | 
|   reset  |   Input  |   1  |   复位信号(active high)  | 
|   image_vs_i  |   Input  |   1  |   图像场信号  | 
|   image_hs_i  |   input  |   1  |   图像行信号  | 
|   image_data_i  |   input  |   size  |   图像数据  | 
|   image_sample_wren_o  |   input  |   1  |   AXI总线形式的写信号  | 
|   image_sample_last_o  |   input  |   size  |   AXI总线形式的last信号  | 
|   image_sample_wrdb_o  |   Output  |   size  |   转化后的图像数据  | 
仿真结果如下图所示
 
2.2 image_fft_control模块说明
该模块的作用是实现FFT的蝶形运算,由于蝶形运算比较复杂,我们直接调用xilinx的FFT-IP进行运算。
 
如下图所示,调用FFT-IP,将转换深度设置为1024(因为我们的图像是每行640个像素),资源选择pipelined streaming 模式。
 
将Data Format 设置为fixed point;
scaling options设置为unscaled;
rounding modes 设置为truncation
 
 
对IP的操作,首先将FFT-IP配置为FFT模式,然后按照AXI总线形式进行数据输入既可。
仿真结果如下图所示
 
2.3 image_fliter_cal模块说明
该模块的作用就是对频域数据进行计算,通过前面的FFT转化后的数据变成频域数值,频域数值是有实部和虚部,主要是对实部和虚部。如何对实部和虚部进行运算呢,就是分别对实部和虚部进行平方操作,然后将它们进行加法计算,将结果进行开平方操作;最近将开平方运算后的数据与设置的阈值进行比较。
 
 
 
 
 
 
2.4 image_ifft_control模块说明
该模块的作用就是将频域空间的数据转换到时域空间,该功能的实现通过调用Xilinx的FFT-IP实现。
 
- 1. image_ifft_contro程序接口
 
|   名称  |   方向  |   位宽  |   说明  | 
|   clk  |   Input  |   1  |   工作时钟  | 
|   fft_initi_i  |   Input  |   1  |   Ip初始化信号  | 
|   image_fliter_wren_i  |   input  |   1  |   图像写信号  | 
|   image_fliter_last_i  |   input  |   size  |   图像结束信号  | 
|   image_fliter_db_im_i  |   input  |   size  |   图像虚部数据  | 
|   Image_fliter_real_db_i  |   input  |   size  |   图像实部数据  | 
|   image_ifft_wren_o  |   input  |   1  |   AXI总线形式的写信号  | 
|   image_ifft_last_o  |   input  |   size  |   AXI总线形式的last信号  | 
|   image_ifft_wrdb_o  |   Output  |   size  |   转化后的图像数据  | 
 

,所以对图像每行数据进行扩充,从而满足需求,一般补充的数据都是0,这样不会影响计算结果。
