FPGA图像处理_中值滤波、均值滤波、极值滤波

FPGA实现图像滤波(中值滤波、均值滤波、极值滤波)

  • 前言
  • 一、滤波原理
  • 二、FPGA上Verilog实现步骤
    • 1.图像周围填0
    • 2.数据延迟
    • 3.数据处理
  • 总结


前言

首先介绍滤波原理,再附上verilog实现思路


一、滤波原理

滤波的原理网上介绍很多,简单的滤波有很多,中值滤波,均值滤波,极值滤波,原理差不多,本次使用的滤波器是3×3,同时图像边缘填0。
1、均值滤波,是图像处理中最常用的手段。值滤波是用每个像素和它周围像素计算出来的平均值替换自己。

2、中值滤波也是消除图像噪声最常见的手段之一,特别是消除椒盐噪声,中值滤波的效果要比均值滤波更好。中值滤波是跟均值滤波唯一不同是,不是用均值来替换中心每个像素,而是将周围像素和中心像素排序以后,取中值。

3、最大最小值滤波是一种比较保守的图像处理手段,与中值滤波类似,首先要排序周围像素和中心像素值,然后将中心像素值与最小和最大像素值比较,如果比最小值小,则替换中心像素为最小值,如果中心像素比最大值大,则替换中心像素为最大值。

二、FPGA上Verilog实现步骤

1.图像周围填0

在对图像应用滤波器进行过滤时,边界问题是一个需要处理的问题。对图像的边界做扩展,在扩展边界中填充0,对于边长为2k+1的方形滤波器,扩展的边界大小为k,若原来的图像为[m, n],则扩展后图像变为[m+2k, n+2k]。
FPGA图像处理_中值滤波、均值滤波、极值滤波_第1张图片FPGA图像处理_中值滤波、均值滤波、极值滤波_第2张图片
举例:即将800×480的图像首先扩展成802×482
将此前帧有效vsync信号中有数据有效de信号进行扩展。原有的de有480行,800个脉宽,扩展成482行,802个脉宽。
在这里插入图片描述

2.数据延迟

将对应的数据data进行延迟,data1相对于data延一拍,data2相对于data延两拍,data3相对于data延迟一行,……,data8相对于data延迟两行。
FPGA图像处理_中值滤波、均值滤波、极值滤波_第3张图片

3.数据处理

中值滤波:
第一步: 分别求出 3 行中同一行的最大值、 最小值、 中间值
设 max_h1 为第一行的最大值, min_h1 为第一行的最小值, mid_h1 为第一
行的中间值。
同理有 max_h2, mid_h2, min_h2, max_h3, mid_h3, min_h3。
第二步: 3 行的最大值、 最小值、 中间值进行比较
max_h1, m2ax_h2, max_h3 这 3 个值比较, 得到这 3 个值的最小值 min_max。
mid_h1, mid_h2, mid_h3 这 3 个值比较, 得到这 3 个值的中间值 mid_mid。
min_h1, min_h2, min_h3 这 3 个值比较, 得到这 3 个值的最大值 max_min。
第三步: 得到 3x3 矩阵的中间值
将第二步得到的 min_max, mid_mid, max_min 进行比较, 得到的中间值,
即该 3x3 矩阵的中间值。
极值滤波:
同理:
第一步: 分别求出 3 行中同一行的最大值、 最小值、 中间值
设 max_h1 为第一行的最大值, min_h1 为第一行的最小值, mid_h1 为第一
行的中间值。
同理有 max_h2, mid_h2, min_h2, max_h3, mid_h3, min_h3。
第二步: 3 行的最大值、 最大值、 最大值进行比较max_h1, m2ax_h2, max_h3 这 3 个值比较, 得到这 3 个值的最大值 max_zong。
均值滤波:
同理:
将9组数据进行求和再求平均。

总结

本章将fpga实现各类滤波进行思路整理

你可能感兴趣的:(fpga图像处理,图像处理,均值算法,计算机视觉)