【信号、图像、Matlab】如何得到高斯滤波器的整数模板

【信号、图像、Matlab】如何得到高斯滤波器的整数模板

如何得到高斯滤波器的整数模板?这个问题困扰了我两天,上网搜索的代码,基本上都生成的小数,有的文档给写了3*3,5*5,7*7的整数形式,但是没有说是怎么得到的,应该说是我没有仔细看吧,现在恍然大悟,只要将左上角的元素化为1就可以了啊。我还以为用什么高级方法得出来的,晕死了。

二维高斯分布公式:

要得到高斯滤波器的整数模板就要从这个公式入手,这个公式在三维坐标下的形式是这样的:

我们要的高斯滤波器的整数模板相当于这个三维图形在底面(将底面网格化,也就是离散化,计算机不能处理连续的东东)的投影,将曲面的高度换算成网格里面的值,这是我们要的模板了。

计算整数模板的公式

假设我们的模板放在矩阵M中,M的大小为(2k+1)*( 2k+1),那么M(i,j)的值为:

说明:这就是由连续公式得到的,只不过这里的M是一个矩阵,原点在矩阵的中间,所以有(i-k-1)以及(j-k-1)为的就是让原点到矩阵中间。

一个Matlab代码

clear;
k=1;              %模板长度的一半
row = 2*k+1;      %模板长度
col = 2*k+1;
sigma2=1;         %方差
for i=1 : row
    for j=1 : col
        fenzi=double((i-k-1)^2+(j-k-1)^2);
        A(i,j)=exp(-fenzi/(2*sigma2))/(2*pi*sigma2);
    end
end
A                           %显示小数形式
C=floor(A.*(1/A(1,1)));      %左上角化为1(想了很久整数是怎么得出来的,只要这样就可以了,郁闷)

这个代码得到的是一个7*7,sigma=1高斯滤波器的小数和整数模板,如下:

小数:

整数:

当时想了很久怎样才能得到整数形式的模板,无意间从网上看了将左上角的元素化为1就可以了,我只能说自己的脑壳真是迟钝啊。

要说明的两点

  • 上面的整数模板要用于滤波的话,需要归一化,就是在整个模板的前面加一个系数,这个系数是:1/(所有整数总和).
  • 生成的模板,与公式里的一个东西有关:sigma,这对生成的模板数个影响很大。这里给一张不同sigma的一维高斯分布图,二维的类似,理解sigma取值对函数图形的影响就可以了:

    Sigma越大,分布越集中。

再给几个不同大小,不同sigma的整数模板

之所以放这几个模板,可以发现,sigma的取值对模板的影响很大,所以如何取sigma,这应该是个经验性的问题。

时间: 2024-10-06 15:37:09

【信号、图像、Matlab】如何得到高斯滤波器的整数模板的相关文章

深度理解高斯滤波器

1.高斯滤波器综述 高斯滤波器是一类根据高斯函数的形状来选择权值的线性平滑滤波器.高斯平滑滤波器对于抑制服从正态分布的噪声非常有效.一维零均值高斯函数为: g(x)=exp( -x^2/(2 sigma^2) 其中,高斯分布参数Sigma决定了高斯函数的宽度.对于图像处理来说,常用二维零均值离散高斯函数作平滑滤波器. 高斯函数具有五个重要的性质,这些性质使得它在早期图像处理中特别有用.这些性质表明,高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波器,且在实际图像处理中得到了工程人员的

【数字图像处理】七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解

本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图像增强处理,包括图像普通平滑.高斯平滑.不同算子的图像锐化知识.希望该篇文章对你有所帮助,尤其是初学者和学习图像处理的学生. [数字图像处理]一.MFC详解显示BMP格式图片 [数字图像处理]二.MFC单文档分割窗口显示图片 [数字图像处理]三.MFC实现图像灰度.采样和量化功能详解 [数字图像处理]四.MFC对话框绘制灰度直方图 [数字图像

【转帖】MATLAB中用FDATool设计滤波器及使用

MATLAB中用FDATool设计滤波器及使用 该文章讲述了MATLAB中用FDATool设计滤波器及使用. 1. 在Matlab中键入fdatool运行Filter Design and Analysis Tool.具体使用请参见Matlab Help中的Signal Processing Toolbox->FDATool. 2. 在fdatool工具中应该注意的几个问题:(a)Fstop(阻带截止频率)不能大于或等于采样频率Fs/2,这是由于数字滤波器设计的方式决定的.(b)将设计好的滤波器

【转帖】MATLAB中产生高斯白噪声的两个函数

MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声. 1. WGN:产生高斯白噪声 y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度. y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗. y = wgn(m,n,p,imp,state) 重置RANDN的状态. 在数值变量后还可附加一些标志性参数: y = wgn(

matlab中各种高斯相关函数

matlab中各种高斯相关函数 matlab, 高斯函数, 高斯分布 最常见的是产生服从一维标准正态分布的随机数 n=100; x=randn(1,n)  实现服从任意一维高斯分布的随机数 u=10; sigma=4;  x=sigma*randn(1,n)+u  产生服从多元高斯分布的随机变量函数mvnrnd,[multivarite normal random] n=100; %产生随机数的个数 mu=[1 -1];  Sigma=[.9,.4;.4,.3];  r=mvnrnd(mu,Si

图像matlab 频域处理

这篇文章实际上是笔者在学习冈萨雷斯 数字图像处理 matlab 版本 的第四章时,自己动手在matlab里敲入书上的程序实验得到的. 这个DFT的滤波步骤很重要,应该弄清楚. 1,  使用函数paddedsize()获得填充参数 FQ=paddedsize(size(I));%I为原始图像灰度矩阵 2,  得到使用填充的傅里叶变换 F=fft2(I,PQ(1,),PQ(2)); 3,  使用任何一种方法,例如lpfilter()生成一个大小为PQ(1)*PQ(2)的滤波函数H.这个函数如果居中,

Introduction to gaussian filter 高斯滤波器

Introduction to gaussian filter 我尝试尽可能低门槛的介绍这些好玩的东东-这里只须要正态分布函数作为基础就可以開始玩图像的高斯滤波了. Don't panic ! 在通常的图像中,像素点都非常多,非常多情况都是非常多一大块像素点记录某一个场景区域.那么这就数字离散环境下模拟出了实际生活中颜色变化连续性的事实(注意.计算机的离散环境都是对真实的模拟.) 高斯滤波是怎么回事捏?一句话的事情.就是利用高斯函数取权值,在一个区域内进行加权平均! 简单的事情永远别搞复杂了.p

高斯平滑 高斯模糊 高斯滤波器 ( Gaussian Smoothing, Gaussian Blur, Gaussian Filter ) C++ 实现

 发展到现在这个平滑算法的时候, 我已经完全不知道如何去命名这篇文章了, 只好罗列出一些关键字来方便搜索了. 在之前我们提到过了均值滤波器, 就是说某像素的颜色, 由以其为中心的九宫格的像素平均值来决定. 在这个基础上又发展成了带权的平均滤波器, 这里的高斯平滑或者说滤波器就是这样一种带权的平均滤波器. 那么这些权重如何分布呢? 我们先来看几个经典的模板例子: 尝试了使用这些滤波器对我们原来的图进行操作, 得到了这样的一组结果: 原图: 3x3 高斯: 5x5 高斯: 单纯从效果来看, 两个

【练习5.2】使用中心为255的图片对比高斯滤波器的平滑效果

<学习OpenCV>中文版第5章第2题 提纲 题目要求 程序代码 结果图片 题目要求: 建立一个100×100的单通道图像,将图像全部像素置零,然后设置中心像素值等于255. c.对原图用5×5过滤器平滑两次,与用9×9过滤器的结果对比,看是否相似,为什么 程序代码: 1 // OpenCVExerciseTesting.cpp : 定义控制台应用程序的入口点. 2 // 3 //D:\\Work\\Work_Programming\\Source\\Image\\lena.jpg 4 5 6