KR100392516B1 - 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법 - Google Patents

보간되지 않은 볼륨 데이터의 실시간 렌더링 방법 Download PDF

Info

Publication number
KR100392516B1
KR100392516B1 KR10-2001-0000070A KR20010000070A KR100392516B1 KR 100392516 B1 KR100392516 B1 KR 100392516B1 KR 20010000070 A KR20010000070 A KR 20010000070A KR 100392516 B1 KR100392516 B1 KR 100392516B1
Authority
KR
South Korea
Prior art keywords
block
value
voxel
transparent
volume data
Prior art date
Application number
KR10-2001-0000070A
Other languages
English (en)
Other versions
KR20020059138A (ko
Inventor
김태영
계희원
신영길
Original Assignee
주식회사 인피니트테크놀로지
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 인피니트테크놀로지 filed Critical 주식회사 인피니트테크놀로지
Priority to KR10-2001-0000070A priority Critical patent/KR100392516B1/ko
Publication of KR20020059138A publication Critical patent/KR20020059138A/ko
Application granted granted Critical
Publication of KR100392516B1 publication Critical patent/KR100392516B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Abstract

본 발명은 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법에 관한 것으로, 보다 상세하게는 3차원적 위치의 함수로서 표현되는 소정의 특성을 가지는 입체적 구조물의 각각의 단면상에서의 정보의 집합으로 구성된 일련의 볼륨 데이터를 효율적으로 처리하여 상기 특성의 공간적 분포를 실시간으로 신속하게 3차원 영상으로 표시하여 가시화하기 위한 볼륨 데이터의 빠른 추출(classification) 및 렌더링 방법을 제공하기 위한 것이며, 본 발명의 방법은 3차원적 위치의 함수로서 표현되는 소정의 특성을 가지는 입체적 구조물의 미리 저장된 각각의 단면상에서의 정보의 집합으로 구성된 일련의 볼륨 데이터로부터 블록 단위 최대-최소 테이블을 생성하여 저장하는 제1 단계, 사용자에게 불투명도 전이함수를 지정하도록 하여 그에 따른 누적영역 테이블을 생성하는 제2 단계, 사용자에게 시각 파라미터를 지정하도록 하여, 상기 제1 단계에서 생성된 블록 단위 최대-최소 테이블의 값을 상기 제2 단계에서 형성된 누적영역 테이블과 비교하여 각 블록의 투명 또는 비투명 여부를 판단하며, 이를 기초로 블록단위 런길이 인코딩을 수행하는 제3 단계 및 수정된 쉬어-왑 분해 기법에 의해 볼륨 렌더링을 수행하는 제4 단계를 포함한다.

Description

보간되지 않은 볼륨 데이터의 실시간 렌더링 방법{real-time rendering method for noninterpolated volume data}
본 발명은 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법에 관한 것으로, 보다 상세하게는 3차원적 위치의 함수로서 표현되는 소정의 특성을 가지는 입체적구조물의 각각의 단면상에서의 정보의 집합으로 구성된 일련의 볼륨 데이터를 효율적으로 처리하여 상기 특성의 공간적 분포를 실시간으로 신속하게 3차원 영상으로 표시하여 가시화하기 위한 볼륨 데이터의 빠른 추출(classification) 및 렌더링 방법을 제공하기 위한 것이다.
이와 같은 3차원 영상 처리 분야는 많은 응용분야가 있지만 자동차, 선박 등의 3차원적 형상을 가지는 구조물의 설계, 시공 분야나 의료 영상 처리 분야에 많이 사용되는데, 특히 3차원 의료 영상 처리 분야는 CT나 MRI 로부터 얻어지는 일련의 2차원 단면 영상의 집합으로 구성된 볼륨데이터로부터 3차원적 영상을 생성하여 가시화하고, 나아가서는 사용자에 의하여 지정된 임의의 관심부분을 처리하여 상기 소정의 관심부분에 관한 세부 정보를 제공하여(부위추출: classification이라 함) 진단을 보조하고자하는 응용 기술 분야이다.
의료용 시스템에서 스캐닝된 일련의 CT 단면 정보(이하 '슬라이스'라 한다)는 입력장치의 한계 때문에 한 슬라이스의 평면적 데이터의 해상도의 한 단위인 픽셀의 간격보다 각 슬라이스간의 간격이 더 큰 경우가 대부분이다. 이러한 경우에 기존의 볼륨 가시화 시스템에서는 전처리 단계로 픽셀 간격과 슬라이스간의 간격이 같도록 보간(interpolation)된 슬라이스를 실제 스캐닝된 슬라이스의 사이에 삽입하여 정방형이 되도록 재구성한 볼륨 데이터를 대상으로 하는 볼륨 렌더링을 수행한다.
그러나 이와 같은 방법은 렌더링 전에 상기 보간된 슬라이스를 삽입하여 볼륨 데이터를 재구성하기 위한 전처리 과정이 필요하고, 슬라이스 보간을 하므로 실제 스캐닝된 슬라이스보다 더 많은 슬라이스가 생성되어 고용량의 기억 공간 (memory space)이 필요하여 고급의 시스템을 요하는 문제점이 있다.
일반적으로 볼륨 렌더링을 위한 볼륨 데이터의 크기는 방대한데, 상기 종래 기술의 경우, 픽셀간격 대비 슬라이스 간격이 크면 클수록 렌더링에 필요한 볼륨 데이터의 크기는 더욱 커져 렌더링을 수행하기 위한 시스템의 요구사항도 점점 더 높아지게 된다.
본 발명은 이와 같은 문제점을 해결하기 위한 것으로, 일반 PC에서도 상기 종래 기술의 슬라이스 보간을 위한 전처리 과정이 없이 입력장치로부터 스캐닝된 볼륨 데이터를 가상의 보간된 볼륨 데이터로 가정하고 빠르게 렌더링하는 방법을 제공하며, 또한 렌더링 중에 사용자가 보고자하는 부분을 변경하여 지정할 경우에도 실시간으로 신속하게 렌더링된 결과를 볼 수 있도록 효율적인 데이터의 처리 기법에 기반을 둔 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법을 제공하기 위한 것이다.
도1은 본 발명의 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법을 나타낸다.
도2는해상도의 볼륨에서 구성된 최대-최소 테이블의 데이터 구조를 도시한 것이다.
도2a는블록으로 분할된 볼륨의 데이터 구조를 나타낸다.
도2b는블록으로 분할된 볼륨의 데이터 구조를 나타낸다.
도2c는블록으로 분할된 볼륨의 데이터 구조를 나타낸다.
도2d는블록으로 분할된 볼륨의 데이터 구조를 나타낸다.
도3은크기의 BigBlock에서 투영(projection)에 의하여 최대-최소 테이블을 구성하는 예를 나타낸다.
도3a에서는 주시각 축이 x 축인 경우에 대하여 투영(projection)에 의하여 최대-최소 테이블을 구하는 예를 나타낸다.
도3b에서는 주시각 축이 y축인 경우에 대하여 투영(projection)에 의하여 최대-최소 테이블을 구하는 예를 나타낸다.
도3c에서는 주시각 축이 z 인 경우에 대하여 투영(projection)에 의하여 최대-최소 테이블을 구하는 예를 나타낸다.
도5는 블록 크기가일 때 런길이 인코딩 데이터 구조의 한 예를 도시한 것이다.
도6은 본 발명의 음영처리 방법과 기존의 일반적인 음영처리 방법과의 차이를 설명하기 위한 도면이다.
도6a는 기존의 일반적인 음영처리 방법을 나타낸다.
도6b는 본 발명에서 제시한 음영처리의 방법을 나타낸다.
도6c는 상기 도6a의 방법과 도6b의 방법을 비교하여 설명하기 위한 도면이다.
도7에서는 쉬어-왑 분해 알고리즘을 적용함에 따른, 주시각 축의 표준 객체 좌표로의 변환을 나타낸다. 여기서, (a)는 주시각축 x로 하는 경우, (b)는 주시각축 y로 하는 경우를, (c)는 주시각축 z로 하는 경우를 각각 나타내며, 이때 변환된 표준 객체 좌표에서의 k는 주시각축을, j는 스캔라인의 처리방향을 나타낸다.
도8은 주시각축이 x 축인 경우에 k=0이고, j=0에서 3까지 처리 시의 음영값의 버퍼링 방법을 도시한다.
도9는 주시각축이 y축일 때의 음영값의 버퍼링 방법을 k=0, j=0의 경우를 예로 도시한 것이며, 이 경우는 보간이 각 스캔라인 내부에서 이뤄지므로 버퍼가 하나만 있으면 된다.
도10은 주시각축이 z 축인 경우에 j=0이고, k=0에서 3까지 처리 시 버퍼링 방법을 도시한다.
도11은 도5의 블록단위 런길이 배열을 상세화시켜 생성된 런길이 배열의 예이다.
도12에서는 이전 런길이 배열의 재사용 가능여부를 빠르게 판단하기 위하여 본 발명에서 사용하고 있는 방법의 첫 번째 판단 단계를 나타내며, 여기서 (a)는 불투명도 전이함수 지정을 위한 제어점p 1이나p 2를 움직였을 경우를 나타내며, (b)는 제어점p 0p 3을 움직이는 경우를 나타낸다.
도13에서는 이전 런길이 배열의 재사용 가능여부를 빠르게 판단하기 위하여 본 발명에서 사용하고 있는 방법의 두 번째 판단 단계를 나타내는데, 여기서 (a)에서는 dold와 dnew사이의 구간이 비투명 상태에서 투명 상태로 바뀌는 경우를 나타내며 (b)는 투명 상태에서 비투명 상태로 바뀌는 경우를 나타낸다.
도14는 본 발명의 방법과 동일한 과정을 수행하는 하드웨어로서 변형 구현한 한 실시예를 나타내었다.
이와 같은 목적을 달성하기 위하여, 본 발명의 한 특징에 의한 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법은, 3차원적 위치의 함수로서 표현되는 소정의 특성을 가지는 입체적 구조물의 미리 저장된 각각의 단면상에서의 정보의 집합으로 구성된 일련의 볼륨 데이터로부터 블록 단위 최대-최소 테이블을 생성하여 저장하는 제1 단계, 사용자에게 불투명도 전이함수를 지정하도록 하여 그에 따른 누적영역 테이블을 생성하는 제2 단계, 사용자에게 시각 파라미터를 지정하도록 하여, 상기 제1 단계에서 생성된 블록 단위 최대-최소 테이블의 값을 상기 제2 단계에서 형성된 누적영역 테이블과 비교하여 각 블록의 투명 또는 비투명 여부를 판단하며, 이를 기초로 블록단위 런길이 인코딩을 수행하는 제3 단계 및 수정된 쉬어-왑 분해 기법에 의해 볼륨 렌더링을 수행하는 제4 단계를 포함한다.
바람직하게는, 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 상기 제1 단계는, 미리 정해진 크기를 가지며, 동일한 블록에 대해서 수 개의 레벨로 세분된 구조를 갖는 몇 개의 블록으로 전체 볼륨을 구분하는 제1-1 단계, 상기 제1-1 단계에서 구분된 상기 레벨에 따른 각 블록을 단위로 하여 그에 소속된 복셀 데이터의 최대값 및 최소값을 투영과정을 통해 구하여 최대-최소 버퍼에 임시 저장하는 는 제1-2 단계 및 상기 제1-2 단계에서 구하여진 최대값 및 최소값을 각 블록단위 최대-최소 테이블에 저장하는 제1-3 단계를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 상기 제1-1 단계는, 캐쉬 메모리를 활용하여 처리과정을 가속화하기 위하여, 캐쉬 메모리의 용량이하의 데이터 크기를 가지도록 블록의 크기를 결정하는 것을 특징으로 한다.
바람직하게는, 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 상기 제1-2 단계는, MMX 기능을 활용하여 상기 투영과정을 가속화하기 위하여, 상기 복셀과 상기 최대-최소 버퍼가 각각 물리적으로 연속한 메모리 영역에 위치하며, 상기 투영의 방향과 물리적인 메모리 영역의 방향은 서로 수직이며, 상기 각 복셀의 크기가 1, 2, 4, 8 바이트 중 하나가 되며, 상기 복셀의 데이터 형태는 정수형(interger type)이며, 상기 복셀의 데이터 배열과 상기 최대-최소 버퍼는 8바이트 단위로 처리되는데 문제가 없도록 상기 블록의 복셀 데이터를 재배열하는 단계를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 상기 제3 단계는, 사용자에게 시각 파라미터를 지정하도록 하여 주시각 축을 결정하는 제3-1 단계, 상기 제3-1 단계에서 결정된 주시각 축에 부합하고, 상기 제1 단계에서 생성된 블록 단위 최대-최소 테이블의 값을 상기 제2 단계에서 형성된 누적영역 테이블과 비교하여, 각 블록의 투명 또는 비투명 여부를 판단하는 제3-2 단계 및 상기 제3-2 단계에서 판단된 각 블록의 투명 또는 비투명 정보를 기초로 블록단위 런길이 인코딩을 수행하여 블록단위 런길이 배열을 생성하는 제3-3 단계를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 상기 제3-3 단계에서 생성된 블록단위 런길이 배열을 기초로 하여, 상기 사용자에 의해 지정된 시각 파라미터 상에서 보이는 비투명한 블록에 대해서만 복셀 단위로 투명 또는 비투명 여부를 판단하여 복셀단위 런길이 배열로 상세화하는 제3-4 단계를 더 포함하는 것을 특징으로 한다.
바람직하게는, 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 상기 제4 단계는, 상기 볼륨 데이터를 기초로 소정 복셀의 음영값을 결정하는 제4-1 단계, 상기 제4-1 단계에서 결정된 음영값을 상기 볼륨의 한 면과 평행한 중간 화상 평면에 투영하는 제4-2 단계 및 상기 제4-2 단계에서 얻어진 중간 화상을 관측자의 시각 벡터 값에 따라 와핑하여 최종 화상을 얻는 제4-3 단계를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 상기 제4-1 단계는, 음영값을 생성할 상기 소정의 복셀 vi에 대하여 입력된 슬라이스에 포함된 복셀 인지의 여부를 판단하여 그에 해당될 경우 상기 입력된 볼륨 데이터상에서 vi의 법선 벡터를 구한 다음, vi의 음영값을 구하는 제4-1-1 단계 및 상기 입력된 슬라이스에 포함되지 않고 보간될 슬라이스에 포함된 복셀인 경우, vi를 포함하는 상기 슬라이스의 상하 각 입력 슬라이스 중 vi와 같은 위치에 해당하는 두 복셀의 음영값을 상기 제4-1-1 단계의 방법에 의하여 구한 후 이를 보간하여 vi의 음영값을 구하는 제4-1-2 단계를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법은, 상기 볼륨 데이터를 기초로 소정 복셀의 음영값을 효율적으로 결정하기 위하여, 상기 주시각축이 x 축인 경우, 전향 버퍼와 후향 버퍼를 지정하며, 상기 제4-1-2 단계에서 상기 복셀 vi의 음영값을 결정하기 위한 보간 과정에서 사용된, 상하 각 입력 슬라이스 중 vi와 같은 위치에 해당하는 두 복셀의 음영값들을 각각 상기 전향버퍼와 후향버퍼에 저장하여, 이후의 다른 복셀의 음영값의 결정을 위한 데이터로 사용할 수 있도록 하는 것을 특징으로 한다.
바람직하게는, 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법은, 상기 볼륨 데이터를 기초로 소정 복셀의 음영값을 효율적으로 결정하기 위하여, 상기 주시각축이 y 축인 경우, 하나의 버퍼를 지정하며, 상기 제4-1-2 단계에서 상기 복셀 vi의 음영값을 결정하기 위한 보간 과정에서 사용된, 상하 각 입력 슬라이스 중 vi와 같은 위치에 해당하는 두 복셀의 음영값들을 각각 상기 버퍼에 저장하여, 이후의 다른 복셀의 음영값의 결정을 위한 데이터로 사용할 수 있도록 하는 것을 특징으로 한다.
바람직하게는, 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법은, 상기 볼륨 데이터를 기초로 소정 복셀의 음영값을 효율적으로 결정하기 위하여, 상기 주시각축이 z 축인 경우, 전향 버퍼와 후향 버퍼를 지정하며, 상기 제4-1-2 단계에서 상기 복셀 vi의 음영값을 결정하기 위한 보간 과정에서 사용된, 상하 각 입력 슬라이스 중 vi와 같은 위치에 해당하는 두 복셀의 음영값들을 각각 상기 전향버퍼와 후향버퍼에 저장하여, 이후의 다른 복셀의 음영값의 결정을 위한 데이터로 사용할 수 있도록 하며, 이 경우에 전후향 합성이 보장되도록 스캔라인의 처리순서를 결정하는 것을 특징으로 한다.
바람직하게는, 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 상기 제3 단계는, 사용자에 의해 지정된 불투명도 전이 함수와 이전의 렌더링 과정에서 이미 저장된 불투명도 전이 함수를 비교하여 상기 이전의 렌더링 과정에서 이미 생성된 상기 런길이 배열의 재사용 가능여부를 판단하는 재사용 판단 단계를 더 포함하는 것을 특징으로 한다.
바람직하게는, 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 상기 재사용 판단 단계는, 상기 사용자에 의해 지정된 불투명도 전이 함수에서의 각 밀도값에 대한 투명 또는 비투명 상태가 이전의 렌더링 과정에서 이미 저장된 불투명도 전이 함수의 각 밀도값에 대한 투명 또는 비투명 상태와 비교하여 변화가 없으면, 상기 이전의 렌더링 과정에서 이미 생성된 상기 런길이 배열의 재사용이 가능한 것으로 판단하는 R1단계, 상기 R1단계에서 상기 사용자에 의해 지정된 불투명도 전이 함수에서의 각 밀도값에 대한 투명 또는 비투명 상태가 이전의 렌더링 과정에서 이미 저장된 불투명도 전이 함수의 밀도값 영역과 비교하여 변화가 있는 것으로 판단되면, 상기 밀도값 영역 중 서로 다른 부분을 추출하는 R2단계 및 상기 R2단계에서 추출된 상기 밀도값 영역의 서로 다른 부분을 제2 단계에서 생성된 누적 영역 테이블과 비교하여 상기 밀도값 영역의 서로 다른 부분이 투명 영역에 포함되는 경우 상기 이전의 렌더링 과정에서 이미 생성된 상기 런길이 배열의 재사용이 가능한 것으로 판단하는 R3단계를 포함하는 것을 특징으로 한다.
이하에서는 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명한다.
본 실시예에 관하여 구체적으로 논의하기 전에 본 방법에서 사용된 용어를 간단히 정의한다.
우선, 볼륨 좌표(volume coordinate)는 볼륨 객체의 좌표를 나타내는 용어로서 (x, y, z)로 표기하며, 주시각 축(principal viewing axis)은 시각방향벡터(viewing direction vector)와 가장 작은 각도를 이루는 볼륨 좌표의 축으로 정의되며, 표준 객체 좌표(standard object coordinate)는 주시각축을 z축으로 변환시킨 좌표를 말하며 이를 (i, j, k)로 표기한다.
이하에서는 본 발명의 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 전체적 처리의 흐름을 기술한다.
본 발명에서는 기존의 쉬어-왑 분해 알고리즘을 기본으로 하여, 그래픽 하드웨어 등의 추가적인 하드웨어의 구비 없이도 일반 개인 PC에서 실시간으로 부위 추출(classification) 및 렌더링이 가능한 방법을 제시한다. 빠른 부위 추출을 위하여 전 단계에서 구한 블록 최대-최소 테이블과 누적 영역 테이블을 이용하여 정방형에 근사시킨크기의 블록단위 런길이 인코딩(Block-based run-length encoding) 이라 정의되는 데이터의 재배열을 수행한다.
상기 블록단위 런길이 인코딩을 수행하는 이유는 인코딩하는 시간을 줄이기 위한 것이나, 복셀 단위의 정확한 런길이 인코딩을 수행한 것이 아니므로 비투명한 블록 런길이가 발생해도 렌더링 중에또는크기의 블록 단위 최대-최소 테이블과 누적 영역 테이블을 이용하여 투명여부를 파악한다.
이 경우에도 비투명한 것으로 파악되면 비투명한 각 복셀의 투명여부를 순차적으로 파악하여 비투명한 경우에는 해당 복셀의 음영값을 중간 단계 이미지에 합성한다.
본 방법에서는 정방형으로 보간되지 않은 볼륨데이터를 별도 보간처리 없이 빠르게 렌더링하기 위하여 기존의 쉬어-왑 분해알고리즘( Philippe Lacroute, Marc Levoy, "Fast Volume Rendering Using a Shear-Warp Factorization of the Viewing Transformation", Proceedings of SIGGRAPH 94, pp. 451-458, 1994.)을 수정한 점을 발명의 주요한 특징의 하나로 한다. 본 방법은 가상의 보간된 볼륨 데이터에 대하여 비투명한 복셀의 밀도값을 보간하여 구한다음, 법선벡터를 구하여 음영값을 얻는 기존 방법의 처리시간 부담을 줄이기 위하여 음영값 보간 방법을 사용한다. 즉, 음영값을 구하고자 하는 복셀이 입력된 슬라이스에 포함되는 경우에만 음영값을 구하고, 그렇지 않은 경우는 상하 입력된 슬라이스의 동일위치의 음영값을 보간하여 해당 복셀의 음영값을 구한다. 또한 생성된 음영값을 효율적으로 버퍼링하여 음영값을 한번만 구하면 재사용할 수 있도록 주시각축에 따른 스캔라인 처리 순서를 재 정의하였다.
일반적으로 사용자는 렌더링 결과가 나오면 다른 뷰(view)를 보기 위하여 볼륨을 회전시키거나 현재 불투명도 전이 함수를 근소하게 바꾸는 등의 작업을 수행하게 된다. 이러한 일련의 작업을 고려하면 장면(scene)과 장면간에는 시각 파라미터나 불투명도 전이 함수간의 상호간의 응집성(coherence)이 존재함을 알 수 있다. 본 방법에서는 현재 생성된 장면을 기반으로 다음 장면의 생성을 가속화(speedup)하기 위한 기법을 제시한다. 첫번째 기법은 시각이 바뀔 때 기존의 생성된 런길이 배열(run-length array)중 바뀐 시각에서 보이는 비투명 블록길이만 상세화하여 점근적으로 런길이 배열을 블록단위가 아닌 복셀단위 런길이 배열로 바꾸는 것이다.두번째 기법은 불투명도 전이 함수가 바뀔 때 기존 런길이 배열의 비투명한 부분이 새로운 런길이 배열의 비투명한 부분을 포함하고 있다고 판단되면 기존의 런길이 배열을 재사용하는 것이다.
본 발명의 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법을 도1에서 나타내었다.
상기 도1에 나타낸 바와 같이 본 발명의 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법은 크게 4단계로 구성된다. 처음 2단계는 부위추출을 실시간으로 수행하기 위한 자료구조를 만드는 과정이며, 제3 단계는 전 단계에 생성된 자료구조를 이용하여 블록단위로 런길이 인코딩을 수행하는 과정이다. 본 방법에서는 블록단위로 런길이 인코딩을 수행함에도 불구하고 볼륨데이터는 응집성을 가지므로 투명한 부분을 싱당부분 걸러줌으로써 제4 단계의 렌더링 시간을 감소시킨다. 도1에서 보듯이 제1 단계는 처음 데이터 로딩 시에만 수행된다. 불투명도 전이함수가 바뀌면 제2 단계부터 수행되고 이전에 생성된 런길이 인코딩 정보가 재사용 가능하면 제3 단계를 건너뛴다. 시각 파라미터가 바뀌면 제3 단계부터 수행된다. 단, 현재 주시각 축(principal viewing axis)에 대한 런길이 인코딩 정보가 존재하는 경우는 제3 단계를 건너뛴다.
이하에서는 상기 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 제1 단계의 블록단위 최대-최소 테이블의 생성 방법을 상세히 설명한다.
블록단위 최대-최소 테이블은 전체 볼륨을 고정된 크기를 갖는 몇 개의 블록들로 구분하고, 각각의 블록에서 볼륨의 값들을 읽어 최대값과 최소값을 구하는 작업을 통해 얻은 일련의 배열을 의미한다. 본 방법은 두 개의 레벨로 구성된 블록단위 최대-최소 테이블을 구성한다. 상위레벨의 블록단위 최대-최소 테이블은 z축을 주시각축으로 하는 일련의크기의 블록에 대한 최대-최소값을 가진다. 하위레벨의 블록단위 최대-최소 테이블은 각 축을 주시각 축으로 하는 일련의 블록-스캔라인인(주시각축이 x 축인 경우),(주시각축이 y 축인 경우) 및(주시각축이 z 축인 경우) 크기의 블록에 대한 최대-최소값으로 구성된다. 여기서 n은 임의의 블록 크기를 말하고, m은 보간된 볼륨을 가정할 때 블록이 정방형()으로 근사 될 수 있도록 결정된 슬라이스 수를 말한다. 본 방법은 쉬어-왑 분해 알고리즘을 기본으로 하므로 각축을 주시각축으로 하여 구성된 3벌의 블록-스캔라인 최대-최소 테이블이 필요하다.크기의 블록은 정방형에 근사시켜 구성하므로 1벌만 구성한다. 도2는해상도의 볼륨에서 구성된 최대-최소 테이블의 데이터 구조를 도시한 것이다.
여기에서, 도2a는블록으로 분할된 볼륨의 데이터 구조를 나타내며, 도2b는블록으로 분할된 볼륨의 데이터 구조를, 도2c는블록으로 분할된 볼륨의 데이터 구조를, 도2d는블록으로 분할된 볼륨의 데이터 구조를 각각 나타낸다. 또한, 각 블록에 표시한 숫자는 최대-최소 테이블을구성하기 위한 데이터 저장의 순서를 나타낸다.
본 발명에서는 상기 최대-최소 테이블 생성과정을 최적화하기 위하여 캐쉬 메모리를 사용하고, 또한 MMX(Multimedia Extension) 기능을 활용하며, 이들을 위한 데이터 재배열의 방법을 제공함을 주요한 특징의 하나로 한다.
캐쉬 메모리란 컴퓨터 내에서 자주 참조되는 데이터를 접근(Access) 속도가 빠른 주 제어장치 내의 제한된 메모리 영역에 위치시킴으로서 전체적 데이터 처리의 속도를 향상시키기 위한 기억장치를 말한다. 또한, MMX 기능이란 컴퓨터의 데이터 처리의 속도를 향상시키기 위해서, 수 개의 데이터에 대하여 동시에 일정한 연산을 수행하게 하는 기능을 말하며, 이는 SIMD(Single Instruction Multiple Data) 개념을 구현한 것이다.
기존의 방법에서는, 최대-최소 테이블을 생성하기 위하여서는 전체 볼륨 데이터를 입력으로 하므로 상기 도2에 나타낸 것과 같은 4가지 형태의 최대-최소 테이블을 생성하기 위해서는 전체 볼륨 데이터를 4번 읽어들여야 하며, 이는 많은 데이터 입출력 등 처리시간의 소요를 요구한다.
본 방법에서는 상기 기존의 방법과 같이 전체 볼륨을 읽어 들이면서 최대-최소 테이블을 생성하는 과정을 4번 반복하는 것이 아니라, 전체 볼륨을 한번만 캐쉬 메모리로 읽어 들이면서 4가지 형태의 최대-최소 테이블을 생성한다. 캐쉬 메모리의 용량은 제한적이고 일반적으로 볼륨 데이터는 방대한 양의 데이터로 구성되므로, 상기 캐쉬 메모리를 적극적으로 활용하기 위하여, 전체 볼륨을 일정한 크기의 블록단위로 나누고, 주 메모리에 저장된 전체 볼륨의 데이터 중 각각의 블록단위의일부 데이터를 캐쉬메모리로 위치시켜, 각 블록에 대하여 x, y, z의 주시각축 별 최대-최소 테이블을 생성하는 것을 주된 특징의 하나로 한다.
주시각축에 따라 각 최대-최소 테이블이 참조하는 메모리 영역이 다르므로, 전체 볼륨은 CPU-캐쉬메모리-주 메모리-하드디스크로 이어지는 하드웨어 구분에서 동일한 영역에 위치해야 한다.
이때, 처리의 기초가 되는 블록단위의 크기는 CPU의 캐쉬 라인 크기(cache line size)와 최대-최소 테이블의 블록의 크기에 의하여 결정된다. 예를 들어, 복셀 하나의 크기가 2바이트, CPU의 캐쉬라인 크기를 32바이트, n=16 및 m<n을 가정한다. 여기에서 이 경우, x, y, z를 주시각축으로 하여 처리될,블록에 해당하는 복셀 영역의 크기는 32바이트( 2 바이트 X 상기 처리될 블록의 복셀의 수(=16) )이고의 크기는 그보다 작으므로 캐쉬라인 하나의 크기와 일치하며,의 크기에 해당하는 그림2 (a)의 각 블록은 상기 캐쉬라인 크기의 배수체이므로단위를 기준으로 캐쉬 메모리에 읽어들여 최대-최소 테이블을 생성한다.
이를 가상코드의 형태로 표현하면 다음과 같다.(여기서 BigBlock은블록의 복셀에 해당하는 영역을 뜻한다.)
program : Make Min-Max Table
for each BigBlock
Load_To_Cache_Memory(BigBlock)
Make_Min_Max_For_One_Block(BigBlock)
이하에서는 각각의 BigBlock에서 최대-최소 테이블을 생성하는 과정을 살펴본다. 입력은의 복셀 배열이며 출력은,,의 단위의 최대-최소값들의 배열이다. 도2의 경우를 예로 들면가 전체 볼륨이 되며가 BigBlock이 된다. 출력은 도2a의 각 블록에 해당하는 최대-최소값과,,,의 복셀 영역이 하나의 최대-최소값이 되는 최대-최소값의 배열들이 된다. 그리고 도3에서 나타낸 바와 같이 각 배열의 크기는 4가 된다. 최대값과 최소값을 찾는 과정은 유사하므로 여기서는 최대값을 찾는 과정만을 보이기로 한다. 도3은크기의 BigBlock에서 투영(projection)에 의하여 최대-최소 테이블을 구성하는 예를 보인 것이다.
도3a에서는 주시각 축이 x 축인 경우에 대하여, 도3b에서는 주시각 축이 y축인 경우에 대하여, 도3c에서는 주시각 축이 z 축인 경우에 대하여 각각 투영(projection)에 의하여 최대-최소 테이블을 구하는 예를 나타낸다.
상기 도3에서 보듯 블록하나에 대해 최대-최소 테이블을 구성하는 것은 최대-최소 버퍼에 각 복셀의 값들을 투영(projection)시키고 이 버퍼의 값들을 최대-최소 테이블로 옮기는 과정으로 이루어진다. 상기 투영과정은 최대-최소버퍼와 복셀의 값을 비교하여 최대-최소 버퍼를 갱신하는 방식으로 진행되며, 최대-최소 테이블로 옮기는 과정은 최대-최소 버퍼의 값을 하나씩 옮기는 과정으로 이루어진다. 주시각 축에 따라 최대-최소 버퍼는 3벌이 필요하며 그 결과로 블록-스캔라인 최대-최소 테이블도 3벌을 얻는다.
이 과정을 가상코드의 형태로 표현하면 다음과 같다.
program : Make_Min_Max_For_One_Block(BigBlock)
Clear_Min_Max_Buffer
Project_To_Min_Max_Buffer
Move_To_Min_Max_Table
이하에서는 상기 투영과정에 대하여 상세히 기술한다.
상기 투영과정은 복셀값을 최대-최소 버퍼와 비교해서 최대-최소 버퍼를 갱신시키는 과정을 뜻한다. 이 과정은 MMX를 적용하기 위한 다음의 조건을 만족시키는 경우, 8바이트 단위로 투영과정을 실행시켜 최대-최소 테이블 생성의 속도를 향상시킬 수 있다.
가정1. 복셀과 최대-최소 버퍼는 각각 물리적으로 연속한 메모리 영역에 위치해야 한다.
가정2. 투영의 방향과 물리적인 메모리 영역의 방향은 서로 수직이어야 한다.
가정3. 각 복셀의 크기는 1, 2, 4, 8 바이트 중 하나여야 하며 복셀의 형태는 정수형(interger type)이어야 한다.
가정 4. 복셀의 배열과 최대-최소 버퍼는 8바이트 단위로 처리되는데 문제가 없어야 한다.
상기 가정1에서 물리적으로 연속하다는 것은 볼륨의 경우 x축에 평행하다는 것을 의미한다. 따라서 주시각 축이 x축과 y축인 경우(상기 도3a, 3b)는 x축이 투영방향과 수직이므로 문제가 없지만 주시각 축이 z축인 경우(상기 도3c)는 투영방향이 물리적인 방향과 평행하기 때문에 상기 가정2에 어긋난다. 이 경우 도4에 나타낸 것처럼, 투영방향이 물리적인 방향과 수직이 되도록 재배열(reconstruction)한 후 횡단 투영하여 최대-최소값을 얻도록 한다.
이 과정을 가상 코드의 형태로 나타내면 다음과 같다.
program : Project_To_Min_Max_Buffer
read 8 bytes voxel
x principal_axis projection
y principal_axis reconstruction
y principal_axis projection
z principal_axis projection
상기 투영과정으로 얻어진 결과인 최대-최소 버퍼의 값을 최대-최소 테이블로 옮기는 작업은 단순한 주소변환으로 이루어진다.
이 과정을 가상 코드의 형태로 나타내면 다음과 같다.
for each BigBlock index x,y,z
for each i,j [0..n-1]
tableX[x+i][z+j][y] = bufferX[j][i]
tableY[y+i][x+j][z] = bufferY[i][j]
tableZ[z+i][y+j][x] = bufferZ[i][j]
이하에서는 본 발명의 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 제2 단계인 누적 영역 테이블(Summed-area table)의 생성단계에 대하여 기술한다.
상기 불투명도 전이함수는 사용자가 보고자하는 영역의 밀도 값을 지정하여 이에 속하는 밀도 값을 가지는 복셀 만을 영상으로 표시하게 하기 위한 것이며, 사용자는 상기의 관심부분의 밀도 값의 일정 영역 및 표시할 영역의 비투명도 값을 사용자 인터페이스를 통하여 입력하게 된다.
상기 누적영역 테이블은 임의의 블록이 투명한지 여부를 일정 시간(constant time)에 빠르게 판단하기 위한 목적으로 구성된다. 구성방법은 상기 공지의 Lacroute의 방법과 동일하며 본 방법에서는 밀도값(density value)에 대한 1차원 누적영역 테이블을 구성한다.
이하에서는 본 발명의 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의 제3 단계인 블록 단위 런길이 인코딩(Block-based run-length encoding) 과정에 대하여 상세히 설명한다.
블록 단위 런길이 인코딩을 구성하는 목적은 렌더링 시간에 투명한 부분을 한꺼번에 뛰어넘기 위함이다. 런길이 인코딩 구조는 블록 단위 런길이 배열(block-based run-length array)과 스캔라인 포인터 배열(scanline pointer array)로 구성된다. 블록 단위 런길이 배열은 표준 객체좌표 (i, j, k)에 대하여i,j, k축 순서로 생성된 일련의 투명블록 런길이와 비투명 블록 런길이로 구성된다. 이때, 전단계에서 구성된 블록 최대-최소 테이블의 각 블록단위의 최대-최소값을 이미 구하여진 누적 영역 테이블과 비교하여 각 블록의 투명여부에 대한 정보를 단시간에 결정할 수 있다.
여기서, 스캔라인 포인터 배열은 각 스캔라인의 첫번째 런길이에 대한 포인터를 저장한 것이다. 만약 한 스캔라인에 비투명 블록이 하나도 없는 경우는 널 포인터(Null pointer)가 지정된다. 같은 블록 집합을 가지는 여러 스캔라인들은 동일한 런길이 정보를 가지므로 공통의 스캔라인 포인터를 가진다.
도5는 블록 크기가일 때 런길이 인코딩 데이터 구조의 한 예를 도시한 것이다. 여기서, 첫번째 슬라이스의 처음 두개의 스캔라인은 두개의 비투명 블록과 두개의 투명 블록으로 구성되어 있으므로 런길이는 0, 4, 4가 저장된다. 0으로 시작하는 이유는 항상 스캔라인의 런길이는 투명한 런부터 시작되기 때문이다. 첫번째 슬라이스의 처음 두개의 스캔라인 포인터는 각각 두 스캔라인이 공유하는 런길이 정보의 처음 런인 0을 가리킨다. 다음 두개의 스캔라인은 투명한 블록들로 이뤄지므로 해당 스캔라인 포인터는 널포인터로 지정된다. 또한 첫번째와 두번째 슬라이스는 공통의 블록 집합을 가지므로 두번째 슬라이스의 각 스캔라인 포인터도 첫번째 슬라이스의 각 스캔라인 포인터와 동일하다.
이하에서는 본 발명의 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법의제4 단계인 쉬어-왑 분해(Shear-warp factorization) 기법을 기초로 하여 수정된 본 발명의 볼륨 렌더링 과정을 상세히 기술한다.
쉬어-왑 분해 알고리즘은 볼륨을 볼륨의 한 면과 평행한 중간 화상 평면(intermediate image plane)에 투영 시켜 중간 화상(intermediate image)을 만든 다음, 2차원 와핑(warping)을 하여 최종 화상을 얻는 방법이다. 이 알고리즘은 복셀 라인을 따라 중간 화상(intermediate image)을 구하므로 객체 순서 알고리즘(object-order algorithm)의 장점을 살린 동시에, 화상 순서 알고리즘(image-order algorithm)이 가지는 장점인 고화질을 위한 재샘플링(re-sampling)과 광선 추적의 조기종료(early ray termination) 등이 가능하다.
본 방법은 기존의 쉬어-왑 분해 알고리즘을 기반으로 한다. 기존의 쉬어-왑 분해 알고리즘은 각각의 복셀을 단위로 한, 런길이 배열의 구성을 전제로 하는 반면, 본 방법은 초기에 블록단위 런길이 배열을 구성하므로 비투명 런에서도 투명한 복셀이 존재할 수 있다. 따라서 비투명한 런일때에도 부가적으로 블록-스캔라인 최대-최소 테이블을 검색하여 해당 블록-스캔라인이 비투명한지 조사한다. 이 경우에도 비투명하다면 복셀단위로 비투명여부를 조사하여 비투명하다면 음영값을 구하여 합성(composite)한다.
다음에서는 쉬어-왑 분해 알고리즘을 수행시 보간되지 않은 볼륨을 효율적으로 렌더링하기 위하여 본 발명에서 제안한 방법을 구체적으로 제시한다.
우선, 본 발명의 주요한 특징의 하나로서 종래기술과 달리 정방형으로 보간되지 않은 볼륨 데이터를 이용하여 임의의 복셀 vi의 음영(shading) 값을 구하기 위한 방법을 이하에서 상세히 기술한다.
이를 위하여 종래 기술의 방법을 정리하면,
단계 1. 밀도값 보간(density interpolation)을 하여 vi의 밀도값을 구한다.
단계 2. 상기 보간된 볼륨 데이터 상에서 vi의 법선 벡터(normal)를 구한다.
단계 3. 상기 vi의 음영값(shading value)을 구한다.
위 과정은 합성(compositing)되는 모든 복셀에 대하여 복셀과 주변 복셀의 밀도값을 보간하고 법선 벡터 및 음영값을 구하는 오버헤드(overhead)가 필요하므로 볼륨 렌더링 결과 이미지를 생성하는데 많은 시간이 소요된다.
본 발명에서는 임의의 복셀 vi의 위치가 상기 스캐닝되어 입력된 슬라이스 중의 한 복셀일 경우에만 법선벡터를 구하여 음영값을 생성한다. 그리고, 보간된 슬라이스에 해당되는 복셀의 음영값은 상하 슬라이스의 같은 위치의 복셀의 음영값을 보간하여 구한다. 이와같은 방법을 사용하면 보간된 슬라이스에 포함되는 복셀의 밀도값 보간 및 법선 벡터를 구하는 부담을 없앨 수 있다. 그 세부 과정은 아래와 같다.
단계 1. 음영값을 생성할 복셀 vi에 대하여 입력된 슬라이스에 포함된 복셀인지의 여부를 판단하여 그에 해당될 경우 입력된 볼륨상에서 vi의 법선 벡터를 구한 다음, vi의 음영값을 구한다.
단계 2. 입력된 슬라이스에 포함되지 않고 보간될 슬라이스에 포함된 복셀인 경우, vi를 포함하는 슬라이스의 상하 각 입력 슬라이스 중 vi와 같은 위치에 해당하는 두 복셀의 음영값을 보간하여 vi의 음영값을 구한다.
본 발명의 방법과 앞에서 제시한 일반적인 방법과 차이를 설명하면 도6과 같다.
상기 도6에서, 6a는 앞에서 제시한 일반적인 방법이고 6b는 본 발명에서 제시한 방법을 나타낸다. 또한, 도6c는 상기 도6a의 방법과 도6b의 방법을 비교하여 설명하기 위한 도면이다.
상기 도6b에 나타낸 본 발명에서의 방법과 상기 도6c의 방법에 의하여 구하여진 복셀 vi의 음영값이 같음은 용이하게 증명이 가능하며, 결국 도6b의 본 발명의 방법과 도6c의 방법은 등가로 볼 수 있다. 따라서, 비교의 편의상 도6a와 도6c 의 방법을 비교하면, 보간되는 복셀의 법선 벡터를 구할 때 상기 도6a의 경우는 z축에 대한 법선 벡터의 거리(normal distance)가 2가 되고, 상기 도6c의 경우는 2n (여기서 n은 slice 간격/pixel 간격을 나타낸다)이 되어 전반적으로 상기 도6a의 경우에 비교하여 스무딩된 결과를 얻는다. 일반적으로 의료영상 분야의 입력장치의 한계로 슬라이스 간격이 커서 z축 영상에 계단현상이 발생하는 문제점이 있는데, 상기 본 발명의 적용의 결과로 법선 벡터의 보간을 위한 전후 구간의 거리가 넓어짐으로써 상기 종래 기술의 경우와 같은 계단 현상이 해소될 수 있는 이점이 있다.
이하에서는 이후의 처리에서 용이하게 참조하게 함으로써 음영값을 다시 구하는 부담을 줄여 처리의 속도를 향상시키기 위한 본 발명의 볼륨 스캔라인의 처리순서의 지정 방법 및 음영값의 효율적인 저장방법을 상세히 기술하겠다.
최근의 처리과정에서 구해진 음영값을 효율적으로 저장(buffering)하면 새로운 처리에서 음영값을 새로이 구하는 오버헤드를 줄일 수 있다. 본 방법에서는 주시각축에 따라 처리하는 스캔라인 순서를 달리하여 음영값을 효율적으로 버퍼링한다.
도7에서는 쉬어-왑 분해 알고리즘을 적용함에 따른, 주시각 축의 표준 객체 좌표로의 변환을 나타낸다.
본 발명은 쉬어-왑 분해 알고리즘을 기본으로 하고 있으며, 그에 따라 상기 도7에 나타낸 바와 같이 주시각축에 따라 스캔라인 처리순서가 달라진다. 여기서, (a)에서는 주시각축 x로 하는 경우를 나타내었고, (b)는 주시각축 y로 하는 경우를, (c)는 주시각축 z로 하는 경우를 각각 나타낸다. 이때 표준 객체 좌표에서의 k는 주시각축을, j는 스캔라인의 방향을 나타낸다.
본 발명은 기존 방법과는 달리 보간되지 않은 볼륨 데이터를 가지고 보간을 하면서 렌더링하는 것이므로 주시각 축에 따라 보간이 필요한 부분이 달라진다. 따라서 주시각 축에 따라 음영값의 버퍼링을 효율적으로 수행하기 위한 스캔라인 처리방법이 필요하다. 입력된 볼륨의 해상도가이고 슬라이스 간격이 픽셀 간격의 n배라고 가정했을 때 각 주시각축에 대한 스캔라인 처리순서와 음영값의 버퍼링(buffering) 방법을 이하에서 기술한다. 버퍼의 크기가 너무 커지면 메모리의 적중율(hit ratio)이 떨어지므로 성능상의 효율을 위하여 스캔라인 크기로 정하였다.
우선, 주시각축이 x축인 경우의 음영값의 버퍼링 방법을 가상코드의 형태로 나타내면 다음과 같다.
allocate and initialize front_buffer[Ymax] and back_buffer[Ymax]
m_intrpZ = (Zmax-1)*n +1; // 보간된 볼륨의 슬라이스수
for (k=0; k < Xmax; k++)
for( real_j=0, jj=0; real_j < Zmax; jj +=m_nRatioZ, real_j++)
for (j=jj; j< jj+n; j++)
if(j >= m_ intrpZ) break;
else
composite current scanline j
end for // j
swap front_buffer and back_buffer and initialize back_buffer
end for // real_j
end for // k
도8은 주시각축이 x 축인 경우에 k=0이고, j=0에서 3까지 처리 시 버퍼링 방법을 도시한다.
가상의 보간된 볼륨(interpolated volume)을 가정했을 때 표준 객체 좌표에서 각 슬라이스의 스캔라인을 따라 처리할 때, 스캔라인에 해당되는 축은 볼륨 좌표의 z축이 된다. 따라서 스캔라인과 스캔라인 사이에서 보간이 필요하다. 표준 객체좌표의 k=0이고 스캔라인 0에서 3까지의 스캔라인을 처리할 때( 위 코드의 j=0부터 3) 볼륨 좌표의 슬라이스 0에 해당되는 스캔라인이 전향 버퍼(front buffer)이고, 슬라이스 1에 해당되는 스캔라인이 후향 버퍼(back buffer)가 된다.
전향 버퍼와 후향 버퍼 사이에 있는 보간되어야할 스캔라인들의 음영값은 전향 버퍼와 후향 버퍼에 저장된 같은 위치의 음영값을 보간하여 결정된다. 만약 전향 또는 후향 버퍼에 해당 위치의 음영값이 저장되어 있지 않은 경우는 해당 위치의 음영값을 구하여 버퍼에 저장해 놓음으로써 다음 스캔라인에서 재사용할 수 있도록 한다.
다음 스캔라인 4를 처리할 때에는 이전 단계의 후향 버퍼가 전향 버퍼가 되도록 하여 이미 계산된 음영값을 재사용할 수 있도록 하고, 후향 버퍼는 초기화시킨다. 이와 같은 과정을 표준 객체좌표의 슬라이스 끝(k=Xmax)까지 반복한다.
다음으로, 주시각축이 y축인 경우의 음영값의 버퍼링 방법을 가상코드의 형태로 나타내면 다음과 같다.
m_intrpZ = (Zmax-1)*n +1; // 보간된 볼륨의 슬라이스수
allocate and initialize buffer[Zmax]
for (k=0; k < Ymax; k++)
for (j=0; j < Xmax; j++)
composite current scanline j composed of i0... im_intrpZ
도9는 주시각축이 y축일 때의 음영값의 버퍼링 방법을 k=0, j=0의 경우를 예로 도시한 것이며, 이 경우는 보간이 각 스캔라인 내부에서 이뤄지므로 버퍼가 하나만 있으면 된다.
마지막으로, 주시각축이 z축인 경우의 음영값의 버퍼링 방법을 가상코드의 형태로 나타내면 다음과 같다.
m_intrpZ = (Zmax-1)*n +1; // interpolate된 볼륨의 슬라이스수
allocate and initialize front_buffer[Xmax] and back_buffer[Xmax]
if reverse_scanlineorder = TRUE {
for ( j= Ymax-1; j >= 0; j-- )
for( real_k=0, kk=0; real_k < Zmax; kk +=m_nRatioZ, real_k++)
for (k=kk; k < kk+n; k++)
if(k >= m_intrpZ) break;
else
composite current scanline j of slice k
end for //k
swap front_buffer and back_buffer and initialize back_buffer
end for // kk
end for //j
}
else {
for (j=0; j < Ymax; j++)
for( real_k=0, kk=0; real_k < Zmax; kk +=m_nRatioZ, real_k++)
for (k=kk; k < kk+n; k++)
if(k >= m_intrpZ) break;
else
composite current scanline j of slice k
end for //k
swap front_buffer and back_buffer and initialize back_buffer
end for // kk
end for //j
}
도10은 주시각축이 z 축인 경우에 j=0이고, k=0에서 3까지 처리 시 버퍼링 방법을 도시한다.
이 경우는, 보간이 표준 객체좌표의 슬라이스와 슬라이스 사이에서 필요하다. 따라서 스캔라인 단위의 버퍼링을 하기 위해서는 각 스캔라인에 대하여 전체 슬라이스를 처리(traverse)하는 것이 효율적이다. 이때, 주시각축이 z축인 경우는 표준 객체 좌표의 각 슬라이스 단위로 처리하는 것이 아니므로 전후향 합성(front-to-back composition)을 보장하기 위한 스캔라인 처리 순서를 결정하여야 한다. 즉, j축에 대한 기울임 정도(shearing factor)가 0보다 크거나 같은 경우에는 중간 단계의 이미지(intermediate image)에 기록될 음영값은 관측자의 시각방향에 대하여 전방에 있는 이미지가 먼저 기록되는 것이 아니라 후방에 있는 이미지가 먼저 기록되는 결과가 되므로 처리의 순서가 반대로 되어야 한다. 따라서, 본 방법은 상기 j축에 대한 기울임 정도(shearing factor)가 0보다 크거나 같은 경우(상기 가상코드에서 reverse_scanlineorder = TRUE의 경우)에는 표준 객체 좌표의 각 슬라이스의 마지막 스캔라인부터 역으로 처리(traverse)한다. 단, 마지막 슬라이스부터 슬라이스를 처리하는 경우는 실제 마지막 슬라이스가 처음 슬라이스로 되므로 reverse_scanline order 플래그(flag)를 반전시켜 j축에 대한 기울임 정도(shearing factor)가 0보다 작은 경우에 마지막 스캔라인부터 처리할 수 있도록 한다.
이하에서는 본 발명의 주요한 특징의 하나인 렌더링 과정을 가속화(Speed-Up)하기 위한 방법에 대하여 상세히 기술한다.
우선, 본 발명은 렌더링 과정의 가속화를 위해 런길이 배열에 대한 점근적 상세화 (Progressive refinement of run-length array) 방법을 사용함을 특징으로 한다.
본 발명의 블록단위 런길이 배열은 기존 기술의 복셀 단위로 추출하여 구성된 런길이 배열만큼 정확한 런길이 정보를 제공하지 못하므로 실제로 투명한 복셀임에도 불구하고 렌더링 중에 해당 복셀에 대한 추출(classification) 과정이 필요하다. 사용자가 시각 파라미터를 바꿈에 따라 현재 시각에서 보이는 비투명 블록중 투명한 복셀을 추출하여 블록단위 런길이 배열에서 좀더 상세한 런길이 배열로 점차적으로 변환시켜갈 수 있고 이를 점근적 상세화 방법이라 한다. 쉬어-왑 분해 알고리즘은 보이는 복셀에 대해서만 처리하므로 런길이 배열도 보이는 복셀에 대해서만 상세화시켜 나갈 수 있으므로 런길이 배열의 저장공간과 추출 시간 (classification time) 측면에서 유리하다.
도11은 도5의 블록단위 런길이 배열을 상세화시켜 생성된 런길이 배열의 예이다.
다음으로 본 발명에서는 렌더링 과정의 가속화를 위해 런길이 배열에 대한 재사용(Reuse of run-length array) 방법을 사용함을 다른 한 특징으로 한다.
상기 불투명도 전이함수가 바뀌면 블록단위 런길이 배열이 재구성되어야 한다. 그러나 만약 함수가 이전과 그다지 변화가 없고, 이전 런길이 배열의 비투명 복셀이 바뀐 함수에 의한 비투명 복셀을 포함하고 있다면 이전 런길이 배열의 재사용이 가능하다.
도12에서는 이전 런길이 배열의 재사용 가능여부를 빠르게 판단하기 위하여 본 발명에서 사용하고 있는 방법의 첫 번째 판단 단계를 나타낸다. 여기서, (a)는 불투명도 전이함수의 지정을 위하여 제어점p 1이나p 2를 움직였을 경우를 나타내며, (b)는 제어점p 0p 3을 움직이는 경우를 나타낸다.
상기 도12에서 보는 바와 같이 제어점(control points)p 0,p 1,p 2, p 3이 불투명도 전이 함수를 표현한다고 가정하자(본 방법에서는 사다리꼴 형태를 가지는 불투명도 전이 함수를 예로 들었으나 다른 형태의 함수도 똑같이 적용할 수 있다.). 이때 불투명도 전이함수를 변경하기 위하여 도12의 (a)에서 보는 바와 같이 제어점p 1이나p 2를 움직였을 때에는 투명 복셀과 비투명 복셀들의 상태는 변함이 없다. 따라서 이 경우는 이전 런길이 배열을 그대로 재사용할 수 있다. 반면 도12의 (b)와 같이 제어점p 0p 3을 움직이는 경우는 움직인 구간에 해당하는 복셀의 투명/비투명 상태가 변하므로 재사용 가능 여부를 다음의 두 번째 단계에서 좀 더 조사하여야 한다.
도13에서는 이전 런길이 배열의 재사용 가능여부를 빠르게 판단하기 위하여 본 발명에서 사용하고 있는 방법의 두 번째 판단 단계를 나타낸다. 여기서, (a)에서는 dold와 dnew사이의 구간이 비투명 상태에서 투명 상태로 바뀌는 경우를 나타내며 (b)는 투명 상태에서 비투명 상태로 바뀌는 경우를 나타낸다.
상기 제어점p 0가 dold에서 dnew로 바뀌었을 때 도13에서 보는 바와 같이 두가지 경우가 발생할 수 있다. 즉 dold와 dnew사이의 구간이 비투명 상태에서 투명 상태로 바뀌는 경우인 (a)와, 투명 상태에서 비투명 상태로 바뀌는 경우인 (b)이다. 이때, 전자의 경우는 비투명 구간의 정보를 잃어버리는 것이 아니므로 이전 런길이 배열을 그대로 사용할 수 있으나 후자의 경우는 비투명 구간이 추가되어 이전 런길이 배열을 그대로 사용할 수 없다. 단, 전자의 경우 dold와 dnew사이의 구간이 실제로 투명함에도 불구하고 이전 런길이 배열을 그대로 사용함에 따라 비투명한 구간으로 간주되어 렌더링 시에 상기의 점근적 상세화 과정에 의하여 일일이 복셀단위의 비투명 여부를 검사하여야 하는 단점이 있다. 따라서 dold와 dnew사이의 구간이 지정된 임계치(threshold)보다 작은 경우, 즉 불투명도 전이 함수의 변화가 작은 경우에만 재사용한다. 또한, 이전 런길이 배열의 재사용이 가능한 경우인, 상기 도 13의 (a)의 비투명 상태에서 투명 상태로 바뀌는 경우인지의 여부를 단위시간 내에(constant time) 파악하기 위하여 본 방법에서는 앞서 구성된 누적 영역 테이블과의 비교방법을 이용한다. 즉, 전 단계에서 형성된 누적영역 테이블을 참조하여 판단할 때, 상기 dold와 dnew사이의 구간이 비투명 영역에 있으면 상기 도 13의 (a)의 이전 런길이 배열의 재사용이 가능한 경우가 된다.
본 발명에 의한 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법은, 본 발명의 기술적 사상의 범위 내에서 다양한 형태로 변형, 응용 가능하며 상기 바람직한 실시예에 한정되지 않는다.
예를 들면, 본 발명의 방법은 동일한 과정을 수행하는 하드웨어로서도 구현(H/W Implementation)이 가능하며, 그 한 실시예를 도 14에 나타내었다.
상기 도14의 렌더링 장치는 메모리부(100)와 인터페이스부(200), 그리고 처리엔진부(300)를 포함한다.
메모리(100)는 렌더링할 복셀을 저장하고 있는 복셀 메모리(110)와 랜더링한 결과를 저장할 픽셀 메모리(120)로 구성된다.
복셀 메모리(110)와 픽셀메모리(120)는 각각 복셀 메모리 인터페이스(Voxel Memory Interface)(210)와 픽셀 메모리 인터페이스(Pixel Memory Interface)(220)를 통하여 처리엔진부(300)에 연결된다.
처리엔진부(300)는 병렬처리를 할 수 있도록 다수의 파이프라인(310)으로 구성되게 하는 것이 바람직하며 각각의 파이프라인은 서로에 대해 독립적으로 작동한다.
하나의 파이프라인은 추출장치(Classification)(320), 법선벡터 추정장치 (Gradient Estimation)(330), 합성장치(Compositing)(340), 음영버퍼(Shade Buffer )(350)를 포함하며 각 파이프라인은 공통적으로 색-불투명도 전이 참조 테이블(Color and opacity lookup table)(360)과 음영 참조 테이블(Shade lookup table)(370)을 참조한다.
추출장치(320)는 색-불투명도 전이 참조 테이블(109)을 이용하여 렌더링할 복셀을 결정한다.
색-불투명도 전이 참조 테이블(360)은 불투명도 전이함수를 참조 테이블 형식으로 변형한 메모리 영역이다.
법선벡터 추정장치(330)는 렌더링할 복셀의 법선벡터를 추정하여 음영 참조 테이블(370)을 참조하거나, 음영 버퍼(350)를 사용한다. 그리고 이들의 결과로 복셀의 음영값을 결정한다.
음영 참조 테이블(370)은 법선벡터에 대해 음영값을 참조 테이블 형식으로 변형한 메모리 영역이다.
음영 버퍼(350)는 음영값을 버퍼링하는 메모리 장치로 전향버퍼와 후향버퍼로 구성된다.
합성장치(340)는 음영값과 색-불투명도를 이용해서 렌더링한 결과를 얻어내는 장치이다. 랜더링한 결과는 픽셀 메모리 인터페이스(220)를 통해 픽셀 메모리에 전달된다.
상기 실시예와 도면은 발명의 내용을 상세히 설명하기 위한 목적일 뿐, 발명의 기술적 사상의 범위를 한정하고자 하는 목적이 아니며, 이상에서 설명한 본 발명은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 상기 실시예 및 첨부된 도면에 한정되는 것은 아님은 물론이다.
본 발명에 의하여, 일반 PC에서도 상기 종래 기술의 슬라이스 보간을 위한 전처리 과정이 없이 입력장치로부터 스캐닝된 볼륨 데이터를 가상의 보간된 볼륨 데이터로 가정하고 빠르게 렌더링하는 방법을 제공할 수 있으며, 또한 렌더링 중에사용자가 보고자하는 부분을 변경하여 지정할 경우에도 실시간으로 신속하게 렌더링된 결과를 볼 수 있도록 효율적인 데이터의 처리 기법에 기반을 둔 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법, 시스템 및 기록 매체를 제공할 수 있어, 의료영상 분야에서 저가 장비를 이용하여서도 신속한 처리를 할 수 있도록 하여 진단자료로 활용할 수 있도록 하는 효과를 가진다.

Claims (13)

  1. 3차원적 위치의 함수로서 표현되는 소정의 특성을 가지는 입체적 구조물의 미리 저장된 각각의 단면상에서의 정보의 집합으로 구성된 일련의 볼륨 데이터로부터 블록 단위 최대-최소 테이블을 생성하여 저장하는 제1 단계;
    사용자에게 불투명도 전이함수를 지정하도록 하여 그에 따른 누적영역 테이블을 생성하는 제2 단계;
    사용자에게 시각 파라미터를 지정하도록 하여, 상기 제1 단계에서 생성된 블록 단위 최대-최소 테이블의 값을 상기 제2 단계에서 형성된 누적영역 테이블과 비교하여 각 블록의 투명 또는 비투명 여부를 판단하며, 이를 기초로 블록단위 런길이 인코딩을 수행하는 제3 단계; 및
    수정된 쉬어-왑 분해 기법에 의해 볼륨 렌더링을 수행하는 제4 단계를 포함하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
  2. 제1항에 있어서,
    상기 제1 단계는
    미리 정해진 크기를 가지며, 동일한 블록에 대해서 수 개의 레벨로 세분된 구조를 갖는 몇 개의 블록으로 전체 볼륨을 구분하는 제1-1 단계;
    상기 제1-1 단계에서 구분된 상기 레벨에 따른 각 블록을 단위로 하여 그에 소속된 복셀 데이터의 최대값 및 최소값을 투영과정을 통해 구하여 최대-최소 버퍼에 임시 저장하는 는 제1-2 단계; 및
    상기 제1-2 단계에서 구하여진 최대값 및 최소값을 각 블록단위 최대-최소 테이블에 저장하는 제1-3 단계를 포함하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
  3. 제2항에 있어서,
    상기 제1-1 단계는
    캐쉬 메모리를 활용하여 처리과정을 가속화하기 위하여, 캐쉬 메모리의 용량이하의 데이터 크기를 가지도록 블록의 크기를 결정하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
  4. 제2항에 있어서,
    상기 제1-2 단계는
    MMX 기능을 활용하여 상기 투영과정을 가속화하기 위하여, 상기 복셀과 상기 최대-최소 버퍼가 각각 물리적으로 연속한 메모리 영역에 위치하며, 상기 투영의 방향과 물리적인 메모리 영역의 방향은 서로 수직이며, 상기 각 복셀의 크기가 1, 2, 4, 8 바이트 중 하나가 되며, 상기 복셀의 데이터 형태는 정수형(interger type)이며, 상기 복셀의 데이터 배열과 상기 최대-최소 버퍼는 8바이트 단위로 처리되는데 문제가 없도록 상기 블록의 복셀 데이터를 재배열하는 단계를 포함하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
  5. 제1항에 있어서,
    상기 제3 단계는
    사용자에게 시각 파라미터를 지정하도록 하여 주시각 축을 결정하는 제3-1 단계;
    상기 제3-1 단계에서 결정된 주시각 축에 부합하고, 상기 제1 단계에서 생성된 블록 단위 최대-최소 테이블의 값을 상기 제2 단계에서 형성된 누적영역 테이블과 비교하여, 각 블록의 투명 또는 비투명 여부를 판단하는 제3-2 단계; 및
    상기 제3-2 단계에서 판단된 각 블록의 투명 또는 비투명 정보를 기초로 블록단위 런길이 인코딩을 수행하여 블록단위 런길이 배열을 생성하는 제3-3 단계를 포함하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
  6. 제5항에 있어서,
    상기 제3-3 단계에서 생성된 블록단위 런길이 배열을 기초로 하여, 상기 제3-1 단계에서 사용자에 의해 지정된 시각 파라미터 상에서 보이는 비투명한 블록에 대해서만 복셀 단위로 투명 또는 비투명 여부를 판단하여 복셀단위 런길이 배열로 상세화하는 제3-4 단계를 더 포함하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
  7. 제1항에 있어서,
    상기 제4 단계는
    상기 볼륨 데이터를 기초로 소정 복셀의 음영값을 결정하는 제4-1 단계;
    상기 제4-1 단계에서 결정된 음영값을 상기 볼륨의 한 면과 평행한 중간 화상 평면에 투영하는 제4-2 단계; 및
    상기 제4-2 단계에서 얻어진 중간 화상을 관측자의 시각 벡터 값에 따라 와핑하여 최종 화상을 얻는 제4-3 단계를 포함하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
  8. 제7항에 있어서,
    상기 제4-1 단계는
    음영값을 생성할 상기 소정의 복셀 vi에 대하여 입력된 슬라이스에 포함된 복셀 인지의 여부를 판단하여 그에 해당될 경우 상기 입력된 볼륨 데이터상에서 vi의 법선 벡터를 구한 다음, vi의 음영값을 구하는 제4-1-1 단계; 및
    상기 입력된 슬라이스에 포함되지 않고 보간될 슬라이스에 포함된 복셀인 경우, vi를 포함하는 상기 슬라이스의 상하 각 입력 슬라이스 중 vi와 같은 위치에 해당하는 두 복셀의 음영값을 상기 제4-1-1 단계의 방법에 의하여 구한 후 이를 보간하여 vi의 음영값을 구하는 제4-1-2 단계를 포함하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
  9. 제8항에 있어서,
    상기 볼륨 데이터를 기초로 소정 복셀의 음영값을 효율적으로 결정하기 위하여, 상기 주시각축이 x 축인 경우, 전향 버퍼와 후향 버퍼를 지정하며, 상기 제4-1-2 단계에서 상기 복셀 vi의 음영값을 결정하기 위한 보간 과정에서 사용된, 상하 각 입력 슬라이스 중 vi와 같은 위치에 해당하는 두 복셀의 음영값들을 각각 상기 전향버퍼와 후향버퍼에 저장하여, 이후의 다른 복셀의 음영값의 결정을 위한 데이터로 사용할 수 있도록 하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
  10. 제8항에 있어서,
    상기 볼륨 데이터를 기초로 소정 복셀의 음영값을 효율적으로 결정하기 위하여, 상기 주시각축이 y 축인 경우, 하나의 버퍼를 지정하며, 상기 제4-1-2 단계에서 상기 복셀 vi의 음영값을 결정하기 위한 보간 과정에서 사용된, 상하 각 입력 슬라이스 중 vi와 같은 위치에 해당하는 두 복셀의 음영값들을 각각 상기 버퍼에 저장하여, 이후의 다른 복셀의 음영값의 결정을 위한 데이터로 사용할 수 있도록 하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
  11. 제8항에 있어서,
    상기 볼륨 데이터를 기초로 소정 복셀의 음영값을 효율적으로 결정하기 위하여, 상기 주시각축이 z 축인 경우, 전향 버퍼와 후향 버퍼를 지정하며, 상기 제4-1-2 단계에서 상기 복셀 vi의 음영값을 결정하기 위한 보간 과정에서 사용된, 상하 각 입력 슬라이스 중 vi와 같은 위치에 해당하는 두 복셀의 음영값들을 각각 상기 전향버퍼와 후향버퍼에 저장하여, 이후의 다른 복셀의 음영값의 결정을 위한 데이터로 사용할 수 있도록 하며,
    이 경우에 전후향 합성이 보장되도록 스캔라인의 처리순서를 결정하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
  12. 제1항에 있어서,
    상기 제3 단계는
    사용자에 의해 지정된 불투명도 전이 함수와 이전의 렌더링 과정에서 이미 저장된 불투명도 전이 함수를 비교하여 상기 이전의 렌더링 과정에서 이미 생성된 상기 런길이 배열의 재사용 가능여부를 판단하는 재사용 판단 단계를 더 포함하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
  13. 제12항에 있어서,
    상기 재사용 판단 단계는
    상기 사용자에 의해 지정된 불투명도 전이 함수에서의 각 밀도값에 대한 투명 또는 비투명의 상태가 이전의 렌더링 과정에서 이미 저장된 불투명도 전이 함수의 각 밀도값에 대한 투명 또는 비투명의 상태와 비교하여 변화가 없으면, 상기 이전의 렌더링 과정에서 이미 생성된 상기 런길이 배열의 재사용이 가능한 것으로 판단하는 R1단계;
    상기 R1단계에서 상기 사용자에 의해 지정된 불투명도 전이 함수에서의 각 밀도값에 대한 투명 또는 비투명 상태가 이전의 렌더링 과정에서 이미 저장된 불투명도 전이 함수의 각 밀도값에 대한 투명 또는 비투명 상태와 비교하여 변화가 있는 것으로 판단되면, 상기 밀도값 영역 중 서로 다른 부분을 추출하는 R2단계;
    상기 R2단계에서 추출된 상기 밀도값 영역의 서로 다른 부분을 상기 제2 단계에서 생성된 누적 영역 테이블과 비교하여 상기 밀도값 영역의 서로 다른 부분이 투명 영역에 포함되는 경우 상기 이전의 렌더링 과정에서 이미 생성된 상기 런길이 배열의 재사용이 가능한 것으로 판단하는 R3단계를 포함하는 것을 특징으로 하는 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법.
KR10-2001-0000070A 2001-01-02 2001-01-02 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법 KR100392516B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0000070A KR100392516B1 (ko) 2001-01-02 2001-01-02 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0000070A KR100392516B1 (ko) 2001-01-02 2001-01-02 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법

Publications (2)

Publication Number Publication Date
KR20020059138A KR20020059138A (ko) 2002-07-12
KR100392516B1 true KR100392516B1 (ko) 2003-07-22

Family

ID=27690541

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0000070A KR100392516B1 (ko) 2001-01-02 2001-01-02 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법

Country Status (1)

Country Link
KR (1) KR100392516B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100420791B1 (ko) * 2001-03-16 2004-03-02 한국과학기술원 3차원 볼륨-단면 결합 영상 생성 방법
KR100751397B1 (ko) * 2005-11-22 2007-08-22 엘지전자 주식회사 영상 처리 방법
KR100795600B1 (ko) * 2006-11-10 2008-01-21 인하대학교 산학협력단 볼륨 광선 투사법에 맞도록 변형된 마칭큐브 방법용 테이블 구조를 기록한 컴퓨터로 읽을 수 있는 매체
KR101010894B1 (ko) * 2010-02-18 2011-01-25 여흥레이저텍(주) 가로수 보호판 잠금장치

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970071296A (ko) * 1996-04-25 1997-11-07 김광호 볼륨 렌더링 장치 및 이에 적합한 방법
JPH10283504A (ja) * 1997-03-31 1998-10-23 Shimadzu Corp 3次元画像生成装置
US6008813A (en) * 1997-08-01 1999-12-28 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Real-time PC based volume rendering system
KR20000028579A (ko) * 1998-05-25 2000-05-25 요코미조 히로시 화상합성시스템
KR20000067384A (ko) * 1999-04-28 2000-11-15 윤덕용 쉬어-왑 분해를 이용한 블록 기반의 볼륨 렌더링 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970071296A (ko) * 1996-04-25 1997-11-07 김광호 볼륨 렌더링 장치 및 이에 적합한 방법
JPH10283504A (ja) * 1997-03-31 1998-10-23 Shimadzu Corp 3次元画像生成装置
US6008813A (en) * 1997-08-01 1999-12-28 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Real-time PC based volume rendering system
KR20000028579A (ko) * 1998-05-25 2000-05-25 요코미조 히로시 화상합성시스템
KR20000067384A (ko) * 1999-04-28 2000-11-15 윤덕용 쉬어-왑 분해를 이용한 블록 기반의 볼륨 렌더링 방법

Also Published As

Publication number Publication date
KR20020059138A (ko) 2002-07-12

Similar Documents

Publication Publication Date Title
US9972129B2 (en) Compression of a three-dimensional modeled object
JP3981302B2 (ja) 3次元の静止した又は動くオブジェクトの階層イメージベース表現並びに該表現をオブジェクトのレンダリングに使用する方法及び装置
JP3052681B2 (ja) 3次元動画像生成装置
EP0758118B1 (en) A volume rendering apparatus and method
JP3184327B2 (ja) 3次元グラフィックス処理方法及びその装置
US6292192B1 (en) System and method for the direct rendering of curve bounded objects
US20080024490A1 (en) Real-time GPU rendering of piecewise algebraic surfaces
Borgeat et al. GoLD: interactive display of huge colored and textured models
JP4663847B2 (ja) 多重フェーズレンダリング方法および装置
US6014143A (en) Ray transform method for a fast perspective view volume rendering
JPH04287292A (ja) トリミングされたパラメトリック面のレンダリング方法及び装置
JPH0778267A (ja) 陰影を表示する方法及びコンピュータ制御表示システム
JPH0776991B2 (ja) Nurbsデータ変換方法及び装置
CN104732479B (zh) 对图像进行调整大小
US5428716A (en) Solid-clip methodology and architecture for clipping solid models and displaying cross-sections using depth-buffers
JP2000348213A (ja) 三次元画像生成装置、三次元画像生成表示装置、及びその方法並びに記録媒体
Gu et al. Silhouette mapping
KR100392516B1 (ko) 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법
US5926183A (en) Efficient rendering utilizing user defined rooms and windows
KR0166106B1 (ko) 화상 처리 장치 및 그 방법
Westermann et al. Decoupling polygon rendering from geometry using rasterization hardware
Uchiki et al. SCOPE: solid and colored object projection environment
Dzik et al. Representing surfaces with voxels
KR100283071B1 (ko) 고속 텍스쳐 매핑 방법
JPH05181978A (ja) 画像表示方法

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130702

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20140704

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20150702

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20160704

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20170705

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20190710

Year of fee payment: 17