mihara473163
@mihara473163

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

pydicom, monaiについて知りたい

Discussion

現在、ctの画像を扱いたく、pydicom, monai(Medical Open Network for AI)について、よく知りたいと考えております。この辺を解説している情報がありましたら教えてください。

解決したいこと

ここに解決したい内容を記載してください。

例)
Ruby on RailsでQiitaのようなWebアプリをつくっています。
記事を投稿する機能の実装中にエラーが発生しました。
解決方法を教えて下さい。

発生している問題・エラー

出ているエラーメッセージを入力

例)

NameError (uninitialized constant World)

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

ソースコードを入力

例)

def greet
  puts Hello World
end

自分で試したこと

ここに問題・エラーに対して試したことを記載してください。

0

アドバイス感謝します。DICOMデータの置き場所がわからなく、同じように記述してもうまくいかなく困っています

0Like

pydicom をセットアップして説明にしたがって実行するとサンプルデータも入ります。

https://pydicom.github.io/pydicom/stable/old/getting_started.html
このページの例では

>>> filename = get_testdata_file("rtplan.dcm")

この後で filename と打てば次のようにサンプルデータのパスが表示されます。

>>> filename
'/home/username/.local/lib/python3.X/site-packages/pydicom/data/test_files/rtplan.dcm'

自前のデータがあるのなら filename にそのパスを指定すれば良いでしょう。

1Like

python初心者で、jupyterlabを使用しています。ご返事深く感謝しております。test.dcmを、c:\ユーザー\HP\ダウンロード\bennkyou\aipandas
に入れております。下記を実行しましたが、何も出てきません。お教え願えれば幸いです。
import pydicom as dicom
ーー
from PIL import Image
import numpy as np
ーー
filename = get_testdata_file("test.dcm")
filename

0Like

get_testdata_file() はあくまでも pydicom で用意されているテストデータを取得して、そのパスを返すメソッドですから、自前のファイルを参照するなら下記のようにすれば良いです。

ds = pydicom.dcmread('path_to_myfile') 

メソッドの説明は help() で得られます。

1Like

ありがとうございました。実行したところ下記となってしまいます。
import pydicom

import os

path = os.getcwd()

print(path)
C:\Users\HP\Downloads\Untitled Folder\aipandas

ds = pydicom.dcmread('test.dcm')
print(ds)


Error message

FileNotFoundError Traceback (most recent call last)
Cell In[31], line 1
----> 1 ds = pydicom.dcmread('test.dcm')
2 print(ds)

File ~\anaconda3\Lib\site-packages\pydicom\filereader.py:1002, in dcmread(fp, defer_size, stop_before_pixels, force, specific_tags)
1000 caller_owns_file = False
1001 logger.debug("Reading file '{0}'".format(fp))
-> 1002 fp = open(fp, 'rb')
1003 elif fp is None or not hasattr(fp, "read") or not hasattr(fp, "seek"):
1004 raise TypeError("dcmread: Expected a file path or a file-like, "
1005 "but got " + type(fp).name)

FileNotFoundError: [Errno 2] No such file or directory: 'test.dcm'

可能でしたら、お願いします。

0Like
FileNotFoundError: [Errno 2] No such file or directory: 'test.dcm'

このメッセージの通り、カレントディレクトリに test.dcm ファイルが無いのでしょう。

python の基本的なチュートリアル等を熟されてから pydicom に進まれるのが結果的に早道になるかと思います。

1Like

@mizu4myさま
アドバイスほんとうに感謝しております。
【DICOM】【入門】Pydicomの使い方###
を読み、いろいろ試しております。
解決方法を教えて下さい。
下記コードをいれ、何とか、dicomデータを読めました。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import pydicom
import cv2

file = pydicom.dcmread('test.dcm')
print(file)
上記で、読めることは確認できました。下記を走らすとエラーが出ます。
file = pydicom.dcmread('test.dcm')
img = file.pixel_array
plt.imshow(img)
plt.show()

発生している問題・エラー

出ているエラーメッセージを入力

RuntimeError Traceback (most recent call last)
Cell In[106], line 2
1 file = pydicom.dcmread('test.dcm')
----> 2 img = file.pixel_array
3 plt.imshow(img)
4 plt.show()

File ~\anaconda3\Lib\site-packages\pydicom\dataset.py:1955, in Dataset.pixel_array(self)
1940 @property
1941 def pixel_array(self) -> "numpy.ndarray":
1942 """Return the pixel data as a :class:numpy.ndarray.
1943
1944 .. versionchanged:: 1.4
(...)
1953 :class:numpy.ndarray.
1954 """
-> 1955 self.convert_pixel_data()
1956 return cast("numpy.ndarray", self._pixel_array)

File ~\anaconda3\Lib\site-packages\pydicom\dataset.py:1512, in Dataset.convert_pixel_data(self, handler_name)
1510 self._convert_pixel_data_using_handler(handler_name)
1511 else:
-> 1512 self._convert_pixel_data_without_handler()

File ~\anaconda3\Lib\site-packages\pydicom\dataset.py:1599, in Dataset._convert_pixel_data_without_handler(self)
1593 names = [hh_deps[name][1] for name in missing]
1594 pkg_msg.append(
1595 f"{hh.HANDLER_NAME} "
1596 f"(req. {', '.join(names)})"
1597 )
-> 1599 raise RuntimeError(msg + ', '.join(pkg_msg))
1601 last_exception = None
1602 for handler in available_handlers:

RuntimeError: The following handlers are available to decode the pixel data however they are missing required dependencies: GDCM (req. ), pylibjpeg (req. )```

上記のエラーが出ており、解決ができません。大変申し訳ありませんが、アドバイスいただけたら幸いです。
村井 茂

0Like

件のファイルは圧縮データではありませんか。メッセージにある通り、画素データをハンドリングするためライブラリ(GDCM, pylibjpeg)が不足しているようです。

RuntimeError: The following handlers are available to decode the pixel data however they are missing required dependencies: GDCM (req. ), pylibjpeg (req. )

エラーメッセージを読んで理解するのはプログラミングの基本です。特に難しいことは書いてありません。

pydicom は圧縮データの扱いにまだ難がありますし、まずは非圧縮データから始めるのが妥当です。DCMTK の dcmdjpeg などで変換できます。

前に書いた通りチュートリアルや例題の理解から始めましょう。

0Like

Your answer might help someone💌