稀疏感知图像和体数据恢复的系统对象研究(Matlab代码实现)

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

稀疏感知图像和体数据恢复是一种用于恢复损坏、噪声或不完整的图像和体数据的技术。它利用了信号的稀疏性,即信号在某种基础下可以用较少的非零系数表示,从而实现高质量的恢复。

在进行稀疏感知图像和体数据恢复的研究时,需要定义一些系统对象。这些对象描述了系统中的各个组成部分和它们之间的关系,有助于实现恢复算法的设计和实现。

系统对象的定义包括以下几个方面:

1. 输入数据对象:这个对象描述了输入的损坏、噪声或不完整的图像或体数据。它可以是一个图像矩阵、一个体数据的三维数组或其他适当的数据结构。

2. 稀疏表示对象:这个对象描述了信号的稀疏表示。它可以是一个稀疏矩阵、一个稀疏系数向量或其他适当的数据结构。稀疏表示对象是恢复算法的关键部分,它通过选择适当的基础和优化方法来实现信号的稀疏表示。

3. 恢复算法对象:这个对象描述了用于恢复稀疏感知图像和体数据的算法。它可以是一个迭代算法、一个优化算法或其他适当的算法。恢复算法对象通常包括对输入数据对象和稀疏表示对象的处理步骤,以及对恢复结果的评估和优化步骤。

4. 输出数据对象:这个对象描述了恢复后的图像或体数据。它可以是一个恢复后的图像矩阵、一个恢复后的体数据的三维数组或其他适当的数据结构。

通过定义这些系统对象,研究人员可以更好地理解稀疏感知图像和体数据恢复的过程,并设计出高效、准确的恢复算法。这些系统对象的定义还可以为稀疏感知图像和体数据恢复的实际应用提供指导,例如医学图像处理、计算机视觉和图像压缩等领域。

📚2 运行结果

 

 部分代码:

%% Create a step monitor system object
% ISTA iteratively approaches to the optimum solution. In order to 
% observe the intermediate results, the following class can be used:
%
% * saivdr.utility.StepMonitoringSystem% Parameters for StepMonitoringSystem
isverbose = true;  % Verbose mode
isvisible = true;  % Monitor intermediate results
hfig2 = figure(2); % Figure to show the source, observed and result image 
hfig2.Name = 'ISTA-based Image Restoration';% Instantiation of StepMonitoringSystem
import saivdr.utility.StepMonitoringSystem
stepmonitor = StepMonitoringSystem(...'DataType', 'Image',...'SourceImage',   orgImg,...    % Original image'ObservedImage', obsImg,...    % Observed image'IsMSE',         false,...     % Switch for MSE  evaluation'IsPSNR',        true,...      % Switch for PSNR evaluation'IsSSIM',        false,...     % Switch for SSIM evaluation'IsVerbose',     isverbose,... % Switch for verbose mode'IsVisible',     isvisible,... % Switch for display intermediate result'ImageFigureHandle',hfig2);    % Figure handle% Set the object to the ISTA system object
ista.StepMonitor = stepmonitor;%% Perform ISTA-based image restoration
% STEP method of IstaImRestoration system object, _ista_ , executes 
% the ISTA-based image restoration to deblur the observed image.
% As the result, a restored image 
%
% $\hat{\mathbf{u}} = \mathbf{D}\hat{\mathbf{y}}$
%
% is obtained.fprintf('\n ISTA')
resImg = ista.step(obsImg); % STEP method of IstaImRestoration%% Extract the final evaluation  
% The object of StepMonitoringSystem, _stepmonitor_ , stores the 
% evaluation values calculated iteratively in ISTA as a vector. The GET 
% method of _stepmonitor_  can be used to extract the number of iterations
% and the sequence of PSNRs. nItr  = stepmonitor.nItr;
psnrs = stepmonitor.PSNRs;
psnr_ista = psnrs(nItr);%% Perform Wiener filtering
% As a reference, let us show a result of Wiener filter.% Create a step monitor system object for the PSNR evaluation
stepmonitor = StepMonitoringSystem(...'SourceImage',orgImg,...'MaxIter', 1,...'IsMSE',  false,...'IsPSNR', true,...'IsSSIM', false,...'IsVisible', false,...'IsVerbose', isverbose);% Use the same blur kernel as that applied to the observed image, obsImg
blurKernel = blur.BlurKernel;% Estimation of noise to signal ratio
nsr = noise_var/var(orgImg(:));% Wiener filter deconvolution of Image Processing Toolbox
wnfImg = deconvwnr(obsImg, blurKernel, nsr);% Evaluation
fprintf('\n Wiener')
psnr_wfdc = stepmonitor.step(wnfImg); % STEP method of StepMonitoringSystem%% Compare deblurring performances
% In order to compare the deblurring performances between two methods,
% ISTA-based deblurring with NSOLT and Wiener filter, let us show 
% the original, observed and two results in one figure together.hfig3 = figure(3);% Original image x
subplot(2,2,1)
imshow(orgImg)
title('Original image {\bf u}')% Observed image u
subplot(2,2,2)
imshow(obsImg)
title('Observed image {\bf x}')% Result u^ of ISTA 
subplot(2,2,3)
imshow(resImg)
title(['{\bf u}\^ by ISTA  : ' num2str(psnr_ista) ' [dB]'])% Result u^ of Wiener filter
subplot(2,2,4)
imshow(wnfImg)
title(['{\bf u}\^ by Wiener: ' num2str(psnr_wfdc) ' [dB]'])

%% Create a step monitor system object
% ISTA iteratively approaches to the optimum solution. In order to 
% observe the intermediate results, the following class can be used:
%
% * saivdr.utility.StepMonitoringSystem

% Parameters for StepMonitoringSystem
isverbose = true;  % Verbose mode
isvisible = true;  % Monitor intermediate results
hfig2 = figure(2); % Figure to show the source, observed and result image 
hfig2.Name = 'ISTA-based Image Restoration';

% Instantiation of StepMonitoringSystem
import saivdr.utility.StepMonitoringSystem
stepmonitor = StepMonitoringSystem(...
    'DataType', 'Image',...
    'SourceImage',   orgImg,...    % Original image
    'ObservedImage', obsImg,...    % Observed image
    'IsMSE',         false,...     % Switch for MSE  evaluation
    'IsPSNR',        true,...      % Switch for PSNR evaluation
    'IsSSIM',        false,...     % Switch for SSIM evaluation
    'IsVerbose',     isverbose,... % Switch for verbose mode
    'IsVisible',     isvisible,... % Switch for display intermediate result
    'ImageFigureHandle',hfig2);    % Figure handle
    
% Set the object to the ISTA system object
ista.StepMonitor = stepmonitor;

%% Perform ISTA-based image restoration
% STEP method of IstaImRestoration system object, _ista_ , executes 
% the ISTA-based image restoration to deblur the observed image.
% As the result, a restored image 
%
% $\hat{\mathbf{u}} = \mathbf{D}\hat{\mathbf{y}}$
%
% is obtained.

fprintf('\n ISTA')
resImg = ista.step(obsImg); % STEP method of IstaImRestoration

%% Extract the final evaluation  
% The object of StepMonitoringSystem, _stepmonitor_ , stores the 
% evaluation values calculated iteratively in ISTA as a vector. The GET 
% method of _stepmonitor_  can be used to extract the number of iterations
% and the sequence of PSNRs. 

nItr  = stepmonitor.nItr;
psnrs = stepmonitor.PSNRs;
psnr_ista = psnrs(nItr);

%% Perform Wiener filtering
% As a reference, let us show a result of Wiener filter.

% Create a step monitor system object for the PSNR evaluation
stepmonitor = StepMonitoringSystem(...
    'SourceImage',orgImg,...
    'MaxIter', 1,...
    'IsMSE',  false,...
    'IsPSNR', true,...
    'IsSSIM', false,...
    'IsVisible', false,...
    'IsVerbose', isverbose);

% Use the same blur kernel as that applied to the observed image, obsImg
blurKernel = blur.BlurKernel;

% Estimation of noise to signal ratio
nsr = noise_var/var(orgImg(:));

% Wiener filter deconvolution of Image Processing Toolbox
wnfImg = deconvwnr(obsImg, blurKernel, nsr);

% Evaluation
fprintf('\n Wiener')
psnr_wfdc = stepmonitor.step(wnfImg); % STEP method of StepMonitoringSystem

%% Compare deblurring performances
% In order to compare the deblurring performances between two methods,
% ISTA-based deblurring with NSOLT and Wiener filter, let us show 
% the original, observed and two results in one figure together.

hfig3 = figure(3);

% Original image x
subplot(2,2,1)
imshow(orgImg)
title('Original image {\bf u}')

% Observed image u
subplot(2,2,2)
imshow(obsImg)
title('Observed image {\bf x}')

% Result u^ of ISTA 
subplot(2,2,3)
imshow(resImg)
title(['{\bf u}\^ by ISTA  : ' num2str(psnr_ista) ' [dB]'])

% Result u^ of Wiener filter
subplot(2,2,4)
imshow(wnfImg)
title(['{\bf u}\^ by Wiener: ' num2str(psnr_wfdc) ' [dB]'])

🎉3 参考文献

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

[1]薛明.压缩感知及稀疏性分解在图像复原中的应用研究[D].西安电子科技大学,2011.DOI:CNKI:CDMD:2.2010.083018.

  • uiki Kobayashi, Shogo Muramatsu, Shunsuke Ono, "Proximal Gradient-Based Loop Unrolling with Interscale Thresholding," Proc. Assoc. Annual Summit and Conf. (APSIPA ASC), Dec. 2021

  • Genki Fujii, Yuta Yoshida, Shogo Muramatsu, Shunsuke Ono, Samuel Choi, Takeru Ota, Fumiaki Nin, Hiroshi Hibino, "OCT Volumetric Data Restoration with Latent Distribution of Refractive Index," Proc. of 2019 IEEE International Conference on Image Processing (ICIP), pp.764-768, Sept. 2019

  • Yuhei Kaneko, Shogo Muramatsu, Hiroyasu Yasuda, Kiyoshi Hayasaka, Yu Otake, Shunsuke Ono, Masahiro Yukawa, "Convolutional-Sparse-Coded Dynamic Mode Decompsition and Its Application to River State Estimation," Proc. of 2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), pp.1872-1876, May 2019

  • Shogo Muramatsu, Samuel Choi, Shunske Ono, Takeru Ota, Fumiaki Nin, Hiroshi Hibino, "OCT Volumetric Data Restoration via Primal-Dual Plug-and-Play Method," Proc. of 2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), pp.801-805, Apr. 2018

  • Shogo Muramatsu, Kosuke Furuya and Naotaka Yuki, "Multidimensional Nonseparable Oversampled Lapped Transforms: Theory and Design," IEEE Trans. on Signal Process., Vol.65, No.5, pp.1251-1264, DOI:10.1109/TSP.2016.2633240, March 2017

  • Kota Horiuchi and Shogo Muramatsu, "Fast convolution technique for Non-separable Oversampled Lapped Transforms," Proc. of Asia Pacific Signal and Information Proc. Assoc. Annual Summit and Conf. (APSIPA ASC), Dec. 2016

  • Shogo Muramatsu, Masaki Ishii and Zhiyu Chen, "Efficient Parameter Optimization for Example-Based Design of Non-separable Oversampled Lapped Transform," Proc. of 2016 IEEE Intl. Conf. on Image Process. (ICIP), pp.3618-3622, Sept. 2016

  • Shogo Muramatsu, "Structured Dictionary Learning with 2-D Non-separable Oversampled Lapped Transform," Proc. of 2014 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), pp.2643-2647, May 2014

  • Kousuke Furuya, Shintaro Hara and Shogo Muramatsu, "Boundary Operation of 2-D non-separable Oversampled Lapped Transforms," Proc. of Asia Pacific Signal and Information Proc. Assoc. Annual Summit and Conf. (APSIPA ASC), Nov. 2013

  • Shogo Muramatsu and Natsuki Aizawa, "Image Restoration with 2-D Non-separable Oversampled Lapped Transforms," Proc. of 2013 IEEE International Conference on Image Process. (ICIP), pp.1051-1055, Sep. 2013

  • Shogo Muramatsu and Natsuki Aizawa, "Lattice Structures for 2-D Non-separable Oversampled Lapped Transforms," Proc. of 2013 IEEE International Conference on Acoustics, Speech and Signal Process. (ICASSP), pp.5632-5636, May 2013

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/89567.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARMday2

.text .global _start _start:mov r0,#0x1mov r1,#0x0sum:cmp r0,#0x64bhi stopaddls r1,r1,r0addls r0,r0,#0x1bls sumstop:b stop .end

背上大书包准备面试之CSS篇

目录 H5 新特性 css3新特性? 为什么要初始化css样式? 浏览器兼容性问题? css sprites(css精灵图)? css盒模型是什么样的? 页面中一个块元素的宽度包含了盒模型中的哪些部分?…

Unity2D RPG开发笔记 P1 - Unity界面基础操作和知识

文章目录 工具选择简单快捷键Game 窗口分辨率检视器Transform 组件Sprite Renderer综合检视器 工具选择 按下 QWERTY 可以选择不同的工具进行 旋转、定位、缩放 简单快捷键 按下 Ctrl D 可以复制物体 Game 窗口分辨率 16:9 为最常见的分辨率 检视器 Transform 组件 物体在…

go内存管理机制

golang内存管理基本是参考tcmalloc来进行的。go内存管理本质上是一个内存池,只不过内部做了很多优化:自动伸缩内存池大小,合理切割内存块。 基本概念: Page:页,一块 8 K大小的内存空间。Go向操作系统申请和…

分布式 - 服务器Nginx:一小时入门系列之HTTP反向代理

文章目录 1. 正向代理和反向代理2. 配置代理服务3. proxy_pass 命令解析4. 设置代理请求headers 1. 正向代理和反向代理 正向代理是客户端通过代理服务器访问互联网资源的方式。在这种情况下,客户端向代理服务器发送请求,代理服务器再向互联网上的服务器…

stm32项目(8)——基于stm32的智能家居设计

目录 一.功能设计 二.演示视频 三.硬件选择 1.单片机 2.红外遥控 3.红外探测模块 4.光敏电阻模块 5.温湿度检测模块 6.风扇模块 7.舵机 8.WIFI模块 9.LED和蜂鸣器 10.火焰传感器 11.气体传感器 四.程序设计 1.连线方式 2.注意事项 3.主程序代码 五.课题意义…

zabbix监控mysql数据库、nginx、Tomcat

文章目录 zabbix监控mysql数据库、nginx、Tomcat一.zabbix监控mysql数据库1.环境规划2.zabbix-server安装部署(192.168.198.17)3.zabbix-mysql安装部署(192.168.198.15)3.1 部署 zabbix 客户端3.2 服务端验证 zabbix-agent2 的连通…

【JavaWeb】MySQL基础操作

1 通用语法规则 SQL语句可以单行或者多行书写,以分号结尾SQL语句不区分大小写,关键字建议使用大写单行注释 --注释内容(通用) # 注释内容(MySQL独有)多行注释 /* 注释内容 */ 2 语句 数据库 -- 查…

前后端分离------后端创建笔记(03)前后端对接(下)

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…

新增守护进程管理、支持添加MySQL远程数据库,支持PHP版本切换,1Panel开源面板v1.5.0发布

2023年8月14日,现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.5.0版本。 在这个版本中,1Panel新增了守护进程管理功能;支持添加MySQL远程数据库;支持添加FTP/S和WebDAV的SFTP服务;支持PHP版本切换。此外&am…

测试架构师如何落地性能测试方案(一)

背景描述: 最近刚接手一个新项目,在最开始的时候要求对这个项目做性能测试,产品经理也给不出性能需求,只因为这个项目是电商项目,可能会有高并发,秒杀的场景,所以产品经理要求我们对这个项目必…

深入浅出 栈和队列(附加循环队列、双端队列)

栈和队列 一、栈 概念与特性二、Stack 集合类及模拟实现1、Java集合中的 Stack2、Stack 模拟实现 三、栈、虚拟机栈、栈帧有什么区别?四、队列 概念与特性五、Queue集合类及模拟实现1、Queue的底层结构(1)顺序结构(2)链…

echarts3d柱状图

//画立方体三个面 const CubeLeft echarts.graphic.extendShape({shape: {x: 0,y: 0,width: 9.5, //柱状图宽zWidth: 4, //阴影折角宽zHeight: 3, //阴影折角高},buildPath: function (ctx, shape) {const api shape.api;const xAxisPoint api.coord([shape.xValue, 0]);con…

c++ 有元

友元分为两部分内容 友元函数友元类 友元函数 问题&#xff1a;当我们尝试去重载operator<<&#xff0c;然后发现没办法将operator<<重载成成员函数。因为cout的输出流对象和隐含的this指针在抢占第一个参数的位置。this指针默认是第一个参数也就是左操作 数了。…

AutoDL服务器的镜像版本太高,配置python3.7 tensorflow1.15版本的框架的步骤

1.选择一个实例&#xff0c;进入后端界面 2. 更新bashrc中的环境变量 conda init bash && source /root/.bashrc查看虚拟环境 conda info --envs可以看到此时有一个base的虚拟环境 但是它的python版本为3.8.10&#xff0c;无法安装tensorflow1.15,所以我们要创建一个…

基于Java+SpringBoot+Vue的网上图书商城设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

[保研/考研机试] KY85 二叉树 北京大学复试上机题 C++实现

题目链接&#xff1a; 二叉树https://www.nowcoder.com/share/jump/437195121692000296981 描述 如上所示&#xff0c;由正整数1&#xff0c;2&#xff0c;3……组成了一颗特殊二叉树。我们已知这个二叉树的最后一个结点是n。现在的问题是&#xff0c;结点m所在的子树中一共包…

k8s 自身原理 2

前面我们说到 K8S 的基本原理和涉及的四大组件&#xff0c;分享了前两个组件 etcd 和 ApiServer 这一次我们接着分享一波&#xff1a; 调度器 scheduler控制器管理器 controller manager 调度器 scheduler 调度器&#xff0c;见名知意&#xff0c;用于调度 k8s 资源的&…

cmake-ibmtpm1682编译

1、error Ossl library is using different radix 异常解决 RADIX_BITS由 64改成32 --whole-archive CMakeFiles\ibm-tpm-my.dir/objects.a -Wl, --no-whole-archive CMakeFiles\ibm-tpm-my.dir\linklibs.rsp CMake中的 --whole-archive以及–no-whole-archive两者都是编译器…

新能源汽车需要检测哪些项目

截至2022年底&#xff0c;中国新能源车保有量达1310万辆&#xff0c;其中纯电动汽车保有量1045万辆。为把好新能源汽车安全关&#xff0c;我国新能源汽车除了完善的强制性产品认证型式实验外&#xff0c;还建立了“车企-地方-国家”逐级上报的三级监管体系实行新能源汽车全生命…