LinacのEPIDで取得した動画をdicom形式でexportした。いつも通りにpydicomで解析してみる。
import pydicom
dicom_data = pydicom.dcmread(file_name)
すると、
(0002, 0010) Transfer Syntax UID UI: MPEG2 Main Profile / Main Level
なるほど、動画なんですね。
いつもの通り、
array = dicom_data.pixel_array
でpixel arrayを取得しようとすると、
NotImplementedError: Unable to decode pixel data with a transfer syntax UID of '1.2.840.10008.1.2.4.100' (MPEG2 Main Profile / Main Level) as there are no pixel data handlers available that support it. Please see the pydicom documentation for information on supported transfer syntaxes
あれ、うまくいかない。
dicom_data.PixelData
から解析するかと思いながら、めんどいな、もしかして普通に動画ファイルとして解析できちゃったりしないかな、なんて思って、
import cv2
cap = cv2.VideoCapture(file_name)
あれ、エラーでない。いけるのか?
frames = []
while True:
ret, frame = cap.read()
if ret == True:
frame=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #Gray scaleにしてあるよ
frames.append(frame)
else:
break
とかしてみたら無事にframes
のリストができてる。
これを np.array(frames).shape
とかすれば
(143, 576, 720)
なるほど、576 x 720 の画像が143枚入っているのがわかる。
あとはplt.imshow(np.array(frames)[0,:,:])
として最初の画像が表示できた。
dicomファイルだからと身構えず普通に動画ファイルとしてopencvを使って解析できることがわかった。