-
二维高斯核
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写的,可移植性应该不错。计算得到的二维高斯核可以用来对图像进行高斯滤波。由于高斯滤波器是可分的,所以可以用一维高斯核得到二维高斯核(其实中间涉及到一些证明,这里直接借用结论),如代码所示。
- //====================================================================
- // 作者 : quarryman
- // 邮箱 : quarrying{at}qq.com
- // 主页 : http://blog.csdn.net/quarryman
- // 日期 : 2013年12月22日
- // 描述 : 计算二维高斯核
- //====================================================================
- #include <stdio.h>
- #include <memory.h>
- #include <stdlib.h>
- #include <math.h>
- const double eps=1e-6;;
- // 高斯函数
- double guassian(double x,double sigma)
- {
- return exp(-(x*x)/(2*sigma*sigma+eps));
- }
- // 计算高斯核
- void guassiankernel(double* kernel,int size, double sigma)
- {
- double sum=0;
- double* data=kernel;
- int i;
- for(i=0;i<size;++i)
- {
- double index=(size>>1)-i;
- if(size&1) // size为奇数
- {
- *(data+i)=guassian(index,sigma);
- }
- else // size为偶数
- {
- index-=0.5;
- *(data+i)=guassian(index,sigma);
- }
- sum+=*(data+i);
- }
- // 归一化
- for(i=0;i<size;++i)
- {
- *(data+i)/=sum;
- }
- }
- void matproduct(double a[],double b[],double c[],int m,int n,int p)
- {
- int i,j,k;
- for(i=0;i<m;++i)
- {
- for(j=0;j<p;++j)
- {
- double sum=0;
- for(k=0;k<n;++k)
- {
- sum+=a[i*n+k]*b[k*p+j];
- }
- c[i*p+j]=sum;
- }
- }
- }
- void matshow(double a[],int m,int n)
- {
- int i,j;
- for(i=0;i<m;++i)
- {
- for(j=0;j<n;++j)
- {
- printf("%lf\t",a[i*n+j]);
- }
- printf("\n");;
- }
- }
- // 计算二维高斯核
- void guassiankernel2d(double* kernel,int sizeX,int sizeY,double sigmaX,double sigmaY)
- {
- double *matX=(double *)malloc(sizeX*sizeof(double));
- double *matY=(double *)malloc(sizeY*sizeof(double));
- guassiankernel(matX,sizeX,sigmaX);
- guassiankernel(matY,sizeY,sigmaY);
- matproduct(matX,matY,kernel,sizeX,1,sizeY);
- free(matX);
- free(matY);
- }
- int main()
- {
- int sizeX=4;
- int sizeY=3;
- double *kernel=(double *)malloc(sizeX*sizeY*sizeof(double));
- guassiankernel2d(kernel,sizeX,sizeY,1,1);
- matshow(kernel,sizeX,sizeY);
- free(kernel);
- return 0;
- }
-
图像滤波之二维高斯核
2016-05-05 21:33:20下面的代码是计算二维高斯核,代码是用纯C写的,可移植性应该不错。...由于高斯滤波器是可分的,所以可以用一维高斯核得到二维高斯核(其实中间涉及到一些证明,这里直接借用结论),如代码所示。转载自http://blog.csdn.net/quarryman/article/details/17475817,两个1维核生成一个二维核。
下面的代码是计算二维高斯核,代码是用纯C写的,可移植性应该不错。计算得到的二维高斯核可以用来对图像进行高斯滤波。由于高斯滤波器是可分的,所以可以用一维高斯核得到二维高斯核(其实中间涉及到一些证明,这里直接借用结论),如代码所示。
-
二维高斯核的可分离性
2013-03-19 11:01:04忽略常数k的影响,那么对一个图像做二维高斯滤波相当于先对列做一维高斯滤波,再对行作一维高斯滤波(注意到行列求和的可交换性,也可以先行后列),而且行列的一维的高斯核的方差同二维高斯核的方差相同。忽略常数k的影响,那么对一个图像做二维高斯滤波相当于先对列做一维高斯滤波,再对行作一维高斯滤波(注意到行列求和的可交换性,也可以先行后列),而且行列的一维的高斯核的方差同二维高斯核的方差相同。
-
二维高斯核是一个线性滤波器_OpenCV 线性滤波
2021-01-15 21:57:21平滑录播室低频增强的空间域滤波技术,它的目的有两类:一类是模糊,一类是消除噪音。常见的滤波有:方框滤波 -- BoxBlur 函数均值滤波 -- Blur 函数高斯滤波 -- Gaussianblur 函数中值滤波 -- mediaBlur 函数双边... -
C++性能优化系列——3D高斯核卷积计算(二)FMA向量化计算一维卷积
2020-08-21 17:55:02高斯核的卷积计算是可分离的,即高斯核的每一个维度可以分开处理。因此,一维卷积计算成为了实现3D高斯卷积的基础。一维卷积计算的性能直接影响了整个程序的性能。本篇将实现一维卷积功能,同时引出ICC编译器对多层... -
自定义二维卷积函数与高斯核,图像平滑处理
2020-07-27 18:53:05高斯核函数 function [ output1,output2,output3,output4 ] = gaussKernel(sig,m) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % gaussKernel():归一化二维高斯滤波核函数 % sig 对应于高斯函数定义中的σ %... -
快速高斯滤波、高斯模糊、高斯平滑(二维卷积分步为一维卷积)
2018-05-03 23:16:58高斯滤波(Gauss Filter)是线性滤波中的一种。在OpenCV图像滤波处理中,高斯滤波用于平滑图像,或者说是图像模糊处理,因此高斯滤波是低...其具体操作是,用一个核(又称为卷积核、掩模、矩阵)扫描图像中每一个像素点... -
二维变量数量分布图:高斯核函数计算核密度估计Gaussian Kernel Density Estimation(KDE) & 六边形分箱图
2020-08-04 21:36:55最近需要可视化统计一个二维变量的数量分布图,网上搜了一下大概有一下两种方法: 1. 核密度估计图,通过核函数来进行密度估计 2. 六边形分箱图(Hexagonal Binning),直接计算不同bin中的点的数量 首先来说一下... -
二维高斯模糊和可分离核形式的快速实现
2016-09-27 14:49:31高斯模糊原理 基本概念 二维高斯模糊,或者说高斯...假设高斯核窗口尺寸为(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') -
python高斯核函数运用_高斯核函数
2021-01-13 09:11:23在计算机视觉中,有时也简称为...高斯函数具有五个十分重要的性质,它们是:(1)二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的.一般来说,一幅图像的边缘方向是事先不知道的,因此,在滤波前... -
快速高斯滤波(用两个一维代替二维)
2019-08-24 13:10:38二维方式是根据kernel的大小以及sigma大小生成一个 size*size的卷积核,然后再做卷积。计算量是imgWidth*imgHeight*size*size,但如果用两个一维来替代,则计算量是imgWidth*imgHeight*size*2,计算量大大减少。 ... -
一维数据高斯滤波器_Android OpenCV(二十):高斯滤波
2021-01-15 05:05:27高斯滤波 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。 通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个... 高斯滤波是利用高斯核的一个2维的卷积算子,用于图像... -
python高斯核函数_第11章 支撑向量机 SVM 学习笔记 下 高斯核函数RBF
2021-02-04 18:31:26径向基函数本质是将每个样本点----------变形比较复杂,最后的形式简单,显示核函数的优点和威力多项式特征 高斯核本质做的就是这件事两个特殊点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 -
python一维平滑滤波_高斯滤波运算(转载)
2021-01-03 19:00:50高斯滤波高斯滤波的含义:高斯...高斯滤波函数一维高斯分布 二维高斯分布 高斯核理论上,高斯分布在所有定义域上都有非负值,这就需要一个无限大的卷积核。实际上,仅需要取均值周围3倍标准差内的值,以外部份直接去...
收藏数
292
精华内容
116