资源简介
可以利用图片进行3d建模,重二维到三维
代码片段和文件信息
clc;
clear all;
close all;
N = 180; %图像大小
N2 = N^2;
I = phantom(N);% 产生头模型图像
theta = linspace(0180181);
theta = theta(1:180);
%% = = = = = = 产生投影数据 = = = = = = %%
P_num = 260; %探测器通道个数
P = ParallelBeam(theta N P_num); %产生投影数据
%P = radon(Itheta);
%% = = = = = = 获取投影矩阵 = = = = = =%%
delta = 1;% 网格大小,角度增量
[W_indW_dat] = SystemMatrix(thetaNP_numdelta);
%% = = = = = = 进行ART迭代 = = = = = = %%
F = zeros(N21); %初始图像向量
lambda = 0.25; %松弛因子
c = 0; %迭代计数器
irt_num = 5;
while(c 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(1N2);
ind = u > 0;
w(u(ind))=v(ind);
% 图像进行一次迭代
PP = w * F; %前向投影
C = (P(ij)-PP)/sum(w.^2) * w‘; % 修正项
F = F + lambda * C;
end
end
F(F<0) = 0; % 小于0的像素值置为0
c = c+1;
end
F = reshape(FNN)‘; % 转换成N x N的图像矩阵
%% = = = = = = 仿真结果显示 = = = = = = %%
figure(1);
imshow(I);xlabel(‘(a)180x180头模型图像‘);
figure(2);
%A = imadjust(F);
imshow(F[]);xlabel(‘(b)ART算法重建的图像‘);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-12-09 21:12 第一次实验\
文件 889 2015-12-01 12:03 第一次实验\Backprojection.m
文件 1291 2015-12-03 10:21 第一次实验\ParallelBeam.m
文件 345 2015-12-02 11:42 第一次实验\RLfilter.m
文件 981 2015-12-01 12:04 第一次实验\RLfilteredbackprojection.m
文件 268 2015-12-02 11:43 第一次实验\SLfilter.m
文件 935 2015-12-01 12:04 第一次实验\SLfilteredbackprojection.m
文件 6830 2015-12-04 11:39 第一次实验\SystemMatrix.m
文件 1492 2015-12-05 10:39 第一次实验\art.m
文件 575 2015-12-03 10:43 第一次实验\lb_irad.m
文件 1168 2015-12-04 16:42 第一次实验\lb_irad_fh.m
文件 304 2015-12-03 09:24 第一次实验\zj_irad.m
文件 119 2015-12-09 21:11 第一次实验\说明.txt
评论
共有 条评论