niftiwrite で画像タグ情報を編集​し書き込みたいとき,​エラーが出て出力でき​ません.

15 views (last 30 days)
KT
KT on 1 Oct 2022
Commented: KT on 6 Oct 2022
画像読み込み~演算処理後に,PixelDimensionsなどタグ情報が[1 1 1]に変わっていることから,もともとの画像情報と同じ[2 2 2]に上書きしたかったため,
niftiwrite(Image,'PixelDimensions', [2 2 2])
とすると,以下のエラーが出てタグ情報を編集できません.niftiinfoにて元画像のタグ情報ではPixelDimensionsは存在します.
ご教示いただければ幸いです.よろしくお願いいたします.
エラー: niftiwrite>parseInputs (行 175)
'Info' の値は無効です。関数 @(x)validateHeader(V,x) を満たさなければなりません。
エラー: niftiwrite (行 89)
[V, path, filename, params] = parseInputs(V, filename, varargin{:});

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 1 Oct 2022
Edited: Atsushi Ueno on 3 Oct 2022
niftiwrite関数にタグ情報を(追記:任意に)変更する機能はありません。niftiinfo関数でタグ情報を読み込み内容を変更してからniftiwrite関数に渡せば、それをNIFTI画像ファイルに書き込んでくれます。
Image = niftiread('brain.nii'); % 元画像の読み込み
info = niftiinfo('brain.nii'); % 元画像からタグ情報の読み取り
info.PixelDimensions % PixelDimensionsが[1 1 1]になっている
ans = 1×3
1 1 1
info.PixelDimensions = [2 2 2] % PixelDimensionsを[2 2 2]に変更する
info = struct with fields:
Filename: '/MATLAB/toolbox/images/imdata/brain.nii' Filemoddate: '01-Feb-2017 15:22:59' Filesize: 1376608 Version: 'NIfTI1' Description: '' ImageSize: [256 256 21] PixelDimensions: [2 2 2] Datatype: 'uint8' BitsPerPixel: 8 SpaceUnits: 'Unknown' TimeUnits: 'None' AdditiveOffset: 0 MultiplicativeScaling: 0 TimeOffset: 0 SliceCode: 'Unknown' FrequencyDimension: 0 PhaseDimension: 0 SpatialDimension: 2 DisplayIntensityRange: [0 0] TransformName: 'None' Transform: [1×1 affine3d] Qfactor: 1 raw: [1×1 struct]
niftiwrite(Image,'NIfTI_file_name.nii',info); % 元画像を変更済タグ情報と共にファイルに書き込む
認識される構文の種類は下記の3種類のいずれかを選択する必要があり、2番目の引数組み合わせを使います。
info — ファイルのメタデータ: 構造体: ファイルのメタデータ。関数 niftiinfo によって返される構造体として指定します。
  4 Comments
KT
KT on 6 Oct 2022
Uenoさま 返信ありがとうございました。 ご教示頂いた方法で、関連しそうなタグをいくつか書き込むことでうまくいきました。 今後とも宜しくお願い致します。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!