稀疏感知圖像和體數據恢復的系統對象研究(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.pswp.cn/news/39719.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39719.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39719.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32 F103C8T6學習筆記6:IIC通信__驅動MPU6050 6軸運動處理組件—一階互補濾波

今日主要學習一款傾角傳感器——MPU6050,往后對單片機原理基礎講的會比較少,更傾向于簡單粗暴地貼代碼,因為經過前些日子對MSP432的學習,對原理方面也有些熟絡了,除了在新接觸它時會對其引腳、時鐘、總線等進行仔細一些的研究之外…

ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031)

安全之安全(security)博客目錄導讀 ATF(TF-A)安全通告匯總 目錄 一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031) 二、CVE-2017-15031 一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031) Title 未初始化或保存/恢復PMCR_EL0可能會泄露安全世界的時間信息 CVE ID CVE-2017-1503…

101.for循環語句練習題-求數列前n項的平方和

【目錄】 文章目錄 101.for循環語句練習題-求數列前n項的平方和1. 求數列前n項的平方和2. 冪函數3. f 字符串格式化語法4. 基礎代碼5. 自定義函數代碼6. 遞歸函數代碼7. 代碼總結 【正文】 101.for循環語句練習題-求數列前n項的平方和 1. 求數列前n項的平方和 【目標任務】 …

spark的standalone 分布式搭建

一、環境準備 集群環境hadoop11,hadoop12 ,hadoop13 安裝 zookeeper 和 HDFS 1、啟動zookeeper -- 啟動zookeeper(11,12,13都需要啟動) xcall.sh zkServer.sh start -- 或者 zk.sh start -- xcall.sh 和zk.sh都是自己寫的腳本-- 查看進程 jps -- 有…

C++中配置OpenCV的教程

首先去OpenCV的官網下載OpenCV安裝包,選擇合適的平臺和版本進行下載,我下載的是Windows的OpenCV-4.7.0版本。OpenCV下載地址 下載好后,解壓到自己指定的路徑。 配置環境變量: WinR鍵打開運行窗口,輸入sysdm.cpl打開系…

星星之火:國產訊飛星火大模型的實際使用體驗(與GPT對比)

#AIGC技術內容創作征文|全網尋找AI創作者,快來釋放你的創作潛能吧!# 文章目錄 1 前言2 測試詳情2.1 文案寫作2.2 知識寫作2.3 閱讀理解2.4 語意測試(重點關注)2.5 常識性測試(重點關注)2.6 代碼…

常識判斷

頭像 carrin~👻 產品經理 225/753 75/302.5 30/152 15/101.5 等差數列,所以最后一個是10/101 收起 60 回復 發布于 2020-02-18 16:33

Mysql之explain詳解

1. explain作用 使用explain可以展示出sql語句的執行計劃,再根據sql的執行計劃去判斷這條sql有哪些點可以進行優化,從而讓sql的效率達到最大化。 2. 執行計劃各列含義 (1)id:id列是select的序列號,這個…

React18TS項目:配置react-css-modules,使用styleName

他的好處不說了 網上一堆文章一個能打的都沒有, 添加開發依賴 pnpm add -D dr.pogodin/babel-plugin-react-css-modules types/react-css-modules Babel Plugin "React CSS Modules" | Dr. Pogodin Studio 看dr.pogodin/babel-plugin-react-css-mo…

centos7安裝erlang及rabbitMQ

下載前注意事項: 第一:自己的系統版本,centos中uname -a指令可以查看,el8,el7,rabbitMQ的包不一樣! 第二:根據rabbitMQ中erlang version找到想要下載rabbitMQ對應erlang版本&#x…

封裝、繼承、多態

封裝是什么? 封裝是面向對象的特征之一,是對象和類概念的主要特性。 封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。 封裝,是把客觀…

C++儲備

一、類的 三大特性 封裝,繼承,多態 二、虛函數 為啥要用到虛函數 C虛函數詳解_Whitesad_的博客-CSDN博客 三、函數重載 四、封裝的保護權限 1.public 成員類內,內外都可以訪問 2.protected 成員,類內可以訪問&#xff0c…

大牛分析相機鏡頭光學中疑難問題

1、變焦和對焦有什么區別? 變焦就是改變鏡頭的焦距(準確說是像距),以改變拍攝的視角,也就是通常所說的把被攝體拉近或推遠。例如18-55mm和70-200mm鏡頭就是典型的變焦鏡頭。焦距越長,視角越窄。 對焦通常指調整鏡片組和底片(傳感器平面)之間的距離,從而使被攝物在CC…

SElinux 導致 Keepalived 檢測腳本無法執行

哈嘍大家好,我是咸魚 今天我們來看一個關于 Keepalived 檢測腳本無法執行的問題 一位粉絲后臺私信我,說他部署的 keepalived 集群 vrrp_script 模塊中的腳本執行失敗了,但是手動執行這個腳本卻沒有任何問題 這個問題也是咸魚第一次遇到&…

《安富萊嵌入式周報》第320期:鍵盤敲擊聲解碼, 軍工級boot設計,開源CNC運動控制器,C語言設計筆記,開源GPS車輛跟蹤器,一鍵生成RTOS任務鏈表

周報匯總地址:嵌入式周報 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬漢嵌入式論壇 - Powered by Discuz! 視頻版: https://www.bilibili.com/video/BV1Cr4y1d7Mp/ 《安富萊嵌入式周報》第320期:鍵盤敲擊…

【智慧工地源碼】:人工智能、BIM技術、機器學習在智慧工地的應用

智慧工地云平臺是專為建筑施工領域所打造的一體化信息管理平臺。通過大數據、云計算、人工智能、BIM、物聯網和移動互聯網等高科技技術手段,將施工區域各系統數據匯總,建立可視化數字工地。同時,圍繞人、機、料、法、環等各方面關鍵因素&…

理解持續測試,才算理解DevOps

軟件產品的成功與否,在很大程度上取決于對市場需求的及時把控,采用DevOps可以加快產品交付速度,改善用戶體驗,從而有助于保持領先于競爭對手的優勢。 作為敏捷開發方法論的一種擴展,DevOps強調開發、測試和運維不同團…

centos如何安裝libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg

在 CentOS 系統上安裝這些包可以按照以下步驟進行: 打開終端,使用 root 或具有管理員權限的用戶登錄。 使用以下命令安裝 libssl-dev 包: yum install openssl-devel使用以下命令安裝 libsdl-dev 包: yum install SDL-devel使用以…

Go 安裝配置

介紹Ubuntu20.04 安裝和配置Go 1.安裝Go 去這個地方下載Go https://go.dev/doc/install 如果之前安裝過,可以參考這個(沒有可以忽略) 下載完成后執行 sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz 然后修改環境變量 sudo ge…

css3-grid:grid 布局 / 基礎使用

一、理解 grid 二、理解 css grid 布局 CSS Grid布局是一個二維的布局系統,它允許我們通過定義網格和網格中每個元素的位置和尺寸來進行頁面布局。CSS Grid是一個非常強大的布局系統,它不僅可以用于構建網格布局,還可以用于定位元素&#xf…