본 발명은 3차원 의료용 볼륨 데이터 세트인 제1 볼륨 데이터 세트를 생성하는 제1 단계; 제1 볼륨 데이터 세트에 대응하며 조형제가 혈관에 투입된 상태의 3차원 의료용 볼륨 데이터 세트인 제2 볼륨 데이터 세트를 생성하는 제2 단계; 제1 볼륨 데이터 세트 및 제2 볼륨 데이터 세트로부터 상기 혈관에 대한 정보를 추출함으로써 제3 볼륨 데이터 세트를 생성하는 제3 단계; 제3 볼륨 데이터 세트의 상기 혈관에 대한 상기 정보를 제1 볼륨 데이터 세트에 부가함으로써 제4 볼륨 데이터 세트를 생성하는 제4 단계;를 포함하는 것을 특징으로 하는 3차원 의료용 볼륨 데이터 세트를 가공하는 방법을 제공한다.
또한 본 발명은 제4 볼륨 데이터 세트를 이용하여 적어도 상기 혈관을 시각화하는 제5 단계;를 포함하는 것을 특징으로 하는 3차원 의료용 볼륨 데이터 세트를 가공하는 방법을 제공한다.
또한 본 발명은 제5 단계가 혈관과 함께 관심 영역을 시각화하는 것을 특징으로 하는 3차원 의료용 볼륨 데이터 세트를 가공하는 방법을 제공한다.
또한 본 발명은 제5 단계가 절개된 영역을 통해 혈관과 관심 영역을 시각화하는 것을 특징으로 하는 것을 특징으로 하는 3차원 의료용 볼륨 데이터 세트를 가공하는 방법을 제공한다.
또한 본 발명은 혈관 조영 컴퓨터단층촬영 이미지(Computer Tomography Angio Image)로부터 만들어지는 볼륨 데이터 세트를 이용하여 혈관과 관심 영역을 시각화하기 위해 3차원 의료용 볼륨 데이터 세트를 가공하는 방법에 있어서, 절개될 영역을 입력받는 제1 단계; 그리고, 상기 볼륨 데이터 세트에서 상기 절개될 영역을 투명하게 처리하여 상기 절개될 영역을 통해 상기 혈관과 상기 관심 영역을 시각화하는 제2 단계;를 포함하는 것을 특징으로 하는 3차원 의료용 볼륨 데이터 세트를 가공하는 방법을 제공한다.
또한 본 발명은 제2 단계가 멀티 서브볼륨 렌더링을 통해 상기 절개될 영역, 상기 혈관 그리고 상기 관심 영역을 시각화하는 것을 특징으로 하는 3차원 의료용 볼륨 데이터 세트를 가공하는 방법을 제공한다.
또한 본 발명은 상기 볼륨 데이터 세트가 혈관 이미지(Vascular Image)와 컴퓨터단층촬영 이미지(Computer Tomography Image)로부터 만들어지며, 상기 혈관 이미지(Vascular Image)가 상기 컴퓨터단층촬영 이미지(Computer Tomography Image)와 상기 혈관 조영 컴퓨터단층촬영 이미지(Computer Tomography Angio Image)로부터 만들어지고, 상기 혈관 조영 컴퓨터단층촬영 이미지(Computer Tomography Angio Image)가 상기 혈관에 조형제가 투입된 상태에서 촬영된 상기 컴퓨터단층촬영 이미지(Computer Tomography Image)에 대응하는 것을 특징으로 하는 3차원 의료용 볼륨 데이터 세트를 가공하는 방법을 제공한다.
또한 본 발명은 제1 단계에 앞서, 상기 볼륨 데이터 세트로부터 상기 혈관에 관한 정보를 가지는 제1 서브볼륨과, 상기 관심 영역에 대한 정보를 가지는 제2 서브볼륨을 생성하는 단계;를 더 포함하는 것을 특징으로 하는 3차원 의료용 볼륨 데이터 세트를 가공하는 방법을 제공한다.
또한 본 발명은 상기 볼륨 데이터 세트가 복수개의 복셀을 포함하며, 복수개의 복셀 각각은 색상 및 투명도에 대한 정보값과 상기 혈관에 해당하는지를 나타내는 마스크 값을 포함하는 것을 특징으로 하는 3차원 의료용 볼륨 데이터 세트를 가공하는 방법을 제공한다.
또한 본 발명은 상기 볼륨 데이터 세트가 두부에 관한 것인 것을 특징으로 하는 3차원 의료용 볼륨 데이터 세트를 가공하는 방법을 제공한다.
이하, 도면을 참고로 하여 본 발명을 더욱 상세하게 설명한다.
1. 멀티 서브볼륨 렌더링
환부와 혈관을 구별되게 시각화하기 위해서는 멀티 서브볼륨 렌더링이 필요하며, 먼저 이에 대해 살핀다.
도 4는 본 발명에 따른 복셀의 데이터 구조의 일 예를 나타낸다. 본 발명에 따른 복셀 데이터는 4개의 영역(field)으로 구분되어 있으며, 4개의 영역은 데이터 영역(1), 마스크 영역(2), 서브볼륨1 영역(3), 서브볼륨2 영역(4)으로 구분되어 있다. 복셀 데이터의 크기는 32비트(bit)이며, 데이터 영역(1)에 12비트가, 마스크 영역(2)에 4비트가, 서브볼륨1 영역(3)에 8비트가, 서브볼륨2 영역(4)에 8비트가 할당되어 있다. 복셀 데이터의 크기에 특별한 제한이 있는 것은 아니며, 본 실시예에서 32비트 크기의 복셀 데이트를 사용하는 것은 본 발명이 실제 적용가능한 상용 볼륨 렌더링 하드웨어 솔루션인 Terarecon사의 VolumeProTM가 32비트 크기의 복셀 데이터 구조를 사용하기 때문이다.
도 5에 도시된 것과 같은 서브볼륨1(5)과 서브볼륨2(6)가 포함된 전체 볼륨(7)을 예로 본 발명에 따른 복셀의 데이터 구조를 설명하면, 데이터 영역(1)에는 전체 볼륨(7)에서의 복셀의 데이터 값 즉 색상에 대한 정보값과 투명도에 대한 정보값이 놓인다. 일반적으로 이러한 값은 0 ~ 4095의 값을 가지기 때문에 데이터 영역(1)에 대해서 12비트가 할당되어 있다.
마크스 영역(2)에는 복셀이 어느 불륨(전체 볼륨, 서브볼륨1, 서브볼륨2)에 속하는지를 알려주는 값이 들어있다. 이 영역은 4비트로 할당되어 있어서 0 ~ 15까지의 값을 가질 수 있으며, 2개의 서브볼륨이 사용되는 경우 다음의 4가지 값으로 충분하다.
값 |
의미 |
0 |
어느 서브볼륨에도 속하지 않는 복셀이다. |
1 |
서브볼륨1(5)에 속하는 복셀이다. |
2 |
서브볼륨2(6)에 속하는 복셀이다. |
3 |
서브볼륨1(5) 및 서브볼륨2(6) 모두에 속하는 복셀이다. |
도 4에서 전체 볼륨(7)에만 속하는 복셀(8)은 마스크 값으로 0을 가지며, 서브볼륨1(5)에 속하는 복셀(9)은 마스크 값으로 1을 가지고, 서브볼륨2(6)에 속하는 복셀(10)은 마스크 값으로 2를 가지며, 서브볼륨1(5) 및 서브볼륨2(6)에 속하는 복셀(11)은 마스크 값으로 3을 가진다. 도 4에서 전체 볼륨(7)에 속하는 복셀로 복셀(8)만이 도시되어 있으나, 이는 설명의 편의를 위한 것이다.
서브볼륨1 영역(3)은 전체 볼륨(7)에서 사용자가 필요에 의하여 다른 색깔로 구별하고 싶어하는 볼륨을 위한 영역이다. 간단한 예로 전체 두뇌에서 질병이 있는 부분을 들 수 있겠다. 서브볼륨1 영역(3)에는 서브볼륨1(5)에서의 복셀의 데이터 값 즉, 색상에 대한 정보값과 투명도에 대한 정보값이 놓인다.
서브볼륨2 영역(4)은 서브볼륨1 영역(3)과 같은 의도로 정의된 영역이며, 이러한 영역이 2개가 존재한다는 것은 서브볼륨을 최대 2개까지 정의할 수 있다는 것을 의미한다. 쉬운 예로 혈관과 종양을 2개의 서브볼륨으로 설정할 수 있다. 서브볼륨2 영역(4)에는 서브볼륨2(6)에서의 복셀의 데이터 값 즉, 색상에 대한 정보값과 투명도에 대한 정보값이 놓인다.
만약 복셀이 어느 서브볼륨 영역에도 속하지 않는다면 전체 볼륨(7)의 데이터 값을 따라야 하므로 반드시 서브볼륨1 영역(3) 및 서브볼륨2 영역(4)은 "0" 값을 가져야 한다.
종래의 경우에 CT나 MRI 이미지와 같은 의료용 이미지(101)로부터 볼륨 또는 볼륨 데이터 세트(102)를 생성하는 과정에서 각 복셀에 대하여 데이터 영역만을 정의하는 형태로 복셀 데이터 형성하였으나, 발명에서는 효율적인 렌더링을 위하여 복셀 데이터를 4개의 영역으로 확장하였다.
도 6은 본 발명에 따라 멀티 서브볼륨 렌더링을 하는 방법의 일 예를 나타내는 도면으로, 본 발명에 따른 복셀 데이터 구조를 이용하여 본 발명에 따라 멀티 서브볼륨 렌더링을 하기 위해서는 복셀 데이터의 4개의 영역에 대응하는 4개의 룩업 테이블(12,13,14,15; LookUp Table, 이하 LUT이라 한다)과 3개의 산술/논리장치(16,17,18; Arithmetic & Logical Unit, 이하 ALU이라 한다)가 필요하다.
LUT이란 RGBA 값(여기서 RGB는 색상 값이며 A는 투명도 값이다)이 들어있는 테이블이다. 해당 영역(field)의 값을 가지고 이 LUT을 참조하여 한 복셀의 특정 영역(field)이 가리키는 RGBA 값을 찾아낼 수 있으며, 실제 내부적으로 렌더링을 할 때에는 하나의 복셀에 대해 이렇게 찾아낸 RGBA 값(총 4개의 영역이 존재하므로 하나의 복셀에 대해 해당 LUT의 참조를 통해서 4개의 RGBA 값이 나오게 된다)을 여러 연산을 거쳐 최종적인 하나의 RGBA 값으로 만든 후 사용하게 된다.
4개의 LUT(12,13,14,15)은 4096개의 RGBA 값을 담을 수 있는 1개의 LUT(12)과 각각 256개의 RGBA 값을 담을 수 있는 3개의 LUT(13,14,15)로 구성된다. 4096개의 RGBA 값을 담을 수 있는 LUT(12)이 데이터 영역(5)에 할당되고 나머지 LUT(13,14,15)은 각각 다른 영역(2,3,4)과 짝을 이룬다.
ALU은 두 RGBA 값을 입력받아서 산술적이거나 논리적인 연산을 통하여 최종적으로 하나의 RGBA 값을 만들어내는 장치이다. 여기서 연산은 각 채널마다 독립적으로 이루어진다. 즉, RGBA 값의 경우 Red, Green, Blue, Alpha(투명도) 이렇게 4개의 채널로 구성되어 있으며 입력된 두 RGBA 값에서 R값은 R값끼리 Alpha값은 Alpha값끼리 독립적으로 연산이 이루어진다.
이하 본 발명에 따라 멀티 서브볼륨 렌더링을 행하는 과정을 설명한다. 먼저, 복셀 데이터는 4개의 영역(데이터, 마스크, 서브볼륨1, 서브볼륨2)으로 나누어져 있고 각 영역(1,2,3,4)에 들어있는 값을 이용하여 각 영역과 쌍을 이루는 LUT(12,13,14,15)로부터 RGBA 값을 가져오게 된다. 여기서, 마스크 영역(2)에서 나오는 RGBA 값은 다른 세 영역(1,3,4)의 RGBA 값 중 어떠한 색을 선택할지를 알려주는 역할을 한다.
가. 데이터 영역-마스크 영역 ALU(16)
데이터 영역-마스크 영역 ALU(16)은 데이터 영역(1)과 마스크 영역(2)의 값을 이용하여 각각의 영역에 할당된 LUT(12,13)로부터 얻은 2개의 RGBA 값을 입력받아 결과를 산출하는 산술/논리장치이다. 여기서 두 RGBA 입력값은 메모리 상의 구조는 동일하나 그 값이 나타내는 의미는 서로 다르다. 데이터 영역(1)에서 산출된 RGBA 값은 전체 불륨(7)의 LUT(12)에서 가져온 해당 복셀의 색상 및 투명도에 대한 정보값이라고 할 수 있다. 하지만 마스크 영역(2)에서 산출한 RGBA 값은 어느 볼륨의 RGBA 값을 사용할 것인지를 결정하는 역할을 하는 정보값이라 할 수 있다.
전술한 바와 같이 마스크 영역(2)은 총 4개의 값을 가지는데 각 값에 따라 다음의 RGBA 값이 나오게 된다.
마스크 값 |
RGBA 값(36bit-16진수) |
RGBA 값의 의미 |
0 |
FF FF FF FFF |
데이터 영역에서 나온 값을 사용한다. |
1 |
0 |
서브볼륨 영역에서 나온 RGBA 값을 사용한다. |
2 |
0 |
서브볼륨 영역에서 나온 RGBA 값을 사용한다. |
3 |
0 |
서브볼륨 영역에서 나온 RGBA 값을 사용한다. |
데이터 영역-마스크 영역 ALU(16)은 이렇게 나온 두 RGBA 값을 AND 연산을 통하여 하나의 RGBA 값으로 만들어낸다. 즉, 해당 복셀의 마스크 영역(2)의 값이 0이면 그 복셀은 어느 서브볼륨에도 속하지 않으므로 전체 불륨(7)의 색상 및 투명도 값을 취하게 되고, 그 결과 데이터 영역-마스크 영역 ALU(16)의 최종 RGBA 값은 데이터 영역(1)에서 나온 RGBA 값이 된다. 반면 마스크 영역(2)의 값이 1, 2, 3 중의 하나라면 이 복셀은 서브볼륨의 색상 및 투명도 값을 가져야 하므로 전체 볼륨의 색상 및 투명도 값을 무시해야 한다. 결과적으로 연산을 통하여 나온 RGBA 값은 0이 된다. 이렇게 나온 RGBA 값은 후술하는 최종 ALU(18)의 하나의 입력값으로 들어가게 된다.
나. 서브볼륨1 영역-서브볼륨2 영역 ALU(17)
서브볼륨1 영역-서브볼륨2 영역 ALU(17)은 서브볼륨1 영역(3)과 서브볼륨2 영역(4)의 값을 인덱스로 하여 각각의 영역에 할당된 LUT(14,15)을 참조하여 얻는 2개의 RGBA 값을 입력으로 하는 산술/논리장치이다. 이 2개의 RGBA 값을 입력받아 미리 정의한 연산 방법을 통하여 하나의 RGBA 값을 산출해내는 역할을 한다. 이렇게 나온 RGBA 값은 후술하는 최종 ALU(18)의 두번째 입력값이 된다.
여기서 두가지 중요한 사항이 있다. 해당 복셀이 서브볼륨1(5)에 포함되어 있지 않다면 그 복셀의 서브볼륨1 영역(3)은 "0"값을 가지게 된다(서브볼륨2 영역(4)도 마찬가지임). 또한 두 서브볼륨 영역(3,4)과 쌍을 이루는 두 LUT(14,15)에서 0번째 인덱스의 RGBA 값은 항상 "0"(R=0,G=0,B=0,A=0)이라는 것이다. 결론적으로 특정 서브볼륨 영역의 값이 "0"이며 해당 RGBA 값도 "0"이 된다.
두 RGBA 값을 가지고 서브볼륨1 영역-서브볼륨2 영역 ALU(17)은 MAX 연산을 통하여 RGBA 결과값을 산출한다. MAX 연산은 두 RGBA 값을 비교하여 큰 쪽을 결과값으로 하는 방식인데 비교는 전술한 바와 같이 각 채널(channel)마다 독립적으로 행해진다.
전체 볼륨(7)과 서브볼륨1(5) 및 서브볼륨2(6) 사이의 포함관계는 총 4가지가 존재하며 각각의 관계에 따른 RGBA 값은 다음과 같다.
복셀이 어느 서브볼륨(5,6)에도 포함되지 않는다(case 1).- 복셀의 두 서브볼륨 영역(3,4)은 모두 "0" 값을 가지고 서브볼륨1-서브볼륨2 ALU(17)이 입력으로 받는 두 RGBA 값도 "0" 이므로 결과 RGBA 값도 "0"이 나오게 된다.
복셀이 어느 한쪽 서브볼륨에만 포함된다(case 2 및 3). - 복셀이 포함된 서브볼륨 영역(예를 들어, 서브볼륨1 영역(3))은 "0"이 아닌 RGBA 값이 서브볼륨1 영역-서브볼륨2 영역 ALU(17)으로 들어가나 그렇지 않은 서브볼륨 영역(예를 들어, 서브볼륨2 영역(4))은 "0"의 RGBA 값을 가지게 되고 서브볼륨1 영역-서브볼륨2 영역 ALU(17)에서 MAX 연산을 실행하면 결과값은 복셀이 포함된 서브볼륨 영역의 RGBA 값이 그대로 나오게 된다.
복셀이 양쪽 서브볼륨에 모두 포함된다(case 4). - 이럴 경우 양쪽 모두 "0"이 아닌 RGBA 값이 서브볼륨1 영역-서브볼륨2 영역 ALU(17)에 들어가게 되므로 여기에 MAX 연산을 수행하면 각 채널 값에 따라 MAX 값이 나오게 된다. 따라서 양쪽 서브볼륨의 RGBA 값 어디에도 속하지 않는 제 3의 RGBA 값이 나올 수 있다.
결론적으로 서브볼륨1 영역-서브볼륨2 영역 ALU(17)에서 하는 일은 복셀이 포함된 서브볼륨 영역의 RGBA 값을 결과로 반영하고 만약 어느 서브볼륨에도 포함되지 않았다면 "0" 값을 산출하는 역할을 한다.
다. 최종 ALU(18)
최종 ALU(18)은 위의 두 ALU(16,17)의 연산 결과로 산출된 RGBA 값들을 입력받아 해당 복셀의 최종적인 결과 RGBA 값을 정하는 산술/논리장치이다. 여기서는 두 입력값 중에서 큰 쪽을 최종 결과값으로 선택한다(MAX 연산). 이렇게 되면 결과적으로 복셀이 특정 서브볼륨에 포함되어 있는지 여부에 따라서 포함되어 있다면 데이터 영역-마스크 영역 ALU(16)의 결과값은 "0" 값을 가지게 되므로 서브볼륨1 영역-서브볼륨2 영역 ALU(17)의 RGBA 결과값이 복셀에 할당되고, 반대의 경우 서브볼륨1 영역-서브볼륨2 영역 ALU(17)의 결과값이 "0" 값을 가지게 되므로, 데이터 영역-마스크 영역 ALU(16)의 RGBA 결과값 즉, 전체 볼륨(7)의 색상 및 투명도 값이 최종 결과값으로 나오게 된다.
이러한 데이터 구조를 이용하면, 혈관과 환부(관심 영역)를 함께 멀티 서브볼륨 렌더링을 통해 표시할 수 있게 된다. 본 발명의 가장 중요한 요지인 혈관을 선정하는 방법에 대해서는 후술한다.
한편 도 7에서와 같이, 환자의 피부(21)가 불투명하게 표시되고, 일부가 절개되어 절개된 영역(22)을 통해 혈관(23)과 환부(24)가 시각화되는 경우에, 절개된 영역(22)에 대해서도 멀티 서브볼륨 렌더링을 해야하므로, 적어도 3개의 서브볼륨 영역이 필요하게 되며(혈관(23)만 시각화하는 경우 2개로 족함), 이를 위해 32 비트보다 큰 데이터가 사용될 수 있다. 마스크 영역(2)은 여분의 공간이 있으므로 문제가 없으며, 연산은 동일한 방식으로 행해질 수 있다.
2. 절개될 영역 또는 절개된 영역 지정
도 8은 절개된 영역을 정하는 방식의 일 예를 나타내는 도면으로서, 절개된 영역(22)의 중심(25)을 지정하고, 중심(25)으로부터의 거리를 지정해 줌으로써 절개될 영역 또는 절개된 영역(22)이 지정될 수 있다. 사용자가 임으로 그리는 폐곡선에 의해 절개된 영역(22)이 형성될 수 있음은 물론이다.
3. 혈관의 선정 1 - 새로운 볼륨 데이터 세트 생성
전술한 바와 같이, 혈관 이미지(Vascular Image)의 경우에 혈관만이 시각화될 뿐이며, 본 발명은 이러한 문제점을 극복한 혈관의 선정 방법 내지는 볼륨 데이터 세트를 제시한다. 또한 이러한 볼륨 데이터 세트는 (특히 절개될 영역(22)이 서브볼륨으로 포함된) 멀티 서브볼륨 렌더링 기법과 결합되어, 의사가 환자를 수술하기에 앞서 수술을 과정을 예측하고 계획할 수 있게 도와준다.
CT 이미지 및 이에 대응하며, 조형제가 투여된 상태에서 만들어진 CTA 이미지로부터 만들어지는 혈관 이미지에 대한 볼륨 데이터 세트는 이미 혈관에 대응하는 복셀들에 대한 정보를 가지고 있다. 따라서 CT 이미지에 대한 볼륨 데이터 세트를 구성하는 복셀들 중에서, 혈관 이미지에 대한 볼륨 데이터 세트의 복셀들 중에서 혈관에 대응하는 복셀들을 매칭시켜, 매칭된 복셀들에 혈관에 해당한다는 정보를 입력함으로써 혈관에 대한 정보를 가지는 CT 이미지에 대한 볼륨 데이터 세트를 생성할 수 있게 된다. 이 볼륨 데이터 세트를 구성하는 각각의 복셀은 도 5에 도시된 것과 같은 데이터 구조를 가질 수 있으며, 마스크 영역(2)에 값을 부여함으로써 당해 복셀이 혈관에 해당한다는 것을 나타낼 수 있다. 또한 서브볼륨 영역 중의 하나(예: 서브볼륨1 영역(3))를 혈관에 할당함으로써, 멀티 서브볼륨 렌더링을 통해 혈관을 환부 및/또는 절개된 영역(22)과 함께 시각화할 수 있다.
4. 혈관의 선정 2 - CTA 이미지를 이용하는 멀티 서브볼륨 렌더링
환자의 두부가 수술의 대상인 경우에 본 발명은 새로운 볼륨 데이터 세트를 생성하지 않고도 실현될 수 있으며, 이하에서 이 방식에 대해 설명한다.
CTA 이미지는 뼈와 혈관이 동일한 인텐시티(Intensity)를 가지는 볼륨 데이터 세트이다. 여기서 뼈를 제외한 부분 즉, 환자의 두개골 내부만을 서브볼륨으로 잡고, 뼈 또는 혈관에 대응하는 인텐시티를 가지도록 선택하면, 혈관만을 추출할 수 있게 된다. 이렇게 형성된 서브볼륨을 하나로 하고, 환자의 환부를 종래와 같이 당업자에게 널리 알려진 방식에 따라 별도의 서브볼륨으로 한 다음, 멀티 서브볼륨 렌더링을 하면 새로운 볼륨 데이터 세트를 생성하지 않고도 혈관과 환부를 함께 시각화할 수 있게 된다. 여기서 도 5에서와 같은 데이터 구조가 사용될 수 있음은 물론이다. 도 9는 본 발명에 따라 시각화된 화면의 다른 예를 나타내는 도면으로서, 혈관과 환부가 시각화되어 있다.