본문 바로가기

카테고리 없음

DCM을 PNG로 변환시키기

dcm은 pydicom이라는 거 import 시키면 됨.

대체로 dcm이나 dcom 파일은 의료영상중 CT 사진 전용 파일 포멧이라고 생각하면 됨.


근데 대충 png 파일로 만드는 방법은 코드 이해하면 되고, 

현재 코드에는 dcm 파일들을 읽어와서

사이즈 512,512 로 되어있으니 원하는 걸로 바꾸길...

그리고 이거는 png 파일 형식으로 바꾼거임.

그리고 중요한 것은 이 코드 안에 normalization도 잇음.





# DCM 파일을 PNG 파일로 변환


import matplotlib.pyplot as plt

from skimage import exposure, img_as_float

import os

import pydicom


def dicom_2png(file): 


    dcm_list = os.listdir(file)

    num_dcm = len(dcm_list)

    count = 0

    for dcm_name in dcm_list:

        dcm_path = file + '/' + dcm_name


        _currFile = dcm_path  # 파일 명

        dcm = pydicom.dcmread(dcm_path)  # DCM 읽어서 변수저장

        fileName = os.path.basename(dcm_path)  # base name을 file명 설정

        imageX = dcm.pixel_array  # dcm의 픽셀 배열

        temp = imageX.copy()  # 똑같은 배열을 만듬.

        print("shape ----", imageX.shape)

        picMax = imageX.max()  # 제일 큰 픽셀 저장

        vmin = imageX.min()  # 제일 작은 픽셀 저장

        print ('picMax = ' , picMax  , 'vmin = ' , vmin)

        vmax = temp[temp < picMax].max()

        print("vmin : ", vmin)

        print("vmax : ", vmax)

        imageX[imageX > vmax] = 0

        imageX[imageX < vmin] = 0

        result = exposure.is_low_contrast(imageX)

        # print(result)

        image = img_as_float(imageX)  # 배열을 실수로 바꿔서 저장

        plt.cla()

        plt.figure('adjust_gamma', figsize=(5.12, 5.12))  # 사이즈를 저장

        plt.subplots_adjust(top=1, bottom=0, left=0, right=1, hspace=0, wspace=0)

        plt.imshow(image, 'gray')

        plt.axis('off')

        plt.savefig(fileName + '.png')

        if count == num_dcm :

            print("have finished")

        count = count + 1


if __name__ == '__main__':



    환자 몸

    dicom_2png('dcm 폴더 넣기')




수정 ** 제일 정확한 방법이 내 글안에 있으니 찾아서 그걸 쓰세요