主要内容

从三维MRI数据集探索切片

这个例子展示了如何通过使用三维MRI数据集提取切片来探索数据量imtransform而且tformarray功能。

第一步:载入和查看水平MRI

本示例使用MATLAB®附带的MRI数据集,并在帮助示例中使用蒙太奇而且immovie.加载mri.mat向工作区添加两个变量:D(128 -的- 128 - 1 - 27日上课uint8)和灰度色图,地图(89 -, - 3类).

D包括27个128 × 128的水平切片,这些切片来自人类颅骨的核磁共振数据扫描。值D范围从0到88,因此需要色图来生成具有有用视觉范围的图形。的维数D使它与蒙太奇.前两个维度是空间的。第三个维度是颜色维度,大小为1,因为它索引到颜色图中。(大小(D, 3)对于RGB图像序列将是3。)第四个维度是时间的(与任何图像序列一样),但在这种特殊情况下,它也是空间的。所以有三个空间维度D我们可以用imtransformtformarray将水平切片转换为矢状切片(显示头部侧面的视图)或冠状(正面)切片(显示头部前面或后面的视图)。

的空间维度D顺序如下:

  • 尺寸1:头的前后方(嘴侧/前尾侧/后侧)

  • 尺寸2:头部从左到右

  • 尺寸4:头的底部到顶部(从上到下)。

一个重要的因素是沿三个维度的采样间隔不相同:沿垂直维度(4)的样本间隔比沿水平维度的间隔宽2.5倍。

加载MRI数据集,并将27个水平切片视为蒙太奇。

负载核磁共振成像;蒙太奇(D,地图)标题(水平切片的

图中包含一个轴对象。标题为“水平切片”的axis对象包含一个图像类型的对象。

步骤2:从水平切片中提取矢状切片imtransform

我们可以从MRI数据中构造一个中矢状切片D并将其转换为考虑不同的采样间隔和维度的空间方向D

下面的语句提取了中矢状切片所需的所有数据。

M1 = d (:,64,:,:);大小(M1)
ans =1×4128 1 1 27

但是我们不能M1因为它是128乘1乘1乘27的。重塑(或挤压)可转换M1转换成128 * 27的图像,可以用imshow

M2 =重塑(M1,[128 27]);大小(平方米)
ans =1×2128年27
imshow (M2,地图)标题(“矢状图-原始数据”

图中包含一个轴对象。标题为“矢状-原始数据”的axis对象包含一个图像类型的对象。

中的尺寸平方米顺序如下:

  • 尺寸1:头的前后方(嘴侧至尾侧)

  • 尺寸2:头的底部到顶部(从上到下)。

通过变换,我们可以获得更令人满意的视野平方米改变它的方向,并沿垂直(下-上)维度增加2.5倍的采样,使采样间隔在所有三个空间维度上相等。我们可以从转置开始一步一步地做,但下面的仿射变换可以实现一步变换,并且更经济地使用内存。

T0 = makeform (仿射的, [0 -2.5;1 0;0 0]);

矩阵的上部2 × 2块传递给maketform[0 -2.5; 10 0],结合了旋转和缩放。改造后我们有:

  • 尺寸1:头部从上到下(上到下)。

  • 尺寸2:头的前后方(嘴侧至尾侧)

调用

imtransform (M2、T0、“立方”)

就足以适用了T平方米并提供良好的分辨率,而插值沿上到下的方向。然而,由于沿(输出)维2不会发生重采样,因此不需要在前向后方向上进行三次插值。因此,我们在这个维度上指定最近邻重采样,具有更高的效率和相同的结果。

R2 = makeresampler({“立方”“最近的”},“填满”);M3 = imtransform(M2,T0,R2);imshow (M3,地图)标题('矢状变换'

图中包含一个轴对象。标题为“矢状变换”的坐标轴对象包含一个图像类型的对象。

步骤3:从水平切片中提取矢状切片tformarray

在这一步中,我们得到了与第2步相同的结果,但是使用tformarray在一次操作中从三维空间变成二维空间。步骤2确实从具有三个空间维度的数组开始,并以具有两个空间维度的数组结束,但是中间的二维图像(M1而且平方米)为打电话给…铺平道路imtransform创建M3.如果我们使用,这些中间图像是不必要的tformarray而不是imtransformimtransform对于二维到二维的变换非常方便,但是tformarray金宝app支持N- d到M- d转换,其中M不需要等于N。

通过其TDIMS_A参数,tformarray允许我们为输入数组定义一个排列。因为我们想要创建一个图像:

  • 尺寸1:优劣(原尺寸4,反向)

  • 尺寸2:尾侧至吻侧(原尺寸1)

然后提取一个矢状平面通过我们指定的原始维度2tdims_a=[4 1 2]。我们创建一个tform通过复合,从二维仿射变换开始T1这将(新的)维度1缩放为-2.5倍,并添加68.5的移位以保持数组坐标为正。组合的第二部分是自定义转换T2提取第64个矢状面使用非常简单的INVERSE_FCN

T1 = maketform(仿射的(-2.5 0;0 1;68.5 0]);inverseFcn = @ (X, t) [X repmat (t.tdata,[大小(X, 1) 1]));T2 = maketform(“自定义”inverseFcn 3 2 [], 64);Tc = makeform (“复合”, T1, T2);

请注意,T2而且Tc将三维输入转换为二维输入。

我们使用与以前相同的方法进行重新采样,但包含了第三个维度。

R3 = makeresampler({“立方”“最近的”“最近的”},“填满”);

tformarray的三个空间维度进行转换D到二维输出的一个步骤。我们的输出图像是66 × 128,原始的27个平面在垂直方向(上下方向)扩展到66。

M4 = tformarray (D, Tc, R3, [4 1 2], [1 - 2], [66 - 128], [], 0);

的前面输出与结果相同imtransform

imshow (M4,地图)标题(矢状图- TFORMARRAY

图中包含一个轴对象。标题为“矢状- TFORMARRAY”的坐标轴对象包含一个图像类型的对象。

步骤4:创建并显示矢状切片

我们创建了一个4-D数组(第三个维度是颜色维度),可以用来生成一个从左到右的图像序列,从30个平面开始,跳过所有其他平面,总共有35帧。转换后的数组有:

  • 尺寸1:从上到下(上到下)

  • 尺寸2:从前到后(嘴侧到尾侧)

  • 第四维度:从左到右。

与前一步一样,我们使用Tdims_a = [4 1 2],再次翻转和重新缩放/重新采样垂直维度。我们的仿射变换与上面的T1相同,除了我们添加了第三维,其中(3,3)元素为0.5,(4,3)元素为-14,以映射30,32,…98比1,2,…, 35岁。这将我们的35帧集中在中间矢状切片上。

T3 =表(仿射的,[-2.5 0 0;0 10 0;0 0 0.5;68.5 0 -14]);

在我们的号召中tformarrayTsize_b = [66 128 35]现在包括第4个,从左到右的维度(这是第三个变换维度)中的35帧。重采样器保持不变。

S = tformarray (D、T3、R3, [4 1 2], [1 2 4], [66 128 35], [], 0);

将矢状切片视为蒙太奇(稍微填充数组以分离蒙太奇的元素)。

S2 = padarray(S,[6 0 0 0],0,“两个”);蒙太奇(S2,地图)标题(“矢状切片”

图中包含一个轴对象。标题为“矢状切片”的axis对象包含一个图像类型的对象。

步骤5:创建并显示冠状切片

冠状切片与矢状切片几乎相同。我们改变TDIMS_A[4 1 2][4 2 1].我们创建了一系列45帧,从8个平面开始,从后到前移动,跳过每一帧。输出数组的维数顺序如下:

  • 尺寸1:从上到下(上到下)

  • 维度2:从左到右

  • 尺寸4:从后到前(尾侧到吻侧)。

T4 = maketform(仿射的,[-2.5 0 0;0 10 0;0 0 -0.5;68.5 0 61]);

在我们的号召中tformarrayTSIZE_B=[66 128 48]分别指定垂直尺寸、左右尺寸和前后尺寸。重采样器保持不变。

C = tformarray (D、T4、R3, [4 2 1], [1 2 4], [45 66 128], [], 0);

注意,步骤3、4和5中的所有数组排列和翻转都作为tformarray操作。

将冠状切片视为蒙太奇(稍微填充数组以分离蒙太奇的元素)。

C2 = padarray(C,[6 0 0 0],0,“两个”);蒙太奇(C2,地图)标题(“冠状切片”

图中包含一个轴对象。标题为“冠状切片”的axis对象包含一个图像类型的对象。