【初心者向け】基礎&実践プログラミング

初心者がつまづきやすいところ、最短で実力が身につく方法をお伝えします。

【Linux】DICOMのソート処理

f:id:AIProgrammer:20200612142340p:plain

目的

  • 様々なSeriesDescriptionで撮像されたDICOMデータから特定のSeriesDescriptionのDICOMデータのみを取り出す。
  • シェルスクリプトで実行

dcmdump

dcmdumpを使うことでDICOMのヘッダー情報を取得することができる。

dcmdumpのインストール

$ apt-get install dcmtk

使い方

使い方は、dcmdumpのあとにDICOM fileを指定するだけです。 タグごとに情報が吐き出されます。

$ dcmdump <DICOM file>

フォルダ構造

一つのフォルダにすべてのDICOMデータが入っていれば、フォルダ構造はどのような形でも構いません。

1_rawdata/                                                                                                              ├── 2014年                                                                                                              │   ├── 2014.10月                                                                                                                                                                                                      │   ├── 2014.11月                                                                                                                                                                                                      │   ├── 2014.12月                                                                                                                                                                                                        │   ├── 2014.3月                                                                                                        │   │   ├── 2014.3.10                                                                                                   │   │   ├── 2014.3.11                                                                                                   │   │   ├── 2014.3.12
│   │   │   ├── Sub100.IMA
│   │   │   ├── Sub134.IMA
│   │   │   ├── Sub198.IMA

ソースコード

以下がソースコードです。以下のソースコードをpickup_dcm.shとして「1_rawdata」と同じ階層に保存します。

注意事項は、

  • inputfolder: すべてのDICOMデータが入ったフォルダ
  • outputfolder: 出力先
  • true_series: 必要なSeriesDescriptionを指定(前もってdcmdumpで調べておいてください)。
  • 集めたい各DICOMのファイル名がそれぞれ違うことを前提に、コードがかかれています。

この例では、「1_rawdata」から、DATのデータのみを「only_DAT」にコピーします。

pickup_dcm.sh

inputfolder="1_rawdata"
outputfolder="only_DAT"
true_series="(0008,103e) LO [DAT [Standard Recon]] # 20, 1 SeriesDescription"
mkdir $outputfolder

for file in $(find $inputfolder -type f|sort);do
    series=$(dcmdump $file |grep SeriesDescription)
    if [ "$a" = "$b" ];then
        cp $file $outputfolder
    fi
done 

実行

保存した「pickup_dcm.sh」を実行します。

「only_DAT」というフォルダが生成され、そこにDATのデータのみが保存されます。

bash pickup_dcm.sh

終わりに

今回は、特定のSeriesDescriptionを対象にしましたが、すべてのSeriesDescriptionに対してそれぞれファイルを集めれば、DICOMデータをSeriesDescriptionでソートすることができます。



頑張れ!喝!!の代わりにB!ブックマークを押していただけるとただただうれしいです(^^)! ↓