当前位置: 代码迷 >> 综合 >> 【图像去噪】基于分裂Bregman算法实现图像去噪matlab代码
  详细解决方案

【图像去噪】基于分裂Bregman算法实现图像去噪matlab代码

热度:83   发布时间:2023-12-03 22:38:32.0

1 简介

该文在研究两步模型的基础上,提出了一种新的变分去噪模型。通过分析新模型的性质,给出一种高效且快速的数值算法。由于新模型耦合了两个变量,因此新算法首先利用交替极小化方法化原模型为两个简单的子模型,然后再对两个子模型分别利用分裂Bregman方法进行数值求解。实验结果表明,新算法不但收敛速度较快,而且在去噪过程中能够减缓阶梯效应并能较好地保持图像的边缘信息。

分裂 Bregman 方法是一种高效的迭代方法,常用于求解带有L1 项的优化问题。由于该方法具有编程简单,数值求解过程比较稳定,在计算过程中保持正则化参数为一个常数,占有内存小且具有较快的计算速度和收敛速度等优势,因此,这种方法已经被广泛地运用到图像处理中。?

2 部分代码

clc; clear all;
close all;N = 512; n = N^2;
f = double(imread('Lena512','png'));
g = f(:) + 0.09*max(f(:))*randn(n,1);mu = 20;g_denoise_atv = SB_ATV(g,mu);
g_denoise_itv = SB_ITV(g,mu);fprintf('ATV Rel.Err = %g\n',norm(g_denoise_atv(:) - f(:)) / norm(f(:)));
fprintf('ITV Rel.Err = %g\n',norm(g_denoise_itv(:) - f(:)) / norm(f(:)));figure; colormap gray;
subplot(221); imagesc(f); axis image; title('Original');
subplot(222); imagesc(reshape(g,N,N)); axis image; title('Noisy');
subplot(223); imagesc(reshape(g_denoise_atv,N,N)); axis image; 
title('Anisotropic TV denoising');
subplot(224); imagesc(reshape(g_denoise_itv,N,N)); axis image; 
title('Isotropic TV denoising');

3 仿真结果

4 参考文献

[1]郝岩, 冯象初, 许建楼. 一种新的去噪模型的分裂Bregman算法[J]. 电子与信息学报, 2012, 34(3):7.

部分理论引用网络文献,若有侵权联系博主删除。

  相关解决方案