图像处理滤波器(三)——高斯平滑滤波器(Gaussian Smoothing Filter)

描述:高斯平滑滤波器被使用去模糊图像,和均值滤波器差不多,但是和均值滤波器不一样的地方就是核不同。均值滤波器的核每一个值都是相等,而高斯平滑滤波器的核内的数却是呈现高斯分布的。

对于二维高斯分布:



它的分布图如下:

作为高斯平滑滤波器的核就应该呈现出上图的布局,例如:


上图分布凸显出了高斯该有的特点,因此,一般而言,高斯平滑滤波器要优于均值滤波器。


Code:


  /**
   * Takes an input image and a gaussian distribution, calculates
   * an appropriate kernel and applies a convolution to gaussian
   * smooth the image.
   *
   * @param input the input image array
   * @param w the width of the image
   * @param h the height of the image
   * @param ks the size of the kernel to be generated
   * @param theta the gaussian distribution
   * @return smoothed image array
   */
  public static int [] smooth_image(int [] input, int w, int h,
				    int ks, double theta){
    double [][] input2D = new double [w][h];
    double [] output1D = new double [w*h];
    double [][] output2D = new double [w][h];
    int [] output = new int [w*h];
    //extract greys from input (1D array) and place in input2D
    for(int j=0;j 255) { grey = 255;}
      if (grey < 0) { grey = 0;}
      //System.out.println(grey);
      output[i] = (new Color(grey,grey,grey)).getRGB();
    }

    return output;
  }

}


Input Image




Output Image:

经过一个均值为0,方差了1的高斯核(5*5)进行处理得到下图:



经过一个均值为0,方差为2的高斯核(9*9)处理得到下图:



再经过一个均值为0,方差为4的高斯核(15*15)处理得到下图:



总结:高斯平滑滤波器平滑效果比均值滤波器更好明显。

你可能感兴趣的:(#,Image,Processing-Base)