zoukankan      html  css  js  c++  java
  • 高斯函数作成滤波模板的过程

    比如使用5*5的模板,(sigma=1.4)得到的是归一化的高斯滤波模板,高斯函数最开始的公式计算出来的是小数,因为小数计算过程更缓慢,所以为了提高运算效率,将其写成整数模板的形式,另一方面小数模板在实际的像素上面也没有实际意义,因为图片的像素点都是整数的形式。

     

    使用:

    I=fspecial('gaussian',[5,5],1.4);

    得到的是如下的模板

     

    Q:至于这个整数如何选择还真心不太清楚,希望大神能够指点小白!

    斯模板实际上也就是模拟高斯函数的特征,具有对称性并且数值由中心向四周不断减小,这个模板刚好符合这样的特性,并且非常简单,容易被大家接受,于是就比较经典!

     

         double weight;  
    double sum = 0;  
    double Sigmma = 1;  
      
    double Gaussian_Temp[SIZE][SIZE] = {0};  
    int i,j;  
      
    weight = 2*PI*Sigmma*Sigmma;  
    for(i =0;i <SIZE;i++)  
    {  
        for(j = 0;j < SIZE;j++)  
        {  
            Gaussian_Temp[i][j] =weight* exp(-((i-SIZE/2)*(i-SIZE/2)+(j-SIZE/2)*(j-SIZE/2))/(2.0*Sigmma*Sigmma));  
            sum += Gaussian_Temp[i][j];  
        }  
    }  
      
    for(i = 0; i < SIZE;i++)  
    {  
            for(j = 0;j < SIZE;j++)  
        {  
            Gaussian_Temp[i][j] = Gaussian_Temp[i][j]/sum;//归一化处理  
            printf("%f ",Gaussian_Temp[i][j]);  
        }  
            printf("
    ");  
    }  

        以5*5高斯模板为例,计算出来的高斯模板值为:

            计算出来的结果与上图5*5的高斯模板有一定差异,为什么会不一样呢?查阅资料,解释到:高斯模板实际上也就是模拟高斯函数的特征,具有对称性并且数值由中心向四周不断减小,上述图像中的5*5这个模板刚好符合这样的特性,并且非常简单,容易被大家接受,于是就比较经典。也就是说上述图像中5*5的高斯模板只是对二维高斯函数理论上计算出来的值的一种近似处理,如何从理论上的计算出来的值得到图片中5*5的高斯模板呢?我是这么理解高斯模板中各个参数得由来,如何从理论值得到高斯模板中的值还不太清楚!!

          此外,计算高斯模板参数时,需要归一化处理,为什么需要进行归一化处理呢?我的理解如下:

          这是一维高斯函数概率密度函数图像。横轴表示可能得取值x,竖轴表示概率分布密度F(x),由高斯概率密度函数可知,那么不难理解这样一个曲线与x轴围成的图形面积为1。在实际应用中,在计算离散近似的时候,在大概3σ距离之外的像素都可以看作不起作用,这些像素的计算也就可以忽略。也就是说,为了尽可能的模拟高斯函数的相关性质,计算高斯模板的时候,计算出来的高斯模板中各个数值其和必须为1,这也就

    是为什么需要进行归一化的原因。

        高斯函数计算出来的模板之所以归一化,另外一种解释是:归一化之后,通过卷积计算出来的模板中心像素被限制到了0-255的灰度区间中。假若某一邻域内所有像素的灰度值为255,利用该模板进行卷积之后,求得的模板中心像素灰度值仍然为255;假若计算出来的高斯模板参数之和小于1,那么通过该模板进行卷积之后,模板中心像素的灰度值将小于255,偏离了实际的灰度值,产生了误差。

    参考文献:

    可以参见百度提问里面的:https://zhidao.baidu.com/question/1731699825590652867.html

    http://lps-683.iteye.com/blog/2251180

    http://blog.csdn.net/lz0499/article/details/54015150

    http://www.360doc.com/content/10/1118/21/2226925_70546589.shtml

                     

  • 相关阅读:
    Resharper的使用
    SQL Server 占用CPU较高的解决方法
    014 FPGA千兆网UDP通信
    012 PCIe总线的基础知识
    008 PCI设备BAR空间的初始化
    016 基于FPGA的网口通信实例设计【转载】
    015 FPGA千兆网TCP通信【转载】
    006 PCI总线的桥与配置(一)
    004 PCI Express体系结构(四)
    007 PCI总线的桥与配置(二)
  • 原文地址:https://www.cnblogs.com/bingdaocaihong/p/7007346.html
Copyright © 2011-2022 走看看