主要内容

从投影数据重建图像

此示例演示如何从头部模型图像形成平行光束和扇形光束投影,以及如何使用radon和扇形光束变换重建图像。

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

一个需要图像重建的实际应用是X射线吸收层析成像,其中投影是通过测量以不同角度通过物理样本的辐射衰减而形成的。原始图像可以看作是穿过试样的横截面,其中强度值表示试样的密度。投影由特殊的医学成像设备收集,然后使用计算机重建样本的内部图像iradonifanbeam

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

创建头部模型

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

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

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

平行光束-计算合成投影

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

θ₁= 0:10:170;(R1 ~) =氡(P,θ₁);num_angles_R1 =大小(R1, 2)
角度数R1=18
θ2=0:5:175;[R2,~]=radon(P,θ2);num_angles_R2=size(R2,2)
num_angles_R2 = 36
θ3=0:2:178;[R3,xp]=氡(P,θ3);角度数=大小(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

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

P_128=模型(128);[R_128,xp_128]=氡(P_128,θ1);N_128=大小(R_128,1)
N_128 = 185

显示投影数据R3. 原始幻影图像的某些特征在图像中可见R3. 第一列R3对应于0度的投影,在垂直方向积分。最中心的柱子对应一个90度的投影,在水平方向上积分。90度投影比0度投影的轮廓更宽,这是由于幻像最外层椭圆的垂直半轴较大。

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

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

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

匹配平行旋转增量,德赫塔,用于创建相应的合成投影。在现实世界中,你会知道发射器和传感器的几何形状,但不知道源图像,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投影角度”的轴对象包含一个图像类型的对象。

扇形梁-计算合成投影

使用扇形梁几何图形计算合成投影,并改变“风扇间距”

D = 250;dsensor1 = 2;F1 = fanbeam (P D“风扇间距”,dsensor1);dsensor2=1;F2=扇形梁(P,D,“风扇间距”, dsensor2);dsensor3 = 0.25;[F3, sensor_pos3 fan_rot_angles3] = fanbeam (P D...“风扇间距”,dsensor3);

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

imagesc(fan_rot_angles3,sensor_pos3,F3) colormap(hot) colorbar xlabel('风扇旋转角度(度)')伊拉贝尔('风扇传感器位置(度)'

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

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

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

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

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

Ifan1 = ifanbeam (F1, D,“风扇间距”,dsensor1,...“OutputSize”, output_size);Ifan2 = ifanbeam (F2 D“风扇间距”,dsensor2,...“OutputSize”, output_size);Ifan3 = ifanbeam (F3, D,“风扇间距”,dsensor3,...“OutputSize”,输出大小);蒙太奇({Ifan1,Ifan2,Ifan3},“尺寸”3[1])标题([“用扇形光束投影重建”...18 24 90投影角])

图中包含一个轴对象。从具有18、24和90个投影角度的扇形梁投影重建标题的轴对象包含图像类型的对象。