【图像去噪】基于matlab最佳加权双边滤波图像去噪【含Matlab源码 459期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、双边滤波图像去噪简介

理论知识参考文献:基于联合双边滤波的图像去噪与融合方法研究

⛄二、部分源代码

% Image Denoising using Optimally Weighted Bilateral Filters
%

%
% Acronyms:
%
% SBF: Standard Bilateral Filter.
% RBF: Robust Bilater Filter.
% WBF: Weighted Bilateral Filter.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% parameters
sigma = 30; % noise
sigmas = 4; % spatial gaussian kernel
sigmar1 = 20; % range gaussian kernel for SBF
sigmar2 = 20; % range gaussian kernel for RBF
w = 6round(sigmas)+1;
tol = 0.01;
%
% read input image
%
f0 = double(imread(‘./images/cameraman.tif’));
[m,n]=size(f0);
%
% generate noise
%
noise=sigma
randn(m,n);
%
% noisy input for the algorithm
%
f = double(f0) + noise;
%
% compute SBF and divergence
%
L = 0;
[M, N]=computeTruncation(f, sigmar1, w, tol);
[f1, div1] = computeDivergence(f, f, sigmas,sigmar1,L,w,N,M);
%
% compute RBF and divergence
%
L = 1;
h = ones(2L+1, 2L+1) /((2*L+1)^2) ;
barf = imfilter(f,h);
[M, N] = computeTruncation(barf, sigmar2, w, tol);
[f2, div2] = computeDivergence(f, barf,sigmas,sigmar2,L,w,N,M);
%
% compute optimal weights
%
A = [norm(f1,‘fro’)^2, sum(sum(f1.*f2));
sum(sum(f1.*f2)), norm(f2,‘fro’)^2];
b = [sum(sum(f1.f)) - sigma^2div1;
sum(sum(f2.f)) - sigma^2div2];
theta = A\b;
%
% form the WBF
%
bfoptSURE = theta(1)f1 + theta(2)f2;
% computing PSNR’s
peak=255;
PSNRnoisy = 10 * log10(m
n
peak^2/ …
sum(sum((f - f0).^2)) ); % noisy PSNR
PSNR_f1 = 10 * log10(m * n * peak^2 …
/ sum(sum((f1 - f0).^2)) ); % SBF PSNR
PSNR_f2 = 10 * log10(m * n * peak^2 …
/ sum(sum((f2 - f0).^2)) ); % RBF PSNR
PSNRb_f = 10 * log10(m * n * peak^2 …
/ sum(sum((bfoptSURE - f0).^2)) ); % WBF PSNR
%
% display
%
h=figure(‘Units’,‘normalized’,‘Position’,[0 0.5 1 0.5]);
set(h,‘name’,‘Denoising Results’)
colormap gray,
%
subplot(2,3,1)
imshow(uint8(f0));
title(‘Clean Image’)
%
subplot(2,3,2)
imshow(uint8(f));
title([‘Noisy Image, PSNR = ‘, …
num2str(PSNRnoisy,’%.2f’)]);
%
subplot(2,3,3)
imshow(uint8(f1));
title([‘SBF, PSNR = ‘, …
num2str(PSNR_f1,’%.2f’)]);
%
subplot(2,3,4)
imshow(uint8(f2));
title([‘RBF, PSNR = ‘, …
num2str(PSNR_f2,’%.2f’)]);
%
subplot(2,3,5)
imshow(uint8(bfoptSURE));
title([‘WBF, PSNR = ‘, …
num2str(PSNRb_f,’%.2f’)]);
%
subplot(2,3,6)
imshow(uint8(bfoptSURE-f0));
title(‘Residual Noise in WBF’);
% compute filter and divergence using shiftable algorithm
%
function [F, div] = computeDivergence …
(f,barf,sigmas,sigmar,L,w,N,M)
filt = fspecial(‘gaussian’, [w w], sigmas);
ct = (w+1)/2;
centerWt = filt(ct,ct);
gamma = 1/(sqrt(N)*sigmar);
twoN = 2^N;
[m,n] = size(f);

S = zeros(m,n);
delR = zeros(m,n);
delS = zeros(m,n);
if M == 0
for k = 0 : N
omegak = (2k - N)gamma;
ck = nchoosek(N,k)/twoN;
U = exp(-ii
omegak
barf);
W = conj(U);
V = W.f;
barV = imfilter(V, filt);
barW = imfilter(W, filt);
B = ck
U.barV;
C = ck
U.barW;
R = R + B;
S = S + C;
delR = delR + omegak
B;
delS = delS + omegakC;
end
F = real(R./S);
delR = centerWt - (1/(2
L+1))^2iidelR;
delS = -ii*(1/(2L+1))^2delS;
else
sumck = 0;
sumckwk = 0;
if N < 50
for k = M : N - M
omegak = (2k - N)gamma;
warning(‘off’); %#ok
ck = nchoosek(N,k)/twoN;
U = exp(-ii
omegak
barf);
W = conj(U);
V = W.f;
barV = imfilter(V, filt);
barW = imfilter(W, filt);
B = ck
U.barV;
C = ck
U.barW;
sumck = sumck + ck;
sumckwk = sumckwk + ck
omegak;
R = R + B;
S = S + C;
delR = delR + omegakB;
delS = delS + omegak
C;
end
else
for k = M : N - M
omegak = (2*k - N)gamma;
warning(‘off’); %#ok
% Sterling’s approximation
ck = exp(logfactorial(N) - logfactorial(k) …
- logfactorial(N-k) - N
log(2));

        W = conj(U);
        V = W.*f;
        barV  = imfilter(V, filt);
        barW = imfilter(W, filt);
        B = ck*U.*barV;
        C = ck*U.*barW;
        sumck = sumck + ck;
        sumckwk = sumckwk + ck*omegak;
        R = R + B;
        S  = S + C;
        delR = delR + omegak*B;
        delS = delS  + omegak*C;
    end
end
F =real(R./S);
delR = centerWt*sumck + ii*(1/(2*L+1))^2* ...
    (centerWt*sumckwk*f - delR);
delS = ii*(1/(2*L+1))^2*(centerWt*sumckwk - delS);

end
div = real(sum(sum((S.*delR - R.*delS)./S.^2)));
end

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]潘梁静.基于高斯滤波和双边滤波的数字图像去噪算法[J].商丘职业技术学院学报. 2020,19(01)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海神之光

有机会获得赠送范围1份代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值