精华内容
下载资源
问答
  • 二维高斯核

    2019-10-28 18:19:40
    生成高斯核 1.生成高斯核   在图像处理领域,经常使用高斯核。下面的代码会产生个n阶矩阵,矩阵中心的值最大,离中心越远值越小,这些值的和为1。 import cv2 import numpy as np def creat_gauss_kernel...

    二维高斯核

    1.生成高斯核

      在图像处理领域,经常使用高斯核。下面的代码会产生一个n阶矩阵,矩阵中心的值最大,离中心越远值越小,这些值的和为1。

    import cv2
    import numpy as np
    
    def creat_gauss_kernel(ks = 15, sg = 4):
    	x = cv2.getGaussianKernel(ksize = ks, sigma = sg)
    	y = cv2.getGaussianKernel(ksize = ks, sigma = sg)
    	return np.multiply(x, np.transpose(y))
    
    if __name__ == '__main__':
    	z = creat_gauss_kernel(ks = 3, sg = 0)
    	print(z)
    	print(sum(sum(z)))
    

    [参考]

    展开全文
  • 图像之二维高斯核

    2014-06-12 08:37:22
    由于高斯滤波器是可分的,所以可以用一维高斯核得到二维高斯核(其实中间涉及到一些证明,这里直接借用结论),如代码所示。 [cpp] view plaincopy //=================================...

    下面的代码是计算二维高斯核,代码是用纯C写的,可移植性应该不错。计算得到的二维高斯核可以用来对图像进行高斯滤波。由于高斯滤波器是可分的,所以可以用一维高斯核得到二维高斯核(其实中间涉及到一些证明,这里直接借用结论),如代码所示。

    1. //====================================================================        
    2. // 作者   : quarryman        
    3. // 邮箱   : quarrying{at}qq.com        
    4. // 主页   : http://blog.csdn.net/quarryman        
    5. // 日期   : 2013年12月22日        
    6. // 描述   : 计算二维高斯核      
    7. //====================================================================     
    8. #include <stdio.h>  
    9. #include <memory.h>  
    10. #include <stdlib.h>  
    11. #include <math.h>  
    12. const double eps=1e-6;;  
    13.   
    14. // 高斯函数  
    15. double guassian(double x,double sigma)  
    16. {  
    17.     return exp(-(x*x)/(2*sigma*sigma+eps));  
    18. }  
    19.   
    20. // 计算高斯核  
    21. void guassiankernel(double* kernel,int size, double sigma)  
    22. {  
    23.     double sum=0;  
    24.     double* data=kernel;  
    25.     int i;  
    26.     for(i=0;i<size;++i)  
    27.     {  
    28.         double index=(size>>1)-i;  
    29.         if(size&1) // size为奇数  
    30.         {  
    31.             *(data+i)=guassian(index,sigma);  
    32.         }  
    33.         else // size为偶数  
    34.         {  
    35.             index-=0.5;  
    36.             *(data+i)=guassian(index,sigma);  
    37.         }  
    38.         sum+=*(data+i);  
    39.     }  
    40.     // 归一化  
    41.     for(i=0;i<size;++i)  
    42.     {  
    43.             *(data+i)/=sum;  
    44.     }  
    45. }  
    46.   
    47. void matproduct(double a[],double b[],double c[],int m,int n,int p)  
    48. {  
    49.     int i,j,k;  
    50.     for(i=0;i<m;++i)  
    51.     {  
    52.         for(j=0;j<p;++j)  
    53.         {  
    54.             double sum=0;  
    55.             for(k=0;k<n;++k)  
    56.             {  
    57.                 sum+=a[i*n+k]*b[k*p+j];  
    58.             }  
    59.             c[i*p+j]=sum;  
    60.         }  
    61.     }  
    62. }  
    63.   
    64. void matshow(double a[],int m,int n)  
    65. {  
    66.     int i,j;  
    67.     for(i=0;i<m;++i)  
    68.     {  
    69.         for(j=0;j<n;++j)  
    70.         {  
    71.             printf("%lf\t",a[i*n+j]);  
    72.         }  
    73.         printf("\n");;  
    74.     }  
    75. }  
    76.   
    77. // 计算二维高斯核  
    78. void guassiankernel2d(double* kernel,int sizeX,int sizeY,double sigmaX,double sigmaY)  
    79. {  
    80.     double *matX=(double *)malloc(sizeX*sizeof(double));  
    81.     double *matY=(double *)malloc(sizeY*sizeof(double));  
    82.     guassiankernel(matX,sizeX,sigmaX);  
    83.     guassiankernel(matY,sizeY,sigmaY);  
    84.     matproduct(matX,matY,kernel,sizeX,1,sizeY);  
    85.     free(matX);  
    86.     free(matY);  
    87. }  
    88.   
    89. int main()  
    90. {  
    91.     int sizeX=4;  
    92.     int sizeY=3;  
    93.     double *kernel=(double *)malloc(sizeX*sizeY*sizeof(double));  
    94.     guassiankernel2d(kernel,sizeX,sizeY,1,1);  
    95.     matshow(kernel,sizeX,sizeY);  
    96.     free(kernel);  
    97.     return 0;  
    98. }   
    展开全文
  • 下面的代码是计算二维高斯核,代码是用纯C写的,可移植性应该不错。...由于高斯滤波器是可分的,所以可以用一维高斯核得到二维高斯核(其实中间涉及到一些证明,这里直接借用结论),如代码所示。

    转载自http://blog.csdn.net/quarryman/article/details/17475817,两个1维核生成一个二维核。

    下面的代码是计算二维高斯核,代码是用纯C写的,可移植性应该不错。计算得到的二维高斯核可以用来对图像进行高斯滤波。由于高斯滤波器是可分的,所以可以用一维高斯核得到二维高斯核(其实中间涉及到一些证明,这里直接借用结论),如代码所示。

    [cpp] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. //====================================================================        
    2. // 作者   : quarryman        
    3. // 邮箱   : quarrying{at}qq.com        
    4. // 主页   : http://blog.csdn.net/quarryman        
    5. // 日期   : 2013年12月22日        
    6. // 描述   : 计算二维高斯核      
    7. //====================================================================     
    8. #include <stdio.h>  
    9. #include <memory.h>  
    10. #include <stdlib.h>  
    11. #include <math.h>  
    12. const double eps=1e-6;;  
    13.   
    14. // 高斯函数  
    15. double guassian(double x,double sigma)  
    16. {  
    17.     return exp(-(x*x)/(2*sigma*sigma+eps));  
    18. }  
    19.   
    20. // 计算高斯核  
    21. void guassiankernel(double* kernel,int size, double sigma)  
    22. {  
    23.     double sum=0;  
    24.     double* data=kernel;  
    25.     int i;  
    26.     for(i=0;i<size;++i)  
    27.     {  
    28.         double index=(size>>1)-i;  
    29.         if(size&1) // size为奇数  
    30.         {  
    31.             *(data+i)=guassian(index,sigma);  
    32.         }  
    33.         else // size为偶数  
    34.         {  
    35.             index-=0.5;  
    36.             *(data+i)=guassian(index,sigma);  
    37.         }  
    38.         sum+=*(data+i);  
    39.     }  
    40.     // 归一化  
    41.     for(i=0;i<size;++i)  
    42.     {  
    43.             *(data+i)/=sum;  
    44.     }  
    45. }  
    46.   
    47. void matproduct(double a[],double b[],double c[],int m,int n,int p)  
    48. {  
    49.     int i,j,k;  
    50.     for(i=0;i<m;++i)  
    51.     {  
    52.         for(j=0;j<p;++j)  
    53.         {  
    54.             double sum=0;  
    55.             for(k=0;k<n;++k)  
    56.             {  
    57.                 sum+=a[i*n+k]*b[k*p+j];  
    58.             }  
    59.             c[i*p+j]=sum;  
    60.         }  
    61.     }  
    62. }  
    63.   
    64. void matshow(double a[],int m,int n)  
    65. {  
    66.     int i,j;  
    67.     for(i=0;i<m;++i)  
    68.     {  
    69.         for(j=0;j<n;++j)  
    70.         {  
    71.             printf("%lf\t",a[i*n+j]);  
    72.         }  
    73.         printf("\n");;  
    74.     }  
    75. }  
    76.   
    77. // 计算二维高斯核  
    78. void guassiankernel2d(double* kernel,int sizeX,int sizeY,double sigmaX,double sigmaY)  
    79. {  
    80.     double *matX=(double *)malloc(sizeX*sizeof(double));  
    81.     double *matY=(double *)malloc(sizeY*sizeof(double));  
    82.     guassiankernel(matX,sizeX,sigmaX);  
    83.     guassiankernel(matY,sizeY,sigmaY);  
    84.     matproduct(matX,matY,kernel,sizeX,1,sizeY);  
    85.     free(matX);  
    86.     free(matY);  
    87. }  
    88.   
    89. int main()  
    90. {  
    91.     int sizeX=4;  
    92.     int sizeY=3;  
    93.     double *kernel=(double *)malloc(sizeX*sizeY*sizeof(double));  
    94.     guassiankernel2d(kernel,sizeX,sizeY,1,1);  
    95.     matshow(kernel,sizeX,sizeY);  
    96.     free(kernel);  
    97.     return 0;  
    98. }   
    展开全文
  • 二维高斯核的可分离性

    千次阅读 2013-03-19 11:01:04
    忽略常数k的影响,那么对一个图像做二维高斯滤波相当于先对列做一维高斯滤波,再对行作一维高斯滤波(注意到行列求和的可交换性,也可以先行后列),而且行列的一维高斯核的方差同二维高斯核的方差相同。




                           

    忽略常数k的影响,那么对一个图像做二维高斯滤波相当于先对列做一维高斯滤波,再对行作一维高斯滤波(注意到行列求和的可交换性,也可以先行后列),而且行列的一维的高斯核的方差同二维高斯核的方差相同。

    展开全文
  • 平滑录播室低频增强的空间域滤波技术,它的目的有两类:类是模糊,类是消除噪音。常见的滤波有:方框滤波 -- BoxBlur 函数均值滤波 -- Blur 函数高斯滤波 -- Gaussianblur 函数中值滤波 -- mediaBlur 函数双边...
  • 高斯核的卷积计算是可分离的,即高斯核的每一个维度可以分开处理。因此,一维卷积计算成为了实现3D高斯卷积的基础。一维卷积计算的性能直接影响了整个程序的性能。本篇将实现一维卷积功能,同时引出ICC编译器对多层...
  • 高斯核函数 function [ output1,output2,output3,output4 ] = gaussKernel(sig,m) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % gaussKernel():归一化二维高斯滤波核函数 % sig 对应于高斯函数定义中的σ %...
  • 高斯滤波(Gauss Filter)是线性滤波中的种。在OpenCV图像滤波处理中,高斯滤波用于平滑图像,或者说是图像模糊处理,因此高斯滤波是低...其具体操作是,用(又称为卷积、掩模、矩阵)扫描图像中每个像素点...
  • 最近需要可视化统计二维变量的数量分布图,网上搜了一下大概有一下两种方法: 1. 密度估计图,通过函数来进行密度估计 2. 六边形分箱图(Hexagonal Binning),直接计算不同bin中的点的数量 首先来说一下...
  • 高斯模糊原理 基本概念 二维高斯模糊,或者说高斯...假设高斯核窗口尺寸为(2w+1)×(2w+1),高斯分布的标准差为 σ,则高斯核可以表示为矩阵的形式  G=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢G(−w,−w)⋮G(0,−w)⋮G(w,−w)
  • 高斯核函数

    万次阅读 多人点赞 2018-03-21 17:08:15
    线性支持向量机 (Linear-...高斯核函数(Gaussian kernel),也称径向基 (RBF) 函数,是常用的种核函数。它可以将有限数据映射到高维空间,我们来看一下高斯核函数的定义: k(x,x′)=e−||x−x′||22σ2k(x, x')
  • 在计算机视觉中,有时也简称为...高斯函数具有五个十分重要的性质,它们是:(1)二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的.一般来说,幅图像的边缘方向是事先不知道的,因此,在滤波前...
  • 二维方式是根据kernel的大小以及sigma大小生成一个 size*size的卷积,然后再做卷积。计算量是imgWidth*imgHeight*size*size,但如果用两个一维来替代,则计算量是imgWidth*imgHeight*size*2,计算量大大减少。 ...
  • 高斯滤波 高斯滤波是种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。 通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每个... 高斯滤波是利用高斯核个2的卷积算子,用于图像...
  • 径向基函数本质是将每个样本点----------变形比较复杂,最后的形式简单,显示核函数的优点和威力多项式特征 高斯核本质做的就是这件事两个特殊点l1,l2,landmark两个landmark就将一维x变成二维 直观理解高斯核函数 ...
  • 高斯核-高斯模糊

    2020-05-13 18:07:41
    二维高斯为例,公式: 高斯模糊的原理,可以理解成每个像素都取周边像素的加权平均值 以高斯分布取g矩阵的值得到的模糊方法即为高斯模糊 权重矩阵 假定中心点的坐标是(0,0),那么距离它最近的8个点的...
  • 图像处理之基于一维高斯快速模糊

    千次阅读 2013-06-23 20:56:08
    数学基础: 二维高斯模糊的数学表达如下: 简单表达为G(x, y) = G(x)G(y)由此,对一个二维的像素矩阵可以分别在水平与垂直...生成一维高斯核的代码如下,其中对高斯核实现归一化预处理 private float[] generat
  • 高斯滤波高斯滤波的含义:高斯...高斯滤波函数一维高斯分布 二维高斯分布 高斯核理论上,高斯分布在所有定义域上都有非负值,这就需要一个无限大的卷积核。实际上,仅需要取均值周围3倍标准差内的值,以外部份直接去...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 292
精华内容 116
关键字:

高斯核一维二维