templateをみる

SPMのtemplateをみてみます。***.mncというMINC形式で保存されています。 このMINC formatの本体はNetCDF formatという特殊なformatだそうです。 SPMではspm_vol.mという関数でMINCのheaderを読むことができます。 このspm_vol.mの本体は、spm_vol_minc.mで、 さらにこのspm_vol_minc.mの本体はspm_read_netcdf.mです。 この機能を使ってtemplateをみてみました。
以下はMATLABのコマンドです。
cd ...; %% spm2のあるfolderへ
fname='.../templates/T1.mnc';
V=spm_vol(fname); %% MINC fileのheaderを読む
[Y,XYZ]=spm_read_vols(V); %% MINC fileのデータ部分を読む

構造体になっているVはheader、 Yは三次元配列からなるデータ部分、 XYZはYの三次元座標、 fnameは目的とするMINC fileのファイル名です。

図のようにVは構造体・構造体・構造体・・・圧縮形式の複雑な構造になっています。

Vは無視して、とりあえずtemplate T1.mncを画像化してみます。
step=(max(XYZ',[],1)-min(XYZ',[],1))./(size(Y)-1)% voxelの大きさ
ans=
2 2 2
%% voxelのx,y,z方向の大きさは2,2,2mmと判明
figure;imagesc(squeeze(Y(:,:,50))');
colormap(gray(256));daspect([1,1,1]);
set(gcf,'color',[1,1,1]);

MATLABでは行と列が転置されています。 smoothingというぼかしを入れてあるので、結構ボケボケのデータになっていることが判明しました。

MRIcroでみてみましょう。MATLAB側で以下のようにtypeします。
fid=fopen('T1MINC.img','wb');
fwrite(fid,int16(Y*256),'int16');
fclose(fid);
次にMRIcroを立ち上げ、DimensionとSizeを以下のように書き換えます。

メニューバーから、Header->Save header...を選択し、 先ほどのT1MINC.imgと同じフォルダにT1MINC.hdrという名前で保存します。

メニューバーから、File-Open image...を選択し、T1MINC.hdrを選択します。

を押し、 を押し、マウスで を動かします。

頭皮の3Dが作成されました。 尚、脳の切り出しはうまくできませんでした。ぼかしのためだと思います。