資源簡介
一篇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-ba
?????文件????????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
評論
共有 條評論