Heesung Yang
DICOM 영상에서 Window Center와 Window Width는 대체 왜 쓰는걸까?
이 글의 내용을 이해하기 위해서는 이미지의 픽셀에 대한 개념과 픽셀이 숫자로 표현된다는 것을 알고 있어야 한다. 만약 잘 모르겠다면 이 글을(컴퓨터는 어떻게 이미지를 저장하고 표현할까) 먼저 읽기 바란다.
쉽지 않은 주제다. 육하원칙으로 한번 풀어보자.
- 누가 : 영상 판독 의사
- 언제 : DICOM 영상을 보고 이상 유무를 판독해야 할 때
- 어디서 : (대부분) 병원
- 무엇을 : Window Center, Window Width 조정
- 왜 :
관심있는 부위를 더 잘보이게
- 어떻게 : 픽셀값을 적당히(?) 변경
우선 왜
부터 얘기해보고 그 다음 어떻게
에 대해 얘기해보자.
DICOM 영상은 일반 이미지와 다르다
DICOM 영상은 몸에 X-ray를 투과하여 생성한 이미지다. X-ray 투과량은 우리 몸의 기관마다(구성 성분에 따라) 다르다고 한다.
비슷한(?) 사례를 찾아보자면, 일반 커튼과 암막 커튼이 따로 있는 이유랄까? 즉, 소재에 따라 빛을 차단할 수 있는 정도가 다르듯, 우리 몸의 각 기관도 구성 성분이 다르기 때문에 X-ray 투과율도 몸의 기관마다 다르다고 이해하면 된다.
위 이미지를 보면 뼈는 흰색으로 보이고, 폐 부분은 검은색으로 보이는데 그 이유가 바로 각 조직별로 X-ray 투과율이 다르기 때문이다. 이 특징을 이용하면 특정 부분을 강조하여 표현할 수 있다.
필자가 임의로 Window 값을 조정하여 빨간색 영역의 대비를 높여 보았다. (B 영상이 원본이다.)
- A 영상은 폐 부분이 좀 더 구분되어 보이고, C 영상은 뼈 부분이 좀 더 뚜렷하게 보인다.
- A 영상은 폐 이외의 부분은 거의 흰색에 가깝게 변했다. 즉, 관심없는 부분은 전부 흰 색에 가깝게 만들었기 때문에 폐 부분에 좀 더 집중할 수 있다.
- 반대로 C 영상은 폐 부분이 거의 검은색에 가깝게 변했다. 즉, 관심없는 부분은 전부 검은색에 가깝게 만들었기 때문에 뼈 부분에 좀 더 집중할 수 있다.
즉,
Windowing 이란 관심 없는 부분(영역)을 검은색 또는 흰색으로 변환한 후, 관심 영역의 색상 대비를 높여 관심 영역이 좀 더 구분되어 보이도록 하는 방법이다.
** 위 예제는 Windowing을 왜 하는지 이유를 이해하기 위해 임의로 조정해 본 영상이다. Chest X-ray 영상에서 척추 뼈를 보는 경우가 실제 있는지 없는지 필자는 모른다. 기술적으로만 이해하고 넘어가자.
Window를 조절한다는 의미는 대체 뭘까
집의 한 벽면에 창문이 있다고 상상해보자. 우리는 집 밖의 풍경이 궁금해 창문을 쳐다본다. 창문과의 거리는 1m를 유지해야만 한다. 이 때 우리는 바깥 세상을 이 창문의 크기만큼만 볼 수 있다. 더 많은 영역을 보고 싶으면 큰 창문을, 작은 영역을 보고 싶으면 작은 창문을 설치해야 한다.
DICOM 영상에서의 Window도 이와 비슷하다. 우리가 만약 폐 영역을 좀 더 잘 보고 싶다면, 폐 영역의 픽셀 값 범위를 벗어나는 픽셀들은 값을 0으로 만들거나(검은색) 4095(흰 색)으로 만들면 된다.
** 이전 글에서 흑백 영상은 0부터 255사이의 값으로 표현한다고 했었다. DICOM 영상은 같은 흑백이지만, 좀 더 색을 잘게 쪼개서(?) 대부분 0부터 4095사이의 값으로 표현한다. 0부터 65535 사이의 값으로 표현하는 경우도 있다는데 필자는 아직 못봤다.
Window 조절 방법
위에 예시를 들었던, 폐 영역을 좀 더 잘 보기위해 Window를 조절한 방법을 구체적으로 살펴보자.
-
폐 영역은 어두운 색이 많다. (픽셀값이 작다.)
-
폐 영역을 구성하는 픽셀값의 범위 지정을 위해, 기준 점(Window Center)와 너비(Window Width)를 설정한다.
-
범위를 벗어나는(관심없는) 픽셀 값은 모두 검은색이나 흰 색으로 만든다.
- 이 예에서는 관심 영역의 가장 작은 픽셀값이 0 이므로 검은색으로 바꿀 부분은 없다.
- 관심 영역의 가장 큰 픽셀 값이 2100 이므로, 2100보다 크면 4095(흰 색)으로 변경했다.
-
범위 안의 픽셀 값들은 다시 적당하게(?) 변경한다. 범위 안에서 다시 가장 작은값은 검은색(0), 가장 큰 값은 흰 색(4095)으로 설정한다. 그 외 값들은 그라데이션(?)한다.
감이 오는가? 위 과정은 친절하게도 DICOM 표준 문서에 수식으로 나와있다.
These Attributes are applied according to the following pseudo-code,
where x is the input value, y is an output value with a range from ymin to ymax,
c is Window Center (0028,1050) and w is Window Width (0028,1051):
if (x <= c - 0.5 - (w-1) /2), then y = ymin
else if (x > c - 0.5 + (w-1) /2), then y = ymax
else y = ((x - (c - 0.5)) / (w-1) + 0.5) * (ymax- ymin) + ymin
마치며
이번 글에는 파이썬 코드를 첨부하지 않았다. 이유는 DICOM 영상을 제대로 표현하려면 알아야할 DICOM 속성들이 많이 있기 때문인데, 아래 DICOM 속성들을 모두 이해하지 않은 상태에선 코드를 이해하기 어렵기 때문이다.
- (0028,0002) SamplesPerPixel
- (0028,0004) PhotometricInterpratation
- (0028,0100) BitsAllocated
- (0028,0101) BitsStored
- (0028,0102) HighBit
- (0028,0103) PixelRepresentation
- (0028,1052) RescaleIntercept
- (0028,1053) RescaleSlope
- (0028,1054) RescaleType
다음 글에서는 위 속성들을 참조하여 DICOM 영상을 제대로 표현하는 코드에 대해 설명할 예정이니, 채널 고정! 이 아니라 주소 고정(?)!
Previous post
스마트폰 앱은 어떻게 이미지를 보정하는 걸까?Next post
[명령어] git branch