KR101697238B1 - 영상 처리 장치 및 방법 - Google Patents

영상 처리 장치 및 방법 Download PDF

Info

Publication number
KR101697238B1
KR101697238B1 KR1020100083108A KR20100083108A KR101697238B1 KR 101697238 B1 KR101697238 B1 KR 101697238B1 KR 1020100083108 A KR1020100083108 A KR 1020100083108A KR 20100083108 A KR20100083108 A KR 20100083108A KR 101697238 B1 KR101697238 B1 KR 101697238B1
Authority
KR
South Korea
Prior art keywords
space
acceleration structure
child node
node
dividing
Prior art date
Application number
KR1020100083108A
Other languages
English (en)
Other versions
KR20120019720A (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 KR1020100083108A priority Critical patent/KR101697238B1/ko
Priority to US13/067,733 priority patent/US9355491B2/en
Publication of KR20120019720A publication Critical patent/KR20120019720A/ko
Application granted granted Critical
Publication of KR101697238B1 publication Critical patent/KR101697238B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

영상 처리 장치가 제공된다. 영상 처리 장치의 분할부는, 입력 3D 모델에 대한 가속 구조를 생성하기 위해 상기 입력 3D 모델 내의 제1 공간을 복수 개의 서브 공간으로 분할한다. 그리고, 영상 처리 장치의 판단부는, 상기 복수 개의 서브 공간 중, 래이의 진행 경로를 포함할 확률이 더 높은 서브 공간을 상기 가속 구조 상에서 탐색 우선순위가 더 높은 자식 노드로 설정할 수 있다.

Description

영상 처리 장치 및 방법{IMAGE PROCESSING APPARATUS AND METHOD}
광선 추적 기법이라고도 하는 래이 트래이싱 기법의 영상 렌더링에 있어서, Ray Traversal공간 가속 구조(Acceleration Structure, AS)를 생성하는 영상 처리 장치 및 방법에 연관된다.
3D 렌더링(3-Dimensional Rendering)은 3차원 객체(object) 데이터를 주어진 카메라 시점(View point)에서 보이는 영상으로 합성(synthesis)해주는 영상 처리이다.
렌더링 방법은 3차원 객체를 화면에 투영(projection) 하면서 영상을 생성하는 래스터화(rasterization) 방법과 카메라 시점에서 영상의 각 픽셀을 향한 ray를 따라 입사하는 빛의 경로를 추적하여 영상을 생성하는 래이 트래이싱(ray tracing) 등이 있다.
이 중 래이 트래이싱은 빛의 물리적 성질(반사, 굴절, 투과 등)을 렌더링 결과에 반영하므로 고품질 영상을 생성할 수 있다는 장점이 있으나, 상대적으로 연산량이 방대하여 고속으로 렌더링 하는 데에 어려움이 있다.
래이 트래이싱의 성능에 있어서 연산량이 많이 요구되는 요소는 렌더링 대상이 되는 신 오브젝트(scene object)들을 공간적으로 분할한 가속 구조 (Acceleration Structure)의 생성 및 탐색과, 광선-프리미티브 간의 교차 검사 (Intersection Test)이다.
효율적인 공간 분할 가속 구조(Acceleration Structure, 이하에서는 단순히 "AS" 또는 "가속 구조"라고도 함)를 구성하고 탐색하는 영상 처리 장치 및 방법이 제공된다.
래이 탐색(Ray Traversal, 이하에서는 단순히 "TRV"로 표기하기도 함) 과정에서 캐시 효율을 높이고 메모리 대역폭을 절감할 수 있는 영상 처리 장치 및 방법이 제공된다.
본 발명의 일측에 따르면, 입력 3D 모델에 대한 가속 구조를 생성하기 위해 상기 입력 3D 모델 내의 제1 공간을 복수 개의 서브 공간으로 분할하는 분할부, 및 상기 복수 개의 서브 공간 중, 래이의 진행 경로를 포함할 확률이 더 높은 서브 공간을 상기 가속 구조 상에서 탐색 우선순위가 더 높은 자식 노드로 설정하는 판단부를 포함하는, 영상 처리 장치가 제공된다.
여기서, 상기 판단부는, 상기 복수 개의 서브 공간 중, SA(Surface Area)가 더 큰 공간 구조를, 상기 래이의 진행 경로를 포함할 확률이 더 높은 서브 공간으로 판단할 수 있다.
한편, 상기 가속 구조는, kd-tree, BVH(Bounding Volume Hierarchy) 및 Grid 중 어느 하나의 데이터 구조(data structure)일 수 있다.
본 발명의 일실시예에 따르면, 상기 우선 순위가 높은 자식 노드는 깊이 우선 트리 탐색(depth first tree traversal)에서 우선적으로 탐색되는 왼쪽 자식 노드(left child node)이다.
한편, 상기 영상 처리 장치는, 상기 복수 개의 서브 공간 중 월드 좌표계(world coordinate system)에서 원점에 더 가까운 서브 공간과, 상기 래이의 진행 경로를 포함할 확률이 더 높은 것으로 판단된 서브 공간이 서로 동일한지의 여부를 식별하는 플래그 비트를 상기 우선순위가 더 높은 자식 노드에 추가하는 플래그 설정부를 더 포함할 수 있다.
한편, 본 발명의 일실시예에 따르면, 상기 분할부는, 상기 제1 공간을 분할하기 위한 분할 축을 지정하고, 상기 분할 축을 따라 상기 제1 공간 내의 복수 개의 프리미티브를 정렬하여 적어도 하나의 분할 면 후보를 설정하고, 상기 분할면 후보 중 SAH(surface area heuristic)에 기반한 그리디(Greedy) 알고리즘에 따라 분할면을 선정하여, 상기 분할면을 이용하여 상기 제1 공간을 상기 복수 개의 서브 공간으로 분할한다.
또한, 상기 분할부는, 리프 노드 생성 조건이 만족될 때까지 상기 입력 3D 모델 내에 분할되지 않은 공간에 대해 상기 분할 과정을 회귀적으로(recursively) 반복할 수 있다.
본 발명의 일실시예에 따르면, 상기 영상 처리 장치는, 상기 생성된 가속 구조를 저장하는 메모리 및, 상기 메모리에 저장된 가속 구조 중 적어도 일부를 이용하여 임의의 시점에서의 영상을 래이 트래이싱 기법에 의해 렌더링하는 래이 트래이서를 더 포함할 수 있다.
한편, 본 발명의 다른 일측에 따르면, 입력 3D 모델에 대한 가속 구조를 생성하기 위해 상기 입력 3D 모델 내의 제1 공간을 복수 개의 서브 공간으로 분할하는 단계, 및 상기 복수 개의 서브 공간 중, 래이의 진행 경로를 포함할 확률이 더 높은 서브 공간을 상기 가속 구조 상에서 탐색 우선순위가 더 높은 자식 노드로 설정하는 단계를 포함하는, 영상 처리 방법이 제공된다.
공간 분할 가속 구조 AS의 생성 및 탐색에 있어서 메모리 독출 시의 지역적 인접성(spatial locality)가 높아지므로, 캐시 효율이 높아질 수 있다.
래이 탐색(Ray Traversal, 이하에서는 단순히 "TRV"로 표기하기도 함) 과정에서 캐시 효율이 높아지므로, 메모리 대역폭이 절감되고, 불필요한 메모리 지연(latency)이 감소된다.
도 1은 본 발명의 일 실시예에 따른 영상 처리 장치를 도시한다.
도 2는 본 발명의 일 실시예에 따른 영상 처리 장치의 공간 가속 구조 AS 생성 및 탐색 TRV의 대상이 되는 예시적인 3D 모델을 도시한다.
도 3은 도 2의 예시적인 3D 모델을 기존 방법에 따라 Depth First 탐색이 이루어지도록 분할하여 가속 구조 AS를 생성하는 과정을 도시한다.
도 4는 본 발명의 일실시예에 따른 영상 처리 방법에 의해 도 2의 예시적인 3D 모델을 분할하여 가속 구조 AS를 생성하는 과정을 도시한다.
도 5는 본 발명의 일실시예에 따라 가속 구조 AS 생성 후 캐시에 캐싱되는 가속 구조를 도시하는 개념도이다.
도 6은 본 발명의 일실시예에 따른 영상 처리 방법을 도시하는 흐름도이다.
도 7은 본 발명의 일실시예에 따라, 도 6에 도시된 영상 처리 방법의 흐름도 중 단계(620)을 상세히 표시한 흐름도이다.
이하에서, 본 발명의 일부 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 깊이 센싱 장치(100)를 도시한다.
영상 처리 장치의 분할부(110)는 입력되는 3D 모델의 제1 공간을 복수 개의 서브 공간으로 분할한다.
이 경우, 분할부(110)는 분할 축을 설정하고, 분할 축을 따라 프리미티브를 정렬하고 분할 면의 후보들을 설정한다. 그리고, 분할 면 후보 별로 연산 비용을 계산하여, 연산 비용이 최소화 되도록 분할 면을 선택한다.
연산 비용 계산 및 분할 면 선택에 관해서는 아래 수학식 1 내지 수학식 2, 그리고 도 5 등을 참조하여 보다 상세히 후술한다.
그러면, 영상 처리 장치(100)의 판단부(120)는, 이러한 공간 분할에 따라 가속 구조 AS의 자식 노드 생성에 관여한다.
하나의 노드에 대응하는 공간이 두 개의 서브 공간으로 분할되어 두 개의 자식 노드가 생성된다면, 판단부(120)는 두 서브 공간 중 SA(Surface Area)가 큰 자식 노드를 왼쪽 자식 노드가 되도록 설정한다.
판단부(120)의 동작은 도 3 내지 도 4를 참조하여 보다 상세히 후술한다.
그러면, 플래그 설정부(130)가 생성된 각 노드에, 종래 방식에 의한 DFL(depth first layout) 방법과의 인버스(inverse) 여부를 플래그 비트, 이를테면 1 비트의 디지트(digit)로 표시한다. 플래그 비트는 가속 구조 내의 각 노드에 포함될 수 있다.
플래그 비트 생성은 도 5 및 도 7을 참조하여 보다 상세히 후술한다.
이하에서는, 예시적인 3D 모델을 참조하여, 본 발명의 실시예들에 대해 설명하기로 한다.
도 2는 본 발명의 일 실시예에 따른 영상 처리 장치의 공간 가속 구조 AS 생성 및 탐색 TRV의 대상이 되는 예시적인 3D 모델(200)을 도시한다.
예시적 3D 모델(200) 내에는 세단을 모델링 한 오브젝트(220)가 포함되어 있다. 래이 트래이싱에 의한 임의의 카메라 시점(camera view)(도시 되지 않음)에서의 영상 렌더링을 위해서, 래이(Ray)(210)에 대한 충돌 테스트(collision test)가 수행되어야 한다.
래이 트래이싱 방법에 의하면, 카메라 시점에서 출발한 래이(210)가 오브젝트(220)의 어느 부분에서 충돌하는지(교차 검사), 그리고 충돌하는 경우 반사광의 진행은 어느 쪽이며 반사(reflection)나 투과(refraction)의 정도는 어떻게 되는지를 고려하여 빛의 진행 방향을 역추적하게 된다.
이러한 래이(210)의 충돌 테스트를 가속하기 위해(to accelerate), 본 발명의 일실시예에 따른 영상 처리 장치(100)는 3D 모델(200) 내의 기하 정보(geometry information)를 포함하는 프리미티브(primitive)를 이용하여 공간 가속 구조(Acceleration Structure, AS)를 생성한다.
이러한 가속 구조 AS는, 이를테면, kd-tree나 BVH(Bounding Volume Hierarchy), 또는 Grid 등의 데이터 구조(data structure)의 형태이며, 래이 트래이싱을 수행하는 프로세서인 래이 트래이서(ray tracer)가 래이(ray)의 진행 방향에 존재하여 교차 테스트(Intersecting Test)를 수행할 필요가 있는 프리미티브들에 빠르게 액세스 하도록 한다.
본 발명의 일실시예에 따르면, 공간을 분할한 가속 구조 AS로서 트리, 이를테면 kd-tree를 사용하고, 3D 모델(200) 내의 오브젝트(220)를 구성하는 프리미티브는 삼각형(triangle)이다.
이 경우, 래이 트래이싱의 과정은 다음과 같다.
먼저, 래이 트래이서(102)는 특정한 래이에 대하여, 생성된 가속 구조 AS의 루트 노드(root node)로부터 하위 노드들에 대한 계층적 탐색을 수행하여, 상기 래이가 가장 먼저 방문하는 리프 노드(leaf node)를 찾아낸다.
리프 노드를 찾으면, 래이 트래이서(102)는 상기 리프 노드 내에 존재하는 프리미티브인 삼각형들에 대해 상기 래이와의 교차 검사(intersecting test)를 수행한다.
만약 이 리프 노드 내에서 교차하는 삼각형을 찾지 못했을 경우, 래이 트래이서(102)는 트리의 탐색을 계속하여 다음 리프 노드를 찾고, 새로이 찾아진 리프 노드 내에서 상기 래이와 교차하는 프리미티브 삼각형을 찾아 본다.
이러한 과정이 상기 래이와 실제로 교차하는 프리미티브가 찾아질 때까지 반복되며, 이러한 과정은 연산량이 매우 많이 소모된다.
특히, 메모리(101) 상에 저장된 가속 구조 AS를 래이 트래이서(102) 내의 캐시(Cache)(103) 내에 캐싱 시켜 놓아야 하는데, 어느 하나의 리프 노드 내에서 교차점 검사를 수행하고 교차하는 프리미티브를 찾지 못해 다른 리프 노드에 액세스 하는 경우, 최소한의 메모리(101) 액세스가 될 수 있도록 캐시(103)에 적절한 데이터를 올려 놓는 것이 바람직하다.
그러면, 메모리 지연(memory latency)에 의한 연산 속도 저하도 없고, 메모리 대역폭(bandwidth)가 작게 요구되어 연산 자원 관리가 개선된다. 또한, 비교적 비싼 캐시(103)를 효율적으로 사용하게 되므로, 동일한 연산 자원으로도 연산 속도 향상을 기대할 수 있다.
본 발명의 실시예들에 따르면, 3D 모델(200)의 공간 구조를 분할하여 가속 구조 AS를 생성하는 경우, 래이(210)의 진행 경로에 따라 순차적으로 액세스 되어야 할 리프 노드들이 메모리(101) 내에서 공간적 지역성(spatial locality)를 갖게 되어, 캐시(103) 내에서 캐시 히트 확률이 높아지고, 따라서 연산 자원이 효율적으로 사용될 수 있다.
이하에서는 가속 구조 AS 생성에 있어서, 기존 방법과의 비교를 통해 본 발명의 실시예들을 더욱 상세히 서술한다.
도 3은 도 2의 예시적인 3D 모델을 기존 방법에 따라 Depth First 탐색이 이루어지도록 분할하여 가속 구조 AS를 생성하는 과정을 도시한다.
기존의 방법에 따르면, 래이 트래이싱의 전처리(pre-processing)로서 이루어지는 공간 분할과 가속 구조 AS 생성은 다음과 같은 과정으로 이루어진다.
먼저, 공간에 대한 분할 면을 선택할 임의의 분할 축(axis)을 정하고, 상기 분할 축을 따라 프리미티브들을 정렬하여 복수 개의 분할 면 후보를 설정한다.
그리고, 각 분할 면에 따른 연산 비용을 고려하여, 분할이 필요한지, 그리고 분할이 필요하다면 어느 면으로 해야 연산 비용이 가장 작아지는 지를 판단하여 분할 면 후보들 중 실제 분할 면을 선택한다.
그리고 선택된 분할 면을 이용하여, 분할 된 공간에 대응하는 노드(node) 밑에 분할로 생성된 서브 공간들의 각각에 대응하는 자식 노드들을 생성한다.
여기서, 기존의 방법에 따르면, 선택된 분할 면을 기준으로, 월드 좌표계(world coordinate system) 상에서 좌표 원점(origin)에 가까운지 먼지에 따라 일률적으로 자식 노드를 왼쪽 자식 노드(left child node) 또는 오른쪽 자식 노드(right child node)로 판단하였다.
깊이 우선 트리 탐색(depth first tree traversal)에 있어서는 왼쪽 자식 노드가 오른쪽 자식 노드보다 우선하여 탐색되기 때문에 그 순서가 중요하나, 기존 방법에 따르면 좌표 축 상의 위치에 따라 일률적으로 순서가 정해졌다.
이를 테면, 도 3에 도시된 바와 같이, 3D 모델(200)의 전체 공간을 분할 면(310)에서 분할하는 경우, 좌표 원점에 가까운 왼쪽 부분의 서브 공간에 대응해서는 왼쪽 자식 노드(311)를 생성하고, 좌표 원점으로부터 먼 오른쪽 부분의 서브 공간에 대응해서는 오른쪽 자식 노드(312)를 생성한다.
이러한 방식으로 회귀적인 공간 분할을 해 나아간 결과가 도 3에서 도시되어 있다.
본 발명의 일실시예에 따르면, 생성되는 자식 노드를 상기한 바와 같이 좌표 원점과의 거리에 의해 일률적으로 왼쪽이나 오른쪽 자식 노드로 결정하기보다는, 래이의 진행 경로를 포함할 확률에 따라서 왼쪽이나 오른쪽 자식 노드로 결정한다.
도 4는 본 발명의 일실시예에 따른 영상 처리 방법에 의해 도 2의 예시적인 3D 모델을 분할하여 가속 구조 AS를 생성하는 과정을 도시한다.
3D 모델(200)에서 공간 분할을 해서 가속 구조 AS를 생성하는 경우, 3D 모델 전체는 루트 노드(401)에 대응한다.
그리고, 영상 처리 장치(100)의 분할부(110)가 분할면(410)을 결정하여 3D 모델(200)을 두 개의 서브 공간으로 나누는 경우, 판단부(120)는 두 개의 서브 공간의 각각에 대한 SA(Surface Area)를 비교한다.
그리고, 판단부(120)는 SA가 큰 서브 공간을 가속 구조 AS 내에서 루트 노드(401)의 왼쪽 자식 노드(411)로 결정하고, SA가 작은 서브 공간을 가속 구조 AS 내에서 루트 노드(401)의 오른쪽 자식 노드(412)로 결정한다.
이 경우, 도 3을 참고하여 설명한 기존 방법과는 왼쪽 자식 노드와 오른쪽 자식 노드가 서로 바뀌었다. 그러면, 플래그 설정부(130)는 생성된 자식 노드(411 및 412)에 인버스 플래그(inverse flag)가 되는 식별 비트를 추가한다.
이러한 플래그 기능의 식별 비트는 1 bit의 digit 이면 되며, 가속 구조 AS 생성 시 각 노드에 할당되는 데이터 비트 중 1 비트를 차지하므로, 전체적으로는 큰 오버헤드가 되지 않는다.
이러한 인버스 플래그 비트는 추후에, 필요에 따라 본 발명의 일실시예에 따른 가속 구조 AS를 기존 방법에 의한 가속 구조 AS로 전환하거나, 아니면 래이 탐색(Ray traversal) 과정에서 이용될 수 있다.
이러한 과정을 통해, 노드(411 및 412)의 각각에 대응하는 서브 공간들을 각각 다시 두 개의 서브 공간들로 나누고, 이렇게 생성된 4 개의 서브-서브 공간들 각각을 다시 두 개씩의 서브 공간들로 나눈 결과라 도 4에 도시되었다.
도 3의 기존 방법과의 차이는, 자식 노드 생성 시, 왼쪽 자식 노드와 오른쪽 자식 노드를 설정할 때에, SA 비교에 따라 SA가 큰 서브 공간에 대한 자식 노드를 왼쪽 자식 노드로 설정하는 것과, 이러한 설정이 기존 방법과 반대되는 결과인지의 여부를 알 수 있는 인버스 플래그 비트를 해당 노드에 추가하는 점이다.
이러한 본 발명의 실시예에 따라, 추후 래이 탐색 과정이 어떻게 효율적으로 변경되는지가 도 5를 참조하여 후술된다.
도 5는 본 발명의 일실시예에 따라 가속 구조 AS 생성 후 메모리(101)에 저장되어 있는 모습을 도시하는 개념도(500)이다.
상기 도 3 또는 도 4에서 생성된 트리 형태의 가속 구조 AS가 메모리(101)에 저장되는 경우, DRAM의 각 라인들(510 내지 540)에 노드 0 내지 노드 14의 데이터가 저장되었다.
이하에서, 캐시(103)에 캐싱되는 단위는 이러한 라인(510 내지 540) 단위인 것으로 가정한다.
다시 도 3을 참조하면, 래이(210)의 진행이 리프 노드 공간 14, 13, 10, 4, 3 순서로 이루어진다면, 가속 구조 AS 탐색은 도 5의 데이터 라인 (510 내지 540) 모두를 캐시(103)에 올려서 수행된다.
따라서, 이미 캐시된 데이터의 캐시 히트(cache hit) 비율을 낮아지고, 캐시 미스(cache miss)에 따라 새로운 노드 데이터를 메모리(101)로부터 캐시(103)으로 올리기 위해 많은 메모리 대역폭이 요구되며, 이 과정에서 메모리 지연(latency) 때문에 연산 속도는 더욱 늦어진다.
이러한 연산 속도의 저하는 래이 트래이싱 방법의 렌더링에 있어서 매우 치명적이며, 실시간 래이 트래이싱을 어렵게 하는 원인이 된다.
그러나, 도 4를 참조하면, 본 발명의 일실시예에 따라 공간 구조 AS를 생성하는 경우, 동일한 래이(210)의 진행이 도 4의 공간 구조에서는 리프 노드 공간 3', 4', 7', 14', 13' 순서로 이루어진다.
그러면, 도 5의 메모리 라인(510 내지 540) 중 적어도 일부(530)은 캐시(103)에 올려질 필요가 없으며, 따라서 메모리 대역폭은 작아질 수 있고 캐시 히트 비율이 높아져서 캐시 운용의 효율성이 개선된다.
이러한 차이는, 공간 구조의 분할 수가 클수록, 즉 실제 3D 모델에 적용되는 경우에 매우 큰 연산 속도 차이를 야기한다.
이러한, 캐시의 운용 효율을 높이는 가속 구조 AS의 트리 레이아웃(tree layout)에 따라, 다음과 같은 효과가 기대될 수 있다.
본 발명의 실시예에 따르면, 공간 분할 과정에서 생성되는 두 자식 노드 중 더 큰 공간을 표현하는, 이를테면 SA가 큰 자식 노드를 부모 노드와 같은 캐싱 블록 안에 배열시켜, 공간적 지역성(spatial locality)가 증대된다.
이러한 공간적 지역성의 증가는 깊이 우선으로 트리를 탐색하는 광선 추적시의 캐시 미스 비율을 감소시킨다. 따라서 본 발명의 일실시예에 따르면, 이러한 캐시 미스 비율 감소를 통해, 요구되는 메모리 대역폭을 절감하고 트리 탐색 성능을 향상시킬 수 있는 것이다.
본 발명의 일실시예에 따른 가속 구조 생성 및 트리 탐색 과정은, 래이 트래이싱 기법의 렌더링에서 널리 쓰이고 있는 DFL(Depth First Layout)을 개선한 것으로 이해될 수 있다.
기존 DFL에서는, 월드 좌표계 상에서 분할(split) 축 기준으로 분할(split) 면보다 더 작은 값을 가지는 노드를 왼쪽 자식 노드로, 더 큰 값을 가지는 노드를 오른쪽 자식 노드로 설정하는 일률적인 방식을 취하였으나, 이러한 기존 방식은 방문 확률에 상관 없이 기하학적인 위치를 통해 자식 노드의 탐색 우선순위(priority order)를 결정하므로, parent-child locality의 이용에 단점을 가지고 있다.
이러한 DFL의 단점을 보완하기 위해, 본 발명의 실시예들에 의하면 자식 node의 order가 래이의 각 노드에 대한 방문 확률을 반영한 ODFL(Ordered DFL)로 수정되는 것이다.
즉, 방문 확률이 높은 노드는 왼쪽 자식 노드가 되고, 방문 확률이 낮은 노드는 오른쪽 자식 노드가 되는 방식이다. 앞서 언급한 것과 같이 DFL에서는 부모 노드와 왼쪽 자식 노드 간 spatial locality가 존재하기 때문에, 이와 같이 order를 바꾸면 캐시 효율이 증가하게 된다. 이러한 점은 도 3 내지 도 5를 참조하여 상술한 바와 같다.
한편, 이렇게 생성된 가속 구조에 대한, ODFL을 이용한 트리 탐색 방법은 일반적인 트리 탐색과 거의 유사하나, front-to-back 순서로 방문을 하기 위해서는 앞서 트리 생성 시 플래그 설정부(130)가 설정한 1bit 크기의 인버스 플래그(inverse flag)를 참조한다.
이 경우, 자식 노드의 순서가 노드의 기하학적인 위치가 아닌 표면적 순서로 바뀐 본 발명의 실시예들이 필요에 따라 기존 방법에 의한 가속 구조로 전환되거나 기타 래이 트래이싱 과정에서 기존 방법의 알고리즘이 그대로 활용될 수 있다.
한편, 래이 트래이싱(Ray tracing) 기법에 따라 영상 처리 장치(100)의 분할부(110)의 공간 분할 및 가속 구조 AS 생성 과정에서는 SAH(Surface Area Heuristic)에 기반한 greedy algorithm이 사용될 수 있다.
SAH기반 트리 생성 알고리즘은 래이 트래이싱 렌더링 과정 중 소요될 연산 비용을 kd-tree 생성시에 모델링(modeling)하여 해당 비용(cost)를 최소화하는 위치에서 공간(node)를 분할한다.
이 경우, 임의의 래이(ray)를 3차원 공간으로 project시켰을 때 소모되는 연산 비용은 해당 래이가 공간을 지나갈 확률과 해당공간내의 오브젝트(object)가 개수로 표현될 수 있다.
임의의 ray가 전체 3차원 공간(Vs)에서 특정 영역(V)을 지나갈 확률은 각 영역의 표면적(SA: Surface Area) 의 관계로 아래 수학식 1과 같이 나타난다.
[수학식 1]
Figure 112010055321225-pat00001
그러면, Kd-tree 탐색과정 중 한 노드(node)(N)을 탐색하는 비용(C)은 해당 노드(node)를 탐색하는 비용(Kt)과 해당 노드의 왼쪽 및 오른쪽 자식에 속한 모든 프리미티브 삼각형(triangle)에 대한 교차검사 비용(Ki)로 표현되며, 그 관계는 아래 수학식 2와 같다.
[수학식 2]
Figure 112010055321225-pat00002
수학식 2에서, nL 및 nR은 각각 좌,우 자식 노드에 속한 triangle 개수이고, Kt 및 Ki는 각각 1회 노드 탐색 비용 및 1회 교차검사 비용이다.
영상 처리 장치(100)의 분할부(110)는 이러한 방식에 의해 위의 SAH cost가 최소가 되는 위치에 분할(split) 면을 위치시킴으로써, 3D 모델의 공간에 대한 가속 구조를 생성한다.
도 6은 본 발명의 일실시예에 따른 영상 처리 방법을 도시하는 흐름도이다.
단계(610)에서 영상 처리 장치(100)에 입력 3D 모델의 공간 구조가 입력된다.
그러면, 영상 처리 장치(100)은 입력되는 공간 구조를 분할하여 가속 구조의 노드 생성을 하며(620), 자식 노드를 생성해 나아가다가 단계(630)에서 리프 노드 생성 조건이 만족되는지 판단해서, 만족되면, 단계(640)에서 리프 노드를 생성한다.
여기서, 상기 리프 노드 생성 조건은, 이를테면, 단일 노드 내의 프리미티브 수가 제1 임계 값보다 작을 조건, 루트 노드의 깊이를 0으로 하였을 때, 노드의 깊이(depth)가 제2 임계 값보다 클 조건, 모든 축에 대해서 분할을 완료 하였을 조건 등이 가능하다.
단계(630)에서 리프 노드 생성 조건이 만족되지 않았다고 판단되면, 단계(620)을 반복하면서 해당 노드들을 더 분할 해 나아간다.
그리고, 더 분할할 잔여 공간이 있는지 판단(650)한 후에, 더 분할할 공간이 없을 때까지 단계(620) 이하를 반복한다.
도 7은 본 발명의 일실시예에 따라, 도 6에 도시된 영상 처리 방법의 흐름도 중 단계(620)을 상세히 표시한 흐름도이다.
단계(710)에서, 영상 처리 장치의 분할부(110)는 분할을 수행할 분할 축을 지정한다.
그리고, 분할부(110)는 분할 축을 따라 프리미티브를 정렬하고 분할 면의 후보들을 설정한다(720).
그리고, 단계(730)에서, 분할 면 후보 별로 상기 수학식 1 내지 수학식 2에 따라 SAH를 계산하고, 단계(740)에서 분할의 필요성을 판단한다.
추가적인 분할이 오히려 연산 비용을 증가시킨다고 판단되면, 분할을 멈추고 다음 단계로 진행할 수 있다.
한편, 분할이 필요하다면, 분할부(110)는 상기 SAH를 고려하여 분할 면을 결정하고 분할을 수행한다(750).
그러면, 단계(760)에서 영상 처리 장치(100)의 판단부(120)가, 자식 노드 생성에 관여한다. 하나의 노드에 대응하는 공간이 두 개의 서브 공간으로 분할되어 두 개의 자식 노드가 생성된다면, 판단부(120)는 두 서브 공간 중 SA가 큰 자식 노드를 왼쪽 자식 노드가 되도록 설정한다.
그리고, 단계(770)에서, 플래그 설정부(130)가 생성된 각 노드에, 종래 방식에 의한 DFL과의 인버스(inverse) 여부를 플래그 비트로 표시한다.
그리고, 각 자식 노드 생성 및 기존 프리미티브들을 새로 생성된 두 자식 노드 중 한 곳에 포함시키는 분류가 수행된다(780).
분할 축 지정(710) 내지 자식 노드 생성/ 프리미티브 분류(780)에 이르는 과정은 도 4 내지 도 5를 참조하여 상술한 바와 같다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 영상 처리 장치
110: 분할부
120: 판단부
130: 플래그 설정부

Claims (17)

  1. 입력 삼차원(three dimensional; 3D) 모델에 대한 가속 구조를 생성하기 위한 영상 처리 장치에 있어서,
    상기 입력 3D 모델 내의 제1 공간을 복수 개의 서브 공간으로 분할하는 분할부;
    상기 복수 개의 서브 공간 중, 래이의 진행 경로를 포함할 확률이 더 높은 서브 공간을 상기 가속 구조 상에서 탐색 우선순위가 더 높은 자식 노드로 설정하는 판단부; 및
    상기 복수 개의 서브 공간 중 월드 좌표계(world coordinate system)에서 원점에 더 가까운 서브 공간과, 상기 래이의 진행 경로를 포함할 확률이 더 높은 것으로 판단된 서브 공간이 서로 동일한지의 여부를 식별하는 플래그 비트를 상기 우선순위가 더 높은 자식 노드에 추가하는 플래그 설정부
    를 포함하고,
    DFL(depth-first layout)에 기반하여 상기 탐색 우선순위가 더 높은 자식 노드 및 상기 자식 노드의 부모 노드는 메모리의 동일한 캐싱 블록 안에 배열되는, 영상 처리 장치.
  2. 제1항에 있어서,
    상기 판단부는,
    상기 복수 개의 서브 공간 중, SA(Surface Area)가 더 큰 공간 구조를, 상기 래이의 진행 경로를 포함할 확률이 더 높은 서브 공간으로 판단하는, 영상 처리 장치.
  3. 제1항에 있어서,
    상기 가속 구조는, kd-tree, BVH(Bounding Volume Hierarchy) 및 Grid 중 어느 하나의 데이터 구조(data structure)인, 영상 처리 장치.
  4. 제1항에 있어서,
    상기 우선 순위가 높은 자식 노드는 깊이 우선 트리 탐색(depth first tree traversal)에서 우선적으로 탐색되는 왼쪽 자식 노드(left child node)인, 영상 처리 장치.
  5. 삭제
  6. 제1항에 있어서,
    상기 분할부는,
    상기 제1 공간을 분할하기 위한 분할 축을 지정하고, 상기 분할 축을 따라 상기 제1 공간 내의 복수 개의 프리미티브를 정렬하여 적어도 하나의 분할면 후보를 설정하고, 상기 분할면 후보 중 SAH(surface area heuristic)에 기반한 그리디(Greedy) 알고리즘에 따라 분할면을 선정하여, 상기 분할면을 이용하여 상기 제1 공간을 상기 복수 개의 서브 공간으로 분할하는, 영상 처리 장치.
  7. 제1항에 있어서,
    상기 분할부는, 리프 노드 생성 조건이 만족될 때까지 상기 입력 3D 모델 내에 분할되지 않은 공간에 대해 상기 분할 과정을 회귀적으로(recursively) 반복하는, 영상 처리 장치.
  8. 제1항에 있어서,
    상기 생성된 가속 구조를 저장하는 메모리 및;
    상기 메모리에 저장된 가속 구조 중 적어도 일부를 이용하여 임의의 시점에서의 영상을 래이 트래이싱 기법에 의해 렌더링하는 래이 트래이서
    를 더 포함하는, 영상 처리 장치.
  9. 입력 삼차원(three dimensional; 3D) 모델에 대한 가속 구조를 생성하기 위한 영상 처리 방법에 있어서,
    상기 입력 3D 모델 내의 제1 공간을 복수 개의 서브 공간으로 분할하는 단계;
    상기 복수 개의 서브 공간 중, 래이의 진행 경로를 포함할 확률이 더 높은 서브 공간을 상기 가속 구조 상에서 탐색 우선순위가 더 높은 자식 노드로 설정하는 단계; 및
    상기 복수 개의 서브 공간 중 월드 좌표계(world coordinate system)에서 원점에 더 가까운 서브 공간과, 상기 래이의 진행 경로를 포함할 확률이 더 높은 것으로 판단된 서브 공간이 서로 동일한지의 여부를 식별하는 플래그 비트를 상기 우선순위가 더 높은 자식 노드에 추가하는 플래그 설정 단계
    를 포함하고,
    DFL(depth-first layout)에 기반하여 상기 탐색 우선순위가 더 높은 자식 노드 및 상기 자식 노드의 부모 노드는 메모리의 동일한 캐싱 블록 안에 배열되는, 영상 처리 방법.
  10. 제9항에 있어서,
    상기 탐색 우선순위가 더 높은 자식 노드를 설정하는 단계는,
    상기 복수 개의 서브 공간 중, SA(Surface Area)가 더 큰 공간 구조를, 상기 래이의 진행 경로를 포함할 확률이 더 높은 서브 공간으로 판단하는, 영상 처리 방법.
  11. 제9항에 있어서,
    상기 가속 구조는, kd-tree, BVH(Bounding Volume Hierarchy) 및 Grid 중 어느 하나의 데이터 구조(data structure)인, 영상 처리 방법.
  12. 제9항에 있어서,
    상기 우선 순위가 높은 자식 노드는 깊이 우선 트리 탐색(depth first tree traversal)에서 우선적으로 탐색되는 왼쪽 자식 노드(left child node)인, 영상 처리 방법.
  13. 삭제
  14. 제9항에 있어서,
    상기 분할하는 단계는,
    상기 제1 공간을 분할하기 위한 분할 축을 지정하는 단계;
    상기 분할 축을 따라 상기 제1 공간 내의 복수 개의 프리미티브를 정렬하여 적어도 하나의 분할면 후보를 설정하는 단계;
    상기 분할면 후보 중 SAH(surface area heuristic)에 기반한 그리디(Greedy) 알고리즘에 따라 분할면을 선정하는 단계; 및
    상기 분할면을 이용하여 상기 제1 공간을 상기 복수 개의 서브 공간으로 분할하는 단계
    를 포함하는, 영상 처리 방법.
  15. 제9항에 있어서,
    상기 분할하는 단계는, 리프 노드 생성 조건이 만족될 때까지 회귀적으로(recursively) 반복되는, 영상 처리 방법.
  16. 제9항에 있어서,
    상기 생성된 가속 구조를 메모리에 저장하는 단계 및;
    상기 메모리에 저장된 가속 구조 중 적어도 일부를 이용하여 임의의 시점에서의 영상을 래이 트래이싱 기법에 의해 렌더링하는 단계
    를 더 포함하는, 영상 처리 방법.
  17. 제9항 내지 제12항 및 제14항 내지 제16항 중 어느 한 항의 영상 처리 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
KR1020100083108A 2010-08-26 2010-08-26 영상 처리 장치 및 방법 KR101697238B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100083108A KR101697238B1 (ko) 2010-08-26 2010-08-26 영상 처리 장치 및 방법
US13/067,733 US9355491B2 (en) 2010-08-26 2011-06-22 Ray tracing apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100083108A KR101697238B1 (ko) 2010-08-26 2010-08-26 영상 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20120019720A KR20120019720A (ko) 2012-03-07
KR101697238B1 true KR101697238B1 (ko) 2017-01-17

Family

ID=45696567

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100083108A KR101697238B1 (ko) 2010-08-26 2010-08-26 영상 처리 장치 및 방법

Country Status (2)

Country Link
US (1) US9355491B2 (ko)
KR (1) KR101697238B1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102080851B1 (ko) 2012-09-17 2020-02-24 삼성전자주식회사 레이 추적의 스케쥴링을 위한 장치 및 방법
GB2546019B (en) 2012-11-02 2017-08-30 Imagination Tech Ltd Geometry processing method for 3-D rendering
US9405798B2 (en) * 2013-06-03 2016-08-02 GM Global Technology Operations LLC Rapid nearest neighbor searching using KD-ferns
WO2015023106A1 (en) * 2013-08-12 2015-02-19 Samsung Electronics Co., Ltd. Apparatus and method for processing image
KR20150039496A (ko) * 2013-10-02 2015-04-10 삼성전자주식회사 이전 렌더링의 결과를 이용하여 광선을 추적하는 방법 및 장치
KR102116981B1 (ko) 2013-10-02 2020-05-29 삼성전자 주식회사 광선 추적 가속 방법 및 장치
KR20150078003A (ko) * 2013-12-30 2015-07-08 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
KR101560283B1 (ko) * 2014-04-24 2015-10-15 세종대학교산학협력단 3차원 영상 생성 방법, 이를 수행하는 3차원 영상 생성 장치 및 이를 저장하는 기록매체
US10235338B2 (en) 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US9552664B2 (en) * 2014-09-04 2017-01-24 Nvidia Corporation Relative encoding for a block-based bounding volume hierarchy
US10043303B2 (en) * 2016-03-30 2018-08-07 Intel IP Corporation Methods and apparatus for more efficient ray tracing of instanced geometry
WO2018022011A1 (en) * 2016-07-26 2018-02-01 Hewlett-Packard Development Company, L.P. Indexing voxels for 3d printing
KR102712155B1 (ko) * 2016-12-15 2024-09-30 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
CN108305329B (zh) * 2017-12-28 2022-02-22 深圳市创梦天地科技有限公司 一种构建模型的方法及终端
US10867429B2 (en) 2018-08-10 2020-12-15 Nvidia Corporation Query-specific behavioral modification of tree traversal
US11282260B2 (en) * 2020-06-09 2022-03-22 Qualcomm Incorporated Bounded volume hierarchy (BVH) tree traversal using spatial division
US11158112B1 (en) * 2020-10-29 2021-10-26 Advanced Micro Devices, Inc. Bounding volume hierarchy generation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247627A (en) 1987-06-05 1993-09-21 Mitsubishi Denki Kabushiki Kaisha Digital signal processor with conditional branch decision unit and storage of conditional branch decision results
US20080024489A1 (en) * 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements
US20090172418A1 (en) 2001-04-16 2009-07-02 Bjorn Markus Jakobsson Methods and Apparatus for Efficient Computation of One-Way Chains in Cryptographic Applications

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5355478A (en) * 1991-12-23 1994-10-11 International Business Machines Corporation Method for avoiding cache misses during external tournament tree replacement sorting procedures
US6567815B1 (en) * 2000-08-01 2003-05-20 International Business Machines Corporation Technique of clustering and compaction of binary trees
KR100894136B1 (ko) 2006-08-31 2009-04-20 세종대학교산학협력단 광선 추적을 위한 비 스택 방식의 케이디 트리 탐색알고리즘을 적용한 영상검출 장치 및 방법
US8139060B2 (en) * 2006-11-28 2012-03-20 International Business Machines Corporation Ray tracing image processing system
KR100903777B1 (ko) * 2007-08-24 2009-06-19 연세대학교 산학협력단 3차원 광선 추적 시스템에서 적응형 다중 계층 케이디-트리구조 알고리즘을 이용한 광선 추적 방법 및 장치
KR101610194B1 (ko) 2008-10-15 2016-04-07 삼성전자주식회사 영상처리를 위한 데이터 처리 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247627A (en) 1987-06-05 1993-09-21 Mitsubishi Denki Kabushiki Kaisha Digital signal processor with conditional branch decision unit and storage of conditional branch decision results
US20090172418A1 (en) 2001-04-16 2009-07-02 Bjorn Markus Jakobsson Methods and Apparatus for Efficient Computation of One-Way Chains in Cryptographic Applications
US20080024489A1 (en) * 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements

Also Published As

Publication number Publication date
US20120050289A1 (en) 2012-03-01
KR20120019720A (ko) 2012-03-07
US9355491B2 (en) 2016-05-31

Similar Documents

Publication Publication Date Title
KR101697238B1 (ko) 영상 처리 장치 및 방법
TWI303039B (en) Methods, computing apparatus and computing system for ray tracing , and machine-accessible medium for application in ray tracing
KR102161749B1 (ko) 화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치.
US8570322B2 (en) Method, system, and computer program product for efficient ray tracing of micropolygon geometry
TWI546770B (zh) 圖形處理單元中3d加速結構之完全並列原地建構
US8384711B2 (en) Ray tracing a three dimensional scene using a grid
US8203555B2 (en) Systems and methods for concurrent ray tracing
KR102197067B1 (ko) 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치
JP4954005B2 (ja) メモリ・キャッシュ内のデータを無効化する方法、コンピュータ可読媒体及びイメージ処理システム
KR102080851B1 (ko) 레이 추적의 스케쥴링을 위한 장치 및 방법
US8284195B2 (en) Cooperative utilization of spatial indices between application and rendering hardware
US7990380B2 (en) Diffuse photon map decomposition for parallelization of global illumination algorithm
KR100903777B1 (ko) 3차원 광선 추적 시스템에서 적응형 다중 계층 케이디-트리구조 알고리즘을 이용한 광선 추적 방법 및 장치
KR20150057868A (ko) 레이 트레이싱 시스템에서의 이진트리 탐색 방법 및 장치
US20170161944A1 (en) System and method of constructing bounding volume hierarchy tree
KR101610194B1 (ko) 영상처리를 위한 데이터 처리 장치 및 방법
US10460506B2 (en) Method and apparatus for generating acceleration structure
KR102117932B1 (ko) 사운드 트레이싱 장치 및 방법
KR20110032366A (ko) 영상 처리 장치 및 방법
KR102193683B1 (ko) 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
Hu et al. Parallel BVH construction using locally density clustering
KR102467031B1 (ko) 가속 구조를 생성 및 탐색하는 방법
KR100843292B1 (ko) 룩업 테이블을 이용한 레이 트레이싱 장치 및 방법
KR102051903B1 (ko) 공간 가속 구조 탐색 장치 및 방법
CN117058300B (zh) 一种基于kd树加速光线与未裁剪曲面交点计算的方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20191216

Year of fee payment: 4