안녕하세요.

이번 글에서는 dicom 파일을 딥러닝 학습에 맞게 변환시켜주기 위해 조정해주는 전처리 기법에 대해서 알려드리려고 합니다.

 

 

 

1. DICOM 파일의 bit depth (Feat. Hounsfield unit)

한 이미지를 구성하고 있는 pixel 값의 범위는 기본적으로 0~255입니다.  \(0\sim2^8\)의 범위를 갖고 있기 때문에 8bit depth를 갖고 할 수 있습니다.

 

(↓↓↓bit depth (or color depth; 색 깊이)에 대한 설명은 아래 글을 참고해 주세요↓↓↓)

https://89douner.tistory.com/293

 

3-1. DICOM 파일이란? (Feat. Definition, PACS, digital image 습득과정)

안녕하세요. 이번 글에서는 의료 영상(Medical imaging)에서 사용하는 DICOM 파일이 어떻게 생겨났는지, 어떻게 이용되고 있는지 알아보도록 하겠습니다. 또한 DICOM이라는 것이 digital image이기 때문에,

89douner.tistory.com

 

<그림 출처: https://ai.stanford.edu/~syyeung/cvweb/tutorial1.html>

 

 

하지만, dicom 파일을 구성하고 있는 pixel은 0~255의 범위만 갖고 있는 것이 아니라, "-x ~ +x" 와 같이 범위가 마이너스부터 시작 되는 경우도 있고, bit depth가 12bit, 16bit로 구성되어 있는 것도 많습니다. 

 

예를 들어, CT에는 hounsfield unit (HU)이라는 것이 있습니다. X-ray 또는 CT 촬영 원리는 사람에게 방사선을 쏴서 방사능 투과율에 따라 detector 부분이 다르게 보이는 것입니다.  

 

 

 

결국 투과율에 따라 detector에 입력되는 값들이 다를 텐데, hounsfield라는 사람은 HU라는 단위를 통해 물체를 구분했습니다. HU 단위는 물을 기준으로 하고 뼈는 400~1000 HU 사이의 값을 갖고, 공기는 -1000의 값을 갖는다고 정의했습니다. 값이 작을 수록 검은색을 띄며, 값이 클 수록 흰색을 띕니다 (gray scale과 비슷하죠) 

 

<그림 출처: https://www.researchgate.net/figure/The-Hounsfield-scale-of-CT-numbers_fig2_306033192>

 

<그림 출처: https://www.researchgate.net/figure/Hounsfield-scale-table_tbl1_327863426>

 

<그림 출처: https://processing.org/tutorials/color>

 

 

실제로 dicom 파일 하나를 가져와서  max, min 값을 뿌려보면 아래와 같이 나옵니다.

(Note. DICOM 파일에서 추출한 pixel 값들이 완전히 HU 값을 표현한다고 볼 순 없습니다. 그 이유에 대해서는 다음 글의 "CT 전처리 관련 글"에서 'slope intercept equation' 부분에서 설명하도록 하겠습니다) 

 

 

2. DICOM 파일 전처리

앞서 DICOM 파일의 bit depth (color depth)와 실제 이미지 bit depth는 다르다고 언급했습니다.

딥러닝 모델에 들어가는 값은 보통 bit depth를 기반으로 하기 때문에, 이에 맞게 바꾸어 주어야 합니다. 즉, 12bit depth였다면, 0~255 range를 갖는 8bit depth로 변경시켜주어야 하는 것이죠.

 

8bit depth로 변경해주는 방법은 아래와 같습니다.

 

  1. 12bit depth 값들을 모두 0~1 사이로 normalization 해주기
  2. 0~1 사이로 normalization 해준 값들에 255를 곱해주어 이미지에 맞는 8bit depth로 변경해주기

 

 

(↓↓↓Normalization 공식↓↓↓)

<그림 출처: https://python.plainenglish.io/how-to-de-normalize-and-de-standardize-data-in-python-b4600cf9ee6>

 

 

 

 

이렇게 바꿔준 값들은 이미지로 저장시키거나 numpy로 저장시킵니다.

그리고, albumentation 같은 곳에서 load하기 쉽게 formatting을 해주죠.

 

(↓↓↓ albumentation 관련 글↓↓↓)

https://89douner.tistory.com/312?category=1001221 

 

1-2. Data Load (Feat. Albumentations)

안녕하세요. 이번 글에서는 Albumentations라는 패키지를 이용하여 데이터를 로드하는 방법에 대해서 설명하도록 하겠습니다. https://github.com/albumentations-team/albumentations GitHub - albumentations-te..

89douner.tistory.com

 

 

 

지금까지 DICOM 파일 전처리 관련된 설명이었습니다.

감사합니다~

+ Recent posts