【图像恢复】基于交替乘子方法(ADMM)图像恢复算法研究[固定点收敛和应用](Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

****🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️**座右铭:**行百里者,半于九十。

📋📋📋++本文目录如下:++🎁🎁🎁

目录

[💥1 概述](#💥1 概述)

[📚2 运行结果](#📚2 运行结果)

[🎉3 参考文献](#🎉3 参考文献)

[🌈4 Matlab代码、数据、文献](#🌈4 Matlab代码、数据、文献)


💥1 概述

文献来源:

即插即用的ADMM图像恢复算法:固定点收敛和应用

交替方向乘子方法(ADMM)是一种广泛用于解决图像恢复中约束优化问题的算法。在许多有用的特性中,ADMM算法的一个关键特点是其模块化结构,允许将任何现成的图像去噪算法插入到ADMM算法的子问题中。由于其插件式的特性,这种类型的ADMM算法被称为"即插即用ADMM"。即插即用ADMM在最近的一些论文中展示了有希望的实证结果。然而,目前尚不清楚在什么条件下以及使用哪种去噪算法才能保证其收敛性。此外,由于即插即用ADMM使用了特定的变量分割方式,对于常见的高斯和泊松图像恢复问题是否可以进行快速实现也不清楚。本文提出了一种具有可证明的固定点收敛性的即插即用ADMM算法。我们证明了对于满足一种被称为有界去噪器的渐近准则的任何去噪算法,即插即用ADMM在连续方案下收敛到一个固定点。我们还针对超分辨率和单光子成像两个图像恢复问题提出了快速实现。我们将即插即用ADMM与各类最先进的算法进行了比较,并展示了算法的有希望的实验结果。

原文摘要:

Abstract:

Alternating direction method of multiplier (ADMM) is a widely used algorithm for solving constrained optimization problems in image restoration. Among many useful features, one critical feature of the ADMM algorithm is its modular structure, which allows one to plug in any off-the-shelf image denoising algorithm for a subproblem in the ADMM algorithm. Because of the plug-in nature, this type of ADMM algorithms is coined the name "Plug-and-Play ADMM." Plug-and-Play ADMM has demonstrated promising empirical results in a number of recent papers. However, it is unclear under what conditions and by using what denoising algorithms would it guarantee convergence. Also, since Plug-and-Play ADMM uses a specific way to split the variables, it is unclear if fast implementation can be made for common Gaussian and Poissonian image restoration problems. In this paper, we propose a Plug-and-Play ADMM algorithm with provable fixed-point convergence. We show that for any denoising algorithm satisfying an asymptotic criteria, called bounded denoisers, Plug-and-Play ADMM converges to a fixed point under a continuation scheme. We also present fast implementations for two image restoration problems on superresolution and single-photon imaging. We compare Plug-and-Play ADMM with state-of-the-art algorithms in each problem type and demonstrate promising experimental results of the algorithm.

📚 2 运行结果

部分代码:

%add path to denoisers

addpath(genpath('./denoisers/BM3D/'));

addpath(genpath('./denoisers/TV/'));

addpath(genpath('./denoisers/NLM/'));

addpath(genpath('./denoisers/RF/'));

%read test image

z = im2double(imread('./data/House256.png'));

%construct A matrix, deblurring as an example

dim = size(z);

h = fspecial('gaussian',[9 9],1);

A = @(z,trans_flag) afun(z,trans_flag,h,dim);

%reset random number generator

rng(0);

%set noies level

noise_level = 10/255;

%calculate observed image

y = A(z(:),'transp') + noise_level*randn(prod(dim),1);

y = proj(y,[0,1]);

y = reshape(y,dim);

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、数据、文献

相关推荐
重生之我在20年代敲代码36 分钟前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
爱上语文37 分钟前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
limingade3 小时前
手机实时提取SIM卡打电话的信令和声音-新的篇章(一、可行的方案探讨)
物联网·算法·智能手机·数据分析·信息与通信
编程零零七3 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
2401_858286114 小时前
52.【C语言】 字符函数和字符串函数(strcat函数)
c语言·开发语言
铁松溜达py4 小时前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
everyStudy4 小时前
JavaScript如何判断输入的是空格
开发语言·javascript·ecmascript
jiao000015 小时前
数据结构——队列
c语言·数据结构·算法
C-SDN花园GGbond5 小时前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法
迷迭所归处6 小时前
C++ —— 关于vector
开发语言·c++·算法