边缘平滑滤波(通用3篇)
边缘平滑滤波 篇1
0 引 言
彩色图像滤波是一种图像增强技术,目的是改善后续的彩色图像分割等处理的效果。滤波算法可以分为平滑和锐化两类。当对图像进行平滑操作时,大多的低通滤波算法在平滑区域内部的同时,区域之间的边缘也被平滑而模糊不清;而对图像进行锐化时,使用一般的高频增强滤波器,在增强边缘的同时,图像各个目标区域内部的细节变化以及噪声也随之被增强。如果对区域内部进行平滑的同时,区域之间的边缘保持不变,则这种操作既能满足人眼的视觉要求,又会提高后续的分割等处理的准确性。现有的方法中,中值滤波和双边滤波都能够对图像进行平滑的同时,保持边缘。中值滤波在去除孤立点和线噪声的同时能够保持图像的边缘,但当窗口内噪声点的个数大于窗口宽度的一半时,中值滤波的效果不好。双边滤波也可以在保持边缘的同时,对图像进行平滑[1,2]。但实验结果表明,双边滤波只能保留比较强烈的边缘,对不同目标间的一些细节不能保留,并且随着迭代次数的增多,光照的真实感也越来越差。本文提出了一种新的保持边缘的高斯平滑滤波器(EPGF),它可以在平滑区域内部像素的同时,有效保持目标之间的边缘及光照真实感。
1 保持边缘的高斯平滑滤波算法
高斯平滑滤波器是图像处理中常用的一种平滑方法,算法简单。但它对任一像素都进行相同的平滑操作,而没有考虑像素本身的特点,故导致边缘也被模糊。本文从人眼的彩色细节失明现象和同时对比现象出发,提出一种保持边缘的高斯平滑滤波器EPGF(Edge-Preserving Gaussian Filter),使平滑后的图像能够保持边缘。一方面,由于人眼对彩色图像的细节分辨能力不强,远低于亮度细节的分辨能力,也就是所谓的彩色细节失明现象[3],这种现象导致了彩色图像中人眼看上去颜色一致的区域,其内部像素的RGB值都有一定的偏差。故边缘检测或区域分割都受区域内部的颜色细节变化影响较大从而容易出现较多的虚假边缘。事实上,对不存在明显噪声的彩色数字图像,其颜色层次比较丰富,变化也比较细腻,故对区域内部的人眼分辨能力弱的颜色细节进行平滑是很必要的,这不仅能提供一个更符合人眼视觉的输出图像,更能使后续的处理取得更好的效果。另一方面,人眼视觉感知还存在同时对比现象[4,5],即两个相邻的不同颜色会相互影响使人眼感知到的颜色值产生变化,导致颜色差异更大。彩色图像中的边缘是颜色剧烈变化之处,故边缘周围的不同颜色对边缘本身的影响也符合同时对比现象。故对图像进行平滑时,如果中心像素非边缘点,则它的颜色会受到邻域内其它同区域像素的影响;反之,如果中心像素是边缘点,则邻域中的非边缘点的颜色对中心点没有影响。由于对区域内部进行了平滑,故边缘颜色不变的同时,也相对实现了视觉上的边缘锐化。
EPGF用邻域像素与中心像素之间的色差来判断邻域像素对中心像素的颜色的贡献。对一个N×N的邻域,如果一个邻域像素和中心像素之间的色差小于人眼可觉察阈值,就认为它的颜色值对中心像素的贡献(高斯函数的系数)符合高斯分布;反之,认为它和中心像素不属于同一个区域内部,故令它对中心像素的贡献为0。如果中心像素是孤立噪声,则可以采取传统高斯模板进行卷积,从而去噪。
色差是指通过两个颜色间的欧式距离表达人眼视觉感知的颜色差别[3]。色差计算很大程度上依赖于颜色空间的均匀性。均匀颜色空间中,人眼可分辨出来的两个颜色间的色差值是相等的。也就是说,当色差大于某阈值的时候,人眼就能够区分出两个不同的颜色,而当色差小于这个阈值的时候,人眼认为是同一种颜色。这个阈值即为恰可分辨色差阈值JNCD(Just Noticeable color Difference)。常用的色差公式基于CIE系统的颜色空间,有CIELUV、CIELAB、CIE1994、CIE2000等。本文采用CIE2000,它被认为是工业评估方面目前性能最好的色差公式[6]。
令G(x,y)表示高斯卷积核,(i,j)是模板的中心,σ是标准差,则保持边缘的高斯平滑滤波器EPGF可以定义为:
式中,ΔE是(i,j)和(x,y)位置处的两个像素之间的色差,th是恰可分辩色差阈值JNCD,一般的,设置为6。具体实现时,初始高斯模板的计算和色差无关。卷积时,首先判断邻域内某位置处的像素和中心像素之间的色差是否大于阈值,如果是,则令此点对应的权值为0;否则,仍为初始值。在公式(1)的基础上,利用EPGF对图像滤波的过程可以用公式(2)描述:
式中f(x,y)表示输入彩色图像,包含RGB三个颜色通道。
经过EPGF对输入图像进行平滑后,同一区域内部的像素,其颜色更趋于一致,并且区域之间的边界也被有效地保留下来。
对二维高斯卷积来说,如果转换为两次一维的高斯卷积,那么将会降低计算复杂度。假设一维高斯模板大小为N,则高斯模板的权值最多有(N+1)/2种。本文利用高斯卷积模板的对称性,以及颜色级的有限性(以24位BMP为例,R、G、B的变化范围均为0-255),将权值与R、G、B所有取值的乘积存入一个查找表;卷积时进行查表操作,从而减少乘法次数。对24位彩色图像来说,假设像素总数为M,则卷积所需运算乘法次数,由原来的6N×M次降为现在的(N+1)×128次。可见当M很大时,乘法的次数大幅减少。另外,由于在卷积时,需要首先判断某像素与中心像素的色差,才能决定卷积时的权值。本文同样采用查表法,事先将不同颜色的色差存入一个二维数组,可以加快判断过程。
2 实验结果分析
定义EPGF模板的大小为n×n,权值矩阵为coef;则从左至右,从上往下对原图像任一像素进行EPGF滤波的步骤如下:
a) 用色差公式计算n×n邻域各像素(含中心像素)与中心像素的色差,存储于矩阵ColorDis中;
b) 设置一个计数器,并令初值为0;
c) 如果某邻域像素与中心像素的色差ColorDis大于色差阈值,则令其对应位置的权值coef为0;否则权值不变,并令计数器加1;
d) 根据c)求n×n邻域各点对应的新权值,并对各个权值累加求和;
e) 若计数器值不等于1,对中心像素的RGB分量按照新的权值矩阵进行卷积;
f) 如果计数器值等于1,并且权值的和等于模板中心位置的权值,这表明邻域内除中心像素外的各像素与中心像素的色差都大于阈值,故认为中心像素为孤立噪声,此时采用传统高斯模板对RGB分量进行卷积去噪。
算法用VC++ 6.0实现,并对24位bmp图像进行了实验。为了便于对滤波结果进行比较,本文选用文献[1]的图像作为样本。图1和图2对输入图像分别进行了中值滤波、双边滤波(经多次迭代)、普通高斯滤波和本文提出的EPGF滤波。其中,滤波器的大小均为3×3。
从图1可以看出,本文算法不仅有效地对区域内部进行了平滑,而且保持了区域之间的边缘,对比度清晰,而传统高斯算法对区域内部平滑的同时,也使边缘大为模糊。图2中多次迭代的双边滤波虽然可以使区域内部更加趋于平滑,对主要边缘的保持能力较强,但是对人眼可区分的细节处的边缘(如头发)不能保持,且小面积强光照被大幅削弱(如嘴上方)。指数双边滤波虽然从视觉上看不到明显光照失真,但是从图2可见,指数双边滤波对部分边缘的影响(如头发、下巴、耳朵处的边缘有缺失及位置偏移)也较大。而本文提出的EPGF算法却不仅维持边缘的位置不变,而且视觉上增强了有效的细节边缘,同时削弱了区域内部的虚假边缘,即使经过四次迭代,光照的真实感也没有明显改变。
最后,本文还采用MSE(均方差法)从客观上对平滑滤波算法的性能进行了定量比较[7]。均方差越小,说明滤波效果越好。从表1中不难看出,本文算法的均方差最小,即使经过四次迭代,其均方差也小于指数和线性双边滤波。
3 结束语
本文提出了一种新的彩色图像平滑滤波算法,利用人眼彩色细节失明以及同时对比现象,设计了一个保持边缘的高斯平滑滤波器EPGF,它克服了传统的高斯平滑算法的缺点。与其它的保持边缘的滤波器相比,本文算法公式简单,真实感更强,保持边缘的能力也更优。由于色差是用于工业当中单一色块对比的工具,如何在图像处理中使用还有待深入探讨,故本文后续的工作将着力于处理复杂的颜色环境中,色差对人眼模糊机制的影响。
参考文献
[1]Ben Weiss.Fast Median and Bilateral Filtering[C].ACMSiggraph 2006.
[2]Paris S,Durand F.A Fast Approximation of the Bilateral Filter using aSignal Processing Approach[C].ECCV2006.
[3]何国兴.颜色科学[M].东华大学出版社,2004.
[4]Fairchild MD,Garrett M.Johnson.iCAM framework for image appear-ance,differences,and quality,Journal of Electronic Imaging.2004,13(1):126-138.
[5]http://www.cs.ubc.ca/nest/imager/contributions/flinn/Illusions/YG/yg.html.
[6]Luo MR,Cui G,Rigg B.The development of CIE 2000 colour-differ-ence formula:CIEDE2000[J].Color Research Application.2001,26:340-350.
[7]Hu H,G.de Haan.trained bilateral filters and applications to coding arti-facts reduction[C].ICIP 2007.
边缘平滑滤波 篇2
很多在计算图像学中的应用都需要将图像在不同的尺度上进行分解,传统方法使用线性或者非线性的方法去进行强边界的识别。文献[1]使用了线性滤波器进行图像分解,这些分解会在图像强边界处产生强烈的人工反转痕迹(光晕)。在使用了非线性滤波器之后,这种痕迹被减弱了,进行图像多尺度分解通常选用的非线性滤波器为双边滤波器[2]。文献[3]使用双边滤波器将图像分解成低对比度和高对比度的细节,操作不同尺度上的图层以达到增强图像的整体效果。
由于双边滤波器的保留边界和去噪声的能力是相互对立的,文献[4]提出了加权最小二乘算法WLS。文献[4]认为滤波方法最终要达到的目的应是输出图像与输入图像近似相同;在图像平滑区域应尽量地平滑图像,在图像具有强边界处应该尽量保持图像原有的样式。WLS的最大的两个问题是不能有效地提取图像中对比度较大的纹理和渐进化图像平滑时图像所有像素值会趋近于整个图像的平均亮度。文献[5]提出了通过求局部极值的包络线的方法进行信号平滑的BEMD方法,但是文中只对一维信号的平滑进行了讨论。文献[6]提出了使用局部极值的方法,通过类似于加权平均找出极值之间像素的近似值,再通过优化方法局部极值下所对应的图像。
本文提出一种新颖的平滑算法,算法计算输入图像局部极值的插值图像以达到图像平滑的目的,算法流程图如图1所示。这种技术能有效地平滑图像中高对比度的纹理,同时可以保留图像的显著边界。通过迭代地使用这种平滑算法,我们可以对图像进行多尺度分解,将图像分解成不同尺度的图像层。与现有的保留边界的多尺度分解算法对比,我们的算法高效地将高对比度纹理与强边界区分开。
1 保边局部极值图像平滑算法
现有方法对于图像强边界的定义通常是图像梯度变化较大处或者图像像素值变化较大处,定义何种变化算“大”,通常是由应用本身来定义。这种定义强边界在使用现有算法提取图像的较细节且具有高对比的纹理时就显现出较差的效果。
进行保边平滑的目的是提取图像中除强边界之外的图像细节部分与对比度较大的图像纹理,因为在图像中强边界与纹理的对比度都比较大,所以该算法有很好的辨识图像纹理的能力,原因主要是我们采用了局部极值。
比较好的保留边界的滤波方法都是基于某种假设。双边滤波器把图像中低对比度的地方认为是图像的细节,高对比度的地方认为是图像的强边界。WLS滤波器认为梯度值比较小的地方是图像细节,图像边界处梯度比较大。BEMD滤波方法认为图像低尺度图像振荡为图像细节。我们的方法与BEMD滤波方法一样,同样认为图像低尺度图像振荡为图像细节。当时对于边界有更深刻的定义,我们认为在与相邻局部极值具有较大方差的地方为图像边界。表1给出了几种保留边界的平滑方法的比较。
1.1 局部极值的选取
这个算法中,需要选取局部的极大值以及局部的极小值。选取像素p,及以它为中心的半径为r的局部正方形窗口ω,窗口像素个数为(2r+1)2。若整个窗口中最多有2r2+2r个元素的像素值大于p的像素值,则p为局部的极大值;若整个窗口中最多有2r2+2r个元素像素值小于p的像素值,则为局部的极小值。
1.2 局部极值插值法
首先要获得极值的包络线,在这里我们使用一种插值的办法。对于极大值包络线图像umax的表达式为:
umax(p)=m(p)·(1-maskmax(p))+g(p)·maskmax(p) (1)
其中ω(q,p)是进行插值的权值,表达式如下:
其中‖·‖表示二范数;σ为输入参数,本文实验中使用0.1。maskmax(q)为原图像的局部极大值的表示:
式(2)中的
若像素p为局部极大值,则:
umax(p)=g(p) (5)
若像素p为不是局部极大值,则该点的像素值由在窗口中的局部极值插值得到:
对于极小值包络线图像umin的表达式为:
umin(p)=n(p)·(1-maskmin(p))+g(p)·maskmin(p) (7)
maskmin(q)为原图像的局部极大值的标示:
其中Ω(p)为像素p的邻域。因为整个计算umin和umax的过程需要Ω(p)中的局部极值的值,所以Ω(p)中必须要有一定数量的局部极值。首先将Ω(p)分为如图2中的四个区域,窗口大小初始值为
最终输出图像为局部最大极值与局部最小极值插图像的均值:
局部极值插值的平滑算法伪代码如下。
算法:基于局部极值插值的平滑算法LocalExtrm(g,u,r)
输入:图像g
输出:图像u
1. 选定半径为r的窗口ω1
2. 以窗口ω1计算图像g的局部极大值标示maskmax和局部极小值标示maskmin
3. for 图像所有像素点g(x,y) do
4. 选定半径为
5. while 窗口ω2不满足极值分布
6. 增大窗口ω2的半径
7. 以窗口ω2计算局部极大值图像像素值umax(x,y)
8. End for
9. for 图像所有像素点g(x,y) do
10. 选定半径为
11. while 窗口ω3不满足极值分布
12. 增大窗口ω3的半径
13. 以窗口ω3计算局部极小值图像像素值umin(x,y)
14. End for
15. 计算输出图像u
1.3 多尺度分解
假设我们将图片分解成k+1层,让u1,…,uk表示逐渐分解出来的基层,uk就是最后的输出图片b,那么可以得到这样的关系式:
di=ui-1-uii=1,2,…,ku0=g (11)
由式(11)得到输入图像g和输出图像b的关系:
产生不同尺度上的图像ui使用的滤波器参数不一样,要获得越高尺度的平滑图像,就应该选取能使图像更加平滑的参数ciλ。获得不同尺度上的图像ui有两种方式:第一种利用原输入图像平滑获得,即:
ui+1=Fciλ(g) (13)
第二种利用以平滑的图像获得更高尺度的平滑图像:
ui+1=Fciλ(ui) (14)
本算法使用的是第二种方法。平滑参数设定为获取局部极值时正方形窗口ω的半径。
2 实验结果
本文使用OpenCV类库作为图形读取接口,编程环境为VS2008。所有实验结果都是在CPU为Intel Core2 Duo P8700(2.53G,2.53G)机器上测试。
首先来看一下本文方法与双边滤波器的比较,如图3所示,图3(a)是输入图像(大小为512×512),图3(b)是经过本文方法平滑的图像(r=2),图3(c)是使用双边滤波器[2]平滑的图像(sigma_d=2,sigma_r=0.1),图中可以看出,本文方法在和双边滤波法桌子阴影处平滑效果差不多时,能较好地去除窗帘以及衣服上的纹理图案。
图4(a)是输入图像(大小为512×512),图4(b)是WLS方法(α=1.2,λ=1.2),图4(c)是本文的平滑方法(r=2)。从图中可以看出,WLS的保边效果是比较好的,但是本文方法更加出色。如书架的阴影以及桌子的阴影处;对于围巾上的纹理,WLS方法并没有很好地平滑。WLS方法是一种基于最优化算法的方法,可以看出平滑结果中所有像素值趋近于整幅图像像素平均值,如果进行多次图像平滑这种现象更明显,这个是WLS方法比较严重的问题。
再比较一下本文与文献[6]中的方法。如图5所示,图5(a)是输入图像(大小为512×512),图5(b)是文献[6]方法,图5(c)是使用本文的平滑方法(r=2,四次平滑)。从图中可以看出,由于文献[6]选择了插值优化的算法,虽然能很好保留边界,但是经过多次平滑后,可以明显看出在一些边界处出现了“锯齿”的现象,在一些阴影处,如书架的阴影处出现了边界的丢失。本文在多次平滑之后仍能得到较好的结果,边界较明显,如书架阴影处、桌子阴影处等。
图6为本文方法平滑高对比度纹理且同时保留强边界的结果,图6(a)是输入图像(大小为512×512),图6(b)是本文方法平滑之后的输出图像(r=2,迭代3次),图6(c)是分解出的细节层,图6(d)是图6(a)的第225行像素的像素值,图6(e)是图6(b)的第225行像素的像素值, 图6(f)是图6(c)的第225行像素的像素值。从实验结果看出本文方法能高效地提取图像的高对比度纹理,且同时保留图像强边界。迭代3次之后并没有出现WLS方法中所有像素值与原图像差别变大的现象。从图6(b)看出,此方法能有效地保留强边界的信息,如书架的阴影部分及桌子的阴影部分。
图7是双边滤波器和本文方法在高动态范围图像色调映射方面的效果比较。实验原图为高动态图像,大小为656×1 000。图7(a)是使用双边滤波器进行色调映射的效果图。图7(c)是图7(a)的近景图。图7(b)是使用本文算法进行色调映射的效果图。图7(d)是图7(b)的近景图。图7(c)中台灯的周围出现明显的人工反转痕迹(光晕),同时丢失了一些窗格。图7(b)的高动态范围图像色调映射效果较优秀。
图8是使用本文方法进行彩色图像细节增强的实验结果。原图出自文献[4],大小为800×533。
摘要:提出一种新颖的基于局部极值的强边界与高对比度纹理的定义。使用这个定义提出一种保留边界的平滑算法,通过将算法迭代运用在基层上面进行多尺度图像分解。同时算法可以抽取图像高对比度纹理,但同时可以保留图像的强边界。该方法可以高效地使用在多尺度图像分解的各种应用中,如高动态范围图像的色调映射、图像细节增强、图像去噪。
关键词:非线性滤波器,保留边界,图像分解,高动态范围图像,局部极值
参考文献
[1]Rahman U,Woodell A.A multi-scale retinex for bridging the gap be-tween color images and the human observation of scenes[J].IEEETransactions on Image Processing:Special Issue on Color Processing,1997,6(7):965-976.
[2]Tomasi C,Manduchi R.Bilateral filtering for gray and color images[C]//Proceedings of the 6th Conference International Conference ofComputer Vision(ICCV 98).Bombay,India:IEEE Computer Socie-ty,1998.
[3]Bae S,Paris S,Durand F.Two-scale tone management for photograph-ic look[J].ACM Transactions on Graphics 2006,25(3):637-645.
[4]Farbman Z,Fattal R,Lischinski D,et al.Edge-preserving decompo-sitions for multi-scale tone and detail manipulation[C]//Proceedingsof SIGGRAPH 2008.Los Angeles,USA:ACM Press,2008.
[5]Huang.The empirical mode decomposition and the Hilbert spectrumfor nonlinear and non-stationary time series analysis[C]//Proceedingsof the Royal Society A:Mathematical,Physical and Engineering Sci-ences,1998,454:903-995.
边缘平滑滤波 篇3
空域滤波算法的工作原理可以借助频域进行分析。其特点都是让图像在傅立叶空间某个范围内的分量受到抑制而使其它分量不受到影响,从而改变输出图像的频率分布,达到滤波的目的。低通滤波算法可以减弱或消除傅立叶空间的高频分量,但不影响低频分量。因为高频分量对应图像中的区域边缘或者是噪声等具有较大较快灰度变化的部分,滤波器将这些分量过滤掉从而使图像平滑[2]。高通滤波器可以减弱或消除傅立叶空间的低频分量,但不影响高频分量。因为低频分量对应图像中灰度值变化比较缓慢的区域,因而与图像的整体特性,如整体对比度和平均灰度值有关,高通滤波器过滤掉这些分量可以锐化。
无论是平滑滤波还是锐化滤波,在空域实现的方法都是相似的,都要用模板操作。主要步骤如下[1,2]:
(1)将模板在图像中漫游,并将模板中心与图像中的某个像素位置重合。
(2)将模板的系数与模板欲对应像素的灰度值相乘。
(3)将所有的乘积相加。
(4)把相加之和的值赋给图像中对应于模板中心位置的像素。
2 线性平滑滤波器设计
线性低通平滑滤波器是最常用的线性平滑滤波器。这种滤波器的所有模板系数都是一个正值,可以有效地消除噪声。对于3×3的模板来说,最简单的是将所有的系数都取值为1。为保证输出图像仍在原来的灰度范围内,在计算出R之后再除以9给新点赋值,这种方法又叫邻域平均[3,4]。
以MATLAB自带的图像cameraman.tif为例,添加椒盐噪声,并实现均值滤波。在MATLAB中调用B=filter2(h,A)实现均值滤波器,代码如下:
其中,B=filter2(h,A)为返回图像A经算子h滤波的结果;fspecial('average',3)用来创建3×3的均值滤波器,其中3×3为默认模板。
未添加椒盐噪声的cameraman.tif原图像如图1所示,添加椒盐噪声的图像如图2所示。
3×3均值滤波器的滤波结果图像如图3所示,5×5均值滤波器的滤波结果图像如图4所示,7×7均值滤波器的滤波结果图像如图5所示。
3 结果分析
通过比较上述采用的不同尺寸均值滤波器进行的低通滤波处理结果,可以得出如下结论:当所用的平滑模板的尺寸增大时,消除噪声的效果增强,但同时所得的图像变得模糊,细节的锐化程度逐步减弱。总之,应用MATLAB对数字图像进行线性平滑滤波处理时具有编程简单,操作方便,处理速度快等特点。线性低通平滑滤波在处理含有随机不规则的噪音方面具有良好的效果。
参考文献
[1]王宏民,宋莹莹,付源.空域法进行图像增强处理在MATLAB中的仿真与分析[J].哈尔滨:煤矿机械,2005(5):56-58.
[2]赵红怡,张常年.数字信号处理及其MATLAB实现[M].北京:化学工业出版社,2002.
[3]肖卫初,钟川桃,陈军平.基于MATLAB在IIR滤波器的设计与仿真[J].长沙:长沙航空职业技术学院学报,2005,5(2):31-35.