主要内容

从投影数据重建图像

这个例子展示了如何从一个头部幻像形成平行光束和扇形光束投影,以及如何使用氡和扇形光束变换重建图像。

而且iradon函数的投影使用平行光束几何结构,而fanbeam而且ifanbeam使用扇形光束几何。为了比较平行光束和扇形光束的几何形状,下面的示例为每个几何形状创建合成投影,然后使用这些合成投影重建原始图像。

需要图像重建的现实应用是x射线吸收层析成像,通过测量以不同角度通过物理标本的辐射衰减来形成投影。原始图像可以被认为是通过标本的横截面,其中的强度值代表了标本的密度。投影由特殊的医学成像设备收集,然后重建标本的内部图像iradonifanbeam

这个函数iradon从平行光束投影重建图像。在平行光束几何中,每个投影是由一组线积分通过特定角度的图像组合而成的。这个函数ifanbeam从扇形光束投影重建图像,其中有一个发射器和多个传感器。

创建头幻影

测试图像是可以使用该函数生成的谢普-洛根头部幻影幻影.幻影图像说明了在真实世界的人脑断层成像中发现的许多品质。沿着外部明亮的椭圆形外壳类似于头骨,内部的许多椭圆类似于大脑特征或肿瘤。

P =幻影(256);imshow (P)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

平行光束-计算合成投影

使用平行光束几何计算综合投影,并改变投影角度的数量。对于每一个调用,输出是一个矩阵,其中每一列都是对应的一个角的Radon变换θ

θ₁= 0:10:170;(R1 ~) =氡(P,θ₁);num_angles_R1 =大小(R1, 2)
num_angles_R1 = 18
θ= 0:5:175;(R2, ~) =氡(P,θ);num_angles_R2 =大小(R2, 2)
num_angles_R2 = 36
1 = 0:2:178;(R3, xp) =氡(P, 1);num_angles_R3 =大小(R3, 2)
num_angles_R3 = 90

注意,对于每个角,投影都是在N沿xp轴的点,其中N是一个依赖于图像对角线距离的常数,这样每个像素都将被投影到所有可能的投影角度。

N_R1 =大小(R1, 1)
N_R1 = 367
N_R2 =大小(R2, 1)
N_R2 = 367
N_R3 =大小(R3, 1)
N_R3 = 367

所以,如果你使用一个更小的头部幻影,投影需要在沿着xp轴的更少的点上计算。

P_128 =幻影(128);[R_128, xp_128] =氡(P_128,θ₁);N_128 =大小(R_128, 1)
N_128 = 185

显示投影数据R3.的图像中可以看到原始幻影图像的一些特征R3.的第一列R3对应于0度的投影,这是对垂直方向的积分。最中间的一列对应90度的投影,这是对水平方向的积分。由于幻影最外层椭圆的大垂直半轴,90度的投影比0度的投影有更宽的轮廓。

imagesc(theta3,xp,R3) colormap(hot)'平行旋转角度- \theta (degrees)');ylabel (“平行传感器位置- x\prime(像素)”);

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

平行光束-从投影数据重建头部幻影

匹配平行旋转-增量,dtheta,在每个重建中与上面使用的重建创建相应的合成投影。在现实世界中,你会知道发射器和传感器的几何形状,但不知道源图像,P

以下三次重建(I1I2,I3)显示了不同投射角度的影响。为I1而且I2在最初的幻影中可见的一些特征并不清楚。具体来说,看看每张图片底部的三个椭圆。的结果I3与原始图像非常相似,P

注意存在的重要工件I1而且I2.为了避免这些工件,使用更多的角度。

约束每个重构的输出大小为%与原始图像的大小相同,|P|。output_size = max(大小(P));Dtheta1 = theta1(2) - theta1(1);I1 = iradon (R1 dtheta1 output_size);Dtheta2 = theta2(2) - theta2(1);I2 = iradon (R2, dtheta2 output_size);Dtheta3 = theta3(2) - theta3(1);I3 = iradon (R3, dtheta3 output_size);图蒙太奇({I1、I2 I3},“大小”3[1])标题([“平行光束投影重建”...“有18、24和90个投影角度”])

图中包含一个axes对象。标题为“从具有18、24和90个投影角度的平行光束投影重建”的axis对象包含一个类型为image的对象。

风扇光束-计算合成投影

计算综合投影使用扇束几何和改变“FanSensorSpacing”

D = 250;dsensor1 = 2;F1 = fanbeam (P D“FanSensorSpacing”, dsensor1);dsensor2 = 1;F2 = fanbeam (P D“FanSensorSpacing”, dsensor2);dsensor3 = 0.25;[F3, sensor_pos3 fan_rot_angles3] = fanbeam (P D...“FanSensorSpacing”, dsensor3);

显示投影数据F3.注意,风扇的旋转角度范围从0到360度,相同的模式发生在180度偏移处,因为从两边采样的是相同的特征。你可以将扇形光束投影图像中的特征与上面平行光束投影图像中的相同特征关联起来。

imagesc(fan_rot_angles3,sensor_pos3,F3) colormap(hot) colorbar xlabel(“风扇旋转角度(度)”) ylabel (“风扇传感器位置(度)”

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

扇梁-从投影数据重建头部幻影

将每个重建中的风扇-传感器间距与用于创建每个合成投影的风扇-传感器间距匹配。在现实世界中,你会知道发射器和传感器的几何形状,但不知道源图像,P

的值“FanSensorSpacing”有效地改变在每个旋转角度使用的传感器的数量。对于每一个扇形梁重建,使用相同的旋转角度。这与平行光束重建不同的旋转角度形成对比。

注意,'FanSensorSpacing'只是你在使用时可以控制的几个参数中的一个fanbeam而且ifanbeam.您还可以使用函数在平行光束和扇形光束投影数据之间来回转换fan2para而且para2fan

Ifan1 = ifanbeam (F1, D,“FanSensorSpacing”dsensor1,...“OutputSize”, output_size);Ifan2 = ifanbeam (F2 D“FanSensorSpacing”dsensor2,...“OutputSize”, output_size);Ifan3 = ifanbeam (F3, D,“FanSensorSpacing”dsensor3,...“OutputSize”, output_size);蒙太奇({Ifan1、Ifan2 Ifan3},“大小”3[1])标题([“用扇形梁投影重建”...“18、24、90度投影角”])

图中包含一个axes对象。标题为“从18、24和90个投影角度的扇光束投影重建”的axes对象包含一个类型为image的对象。

Baidu
map