主要内容

从投影数据重建图像

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

iradon函数使用平行光束几何体进行投影,而fanbeamifanbeam使用扇形光束几何体。为了比较平行光束和扇形光束几何形状,下面的例子为每个几何形状创建合成投影,然后使用这些合成投影来重建原始图像。

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

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

创建头幻影

测试图像是Shepp-Logan头部幻影,可以使用该功能生成幻影.幻影图像说明了在真实世界的人类头部的层析成像中发现的许多特性。沿着外部明亮的椭圆形外壳类似于头骨,而内部的许多椭圆形则类似于大脑特征或肿瘤。

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

图中包含一个轴对象。axis对象包含一个image类型的对象。

平行光束-计算合成投影

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

θ₁= 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

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

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

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

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) colorbar xlabel('平行旋转角度-(°)');ylabel ('Parallel Sensor Position - x\prime (pixels)');

图中包含一个轴对象。axis对象包含一个image类型的对象。

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

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

以下三个重建(I1I2,I3)显示了改变投影角度的数目所产生的效果。为I1I2在原来的幻影中可以看到的一些特征并不清楚。具体来说,看看每个图像底部的三个省略号。的结果I3与原始图像非常相似,P

注意其中的重要构件I1I2.为了避免这些伪影,使用更多的角度。

%限制每个重构的输出大小%与原始图像大小相同,|P|。output_size = max(大小(P));dta1 = (2) - (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个投影角])

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

扇束-计算合成投影

计算合成投影使用扇形光束几何和变化“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 (“风扇传感器位置(度)”

图中包含一个轴对象。axis对象包含一个image类型的对象。

扇形光束-从投影数据重建头部幻影

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

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

注意'FanSensorSpacing'只是你在使用时可以控制的几个参数中的一个fanbeamifanbeam.您还可以使用这些函数在平行光束和扇形光束投影数据之间来回转换fan2parapara2fan

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投影角])

图中包含一个轴对象。具有18、24、90投影角的扇形光束投影重建的轴对象包含一个图像类型的对象。