image processing 系列
高斯滤波
高斯滤波器介绍:
wikipedia。高斯滤波器的未知数(或者说函数输入)有两个:(1)滤波器核半径;(2)σ(正态分布的标准偏差)。在连续二维空间中,这个函数长这样:
除了函数中心是极大值,周围都是围绕中心对称的。
这样有一个好处,因为滤波器实质上是
卷积(convolution)操作,卷积操作需要将核函数围绕
中心翻转之后,在与对应矩阵中各个数相乘(注意:此时
不是矩阵相乘,只是函数核中每个数字单独的相乘,不涉及整体相乘求和)。而高斯函数的对称的,所以函数核翻不翻转都一样结果。
首先,我们需要根据核半径(代码中slab = 2*r + 1)、σ(sigma)求出高斯核函数矩阵:
// get Gaussian Kernel Function
void ycGaussianKernel(float* kernel, int sigma, int slab)
{
int index;
float dx2, dy2;
float sum = 0;
for(int i=0; i<slab; i++)
{