数字图像处理①基于ADMM的全变分去噪算法

news/2025/2/14 0:16:50/

文章目录

  • 1. Problem
  • 2. 仿真结果
  • 3. MATLAB算法
  • 4. 源码地址
  • 参考文献

1. Problem


在图像处理中,图像信号总会因为各种原因受到噪声的干扰,其中高斯噪声就是典型的干扰类型之一。

针对图像去噪的模型有很多种,其中全变分模型被认为是最有效的模型之一。早在1992年,Rudin、Osher和Rudin三位学者在论文1就提出了全变分(Total Variation,TV)模型,论文证明了随着噪声的增加,图像的TV将会变大,因此,可以通过最小化TV来实现图像去噪。

全变分有几种模型,有各向异性全变分(Anisotropic Total Variation,ATV)、各向同性全变分(Isotropic Total Variation,ITV)和其它的形式。

定义一个 N × N N\times N N×N的图像信号 x x x,其中 x ( i , j ) x(i,j) x(i,j)表示图像的第 i i i j j j列像素值,则

ITV可以表示为

I T V ( x ) = ∑ i = 1 N ∑ j = 1 N [ x ( i + 1 , j ) − x ( i , j ) ] 2 + [ x ( i , j + 1 ) − x ( i , j ) ] 2 2 (1) ITV(x)=\sum_{i=1}^N\sum_{j=1}^N\sqrt[2]{[x(i+1,j)-x(i,j)]^2+[x(i,j+1)-x(i,j)]^2}\tag{1} ITV(x)=i=1Nj=1N2[x(i+1,j)x(i,j)]2+[x(i,j+1)x(i,j)]2 (1)

ATV可以表示为

A T V ( x ) = ∑ i = 1 N ∑ j = 1 N ∣ x ( i + 1 , j ) − x ( i , j ) ∣ + ∣ x ( i , j + 1 ) − x ( i , j ) ∣ (2) ATV(x)=\sum_{i=1}^N\sum_{j=1}^N|x(i+1,j)-x(i,j)|+|x(i,j+1)-x(i,j)|\tag{2} ATV(x)=i=1Nj=1Nx(i+1,j)x(i,j)+x(i,j+1)x(i,j)(2)

以ATV模型为例,一个图像去噪问题可以建模为

min ⁡ u 1 2 ∣ ∣ u − x ∣ ∣ 2 2 + λ ∣ ∣ D x ∣ ∣ 1 (3) \min_u \frac12 ||u-x||^2_2+\lambda||Dx||_1\tag{3} umin21∣∣ux22+λ∣∣Dx1(3)

其中, x x x为待去噪信号, u u u为变量, D D D为全变分算子,可以由式(1)得到, λ \lambda λ为正则化参数。该问题是一个非凸、不光滑问题,无法直接采用梯度下降法求解。

交替方向乘子法2(Alternating Direction Method of Multiplier,ADMM)提供了一个解决此类问题框架3。引入变量 d d d,将问题(3)化为ADMM的一般形式

min ⁡ u 1 2 ∣ ∣ u − x ∣ ∣ 2 2 + λ ∣ ∣ d ∣ ∣ 1 s . t . D x − d = 0 (4) \min_u \frac12 ||u-x||^2_2+\lambda||d||_1 \ \ s.t.\ \ Dx-d=0\tag{4} umin21∣∣ux22+λ∣∣d1  s.t.  Dxd=0(4)

利用增广拉格朗日法引入凸松弛同时去除约束条件,有

L ( u , d , μ ) = 1 2 ∣ ∣ u − x ∣ ∣ 2 2 + λ ∣ ∣ d ∣ ∣ 1 + μ T ( D u − d ) + δ 2 ∣ ∣ D u − d ∣ ∣ 2 2 (5) L(u,d,\mu)=\frac12 ||u-x||^2_2+\lambda||d||_1+\mu^T(Du-d)+\frac \delta 2||Du-d||^2_2\tag{5} L(u,d,μ)=21∣∣ux22+λ∣∣d1+μT(Dud)+2δ∣∣Dud22(5)

其中 μ \mu μ为拉格朗日乘子, δ > 0 \delta>0 δ>0为拉格朗日惩罚项。为了更简洁表达,可做如下替换:

L ( u , d , μ ) = 1 2 ∣ ∣ u − x ∣ ∣ 2 2 + λ ∣ ∣ d ∣ ∣ 1 + δ 2 ∣ ∣ D u − d + p ∣ ∣ 2 2 − δ 2 ∣ ∣ p ∣ ∣ 2 2 (6) L(u,d,\mu)=\frac12 ||u-x||^2_2+\lambda||d||_1+\frac \delta 2||Du-d+p||^2_2-\frac \delta 2||p||_2^2\tag{6} L(u,d,μ)=21∣∣ux22+λ∣∣d1+2δ∣∣Dud+p222δ∣∣p22(6)

其中 p = μ / δ p=\mu / \delta p=μ/δ。利用ADMM,问题(6)的求解可通过求解以下三个问题进行实现:

u n + 1 = a r g min ⁡ u 1 2 ∣ ∣ u − x ∣ ∣ 2 2 + δ 2 ∣ ∣ D u − d n + p n ∣ ∣ 2 2 (7) u_{n+1}=arg\,\min_u\ \frac12 ||u-x||^2_2+\frac \delta 2||Du-d_n+p_n||^2_2\tag{7} un+1=argumin 21∣∣ux22+2δ∣∣Dudn+pn22(7)

d n + 1 = a r g min ⁡ u λ ∣ ∣ d ∣ ∣ 1 + δ 2 ∣ ∣ D u n − d + p n ∣ ∣ 2 2 (8) d_{n+1}=arg\,\min_u\ \lambda||d||_1+\frac \delta 2||Du_n-d+p_n||^2_2\tag{8} dn+1=argumin λ∣∣d1+2δ∣∣Dund+pn22(8)

p n + 1 = p n + ( D u n + 1 − d n + 1 ) (9) p_{n+1}=p_n+(Du_{n+1}-d_{n+1})\tag{9} pn+1=pn+(Dun+1dn+1)(9)

2. 仿真结果


测试图像采用的是house,对其添加高斯噪声,将加噪后的图像输入到去噪算法
在这里插入图片描述
从仿真结果可以看到,去噪后的图像上的高斯噪声被抑制了,图像变得更加平滑了,图像边缘得到增强。然而,图像原本的细节也丢失了。

3. MATLAB算法


x=double(imread('house.bmp'));
x_n=x+10*randn(size(x));
x_r=ADMM_TVdenoise(x_n,25,10,100);
figure;
subplot(131);
imshow(uint8(x));
title('原始图像');
subplot(132);
imshow(uint8(x_n));
title('加噪图像');
subplot(133);
imshow(uint8(x_r));
title('去噪图像');
function xp=ADMM_TVdenoise(x,delta,lambda,iteratMax)[N,~]=size(x);x=reshape(x,N*N,1);[Dh,Dv]=TVOperatorGen(N);D=sparse([Dh',Dv']');d=D*x;p=ones(2*N*N,1)/delta;IdelDD=inv((eye(N*N)+delta*(D'*D)));for ii=1:iteratMaxu=IdelDD*(x+delta*D'*(d-p));d=wthresh(D*u+p,'s',lambda/delta);p=p+D*u-d;endxp=reshape(u,N,N);
end
function [Dh,Dv]=TVOperatorGen(n)Dh=-eye(n^2)+diag(ones(1,n^2-1),1);Dh(n:n:n^2,:)=0;Dv=-eye(n^2)+diag(ones(1,n^2-n),n);Dv(n*(n-1)+1:n^2,:)=0;
end

4. 源码地址


https://github.com/dwgan/ADMM_TV_denoise

参考文献


  1. Rudin, Leonid I., Stanley Osher, and Emad Fatemi. “Nonlinear total variation based noise removal algorithms.” Physica D: nonlinear phenomena 60.1-4 (1992): 259-268. ↩︎

  2. Boyd, Stephen, et al. “Distributed optimization and statistical learning via the alternating direction method of multipliers.” Foundations and Trends® in Machine learning 3.1 (2011): 1-122. ↩︎

  3. https://zhuanlan.zhihu.com/p/448289351 ↩︎


http://www.ppmy.cn/news/101964.html

相关文章

C++ constexpr使用理解记录

最近看项目代码,一个constexpr让我的修改总是无法编译,在公司没静下心来看,想起来我还有个csdn,遂在此记录。 1. constexpr在约束什么? rule1: 直接印象就是表达式可以在编译时被确定。 rule2: 蕴含了顶层const&…

数据库 对应的开发语言 mysql PostgreSQL TiDB clickhouse

各数据库及对应开发语言 MySQLC,CPostgreSQLCClickHouseCTiDBsql层用go,存储层用rustOracle内核用C MySQL 最初用 C 实现,现在主要使用 C 实现, PostgreSQL 一直使用 C实现。 ClickHouse使用C实现。 TiDB整个项目分为两层&…

Flutter调优--深入探究MediaQuery引起界面Rebuild的原因及解决办法 | 京东云技术团队

前言 我们可以通过MediaQuery.of(context)方法获取到一些设备和系统的相关信息,比如状态栏的高度、当前是否是黑暗模式等等,使用起来相当方便,但是也要注意可能引起的页面rebuild问题。本文会介绍一个典型的例子,并深入源码来探讨…

ADC子系統參數設計

需求描述: 輸入信號10~50Hz要求準確測量頻率和有效值要求能夠測量到至少150倍基準頻率信號FFT的運算能力首先,有效數據空間可能只有400Bytes。所有的測量值需要達到百分之一的測量精度。 參數演算: 始終記得,你不需要畫蛇添足&…

An illegal reflective access operation has occurred警告

问题描述 今天 在 install Maven项目的时候,控制台出现警告如下: WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/E:/DevelopmentKit/Maven/…

年度发布 | MeterSphere一站式开源持续测试平台发布v2.10 LTS版本

2023年5月25日,MeterSphere一站式开源持续测试平台正式发布v2.10 LTS版本。这是继2022年5月发布v1.20 LTS版本后,MeterSphere开源项目发布的第三个LTS(Long Term Support)版本。MeterSphere开源项目组将对MeterSphere v2.10 LTS版…

程序员大战黄牛党,破解演唱会门票秒光之困

反黄牛,为何是场持久战? 撰文 | 林秋艺 编辑 | 龚 正 这个五月,似乎都被五月天霸屏了。从5月9日的30万张五月天演唱会门票被5秒扫光;到粉丝群起反抗,喊出“宁可鸟巢门口站,也不能让黄牛赚”,…

java ThreadLocal

private ThreadLocal threadLocal new ThreadLocal(); threadLocal.set(0); (int) threadLocal.get(); 上面三行代码分别是定义、赋值和取值。 介绍: 我们只需要实例化对象一次,并且也不需要知道它是被哪个线程实例化。虽然所有的线程都能访问到这个T…