南昌大学实验报告
学生姓名: 胡文松 学 号: 6103413007 专业班级: 生医131班 实验类型:□验证□综合■设计□创新 实验日期: 20160516 实验成绩:
实验二、扇形束投影数据采集与滤波反投影重建实验
一、实验目的及要求:
1、 用MATLAB中的fanbeam函数获取Shepp-Logan头模型的扇形束投影数据; 2、 显示扇形束投影数据并和平行束投影数据进行比较; 3、 用MATLAB中的ifanbeam函数实现图像重建; 4、 改变投影参数,观察对重建图像的影响。 二、实验基本原理:
fanbeam 函数,计算扇形束投影。 句法
F = fanbeam(I,D)
F = fanbeam(...,param1,val1,param1,val2,...)
[F,sensor_positions,fan_rotation_angles] = fanbeam(...)
F = fanbeam(I,D) 计算图像I的扇形束投影 (正弦图) , D 是扇形束顶点到旋转中心的距离。F的每一列表示一个角度下的扇形采样数据。探测器圆弧状排布,探测器间相隔一度,旋转360度 [0:359] 。
F = fanbeam(...,param1,val1,param1,val2,...) 指定参数控制扇形投影
'FanRotationIncrement' 指定旋转角度增量,单位为度,默认值为1度。 'FanSensorGeometry' 指定探测器的排布方式
'arc'—探测器圆弧状排布(默认值) 'line' --探测器等距离线性排布
'FanSensorSpacing' 指定探测器间的间隔,探测器圆弧状排布的情况,单位为度,默认值为1。探测器等距离线性排布,单位为像素。
[F,sensor_positions,fan_rotation_angles] = fanbeam(...) 返回探测器位置和旋转角度信息
ifanbeam 函数,由扇形束投影数据重建图像 句法
I = ifanbeam(F,D)
I = ifambeam(...,param1,val1,param2,val2,...) [I,H] = ifanbeam(...)
I = ifanbeam(F,D) 由投影数据F重建图像I。 D是扇形束顶点到旋转中心的距离
I = ifanbeam(...,param1,val1,param2,val2,...) 指定参数控制图像重建。 'FanCoverage' 指定旋转角度范围
'cycle'}—旋转360度 [0,360).
'minimal' – 重建图像所需的最小旋转角度。
'FanRotationIncrement' 同fanbeam 'FanSensorGeometry' 同fanbeam 'FanSensorSpacing' 同fanbeam
'OutputSize' 指定重建图像矩阵的大小,假如不指定,ifanbeam自动决定矩阵大小
(扇形投影重建图像和原始图像矩阵大小可能不同)。
三、主要仪器设备及实验耗材:
具有XP或2000系统,并装有MATLAB系统的PC机。 四、实验内容或步骤以及显示结果:
1.用MATLAB图像处理工具箱的phantom生成Shep-Logan头模型; P=phantom(256); imshow(P)
2.用MATLAB中的fanbeam函数获得头模型的扇形束和平行束投影数据; D = 200;
F = fanbeam(P,D,'FanRotationIncrement',0.5,'FanSensorSpacing',0.5); theta=0:1:179;[R4,xp]=radon(P,theta);%平行束投影数据采集 显示投影数据:
figure.imshow(F,[]); title('扇形束投影数据')
figure,imagesc(theta,xp,R4);xlabel('\\theta');ylabel('x\\prime'); title('平行束180个角度投影数据');
3.用MATLAB中的ifanbeam函数对获得的投影数据进行滤波反投影重建,获得Shepp-Logan模型的重建图像。
I = ifanbeam(F,D, 'FanSensorSpacing',0.5,'FanRotationIncrement',0.5); I4=iradon(R4,1); %平行束投影数据重建 显示重建图像:
figure .imshow(I); title('扇形束投影数据重建')
figure .imshow(I4); title ('平行束180个角度滤波重建图像');
五、实验小结
通过实验结果可知,平行束通过180度扫描产生一个峰值,扇形束扫描360度出现两个峰值