信号値の最大値、最小値、中央値、平均値、標準偏差を求めてみる

はじめに

今回は画像信号値の最大値、最小値、中央値、平均値、標準偏差を求める方法をやってみたいと思います。これら値を求める方法はpythonの標準ライブラリーのstatisticsや、pandas、scipy、numpyと様々なライブラリーで求めることができます。

しかし、pydicomで出されるピクセル配列がnumpy配列の為、numpyを用いて求めていきたいと思います。

画像は前回用いた画像を用いてやっていきます。


最大値を求める

最大値を求めるコードは

np.max(配列)

を用いて求めます。(下記コード11行目)


# -- coding utf-8 --

import pydicom
import numpy as np
import fileselect as fs

filename = fs.single_fileselect()
dcm = pydicom.dcmread(filename)

max_value = np.max(dcm.pixel_array)

print(max_value)

結果は”1187”と返され、上記ヒストグラムの最大値を合っています。


最小値を求める

最小値を求めるコードは

np.min(配列)

で求めることができます。(下記コード12行目)


# -- coding utf-8 --

import pydicom
import numpy as np
import fileselect as fs

filename = fs.single_fileselect()
dcm = pydicom.dcmread(filename)

max_value = np.max(dcm.pixel_array)
min_value = np.min(dcm.pixel_array)

print(max_value)
print(min_value)

結果は最小値0が返ってきます。


中央値を求める

中央値を求めるコードは

np.median(配列)

となります。(下記コード13行目)


# -- coding utf-8 --

import pydicom
import numpy as np
import fileselect as fs

filename = fs.single_fileselect()
dcm = pydicom.dcmread(filename)

max_value = np.max(dcm.pixel_array)
min_value = np.min(dcm.pixel_array)
median_value = np.median(dcm.pixel_array)

print(max_value)
print(min_value)
print(median_value)

結果は103.0となりました。


平均値を求める

平均値を求めるコードは

np.mean(配列)

で求めることができます。(下記コード14行目)


# -- coding utf-8 --

import pydicom
import numpy as np
import fileselect as fs

filename = fs.single_fileselect()
dcm = pydicom.dcmread(filename)

max_value = np.max(dcm.pixel_array)
min_value = np.min(dcm.pixel_array)
median_value = np.median(dcm.pixel_array)
mean_value = np.mean(dcm.pixel_array)

print(max_value)
print(min_value)
print(median_value)
print(mean_value)

結果は121.04859924316406となりました。


標準偏差を求める

標準偏差を求めるコードは

np.std(配列)

で求めることができます。(下記コード15行目)


# -- coding utf-8 --

import pydicom
import numpy as np
import fileselect as fs

filename = fs.single_fileselect()
dcm = pydicom.dcmread(filename)

max_value = np.max(dcm.pixel_array)
min_value = np.min(dcm.pixel_array)
median_value = np.median(dcm.pixel_array)
mean_value = np.mean(dcm.pixel_array)
std_value = np.std(dcm.pixel_array)

print(max_value)
print(min_value)
print(median_value)
print(mean_value)
print(std_value)

結果は115.44804225706706となりました。


最後に

今回は、最大値、最小値、中央値、平均値、標準偏差を求める方法をやってみました。

今回、最頻値を求める方法を取り上げませんでしたがnumpyでは最頻値を簡単に求める方法がありませんので、一度ヒストグラムを求め、度数配列から最大値を求め、その階級がどの値なのかを求める方法となると思われます。

ただ、その方法は面倒なので他のライブラリを用いて求めてしまった方が簡単に求められると思います。

それでは、お疲れ様でした。


環境

  • windows10
  • python3.6.1
  • Anaconda custom(64-bit)
  • PyCharm2020.2(Communication Edition)

タイトルとURLをコピーしました