• 大小: 32.33MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-05
  • 语言: Matlab
  • 标签: matlab代码  分块  

资源简介

一篇Trans 2区上论文 基于图像块低秩性的修复matlab代码

资源截图

代码片段和文件信息

clc; clear all;

%% %%%%%%%%%%%%%%%%% k-t FOCUSS initialization %%%%%%%%%%%%%%%%%
% load k_space.mat
load(‘data\cardiac.mat‘);
Y           = ifft(DS_k[]2);
disp(‘kt-FOCUSS start: ‘)
% % function setting
A = @(xmask)  fft(x[]1).*mask;
AT = @(xmask) ifft(x.*mask[]1);
ATA = @(xmask) AT(A(xmask)mask);

% k-t FOCUSS parameters
[nYnXnT] = size(Y);
Mouter = 4;
Minner = 40;
factor = 0.5;
lambda_focuss = 0;
% % initialize by low resolution image
Low_resol_Y = Y;    Low_resol_Y(num_low_phase+1:end-num_low_phase::) = 0;

% % run ktFOCUSS
recon_focuss = KTFOCUSS(AATYLow_resol_Ymaskfactorlambda_focuss Minner Mouter);

save(‘result\Recon_ktFOCUSS.mat‘ ‘recon_focuss‘);

%% %%%%%%%%%%%%%%%%% NLMC and Patch-based low-rank reg. %%%%%%%%%%%%%%%%%

% % compile NLMC & Patch Low rank file
% mex NLMC_2Dt_complex.cpp
% mex PatchLowrankReg2Dt_complex.cpp;

% % load pre-reconstructed data by k-t FOCUSS
load(‘result\Recon_ktFOCUSS.mat‘ ‘recon_focuss‘); % load k-t FOCUSS recon data.
X     = recon_focuss;
alpha = 0.95; % relaxation parameter.

for OUTER = 1 : 10

% % NLMC

if OUTER == 1
            
    px = 8; % patch size of x
    py = 8; % patch size of y
    ws = 10; % window variation size px+ws*2 ...
    epsilon = 0.001;
    
    X_NL = zeros(size(X));
    
    for iframe = 1:nT
        [tmp_re tmp_im] = NLMC_2Dt_complex(single(real(X(::iframe)))single(imag(X(::iframe)))single(real(ref))single(imag(ref))nXnYpxpywsepsilon);
        X_NL(::iframe) = reshape(tmp_re + sqrt(-1)*tmp_imnXnY);
    end
         
    % % function setting
    A = @(xmask)  fft(x[]1).*mask;
    AT = @(xmask) ifft(x.*mask[]1);
    ATA = @(xmask) AT(A(xmask)mask);
    
    Mouter = 4;
    Minner = 40;
    factor = 0.5;
    lambda_focuss = 1;
    
    Low_resol_Y = Y-A(X_NLmask);
    Low_resol_Y(num_low_phase+1:end-num_low_phase::) = 0;
    
    X_res = KTFOCUSS(AATY-A(X_NLmask)Low_resol_Ymaskfactorlambda_focuss Minner Mouter);
    
    Recon_NLMC = X_NL;
    Recon_NLMC_res = X_res;
    
    save(‘result\Recon_NLMC.mat‘‘Recon_NLMC‘‘Recon_NLMC_res‘)

end


%%  patch based low rank regularization.
 
if OUTER == 1
    
    load (‘result\Recon_NLMC.mat‘)
    X = Recon_NLMC + Recon_NLMC_res;
else
    load([‘result\PL_outer‘int2str(OUTER-1)‘.mat‘]);
    X = Recon_PL;
    
end


disp(‘Patch based low rank reg. start:‘);

% % Patch based low rank calculation
px = 2; % patch size of x
py = 2; % patch size of y
nt = 2; % number of frames for patch-temporal matrix
np = 2; % warning! “: not exceed 10.
ws = 2; % window variation size px+ws*2 ...
mu = 0.005; % thresholding parameter
nu = 0.003; % thresholding parameter
X = PatchLowrank2Dt_c(Xwspxpyntnpmunu);


%%%%% simple inversion        
W = X; % W is patch-based low-rank processed image.
lambda_PL = 0.07;
X_sol2 = sqrt(nY)*ifft(1/sqrt(nY)*(Y+lambda_PL*fft(W[]1))./(lambda_PL+mask)[]1); % Refer the paper.


if OUTER == 1 
    
    Recon_PL = X_sol2;
    
else % Relaxation when outer

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-03-25 18:09  data\
     文件    33789695  2015-03-25 19:49  data\cardiac.mat
     文件         587  2013-10-23 15:30  KTFOCUSS.p
     文件        4082  2015-03-25 20:23  main_PatchLow.m
     文件       90604  2015-03-25 20:37  Manual for patch-based low-rank regularization.pdf
     文件        5001  2013-03-12 22:46  NLMC_2Dt_complex.cpp
     文件       11776  2015-03-25 18:34  NLMC_2Dt_complex.mexw64
     文件         703  2013-03-14 16:23  PatchLowrank2Dt_c.m
     文件       17231  2013-03-14 16:23  PatchLowrankReg2Dt_complex.cpp
     文件       18944  2013-03-14 16:23  PatchLowrankReg2Dt_complex.mexw32
     文件       22528  2015-03-25 14:22  PatchLowrankReg2Dt_complex.mexw64
     目录           0  2015-03-25 20:31  result\
     文件        1037  2015-03-25 13:59  run_PL.m

评论

共有 条评论