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
plt.imshow() でエラーが起きたということは matplotlib が対応していないのではないでしょうか
回答ありがとうございます.
「matplotlibが対応していない」というのは今回読み込んだdicomデータはmatplotlibで表示できないもの,ということでしょうか.
dicomデータの中でmatplotlibで表示できるもの,できないものがあるのがなぜなのかわかりません...
d.pixel_array はどういうデータなのでしょうか
numpy 配列なのであれば、エラーが出たデータで shape や dtype がどうなっているのか教えてください
正直,調べながらという状況なので
「dicomデータのpixcel値のみを取り出したもの」という事しかわかっていません.
データの型を確認しようとしましたが,
a = d.pixel_array
とした時点で上記のエラーが発生している状況です.
DICOMファイルはRAW,JPEG,JPEG2000等複数のフォーマットを格納できるので、表示できているファイルとタグ内容を比較してみては?
SHOMIさん,ありがとうございます.
タグ内容を比較して,解決に至ることができました.
回答2件
あなたの回答
tips
プレビュー