You are on page 1of 5

トップ > Python > 【Python】画像の類似度の計算(Dice係数)

【初⼼者向け】基礎&実践プログラ
2020-06-10
ング

【Python】画像の類似度の計算(Dice AIProgrammer
脳画像解析・⼈⼯知能(AI)を使って

係数) 事をしています。

プログラミングをするうえで、初⼼者がつまづき
すいところ、最短で実⼒が⾝につく⽅法
 Python をお伝えします。

読者になる 635

注⽬記事

2020-12-19
【画像認識】Pythonを
った物体抽出・切り取

2020-05-04
Pythonを使った株価の
動収集

2020-04-29
【Python】MAEとRM
の計算⽅法

動かしながら学ぶ PyTorchプログラミング⼊⾨
2020-05-07
作者:斎藤勇哉 【Python】相関⾏列
発売⽇: 2020/11/30
(Correlation Matrix)と
メディア: Kindle版
ートマップ (Heat Map
作り⽅

2020-04-18
【Excel】⽂字列の⾜し
(結合)

⽬次 2021-03-18
【脳MRI画像解析】ComBatをもちいた
ータの調和(Harmonization)
⽬次

⽬次

⽬的
2020-06-10
準備 【Python】画像の類似
フォルダ構造 の計算(Dice係数)

画像類似度の計算(Dice係数)

calc_dice.py 2020-07-16
【Python】バイオリン
result_diceindex.csv
ロット(Violin Plot)
FSLでやりたい場合

fsl_dicecalc.sh

2020-05-06
【Python】縦断データ
可視化(プロット・箱ひ
図・バイオリン図・信頼
⽬的 間・ヒストグラム)

2020-06-22
NIFTI形式の画像からPythonを使ってDice係数を計算する。 【Python】カッパ(k)
数の計算

準備

必要となるパッケージは以下の通りです。必要に応じてインストールしてください。
カテゴリー

pip3 install nibabel


Python (35)
pip3 install numpy
pip3 install glob Linux (16)
pip3 install pandas
FSL (1)

フォルダ構造
最新記事

フォルダ構造は以下の通りです。image1とimage2に⽐較したい画像をいれてください。⽐較 【脳MRI画像解析】ComBatをもちいた
したい画像同⼠が⽐較できるようにimage1とimage2の並び順は対応させておいてください。 ータの調和(Harmonization)

calc_dice.pyはDice係数を計算するためのPythonスクリプトです。 【Python】ROC曲線の作成・AUC算出
最適なカットオフ値の決定・分類正確度
感度 / 特異度の算出まで
.
├── calc_dice.py 【脳MRI画像解析ケーススタディ】施設
├── image1 差の評価 〜拡散定量値の観点から〜
│ ├── sub001.nii.gz
【Python】DICOMのソート処理
│ ├── sub002.nii.gz
│ └── sub003.nii.gz 【Slack API】⾃動いいね・ダイレクト
└── image2 ッセージ・投稿収集
├── sub001.nii.gz
├── sub002.nii.gz
└── sub003.nii.gz
⽉別アーカイブ

▶ 2021 (9)
画像類似度の計算(Dice係数)
▼ 2020 (86)
2020 / 12 (10)
2020 / 11 (10)
2020 / 10 (2)
以下のコードをimage1フォルダとimage2フォルダと同じ階層に calc_dice.py として保存し
2020 / 8 (2)
ます。 2020 / 7 (2)
2020 / 6 (7)
2020 / 5 (12)
calc_dice.py 2020 / 4 (35)
2020 / 3 (6)

import nibabel as nib


import numpy as np
import glob 検索
import pandas as pd
記事を検索

def load(file):
img = nib.load(file)
data = img.get_fdata().astype("float16") 免責事項
data_reshape = data.reshape(-1)
return data_reshape プライバシーポリシー

def dice(x, y):


"""
Dice's coefficient お問い合わせ
Sørensen-Dice coefficient
https://en.wikipedia.org/wiki/Dice%27s_coefficient お問い合わせフォーム
"""
return 2 * np.sum(((x==y)&(x==1)&(y==1)) / float(sum(map(len, (x[x==1],

filelist1 = sorted(glob.glob("image1/*.nii.gz"))
filelist2 = sorted(glob.glob("image2/*.nii.gz"))

filename1, filename2, dice_index = [], [], []

for i in range(len(filelist1)):
img1 = load(filelist1[i])
img2 = load(filelist2[i])
# img1[img1>0]=1
# img1[img1<0]=0
# img2[img2>0]=1
# img2[img2<0]=0
di = dice(img1,img2)
filename1.append(filelist1[i])
filename2.append(filelist2[i])
dice_index.append(di)
print("{} vs {}, DI:{:.3f}".format(filelist1[i],filelist2[i],di))

df = pd.DataFrame({"File1":filename1, "File2":filename2, "Dice_Index":dice_i


df.to_csv("result_diceindex.csv",index=False)

Dice計算を実⾏するには、以下のコマンドを実⾏します。

$ python3 calc_dice.py
image1/sub001.nii.gz vs image2/sub001.nii.gz, DI:0.765
image1/sub002.nii.gz vs image2/sub002.nii.gz, DI:0.956
image1/sub003.nii.gz vs image2/sub003.nii.gz, DI:0.465

calc_dice.py を実⾏すると結果を「result_diceindex.csv」にまとめてくれます。
result_diceindex.csv

File1 File2 Dice_Index

image1/sub001.nii.gz image2/sub001.nii.gz 0.765

image1/sub002.nii.gz image2/sub002.nii.gz 0.956

image1/sub003.nii.gz image2/sub003.nii.gz 0.465

FSLでやりたい場合

脳画像解析をしている⼈ならFSLで完結したい⼈もいると思います。

その場合は、以下のソースコードを保存して、実⾏する際に対象の2つの画像を引数として渡す

ことでDice係数を計算することができます。

私の戦友からに教えてもらいました!

fsl_dicecalc.sh

image1=$1
image2=$2
fslmaths ${image1} -mul ${image2} -bin image_and
vox_and=($(fslstats image_and -V))
vox_image1=($(fslstats ${image1} -V))
vox_image2=($(fslstats ${image2} -V))
printf '%.3f\n' "$(echo "scale=4; 2 * ${vox_and[0]} / (${vox_image1[0]} + ${
\rm -f image_and.nii*

上記のコードを「fsl_dicecalc.sh」として保存し、以下のコマンドを実⾏。

$ bash fsl_dicecalc.sh <image1> <image2>

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

動かしながら学ぶ PyTorchプログラミング⼊⾨

作者:斎藤勇哉
発売⽇: 2020/11/30
メディア: Kindle版

AIProgrammer 282⽇前

105
5 21 ツイート
2
シェア
送る

関連記事

2020-11-23
【FSL】FDT pipelineを⽤いた標準空間(MNI空間)への位置合わ

動かしながら学ぶ PyTorchプログラミング⼊⾨作者:斎藤勇哉発売…

2020-11-04
【MRI画像解析】ラット・マウスデータに対する前処理から定量値
計算まで
動かしながら学ぶ PyTorchプログラミング⼊⾨作者:斎藤勇哉発売…

2020-06-17
【FSL】ROI(VOI)を⽤いた画像計測
動かしながら学ぶ PyTorchプログラミング⼊⾨作者:斎藤勇哉発売…

2020-06-17
【FSL】Affine変換(平⾏移動+線形変換)
動かしながら学ぶ PyTorchプログラミング⼊⾨作者:斎藤勇哉発売…

2020-06-11
【FSL】⼤脳基底核(Basal Ganglia)のセグメントと体積(Volume)
計測
動かしながら学ぶ PyTorchプログラミング⼊⾨作者:斎藤勇哉発売…

コメントを書く

« 【FSL】⼤脳基底核(Basal Ganglia) 【SPM】画像の解像度の変更


のセグ… (Coregistratio… »

You might also like