niftiwrite で画像タグ情報を編集し書き込みたいとき,エラーが出て出力できません.
7 ビュー (過去 30 日間)
古いコメントを表示
画像読み込み~演算処理後に,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{:});
0 件のコメント
採用された回答
Atsushi Ueno
2022 年 10 月 1 日
編集済み: Atsushi Ueno
2022 年 10 月 3 日
niftiwrite関数にタグ情報を(追記:任意に)変更する機能はありません。niftiinfo関数でタグ情報を読み込み内容を変更してからniftiwrite関数に渡せば、それをNIFTI画像ファイルに書き込んでくれます。
Image = niftiread('brain.nii'); % 元画像の読み込み
info = niftiinfo('brain.nii'); % 元画像からタグ情報の読み取り
info.PixelDimensions % PixelDimensionsが[1 1 1]になっている
info.PixelDimensions = [2 2 2] % PixelDimensionsを[2 2 2]に変更する
niftiwrite(Image,'NIfTI_file_name.nii',info); % 元画像を変更済タグ情報と共にファイルに書き込む
認識される構文の種類は下記の3種類のいずれかを選択する必要があり、2番目の引数組み合わせを使います。
4 件のコメント
Atsushi Ueno
2022 年 10 月 3 日
>例に挙げて頂いた画像を読み込み,処理後の画像をImageProcとすると,まずは書き出す必要があるため,niftiwriteで書き込み,書き込んだファイルをniftiinfoでタグ情報を読み取り変更したのち,再度書き込みする必要があるでしょうか.
⇒「その必要は無いと思います」と回答しましたが私の誤解です。その必要がありますね。
niftiinfo関数はNIFTI画像ファイルからタグ情報を得ますが、タグ情報と画像データは互いに独立しているので、画像データを処理しても「タグ情報が付いてこない」事になります。niftiwrite関数で画像データをファイルに書き込むと、どういう仕組みか分かりませんがヘッダ情報を書き込んでいます。(下記プログラム参照)。これをまたniftiinfo関数でタグ情報として取り出せば「画像データにタグ情報が付いてくる」事になりますね。
※MATLABのドキュメントでは「タグ情報」は「メタデータ」と書かれています。このQAでは「タグ情報」に統一します。
>エラー部分のクラスを一致させれば書き込み可能と考えますがどの部分が不一致となるのでしょうか.
私はこのNIFTI画像フォーマットに対して無知なので判りません。ドキュメントには「メタデータがイメージのコンテンツおよびサイズと一致しない場合、niftiwrite はエラーを返します」と書いてあるので、画像データとタグ情報が矛盾している事は間違いなさそうです。
type niftiinfo
type niftiwrite
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で 3 次元ボリューム イメージの処理 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!