基于FPGA的FFT图像滤波设计

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,这样不会影响计算结果。

相关推荐
坏孩子的诺亚方舟7 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
FPGA小徐7 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
FPGA小徐7 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发
Saniffer_SH8 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
zlinear数据采集卡8 天前
双核架构深度解析:ARM+FPGA如何让数据采集卡实现500Ksps高性能?
arm开发·fpga开发·架构
9527华安8 天前
FPGA实现GTH Transceivers Wizard传输2路视频,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
fpga开发·gth·aurora 8b10b·transceivers
FPGA小徐9 天前
FPGA 数字信号处理(二):并行 FIR 滤波器的 Verilog 全流程设计与实现
fpga开发
国科安芯9 天前
基于AS32S601ZIT2型抗辐照MCU的商业航天卫星姿态确定与控制系统研究
单片机·嵌入式硬件·安全·fpga开发·架构·risc-v
ALINX技术博客9 天前
【黑金云课堂】FPGA技术教程FPGA基础:I2C 总线通信技术
fpga开发·i2c
Hello-FPGA9 天前
Xilinx KU040 FPGA Camera Link 图像采集
c++·fpga开发