1 简介
ART算法是一个不断迭代的图像重建方法,提高该算法的重建速度一直是研究的重要方面.针对ART算法简化权因子重建模型,提出了一种快速网格遍历算法,通过简单的加减法和比较运算,即可确定射束穿过的网格编号.由于权因子在迭代过程中实时计算,节省了大量的存储空间,大大提高了ART算法的重建速度.实验结果表明本文提出的算法非常有效,与传统方法相比,重建速度提高了近10倍.
英文名称为Algebraic reconstruction technique:即代数重建算法
代数重建技术(ART)是一种用于计算机层析成像的迭代重建技术。它从一系列的角度投影(正弦图)中重建一幅图像。Gordon、Bender和Herman首次证明了它在图像重建中的应用。而这种方法被称为数值线性代数中的Kaczmarz方法。相对于其他重建方法(如滤波反投影),ART的一个优点是,将先验知识(已知的约束条件)纳入重建过程是相对容易的。该算法的实质是用迭代法求解线性方程组的解。
2 部分代码
clc;
clear all;
close all;
N = 180; %图像大小
N2 = N^2;
I = phantom(N);% 产生头模型图像
theta = linspace(0,180,181);
theta = theta(1:180);
%% = = = = = = 产生投影数据 = = = = = = %%
P_num = 260; %探测器通道个数
P = ParallelBeam(theta ,N ,P_num); %产生投影数据
%P = radon(I,theta);
%% = = = = = = 获取投影矩阵 = = = = = =%%
delta = 1;% 网格大小,角度增量
[W_ind,W_dat] = SystemMatrix(theta,N,P_num,delta);
%% = = = = = = 进行ART迭代 = = = = = = %%
F = zeros(N2,1); %初始图像向量
lambda = 0.25; %松弛因子
c = 0; %迭代计数器
irt_num = 5;
while(c<irt_num)
for j = 1:length(theta)
for i = 1:1:P_num
% 取得一条射线所穿过的网格编号和长度
u = W_ind((j-1)*P_num + i,:); % 编号
v = W_dat((j-1)*P_num + i,:); % 长度
if any(u) == 0
continue;
end
%恢复投影矩阵中与这一条射线对应的行向量 w
w = zeros(1,N2);
ind = u > 0;
w(u(ind))=v(ind);
% 图像进行一次迭代
PP = w * F; %前向投影
C = (P(i,j)-PP)/sum(w.^2) * w'; % 修正项
F = F + lambda * C;
end
end
F(F<0) = 0; % 小于0的像素值置为0
c = c+1;
end
F = reshape(F,N,N)'; % 转换成N x N的图像矩阵
%% = = = = = = 仿真结果显示 = = = = = = %%
figure(1);
imshow(I);xlabel('(a)180x180头模型图像');
figure(2);
%A = imadjust(F);
imshow(F,[]);xlabel('(b)ART算法重建的图像');
3 仿真结果
4 参考文献
[1]于源, 曲延华, 高庆忠. 影响ART算法重建CT图像的因素浅析[J]. 计算机光盘软件与应用, 2012, 000(002):152-153.
5 代码下载
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。