神电测控:LabVIEW FPGA番外篇:实验64:如何在LabVIEW FPGA中实现中值滤波器

中值滤波器是一种常见的用于信号处理的非线性滤波器。常用于消除图像或其他信号中的噪声,尤其是斑点噪声或者椒盐噪声。
中值滤波器可以实现平滑信号同时降低噪声。中值滤波器逐点遍历信号,用相邻点的中值替换每个点。由于它是一个非线性滤波器,如果下位机FPGA里面的数据吞吐率很高(比如ADC采样率很大),那就不能简单地将数据传输到上位机PC,再利用上位机PC里面的中值滤波器,那样会造成数据流阻塞丢失。因此,我们必须在FPGA芯片里面完成中值滤波进行,以保存PC上的计算资源。
本节实验我们提供的FPGA程序,给出了一个可以直接在FPGA里面运行的一维中值滤波器原型示例。图1是整个FPGA项目浏览器下的FPGA中值滤波器实验程序组成;图2是下位机FPGA完整的程序框图,包括了AD7606采集线程、中值滤波器信号处理、并转串线程、UDP千兆以太网发送线程;图3是具体的中值滤波器程序框图,里面有一个非常核心的中值滤波器子VI,默认的滤波窗口是11个点,如图4所示。后期用户可以根据自己的实际情况进行修改即可。




需要注意的是:我们提供的中值滤波器子VI里面,默认使用 的是11点窗口逐点过滤信号。用户在今后自己的项目里面可以根据实际情况进行修改,以满足自己的FPGA项目需求。
同时,为了更好的向手头没有FPGA开发板的用户展示FPGA上的中值滤波器效果,我们还提供了一个可以在上位机PC端进行模拟仿真的示例,如图5所示。
