【双边滤波】基于小波变换的多尺度自适应THZ增强双边滤波器的MATLAB仿真
1.软件版本
MATLAB2021a
2.本算法理论知识
提出了一种”基于小波变换的多尺度自适应双边滤波器“算法。
其对应的算法流程如下所示:
下面,我们从理论上限介绍一下这里所采用的改进后的算法。
第一:多尺度图像的自适应双边滤波
这个部分,是我们这里所需要研究的创新的算法,这里重点从理论上介绍一下。
首先通过图像亮度,将图像区分为前景图和背景图。
这里,我们主要通过二值话处理,进行图像的前景和背景的区分,这个部分的理论为:
这里,门限T的计算,我们主要通过matlab自带的一个函数获得,这个函数会根据每个图像自动计算出门限T。
graythresh
对于的代码为:
然后分别对前景和背景进行sigma参数的自适应调整。
这里,sigma的计算公式为:
这里,我们根据上面的背景前景,做如下的设置。
这里,我们分别对前景和背景下乘以系数K1和K2,其中根据亮度分布(亮的为背景、暗的为物体)来确定BF的各像素的两个sigma值,让亮区域平滑更多(选用大sigma),暗区域平滑偏小(小sigma)。
3.核心代码
% Pre-process input and select appropriate filter.
function B = bfilter2(A,w,sigma)% Verify that the input image exists and is valid.
if ~exist('A','var') || isempty(A)error('Input image A is undefined or invalid.');
end
if ~isfloat(A) || ~sum([1,3] == size(A,3)) || ...min(A(:)) < 0 || max(A(:)) > 1error(['Input image A must be a double precision ',...'matrix of size NxMx1 or NxMx3 on the closed ',...'interval [0,1].']);
end% Verify bilateral filter window size.
if ~exist('w','var') || isempty(w) || ...numel(w) ~= 1 || w < 1w = 5;
end
w = ceil(w);% Verify bilateral filter standard deviations.
if ~exist('sigma','var') || isempty(sigma) || ...numel(sigma) ~= 2 || sigma(1) <= 0 || sigma(2) <= 0sigma = [3 0.1];
end% Apply either grayscale or color bilateral filtering.
if size(A,3) == 1B = bfltGray(A,w,sigma(1),sigma(2));
elseB = bfltColor(A,w,sigma(1),sigma(2));
end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Implements bilateral filtering for grayscale images.
function B = bfltGray(A,w,sigma_d,sigma_r)% Pre-compute Gaussian distance weights.
[X,Y] = meshgrid(-w:w,-w:w);
G = exp(-(X.^2+Y.^2)/(2*sigma_d^2));% Create waitbar.
h = waitbar(0,'Applying bilateral filter...');
set(h,'Name','Bilateral Filter Progress');% Apply bilateral filter.
dim = size(A);
B = zeros(dim);
for i = 1:dim(1)for j = 1:dim(2)% Extract local region.iMin = max(i-w,1);iMax = min(i+w,dim(1));jMin = max(j-w,1);jMax = min(j+w,dim(2));I = A(iMin:iMax,jMin:jMax);% Compute Gaussian intensity weights.H = exp(-(I-A(i,j)).^2/(2*sigma_r^2));% Calculate bilateral filter response.F = H.*G((iMin:iMax)-i+w+1,(jMin:jMax)-j+w+1);B(i,j) = sum(F(:).*I(:))/sum(F(:));endwaitbar(i/dim(1));
end% Close waitbar.
close(h);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Implements bilateral filter for color images.
function B = bfltColor(A,w,sigma_d,sigma_r)% Convert input sRGB image to CIELab color space.
if exist('applycform','file')A = applycform(A,makecform('srgb2lab'));
elseA = colorspace('Lab<-RGB',A);
end% Pre-compute Gaussian domain weights.
[X,Y] = meshgrid(-w:w,-w:w);
G = exp(-(X.^2+Y.^2)/(2*sigma_d^2));% Rescale range variance (using maximum luminance).
sigma_r = 100*sigma_r;% Create waitbar.
h = waitbar(0,'Applying bilateral filter...');
set(h,'Name','Bilateral Filter Progress');% Apply bilateral filter.
dim = size(A);
B = zeros(dim);
for i = 1:dim(1)for j = 1:dim(2)% Extract local region.iMin = max(i-w,1);iMax = min(i+w,dim(1));jMin = max(j-w,1);jMax = min(j+w,dim(2));I = A(iMin:iMax,jMin:jMax,:);% Compute Gaussian range weights.dL = I(:,:,1)-A(i,j,1);da = I(:,:,2)-A(i,j,2);db = I(:,:,3)-A(i,j,3);H = exp(-(dL.^2+da.^2+db.^2)/(2*sigma_r^2));% Calculate bilateral filter response.F = H.*G((iMin:iMax)-i+w+1,(jMin:jMax)-j+w+1);norm_F = sum(F(:));B(i,j,1) = sum(sum(F.*I(:,:,1)))/norm_F;B(i,j,2) = sum(sum(F.*I(:,:,2)))/norm_F;B(i,j,3) = sum(sum(F.*I(:,:,3)))/norm_F;endwaitbar(i/dim(1));
end% Convert filtered image back to sRGB color space.
if exist('applycform','file')B = applycform(B,makecform('lab2srgb'));
else B = colorspace('RGB<-Lab',B);
end% Close waitbar.
close(h);
4.操作步骤与仿真结论
5.参考文献
A25-09
6.完整源码获得方式
方式1:微信或者QQ联系博主
方式2:订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码
【双边滤波】基于小波变换的多尺度自适应THZ增强双边滤波器的MATLAB仿真相关推荐
- 自适应增量调制adm的实现与matlab仿真,自适应增量调制ADM的实现与Matlab仿真
<自适应增量调制ADM的实现与Matlab仿真>由会员分享,可在线阅读,更多相关<自适应增量调制ADM的实现与Matlab仿真(4页珍藏版)>请在技术文库上搜索. 1.62 s ...
- 控制器matlab仿真研究,单神经元自适应PID控制器的研究及MATLAB仿真
单神经元自适应PID控制器的研究及MATLAB仿真 在分析传统的PID控制器的基础上,提出了一种单神经元自适应PID控制器,这种控制器,不仅结构简单,且具有较好的适应 (本文共2页) 阅读全文> ...
- 有源电力滤波器APF MATLAB仿真 选阶补偿,matlab版本V2014,基于LCL滤波器的I型三电平拓扑仿真模型
有源电力滤波器APF MATLAB仿真 选阶补偿,matlab版本V2014,基于LCL滤波器的I型三电平拓扑仿真模型,三相四线制,软件锁相环,C语言编程提取谐波指令,直流电压和中点电位控制稳定. I ...
- 基于小波变换的单幅彩色图像去雾增强
注:本文成于2017年12月,是<小波变换与图像处理>的课程作业 摘要 雾天天气对户外场景图像会造成严重损害,表现为光照不均,色彩饱和度低,细节和对比度差,进而造成图像质量的退化,影响进一 ...
- 【IHS+稀疏表示】基于IHS小波变换和稀疏表示相结合的遥感图像融合算法matlab仿真
1.软件版本 matlab2013b 2.本算法理论知识 小波变换具有多尺度特性,其时域和频域均 具有表征信号局部特性的能力和多分辨率分析的 特点.在低频时具有高的频谱分辨率,在高频 时具有低的频谱分 ...
- 基于GRNN广义回归神经网络的车牌字符分割和识别matlab仿真
目录 一.理论基础 二.核心MATLAB程序 三.MATLAB仿真测试结果 一.理论基础 GRNN通常被用来进行函数逼近.它具有一个径向基隐含层和一个特殊的线性层.第一层和第二层的神经元数目都与输入的 ...
- 基于精英保留策略选择和轮盘赌选择的遗传优化matlab仿真
目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 首先要了解遗传算法的一些基本概念: 基因型(genotype):性状染色体的内部表现: 表现型(phenotype):染色体决 ...
- 【图像隐藏】基于小波变换DWT实现数字水印嵌入提取含各类攻击附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 【信号处理】基于小波变换的时间重分配多重同步压缩变换TMSST附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
最新文章
- Deployment详解
- request用法_Go 语言 Web 应用开发 第 04 课:高级模板用法
- 使用@host获得宿主元素注入器里注入的内容
- 移植.NET Core计划,整合各平台变得更简单了!
- Thinkphp 发送邮件
- html前台检验特殊字符正则,【Qt编程】html特殊字符及正则表达式
- 汽车之家:基于 Flink + Iceberg 的湖仓一体架构实践
- python 自动上报json信息_python接口自动化5-Json数据处理
- 需求、需求工程与需求工程师 — 1.定义、作用
- java 返回js,Javascript返回上一页
- Spring Boot Test 进行JPA 测试保存数据到数据库
- 【转】JMeter脚本的参数化
- NGUI学习笔记汇总
- 1991-2020中国科技统计年鉴(EXCEL版)
- 电脑常用快捷键大全(收藏)
- Intent中putExtra()方法用法
- rampUp时间 jmeter
- solidworks批量转存宏程序开发【可下载】
- 【重磅】云栖社区2017年度内容特辑
- 基于卷积神经网络的手势识别研究论文