【图像重建】基于布雷格曼迭代(bregman alteration)算法集合ART算法实现CT图像重建附matlab代码
1 簡介
Fluorescence diffuse optical tomography (fDOT) is a noninvasive imaging technique that makes it possible to quantify the spatial distribution of fluorescent tracers in small animals. fDOT image reconstruction is commonly performed by means of iterative methods such as the algebraic reconstruction technique (ART). The useful results yielded by more advanced l1-regularized techniques for signal recovery and image reconstruction, together with the recent publication of Split Bregman (SB) procedure, led us to propose a new approach to the fDOT inverse problem, namely, ART-SB. This method alternates a cost-efficient reconstruction step (ART iteration) with a denoising filtering step based on minimization of total variation of the image using the SB method, which can be solved efficiently and quickly. We applied this method to simulated and experimental fDOT data and found that ART-SB provides substantial benefits over conventional ART.?
2 部分代碼
% Demo_ART_SB_Reconstruction.m% % Demo for a novel iterative reconstruction method that alternates a% computationally efficient linear solver (ART) with a fast denoising step% based on the Split Bregman formulation and that is used to reconstruct% fluorescence diffuse optical tomography data, as in the paper J% Chamorro-Servent, J F P J Abascal, J Aguirre, S Arridge, T Correia, J% Ripoll, M Desco, J J Vaquero. Use of Split Bregman denoising for% iterative reconstruction in fluorescence diffuse optical tomography. J% Biomed Opt, 18(7):076016, 2013. http://dx.doi.org/10.1117/1.JBO.18.7.076016 % % This work proposes to combine computationally efficient solver and% denoising steps with the potential to handle large scale problems in a% fast an efficient manner. Here we combine Algebraic Reconstruction% Technique (ART) and Split Bregman denoising but these methods can be% substituted by the method of choice. %% Our particular choices are explained as follows: % ART has been widely used in tomography to handle large data sets, as% it can work with one data point (projection) at a time. % % The Split Bregman formulation allows to solve the total variation% denoising problem in a fast and computationally efficient way. At each% iteration the solution is given by analytical formulas. A linear system % can be solved in the Fourier domain, keeping the size of the problem (the% Hessian) equal to the number of voxels in the image, or by using% Gauss-Seidel method, which exploits the block diagonal structure of the% Hessian. %% In this demo we solve the image reconstruction problem of fuorescence% diffuse optical tomography but it can be applied to other imaging% modalities. %% % If you use this code, please cite Chamorro-Servent et al. Use of Split% Bregman denoising for iterative reconstruction in fluorescence diffuse% optical tomography. J Biomed Opt, 18(7):076016, 2013.% http://dx.doi.org/10.1117/1.JBO.18.7.076016 %% Judit Chamorro-Servent, Juan FPJ Abascal, Juan Aguirre% Departamento de Bioingenieria e Ingenieria Aeroespacial% Universidad Carlos III de Madrid, Madrid, Spain% juchamser@gmail.com, juanabascal78@gmail.com, desco@hggm.es % READ SIMULATED DATA % Load data, Jacobian matrix and target imageload('DataRed','data','JacMatrix','uTarget');%% Replace the previous line by the following for a larger matrix size% load('Data','data','JacMatrix','uTarget');% but it requires to download data set from the following link: % https://www.dropbox.com/s/461ub2ps0ur8uvd/Data.mat?dl=0% Actually the reduced Jacobian matrix (from DataRed), 700x4000, has been% obtained from a larger matrix (from Data), 6561x4000, by random selection% of rows, providing similar results! [nr nc] = size(JacMatrix);% Display target image in the discretized domainN = [20 20 10]; x = linspace(-10,10,N(1));y = linspace(-10,10,N(2));z = linspace(0,10,N(3));[X,Y,Z] = meshgrid(x,y,z);% Uncomment below to get a plot of all slices% h = Plot2DMapsGridSolution(reshape(uTarget,N),X,Y,Z,3); colorbar;?rand('seed',0);% Add Gaussian noisedata = data + 0.01*max(data)*randn(length(data),1);% Randomized index of Jacobian rows for ART reconstruction% indRand = randperm(length(data));% indRand = 1:nr; % Uncomment to remove randomized index% -------------------------------------------------------------------------% ART%% It requires selecting few parameters: % numIterART = number of iterations. The more iterations the better fit% of the data (in this case it converges in 30 iterations) % relaxParam = relaxation parameter (between 0 and 1). Choose 0.1 to% remove noise and 0.9 to get a closer fit of the datanumIterART = 30; % relaxParam = 0.1;u0 = zeros(nc,1);?fprintf('Solving ART reconstruction ... (it takes around 1 s)\n');tic; % uART = ARTReconstruction(JacMatrix,data,relaxParam,numIterART,u0); % The following version runs 3-4 times faster; must try with larger% matrices to assess the differenceuART = ARTReconstruction_Fast(JacMatrix,data,relaxParam,numIterART,u0); tocuART = reshape(uART,N);% h = Plot2DMapsGridSolution(uART,X,Y,Z,3); colorbar; % -------------------------------------------------------------------------% ART-SB %% It requres selecting the following paramters for ART and Split Bregman % denoising: % ART (see previous section). Here we provide high relaxation for a% better fit of the data, as noise will be removed in the denoising step) %% SPLIT BREGMAN DENOISING:% Split Bregman parameters (mu, lambda, alpha) allow to tune the algorithm% if needed but it is generally quite robust and selecting all parameters% to 1 (or as suggested in the paper) works fine. Then, the only parameters% that need to be chosen are the number of iterations %% mu = weight of the fidelity term. (Generally 0.1 to 1 works fine;% see the paper for more details). The larger the more weight to the% noisy image% lamdba = weight of the functionals that impose TV constraints. The% larger the higher the regularization. (Usually chosen larger than mu and% any value around 1 works fine) % alpha = the weight of the functional that imposes TV sparsity% (L1-norm). No need to tune this parameter, value 1 should work% nInner = Number of inner iterations that impose TV constraints. The% higher the number of iterations the more is imposed the TV constraint% nOuter = Number of outer iterations that impose data fidelity% constraint. Choose this larger than 1 (2 works fine), as TV may provide% an output image with lower constrast and the Bregman iteration can% correct for that. numIter = 30;numIterART = 10; relaxParam = 0.9;uARTSB = zeros(N);mu = 0.3;lambda = 2*mu;alpha = 1;nInner = 5;nOuter = 2; % indRand = randperm(length(data));fprintf('Solving ART-SB reconstruction ... (it takes around 12 s)\n');h = waitbar(0,'Solving ART-SB reconstruction') ;ticfor it = 1:numIter % ART reconstruction step: Iterative linear solver sol = ARTReconstruction_Fast(JacMatrix,data,relaxParam,numIterART,uARTSB(:)); %sol = ARTReconstruction(JacMatrix,data,relaxParam,numIterART,uARTSB(:)); solGrid = reshape(sol,N); ? % SB denoising step uARTSB = TV_SB_denoising_3D(solGrid,mu,lambda,alpha,nInner,nOuter); % Uncomment below to do 2D slice-by-slice smoothing instead. It takes % similar time but it could be parallelized, which can be faster in some % applications for large scale problems (now SB denoising takes less % than a second), by changing the for to a parfor loop % for iz = 1:N(3)% uARTSB(:,:,iz) = TV_SB_denoising_2D(solGrid(:,:,iz),mu,lambda,nInner,nOuter);% end? % Compute solution error norm err(it) = norm(uARTSB(:)-uTarget(:))/norm(uTarget(:)); waitbar(it/numIter);end % ittocclose(h);% Display resultsfigure; plot(err); ylabel('Solution error'); xlabel('Number of iterations');title('Convergence of ART-SB');% Target imagePlot2DMapsGridSolution(reshape(uTarget,N),X,Y,Z,3); set(gcf,'name','TARGET','numbertitle','off'); colormap gray;% Reconstructed images0Plot2DMapsGridSolution(uART,X,Y,Z,3); set(gcf,'name','ART reconstruction','numbertitle','off') colormap gray;?Plot2DMapsGridSolution(uARTSB,X,Y,Z,3); set(gcf,'name','ART-SB reconstruction','numbertitle','off') colormap gray; % ------------------------------------------------------------------------- %?3 仿真結(jié)果
4 參考文獻
[1]馬敏, 王濤, 范廣永. 基于分割Bregman迭代的內(nèi)-外置電極電容層析成像[J]. 科學(xué)技術(shù)與工程, 2018, 018(032):212-216.
[2] Chamorro-Servent J ,? Abascal J F ,? Aguirre J , et al. Use of Split Bregman denoising for iterative reconstruction in fluorescence diffuse optical tomography[J]. Journal of Biomedical Optics, 2013, 18.
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測、信號處理、元胞自動機、圖像處理、路徑規(guī)劃、無人機等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻,若有侵權(quán)聯(lián)系博主刪除。
總結(jié)
以上是生活随笔為你收集整理的【图像重建】基于布雷格曼迭代(bregman alteration)算法集合ART算法实现CT图像重建附matlab代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: glyphicon 字体在 bootst
- 下一篇: URL长链接转短链接