这个例子展示了如何通过三维MRI数据集提取切片来探索大量数据imtransform
和tformarray
功能。
这个例子使用了MATLAB®附带的MRI数据集,这是在帮助示例中使用的蒙太奇
和immovie
.加载mri.mat
将两个变量添加到工作区:D
(128 × 128 × 1 × 27, uint8)和灰度色图,地图
(89-by-3,双倍)。
D
包括27个128 × 128的水平切片,这些切片来自于对人类头盖骨的MRI数据扫描。值D
范围从0到88,因此需要颜色图来生成具有有用的可视范围的图形。的维数D
使它与蒙太奇
.前两个维度是空间的。第三尺寸是颜色尺寸,尺寸为1,因为它索引到颜色图中。(尺寸(d,3)
对于RGB图像序列,则为3。)第四个维度是时间的(就像任何图像序列一样),但在这个特殊的情况下,它也是空间的。这里有三个空间维度D
我们可以用imtransform
要么tformarray
将水平切片转换为矢状切片(显示头部侧面的视图)或冠状(正面)切片(显示头部前面或后面的视图)。
空间维度D
订购如下:
尺寸1:头的前到后(吻侧/尾前/后)
尺寸2:头部从左到右
尺寸4:头部从下到上(低于上)。
重要因素是,采样间隔沿三个尺寸不相同:沿垂直尺寸(4)的样品比沿水平尺寸更广泛地间隔2.5倍。
加载MRI数据集,以蒙太奇的方式查看27个水平切片。
负载核磁共振成像;蒙太奇(D,地图)标题(水平切片的);
我们可以从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,地图);标题(“矢状-原始数据”);
的维度平方米
订购如下:
尺寸1:头的前到后(吻侧到尾侧)
尺寸2:头部到顶部(差下)。
我们可以通过变换得到一个更令人满意的视图平方米
改变其取向并将沿垂直(较差)尺寸的取样增加了2.5因子 - 使采样间隔在所有三个空间尺寸中相等。我们可以在从转置开始的步骤中执行此操作,但以下仿射转换使单步转换和更经济地使用内存。
T0 = maketform (仿射的, [0 -2.5;1 0;0 0]);
上面的2 × 2块矩阵传递到市场形式,(0 -2.5; 1 0)
,结合旋转和缩放。转型后,我们有:
尺寸1:头的顶部到底部(上部到下部)。
尺寸2:头的前到后(吻侧到尾侧)
调用
imtransform (M2、T0、“立方”)
就足够了T
来平方米
并在沿上到下方向插入时提供良好的分辨率。然而,由于沿(输出)维2不发生重采样,因此不需要在前后方向进行三次插值。因此我们在这个维度中指定了最近邻重采样,效率更高,结果相同。
R2 = makeresampler ({“立方”,“最近的”},“填满”);M3 = imtransform (M2、T0 R2);人物,imshow (M3,地图);标题(“矢状IMTRANSFORM”)
在这个步骤中,我们得到了与步骤2相同的结果,但是使用tformarray
从三维空间到二维空间只需一次操作。步骤2确实从一个具有三维空间维度的数组开始,以一个具有二维空间维度的数组结束,但是中间的二维图像(M1
和平方米
为…铺平道路imtransform
创建M3
.如果我们使用,这些中间图像是不必要的tformarray
而不是imtransform
.imtransform
对于2-D到2-D的变换是非常方便的,但是tformarray
万博1manbetx支持N- d到M- d变换,其中M不需要等于N。
通过其TDIMS_A
参数,tformarray
允许我们为输入数组定义一个排列。因为我们想要创建一个图像:
尺寸1:优于劣等(原始尺寸4,逆转)
维数2:尾部至喙侧(原维数1)
通过我们指定的原始维度2提取出一个矢状面tdims_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 = maketform (“复合”, 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”);
我们创建了一个4-D数组(第三个维度是颜色维度),它可以用来生成一个从左到右的图像序列,从30个平面开始,跳过每一个其他平面,总共有35帧。转换后的数组有:
尺寸1:上至下(上至下)
尺寸2:前后(吻侧至尾侧)
尺寸4:从左到右。
与前面的步骤一样,我们使用Tdims_a = [4 1 2]
,再次翻转和缩放/重采样垂直尺寸。我们的仿射变换与上面的T1相同,除了我们添加了一个第三维,其中(3,3)元素为0.5,(4,3)元素为-14,选择映射30,32,…98到1 2…, 35岁。这将我们的35帧图像集中在矢状面中部。
T3 = maketform (仿射的(-2.5 0 0;0 1 0;0 0 0.5;68.5 0 -14]);
我们呼吁tformarray
,Tsize_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,地图)标题(“矢状切片”);
构建冠状切片与构建矢状切片几乎相同。我们改变TDIMS_A
从(4一2)
来[4 2 1]
.我们创建了一系列45帧,从8个平面开始,从后向前移动,跳过每一帧。输出数组的尺寸顺序如下:
尺寸1:上至下(上至下)
尺寸2:从左到右
尺寸4:前后(尾部到喙侧)。
T4 = maketform (仿射的(-2.5 0 0;0 1 0;0 0 -0.5;68.5 0 61]);
我们呼吁tformarray
,TSIZE_B
=[66 128 48]分别表示垂直尺寸、侧面尺寸和前后尺寸。再采样器保持不变。
C = tformarray (D、T4、R3, [4 2 1], [1 2 4], [45 66 128], [], 0);
注意,步骤3、4和5中的所有数组排列和翻转都是作为tformarray
操作。
将冠状切片视为蒙太奇(稍微填充数组以分离蒙太奇的元素)。
C = padarray(C,[6 0 0 0],0,)“两个”);图中,蒙太奇(C2,地图)标题(“冠状切片”);