双边滤波算法的原理.docx

合集下载

双边滤波原理_HLS实现Bilateral Filtering双边滤波器

双边滤波原理_HLS实现Bilateral Filtering双边滤波器

双边滤波原理_HLS实现Bilateral Filtering双边滤波器双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。

之所以可以达到此去噪效果,是因为滤波器是由两个函数构成。

一个函数是由几何空间距离决定滤波器系数。

另一个由像素差值决定滤波器系数。

双边滤波器中,输出像素的值依赖于邻域像素的值的加权组合,权重系数w(i,j,k,l)取决于定义域核和值域核的乘积,同时考虑了空间域与值域的差别,而Gaussian Filter和α均值滤波分别只考虑了空间域和值域差别。

双边滤波原理(Bilateral Filtering)基本思路双边滤波(bilateral filtering)的基本思路是同时考虑将要被滤波的像素点的空域信息(domain)和值域信息(range)。

因此是一种combined 滤波方式,因此叫做bilateral ,即同时考虑两方面的信息。

首先,对于图像滤波来说,一个通常的intuition是:(自然)图像在空间中变化缓慢,因此相邻的像素点会更相近。

但是这个假设在图像的边缘处变得不成立。

如果在边缘处也用这种思路来进行滤波的话,即认为相邻相近,则得到的结果必然会模糊掉边缘,这是不吼的,因此考虑再利用像素点的值的大小进行补充,因为边缘两侧的点的像素值差别很大,因此会使得其加权的时候权重具有很大的差别,从而使得只考虑自己所属的一边的邻域。

可以理解成先根据像素值对要用来进行滤波的邻域做一个分割或分类,再给该点所属的类别相对较高的权重,然后进行邻域加权求和,得到最终结果。

实现原理在bilateral filtering 中,两个要素即:closeness 和similarity ,或者说domain 和range ,或者geometric 和photometric ,其数学表达方式相近,如下:其中积分号前面为归一化因子,这里考虑对所有的像素点进行加权,c 和s 是closeness 和similarity 函数,x 代表要求的点,f (x)代表该点的像素值。

halcon双边滤波算子

halcon双边滤波算子

halcon双边滤波算子Halcon双边滤波算子双边滤波算子(Bilateral Filter)是一种常用的图像滤波算法,由Halcon图像处理软件提供支持。

该算法可以有效地去除图像中的噪点,同时保持图像的边缘信息,从而达到图像平滑的效果。

下面将介绍Halcon双边滤波算子的原理和应用。

1. 双边滤波算子的原理双边滤波算子是一种基于空间距离和像素强度差异的滤波算法。

它通过在空间域和灰度域中同时考虑像素之间的距离和差异,来调整滤波系数,从而实现对图像的平滑处理。

具体来说,双边滤波算子使用一个窗口来对图像进行滤波操作。

对于窗口中的每个像素,它会计算该像素与窗口中其他像素的空间距离和灰度差异,并根据这些信息来调整滤波系数。

距离越近、灰度差异越小的像素,其滤波系数越大,反之则越小。

这种方式可以保留图像中的边缘信息,同时去除噪点。

2. 双边滤波算子的应用双边滤波算子在图像处理中有广泛的应用。

以下是一些常见的应用场景:2.1 噪点去除由于图像采集设备或传输过程中的干扰,图像中常常包含各种类型的噪点。

双边滤波算子可以有效地去除这些噪点,同时保持图像的细节信息。

这使得图像在后续的处理和分析中更加准确可靠。

2.2 图像平滑在某些图像处理任务中,需要对图像进行平滑处理,以减少图像中的细节信息。

双边滤波算子可以实现这一目标,它能够在去除噪点的同时保持图像的整体平滑性,使得图像更加美观和易于处理。

2.3 边缘保留对于一些特定的图像处理任务,如边缘检测和图像分割,需要保留图像中的边缘信息。

双边滤波算子可以在平滑图像的同时保持边缘的清晰度,从而提高后续处理算法的准确性和可靠性。

3. Halcon中的双边滤波算子Halcon作为一款功能强大的图像处理软件,提供了丰富的图像处理算法和函数。

其中,双边滤波算子也是Halcon的一项重要功能之一。

在Halcon中,可以使用`bilateral_filter`函数来实现双边滤波算法。

网络图像处理中的双边滤波算法研究

网络图像处理中的双边滤波算法研究

网络图像处理中的双边滤波算法研究随着现代科技的日益发展,人们生活在一个数字化的时代。

数字化的生活中,图像和影像处理成为人们生活中不可或缺的一部分。

而在图像处理的过程中,滤波算法是图像增强和降噪的重要工具。

其中双边滤波算法是一种比较常用的滤波算法,本文将从原理、优点、应用和局限性等方面对双边滤波算法进行探究和研究。

一、原理双边滤波算法是一种基于像素的滤波算法,它不但考虑了像素间的空间距离,还考虑了像素间的灰度差异,从而实现同时对色彩和空间进行滤波操作。

双边滤波算法在处理边缘保护和降噪等方面表现良好。

其数学模型如下:$B(x,y)=\frac{(1/k)\sum\limits_{(i,j)\in S}G_{\sigma_s}(i,j)G_{\sigma_r}(|I(x+i,y+j)-I(x,y)|)I(i,j)}{(1/k)\sum\limits_{(i,j)\in S}G_{\sigma_s}(i,j)G_{\sigma_r}(|I(x+i,y+j)-I(x,y)|)}$其中,$I(x,y)$代表在位置$(x,y)$的原始像素值,$B(x,y)$代表通过双边滤波后得到的像素值。

$G_{\sigma_s}(i,j)$和$G_{\sigma_r}(|I(x+i,y+j)-I(x,y)|)$分别代表空间方向和灰度值方向上的高斯核函数。

二、优点1. 具有保边性:传统的均值滤波在去除噪声的同时也会平滑图像的边缘,而双边滤波相较于其他滤波算法更能有效保护图像的边缘。

2. 对多种类型的噪声都有较好的效果:因为它综合考虑了空间域和像素值域两个方面因素,因此对于前景和背景之间的噪声以及亮度和色彩的扰动都有良好的降噪效果。

3. 操作简单:双边滤波算法的实现相对比较容易,且具有保留边缘、平滑效果较好、通用性强等优点,工程上的应用也非常广泛。

三、应用1. 图像降噪:因为双边滤波算法能够兼顾空间域和像素值域因素,从而在降噪过程中保留了图像的细节特征,因此在降噪方面有很好的表现。

双边滤波原理

双边滤波原理

双边滤波原理
双边滤波是一种图像处理算法,其目的在于减少图像中的锯齿和亮度动态范围的不平衡。

它使用一个5x5抽样来模拟空间函数,以缩放图像,并使用两个指数函数来模拟亮度调节函数,这样可以优先考虑像素之间的差异,从而成膨胀和腐蚀图像边缘。

双边滤波器通常于消除图像细节上的特征,并平滑图像上的硬边缘。

首先,双边滤波器定义一个距离函数是基于表面形状(或者说像素局部特性)在空间中的改变情况。

它还有一个空间滤波函数的概念,它可以根据像素的距离来调节滤波器的力度,从而使滤波效果更加柔和,从而实现更好的平滑效果。

双边滤波的工作原理是把局部的像素点在空间上抽象成一个高斯函数,然后使用该高斯函数计算出每个像素点与其他点的距离权重,并计算出每个像素点的新值。

在算法中,双边滤波器会首先计算表面形状,然后进行模糊操作,最后根据表面形状再次调节模糊的结果。

双边滤波与其他图像处理方法相比,具有权威性和准确性。

双边滤波也可以很好地保留原始图像中的细节信息,而不会失真,所以它是一种更优秀的图像处理算法。

双边滤波主要用于图像平滑处理,它可以用于美化图像,增强图像,抗噪声,以及轮廓检测等应用中,对图像质量和处理效果都有很大的帮助。

简述双边滤波的原理及应用

简述双边滤波的原理及应用

简述双边滤波的原理及应用1. 原理双边滤波是一种非线性的图像滤波算法,能够在去除图像噪声的同时保持边缘信息。

它的原理是通过结合图像的空间距离和像素值相似度来进行滤波。

算法的核心思想是通过一个窗口在图像中滑动,对每个像素进行滤波处理。

在窗口内,通过计算空间距离的权重和像素值相似度的权重得到最终的滤波结果。

具体的计算公式如下:$$ I^{\\text{filtered}}(x, y) =\\frac{1}{W_p}\\sum_{(i,j)\\in\\Omega}{G_{\\sigma_s}(d_{ij})G_{\\sigma_r}(I(x,y) -I(i,j))I(i,j)} $$其中, - $I^{\\text{filtered}}(x, y)$表示滤波后的像素值, - I(x,y)表示当前像素的值, - (i,j)表示窗口内的像素位置, - $\\Omega$表示窗口内的像素集合, - d ij表示当前像素与窗口内像素位置的空间距离, - $G_{\\sigma_s}(d_{ij})$表示空间距离的权重, - $\\sigma_s$控制空间距离的衰减速度, - $G_{\\sigma_r}(I(x,y)-I(i,j))$表示像素值相似度的权重, - $\\sigma_r$控制像素值相似度的衰减速度, - W p表示归一化的权重和。

双边滤波通过调整$\\sigma_s$和$\\sigma_r$来控制滤波效果,两个参数的取值会直接影响滤波的平滑程度和边缘保持效果。

2. 应用双边滤波算法在图像处理中有广泛的应用,主要包括以下几个方面:2.1 图像去噪双边滤波算法能够有效地去除图像中的噪声,包括高斯噪声、椒盐噪声等。

相比于传统的线性滤波算法,双边滤波能够保持图像的边缘信息,避免了因平滑操作而导致的边缘模糊问题。

2.2 图像增强由于双边滤波算法能够保持图像的细节信息,因此可以用于图像增强的应用。

通过调整滤波参数,可以增强图像的纹理、边缘、细节等特点,使图像更加清晰、鲜明。

双边滤波算法原理及实现

双边滤波算法原理及实现

双边滤波算法原理及实现双边滤波是一种经典的图像滤波算法,用于平滑图像并保留边缘信息。

它的主要思想是在滤波过程中同时考虑像素的空间距离和像素的灰度差异,从而实现平滑效果并保持边缘清晰。

w(x, y, p, q) = spatial\_weight \* range\_weight其中,x和y表示当前像素的位置,p和q表示待滤波像素的位置;spatial\_weight和range\_weight分别表示空间距离权重和灰度差异权重。

空间距离权重通过计算像素之间的欧式距离来确定。

当两个像素越接近时,它们的空间距离权重越大。

灰度差异权重通过计算像素之间的灰度差异来确定。

当两个像素之间的灰度差异越小时,它们的灰度差异权重越大。

在实现双边滤波算法时,可以利用高斯函数来计算空间距离权重。

高斯函数的计算公式如下:spatial\_weight = exp(-(x-p)(x-p)/(2\*space\_sigma\*space\_sigma) -(y-q)(y-q)/(2\*space\_sigma\*space\_sigma))其中,space\_sigma是一个控制空间距离权重衰减速度的参数。

灰度差异权重可以通过计算像素之间的灰度值差异来实现。

在实际应用中,可以使用差分算子来计算灰度差异权重。

最后,将权值函数应用于图像的每个像素,通过对像素进行加权平均来实现滤波效果。

具体实现时,可以利用滑动窗口来计算权值函数,然后将滑动窗口应用到整个图像上。

需要注意的是,双边滤波算法的实现复杂度较高,且计算量较大。

为了提高计算效率,可以采用一些优化策略,如将图像进行分块处理,减少计算量。

总结来说,双边滤波是一种有效的图像滤波算法,能够同时平滑图像和保持边缘信息。

通过对像素的空间距离和灰度差异进行加权平均,这种算法能够兼顾平滑效果和边缘清晰度。

在实际应用中,双边滤波算法被广泛应用于图像处理、计算机视觉和图像识别等领域。

双边滤波

双边滤波双边滤波,Bilateral filter。

是一种可以保边去噪的滤波器。

之所以可以达到此去噪效果,是因为滤波器是由两个函数构成。

一个函数是由几何空间距离决定滤波器系数。

另一个由像素差值决定滤波器系数。

双边滤波器的好处是可以做边缘保存edge preserving,一般过去用的维纳滤波或者高斯滤波去降噪,都会较明显的模糊边缘,对于高频细节的保护效果并不明显。

双边滤波器顾名思义比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。

但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波,因此我们对于双边滤波器进行了改进,由于小波分解可以把信号分解为高频和低频部分,我们对于不同频率段进行不同的滤波。

首先将彩色图像RGB模式转为CIE-LAB模式,然后做一次离散二维小波变换dwt2,对于高频的HH,LH,HL部分我们用Bayes shrink的阈值做了软门限soft thresholding,对于低频部分我们把它再进行分解,然后对高频做小波阈值,对低频采用双边滤波。

这样取得的恢复图像,MSE减少了30%,色差误差ciede2000减少了50%,可证明更适于滤波和人类视觉系统。

原理及实现的问题双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。

之所以可以达到此去噪效果,是因为滤波器是由两个函数构成。

一个函数是由几何空间距离决定滤波器系数。

另一个由像素差值决定滤波器系数。

可以与其相比较的两个filter:高斯低通滤波器(/wiki/Gaussian_filter)和α-截尾均值滤波器(去掉百分率为α的最小值和最大之后剩下像素的均值作为滤波器),后文中将结合公式做详细介绍。

双边滤波器中,输出像素的值依赖于邻域像素的值的加权组合,权重系数w(i,j,k,l)取决于定义域核和值域核的乘积同时考虑了空间域与值域的差别,而Gaussian Filter和α均值滤波分别只考虑了空间域和值域差别。

图像处理基础(5):双边滤波器

图像处理基础(5):双边滤波器由 Soso 于星期四, 2018-09-06 10:48 发表双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。

双边滤波器之所以能够做到在平滑去噪的同时还能够很好的保存边缘(Edge Preserve),是由于其滤波器的核由两个函数生成:• 一个函数由像素欧式距离决定滤波器模板的系数• 另一个函数由像素的灰度差值决定滤波器的系数其综合了高斯滤波器(Gaussian Filter)和α-截尾均值滤波器(Alpha-Trimmed mean Filter)的特点。

高斯滤波器只考虑像素间的欧式距离,其使用的模板系数随着和窗口中心的距离增大而减小;Alpha截尾均值滤波器则只考虑了像素灰度值之间的差值,去掉α% 的最小值和最大值后再计算均值。

双边滤波器使用二维高斯函数生成距离模板,使用一维高斯函数生成值域模板。

距离模板系数的生成公式如下:其中,( k , l ) 为模板窗口的中心坐标;( i , j ) 为模板窗口的其他系数的坐标;σd 为高斯函数的标准差。

使用该公式生成的滤波器模板和高斯滤波器使用的模板是没有区别的。

值域模板系数的生成公式如下:其中,函数 f ( x , y ) 表示要处理的图像,f ( x , y ) 表示图像在点(x,y)(x,y)处的像素值;( k , l ) 为模板窗口的中心坐标;( i , j ) 为模板窗口的其他系数的坐标;σr 为高斯函数的标准差。

将上述两个模板相乘就得到了双边滤波器的模板实现(参考OpenCV源代码)这里的实现主要参考OpenCV中的bilateralFilter实现,其实现主要有两个优化:• 使用查表的方式计算灰度值模板系数• 将二维的模板转换为一维,降低算法复杂度。

在滤波之前,首先将灰度值模板系数计算出来。

基于亮度不变特征的自适应双边滤波算法

基于亮度不变特征的自适应双边滤波算法
基于亮度不变特征的自适应双边滤波算法是一种基于像素相邻关
系和亮度保真性的图像增强处理方法。

它通过调整邻域内像素之间的
差异来改进图像的质量,从而使图像更加清晰、丰富和柔和。

该方法的基本原理如下:通过计算每个像素与其邻域中所有像素
的平均亮度和标准差,然后根据这两个参数来调整每个像素的像素值,保持像素值的平均值不变,但抑制异常像素值。

因此,只有在邻域内
亮度发生变化时,才会调整窗口中每个像素的像素值,从而减少噪声,提高图像的整体质量。

自适应双边滤波的另一个特点是,当像素的邻域内没有明显的色
度变化时,算法会放宽滤波的幅度,从而保持原始图像的细节,避免
变得过于柔和。

同时,它还可以根据图像的场景,自动调整滤波的大
小和力度,以保持不同区域的细节和质量,使人眼给出更好的视觉感受。

总之,基于亮度不变特征的自适应双边滤波算法可以在保持图像
细节的同时,有效抑制噪声,同时又具有较好的图像增强效果。

它不
仅可以应用于单通道图像的处理,也可以处理多通道的图像,从而提
升图像质量,为图像处理设计者提供了一种实用而有效的方法。

yolo 双边滤波算法

yolo 双边滤波算法摘要:一、双边滤波算法简介1.双边滤波概念2.双边滤波与高斯滤波的关系二、YOLO算法介绍1.YOLO算法背景2.YOLO算法原理三、YOLO算法与双边滤波的结合1.双边滤波在YOLO算法中的应用2.结合后的优势与效果四、双边滤波算法在实际应用中的案例1.图像处理领域2.目标检测与识别领域五、双边滤波算法的发展与展望1.算法改进方向2.未来应用场景正文:一、双边滤波算法简介1.双边滤波概念双边滤波是一种基于像素邻域的图像处理算法,它通过在空间和颜色域上同时进行加权,对图像进行平滑处理。

这种算法在保持图像边缘清晰的同时,可以有效地降低图像噪声。

2.双边滤波与高斯滤波的关系双边滤波和高斯滤波都属于空间域滤波算法,但双边滤波具有更高的灵活性。

双边滤波通过对像素邻域的加权,可以自适应地调整滤波强度,而高斯滤波则依赖于高斯核函数的参数来控制滤波效果。

二、YOLO算法介绍1.YOLO算法背景YOLO(You Only Look Once)算法是一种实时目标检测算法,由Joseph Redmon 和Ali Farhadi 于2015 年提出。

该算法突破了传统目标检测方法的局限,实现了对图像中目标的快速准确检测。

2.YOLO算法原理YOLO算法采用了一种基于深度卷积神经网络(CNN)的框架,通过对图像进行单次推理,同时预测多个边界框和类别概率。

这种方法具有较高的检测速度和准确性,适用于实时场景。

三、YOLO算法与双边滤波的结合1.双边滤波在YOLO算法中的应用在YOLO 算法中,双边滤波可以用于对检测结果进行后处理,以提高检测精度。

通过对检测边界框进行双边滤波,可以消除噪声,更好地识别目标。

2.结合后的优势与效果结合双边滤波的YOLO 算法,在保持实时检测速度的同时,提高了检测准确性。

双边滤波有效地平滑了检测边界框,使得目标边缘更加清晰,降低了误检和漏检的概率。

四、双边滤波算法在实际应用中的案例1.图像处理领域双边滤波在图像处理领域中,常用于去噪、锐化、边缘检测等任务。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

双边滤波算法的原理、流程、实现及效果2013-11-07 15:17 1969人阅读评论(1) 收藏举报MATALB图像处理双边滤波一、引言双边滤波在图像处理领域中有着广泛的应用,比如去噪、去马赛克、光流估计等等,最近,比较流行的Non-Local算法也可以看成是双边滤波的一种扩展。

自从Tomasi et al等人提出该算法那一天起,如何快速的实现他,一直是人们讨论和研究的焦点之一,在2011年及2012年Kunal N. Chaudhury等人发表的相关论文中,提出了基于三角函数关系的值域核算法,能有效而又准确的实现高效双边算法。

本文主要对此论文提出的方法加以阐述。

双边滤波的边缘保持特性主要是通过在卷积的过程中组合空域函数和值域核函数来实现的,典型的核函数为高斯分布函数,如下所示:(1)其中:(2)为归一化的作用。

σs为空域高斯函数的标准差,σr为值域高斯函数的标准差,Ω表示卷积的定义域。

可见,在图像的平坦区域,f(y)-f(x)的值变化很小,对应的值域权重接近于1,此时空域权重起主要作用,相当于直接对此区域进行高斯模糊,在边缘区域,f(y)-f(x)会有较大的差异,此时值域系数会下降,从而导致此处整个核函数的分布的下降,而保持了边缘的细节信息。

直接的编码实现上述过程是相当耗时的,其时间复杂度为O(σs2),因此严重的限制住了该算法的推广和实际使用。

不断有学者提出了解决的办法,其中Porikli基于一些假定对此过程进行了优化,比如我就实现过其中一种:空域函数为均值函数,值域为任何其他函数,此时可以用直方图技术进行处理,可减少计算量,但我的实践表明该算法那速度还是慢,并且效果也不好。

在2011的论文《Fast O(1) bilateral filtering using trigonometric range kernels》中,作者提出了用Raised cosines函数来逼近高斯值域函数,并利用一些特性把值域函数分解为一些列函数的叠加,从而实现函数的加速。

下面我们重点描述下该过程。

二、推导1、一些基础理论和常识。

(1) Cos函数在[-Pi/2,Pi/2]之间为非负、对称、在半周期内单调递增以及且有峰值的函数;(2) 欧拉公式: exp(ix)=cos(x)+isin(x);(3) 分配律:exp(a+b)=exp(a)*exp(b);(4) 图像的动态范围:[0,T],比如对于灰度图像即为[0,255];2、一些有用的论证(1) 对于式子:(3)其中s是自变量,取值范围[-T,T],令γ= Pi / 2T,则γs的值在[-Pi/2,Pi/2]内。

此时,可以证明:(4)(2) 当N足够大时,有下式成立:(5)如果令ρ=γσ,则上式就变为:(6)同样,上面成立的条件也必须有:当γs的值在[-Pi/2,Pi/2]时,因此只需要即可,此时要求;式6中,最右侧部分即为高斯函数,此时说明,可以用 Raised cosines函数来近似的模拟高斯函数,我们用一段matlab函数来验证该结果:clc;T=255;Delta =80;Gamma = pi/(2*T);Rho= Gamma * Delta;Color = ['b','g','r','c','m','y','k'];x=-T:T;y1=exp(-x.^2/(2*Delta*Delta));plot(x,y1,'--b','LineWidth',2);hold on;for k=2:7y2= cos(Gamma .* x/ (Rho * sqrt(k))).^(k); plot(x,y2,Color(k));end从左图的曲线分布可见,N=2(绿色),N=3(红色)两条曲线明显不符合我们的定义域的要求,分别出现了非单调递增和负值得情况。

之后随着N的不断增大,曲线越来越接近高斯分布曲线(蓝色曲线)。

这从实际的角度证明了公式6的正确性。

3、推导将公式(4)带入公式(6)中,得到:(7)将公式(7)带入原始的双边滤波的公式(1)中,有:(8)其中:式(8)的第三行利用了前面基础理论中的第三条:分配率。

注意式中的积分是对y积分,因此可以把f(x)相关部分提取到积分符号的外围。

同样,对于η,可以推导得到:(9)注意(8)和(9)两式中后的后半部分,比如这个,可以看出这个实际上就是对cos(β)这幅图像进行高斯模糊,而高斯模糊可以通过FFT或者回溯算法快速O(1)实现,这样两式8/9两式就分别转换为对f(y)cos(β)、f(y)sin(β)、cos(β)以及sin(β)图像进行一系列高斯模糊的过程了。

至此,所有的推导工作完成,那么我们在理一下算法的执行步骤吧:(1):已知条件:输入图像f(x),动态范围[-T,T],空域和值域方差σs、σr。

(2):设定γ = Pi / 2T,ρ=γσr,N=1/(γσr*γσr) ;(3) : for (0≤n≤N),获取f(y)cos(β)、f(y)sin(β)、cos(β)以及sin(β)所对应的图像数据(浮点类型);(4):利用O(1)高斯模糊算法对上述四个图像数据进行标准差为σs的高斯模糊并累计。

(5):对累加后的数据进行除法操作,获得最终的结果图像。

注意:式8和式9中的乘法最后会有虚部的数据出现,在处理时可以直接丢弃掉。

三、实现及效果以上算法在论文Fast O(1) bilateral filtering using trigonometric range kernels中有着较为详细的论述,论文中还给出了JAVA代码实现的链接,但是该链接已经失效,需要JAVA代码做参考的可从此处下载:BilateralFilter-src.rar,其中的BilateralFilter_.jar可在ImageJ中作为插件加载,而这篇论文的对应代码在解压后的bilateralfilterinstant文件夹中。

注意,这个ImageJ的插件写的似乎有问题,运行时点plugins-->BilateralFilters-->Bilateral Filter Instant 后弹出的对话框中,不要勾选多线程才能对输入的任意参数进行处理,否则图像无任何反映。

在第三步和第四步的处理,N+1次循环之间时没有任何关系的,因此,只要内存许可,各循环之间可以并行的执行,这对于现在的2核和4核的CPU的有一定的意义,不过相比GPU来说,可能意义更大吧。

按上述过程编制代码,测试效果测试如下:(1)去除噪音lena图增加标准差为20的高斯噪音使用σs=20、σr=40双边滤波后的结果(2)普通图像的边缘保持结果带有噪音的美女图1使用σs=10、σr=35双边滤波后的结果上表中,可以发现,当σr小于20时,所需要的循环次数N极具增加,当N超过100时,可以认为这个算法已经不再具有优化的意义了,可能比原始的算法还慢。

这个从原理上也很好解释。

当σr比较小时,高斯函数的曲线在中心线附近急剧下降,从而需要更多的三角函数来逼近他。

因此,进一步的优化需要从T的取值以及N的方面予以考虑。

这说明在很多情况下T值确实小于255,即使取样半径比较大。

这里则涉及到一个平衡问题。

计算实际的T值一般情况下会获得小于255的结果,这有利于减小N,从而降低程序的执行时间,但是这个计算的过程本身也需要时间,如果这个时间大于其带来的好处,则这个改进就是退步。

幸好,在很久以前,关于指定半径内的最大值算法就已经有了O(1)的快速算法,其执行时间一般要小于进行一次本例中这种循环的时间。

所以这个改进是值得的。

那么我在看看小σr时大N的问题,当σr比较小时,我们观察其分布曲线,如下图:σr = [1 3 5 10 15]时的曲线由上图可以看出小σr时,曲线在中心线附近迅速衰减,理论表明这个距离为[-3σr,3σr],在此之外的值可以忽略不计,因此,那些对最终结果没有什么贡献的循环就完全可以舍弃,这部分的理论推导可以详见论文Acceleration of the shiftable O(1) algorithm for bilateral filtering and non-local means。

我们知道,Non-Local算法在很大程度是双边模糊的扩展,只是其值域的相似度函数更加复杂,不是简单的f(y)-(f(x)那么简单了,而是和f(y)和f(x)的领域有关,因此直接的Non-Local实现理论上比双边滤波还要耗时,上面介绍的这种优化方式在后面这篇论文里提到也是可以用于Non-Local的,有兴趣的朋友可以自己去研究下。

五:小结和展望可以看到,本文的这种优化方式实际上是利用Cos函数去毕竟高斯函数,在代码层次上,需要(N+1)*4此高斯模糊,而由上面相关表格可以看到,N的数值一般都在10以上,因此,至少要执行44次高斯模糊,这还不包括获取需要高斯模糊的数据部分以及最后的滤波结果获取。

即使高斯模糊在高效,比如对于600*400的彩色图,5ms足也,那么执行双边模糊保守估计也要400ms左右,因此这个算法说实在的效率还是不行。

这两篇文章分别是2011年及2012年发表的,应该是代表着目前比较先进的技术,我在网上经常看到有人说双边滤波可是实时,实在是不晓得那些高人用的是什么理论,抑或是什么超级机器。

同我之间的一篇博文中双指数边缘平滑滤波器用于磨皮算法的尝试提到的Beeps边缘保留算法相比,这里的速度就要慢很多了,而两者的效果相比基本上差不多,所以实在很纠结。

希望有更好的方法用于该算法。

相关文档
最新文档