高斯核函数

1.二维高斯函数形式

A是幅值,(xo,y0)为中心点坐标,σσy是方差,图示如下,A=1,(X0,Y0)=(0,0),σx = σy = 1

2.高斯函数分析

在实际编程应用中,高斯函数的参数包括--

ksize -- 高斯函数的大小

sigma -- 高斯函数的方差

center -- 高斯函数尖峰中心点的坐标

bias -- 高斯函数尖峰中心点的偏移量,用于控制截断高斯函数

假设固定ksize为20,sigma从1-9,固定center在高斯中间,并且bias偏移量为整个半径,即原始高斯函数。

  随着sigma的增大,整个高斯函数的尖峰逐渐减小,整体也变得更加平缓,对图像的平滑效果会越来越明显。

3.高斯核函数卷积

“sigma表示标准差,如果标准差比较小,相当于图像点运算,平滑效果不明显;反之,标准差比较大,相当于平均模板,比较模糊”

       这样一个曲线与x轴围成的图形面积为1。sigma(标准差)决定了这个图形的宽度,给出下述结论:sigma越大,则图形越宽,尖峰越小,图形较为平缓;sigma越小,则图形越窄,越集中,中间部分也就越尖,图形变化比较剧烈。即如果sigma越大,表示该密度分布一定比较分散,由于面积为1,于是尖峰部分减小,宽度越宽(分布越分散);当sigma越小时,说明密度分布较为集中,尖峰越尖,宽度越窄。

所以,sigma越大,分布越分散,各部分比重差别不大,于是生成的模板各元素值差别不大,类似于平均模板;sigma越小,分布越集中,中间部分所占比重远远高于其他部分,反映到高斯模板上就是中心元素值远远大于其他元素值,相当于中间值的点运算。

4.高斯模板

高斯模板实际上也就是模拟高斯函数的特征,具有对称性并且数值由中心向四周不断减小。

double** createG(int iSize, double sigma){
     double **guass;
     double sum = 0;
     double x2 = 0;
     double y2 = 0;
     int center = (iSize - 1) / 2;
     guass = new double*[iSize];   //注意,double*[k]表示一个有10个元素的指针数组

     for (int i = 0; i < iSize; ++i){
          guass[i] = new double[iSize];
     }
 
     for (int i = 0; i

 

你可能感兴趣的:(图像处理)