質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

1923閲覧

pydicomでDICOM画像を表示できない

Takayou

総合スコア15

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/03/04 05:49

編集2020/03/04 06:47

DICOM画像をpydicomを用いて表示させようとしたのですがエラーが発生してしまいます.

Python

1import os 2import pydicom as dicom 3import matplotlib.pyplot as plt 4 5 6def load_ct(): 7 data_dir = 'eso_limphCTData2' 8 dicom_dir = '9_8910035thin' 9 dicom_data = os.path.join(os.getcwd(), os.path.join(data_dir, dicom_dir)) 10 11 dicom_files = [] 12 13 # dicomファイルのパスをリスト化 14 for file in os.listdir(dicom_data): 15 dicom_files.append(os.path.join(dicom_data, file)) 16 17 # d = dicom.read_file(dicom_files[0]) 18 d = dicom.dcmread(dicom_files[0]) 19 print(d) # dicomのデータを確認(ここまでは正常に動いた) 20 plt.imshow(d.pixel_array) # エラーが発生 21 plt.show() 22

以下が表示されているエラーコードです.

OSError: cannot identify image file <_io.BytesIO object at 0x00000264BE412C50>

dicomのヘッダ情報は正常に出力できているので,パスの間違い等はないと思います.

pydicomでは読み込めないdicomデータなのでしょうか?

解決策がわかる方,ご教示ください!

追記
下記サイトを参考にしました.
https://qiita.com/fukuit/items/ed163f9b566baf3a6c3f
https://qiita.com/tatsuya11bbs/items/1971f1414c4f0bd18ea9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2020/03/04 06:07

plt.imshow() でエラーが起きたということは matplotlib が対応していないのではないでしょうか
Takayou

2020/03/04 06:15

回答ありがとうございます. 「matplotlibが対応していない」というのは今回読み込んだdicomデータはmatplotlibで表示できないもの,ということでしょうか. dicomデータの中でmatplotlibで表示できるもの,できないものがあるのがなぜなのかわかりません...
tiitoi

2020/03/04 06:28 編集

d.pixel_array はどういうデータなのでしょうか numpy 配列なのであれば、エラーが出たデータで shape や dtype がどうなっているのか教えてください
Takayou

2020/03/04 06:46

正直,調べながらという状況なので 「dicomデータのpixcel値のみを取り出したもの」という事しかわかっていません. データの型を確認しようとしましたが, a = d.pixel_array とした時点で上記のエラーが発生している状況です.
SHOMI

2020/03/04 08:13

DICOMファイルはRAW,JPEG,JPEG2000等複数のフォーマットを格納できるので、表示できているファイルとタグ内容を比較してみては?
Takayou

2020/03/04 09:04

SHOMIさん,ありがとうございます. タグ内容を比較して,解決に至ることができました.
guest

回答2

0

Dicomのデータ形式が通常と異なっているため,読み込めなかったようです

  • データ形式が画像データの時(?)は,通常OW(Other Word String)を使用するが,今回のDicomのデータ形式はOB(Other Byte String)になっていた.

    # 読み込めないDicomのHeader(一部) (7fe0, 0010) Pixel Data OB: Array of 199148 elements # 読み込めるDicomのHeader(一部) (7fe0, 0010) Pixel Data OW: Array of 524288 elements

参考
- http://chtgkato3.med.hokudai.ac.jp/lecture/MoriDICOMslides.pdf
- http://www.jira-net.or.jp/dicom/file/dicom_201002_MRC_vol19-1.pdf

フリーソフトを使用して,OBをOWに変換するとうまく表示できました.
参考

- https://www.kuhp.kyoto-u.ac.jp/~diag_rad/intro/tech/dicom_tools.ja.html#FEATURES

投稿2020/03/04 09:01

Takayou

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

投稿2020/03/04 08:59

Takayou

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問