【双边滤波】基于小波变换的多尺度自适应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项目合作可私信.
最新文章
- 赛迪研究院发布《2018年中国自动驾驶产业发展及投资价值白皮书》!
- doctype的三种类型
- openstack管理员手册下载_城市绿心森林公园app下载-城市绿心森林公园客户端下载v1.1 安卓版...
- linux平台的office文档转pdf的实例(程序员的菜)
- Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet、AlexNet、VGG、NIN、GoogleNet、ResNet)——从代码认知CNN经典架构
- 9中继器添加一列序号自增_三个动态自动更新EXCEL序号的小技巧,解决重复编号困扰...
- 知乎回答多线程爬虫案例
- shell编程--流程控制for,do-while,if-then,break,continue,case等
- 解决Mac下安装新版本IDEA无法启动
- 搜索引擎设计实用教程(4)-以百度为例
- getElementByClassName()不兼容的解决办法
- mysql之旅【第一篇】
- python doc转docx_利用python中的win32com模块将doc文件转为docx文件
- java中的缓冲流BufferedWriter和BufferedReader
- linux三剑客之sed命令,linux三剑客之sed命令
- 加载Oracle驱动代码,无法加载oracle in oradb10g_home2 odbc驱动程序的安装例程,因为存在系统错误代码998 解决方法 | 学步园...
- python3.10下载安装(附python学习教程)
- Tomcat安装及环境配置(详细教程)
- UltraEdit 编辑器授权许可暴力破解
- 旧电脑改造服务器或云电脑和外网访问家庭nas/软路由实战记录