快速双边滤波源码「建议收藏」

发布时间 - 2025-07-14 00:00:00    点击率:

大家好,又见面了,我是你们的朋友全栈君。

% 使用升余弦的快速双边滤波

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % inImg : 灰度图像 % sigma1 : 空间高斯核的宽度 % sigma2 : 范围高斯核的宽度 % [-w, w]^2 : 空间高斯核的领域 % tol : 截断误差 % % 作者: Kunal N. Chaudhury. % 日期: 2012年3月1日. % 修改: 2014年6月21日. % % 参考文献: % [1] K.N. Chaudhury, D. Sage, 和 M. Unser, “使用三角范围核的快速O(1)双边过滤,” IEEE Trans. Image Proc., % 卷. 20, 号. 11, 2011. % % [2] K.N. Chaudhury, “加速可移动的O(1)算法用于双边过滤和非局部均值,” IEEE Transactions on Image Proc., % 卷. 22, 号. 4, 2013. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 加载测试图像 clc, clear all, close all force; Img = double( imread(‘./images/ckb.jpg’) ); [m, n] = size(Img);

% 创建带噪声图像(加性高斯噪声) sigma = 20; inImg = Img + sigma * randn(m, n);

% 过滤参数 sigma1 = 4; sigma2 = 30; tol = 0.01;

% 设置空间高斯核的窗口 w = 6*sigma1; if (mod(w,2) == 0) w = w+1; end

% 调用双边滤波器 tic; [outImg, param] = shiftableBF(inImg, sigma1, sigma2, w, tol); toc;

% 绘制结果 T = param.T; N = param.N; M = param.M; gamma = 1 / (sqrt(N) * sigma2); twoN = 2^N;

warning(‘off’); %#ok

s = linspace(-T, T, 200); g = exp( -s.^2 / (2 sigma2 sigma2) ); gApprox = cos(gamma s).^N; if M == 0 gTrunc = gApprox; else gTrunc = zeros( 1, length(s) ); for k = M : N - M gTrunc = gTrunc + (nchoosek(N, k) / twoN) … cos( (2k - N) gamma * s ); end end

figure(‘Units’,’normalized’,’Position’,[0 0.5 1 0.5]); plot(s, g, ‘b’); hold on, plot(s, gApprox, ‘m’), hold on, plot(s, gTrunc, ‘r’); axis(‘tight’), grid(‘on’), legend(‘高斯’,’升余弦’,’截断升余弦’,’FontSize’, 10); title(‘范围核的比较’, ‘FontSize’, 10),

peak = 255; PSNR0 = 10 log10(m n peak^2 / sum(sum( (inImg - Img).^2)) ); PSNR1 = 10 log10(m n peak^2 / sum(sum((outImg - Img).^2)) );

figure(‘Units’,’normalized’,’Position’,[0 0.5 1 0.5]); colormap gray, subplot(1,3,1), imshow(uint8(Img)), title(‘原始’, ‘FontSize’, 10), axis(‘image’, ‘off’); subplot(1,3,2), imshow(uint8(inImg)), title([ ‘带噪声, ‘, num2str(PSNR0, ‘%.2f’), ‘dB’] , ‘FontSize’, 10), axis(‘image’, ‘off’); subplot(1,3,3), imshow(uint8(outImg)), title([ ‘滤波后, ‘, num2str(PSNR1, ‘%.2f’), ‘dB’] , ‘FontSize’, 10), axis(‘image’, ‘off’);

发布者:全栈程序员栈长,转载请注明出处:https://www./link/8684ff2b6457df6145f160954e1ff7a7


# cos  # html  # if  # for  # double  #   # Length  # position  # 算法  # https  # 高斯  # 我是  # 你们的  # 大家好  # 转载请注明  # 又见  # 均值  # 加载  # 性高  # images 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  如何打造高效商业网站?建站目的决定转化率  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  智能起名网站制作软件有哪些,制作logo的软件?  Python文本处理实践_日志清洗解析【指导】  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  佛山企业网站制作公司有哪些,沟通100网上服务官网?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  如何快速选择适合个人网站的云服务器配置?  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  Laravel如何使用Collections进行数据处理?(实用方法示例)  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  如何快速使用云服务器搭建个人网站?  用yum安装MySQLdb模块的步骤方法  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  如何快速建站并高效导出源代码?  Java遍历集合的三种方式  如何选择可靠的免备案建站服务器?  EditPlus中的正则表达式 实战(1)  如何获取上海专业网站定制建站电话?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  如何用PHP快速搭建CMS系统?  如何解决hover在ie6中的兼容性问题  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  javascript基于原型链的继承及call和apply函数用法分析  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  JavaScript中的标签模板是什么_它如何扩展字符串功能  Android 常见的图片加载框架详细介绍  如何在不使用负向后查找的情况下匹配特定条件前的换行符  如何挑选优质建站一级代理提升网站排名?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  Laravel怎么为数据库表字段添加索引以优化查询  昵图网官方站入口 昵图网素材图库官网入口  IOS倒计时设置UIButton标题title的抖动问题  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  如何在IIS中配置站点IP、端口及主机头?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  Laravel怎么实现模型属性的自动加密  如何续费美橙建站之星域名及服务?  HTML 中如何正确使用模板变量为元素的 name 属性赋值  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  利用python获取某年中每个月的第一天和最后一天  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  深入理解Android中的xmlns:tools属性