图像卷积和滤波运算(高斯滤波模板)
高斯函数在图像增强中起到什么作用,麻烦具体点,就比如傅立叶变化在图像增强中可以有去除噪声的作用
主要是平滑图像~~~
高斯函数具有五个重要的性质,这些性质使得它在早期图像处理中特别有用.这些性质表明,高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波器,且在实际图像处理中得到了工程人员的有效使用.高斯函数具有五个十分重要的性质,它们是:
(1)二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的.一般来说,一幅图像的边缘方向是事先不知道的,因此,在滤波前是无法确定一个方向上比另一方向上需要更多的平滑.旋转对称性意味着高斯平滑滤波器在后续边缘检测中不会偏向任一方向.
(2)高斯函数是单值函数.这表明,高斯滤波器用像素邻域的加权均值来代替该点的像素值,而每一邻域像素点权值是随该点与中心点的距离单调增减的.这一性质是很重要的,因为边缘是一种图像局部特征,如果平滑运算对离算子中心很远的像素点仍然有很大作用,则平滑运算会使图像失真.
(3)高斯函数的付立叶变换频谱是单瓣的.正如下面所示,这一性质是高斯函数付立叶变换等于高斯函数本身这一事实的直接推论.图像常被不希望的高频信号所污染(噪声和细纹理).而所希望的图像特征(如边缘),既含有低频分量,又含有高频分量.高斯函数付立叶变换的单瓣意味着平滑图像不会被不需要的高频信号所污染,同时保留了大部分所需信号.
(4)高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的.σ越大,高斯滤波器的频带就越宽,平滑程度就越好.通过调节平滑程度参数σ,可在图像特征过分模糊(过平滑)与平滑图像中由于噪声和细纹理所引起的过多的不希望突变量(欠平滑)之间取得折衷.
(5)由于高斯函数的可分离性,大高斯滤波器可以得以有效地实现.二维高斯函数卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积.因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长.
什么叫滤波:用白话讲就是,一个电信号中有若干种成分,把其中一部分交流信号过滤掉就叫滤波。
卷积和滤波的区别:在数字信号处理的理论中,卷给可以说是一种数学运算,而滤波是一种信号处理的方法。卷积就像加权乘法一样,你能说滤波和加权乘法是一样的吗,显然不行;但是滤波最终是有乘法来实现的。
自适应滤波就是滤波所用的模板系数会根据图像不同位置自动调整。
中值滤波(median filter)简单的说就是:一个窗(window)中心的象素值就是这个窗包含的象素中处于中间位置的象素值。
均值滤波(mean filter)就是一个窗中心的象素值就是这个窗包含的象素的平均值。
空间频率主要是指图像的平滑或粗糙程度。一般可认为,高空间频率区域称“粗糙”,即图像的亮度值在小范围内变化很大,而“平滑”区,图像的亮度值变化相对较小,如平滑的水体表面等。低通滤波主要用于加强图像中的低频成分,减弱高频成分,而高通滤波则正好相反,加强高频细节,减弱低频细节,简单地讲:高通滤波处理过的图像更加“粗糙”。高通滤波顾名思义就是让频率高的通过,使图像具有锐化效果;低通滤波则恰好相反了,它是使低频通过,使图像具有平滑的效果。
?模板的定义 –所谓模板就是一个系数矩阵 –模板大小:经常是奇数,如: 3x3 5x5 7x7 –模板系数: 矩阵的元素 w1 w2 w3 w4 w5 w6 w7 w8 w9
空域过滤及过滤器的定义:使用空域模板进行的图像处理,被称为空域过滤。
w1 w2 w3
w4 w5 w6
w7 w8 w9
模板本身被称为空域过滤器
空域过滤器的分类
按效果分:钝化过滤器,锐化过滤器
按数学形态分类
1,线性过滤器:使用乘积和的计算,例如:R = w1z1 + w2z2 + … + wnzn
高通:边缘增强、边缘提取
低通:钝化图像、去除噪音
带通:删除特定频率、增强中很少用
2,非线性过滤器:结果值直接取决于像素邻域的值
最大值:寻找最亮点,亮化图片
最小值:寻找最暗点,暗化图片
中值:钝化图像、去除噪音
模板本身被称为空域过滤器
空域过滤器的分类
按效果分:钝化过滤器,锐化过滤器
按数学形态分类
1,线性过滤器:使用乘积和的计算,例如:R = w1z1 + w2z2 + … + wnzn
高通:边缘增强、边缘提取
低通:钝化图像、去除噪音
带通:删除特定频率、增强中很少用
2,非线性过滤器:结果值直接取决于像素邻域的值
最大值:寻找最亮点,亮化图片
最小值:寻找最暗点,暗化图片
中值:钝化图像、去除噪音
钝化过滤器的主要用途
1,对大图像处理前,删去无用的细小细节
2,连接中断的线段和曲线
3,降低噪音
4,钝化处理,恢复过分锐化的图像
5,图像创艺(阴影、软边、朦胧效果)
缺点:
如果图像处理的目的是去除噪音,那么,低通滤波在去除噪音的同时也钝化了边和尖锐的细节,但是中值滤波算法的特点:在去除噪音的同时,可以比较好地保留边的锐度和图像的细节锐化过滤器的主要用途
1,印刷中的细微层次强调。弥补扫描、挂网对图像的钝化
2,超声探测成象,分辨率低,边缘模糊,通过锐化来改善
3,图像识别中,分割前的边缘提取
4,锐化处理恢复过度钝化、暴光不足的图像
5,图像创艺(只剩下边界的特殊图像)
6,尖端武器的目标识别、定位
过滤器效果的分析
1,常数或变化平缓的区域,结果为0或很小,图像很暗,亮度被降低了
2,在暗的背景上边缘被增强了
3,图像的整体对比度降低了
4,计算时会出现负值,归0处理为常见
基本高通空域滤波的缺点和问题
高通滤波在增强了边的同时,丢失了图像的层次和亮度
对图像的小波变换在Matlab中实现的实质是不是用一块模板在图像上作卷积。
遇到这样的问题,Atrous小波变换中是用一个模板在图像上进行卷积可以得到小波平面,以及低频分量。
那么其他的小波变换呢?
Matlab上有许多现成的小波变换函数以及小波函数,但是我对其中的原理不了解。 如Mallat小波,db小波,对图像进行分解时,是不是也是由一个模板在图像上进行卷积呢,要不如何处理呢?
没错,小波变换实际就是用模板和信号进行卷积,只不过在做小波变换的时候一般至少需要两个模板,一个是充当低通分解滤波器的模板,一个是充当高通分解滤波器的模板(对于MALLAT 和ZHONG的二进小波变换还需要另外两个滤波器),在Atrous小波变换中,还需要在每级小波变换后对模板进行插0操作。在对图像进行小波变换的时候要分别对行和列进行操作(当然了你要是变成矩阵运算的话就不需要分别对行和列进行操作了)
高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。关于高斯滤波的数学原理说明可以从文章底部的参考资料中获得。
通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。
高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
一般的模板为3×3或5×5大小,其权值分布如下图:
若使用3×3模板,则计算公式如下:
g(x,y)={f(x-1,y-1)+f(x-1,y+1)+f(x+1,y-1)+f(x+1,y+1)+[f(x-1,y)+f(x,y-1)+f(x+1,y)+f(x,y+1)]*2+f(x,y)*4}/16;
其中,f(x,y)为图像中(x,y)点的灰度值,g(x,y)为该点经过高斯滤波后的值。
高斯滤波可以在频域和空间域实现,在频域的处理方法是将图像通过傅立叶变换后转换到频域,变换后的图像与高斯滤波器相乘然后利用傅立叶反变换转换回空间域得到滤波后的图像,我是利用lpfilter函数生成高斯滤波器的,这在我昨天贴出的代码里没有给出,是我疏忽了。 空间滤波的方法是生成高斯卷积模板,通过模板与图像进行卷积的过程实现对图像的滤波过程,这在matlab中是利用imfilter实现的。 我的问题是希望将频率滤波方法转换成空间滤波方法得到同样的效果。现在问题已经解决了,是因为我忽略了高斯函数在傅立叶变换前后尽管形式相同,但标准差发生了变化,即原来的高斯函数越宽(标准差越大),变换后的高斯函数就越窄(标准差越小),因此sigma不应使用相同的值来生成高斯滤波器。
1 图像滤波的基本概念
图像常常被强度随机信号(也称为噪声)所污染.一些常见的噪声有椒盐(Salt & Pepper)噪声、脉冲噪声、高斯噪声等.椒盐噪声含有随机出现的黑白强度值.而脉冲噪声则只含有随机的白强度值(正脉冲噪声)或黑强度值(负脉冲噪声).与前两者不同,高斯噪声含有强度服从高斯或正态分布的噪声.研究滤波就是为了消除噪声干扰。
图像滤波总体上讲包括空域滤波和频域滤波。频率滤波需要先进行傅立叶变换至频域处理然后再反变换回空间域还原图像,空域滤波是直接对图像的数据做空间变换达到滤波的目的。它是一种邻域运算,即输出图像中任何像素的值都是通过采用一定的算法,根据输入图像中对用像素周围一定邻域内像素的值得来的。如果输出像素是输入像素邻域像素的线性组合则称为线性滤波(例如最常见的均值滤波和高斯滤波),否则为非线性滤波(中值滤波、边缘保持滤波等)。
线性平滑滤波器去除高斯噪声的效果很好,且在大多数情况下,对其它类型的噪声也有很好的效果。线性滤波器使用连续窗函数内像素加权和来实现滤波。特别典型的是,同一模式的权重因子可以作用在每一个窗口内,也就意味着线性滤波器是空间不变的,这样就可以使用卷积模板来实现滤波。如果图像的不同部分使用不同的滤波权重因子,且仍然可以用滤波器完成加权运算,那么线性滤波器就是空间可变的。任何不是像素加权运算的滤波器都属于非线性滤波器.非线性滤波器也可以是空间不变的,也就是说,在图像的任何位置上可以进行相同的运算而不考虑图像位置或空间的变化。
2 图像滤波的计算过程分析
滤波通常是用卷积或者相关来描述,而线性滤波一般是通过卷积来描述的。他们非常类似,但是还是会有不同。下面我们来根据相关和卷积计算过程来体会一下他们的具体区别:
卷积的计算步骤:
(1) 卷积核绕自己的核心元素顺时针旋转180度
(2) 移动卷积核的中心元素,使它位于输入图像待处理像素的正上方
(3) 在旋转后的卷积核中,将输入图像的像素值作为权重相乘
(4) 第三步各结果的和做为该输入像素对应的输出像素
相关的计算步骤:
(1)移动相关核的中心元素,使它位于输入图像待处理像素的正上方
(2)将输入图像的像素值作为权重,乘以相关核
(3)将上面各步得到的结果相加做为输出
可以看出他们的主要区别在于计算卷积的时候,卷积核要先做旋转。而计算相关过程中不需要旋转相关核。
例如: magic(3) =[8 1 6;3 5 7;4 9 2],旋转180度后就成了[2 9 4;7 5 3;6 1 8]
三 高斯平滑滤波器的设计
高斯函数的最佳逼近由二项式展开的系数决定,换句话说,用杨辉三角形(也称Pascal三角形)的第n行作为高斯滤波器的一个具有n个点的一维逼近,例如,五点逼近为:
1 4 6 4 1
它们对应于Pascal三角形的第5行.这一模板被用来在水平方向上平滑图像.在高斯函数可分离性性质中曾指出,二维高斯滤波器能用两个一维高斯滤波器逐次卷积来实现,一个沿水平方向,一个沿垂直方向.实际中,这种运算可以通过使用单个一维高斯模板,对两次卷积之间的图像和最后卷积的结果图像进行转置来完成.
这一技术在模板尺寸N约为10时的滤波效果极好.对较大的滤波器,二项式展开系数对大多数计算机来说都太多.但是,任意大的高斯滤波器都能通过重复使用小高斯滤波器来实现.高斯滤波器的二项式逼近的σ可用高斯函数拟合二项式系数的最小方差来计算.
设计高斯滤波器的另一途径是直接从离散高斯分布中计算模板权值。为了计算方便,一般希望滤波器权值是整数。在模板的一个角点处取一个值,并选择一个K使该角点处值为1。通过这个系数可以使滤波器整数化,由于整数化后的模板权值之和不等于1,为了保证图像的均匀灰度区域不受影响,必须对滤波模板进行权值规范化。
高斯滤波器的采样值或者高斯滤波器的二项式展开系数可以形成离散高斯滤波器.当用离散高斯滤波器进行卷积时,其结果是一个更大的高斯离散滤波器.若一幅图像用N*N离散高斯滤波器进行平滑,接着再用M*M离散高斯滤波器平滑的话,那么平滑结果就和用(N+M-1)*(N+M-1)离散高斯滤波器平滑的结果一样.换言之,在杨辉三角形中用第N行和第M行卷积形成了第N+M-1行.
四 使用高斯滤波器进行图像的平滑
如果适应卷积运算对图像进行滤波,在matlab中可以通过2个不同的函数来实现conv2和imfliter。他们的调用方式如下:
Img_n = conv2(Img,g,'same'); 和
Img_n = imfilter(Img,g,'conv');
这两种函数处理的结果是完全一样的。
imfiler函数在默认的情况下,对图像的滤波计算用的是相关
Img_n = imfilter(Img,g);%使用相关运算滤波
下面是一个简单的例子展示了使用相同的高斯滤波核函数,相关运算和卷积运算对图像平滑的效果可以直接后边附的程序查看。
由结果可以看出相关运算和卷积运算的在用于图像平滑滤波时效果差别不大。当模板大小N>50的时候。边界的系数已经非常小,对运算起到的作用和微乎其微,所以平滑的结果差别已经非常细微,肉眼几乎难以察觉。
example.m
clear all
I = imread('lena.bmp');
Img = double(I);
alf=3;
n=10;%定义模板大小
n1=floor((n+1)/2);%计算中心
for i=1:n
for j=1:n
b(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*alf))/(4*pi*alf);
end
end
Img_n = uint8(conv2(Img,b,'same'));
K=uint8(imfilter(Img,b));
Img_n2=uint8(imfilter(Img,b,'conv'));
J=(Img_n2)-Img_n;
flag=mean(J(:))
subplot(131),imshow(I);title('原图')
subplot(132),imshow(Img_n);title('卷积运算图')
subplot(133),imshow(K);title('相关运算图')
figure(2),surf(b);
http://sunnysnow2004.blog.163.com/blog/static/5282482420085184017571/
高斯核函数在图像滤波中的应用
高斯(核)函数简介
1函数的基本概念
所谓径向基函数 (Radial Basis Function 简称 RBF), 就是某种沿径向对称的标量函数。 通常定义为空间中任一点x到某一中心xc之间欧氏距离的单调函数 , 可记作 k(||x-xc||), 其作用往往是局部的 , 即当x远离xc时函数取值很小。最常用的径向基函数是高斯核函数 ,形式为 k(||x-xc||)=exp{- ||x-xc||^2/(2*σ)^2) } 其中xc为核函数中心,σ为函数的宽度参数 , 控制了函数的径向作用范围。
高斯函数具有五个重要的性质,这些性质使得它在早期图像处理中特别有用.这些性质表明,高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波器,且在实际图像处理中得到了工程人员的有效使用.高斯函数具有五个十分重要的性质,它们是:
(1)二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的.一般来说,一幅图像的边缘方向是事先不知道的,因此,在滤波前是无法确定一个方向上比另一方向上需要更多的平滑.旋转对称性意味着高斯平滑滤波器在后续边缘检测中不会偏向任一方向.
(2)高斯函数是单值函数.这表明,高斯滤波器用像素邻域的加权均值来代替该点的像素值,而每一邻域像素点权值是随该点与中心点的距离单调增减的.这一性质是很重要的,因为边缘是一种图像局部特征,如果平滑运算对离算子中心很远的像素点仍然有很大作用,则平滑运算会使图像失真.
(3)高斯函数的付立叶变换频谱是单瓣的.正如下面所示,这一性质是高斯函数付立叶变换等于高斯函数本身这一事实的直接推论.图像常被不希望的高频信号所污染(噪声和细纹理).而所希望的图像特征(如边缘),既含有低频分量,又含有高频分量.高斯函数付立叶变换的单瓣意味着平滑图像不会被不需要的高频信号所污染,同时保留了大部分所需信号.
(4)高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的.σ越大,高斯滤波器的频带就越宽,平滑程度就越好.通过调节平滑程度参数σ,可在图像特征过分模糊(过平滑)与平滑图像中由于噪声和细纹理所引起的过多的不希望突变量(欠平滑)之间取得折衷.
(5)由于高斯函数的可分离性,大高斯滤波器可以得以有效地实现.二维高斯函数卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积.因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长.
2函数的表达式和图形
在这里编辑公式很麻烦,所以这里就略去了。可以参看相关的书籍,仅给出matlab绘图的代码
alf=3;
n=7;%定义模板大小
n1=floor((n+1)/2);%确定中心
for i=1:n
a(i)= exp(-((i-n1).^2)/(2*alf^2));
for j=1:n
b(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*alf))/(4*pi*alf);
end
end
subplot(121),plot(a),title('一维高斯函数' )
subplot(122),surf(b),title('二维高斯函数' )
二 图像滤波
1 图像滤波的基本概念
图像常常被强度随机信号(也称为噪声)所污染.一些常见的噪声有椒盐(Salt & Pepper)噪声、脉冲噪声、高斯噪声等.椒盐噪声含有随机出现的黑白强度值.而脉冲噪声则只含有随机的白强度值(正脉冲噪声)或黑强度值(负脉冲噪声).与前两者不同,高斯噪声含有强度服从高斯或正态分布的噪声.研究滤波就是为了消除噪声干扰。
图像滤波总体上讲包括空域滤波和频域滤波。频率滤波需要先进行傅立叶变换至频域处理然后再反变换回空间域还原图像,空域滤波是直接对图像的数据做空间变换达到滤波的目的。它是一种邻域运算,即输出图像中任何像素的值都是通过采用一定的算法,根据输入图像中对用像素周围一定邻域内像素的值得来的。如果输出像素是输入像素邻域像素的线性组合则称为线性滤波(例如最常见的均值滤波和高斯滤波),否则为非线性滤波(中值滤波、边缘保持滤波等)。
线性平滑滤波器去除高斯噪声的效果很好,且在大多数情况下,对其它类型的噪声也有很好的效果。线性滤波器使用连续窗函数内像素加权和来实现滤波。特别典型的是,同一模式的权重因子可以作用在每一个窗口内,也就意味着线性滤波器是空间不变的,这样就可以使用卷积模板来实现滤波。如果图像的不同部分使用不同的滤波权重因子,且仍然可以用滤波器完成加权运算,那么线性滤波器就是空间可变的。任何不是像素加权运算的滤波器都属于非线性滤波器.非线性滤波器也可以是空间不变的,也就是说,在图像的任何位置上可以进行相同的运算而不考虑图像位置或空间的变化。
2 图像滤波的计算过程分析
滤波通常是用卷积或者相关来描述,而线性滤波一般是通过卷积来描述的。他们非常类似,但是还是会有不同。下面我们来根据相关和卷积计算过程来体会一下他们的具体区别:
卷积的计算步骤:
(1) 卷积核绕自己的核心元素顺时针旋转180度
(2) 移动卷积核的中心元素,使它位于输入图像待处理像素的正上方
(3) 在旋转后的卷积核中,将输入图像的像素值作为权重相乘
(4) 第三步各结果的和做为该输入像素对应的输出像素
相关的计算步骤:
(1)移动相关核的中心元素,使它位于输入图像待处理像素的正上方
(2)将输入图像的像素值作为权重,乘以相关核
(3)将上面各步得到的结果相加做为输出
可以看出他们的主要区别在于计算卷积的时候,卷积核要先做旋转。而计算相关过程中不需要旋转相关核。
例如: magic(3) =[8 1 6;3 5 7;4 9 2],旋转180度后就成了[2 9 4;7 5 3;6 1 8]