【图像重建】基于布雷格曼迭代(bregman alteration)算法集合ART算法实现CT图像重建附matlab代码

简介: 【图像重建】基于布雷格曼迭代(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 仿真结果

4 参考文献

[1]马敏, 王涛, 范广永. 基于分割Bregman迭代的内-外置电极电容层析成像[J]. 科学技术与工程, 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.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。


相关文章
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
212 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
3月前
|
资源调度 算法
基于迭代扩展卡尔曼滤波算法的倒立摆控制系统matlab仿真
本课题研究基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,并对比UKF、EKF、迭代UKF和迭代EKF的控制效果。倒立摆作为典型的非线性系统,适用于评估不同滤波方法的性能。UKF采用无迹变换逼近非线性函数,避免了EKF中的截断误差;EKF则通过泰勒级数展开近似非线性函数;迭代EKF和迭代UKF通过多次迭代提高状态估计精度。系统使用MATLAB 2022a进行仿真和分析,结果显示UKF和迭代UKF在非线性强的系统中表现更佳,但计算复杂度较高;EKF和迭代EKF则更适合维数较高或计算受限的场景。
|
4月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
135 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
4月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
96 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
7月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
7月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
7月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
7月前
|
供应链 算法
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
|
7月前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)