精华内容
下载资源
问答
  • 高斯卷积模板(高斯函数)Matlab代码,可实现二维高斯卷积模板的生成功能。M文件,可用记事本打开。
  • 利用matlab对RGB三个通道进行高斯卷积(附结果图)
  • 基于Matlab中imfilter函数的高斯相关滤波和高斯卷积滤波 0 定义&作用  高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的降噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均...

                                       基于Matlab中imfilter函数的高斯相关滤波和高斯卷积滤波

    0   定义&作用

            高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的降噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。

    参考链接:https://baike.baidu.com/item/高斯滤波/9032353?fr=aladdin

     

    1  多种滤波效果比较

            图像处理中,常用的滤波算法有均值滤波、中值滤波以及高斯滤波等。均值滤波使用模板内所有像素的平均值代替模板中心像素灰度值,这种方法易收到噪声的干扰,不能完全消除噪声,只能相对减弱噪声;中值滤波计算模板内所有像素中的中值,并用所计算出来的中值替换模板中心像素的灰度值,这种方法对噪声不是那么敏感,能够较好的消除椒盐噪声,但是容易导致图像的不连续性。高斯滤波对图像邻域内像素进行平滑时,邻域内不同位置的像素被赋予不同的权值,对图像进行平滑的同时,同时能够更多的保留图像的总体灰度分布特征。

    参考链接:https://blog.csdn.net/lz0499/article/details/54015150

     

    2  实现流程

            高斯滤波的具体实现流程:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

            在MATLAB工具中,fspecial('gaussian', hsize, sigma)函数用于产生高斯滤波掩模,imfilter(I,G,'corr/conv','replicate','same')函数用于对原始图像各像素点进行高斯滤波,imfilter()函数有相关属性滤波和卷积属性滤波两种。具体实现流程见下文所示。

    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%     基于Matlab的高斯相关滤波和高斯卷积滤波     %%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    %%%% step1: 读取原始图片数据
    I = imread('lena.png');
    % figure; imshow(I);
    
    %%%% step2: 生成高斯滤波模板
    sigma = 1.5;  %设定标准差值,该值越大,滤波效果(模糊)愈明显
    window = double(uint8(3*sigma)*2 + 1);  %设定滤波模板尺寸大小
    %fspecial('gaussian', hsize, sigma)产生滤波掩模
    G = fspecial('gaussian', window, sigma);
    
    %%%% step3: 图像各像素点进行高斯滤波
    %为了不出现黑边,使用参数'replicate'(输入图像的外部边界通过复制内部边界的值来扩展)
    img_gauss_corr = imfilter(I,G,'corr','replicate','same');
    img_gauss_conv = imfilter(I,G,'conv','replicate','same');
    
    %%%% step4: 图像经高斯滤波前后对比 
    figure(1)
    imshow(I),title('原始图像');
    
    figure(2)
    subplot(1,2,1),imshow(img_gauss_corr),title('高斯相关滤波图像');
    subplot(1,2,2),imshow(img_gauss_conv),title('高斯卷积滤波图像');

    参考链接:https://blog.csdn.net/majinlei121/article/details/46652859

     

    3  结果对比

            原始图像采用经典的lenna图,图像滤波结果对比如下所示。

                                                  

                                      

             结论: 可以看出滤波后的图像变得模糊了,因为加权平均的效果。

             疑问: 由于imfilter()函数有corr和conv两种滤波属性,现阶段我明白二者的实现差异,但是我不理解基于二者滤波后,图像滤波效果有何不同?或者二者属性分别应用在哪些场合,如何选择?如果有网友知道,请指教,谢谢了!

             PS:(我是图像处理方面小白)

     

     

    展开全文
  • 1、二维高斯函数 G(x,y)=12πσ2exp⁡(−x2+y22σ2)G(x,y)=\frac{1}{2\pi {{\sigma }^{2}}}\exp \left( -\frac{{{x}^{2}}+{{y}^{2}}}{2{{\sigma }^{2}}} \right)G(x,y)=2πσ21​exp(−2σ2x2+y2​) 2、坐标(以5×5...

    1、二维高斯函数
    G(x,y)=12πσ2exp(x2+y22σ2)G(x,y)=\frac{1}{2\pi {{\sigma }^{2}}}\exp \left( -\frac{{{x}^{2}}+{{y}^{2}}}{2{{\sigma }^{2}}} \right)
    2、坐标(x,y)(x,y)(以5×5卷积核为例)
    在这里插入图片描述
    3、Matlab实现

    sigma1=2;
    k=5;    % kernel大小
    pai=3.1415926;
    kernel=zeros(k);
    m=(k+1)/2;
    sigma=2*sigma1*sigma1;
    for i=-1*(k-1)/2:(k-1)/2
       for j=-1*(k-1)/2:(k-1)/2
          kernel(i+m,j+m)=(-1/(pai*sigma))*exp(-1*(i^2+j^2)/(sigma));
       end
    end
    kernel=kernel./sum(kernel,'all')  % 归一化
    

    结果与Matlab函数fspecial()生成的高斯卷积核一致,卷积核如图所示:
    在这里插入图片描述
    4、OpenCV实现

    int main()
    {
    	double sigma = 2, pai = 3.1415926;
    	int k = 5, m = (k + 1) / 2, n = m - 1;	// k-高斯卷积核大小
    	Mat kernel = Mat::zeros(Size(k, k), CV_64FC1);
    	double *p, Ksum;
    	sigma = 2 * sigma * sigma;
    	for (int i = -1 * n; i <= n; i++)
    	{
    		p = kernel.ptr<double>(i + n);
    		for (int j = -1 * n; j <= n; j++)
    		{
    			p[j + n] = (1 / (pai*sigma)) * exp(-1 * (i * i + j * j) / sigma);
    		}
    	}
    	Ksum = sum(kernel).val[0];
    	kernel = kernel.mul(1/Ksum);
    	cout << kernel << endl;
    
    	getchar();
    	return 0;
    }
    
    展开全文
  • Matlab中的高斯卷积滤波矩阵

    万次阅读 2015-10-24 22:12:24
    图像处理中很关键的一块就是提取图像的内容 有一种方法就是根据颜色变化的剧烈程度来提取 ...滤波矩阵就是为了一定程度上消除噪声,其中比较常见的是高斯卷积滤波矩阵 在Matlab中是用fspecial('gaus

    图像处理中很关键的一块就是提取图像的内容

    有一种方法就是根据颜色变化的剧烈程度来提取

    也就是对图像的像素点求偏导数,如果某个方向偏导数很大,一般来说就是不连续的,即轮廓线

    但是图像里往往会有很讨厌的噪声点

    如果不考虑这些点,直接对图像求梯度函数的话,就会收到很大的影响

    滤波矩阵就是为了一定程度上消除噪声,其中比较常见的是高斯卷积滤波矩阵

    在Matlab中是用fspecial('gaussian', hsize, sigma)来构造

    return a rotationally symmetric Gaussian lowpass filter of size hsize with standard deviation sigma (positive). hsize can be a vector specifying the number of rows and columns in h, or it can be a scalar, in which case h is a square matrix. The default value for hsize is [3 3]; the default value for sigma is 0.5.

    如h = fspecial('gaussian',[3,3],1.5)构造了一个大小为3×3、方差为1.5的高斯滤波矩阵。

    其中方差越大,那么处理所得的图像与原图相比就越模糊,所以要把握好方差的度

     

    再加上滤波函数就可以对图像进行处理

    滤波函数imfilter(image,flitermatrix)

    filter the image with filtermatrix

    如:下述代码实现了上述3×3高斯滤波矩阵进行图像滤波。

    I = imread('lena.bmp');
    
    h = fspecial('gaussian', 3,1.5); 
    
    filteredLENA = imfilter(I, h);
    
    figure, imshow(filteredLENA)
    


     

     

     

    展开全文
  • 一、图像类型二、图像去噪三、卷积的三种模式四、高斯卷积一、图像类型1、二值图像(Binary Image)一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅...

    2a21c146-7b13-eb11-8da9-e4434bdf6706.png

    一、图像类型

    二、图像去噪

    三、卷积的三种模式

    四、高斯卷积


    一、图像类型

    1、二值图像(Binary Image)

    一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。

    2c21c146-7b13-eb11-8da9-e4434bdf6706.png
    二值图像

    2、灰度图像(Gray Image)

    灰度图像矩阵元素的取值范围通常为[0,255]。因此其数据类型一般为8位无符号整数的(int8),这就是人们经常提到的256灰度图像。“0”表示纯黑色,“255”表示纯白色,中间的数字从小到大表示由黑到白的过渡色。在某些软件中,灰度图像也可以用双精度数据类型(double)表示,像素的值域为[0,1],0代表黑色,1代表白色,0到1之间的小数表示不同的灰度等级。二值图像可以看成是灰度图像的一个特例。

    2f21c146-7b13-eb11-8da9-e4434bdf6706.png
    灰度图像

    3、RGB彩色图像(Color Image)

    RGB图像分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。RGB图像的数据类型一般为8位无符号整形,通常用于表示和存放真彩色图像,当然也可以存放灰度图像。

    3121c146-7b13-eb11-8da9-e4434bdf6706.png
    RGB图像

    二、图像去噪

    噪声点,其实在视觉上看上去让人感觉很难受,直观理解就是它跟周围的像素点差异比较大,显得比较突兀,视觉看起来很不舒服,这就是噪声点。那如何去除噪声点呢?

    3521c146-7b13-eb11-8da9-e4434bdf6706.png

    一个自然而然的想法就是把每个像素点与周围其他像素点加权平均一下。而这个权重就叫做卷积核。当然也可以直接求平均,如下图所示。

    3921c146-7b13-eb11-8da9-e4434bdf6706.png
    均值滤波(卷积核)

    那么对图像卷积(滤波)是如何进行的呢?加入现在有一个卷积核g,在对图像进行卷积操作时首先要对卷积核进行一个翻转操作,先水平翻转,再进行竖直翻转。

    3b21c146-7b13-eb11-8da9-e4434bdf6706.png

    然后,将卷积核覆盖区域与卷积核对应位置相乘,最后相加,即得到卷积核中心位置对应的像素值。如图中就是当前位置的卷积核与覆盖区域相乘相加后得到e所在位置的像素值,这就是一个点的卷积操作。而对于一张图像的卷积操作就是将卷积核以窗口的形式在图像上进行左左到右,从上到下进行滑动,由此就会得到一张新的图像。这就是卷积(滤波)操作完成去噪的过程。

    3e21c146-7b13-eb11-8da9-e4434bdf6706.png

    那么卷积操作有什么特性呢?

    • 线性:
      就是
      两张图像先求和再卷积核先卷积再求和最终的结果是一样的。
    • 平移不变形:

    1、噪声的分类

    • 椒盐噪声,就是黑点,白点。处理方式:中值滤波

    4021c146-7b13-eb11-8da9-e4434bdf6706.png
    • 脉冲噪声,只有白点
    • 高斯噪声

    这里主要介绍高斯噪声,高斯噪声数学模型是一个独立的加和模型

    即认为图像是由真实图像+高斯噪声组成的,高斯噪声的产生一个是由于采集器附加的噪声,另一个是由于光学问题带来的噪声。将两者合起来就是最终看到的带有噪声的图像。因此对于高斯噪声就有了这样的假设:首先噪声的产生是相互独立的,而且服从均值为0的正态分布。

    4221c146-7b13-eb11-8da9-e4434bdf6706.png

    在应对高斯的噪声的处理时,自然就会想到高斯滤波,但是它也是有成本有代价,虽然它可能滤除噪声,但是它也会衰减部分信号,比如轮廓信息。

    三、卷积的三种模式

    1、full

    橙色部分为image, 蓝色部分为filter。full模式的意思是,从filter和image刚相交开始做卷积,白色部分为填0。

    4321c146-7b13-eb11-8da9-e4434bdf6706.png

    2、same

    当filter的中心(K)与image的边角重合时,开始做卷积运算,可见filter的运动范围比full模式小了一圈。注意:这里的same还有一个意思,卷积之后输出的feature map尺寸保持不变(相对于输入图片)。当然,same模式不代表完全输入输出尺寸一样,也跟卷积核的步长有关系。same模式也是最常见的模式,因为这种模式可以在前向传播的过程中让特征图的大小保持不变,不需要精准计算其尺寸变化(因为尺寸根本就没变化)。

    4521c146-7b13-eb11-8da9-e4434bdf6706.png

    那么既然为了保持跟原图一样大小,那么周围的填充方式:

    • 在深度学习中,经常使用的是用0填充。
    • 常数填充
    • 镜像填充
    • 复制填充...等

    3、valid

    当filter全部在image里面的时候,进行卷积运算,可见filter的移动范围较same更小了。

    4621c146-7b13-eb11-8da9-e4434bdf6706.png

    四、高斯卷积

    首先介绍几种卷积(滤波):

    4721c146-7b13-eb11-8da9-e4434bdf6706.png
    恒等变换

    4821c146-7b13-eb11-8da9-e4434bdf6706.png
    平移变换

    4c21c146-7b13-eb11-8da9-e4434bdf6706.png
    均值滤波(模糊)

    4f21c146-7b13-eb11-8da9-e4434bdf6706.png
    锐化

    那么接下来,使用原图-平滑之后的图=边缘图,如果再把得到的边缘图加到原图上就会得到一个锐化图。其实下面这两幅图就是对上面锐化过程的分解。

    5221c146-7b13-eb11-8da9-e4434bdf6706.png
    原图-平滑图=边缘图

    5421c146-7b13-eb11-8da9-e4434bdf6706.png
    原图+边缘图=锐化图

    对于这样的锐化结果使用数学表达式进行解读:

    5521c146-7b13-eb11-8da9-e4434bdf6706.png

    其中

    表示原图,
    表示平滑的卷积核,
    表示单位脉冲卷积核,就是周围一圈都是0,中间是1。有上述公式可以看出锐化其实就是将原图与一个卷积核进行卷积得到的结果,对应的卷积核如下,通过一个单位脉冲卷积核与一个高斯卷积核相减约等于得到拉普拉斯卷积核。

    5821c146-7b13-eb11-8da9-e4434bdf6706.png

    原图可以看做是卷积做了恒等变换,平滑可以看做是均值滤波,所以锐化可以看做:

    5921c146-7b13-eb11-8da9-e4434bdf6706.png

    其实对于平滑来说,卷积核中权重全都是

    ,显然这是不合理的。在这个过程中会损失图像的高频信息产生
    振铃效应。也就是卷积后的图像产生了一些水平和竖直方向的条状。图像处理中,对一幅图像进行滤波处理,若选用的滤波器具有陡峭的变化,则会使滤波图像产生“振铃”,所谓“振铃”,就是指输出图像的灰度剧烈变化处产生的震荡,就好像钟被敲击后产生的空气震荡。

    5a21c146-7b13-eb11-8da9-e4434bdf6706.png

    产生这种现象的原因在于由于卷积过程中引入了本来图像上没有的信息,所以这并不是我们想要的结果,产生这种原因的根源就是因为卷积的模板是方的,也就是卷积核中的权重都是一样的,想要出除这种效应,就需要对卷积的模板进行更换,也即是将卷积核模板调整的更加平滑一些。比如下面这张图,距离中心位置越远相应的权重就应该更小。这样的设置也更加合理一些。这就是高斯核。

    5b21c146-7b13-eb11-8da9-e4434bdf6706.png

    5d21c146-7b13-eb11-8da9-e4434bdf6706.png
    二维高斯函数公式

    6021c146-7b13-eb11-8da9-e4434bdf6706.png

    这里需要注意的是在高斯核中,约束条件是所有权重相加和为1,这样做的目的是防止卷积后数据溢出,因为无论RGB还是灰度图都在

    内。当然也不希望所有权重的和小于
    ,假如是一张全白的图也即是像素值全为255,经过一个
    ,权重都为
    的卷积核,得到输出结果却是
    ,显然这也不是想要的结果。因此添加限制条件为权重和为

    在高斯核里有这样几个参数:1窗口大小,2

    决定每个位置的权重,3归一化。这就是产生高斯模板的过程。接下来理解一下
    ,其实就是方差,越大就会散布的越开,也即是
    越大越扁,
    越小越突出,因为总面积要为1。

    6221c146-7b13-eb11-8da9-e4434bdf6706.png

    同理,也可以通过固定方差

    去改变窗口大小,当方差固定时,也就是说这个突出的最高点位置是相同的,而总面积又是相同的,因此对于图像的影响显然是不言而喻的。也就是说当方差固定时,窗口越小平滑的就越不明显,就会导致图像比较模糊。

    6421c146-7b13-eb11-8da9-e4434bdf6706.png

    这样一来,就会涉及到两个参数的选取问题,一般来说有个经验性的值。窗口大小为

    6621c146-7b13-eb11-8da9-e4434bdf6706.png
    • 高斯滤波,非常重要,贯穿整个计算机视觉,甚至现在的神经网络提取到的某些特征跟高斯滤波输出的结果都十分相似。其实高斯滤波就是滤除高频信息,是一个低通滤波器。
    • 高斯卷积的另外一个特性就是对一副图像进行连续两次
      的高斯卷积输出结果等价于使用
      的高斯卷积一次的输出结果。这个满足勾股定理的,比如连续的两次高斯卷积核大小为
      可以使用
      高斯卷积核代替。大致意思就是两个小高斯核的连续卷积可以用一个大的高斯核代替。
    • 高斯核还可以分解。

    6921c146-7b13-eb11-8da9-e4434bdf6706.png

    现在就举个例子解释高斯核分解,假设有一个高斯卷积核与一个3x3大小的图像卷积得到应该是一个点。那么此时将高斯核拆解为两个一维向量,分别与图像进行卷积操作。它的主要作用就是加速。

    6f21c146-7b13-eb11-8da9-e4434bdf6706.png

    如果使用一个mxm的卷积核对一副nxn大小的图像进行卷积,它的算法复杂度是

    而使用分解卷积算法复杂度
    【其实这是x或者y一个方向上的复杂度】,也就是说如果对核进行分离,那么复杂度就能够降低一个等级,这是一件很有意义的事情。从这里也可以看出来如果使用小核进行卷积也能够加速运算。

    这些东西在深度神经网络中也会遇到,但是这里高斯卷积是完全等价的,在深度学习中不一定保证是等价的。

    我是尾巴~

    每日一句毒鸡汤:你全力做到的最好,可能还不如别人随便搞搞。

    7121c146-7b13-eb11-8da9-e4434bdf6706.png

    本次推荐:获取Emoji的在线网站

    Home of Emoji Meanings emojipedia.org

    继续加油~

    展开全文
  • I am trying to write a function that returns a one dimentional gauss filter. the function took sigma as a parameter. The problem is that the function returns the same array for all sigmas.function gau...
  • 如何在图像中添加标准偏差为10的高斯噪声? 最直接的方式就是使用MATLAB提供的函数imnoise(), 根据帮助文档中的调用格式 J = imnoise(I, ‘gaussian’, M, V)(M 为均值,V为方差),想当然的将语句写为J = imnoise(I,...
  • 高斯卷积核如何生成 C语言实现

    千次阅读 2017-12-07 20:30:37
    对于学图像专业的人来说,对图像进行高斯滤波应该不会陌生,本质上就是将图像...matlab中有函数能自动生成高斯卷积核:  gs=fspecial('gaussian',3,1)  gs =  0.0751 0.1238 0.0751  0.1238 0.2042 0.1238
  • 图像处理中的卷积---2.高斯卷积

    千次阅读 2015-11-26 16:36:27
    经过上面一篇博文,介绍了卷积的意义。 那么图像处理中的卷积可以...下面我们给出gaussian kernel做卷积的例子,另附MATLAB实现方法。 sigma = 3;% you can set the sigma yourself Wx = floor(3*sigma
  • matlab开发-通过频域进行三维高斯平滑卷积的效率。本机傅立叶实现,支持GPU计算和各向异性体素。
  • 通过模板内的值与图像卷积,模板内的值可以直接给定,值有下降的过程即可,也可以通过二维高斯函数生成,这里是通过二维高斯函数生成。 效果如下:   二维高斯函数,定义一个和原图一样大小的高斯函数图像,...
  • 新手向各位大佬提问……现有一条曲线是由费米狄拉克分布曲线和每一点对应的高斯分布卷积而得到的,每一点对应的高斯函数的分布相同,但是高斯函数前面的系数对应每一点的强度,现在想通过matlab得到原始的费米狄拉克...
  • 图像处理程序经常会用到卷积操作,即用一个模板在图像上滑动并与模板下的图像内做 乘加操作,如高斯滤波。传统的做法是循环套循环的方式来写法,但在matlab中循环操作 很慢,为加快执行速度要尽量避免循环操作。 1:...
  • Matlab卷积编码完整的系统-bpsk.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • Matlab卷积编码完整的系统-ReadMe.txt 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • Matlab卷积编码完整的系统-tenTotwo.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • Matlab卷积编码完整的系统-produce_G.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • Matlab卷积编码完整的系统-DPSK.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • Matlab卷积编码完整的系统-datagenerate.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • 卷积其实是图像处理中最基本的操作,我们常见的一些算法比如:均值模糊、高斯模糊、锐化、Sobel、拉普拉斯、prewitt边缘检测等等一些和领域相关的算法,都可以通过卷积算法实现。只不过由于这些算法的卷积矩阵的特殊...
  • Matlab卷积编码完整的系统-encode_convol.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • Matlab卷积编码完整的系统-disp_Pe.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • Matlab卷积编码完整的系统-decode_convol.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • Matlab卷积编码完整的系统-twoToten_forget.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 129
精华内容 51
关键字:

高斯卷积matlab

matlab 订阅