dcm2niiを用いてDICOM形式をNIFTI形式へ変換する方法

しばらく前ですが、dcm2niiを用いてDICOM形式をNIFTI形式に変換する方法についてドキュメントを作成しました。ブログ形式で改めて公開します。

サンプルのDICOM画像として、1例分準備しました。こちらのDICOM画像で説明していますので、理解を深めたい方はこちら(T1.zip)からダウンロードして試してみてください。

  1. 画像のファイル形式
  2. 画像解析を行うにあたって、画像のファイル形式を知っておくことは重要です。
    最低限、知っておくべきファイル形式は以下の3つになります。

    • DICOM形式
    • DICOM形式は医用画像の共通フォーマットです。
      MRI, CT, PET, SPECT撮像機器などで撮影されたものを出力する際に、それぞれの機器に独自の形式で保存することもできますが、DICOM形式で出力することによって、ユーザは機種の違いを意識せずに画像を見ることができます。

      画像の1スライスが1つのファイルになっているため、矢状断160枚から成る3次元T1強調画像のDICOM画像は、160のファイルから構成されることになります。標準的な拡張子は.dcmとなります。

    • ANALYZE形式
    • アメリカのメイヨークリニックで開発された形式です。

      画像のヘッダー情報を有するファイル(.hdr)と画像情報を有するファイル(.img)の2つで構成されています。ファイルの扱いが容易であることから、しばらく前まではデファクト・スタンダードとして使われていました。

      しかし、左右の情報を持っていないため、しばしば混乱が生じることがあったため、現在は次に述べるNIfTI形式に移行してきています。

    • NIfTI-1形式
    • アメリカ国立衛生研究所(NIH)を中心として開発されている形式で、ANALYZE形式の拡張版です。

      より多くのヘッダー情報を有することができる他に、左右情報を持っています。このため、左右について悩む必要がありません。現在、SPM(SPM5以降)、FSLでは標準の画像形式となっています。

      一つ気をつけなければいけないことは、画像の拡張子が2つあることです。ANALYZEと同じ.hdrと.imgの2つのファイルからなる形式とヘッダーと画像を一つにまとめた.nii形式の2つがあります。

  3. dcm2nii(gui)について
  4. プログラム名が示す通り、DICOM画像(dcm)をNIfTI画像(nii)に変換するプログラムです。その使い勝手の良さから、広く使われています。

  5. dcm2niiguiの設定
    • dcm2niiguiの起動
    • まず、dcm2nii(gui)を起動します。

      Windowsでは、MRIcornのフォルダの中にある[dcm2niigui.exe]をダブルクリックします。

      Macでは、Spotlightで[dcm2niigui]を検索して下さい。

      また、[アプリケーション]→[MRIcron]→[dcm2niigui]の方法でも可能です。

    • 設定画面の開き方
    • 起動をさせると、下図のような画面が表示されます。

      設定は、[Help]→[Preferences]から行います。

    • 出力ファイルの設定
    • 出力ファイル名は、[Output Filename]から設定を行ってください。

      [Output Filename]の各項目に適宜チェックを入れることにより、必要な情報を出力ファイル名に反映させることができます。

      [Output Filename]によって反映される情報は、NIfTI画像変換時に作成されるテキストファイルに記載されている内容が出力されます。

      [Output Filename]の項目とパラメーターの情報がどのように対応しているのかは、下図を参照してください。

      例えば、[Protocol Name]にチェックを入れるとします。

      すると、パラメーターの「Protocol Name」に記載されている、[1Analize]という情報がファイル名に反映されます。

      ([1Analize]の前に「co」や「o」が付いているファイルもありますが、これについては後ほど説明をします)

    • 患者名を入れるか
    • NIfTI画像のヘッダーに患者名を入れるかの設定です。

      匿名化が望ましいので、[Save patient name in NIfTI header]にはチェックを入れないようにして下さい。

    • 変換情報のテキスト保存
    • [Save text report] は、DICOM画像をNIfTI画像へ変換した際の情報をテキストとして保存することのできるオプションです。上図に示したものは、このテキストファイルです。

      設定の際には、この項目にチェックを入れるようにして下さい。

    • Axialへの切り直し
    • [Reorient large images to nearest orthogonal plane]にチェックが入ると、NIfTI画像がAxial画像で切り直されます。

      MRIcroなどで画像を表示する場合、これをチェックすることで適切に画像を表示できます。

    • Collapse folders
    • 画像が複数のサブフォルダに分かれている場合、[Collapse folders]にチェックを入れることで適切に変換されます。

      基本的にいつもチェックを入れておくのが良いと思います。

    • 下層ディレクトリ
    • どのくらい深いサブディレクトリまで画像を探すかの設定です。

      もし、ディレクトリ階層が5段階以上に深い場合には、[Recursive Folder Search Depth]の数字を増やしていきます。

    • 出力先の設定
    • 変換後、画像の保存先を決めます。

      デフォルトでは、DICOMディレクトリの中に出力されます。保存先は任意の場所でかまいません。ここでは、説明用にCドライブの中に“img_data”というフォルダを作成しておき、その中に出力をするという設定にしたいと思います。

      画像の保存先を決めたら、[Always save to…]を選択して下さい。

      [フォルダーの参照]では、先ほど作成した“img_data”フォルダを選択して[OK]をクリックします。

      すると、[Always save to…]というタブの下には、設定した保存先が表示されます。

    • 出力ファイル形式
    • 出力ファイル形式は、ここでは[FSL/SPM8(4D NIfTI nii)]とします。

      (Advanced)Compressed FSLは、nii.gz形式となります。

      FSLの標準は、このnii.gz形式で、nii形式をgzipで圧縮しています。SPMはnii.gzは直接読めませんので、解凍ソフトで回答して、nii形式にしなければなりません。

  6. dcm2niiguiの実行(Windows/Mac)
  7. Windowsを使用する場合は、DICOM画像が入ったフォルダをドラッグ&ドロップでdcm2niiguiプログラムに入れるだけでNIfTI画像へ変換されます。

    ここでは、サンプルとして用意したT1画像(「IM001」と匿名化をしています)を使って、上記の操作をしてみます。

    Macを使用する場合は、[File]→[DICOM to NIfTI]でDIOCM画像が入ったフォルダを選択します。

  8. dcm2niiguiの結果
  9. dcm2niiguiを実行すると、下図のように結果が示されます。

    これでDICOM画像からNIfTI画像へ変換されました。

    NIfTI画像変換後のファイル名について、解説します。

    • IM001.nii → NIfTI画像に変換された画像
    • oIM001.nii → 水平断で切り直された画像
    • coIM001.nii → 脳以外の不必要な領域を切り取った画像

    DICOM画像をNIFTI画像へ変換した場合、出力ファイル名の設定とは関係なく、上記の3種類のファイルが作成されます。

    また、画像ファイルの他に、変換した画像のパラメーターもテキストとして出力されます。

  10. (参考) Orthogonal plane
  11. ファイル名の前に o がつくファイルは Axial に切り直しされているわけですが、この意味を表示しています。MRIcroのようなソフトだとこの効果を実感できます。

    FSLeyesでも同様です。

    矢状断画像をNIFTIに変換したもの(IM001.nii)をそのまま FSLeyes で表示すると以下のようになります。
    これはバグではなくFSLの哲学によるもので、FSLはスキャナーの向きに従って画像を表示するのでこうなります。

    一方、Axialに切り直した画像(oIM001.nii)を FSLeyes で表示すると以下のようになります。

    これは、FSL における fslreorient2std と同じ効果ということになります。

  12. (参考) Cropされた画像
  13. co画像は、頸部など余計な部分を切り落とす (cropする) 画像となります。

  14. 【参考資料】※ 2018年12月20日アクセス
  15. 以下はより深い勉強をしたい人の参考になると思います。

Print Friendly, PDF & Email

18 thoughts on “dcm2niiを用いてDICOM形式をNIFTI形式へ変換する方法

  1. 根本先生

    ご返信ありがとうございます。
    treeでディレクトリ構造を吐き出しました。
    fMRIファイルの入れた親ディレクトリからの構造は以下のようになっております。

    フォルダー パスの一覧: ボリューム Local Disk
    ボリューム シリアル番号は 8861-420C です
    C:.
    ├─SE1
    ├─SE10
    ├─SE11
    ├─SE12
    ├─SE13
    ├─SE14
    ├─SE15
    ├─SE16
    ├─SE2
    ├─SE3
    ├─SE4
    ├─SE5
    ├─SE6
    ├─SE7
    ├─SE8
    └─SE9

    このSEファイルがシリーズファイルとなっておりまして、ご指摘の通り、その一つ一つに例えば海馬がみえるスライスのであればそのfMRI画像が160から240ファイルずつ入っております。

    • 阿部先生

      ありがとうございます。
      その中に160-240と異なるファイルがあるのですか?
      全部が同じではないのでしょうか?

      よかったら、たとえば
      SE1 と SE10 の中がどうなっているか同様に tree の結果を出してもらうことはできますでしょうか?

      • 根本先生

        返信が遅れ申し訳ありません。
        SE1-16の中に160から240個のDICOMファイルが入っており、一つのファイルはある時間での一スライス面のMRI画像となります。

        SEフォルダの中にはサブフォルダはありません。
        ですので、cmd cd treeで吐き出した結果は以下の通りとなっております。

        C:\Users\***\MRI\F_BEFORE\SE1>tree
        フォルダー パスの一覧: ボリューム Local Disk
        ボリューム シリアル番号は 8861-420C です
        C:.
        サブフォルダーは存在しません

        C:\Users\***\MRI\F_BEFORE\SE10>tree
        フォルダー パスの一覧: ボリューム Local Disk
        ボリューム シリアル番号は 8861-420C です
        C:.
        サブフォルダーは存在しません

        • 阿部先生

          失礼しました。Windowsのtreeは、ディレクトリしか表示しないんですね…。

          なぜ160個から240個のDICOMファイルと数が一致しないのでしょうか?
          これが気になるのですが。

          • 根本先生

            わかりにくくて、申し訳ありません。
            SEフォルダ一つあたり、2つのシリーズ(スライス面)が入っておりまして、1シリーズ80枚で撮像しております。つまり、SE1~15には2つのシリーズ(160ファイル)、SE16のみ3つのシリーズ(240ファイル)を入れているとのことでした。

          • 阿部先生

            わかりました。

            いくつか確認させてください。

            • dcm2niiだと、1つのサブフォルダに2つずつniiファイルができて、そして、SE16のみ3つのniiファイルができるというイメージでよいでしょうか?
            • 15*2+16*3=78のniiファイルができるという認識でよいでしょうか?
            • SE1には脳底部の2スライスで、SE16は頭頂部の3スライス分がおさまっている感じでしょうか?
            • SE1のものをniftiに変換した時のniftiのファイル名を教えていただけますか?
            • そして、SE16のものをniftiに変換した時のniftiのファイル名を教えていただけますか?
          • 根本先生

            作成したものを見てみると少し異なっておりました。
            大変申し訳ございません。

            >> dcm2niiだと、1つのサブフォルダに2つずつniiファイルができて、そして、SE16のみ3つのniiファイルができるというイメージでよいか?
            1つのサブフォルダあたりには一つのniiファイルができます。しかし、niiファイルに含まれているvolumeが異なり、SE1は1 volume、SE2-15までは2volume、SE16のみ3 volumeとなっておりました。

            >> 15*2+16*3=78のniiファイルができるか?
            niiファイルは全部で16ファイル作成されました。

            >> SE1には脳底部の2スライスで、SE16は頭頂部の3スライス分がおさまっている感じか?
            SE1には脳底部の1スライス、SE2-15はそこから頭側へ2スライスずつ、SE16には頭頂部の3スライスが入っておりました。

            >> SE1のものをniftiに変換した時のniftiのファイル名ならびに、SE16のものをniftiに変換した時のniftiのファイル名。
            SE1: IMG1s100002a000
            SE2: IMG1s100003a000
            SE15: IMG1s100016a000
            SE16: IMG1s100017a000

            どうぞよろしくお願い申し上げます。

          • 阿部先生

            光明がさしてきました。(^^)

            よくわかりました。

            Z軸方向に画像を積み重ねていったら、ひとつのMRIができるようなイメージになるかと思うのですがどうでしょうか?

            それならば、FSLを使って行うことができます。

            もし、Dropboxなどでniiファイルを共有していただけるようでしたら、こちらで一度試すことができます。

            と、これまでやりとりをしていて、今、ふと気づいてしまったのですが、

            MRIcroGL に搭載されているdcm2niixで変換してみたらいかがでしょうか?
            より多い変換に対応しているので、もしかしたら、あっさり行くかもしれません。
            Windows版もありますので試してみる価値があるのではないかと思いました。
            (既に試されているようでしたらすみません)

          • 根本先生

            返信が遅れまして申し訳ありません。
            dcm2niixでの変換をしましたが、やはりシリーズ毎のniiとなりました。
            FSLをやってみているところですが、難渋する場合は再度書き込みさせて頂きたく思います。どうぞよろしくお願いいたします。

          • 阿部先生

            dcm2niixでもダメでしたか…。
            了解しました。
            それならばFSLでいくしかないですね。

            今はZ方向にくっつけていく必要がありますので、

            fslmerge -z output.nii.gz file1 file2 file3 file4…

            としていただけたらと思います。
            file1, file2, … はおそらく脳底部から指定する必要があるかと思いますが、逆かもしれませんので試していただければ。

  2. いつもfMRI解析の際に参考にさせて頂いております。

    現在他所よりfMRIデータの解析を依頼され、DICOM→NIFTIのファイル変換を行っているところなのですが、普段自分がfMRI解析をする際のDICOMファイルと仕様が異なり、なかなか解決策が見つからず難渋していることから、アドバイスを頂きたく、書き込みさせて頂きます。

    受け取ったDICOMファイルは1ファイル1スライス(合計2400ファイル程度)から成っている点は良いのですが、シリーズが全体ではなく各スライス毎に分かれてしまっており、MRI converterやdcm2niiなどに入れると、各スライス240ボリュームを1つのシリーズとして、脳底部から頭頂部までの16スライス面に1つずつ対応する16個のniiファイルが作成されてしまっております(作成された1つのimageをみると延々と同じスライスでボクセルの信号変化がちらちらとみえるという形です)。

    普段は1シリーズで6700ファイル程度のDICOMファイルを1つのniiへ変換できているため、DICOMの出力の問題と考えているのですが、この問題を解消する方法などありますでしょうか。

    お忙しい中、申し訳ありませんが、ご教示くださいますと幸いです。
    どうぞ宜しくお願い致します。

    • 阿部先生

      (すみません、スパム扱いされてしまっていて、気づくのに時間がかかってしまいました)

      私も同様の経験があります。
      ひとつのディレクトリに全部まとめてみるのはいかがでしょうか?
      ひとつひとつのディレクトリに入っているファイル名に重複はありますか?

      • 根本先生

        お忙しい中、ご返信ありがとうございます。
        ファイル名がIMGなどの簡易的なものに変換され、重複があったため、重複しないように変更し、一つのフォルダに全ての画像データをまとめましたが、やはりシリーズは分かれたままでした。

        提供元のPCスペックの問題があり、1つのシリーズとして出力すると、フリーズしてしまうために、シリーズを分けたとのことです。
        この段階での解決策または、NIFTIファイル作成後にまとめるなどの手段はあるのでしょうか。
        質問ばかりで申し訳ありません。何卒よろしくお願い申し上げます。

        • 阿部先生

          先生はMacをお使いでしょうか?
          FSLには、fslmergeというコマンドがあります。

          これは、今回のようなケースにぴったりでして、
          nifti画像を結合することができます。

          今、手元にFSLの環境がないのですぐに示せませんが、

          fslmerge -h でヘルプが見れます。

          Windowsだとほかの方法を考える必要がありますね。

          根本清貴

          • 根本先生

            ご返信ありがとうございます。
            当方、WIndowsを使用しております。

            fslmergeについてご教示ありがとうございます。
            他人のMacを借りて、実施してみたいと思います。
            どうぞよろしくお願い致します。

          • 阿部先生

            根本です。
            Windowsなのですね。
            思いつきました。以下の方法はいかがでしょうか?

            dcm2niiguiでできます。

            1. まず、dcm2niigui で、それぞれの画像を、3D NIFTI として吐き出します。
            2. その後、dcm2niigui で、メニューから、File -> NIFTI 3D -> 4D を選び、3D画像をすべて選択します。

            そうしましたら、4D画像を得ることができると思います。

            いかがでしょうか。

          • 根本先生

            ご返信ありがとうございます。
            先生にご指示頂いた方法で実施しましたが、3D→4Dの段階で、「Stack 3D to 4D aborted, image dimensions/datatype vary C:\Users\***\IMG1s100003a000_01.nii C:\Users\***\IMG1s100002a000.nii」とエラーが吐き出されてしまいます。

            同一のシリーズ内では3D→4D変換はできました。
            シリーズが異なると変換できないようでした。

          • 阿部先生

            出張が続き返信が遅くなってしまってすみません。

            先生にご指示頂いた方法で実施しましたが、3D→4Dの段階で、「Stack 3D to 4D aborted, image dimensions/datatype vary C:\Users\***\IMG1s100003a000_01.nii C:\Users\***\IMG1s100002a000.nii」とエラーが吐き出されてしまいます。

            同一のシリーズ内では3D→4D変換はできました。
            シリーズが異なると変換できないようでした。

            改めて当初の質問を拝見すると、

            受け取ったDICOMファイルは1ファイル1スライス(合計2400ファイル程度)から成っている点は良いのですが、シリーズが全体ではなく各スライス毎に分かれてしまっており、MRI converterやdcm2niiなどに入れると、各スライス240ボリュームを1つのシリーズとして、脳底部から頭頂部までの16スライス面に1つずつ対応する16個のniiファイルが作成されてしまっております(作成された1つのimageをみると延々と同じスライスでボクセルの信号変化がちらちらとみえるという形です)。

            ここをきちんと理解していませんでした。
            たとえば、海馬が見えるスライスがあるとしたら、それだけがひとつのフォルダに入ってしまっているということですね。

            どのようなフォルダ構造になっているか示していただけませんでしょうか。

            Windowsでしたら、treeコマンドが使えますので、

            コマンドプロンプトを立ち上げていただき、該当するfMRIの親ディレクトリに移動していただき、

            tree > fmri_list.txt

            などとして、結果を fmri_list.txt にはきだし、その内容をコメントにコピーしていただけませんでしょうか?
            2400ファイルほどということで、長いラインにはなってしまうと思いますが、それでもかまいません。
            最低3スライス分の構造が見えたらありがたいです。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください