CT图像三维重建(附源码)复习进程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序流图:

MATLAB 源码: clc; clear all;

close all;

% load mri %载入mri 数据,是matlab 自带库 % ph = squeeze(D); %压缩载入的数据D ,并赋值给ph

ph = phantom3d(128);

prompt={'Enter the Piece num(1 to 128):'}; %提示信息“输入1到27的片的数字” name='Input number'; %弹出框名称

defaultanswer={'1'}; %默认数字

numInput=inputdlg(prompt,name,1,defaultanswer) %弹出框,并得到用户的输入信息

P= squeeze(ph(:,:,str2num(cell2mat(numInput))));%将用户的输入信息转换成数字,并从ph 中得到相应的片信息P

imshow(P) %展示图片P

D = 250; %将D 赋值为250,是从扇束顶点到旋转中心的像素距离。

生成128的图片信息 输入图片数字选择 对图片信息进行预处理,并进行展示 用函数fanbeam 进行映射,得到扇束的数据,并展示 用函数ifanbeam 根据扇

束投影数据重建图像,并

展示

计算重建图像和原图的性噪比,并进行输出 结束

dsensor1 = 2; %正实数指定扇束传感器的间距2

F1 = fanbeam(P,D,'FanSensorSpacing',dsensor1); %通过P,D等计算扇束的数据值

dsensor2 = 1; %正实数指定扇束传感器的间距1

F2 = fanbeam(P,D,'FanSensorSpacing',dsensor2); %通过P,D等计算扇束的数据值

dsensor3 = 0.25 %正实数指定扇束传感器的间距0.25 [F3, sensor_pos3, fan_rot_angles3] = fanbeam(P,D,...

'FanSensorSpacing',dsensor3); %通过P,D等计算扇束的数据值,并得到扇束传感器的位置sensor_pos3和旋转角度fan_rot_angles3

figure, %创建窗口

imagesc(fan_rot_angles3, sensor_pos3, F3) %根据计算出的位置和角度展示F3的图片

colormap(hot); %设置色图为hot

colorbar; %显示色栏

xlabel('Fan Rotation Angle (degrees)') %定义x坐标轴

ylabel('Fan Sensor Position (degrees)') %定义y坐标轴

output_size = max(size(P)); %得到P维数的最大值,并赋值给output_size

Ifan1 = ifanbeam(F1,D, ...

'FanSensorSpacing',dsensor1,'OutputSize',output_size);

%根据扇束投影数据F1及D等数据重建图像

figure, imshow(Ifan1) %创建窗口,并展示图片Ifan1

title('图一');

disp('图一和原图的性噪比为:');

result=psnr1(Ifan1,P);

Ifan2 = ifanbeam(F2,D, ...

'FanSensorSpacing',dsensor2,'OutputSize',output_size);

%根据扇束投影数据F2及D等数据重建图像

figure, imshow(Ifan2) %创建窗口,并展示图片Ifan2

disp('图二和原图的性噪比为:');

result=psnr1(Ifan2,P);

title('图二');

Ifan3 = ifanbeam(F3,D, ...

'FanSensorSpacing',dsensor3,'OutputSize',output_size);

%根据扇束投影数据F3及D等数据重建图像

figure, imshow(Ifan3) %创建窗口,并展示图片Ifan3

title('图三');

disp('图三和原图的性噪比为:');

result=psnr1(Ifan3,P);

function [p,ellipse]=phantom3d(varargin)

%PHANTOM3D Three-dimensional analogue of MATLAB Shepp-Logan phantom

% P = PHANTOM3D(DEF,N) generates a 3D head phantom that can

% be used to test 3-D reconstruction algorithms.

%

% DEF is a string that specifies the type of head phantom to generate.

% Valid values are:

%

% 'Shepp-Logan' A test image used widely by researchers in

% tomography

% 'Modified Shepp-Logan' (default) A variant of the Shepp-Logan phantom % in which the contrast is improved for better % visual perception.

%

% N is a scalar that specifies the grid size of P.

% If you omit the argument, N defaults to 64.

%

% P = PHANTOM3D(E,N) generates a user-defined phantom, where each row

% of the matrix E specifies an ellipsoid in the image. E has ten columns,

% with each column containing a different parameter for the ellipsoids:

%

% Column 1: A the additive intensity value of the ellipsoid

% Column 2: a the length of the x semi-axis of the ellipsoid

% Column 3: b the length of the y semi-axis of the ellipsoid

% Column 4: c the length of the z semi-axis of the ellipsoid

% Column 5: x0 the x-coordinate of the center of the ellipsoid

% Column 6: y0 the y-coordinate of the center of the ellipsoid

% Column 7: z0 the z-coordinate of the center of the ellipsoid

% Column 8: phi phi Euler angle (in degrees) (rotation about z-axis)

% Column 9: theta theta Euler angle (in degrees) (rotation about x-axis)

% Column 10: psi psi Euler angle (in degrees) (rotation about z-axis)

%

% For purposes of generating the phantom, the domains for the x-, y-, and

% z-axes span [-1,1]. Columns 2 through 7 must be specified in terms

% of this range.

%

% [P,E] = PHANTOM3D(...) returns the matrix E used to generate the phantom.

%

% Class Support

% -------------

% All inputs must be of class double. All outputs are of class double.

相关文档
最新文档