-
Notifications
You must be signed in to change notification settings - Fork 63
/
convert-extract.py
42 lines (41 loc) · 1.53 KB
/
convert-extract.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import pydicom as dicom
import matplotlib.pyplot as plt
import os
import cv2
import PIL # optional
import pandas as pd
import csv
# make it True if you want in PNG format
PNG = False
# Specify the .dcm folder path
folder_path = "stage_1_test_images"
# Specify the .jpg/.png folder path
jpg_folder_path = "JPG_test"
images_path = os.listdir(folder_path)
# list of attributes available in dicom image
# download this file from the given link # https://github.com/vivek8981/DICOM-to-JPG
dicom_image_description = pd.read_csv("dicom_image_description.csv")
with open('Patient_Detail.csv', 'w', newline ='') as csvfile:
fieldnames = list(dicom_image_description["Description"])
writer = csv.writer(csvfile, delimiter=',')
writer.writerow(fieldnames)
for n, image in enumerate(images_path):
ds = dicom.dcmread(os.path.join(folder_path, image))
rows = []
pixel_array_numpy = ds.pixel_array
if PNG == False:
image = image.replace('.dcm', '.jpg')
else:
image = image.replace('.dcm', '.png')
cv2.imwrite(os.path.join(jpg_folder_path, image), pixel_array_numpy)
if n % 50 == 0:
print('{} image converted'.format(n))
for field in fieldnames:
if ds.data_element(field) is None:
rows.append('')
else:
x = str(ds.data_element(field)).replace("'", "")
y = x.find(":")
x = x[y+2:]
rows.append(x)
writer.writerow(rows)