CT扫描重建出来的东西往往会有环状伪影,这通常是由于探测的探元对于X射线响应不一致导致的,此时需要进行矫正,通常采用滤波的方式。这是最简单的方式,当然还有更加复杂甚至加入深度学习的方式,我记得首都师范大学在中国体视学会上讲过他们有许多有关探测器甚至探测器偏置有关的重建程序,做了许多工作,非常成熟。
下面是最简单的处理环状伪影的matlab代码(函数):
function cor_proj = ProjFilter_Ring_Artifacts(projections, Num_angles)
%% inputs:
% projections: (det_col_count,Num_angles, det_row_count)
% Projections mean
[X, Y] = size(projections(:,1,:));
R = zeros(X, Y);
for i = 1 : Num_angles
R = R + squeeze(projections(:, i, :));
end
R = R/Num_angles;
% 高斯滤波
core = fspecial('gaussian',[5 5], 1);
R2 = filter2(core, R);
% 坏点校正
diff = R - R2;
% 校正投影
cor_proj = single(zeros(X, Num_angles, Y));
for i = 1 : Num_angles
cor_proj(:,i,:) = squeeze(projections(:, i, :)) - diff;
end
处理之后依然会存在部分伪影,但是比之前缓解了不少,叠加使用几次滤波效果应该会更加好。