双边滤波算法的原理 - 图文
更新时间:2023-12-09 11:40:01 阅读量: 教育文库 文档下载
- kalman滤波算法原理推荐度:
- 相关推荐
双边滤波算法的原理、流程、实现及效果
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(σs) ,因此严重的限制住了该算法的推广和实际使用。不断有学者提出了解决的办法,其中Porikli基于一些假定对此过程进行了优化,比如我就实现过其中一种:空域函数为均值函数,值域为任何其他函数,此时可以用直方图技术进行处理,可减少计算量,但我的实践表明该算法那速度还是慢,并且效果也不好。 在2011的论文《Fast O(1) bilateral ?ltering using trigonometric range kernels》中,作者提出了用Raised cosines函数来逼近高斯值域函数,并利用一些特性把值域函数分解为一些列函数的叠加,从而实现函数的加速。下面我们重点描述下该过程。
2
二、推导
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:7
y2= 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 ?ltering 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)去除噪音
正在阅读:
双边滤波算法的原理 - 图文12-09
向考察组领导汇报个人情况01-29
固定资产业务会计处理03-19
2020年团支书述职报告范文05-05
永登县城市发展投资有限公司工作汇报10-01
循证医学结课作业04-11
冬天的美景作文500字07-09
陕西银行招聘信息网02-08
新手必看教你斗破乾坤如何一天升到45级06-04
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 滤波
- 双边
- 算法
- 原理
- 图文
- 离合器分离轴项目可行性研究报告(发改立项备案+2013年最新案例范文)详细编制方案
- 急危重症护理学1-8章习题
- 计算机基础客观题模拟考试答卷-1
- 2012计算机网络与通信技术B及答案
- 闽台文化2
- 治疗老花眼的穴位及指压法 - 图文
- 2018届浙江高考生物(选考)仿真模拟卷:6 Word版含解析
- Wireshark捕获SMTP协议
- 大学语文阅读篇目复习提示
- 语专题训练九上Unit3牛津译林版
- 清华版六年级下册信息技术机器人教案(彩色版)
- 党员转正大会流程及主持词
- 2014护理第三季度三基考试201405230
- 高定价中国 - 联合国儿童基金会
- 十八项医疗质量管理核心制度试题及答案
- 继保普考选择题
- 京东仓储管理现状及其分析
- 全科医学概论复习题
- 医学专科医学微生物学和免疫学试题
- 延续注册-市政公用工程24学时试卷2