FPGA图像处理之高斯滤波算法理论篇
FPGA-GAUSS算法之理论篇
作者:lee神
对计算机视觉、多媒体应用、通信技术等领域来说,实时的数字图像处理是其中的重点学科之一。传统的前端数字信号处理(Digital SignalProcessing,DSP)算法,例如 FFT、FIR、IIR 滤波器,大多都是利用 ASIC 或者 PDSP 来构建的,在硬件的实现中很难满足实时性的要求。现场可编程逻辑门阵列(Field ProgrammableGate Arrays, FPGA)技术在数字信号处理中的应用,将逐渐成为前端信号处理的主流。而滤波器算法在信号处理、信号检测、通信领域有着重要的作用,在实时信息处理系统中,对滤波器的性能和处理速度有着严格的要求,特别是在满足系统性能的条件下,处理速度至关重要。
对于图像来说,高斯滤波器是利用高斯核的一个2维的卷积算子,用于图像模糊化(去除细节和噪声)。
1. 高斯分布
一维高斯分布
,
二维高斯分布
2.高斯核
理论上,高斯分布在所有定义域上都有非负值,这就需要一个无限大的卷积核。实际上,仅需要取均值周围3倍标准差内的值,以外部份直接去掉即可。如下图为一个标准差为1.0的整数值高斯核。
3. 高斯滤波(平滑)
完成了高斯核的构造后,高斯滤波就是用此核来执行标准的卷积。
4.应用
高斯滤波后图像被平滑的程度取决于标准差。它的输出是领域像素的加权平均,同时离中心越近的像素权重越高。因此,相对于均值滤波(mean filter)它的平滑效果更柔和,而且边缘保留的也更好。
高斯滤波被用作为平滑滤波器的本质原因是因为它是一个低通滤波器,见下图。而且,大部份基于卷积平滑滤波器都是低通滤波器。
图.高斯滤波器(标准差=3像素)的频率响应。The spatial frequency axis is marked in cycles per pixel,
and hence no value above 0.5 has a real meaning。
Matlab函数:h = fspecial('gaussian', hsize, sigma)returns a rotationally symmetric Gaussian lowpass filter of size hsize withstandard deviation sigma (positive). hsize can be a vector specifying thenumber of rows and columns in h, or it can be a scalar, in which case h is asquare matrix.
The default value for hsize is [3 3]; the default value for sigma is 0.5.
5 FPGA的GAUSS滤波知识基础
高斯滤波是一种低通平滑滤波,常用于模糊处理和减少噪声信号,其中模糊处理常用于预处理,即在提取目标之前去除图像中的一些细节等,这有利于高通处理。对于二维的数字图像信号,一般通过线性滤波器和非线性滤波器的模糊处理来减少强噪声信号。平滑滤波器就是用滤波掩模确定的邻域内的像素与加权值相卷积后得到的灰度均值来代替每个像素的值,这就很容易使用硬件实现。 GAUSS 滤波算法克服了边界效应,因而滤波后的图像较好。其
gauss滤波的算子为:
gauss滤波的数学公式为:
G(I,j) ={f(i-1,j-1)+f(i-1,j+1)+f(i+1,j-1)+f(i+1,j+1)+[f(i-1,j)+(i+1,j)+f(i,j-1)+f(i,j+1)]*2+f(i,j)*4}/16 ----------------------------------------------------(1)
欢迎大家关注我的公众号,图像处理扣扣群: