灰度图像的均值滤波算法的 HDL 实现
1.1 均值滤波算法介绍 首先要做的是最简单的均值滤波算法。均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围 8 个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。 P11 P12 P13 P21 P23 P31 P32 P33 中值滤波算法可以形象的用上述表格来描述, 即对于每个 3*3 的阵列而言,中间像素的值,等于边缘 8 个像素的平均值。 算法的理论很简单,对于 C 处理器而言,一幅 640*480 图像的均值滤波, 可以很方便的通过数组获得 3*3 的阵列,但对于我们的 Verilog HDL 而言,着实不易。 1.2 3*3 像素阵列的 HDL 实现 3*3 阵列的获取,大概有以下三种方式: ( 1 ) 通过 2 个或 3 个 RAM 的存储,来实现 3*3 像素阵列; ( 2 ) 通过 2 个或 3 个 FIFO 的存储,来实现 3*3 像素阵列; ( 3 ) 通过 2 行或 3 行 Shift_RAM 的移位存储,来实现 3*3 像素阵列。 不过经验告诉大家,最方便的实现方式,非 Shift_RAM 莫属了,都感觉 Shift_RAM 甚至是为实现 3*3 阵列而生的! 在 Quartus II 中,可以利用下图方式产生,很方便: 首先介绍一下