shift_ipcore--3*3矩阵均值滤波在fpga上的实现

  中值滤波是基本的图像处理算法之一。

shift_ipcore--3*3矩阵均值滤波在fpga上的实现_第1张图片

如上图,对于每个3*3的矩阵而言,中间像素(红色框)的值dout=((p11+p12*2+p13)+(p21*2+p22*4+p23*2)+(p31+p32*2+p33)  ) / 16。

   那么问题来了,如何实现3*3矩阵的提取呢?

   明德扬的FPGA系列教程里面提供的是用shift_ram这个IP核来实现。在网上有看到类似用shift_ram来实现的文章,但是个人觉得基础薄弱点的童鞋很难理解,那么这里我结合个人的理解讲一下明德扬的中值滤波算法的实现。

  首先我们需要定义一个shift_ram

shift_ipcore--3*3矩阵均值滤波在fpga上的实现_第2张图片

定义完成后生成一个如下图所示的shift_ram的IP核文件

shift_ipcore--3*3矩阵均值滤波在fpga上的实现_第3张图片


shift_ipcore--3*3矩阵均值滤波在fpga上的实现_第4张图片

在接下来实现中值滤波算法的模块中,我们需要调用上面生成的IP核文件,具体代码的实现如下图所示

shift_ipcore--3*3矩阵均值滤波在fpga上的实现_第5张图片

shift_ipcore--3*3矩阵均值滤波在fpga上的实现_第6张图片

shift_ipcore--3*3矩阵均值滤波在fpga上的实现_第7张图片

shift_ipcore--3*3矩阵均值滤波在fpga上的实现_第8张图片

shift_ipcore--3*3矩阵均值滤波在fpga上的实现_第9张图片

shift_ipcore--3*3矩阵均值滤波在fpga上的实现_第10张图片

shift_ipcore--3*3矩阵均值滤波在fpga上的实现_第11张图片

shift_ipcore--3*3矩阵均值滤波在fpga上的实现_第12张图片

我的文字表述比较少,代码结构是比较规范的,有的部分也有注释,基本上没有需要我特别解释的地方,应该是比较好理解的,希望能够帮助到有需要的童鞋。

你可能感兴趣的:(fpga)