KR101651827B1 - 파일 및 병렬 처리를 이용한 객체의 복셀화 방법 - Google Patents
파일 및 병렬 처리를 이용한 객체의 복셀화 방법 Download PDFInfo
- Publication number
- KR101651827B1 KR101651827B1 KR1020150027596A KR20150027596A KR101651827B1 KR 101651827 B1 KR101651827 B1 KR 101651827B1 KR 1020150027596 A KR1020150027596 A KR 1020150027596A KR 20150027596 A KR20150027596 A KR 20150027596A KR 101651827 B1 KR101651827 B1 KR 101651827B1
- Authority
- KR
- South Korea
- Prior art keywords
- voxelization
- file
- calculation
- information
- voxel
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
폴리곤으로 구성된 3차원 모델에 대해 표면 복셀화를 수행하여 3차원 모델의 표면 정보를 추출하고, 이 정보를 기초로 내부 복셀화를 수행하여 고해상도로 3차원 모델을 복셀화하는 방법에 관한 것으로, (a) 복셀화 계산 시에 추출되는 복셀 정보를 바이너리 파일로 저장하는 파일 처리 단계, (b) 상기 단계 (a)에서 저장된 바이너리 파일에 따른 복셀화 계산 시에 다중 스레드(Multi-Thread)를 이용하여 병렬로 처리하는 병렬 처리 단계를 포함하는 구성을 마련하여, 복셀화 과정에서 계산 시간을 단축하고, 메모리 사용량을 최소화할 수 있다.
Description
본 발명은 파일 처리 및 병렬 처리를 이용한 객체의 복셀화 방법에 관한 것으로, 특히 폴리곤으로 구성된 3차원 모델에 대해 표면 복셀화를 수행하여 3차원 모델의 표면 정보를 추출하고, 이 정보를 기초로 내부 복셀화를 수행하여 고해상도로 3차원 모델을 복셀화하는 방법에 관한 것이다.
현재 3차원 그래픽스 분야에서는 이전에 목표로 했던 높은 정보 처리량뿐 아니라 더욱 세밀하고 실감있는 영상을 만들기 위한 노력이 계속 되고 있다. 그러나 아무리 다각형 정보의 개수를 증가시켜 실감영상을 구현한다 해도 물체의 표면 정보만을 갖고 있는 다각형 정보를 통해서는 물체 내부를 표현할 수 없다는 근본적인 문제가 있었다. 때문에 기존의 다각형 정보가 갖고 있는 한계를 극복하고 실감 영상을 구현하기 위해 영상 기반 렌더링이나 볼륨 렌더링 등 새로운 그래픽 정보를 사용한 렌더링 기법에 대한 많은 연구가 진행되기 시작했다.
이 중 볼륨 렌더링 기법은 렌더링 기법 중의 하나로 복셀(voxel)을 기본 단위로 하는 3차원 스칼라 밀도값(scalar intensity)의 집합이 볼륨 정보를 사용하여 영상을 만들어내는 렌더링 기법이다. 최근에는 범용 그래픽 하드웨어에 내장된 텍스쳐 매핑 유닛을 통해 볼륨 정보의 처리가 가능해져서 기존의 의학용 영상 처리분야뿐 아니라 3차원 게임 등의 일반 분야에까지 그 적용 영역이 확대되고 있는 추세이다. 하지만 범용 그래픽 하드웨어를 사용하여 효과적으로 볼륨 렌더링을 구현하는 데에는 아직도 많은 문제점이 있다. 볼륨 정보가 3차원 다각형 정보에 비해 그 크기가 매우 크고 그 렌더링 기법 자체가 다각형 기반 렌더링과 많은 차이점이 있기 때문이다.
렌더링 작업은 폴리곤 메쉬 방법을 이용하여 3차원 모델을 생성하였는지 복셀 볼륨 데이터 방법을 이용하여 3차원 모델을 생성하였는지에 따라 각각 다른 방식으로 진행된다. 따라서, 폴리곤 메쉬 방법을 이용하여 생성된 3차원 모델을, 복셀 볼륨 데이터를 사용하는 것이 유리한 애니메이션 작업 등에 사용하기 위해서는 이 폴리곤 메쉬 방법에 따른 3차원 모델을 복셀화(Voxelization)하는 과정이 반드시 수반되어야 한다. 복셀화란 각각의 3차원 좌표가 3차원 그리드 상에서 물체의 내부에 속하는지 또는 외부에 속하는지의 정보를 저장하는 것을 의미한다.
최근, 컴퓨터 그래픽스 응용분야에서는 처리의 효율성을 높이기 위해 삼각 폴리곤으로 구성된 표면 모델(surface model)을 주로 사용하여 현실세계의 객체를 표현한다.
그러나 객체의 외부만이 아니라 내부의 정보를 필요로 하는 과학적 시뮬레이션을 위해서는 표면모델이 아닌 솔리드 모델링(Solid Modeling)이 필요하다. 이 경우에 폴리곤(Polygon)으로 구성된 표면 모델로부터 볼륨 객체를 생성하기 위해 입체 화상(3D 화소)을 구성하는 복셀화 과정이 필요하다. 최근, 표면 모델링 객체를 대상으로 하는 복셀화에 관한 연구가 국내외적으로 다양하게 진행되어 왔다.
지금까지 제시된 연구결과를 살펴보면, 객체의 모양이나 해상도에 따라 복셀화 과정에서 발생되는 다양한 문제로 인해 완벽하게 볼륨 객체를 생성하지 못하는 경우가 있음을 확인할 수 있었다. 기존의 제안된 방법에서는 고밀도의 폴리곤 모델에 관한 복셀화 과정이나 저해상도 복셀화 과정에서, 객체를 구성하는 폴리곤들 간의 간격보다 복셀의 크기가 큰 경우에는 내부 복셀화 과정에서 영역 채우기 오류가 발생할 수 있다. 그 외에도 고해상도의 복셀화 수행 시에는 해상도가 높아짐에 따라 계산량 및 처리시간의 증가가 기하급수적으로 일어나게 된다. 또한, 계산과정에서 필요한 정보를 저장하기 위한 메모리 사용량의 증가로 인해 범용 컴퓨터에서 고해상도의 복셀화 수행이 사실상 어렵다.
이러한 기술의 일 예가 하기 문헌 1 및 2 등에 개시되어 있다.
예를 들어, 하기 특허문헌 1에는 영상 데이터를 획득하는 영상 데이터 획득부, 상기 영상 데이터를 이용하여 볼륨 데이터를 생성하는 볼륨 데이터 생성부, 상기 볼륨 데이터를 슬라이싱하여 복수의 2차원 슬라이스로 분할하는 볼륨 데이터 슬라이싱부, 그래픽 연산을 수행하는 그래픽 처리 유닛을 포함하되, 상기 그래픽 처리 유닛은 상기 복수의 2차원 슬라이스를 저장하는 텍스쳐 메모리, 2차원 텍스쳐 매핑 기능을 지원하며 상기 복수의 2차원 슬라이스를 2차원 텍스쳐로 간주하여 2차원 텍스쳐 샘플링을 수행하는 텍스쳐 매핑 유닛 및 상기 2차원 텍스쳐 샘플링의 샘플링값들을 이용하여 볼륨 렌더링을 수행하는 연산 프로세서로 이루어지는 영상 처리 장치에 대해 개시되어 있다.
또 하기 특허문헌 2에는 각 셀의 좌표에 대응하는 배열의 좌표에 매칭 큐브 케이스를 저장하는 매칭 큐브 케이스 저장 단계, 매칭 큐브 케이스를 구분한 후 미리 정의된 테이블을 이용해서 추출될 삼각형이 몇 개의 인덱스가 필요한지를 저장하는 삼각형화 인덱스 카운트 저장 단계, 유일한 정점을 추출하기 위해 각 셀 당 3개의 모서리를 검사하여 셀의 좌표와 대응하는 배열의 좌표에 해당하는 유일한 정점 케이스를 저장하는 유일한 정점 케이스 저장 단계, 셀마다 추출해야 하는 유일한 정점의 수를 셀과 대응하는 배열의 좌표에 저장하는 유일한 정점 카운트 저장 단계를 포함하여 각 셀을 분류하는 셀 분류 단계, 삼각형화 인덱스의 총수와 유일한 정점의 총수를 저장하는 히스토피라미드 구축 단계, 정점의 총 수에 키 인덱스 값을 더한 값을 인덱스 배열에서 셀에 대응하는 위치에 저장하는 정점 보간 및 인덱스 할당 단계, 매칭 큐브 케이스를 참조하여 셀 내부 삼각형 인덱스를 가져오는 인덱스 계산 단계를 구비하는 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법에 대해 개시되어 있다.
그러나, 상술한 바와 같은 종래의 기술에서는 3차원 모델의 표면 객체에 대한 고해상도 복셀화 과정에서 복셀 입자의 크기를 설정하는 해상도에 따라 계산량 및 메모리 사용량이 클 수 있다. 즉, 계산량은 생성하고자 하는 복셀의 크기가 작아짐에 따라서 기하급수적으로 수행시간이 증가할 수 있으며, 메모리 사용량은 수행하는 컴퓨터의 사용 가능한 메모리를 초과하여 오류를 발생시킬 수 있다는 문제가 있었다.
또 상기와 같은 종래의 기술에서는 내부가 비어있는 3차원 모델의 단면에 대해 내부 복셀화 과정에서 내부가 채워지는 문제가 발생하여 정확한 복셀화가 곤란하며, 이에 따른 처리 시간도 지연된다는 문제도 있었다.
본 발명의 목적은 상술한 바와 같은 문제점을 해결하기 위해 이루어진 것으로서, 내부 복셀화 수행 시에는 각 축 방향으로 내부 복셀화 계산된 정보를 병합하여 사용함으로써 복잡한 형태의 3차원 모델을 다양한 해상도에서도 완벽하게 내부 복셀화를 수행할 수 있는 복셀화 방법을 제공하는 것이다.
본 발명의 다른 목적은 복셀화 과정에서 계산 시간을 단축하고, 메모리 사용량을 최소화하는 복셀화 방법을 제공하는 것이다.
상기 목적을 달성하기 위해 본 발명에 따른 복셀화 방법은 3차원 모델의 삼각 폴리곤과 육면체의 교차 판정을 이용하여 표면 복셀화(Surface Voxelization)를 수행하고, 표면 복셀화 정보를 이용한 내부 공간을 채우는 내부 복셀화(Inner Voxelization)를 수행하여 고해상도로 3차원 모델을 복셀화하는 방법으로서, (a) 복셀화 계산 시에 추출되는 복셀 정보를 바이너리 파일로 저장하는 파일 처리 단계, (b) 상기 단계 (a)에서 저장된 바이너리 파일에 따른 복셀화 계산 시에 다중 스레드(Multi-Thread)를 이용하여 병렬로 처리하는 병렬 처리 단계를 포함하는 것을 특징으로 한다.
또 본 발명에 따른 복셀화 방법에 있어서, 상기 내부 복셀화에서 복셀 정보는 각 축 별로 내부 복셀화를 수행한 후에 3축(x, y, z)의 모든 방향에 대해 중복 검출되는 복셀에 대해서만 내부 복셀 정보로 간주하는 것을 특징으로 한다.
또 본 발명에 따른 복셀화 방법에 있어서, 상기 단계 (a)에서 상기 바이너리 파일은 복셀 정보를 1 바이트(Byte)의 부울(Bool) 형태로 저장되는 것을 특징으로 한다.
또 본 발명에 따른 복셀화 방법에 있어서, 상기 단계 (a)에서 파일 처리는 스레드 수만큼 파일을 분할하여 사용하고 계산 완료 후 병합하는 것을 특징으로 한다.
삭제
삭제
삭제
삭제
또 본 발명에 따른 복셀화 방법에 있어서, 상기 단계 (a)에서 스레드 수로 분할되는 축(z-축)의 계산되는 해상도를 파일 생성 시에만 스레드의 배수로 설정하여 파일의 크기를 결정하고, 분할 시의 축 방향으로 동일하게 파일을 병합하는 것을 특징으로 한다.
또 본 발명에 따른 복셀화 방법에 있어서, 상기 단계 (b)에서 사용되는 스레드 수에 대응하여 초기화된 바이너리 파일을 생성하고, 상기 스레드 수에 대응하는 계산 영역을 분할하여 각 영역의 복셀화 계산 시에 연동된 바이너리 파일을 사용하는 것을 특징으로 한다.
또 본 발명에 따른 복셀화 방법에 있어서, 상기 표면 복셀화의 계산 시에 각 스레드에서는 3차원 모델의 폴리곤 정보를 읽어 들여 자신의 계산 영역의 폴리곤 정보인지 판별 후 표면 복셀화 작업을 수행하며, 교차 판별된 복셀 정보는 연동된 바이너리 파일에 적용하고, 상기 내부 복셀화의 계산 시에 각 스레드에서는 자신의 계산 영역의 정보를 병합된 표면 복셀화 파일에서 읽어 들여 내부 저장 계산을 수행하며 저장으로 판별된 복셀 정보는 연동된 바이너리 파일에 적용하는 것을 특징으로 한다.
상술한 바와 같이, 본 발명에 따른 복셀화 방법에 의하면, 표면 및 내부 복셀화 계산 시에는 추출되는 복셀 정보를 바이너리 파일로 저장함으로써 컴퓨터의 메모리 사용량을 줄여 저사양 컴퓨터에서도 고해상도의 복셀화를 수행할 수 있다는 효과가 얻어진다.
또, 본 발명에 따른 복셀화 방법에 의하면, 복셀화 계산 시에 다중 스레드를 이용한 병렬 처리를 적용하여 처리시간을 단축할 수 있다는 효과도 얻어진다.
도 1은 삼각형과 육면체의 교차에 따라 표면 복셀을 추출하는 과정을 설명하기 위한 도면,
도 2는 3차원 모델의 단면에 대해 내부 복셀화 과정에서의 문제점을 제시하는 도면,
도 3은 본 발명에 따른 객체의 복셀화 방법에 적용되는 파일 처리의 과정을 나타내는 도면,
도 4는 표면과 내부 복셀화 계산 시에 분할되어 사용된 바이너리 파일을 하나의 파일로 병합하는 형태를 나타내는 도면,
도 5는 본 발명에 따른 객체의 복셀화 방법에 적용되는 병렬 처리의 과정을 나타내는 도면,
도 6은 본 발명에 따른 병렬 처리에 의해 저장되는 파일의 형태를 나타내는 도면,
도 7은 본 발명에 적용되는 모델의 형상의 일 예를 나타내는 도면,
도 8은 본 발명에 따른 시험 환경에서 구현된 프로그램을 이용하여 복셀화 수행시의 CPU 및 메모리 사용 현황을 나타낸 도면,
도 9는 내부 복셀화가 완료된 시험 모델들의 각 축별 중심 기준의 단면도를 나타낸 도면.
도 2는 3차원 모델의 단면에 대해 내부 복셀화 과정에서의 문제점을 제시하는 도면,
도 3은 본 발명에 따른 객체의 복셀화 방법에 적용되는 파일 처리의 과정을 나타내는 도면,
도 4는 표면과 내부 복셀화 계산 시에 분할되어 사용된 바이너리 파일을 하나의 파일로 병합하는 형태를 나타내는 도면,
도 5는 본 발명에 따른 객체의 복셀화 방법에 적용되는 병렬 처리의 과정을 나타내는 도면,
도 6은 본 발명에 따른 병렬 처리에 의해 저장되는 파일의 형태를 나타내는 도면,
도 7은 본 발명에 적용되는 모델의 형상의 일 예를 나타내는 도면,
도 8은 본 발명에 따른 시험 환경에서 구현된 프로그램을 이용하여 복셀화 수행시의 CPU 및 메모리 사용 현황을 나타낸 도면,
도 9는 내부 복셀화가 완료된 시험 모델들의 각 축별 중심 기준의 단면도를 나타낸 도면.
본 발명의 상기 및 그 밖의 목적과 새로운 특징은 본 명세서의 기술 및 첨부 도면에 의해 더욱 명확하게 될 것이다.
먼저 본 발명의 기본 개념에 대해 설명한다.
본 발명에서는 표면 객체(surface object)에 대한 고해상도 복셀화 과정에서 발생할 수 있는 상술한 바와 같은 문제점들을 해결 즉, 복셀화 계산 시의 메모리 사용량 문제를 해결하기 위해 계산된 복셀 정보를 저장할 수 있는 바이너리(Binary) 형태의 파일을 복셀화를 위한 계산 전에 미리 생성하여 복셀화 과정 중 산출되는 정보를 저장한다.
내부 복셀화 수행 시에 발생하는 영역 채우기 오류를 보완하기 위한 방안으로는 3차원의 각 축별로 생성된 내부 복셀화 정보를 병합하여 완벽한 내부 복셀화가 가능하도록 한다. 또한 처리시간을 단축시키기 위한 방안으로 파일을 처리함에 있어서 다중 스레드(Multi-Thread)를 이용한 병렬처리를 실행한다.
본 발명에 적용되는 복셀화 기법으로서, 복셀화는 우선 3차원 모델의 삼각 폴리곤과 육면체의 교차 판정을 이용하여 표면 복셀화(Surface Voxelization)를 수행하고, 표면 복셀화 정보를 이용한 내부 공간을 채우는 내부 복셀화(Inner Voxelization)를 수행한다.
즉, 폴리곤으로 구성된 3차원 모델을 내부 복셀화하기 위해서는 표면 복셀화를 우선적으로 수행한다. 이를 위해 3차원 모델의 가로, 세로, 높이에 해당하는 3개의 축 중에서 한 개를 기준 축으로 할당하여 해상도를 설정하며, 복셀의 크기는 식(1)과 같이 정의할 수 있다.
Vsize = αSlect /εResolution … 식(1)
여기서, Vsize는 복셀의 크기, αSlect는 선택된 축의 크기, εResolution는 적용 해상도로 나타낸다.
3차원 모델은 수많은 폴리곤으로 구성되며 일반적으로 한 개의 면은 삼각형 형태로 구성된다. 또한 복셀은 3차원 상에서 육면체로 구성된다. 따라서 표면에 대한 복셀화는 도 1에 도시된 바와 같이, 3차원 상의 삼각형과 육면체의 교차 여부를 판별하여 교차가 일어나는 위치에 객체 표면에 대한 복셀을 생성한다.
도 1은 삼각형과 육면체의 교차에 따라 표면 복셀을 추출하는 과정을 설명하기 위한 도면이다.
삼각형 형태의 폴리곤과 교차하는 복셀을 판별하기 위해서는 우선 삼각형을 구성하는 3개의 정점에 해당하는 x, y, z 축의 최대 최소값을 추출하여 사각 영역을 생성한다. 생성된 사각 영역을 복셀 크기로 분할하여 육면체를 만들고, 삼각형 형태의 폴리곤과 교차 판별 알고리즘을 적용하여 도 1에서와 같이 표면 복셀을 추출한다.
다음에 표면 복셀화가 완료되면 복셀화된 객체의 내부를 채우는 내부 복셀화를 수행한다. 내부 복셀화 수행 시에는 3차원 상의 각 축 별로 주사선 알고리즘(Scan line algorithm)을 적용하여 내부를 복셀로 채우게 된다. 빠른 내부 복셀화를 위해 단방향으로 내부를 채우는 방법을 사용할 수 있지만, 이런 경우 복셀화 수행 시에 설정하는 해상도 또는 복셀화를 수행하는 3차원 모델의 형태에 따라 내부를 채우지 않아야 할 부분도 채워지는 경우가 발생한다.
예를 들면, 도 2에서와 같이 내부가 비어있는 3차원 모델의 단면에 대해 내부 복셀화 과정에서 내부가 채워지는 문제가 발생할 수 있다.
도 2는 3차원 모델의 단면에 대해 내부 복셀화 과정에서의 문제점을 제시하는 도면이다.
이러한 경우를 방지하기 위해 본 발명에서는 각 축 별로 내부 복셀화를 수행한 후, 3축(x, y, z)의 모든 방향에 대해 중복 검출되는 복셀에 대해서만 내부 복셀로 간주한다.
상술한 바와 같이, 3차원 모델을 복셀화 하는 경우 복셀 입자의 크기를 설정하는 해상도에 따라 계산량 및 메모리 사용량이 클 수 있다. 계산량은 생성하고자 하는 복셀의 크기가 작아짐에 따라서 기하급수적으로 수행시간이 증가할 수 있으며 메모리 사용량은 수행하는 컴퓨터의 사용 가능한 메모리를 초과하여 오류를 발생시킬 수 있다.
본 발명에서는 이 두 가지 문제를 해결하기 위해 복셀화를 수행하는 컴퓨터의 스레드를 최대한 활용하는 병렬 처리로 계산 시간을 단축하고, 파일 처리를 통해 계산에 사용되는 데이터를 바이너리 파일로 저장하여 메모리 사용량을 최소화 한다.
이하, 본 발명의 구성을 도면에 따라서 설명한다.
도 3은 본 발명에 따른 객체의 복셀화 방법에 적용되는 파일 처리의 과정을 나타내는 도면이고, 도 4는 표면과 내부 복셀화 계산 시에 분할되어 사용된 바이너리 파일을 하나의 파일로 병합하는 형태를 나타내는 도면이고, 도 5는 본 발명에 따른 객체의 복셀화 방법에 적용되는 병렬 처리의 과정을 나타내는 도면이며, 도 6은 본 발명에 따른 병렬 처리에 의해 저장되는 파일의 형태를 나타내는 도면이다.
본 발명에 적용되는 파일 처리로서, 도 3에 도시된 바와 같이, 먼저 복셀화 수행 시에 설정된 해상도 및 사용되는 스레드(Thread) 수에 따라 파일의 크기를 결정된다(S10).
다음에 복셀화 과정에서 사용되는 바이너리 파일은 복셀 정보를 1 바이트(Byte)의 부울(Bool) 형태로 저장한다(S11). 복셀 정보를 비트 단위로 저장하면 파일 크기를 줄일 수 있겠지만 파일 위치 정보 색인 시의 처리 효율성을 위해 1 바이트 단위로 저장한다.
한편, 병렬 처리를 위해 다중 스레드를 사용하는 경우에는 한 개의 파일에 대해 읽기는 다중 처리가 가능하고 쓰기는 다중 처리가 불가능하다. 이를 위해 본 발명에서는 사용되는 스레드 수만큼 파일을 분할하여 사용하고(S12), 계산 완료 후 병합한다(S13, S14).
또한 파일의 분할 및 병합 그리고 파일 위치 색인 계산 시의 빠른 처리를 위해 스레드 수로 분할되는 축(z-축)의 계산되는 해상도를 파일 생성 시에만 스레드의 배수로 설정하여 파일의 크기를 결정한다.
병렬 처리 시에 사용되는 분할 파일의 크기는 식 (2)와 같이 정의할 수 있으며, 최종적으로 병합된 파일의 크기는 식 (3)과 같이 정의할 수 있다.
Psize = ((αx × αy × βz)/VSize)/Tcnt
βz = (αz + (Tcnt -(αz/VSize)mod Tcnt))×VSize … 식(2)
여기서, Psize은 병렬 처리 시에 사용되는 분할 바이너리 파일의 크기, αx는 x축의 크기, αy 는 y축의 크기, αz는 z축의 크기, βz는 스레드의 배수로 설정된 z축의 크기, Tcnt는 사용되는 스레드의 개수, FSize는 병합된 파일의 크기로 나타내며, VSize는 식(1)에서 정의한 복셀의 크기이다.
도 4에 도시된 바와 같이, 본 발명에서는 표면과 내부 복셀화 계산 시에 분할되어 사용된 바이너리 파일을 하나의 파일로 병합하며, 분할 시의 축 방향으로 동일하게 병합하여 파일 위치 정보의 색인 처리 시에 효율성을 높였다.
또한, 본 발명에 적용되는 병렬 처리로서, 도 5에 도시된 바와 같이, 복셀화를 병렬 처리할 경우에는 사용되는 스레드 수만큼 false(0x00)으로 초기화된 바이너리 파일을 생성한다(S20). 또 도 6에서와 같이 스레드 수만큼 계산 영역을 분할하여(S21) 각 영역의 복셀화 계산 시에 연동된 바이너리 파일을 사용하고, 복셀 정보로 판별된 위치 정보에 해당하는 연동된 바이너리 파일 위치에 true(0x01) 값을 덮어쓰기 한다(S22).
표면 복셀화 계산 시에 각 스레드에서는 3차원 모델의 폴리곤 정보를 읽어 들여 자신의 계산 영역의 폴리곤 정보인지 판별 후 표면 복셀화 작업을 수행하며, 교차 판별된 복셀 정보는 연동된 바이너리 파일에 적용한다(S23).
또 내부 복셀화 계산 시에 각 스레드에서는 자신의 계산 영역의 정보를 병합된 표면 복셀화 파일에서 읽어 들여 내부 채우기 계산을 수행하며 채우기로 판별된 복셀 정보는 연동된 바이너리 파일에 적용한다(S24).
각 축 별로 내부 복셀화 계산이 완료되면 최종 내부 복셀화 파일을 생성하기 이전과 동일한 방식으로 분할된 바이너리 파일을 생성하고, 각 스레드 영역에서 각 축별 내부 복셀화 병합 파일의 동일 위치 해당하는 값의 중복 여부를 판별하여 연동된 바이너리 파일에 적용하고, 각 스레드의 계산이 완료되면 분할된 바이너리 파일을 병합하여 최종 내부 복셀화 파일을 생성한다(S25).
본 발명의 파일 및 병렬 처리를 이용한 표면 객체의 복셀화 시스템에 따른 구현 결과를 시험하였다.
시험 환경은 CPU(Intel i7-2600 3.4Ghz, 8 Threads), 메모리(4GB), 하드 디스크(1TB, 7200 rpm)를 가진 개인용 컴퓨터에서 Visual C++로 내부 복셀화 프로그램을 구현하여 수행하였다. 시험 데이터는 Princeton Shape Benchmark(PSB)의 3차원 모델 중 5개를 선택하여 사용하였다. 시험에 사용된 객체에 대한 정보는 표 1과 같으며 모델의 형상은 도 7과 같다.
표 1은 본 발명에 따른 시험에 사용된 객체에 대한 정보를 나타내고, 도 7은 본 발명에 적용되는 모델의 형상의 일 예를 나타내는 도면이다.
본 발명에 적용되는 프로그램을 이용한 복셀화 시험은 해상도를 결정하는 기준 축은 x축, 해상도는 250, 사용하는 스레드 수는 8개로 설정하여 수행하였다.
표 2는 복셀화 수행 완료 후의 시험 모델별 정보를 나타낸다.
기준 축을 x축으로 설정하여 수행하였기 때문에 x축에 해당하는 해상도는 동일하며, y축과 z축은 크기에 비례하여 해상도가 설정된 것을 확인할 수 있다. 표면 복셀의 수는 외부에 노출되는 복셀의 수를 나타낸다. 내부 복셀 수는 표면 복셀 정보를 이용한 내부 복셀화 수행 후의 복셀의 수를 나타낸다. 전체 복셀 수는 전체 복셀 데이터 수를 나타내며 파일 크기는 생성되는 파일의 크기를 나타낸다. 또한 파일의 크기는 식(3)이 적용되었기 때문에 각 축별 해상도의 곱의 값과 다를 수 있다. 여기서, 전체 복셀 수와 파일 크기는 32만큼 차이가 발생하게 되는데 복셀화 파일 생성 시에 파일 끝에 각 축의 해상도 및 내부 복셀 수를 각 unsigned int(2 Byte) 형식으로 저장하여 복셀화 파일 사용 시에 활용할 수 있도록 하였다.
도 8은 본 발명에 따른 시험 환경에서 구현된 프로그램을 이용하여 복셀화 수행시의 CPU 및 메모리 사용 현황을 나타낸다. CPU 사용 현황은 모든 스레드가 CPU 사용률 90% 이상임을 확인 할 수 있다. 또한 메모리 사용 현황은 복셀화 수행 전과 수행 중의 사용량의 변화가 대체로 없음을 확인할 수 있다.
도 9는 내부 복셀화가 완료된 시험 모델들의 각 축별 중심 기준의 단면도를 나타낸다.
m110 모델과 m374 모델의 경우 각 축별 중심 단면의 형태가 복잡하지 않고 공백이 발생하는 부분의 없다. 하지만 m23 모델의 z축과 m329 모델의 x축의 경우 중심 단면의 형태가 복잡하고 단면에 나타나는 폴리곤들 간의 다수의 공백 발생으로 인한 단방향 복셀화 수행 시에 문제가 나타날 수 있는 부분들에 대해 내부 복셀화에 의한 채우기가 정확하게 수행된 것을 확인할 수 있다.
또한 m1601 모델의 x축과 y축의 중심 단면의 결과를 통해 체스 말의 상단의 공백 처리가 정확하게 수행된 것을 확인할 수 있다. 다음의 결과를 통해 본 발명에서 제시한 내부 복셀화 방안을 이용한 시험에 사용된 모든 모델에 대한 내부 복셀화가 확실하게 수행된 것을 알 수 있다.
상술한 바와 같이, 본 발명은 폴리곤으로 구성된 3차원 모델을 고해상도로 내부 복셀화하기 위해 표면 복셀화를 수행하여 3차원 모델의 표면 정보를 추출하고 이 정보를 기초로 내부 복셀화를 수행하였다. 내부 복셀화 수행 시에는 각 축 방향으로 내부 복셀화 계산된 정보를 병합하여 사용함으로써 복잡한 형태의 3차원 모델을 다양한 해상도에서도 완벽하게 내부 복셀화를 수행할 수 있게 되었다.
표면 및 내부 복셀화 계산 시에는 추출되는 복셀 정보를 바이너리 파일로 저장함으로써 컴퓨터의 메모리 사용량을 줄여 저사양 컴퓨터에서도 고해상도의 복셀화를 수행할 수 있었다. 또한 복셀화 계산 시에 다중 스레드를 이용한 병렬 처리를 적용하여 처리시간을 단축시킬 수 있다.
이상 본 발명자에 의해서 이루어진 발명을 상기 실시 예에 따라 구체적으로 설명하였지만, 본 발명은 상기 실시 예에 한정되는 것은 아니고 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.
본 발명에 따른 복셀화 방법을 사용하는 것에 의해 물체를 구성하는 물질을 복셀 정보로 설정하고 물체의 형태를 3차원 폴리곤 모델로 구현하여 복셀화를 수행하므로, 복셀화가 완료된 물체 정보를 이용하여 복셀(구성 물질)의 위치에 따른 물성변화를 예측하는 분야, 즉 성능실험 시뮬레이터, 가상현실, 훈련용 시뮬레이터 등에 적용되는 기반기술로서 3차원 시각화를 다루는 모든 산업분야에서 활용이 가능하다.
Claims (7)
- 3차원 모델의 삼각 폴리곤과 육면체의 교차 판정을 이용하여 표면 복셀화(Surface Voxelization)를 수행하고, 표면 복셀화 정보를 이용한 내부 공간을 채우는 내부 복셀화(Inner Voxelization)를 수행하여 고해상도로 3차원 모델을 복셀화하는 방법으로서,
(a) 복셀화 계산 시에 추출되는 복셀 정보를 바이너리 파일로 저장하는 파일 처리 단계,
(b) 상기 단계 (a)에서 저장된 바이너리 파일에 따른 복셀화 계산 시에 다중 스레드(Multi-Thread)를 이용하여 병렬로 처리하는 병렬 처리 단계를 포함하고,
상기 내부 복셀화에서 복셀 정보는 각 축 별로 내부 복셀화를 수행한 후에 3축(x, y, z)의 모든 방향에 대해 중복 검출되는 복셀에 대해서만 내부 복셀 정보로 간주하는 것을 특징으로 하는 복셀화 방법. - 삭제
- 제1항에 있어서,
상기 단계 (a)에서 상기 바이너리 파일은 복셀 정보를 1 바이트(Byte)의 부울(Bool) 형태로 저장되는 것을 특징으로 하는 복셀화 방법. - 제1항에 있어서,
상기 단계 (a)에서 파일 처리는 스레드 수만큼 파일을 분할하여 사용하고 계산 완료 후 병합하는 것을 특징으로 하는 복셀화 방법. - 제4항에 있어서,
상기 단계 (a)에서 스레드 수로 분할되는 축(z-축)의 계산되는 해상도를 파일 생성 시에만 스레드의 배수로 설정하여 파일의 크기를 결정하고, 분할 시의 축 방향으로 동일하게 파일을 병합하는 것을 특징으로 하는 복셀화 방법. - 제1항에 있어서,
상기 단계 (b)에서 사용되는 스레드 수에 대응하여 초기화된 바이너리 파일을 생성하고, 상기 스레드 수에 대응하는 계산 영역을 분할하여 각 영역의 복셀화 계산 시에 연동된 바이너리 파일을 사용하는 것을 특징으로 하는 복셀화 방법. - 제6항에 있어서,
상기 표면 복셀화의 계산 시에 각 스레드에서는 3차원 모델의 폴리곤 정보를 읽어 들여 자신의 계산 영역의 폴리곤 정보인지 판별 후 표면 복셀화 작업을 수행하며, 교차 판별된 복셀 정보는 연동된 바이너리 파일에 적용하고,
상기 내부 복셀화의 계산 시에 각 스레드에서는 자신의 계산 영역의 정보를 병합된 표면 복셀화 파일에서 읽어 들여 내부 저장 계산을 수행하며 저장으로 판별된 복셀 정보는 연동된 바이너리 파일에 적용하는 것을 특징으로 하는 복셀화 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150027596A KR101651827B1 (ko) | 2015-02-26 | 2015-02-26 | 파일 및 병렬 처리를 이용한 객체의 복셀화 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150027596A KR101651827B1 (ko) | 2015-02-26 | 2015-02-26 | 파일 및 병렬 처리를 이용한 객체의 복셀화 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101651827B1 true KR101651827B1 (ko) | 2016-08-30 |
Family
ID=56886165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150027596A KR101651827B1 (ko) | 2015-02-26 | 2015-02-26 | 파일 및 병렬 처리를 이용한 객체의 복셀화 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101651827B1 (ko) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030004017A (ko) * | 2001-06-29 | 2003-01-14 | 삼성전자 주식회사 | 3차원 정지 및 동작 객체의 계층적 이미지 기반 표현 및렌더링방법 및 장치 |
KR101017974B1 (ko) | 2010-09-27 | 2011-03-02 | 주식회사 쓰리디산업영상 | 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법 및 그 기록 매체 |
KR101353303B1 (ko) | 2012-07-09 | 2014-01-22 | 삼성전자주식회사 | 그래픽 처리 유닛, 그래픽 처리 유닛을 갖춘 영상 처리 장치 및 그래픽 처리 유닛을 이용한 영상 처리 방법 |
KR101467735B1 (ko) * | 2014-06-25 | 2014-12-02 | 인하대학교 산학협력단 | 볼륨데이터를 위한 4차원 실시간 렌더링 방법 및 장치 |
-
2015
- 2015-02-26 KR KR1020150027596A patent/KR101651827B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030004017A (ko) * | 2001-06-29 | 2003-01-14 | 삼성전자 주식회사 | 3차원 정지 및 동작 객체의 계층적 이미지 기반 표현 및렌더링방법 및 장치 |
KR101017974B1 (ko) | 2010-09-27 | 2011-03-02 | 주식회사 쓰리디산업영상 | 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법 및 그 기록 매체 |
KR101353303B1 (ko) | 2012-07-09 | 2014-01-22 | 삼성전자주식회사 | 그래픽 처리 유닛, 그래픽 처리 유닛을 갖춘 영상 처리 장치 및 그래픽 처리 유닛을 이용한 영상 처리 방법 |
KR101467735B1 (ko) * | 2014-06-25 | 2014-12-02 | 인하대학교 산학협력단 | 볼륨데이터를 위한 4차원 실시간 렌더링 방법 및 장치 |
Non-Patent Citations (2)
Title |
---|
GPU-based Scalable Volumetric Reconstruction for Multi-view Stereo, IVCNZ. 2011(2011.11.29.)* * |
다중해상도 복셀화 기법, 한국정보기술학회논문지 제10권제6호(2012.06.)* * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8760450B2 (en) | Real-time mesh simplification using the graphics processing unit | |
US8988431B2 (en) | Conservative cell and portal graph generation | |
US9971335B2 (en) | Hybrid dynamic tree data structure and accessibility mapping for computer numerical controlled machining path planning | |
Zhao et al. | Parallel and efficient Boolean on polygonal solids | |
CN107615279A (zh) | 基于虚拟六面体模型的虚拟三维模型生成 | |
Wu et al. | Interactive High-Resolution Boundary Surfaces for Deformable Bodies with Changing Topology. | |
Ogayar-Anguita et al. | A GPU-based framework for generating implicit datasets of voxelized polygonal models for the training of 3D convolutional neural networks | |
Ciżnicki et al. | Efficient isosurface extraction using marching tetrahedra and histogram pyramids on multiple GPUs | |
Scholz et al. | Real‐time isosurface extraction with view‐dependent level of detail and applications | |
Dey et al. | Procedural feature generation for volumetric terrains using voxel grammars | |
KR101651827B1 (ko) | 파일 및 병렬 처리를 이용한 객체의 복셀화 방법 | |
Smistad et al. | Real-time surface extraction and visualization of medical images using OpenCL and GPUs | |
Scholz et al. | Level of Detail for Real-Time Volumetric Terrain Rendering. | |
Mikhaylyuk et al. | Memory-effective methods and algorithms of shader visualization of digital core material model | |
Dafeng et al. | Real-time visual hull computation based on GPU | |
Čerešník et al. | SSVDAG*: Efficient Volume Data Representation Using Enhanced Symmetry-Aware Sparse Voxel Directed Acyclic Graph | |
Lonneville et al. | Determining geometric primitives for a 3D GIS easy as 1D, 2D, 3D? | |
Adams et al. | Boolean operations on surfel-bounded solids using programmable graphics hardware | |
An et al. | Research on Fast Collision Detection Algorithm Based on CPU Cache Technology | |
CN110033520B (zh) | 三维场景的可见性函数 | |
Shakaev | Polygonizing volumetric terrains with sharp features | |
Chang et al. | GPU-based parallel construction of compact visual hull meshes | |
EP1390919A1 (en) | Method, apparatus, and article of manufacture for associating objects with regions in coordinate space | |
Yang et al. | Massive 3D point cloud visualization by generating artificial center points from multi-resolution cube grid structure | |
Böonning et al. | Interactive sculpturing and visualization of unbounded voxel volumes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190730 Year of fee payment: 4 |