KR100294923B1 - 손실 탄력성을 갖는 점진적 삼차원 메쉬 정보의 부호화/복호화방법 - Google Patents

손실 탄력성을 갖는 점진적 삼차원 메쉬 정보의 부호화/복호화방법 Download PDF

Info

Publication number
KR100294923B1
KR100294923B1 KR1019990019619A KR19990019619A KR100294923B1 KR 100294923 B1 KR100294923 B1 KR 100294923B1 KR 1019990019619 A KR1019990019619 A KR 1019990019619A KR 19990019619 A KR19990019619 A KR 19990019619A KR 100294923 B1 KR100294923 B1 KR 100294923B1
Authority
KR
South Korea
Prior art keywords
information
triangle
data
mesh
tree
Prior art date
Application number
KR1019990019619A
Other languages
English (en)
Other versions
KR20000028583A (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 KR1019990019619A priority Critical patent/KR100294923B1/ko
Publication of KR20000028583A publication Critical patent/KR20000028583A/ko
Application granted granted Critical
Publication of KR100294923B1 publication Critical patent/KR100294923B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding

Abstract

본 발명은 엠펙-4 인조/자연 혼합 부호화 분야와 가상 현실 모델링 언어 등에서 사용되고 있는 삼차원 메쉬 데이터를 손실에 탄력적(error resilience)이면서 점진적으로 데이터 복원(incremental build-up)하는 특성을 갖도록 부호화 및 복호화를 위한 방법에 대한 것이다. 삼차원 메쉬로 이루어지는 삼차원 객체의 전송에서는 메쉬 데이터의 효율적인 부호화 뿐만 아니라, 전송되는 데이터의 점진적인 복원이나 손실 탄력적인 복원은 중요한 필요조건으로 인식되고 있다. 점진적인 복원에서는 전송 도중 선로상의 오류로 데이터에 손실이 발생하였을 경우, 이미 전송된 데이터만을 가지고도 일부 복원이 가능하도록 함으로써, 재전송되어야 할 메쉬 데이터의 양 및 사용자의 대기시간을 최소화할 수 있다. 손실 탄력적인 복원에서는 전송된 특정 단위 데이터내 오류 발생 유무와는 무관하게 전송된 단위 데이터별로 독립적으로 복원할 수 있게 하여, 데이터 복원 효율을 높일 수 있다. 이러한 선로 오류에 대해 강한 특징으로 향후의 무선 통신 또는 저전송률 통신 등에서 효과적으로 사용될 수 있는 기술이다. 본 발명은 삼차원 메쉬 데이터의 점진적인 부호화 및 데이터 손실에 대한 탄력성을 부여할 수 있도록 연결정보(Connectivity), 기하정보(Geometry) 및 화상정보(Photometry)로 구성된 삼차원 메쉬 데이터를 부호화/복호화하는 방법에 관한 것이다.

Description

손실 탄력성을 갖는 점진적 삼차원 메쉬 정보의 부호화/복호화 방법{3-D mesh coding/decoding method and apparatus for error resilience and incremental rendering}
본 발명은 MPEG4(Moving Pictures Expert Group-4)-SNHC(Synthetic and Natural Hybrid Coding) 분야와 VRML(Virtual Reality Modeling Language) 등에서 사용되고 있는 삼차원 메쉬 데이터를 손실에 탄력적(error resilience)이면서 점진적으로 데이터 복원(incremental build-up)하는 특성을 갖도록 부호화 및 복호화 하는 방법 및 그 장치에 대한 것이다.
삼차원 메쉬로 이루어지는 삼차원 객체의 전송에서는 메쉬 데이터의 효율적인 부호화 뿐만 아니라, 전송되는 데이터의 점진적인 복원이나 손실 탄력적인 복원은 중요한 필요조건으로 인식되고 있다. 점진적인 복원에서는 전송 도중 선로상의 오류로 데이터에 손실이 발생하였을 경우, 이미 전송된 데이터만을 가지고도 일부 복원이 가능하도록 함으로써, 재전송되어야 할 메쉬 데이터의 양을 최소화할 수 있다. 손실 탄력적인 복원에서는 전송된 특정 단위 데이터내 오류 발생 유무와는 무관하게 전송된 단위 데이터별로 독립적으로 복원할 수 있게 하여, 데이터 복원 효율을 높일 수 있을 뿐만 아니라 사용자의 대기 시간 또한 감소시킬 수 있다. 이러한 선로 오류에 대해 강한 특징으로 향후의 무선 통신 또는 저전송률 통신 등에서 효과적으로 사용될 수 있는 기술이다. 본 발명은 삼차원 메쉬 데이터의 점진적인부호화 및 데이터 손실에 대한 탄력성을 부여할 수 있도록 연결정보(Connectivity), 기하정보(Geometry) 및 화상정보(Photometry)로 구성된 삼차원 메쉬 데이터를 부호화/복호화하는 방법에 관한 것이다.
기존의 삼차원 메쉬 데이터에 대한 부호화는 메쉬 데이터 전체에 대하여 순차적으로 부호화함으로써, 부호화된 데이터의 전송시 전체의 비트 스트림(bit stream)을 모두 전송받기 전에 일부 데이터만으로 복원하는 것은 불가능하였다. 또, 전송시 발생하는 선로상의 에러에 의해 극히 일부의 데이터가 손실되어도 전체 데이터를 다시 전송하여야 하는 비효율이 존재하고 있었다. 그 예로 현재 MPEG-4 SNHC 삼차원 메쉬 부호화에 기술로 채택되어 있는 아이.비.엠(IBM)사에서 제안한 부호화 방식을 들 수 있다(ISO/IEC JTC1/SC29/WG11 MPEG98/W2301,'MPEG-4 SNHC Verification Model 9.0).
MPEG-SNHC에서는 VRML을 기반으로 하여 메쉬 부호화/복호화 방법을 디자인하고 있다. VRML에서 메쉬는 IndexedFaceSet이란 노드형으로 기술한다. 메쉬 데이터를 코딩하기 위한 주된 기술들 중의 하나는 IBM사가 제안한 위상기하학적 서져리(Topological Surgery) 기술이다. 이 기술은 주어진 메쉬를 구와 위상기하학적으로 동일하다고 가정한 후, 주어진 절단 에지(Cutting-edge)를 따라서 메쉬를 자름으로써 이진 트리 구조의 삼각형 스패닝 그래프를 형성한다. 이 때 메쉬를 자르기 위하여 정하여진 절단 에지(cutting-edge)는 꼭지점(vertex)과 꼭지점을 잇는 형태로서, 루프를 가지는 트리 구조로 주어진다. 이를 꼭지점 스패닝 그래프라 한다. 따라서, 이 두 트리를 부호화/복호화하면 원래의 메쉬를 손실없이 재생할 수있게 된다.
MPEG-SNHC에서는 하나의 VRML파일에 여러 개의 IndexedFaceSet이 있을 수 있으나, 기본적으로 하나의 IndexedFaceSet만을 기준으로 압축 방법을 수행한다. 그러나, 하나의 IndexedFaceSet은 여러 개의 메쉬들로 구성되는 것이 가능하다. 즉, 임의의 꼭지점과 다른 임의의 꼭지점 사이를 연결하는 에지가 원 메쉬에 존재하는 다각형들의 집합을 하나의 연결 성분(connected component)라고 하면, IndexedFaceSet은 여러 개의 연결성분로 구성되는 것을 허용한다.
일반적으로, 그래픽의 빠른 처리를 위해서는, 모델링되는 단위가 삼각형이며, 이러한 삼각형들이 랜덤하게 구성되는 것이 아닌 스트립(strip)이나 팬(fan)의 형태로 삼각형 상호 간에 연결되어 있는 것이 바람직하다. 또한 압축율은 심볼이 반복되어 표현된 것일수록 좋다. IBM사는 이러한 압축과 그래픽의 처리란 관점에서 메쉬를 가능한 하나의 긴 삼각형 스트립으로 만든다.
도 1a 내지 도 1f는 IBM사의 삼각형 스패닝 그래프를 꼭지점 스패닝 그래프을 따라서 잘라 생성하는 위상 기하학적 서져리(Topological Surgery) 기술 과정을 보여 준다. 도 1a 및 도 1d는 메쉬를 굵은 선으로 정의된 절단 에지(Cutting-edge)를 따라 자르는 방법을 도시한 것이고, 도 1b는 절단 에지(Cutting-edge)의 전체 형태를, 도 1e는 도 1b를 따라 메쉬를 자를때 발생하는 에지와 꼭지점들의 구성 형태를, 도 1c는 자르는 기준점인 꼭지점들을 연결시켜 구성한 꼭지점 스패닝 그래프, 도 1f는 꼭지점 스패닝 그래프을 따라서 메쉬를 잘라 하나의 연결된 삼각형들의 집합인 스트립을 정의한 삼각형 스패닝 그래프를 도시한 것이다. 아울러,삼각형 스패닝 그래프를 도 1a 내지 도 1f와 같은 방법으로 생성한다면 일반적으로 삼각형 스패닝 그래프의 분기(branch)하는 두 런(run)들 중 한 방향의 런(run)의 길이는 다른 방향의 런(run)의 길이에 비해 상당히 짧게 표현될 수 있다.
도 2a 내지 도 2d는 실제 메쉬에 위상기하학적 서져리(Topological Surgery) 기술을 적용한 예를 도시한 것이다. 한편, 꼭지점 스패닝 그래프는 하나의 가지(branch)에서 여러 개의 가지(branch)로 갈라질 수 있는데, 도 3은 꼭지점 런이 다시 이전의 꼭지점들 중 하나의 위치로 돌아오는 형태, 즉 루프를 가진 꼭지점 스패닝 그래프의 일예를 보여준다. 그리고, 하나의 메쉬는 여러 개의 연결성분로 구성될 수 있으며 실제로는 메쉬를 이루는 구성성분(Component)당 도 1c와 같은 꼭지점 스패닝 그래프와 도 1f와 같은 삼각형 스패닝 그래프의 쌍을 생성한다. 일반적으로 하나의 IndexedFaceSet은 여러 개의 연결성분로 구성되므로, 하나의 IndexedFaceSet을 코딩하게 되면 여러 개의 삼각형 스패닝 그래프와 꼭지점 스패닝 그래프의 쌍을 얻을 수가 있다.
위상기하학적 서져리(Topological Surgery) 기술에 의해 부호화된 데이터를 복원하는 방법은 다음과 같은 순서로 구성된다.
1. 꼭지점 스패닝 그래프를 이용하여 바운딩 루프을 생성한다.
2. 삼각형 스패닝 그래프에서 분기하는 삼각형의 제3의 꼭지점을 Y-꼭지점이라 하는데, 삼각형 스패닝 그래프의 비트스트림을 이용하여 Y-꼭지점를 계산하고, 스트립(strip) 형태의 일련의 연결성을 갖는 삼각형 및 다각형 집합을 구성한다. 이때, 삼각형 스패닝 그래프의 삼각형 마칭 비트 패튼(triangle marching bitpattern)을 이용하여 삼각형 또는 다각형을 생성한다.
3. 위 1과 2의 과정을 통해 구성된 트리 구조의 메쉬정보를 이용하여 위상기하학적 구조에 따라 복원된 메쉬로 구성한다.
IBM사는 꼭지점 스패닝 그래프과 삼각형 스패닝 그래프를 엔트로피 산술 부호화 방법을 이용하여 무손실 압축을 하고 있다. 그러나, IBM의 방법에서 원래의 구조를 재생성하기 위해서는 모든 비트스트림이 복호화기에 들어와 있어야 하며 이로 인하여 다음과 같은 단점을 가지게 된다.
1. 메쉬 데이터의 복호화를 위해서는 전체 비트스트림이 수신되어야 하는데 전송 중 에러가 발생하였을 경우, 전체 비트스트림을 재전송해야 하는 비효율성이 있다.
2. 데이터의 양이 대역폭(bandwidth)에 비해 많은 경우 전송시간이 길어져서 사용자의 대기시간이 길어진다. 사용자의 대기시간을 줄이기 위해서는 기 전송된 데이터를 활용하여 메쉬를 부분적으로 복원하고 렌더링하는 것이 가능하여야 하나 기존의 기술에서는 비트 스트림의 구조상 전송된 비트량에 비해 복원할 수 있는 삼각형의 수가 적다.
이와 같은 기존 기술의 단점을 극복하기 위해서는 다음과 같은 점이 해결되어야 한다.
1. 메쉬 데이터를 전송로의 대역폭이나 복호화기의 특성을 고려해 효율적인 단위 크기로 작게 나누고, 이 단위크기의 비트스트림을 복호화기에서 복원 및 렌더링할 수 있도록 손실에 대한 탄력성을 제공해야 한다.
2. 현재 수신된 일부 데이터만으로도 일부 복원과 렌더링까지 가능하도록 점진적 형태의 부호화/복호화 방법을 제공해야 한다.
위의 두 기능을 기존의 IBM 방법의 기본 구조상에서 제공하기 위해서는, 먼저 도 4에서 보여주는 것과 같은 바운딩 루프과 Y-꼭지점를 처리하는 방법에 따라서 그 성능이 달라진다. 도 1f에서 번호 10,14,18번에 해당하는 점들이 Y-꼭지점들이다. 이 Y-꼭지점은 분기하는 두 삼각형 런(triangle run)들 중에서 적어도 한쪽 런(run)이 모두 처리되어 있어야만 계산될 수 있다. 즉, 삼각형 런 내에 위치하는 삼각형들은 마칭 비트 패턴과 바운딩 루프을 이용하여 삼각형의 세 꼭지점에 대한 인덱스를 결정할 수 있는데, 분기 삼각형의 세번째 꼭지점인 Y-꼭지점은 이어지는 다른 두 런들 중 적어도 한쪽 런에 대한 모든 비트스트림이 입력되어야만 결정이 가능하다. 따라서, 이어지는 비트스트림이 모두 입력되기 전까지는 분기 삼각형 이후의 삼각형은 복원되어 렌더링(rendering)될 수 없다. 기존의 IBM 방법에서는 모든 비트스트림이 복호화기에 수신되어 있다고 가정하므로 이러한 문제에 대해 고려하지 않지만, 점진적인 방법으로 부호화/복호화하기 위해선 이와 같은 문제를 해결해야 한다.
본 발명은 상기의 문제점을 해결하기 위하여 창작된 것으로서, 전송 중 에러가 발생하더라도 에러가 발생한 부분만 재전송하거나 에러가 있는 부분과는 독립적으로 나머지 복원할 데이터를 복원함으로써 네트웍의 부담과 전송시간을 줄일 수 있고, 에러복원 기능을 네트웍 계층(Network Layer)에 의존함으로써 발생하는 비트량의 증가를 최소화할 수 있으며, 전송된 일부의 연결정보, 기하정보, 그리고 특성정보를 이용해 삼차원 메쉬를 점진적으로 복원할 수 있는 삼차원 메쉬 정보의 점진적 부호화/복호화 방법을 제공함을 그 목적으로 한다.
도 1a 내지 도 1f는 삼각형 메쉬의 일예에 대한 꼭지점 스패닝 그래프와 삼각형 스패닝 그래프의 생성 방법을 도시한 것이다.
도 2a 내지 도 2d는 위상기하학적 서져리 기술의 적용예를 도시한 것이다.
도 3은 루프를 가지는 꼭지점 스패닝 그래프의 일예를 도시한 것이다.
도 4는 위상기하학적 서져리에서의 바운딩 루프를 구성하는 방법을 도시한 것이다.
도 5a 및 도 5b는 각각 다각형 메쉬와 그것의 듀얼 그래프의 예를 도시한 것이다.
도 6은 기존의 삼차원 메쉬 정보 부호화 방식을 개념적으로 도시한 것이다.
도 7은 계층적 삼차원 메쉬정보 표현을 개념적으로 도시한 것이다.
도 8a 및 도 8b는 각각 삼차원 메쉬 정보(MO) 및 기본메쉬 정보(MOBL)를 예시한 것이다.
도 9는 삼각형트리/삼각형데이터 쌍과 바운딩 루프 인덱스와의 관계를 개념적으로 도시한 것이다.
도 10a 내지 도 10c는 방향성 정보를 활용한 코딩을 개념적으로 도시한 것이다.
도 11a 및 도 11b는 방향성 정보의 유무에 따른 부호화 순서를 비교한 것이다.
도 12a 내지 도 12i는 고정구조 분할 방법을 도시한 것이다.
도 13a 및 도 13b는 데이터 분할을 개념적으로 도시한 것이다.
도 14a 내지 도 14d는 가변구조 분할 방법을 도시한 것이다.
도 15a 내지 도 15d는 가변구조 분할 방법에 의한 분할을 예시한 것이다.
도 16은 메인줄기에서의 데이터 분할을 예시한 것이다.
도 17은 tt_mean을 이용한 데이터 분할 방법을 도시한 것이다.
도 18a 내지 도 18c는 가상 연결성분의 구성 방법을 도시한 것이다.
도 19는 다각형 메쉬의 삼각형 메쉬화를 예시한 것이다.
도 20a 내지 도 20e는 다각형 메쉬에서의 분할과 관련 신택스(syntax)를 예시한 것이다.
도 21은 바운딩 루프의 인덱싱 방법과 그에 따른 파티션의 헤더 정보를 코딩하는 방법을 예시한 것이다.
도 22는 바운딩 루프를 포함한 데이터 분할을 도시한 것이다.
도 23a 및 도 23b는 바운딩 루프 인덱스 정의 방법들을 예시한 것이다.
도 24a 내지 도 24e는 기하정보의 부호화 방법을 도시한 것이다.
도 25a 및 도 25b는 기하정보, 색상정보, 법선 정보, 텍스쳐좌표정보에 대한문법 구성을 도시한 것이다.
도 26은 기하정보 코딩 방법을 개념적으로 도시한 것이다.
상기의 목적을 달성하기 위하여, 본 발명에 의한 다각형 삼차원 메쉬를 점진적이고 손실탄력적으로 복원할 수 있도록 부호화하는 방법의 일실시예는 (a) 다각형 삼차원 메쉬(MO)를 하나 이상의 연결성분들로 단편화하는 단계; (b) 각 연결성분에 대하여 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 생성하는 단계; 및 (c) 각 연결성분에 대하여 그 연결성분을 구성하는 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 독립적으로 복호화될 수 있는 형식을 갖는 기본메쉬(MOBL)의 형식에 맞추어 부호화하는 단계를 포함함을 특징으로 한다.
상기의 목적을 달성하기 위하여, 본 발명에 의한 다각형 삼차원 메쉬를 점진적이고 손실탄력적으로 복원할 수 있도록 부호화하는 방법의 다른 실시예는 (a) 다각형 삼차원 메쉬(MO)를 하나 이상의 연결성분들로 단편화하는 단계; (b) 각 연결성분에 대하여 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 생성하는 단계; 및 (c) 각 연결성분에 대하여 그 연결성분을 구성하는 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 독립적으로 복호화될 수 있도록 고정된 비트스트림 형식을 갖는 기본메쉬(MOBL)의 형식에 맞추어 부호화하는 단계를 포함함을 특징으로 한다.
상기의 목적을 달성하기 위하여, 본 발명에 의한 다각형 삼차원 메쉬를 점진각형 삼차원 메쉬를 손실탄력적으로 복원할 수 있도록 부호화하는 방법의 또 다른 실시예는 (a) 다각형 삼차원 메쉬(MO)를 하나 이상의 연결성분들로 단편화하는 단계; (b) 각 연결성분에 대하여 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 생성하는 단계; 및 (c) 각 연결성분에 대하여 그 연결성분을 구성하는 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 독립적으로 복호화될 수 있도록 정보의 특성에 따라 가변적인 비트스트림 형식을 갖는 기본메쉬(MOBL)의 형식에 맞추어 부호화하는 단계를 포함함을 특징으로 한다.
상기의 목적을 달성하기 위하여, 본 발명에 의한 다각형 삼차원 메쉬를 점진이고 손실탄력적으로 복원할 수 있도록 부호화하는 방법의 또 다른 실시예는 (a) 다각형 삼차원 메쉬(MO)를 하나 이상의 연결성분들로 단편화하는 단계; (b) 각 연결성분에 대하여 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 생성하는 단계; (c) 각 연결성분에 대하여 그 연결성분을 구성하는 상기 꼭지점 그래프 정보를 부호화하는 단계; 및 (d) 상기 삼각형트리/삼각형데이터 정보를 분할한 데이터 파티션들에 각각 가상 비트쌍을 추가함으로써 가상 연결성분들로 구성하여 부호화하는 단계를 포함함을 특징으로 한다.
상기의 목적을 달성하기 위하여, 본 발명에 의한 삼각형 삼차원 메쉬를 점진적이고 손실탄력적으로 복원할 수 있도록 부호화할 때, 삼각형 삼차원 메쉬를 데이터 파티션들로 분할하여 패킷화하는 방법의 일실시예는 (a) 삼각형 트리에 포함된 삼각형들을 차례로 방문하면서 그 삼각형에서의 총비트발생량을 계산하는 단계; (b) 상기 (a) 단계에서 계산된 삼각형의 총비트발생량을 누적하는 단계; 및 (c) 상기 (b) 단계에서 누적한 값이 패킷 크기에 패킷허용치를 곱한 값보다 작은 경우에는 삼각형 트리에 포함된 다음 방문 삼각형에 대하여 상기 (a) 단계 이하를 반복하고, 작지 않은 경우에는 상기 방문된 삼각형까지의 삼각형트리/삼각형데이터 정보를 데이터 파티션으로 분할하여 패킷화하는 단계를 포함함을 특징으로 한다.
상기의 다른 목적을 달성하기 위하여, 다각형 삼차원 메쉬를 손실탄력적으로 복호화하는 방법의 일실시예는 (a) 입력된 비트스트림을 기본메쉬(MOBL) 단위로 구분하는 단계; (b) 상기 기본메쉬(MOBL)의 파티션 유형을 판단하는 단계; (c) 상기 기본메쉬(MOBL)에 꼭지점 그래프 정보가 포함되어 있으면, 상기 꼭지점 그래프 정보를 복호화하여 바운딩 루프 테이블을 생성하는 단계; (d) 상기 기본메쉬(MOBL)에 삼각형트리/삼각형데이터 정보가 포함되어 있으면, 상기 삼각형트리/삼각형데이터 정보를 복호화하여 삼차원 메쉬를 생성하는 단계; 및 (e) 상기 (a) 단계 내지 상기 (d) 단계를 반복함으로써 삼차원 메쉬를 생성하는 단계를 포함함을 특징으로 한다.
상기의 다른 목적을 달성하기 위하여, 다각형 삼차원 메쉬를 손실탄력적으로 복호화하는 방법의 다른 실시예는 (a) 입력된 비트스트림을 기본메쉬(MOBL) 단위로 구분하는 단계; (b) 상기 기본메쉬(MOBL)의 파티션 유형을 판단하는 단계; (c) 상기 기본메쉬(MOBL)에 꼭지점 그래프 정보가 포함되어 있으면, 상기 꼭지점 그래프 정보를 복호화하여 바운딩 루프 테이블을 생성하는 단계; (d) 상기 기본메쉬(MOBL)에 삼각형트리/삼각형데이터 정보가 포함되어 있으면, 연결성분 단위로 상기 삼각형트리/삼각형데이터 정보를 복호화하여 삼각형 삼차원 메쉬를 생성하는 단계; 및 (e) 상기 (d) 단계에서의 연결성분이 가상 연결성분인 경우 상기 (a) 단계 이하를반복하고, 그렇지 않은 경우 삼각형 삼차원 메쉬의 생성을 완료하는 단계를 포함함을 특징으로 한다.
▶ Polygonal Mesh - 다각형 메쉬는 꼭지점의 3차원 공간상의 좌표(기하정보)와 각각의 면과 그것을 구성하는 꼭지점과의 관계(연결정보) 및 메쉬의 기하학적 구조에는 영향을 주지 않지만 어떻게 보일지에 대해 영향을 주는 색상, 법선, 텍스쳐 좌표정보(화상 정보)에 의해서 정의된다.
▶ Faces - 페이스란 일련의 꼭지점 인덱스들의 집합이며, 코너(corner)는 (면, 꼭지점)들의 쌍을 말한다. 페이스(face)를 구성하는 꼭지점들이 서로 다른 꼭지점 인덱스들의 집합일 때 'simple face'라고 한다.
▶ Edges - 꼭지점 인덱스의 쌍을 에지라고 한다. 만약에 다각형 메쉬에서 한 에지가 오직 하나의 면에서만 나타나면 이를 'boundary edge'라고 정의한다. 만약에 여러 개의 면에 동일한 에지가 나타나면 이 에지는 'singular'하다고 정의한다. 단 두개의 인접하는 면에서만 나타나는 에지는 'internal'하다고 정의한다. 'boundary edge'와 'internal edge'는 'regular'하다고 한다.
▶ dual graph - 메쉬의 각 면의 내부에 한점을 정의하고, 면과 면 사이의 내부 에지(internal edge)를 통과하여 앞에서 정의한 점들을 연결한 그래프를 '듀얼 그래프(dual graph)'라고 한다. 도 5a는 다각형 메쉬를 예시한 것이고, 도 5b는 도 5a에 도시된 다각형 메쉬 그래프의 듀얼 그래프를 도시한 것이다.
▶ Connected Component - 다각형 3차원 메쉬의 듀얼 그래프의 에지들은 다각형 삼차원 메쉬의 페이스들의 유일한 부분을 페이스들의 하나 이상의 별도의 세트들로 정의할 수 있다. 여기서, 두 개의 페이스들이 하나의 에지들 공유하면 동일한 세트에 속하게 된다. 이때, 각 세트는 다각형 3차원 메쉬의 연결성분으로 정의된다.
▶ VRML - Virtual Reality Modeling Language, 인터넷에서 가상공간을 기술하고 전송하기 위하여 만들어진 그래픽 표준 포맷이다.
▶ MPEG - Moving Picture Expert Group , 비디오 등의 다양한 미디어의 전송을 위한 압축 포맷을 표준화하기 위한 국제 표준화 활동이다.
▶ 메쉬(Mesh) - 객체를 여러 개의 다각형으로 구성하여 표현한 것이다.
▶ 노드(Node) - 꼭지점 스패닝 그래프에서 하나의 꼭지점, 또는 VRML에서 사용하는 묘사의 최소 단위이다.
▶ Topological Surgery - 메쉬를 삼각형의 스트립(strip) 형태로 만들기 위하여 주어진 경로(path)를 따라서 메쉬를 자르는 IBM사의 메쉬 코딩을 위한 방법이다.
▶ 꼭지점 스패닝 그래프 - 위상기하학적 서져리(Topological Surgery)에서 메쉬를 자르는 경로이다.
▶ 삼각형 스패닝 그래프 - 위상기하학적 서져리(Topological Surgery)에서 꼭지점 스패닝 그래프를 따라서 잘라서 나타나는 삼각형 스트립(strip)으로서, 이진 트리 구조이다.
▶ vlast - 상위 꼭지점 런으로 여러 개의 가지(branch)로 분기할 수가 있는 데, 현재의 런의 그 가지중의 마지막 가지 인지를 나타낸다. 가지 중의 마지막이면 1, 그렇지 않으면 0을 부여한다.
▶ vleaf - 현재의 vrun의 끝이 잎(leaf)으로 끝나는지 분기 노드로 끝나는지를 나타낸다. 잎(Leaf)으로 끝이 나면 1, 아니면 0의 값이 부여된다.
▶ vrun - 꼭지점 런이 오직 하나의 다음 노드를 가지는지 여부를 표시한다.
▶ vlength - 꼭지점 런의 길이이다.
▶ loopstart - 꼭지점 런 중에서 일부는 잎(leaf)이 다시 다른 꼭지점 런을 만나는 경우가 발생하는데, 그러한 경우의 시작을 나타낸다.
▶ loopend - 꼭지점 런의 잎(leaf)이 루프(loop)를 형성할 경우 그 끝점을 나타낸다.
▶ loopmap - loopstart와 loopend의 상호연관성을 나타낸다. loopend로부터 loopstart로의 에지들을 관련짓는 인덱스들의 집합이다.
▶ trun - 연속되는 삼각형들의 집합으로 그 끝은 leaf 삼각형 또는 분기하는 삼각형으로 이루어진다.
▶ tleaf - 삼각형의 런이 leaf 삼각형으로 끝나는지, 분기하는 삼각형으로 끝나는지를 나타낸다. leaf 삼각형이면 1, 그렇지 않고 분기하는 삼각형이면 0의 값이 부여된다.
▶ tmarching - 삼각형의 전진 양상을 기술한다. 스트립에서 오른쪽 경계에 에지를 가지면 1, 왼쪽 경계에 에지를 가지면 0의 값이 부여된다.
▶ polygonedge - 현재의 에지가 원래 메쉬 모델에서 주어진 모델인지, 아니면 다각형을 삼각형의 집합으로 표현하기 위하여 넣어준 에지인지를 나타낸다. 원래 주어진 에지이면 1, 그렇지 않으면 0이 부여된다.
▶ triangulated - 메쉬 내에 다각형의 유무를 표시한다. 존재하면 0, 그렇지 않으면 1이 부여된다.
▶ nvertices - 꼭지점의 개수를 나타낸다.
▶ nloops - 루프(Loop)의 개수를 나타낸다.
▶ nvedges - vrun의 크기를 나타낸다.
▶ nvleaves - 꼭지점 스패닝 그래프에서 잎(leaf)의 개수를 나타낸다.
▶ bitspernvedges - nvedges를 위해 사용된 비트의 수이다.
▶ simple - 꼭지점 스패닝 그래프가 루프를 가지면 0, 그렇지 않으면 1이 부여된다.
▶ nloops - loopstart 와 loopend에서의 1의 수이다.
▶ ntriangles - 삼각형 스패닝 그래프에서 삼각형의 수를 나타낸다.
▶ ntbranches - 삼각형 스패닝 그래프에서 분기하는 삼각형의 수를 나타낸다.
▶ nmarchingtrans, nmarchingkeepleft - Tmarching의 압축을 위한 통계적 모델이다.
▶ npolytrans, nkeeppoly - Polygonedge의 압축을 위한 통계적 모델이다.
종래의 MPEG에서 사용하는 삼차원 메쉬 데이터의 압축방식은 도 6과 같다.
도 6에 의하면, 삼차원 메쉬 데이터(100)는 연결정보, 기하정보, 그리고 화상정보로 나뉘어 각각 연결정보부호화기(102), 기하정보부호화기(103), 화상정보부호화기(112)를 구비하는 부호화기(101)에 의해 부호화된다. 이때, 꼭지점 구조에 대한 정보(105)는 연결정보부호화기(102)에서 기하정보부호화기(103)로 전달된다. 연결정보부호화기(102), 기하정보부호화기(103) 그리고 화상정보부호화기(112)에서 압축된 정보는 엔트로피부호화기(104)에 의해 압축된 비트스트림(111)로 치환된다.
압축된 비트스트림(111)은 다시 복호화기(112)로 입력된다. 즉, 압축된 비트스트림(111)은 엔트로피복호화기(106)을 거쳐 연결정보 및 기하정보 그리고 화상정보로 나뉘고 이들 정보들은 각각 연결정보복호화기(107), 기하정보복호화기(108), 화상정보복호화기(113)에서 각각 복호된다. 부호화기(101)에서와 마찬가지로 꼭지점 구조에 대한 정보(109)는 연결정보복호화기(107)에서 기하정보복호화기(108)로 전달된다. 복호된 연결정보, 기하정보, 그리고 화상정보를 이용하여 복원된 삼차원 메쉬(110)를 구성할 수 있다.
도 6에 의하면, 삼차원 메쉬는 통신선로 등에서 압축된 비트스트림의 형태로 전송된다. 그런데, 도 6에 도시된 바와 같은 종래의 MPEG에서 사용하는 삼차원 메쉬 데이터의 압축방식은 엔트로피부호화기(104)를 사용하므로, 통신선로 등에서 발생되는 전송에러에 대하여 취약하다고 할 수 있다. 따라서, 전송에러에 대응하고, 기전송된 연결정보와 위치정보 그리고 기타 정보등을 이용해 점진적으로 삼차원 메쉬를 복원시킬 수 있는 기술을 본 발명에서 보여준다.
먼저 점진적인 삼차원 메쉬의 처리를 위하여 본 발명에서는 새로운 메쉬 구조를 도 7과 같이 제안한다. 도 7에 도시된 바와 같이 삼차원 메쉬(Mesh Object : MO)는 메쉬의 정보를 여러 단계로 분류한 단계별 메쉬(Mech Object Layer : MOL)로구성될 수 있다. 이때, 각 MOL은 하나 또는 그 이상의 기본메쉬(Mesh Object Base Layer : MOBL)를 포함하게 된다. 하나의 MOBL은 그 자체의 복원에 필요한 연결정보, 기하정보, 그리고 화상정보 등을 포함한다. 즉, MO는 부호화할 삼차원 메쉬 객체 단위로 정의되며, 이들 메쉬 정보의 다양한 화질과 기능 측면에 따라 여러 단계로 분류하고, 이 분류된 각 단계를 단계별 메쉬(MOL)로 정의한다. 아울러 위상기하학적 서져리 방법을 이용하여 하나의 삼차원 메쉬 객체를 상호 연결성이 없는 여러개의 독립된 메쉬 정보(즉, 연결성분)들로 구성하였을 때, 부호화할 데이터의 크기나 그 외의 특성에 따라 상호 독립된 메쉬 정보를 통합하거나 분할시켜 구성한 것을 기본메쉬로 정의한다.
도 8a 및 도 8b는 MO와 MOBL의 예를 보여주고 있다.
이와 같은 새로운 메쉬 구조에서 보다 효율적으로 메쉬 정보를 점진적으로 복원/렌더링하기 위해선 Y-꼭지점를 고려한 바운딩 루프의 인덱스(index) 결정 방법이 필요하다. 하나의 삼각형 메쉬를 복원하기 위해서는, 도 9와 같이 삼각형트리/삼각형데이터(tt/td 쌍)의 파티션에는 오른쪽 경계(right boundary)와 왼쪽 경계(left boundary) 시작점들에 대한 바운딩 루프의 인덱스들이 주어진다. 도 9에서 m은 우측 시작 인덱스(right starting index), n은 좌측 시작 인덱스(left starting index), 화살선은 코딩되는 삼각형의 순서이며, 이때 전진하는 방향을 기준으로 삼각형 스트립의 오른쪽에 위치하는 경계를 우측 경계(right boundary), 왼쪽에 위치하는 경계를 좌측 경계(left boundary), 회색으로 칠해진 삼각형은 분기 삼각형을 나타낸다. tt/td 쌍의 각 삼각형에 대해 바운딩 루프의 인덱스를 결정하기 위해선 다음과 같은 부가적인 정보가 필요하다.
● 분기 삼각형 이전의 삼각형의 경우
도 9에서와 같이 분기 삼각형 이전의 삼각형들의 경우에는 바운딩 루프의 인덱스들이 왼쪽 경계에서는 1씩 증가하고 오른쪽 경계에서는 1씩 감소함으로써, 삼각형의 세 꼭지점들은 마칭 비트(tmarching)이 복호될 때 즉시 복원 가능하다.
● 분기 삼각형의 경우
도 9에서 분기 삼각형은 세개의 꼭지점 b[m-3], b[m-10], b[n+2]로 구성된다. 그러나, 분기 삼각형에서 오른쪽 가지의 삼각형 정보들, 즉 삼각형 개수를 알 수 있는 정보가 입력되지 않는다면, 분기 삼각형의 세번째 꼭지점인 Y-꼭지점의 바운딩 루프에서의 인덱스인 m-10을 알 수 없다. 따라서 Y-꼭지점의 인덱스가 결정되기 위해서는 적어도 한쪽 가지의 삼각형의 개수를 알 수 있는 정보가 있어야 한다. 한쪽 가지의 삼각형의 총 개수를 알기 위해서는 tt/td 쌍에서 삼각형 런에 대한 정보를 알아야 하는데, 도 9에서 오른쪽 가지의 삼각형 개수가 p개라 가정하면 수학식 1에 의해 사용되는 꼭지점의 개수를 결정할 수 있다.
예를 들어, 도 9에서 분기 삼각형의 세번째 꼭지점인 Y-꼭지점의 바운딩 루프에서의 인덱스는 오른쪽 경계위의 꼭지점의 인덱스가 m-3이고 가지내의 삼각형의 개수가 6개라는 사실을 이용하면,
Y-꼭지점의 인덱스 = (m-3)-(6+2-1) = m - 3 - 7 = m - 10로 결정할 수 있다.
● 분기 삼각형에서 분기하는 가지 내의 삼각형들의 경우
Y-꼭지점의 인덱스가 제공될 경우엔 상기의 분기 삼각형 이전의 삼각형을 처리하는 방법과 동일한 방법으로 각 삼각형을 복원 및 렌더링할 수 있으나, 분기 삼각형의 Y-꼭지점가 결정되지 않으면 삼각형의 꼭지점의 인덱스를 결정할 수 없다. 이는 도 9처럼 오른쪽 가지는 Y-꼭지점가 해결되지 않으면 왼쪽 경계 위에 위치하는 꼭지점들의 인덱스들을 상기의 이유로 인해 결정할 수 없기 때문이다.
이와 같이 분기 삼각형에서 발생하는 Y-꼭지점 문제를 해결하여 보다 효율적인 점진적 복원 및 렌더링을 제공하기 위한 방법은 다음의 제1절에서 제시한다.
아울러, 본 발명에서는 손실에 대한 탄력성을 제공하기 위해 메쉬 데이터를 전송로의 대역폭이나 복호화기의 특성등을 고려하여 분할하는데 있어 고정구조 분할 및 가변구조 분할의 두가지 방법으로 각기 처리할 수 있고, 분할된 데이터를 각각은 상호 독립적으로 복원 및 렌더링하기 위한 방법을 제2절에서 제시한다. 여기서, 고정구조 분할은 분할된 데이터가 모두 동일한 구조를 갖도록 구성시키는 방법이고, 가변구조 분할은 분할된 데이터가 부호화 효율 및 패킷화를 고려해 꼭지점 그래프, 삼각형 트리, 삼각형 데이터 등의 정보에 의해 적절히 조합된 구조를 갖도록 구성시킨 방법이다.
제1절. Y-꼭지점를 고려한 점진적 부호화 방법
기존의 위상기하학적 서져리(topological surgery) 방법에서는 부호화 순서가 전체 tt/td 쌍에 대하여 특정 방향으로만 고정되어 있다. 이와 같은 방법에서점진적인 렌더링 성능만을 향상시킬 수 있도록 부호화하기 위해서는, 메쉬 데이터에서 발생하는 모든 Y-꼭지점의 인덱스값과 Y-꼭지점의 총 개수등의 정보를 비트스트림에 포함하여 복호화기에 전송해주면 된다. 그러나 이 방법은 부호화 효율측면에서 매우 바람직하지 못한 방법이다. 따라서, 이 두 가지 측면, 즉 점진적인 렌더링 효과 및 부호화 효율을 만족할 수 있는 Y-꼭지점에 대한 보다 효율적인 부호화 방법이 요구된다.
위상기하학적 서져리(topological surgery) 방법에선 종속트리들간의 길이 차이가 크고, 크기가 큰 메쉬 데이터일수록 Y-꼭지점이 효율적으로 결정되지 못하여 다각형의 복원에 의한 점진적인 렌더링 효과를 기대할 수 없다는 문제가 있다. 따라서, 종속트리들 간의 길이 차이가 있을 경우, 즉 두 개의 분기된 가지의 크기가 동일하지 않다면 Y-꼭지점 결정과 렌더링 측면에서 짧은 길이의 종속 트리를 먼저 부호화하는 것이 보다 효율적이다. 여기서, 도 2a 내지 도 2d에 도시된 위상기하학적 서져리(topological surgery) 기술을 이용해 메쉬 데이터를 얻으면 일반적으로 한쪽 가지의 삼각형 개수가 대응하는 다른 가지의 삼각형 개수보다 적게 된다. 이와 같은 특성에 따라, 본 발명에서는 종속트리의 크기에 따른 방향성(Orientation) 정보를 제공하여 부호화 순서(traversing)를 분기 삼각형을 기준으로 개별적으로 정할 수 있도록 하는 방법을 제시한다. 즉, 1비트로 구성된 방향성 정보가 1이면 처음 정해진 부호화 순서와 같아서 오른쪽을 먼저 방문하고, 0의 값이면 왼쪽을 먼저 방문하여 부호화시킨다. 따라서, 이와 같이 방향성 정보를 복호화기에 전달함으로써 점진적인 복호화 및 렌더링 효과를 향상시키는 것을기대할 수 있다. 아울러, 방향성 정보는 임의의 한 메쉬 트리를 메인트리와 종속트리로 분류시킬 수 있어 이 특성를 기준으로 연결성 정보를 유지시키면서 보다 효율적으로 데이터 분할을 할 수 있는 기능 또한 제공한다.
도 10a 내지 도 10c는 상기의 방법에 의해 결정한 방향성 정보를 활용한 부호화방법의 일예를 보여준다. 도 10a에서 옅은 회색의 삼각형은 메인트리에 존재하면서 방향성 정보를 갖고 있는 분기 삼각형을, 이진 메쉬트리 내부의 선은 종속트리를 갖고 있는 이진 메쉬트리의 메인줄기를, 그리고 이진 메쉬트리 외부의 선은 종속트리에서 부호화하는 순서, 즉 복호부에서 바운딩 루프의 인덱스를 매핑하는 방향을 나타낸다. 여기서, 바운딩 루프의 인덱스를 매핑하는 방향은 도 10a에 도시된 예와 같이 방향성 정보와 같은 방향(예를 들어, 0이면 시계방향, 1이면 반시계방향)으로 결정되어, 각 종속트리마다 다르게 정의될 수 있다. 이와는 달리, 바운딩 루프의 인덱스를 매핑하는 방향은 방향성 정보와는 무관하게 모두 시계방향, 또는 모두 반시계 방향만으로도 정의될 수도 있다. 한편, 복원할 종속트리 내의 삼각형의 개수가 t개라고 할 때, Y-꼭지점값은 방향성 정보에 따라 다음과 같이 계산식에 차이가 있다.
● 오른쪽 가지를 먼저 부호화할 경우(orientation 값이 1인 경우)
분기 삼각형의 오른쪽 경계위 꼭지점의 바운딩 루프에서의 인덱스가 p라면 Y-꼭지점는 다음과 같다. Y-꼭지점의 위치 = p - t - 1
● 왼쪽 가지를 먼저 부호화할 경우(orientation 값이 0인 경우)
분기 삼각형의 왼쪽 경계위 꼭지점의 바운딩 루프에서의 인덱스가 p라면 Y-꼭지점는 다음과 같다. Y-꼭지점의 위치 = p + t + 1
도 10b와 도 10c에서 tr은 삼각형 런, tl은 tleaf, to는 방향성(orientation) 정보, tm은 마칭(marching)을 나타내며, 도 10b는 tt/td 쌍 정보의 구성요소들 중 삼각형 트리에 방향성(orientation) 정보를 배치하는 경우이고, 도 10c는 tt/td 쌍 정보의 구성요소들 중 삼각형 데이터에 방향성 정보를 배치하는 경우의 비트스트림의 구성도를 나타낸다. 도 10b와 도 10c의 차이점은 도 10b는 구현이 간단하다는 장점이 있고, 도 10c는 삼각형 한개의 정보가 복원되면 그 즉시 렌더링할 수 있어 지연시간이 짧다는 것과 복호화기 설계시 메모리 사용이 도 10b에 비해 적게 들어 비용이 적게 든다는 장점이 있다.
도 11a는 기존의 위상기하학적 서져리(topological surgery) 부호화 순서를 도시한 것이고, 도 11b는 분기하는 삼각형에서의 양쪽 가지의 크기에 따른 부호화 순서의 결정방법을 적용한 일예로서, 방향성 정보의 의미를 나타낸 것이다. 데이터 분할시 방향성정보의 결정 방법은 제2절에서 제시한다.
제2절. 손실에 대한 탄력성을 고려한 점진적 부호화 방법
데이터 전송로나 부호화기에서 생성된 비트스트림상의 오류 등으로 인한 데이터 손실 발생시, 복호화기 측면에서는 이에 대한 효율적인 처리 방법이 필요하다. 따라서, 부호화할 메쉬 데이터를 의미 있는 단위(즉, 파티션 또는 기본메쉬)로 구분시켜 데이터를 분할하고, 이를 소정의 크기를 갖는 처리 단위(이하에서, 패킷(packet)으로 약함)로 전송하게 된다. 다시 말하면, 패킷은 특정형식으로 배열되는 비트들의 묶음으로서 일정한 길이를 갖도록 정해져 있다. 전송로 상에 길이가 긴 데이터를 전송하고자 하면, 다수의 사용자가 존재하는 전송로에서 체증을 불러일으키므로 전송단위를 일정 길이로 묶음으로써 한정된 전송로를 다수의 사용자가 공유할 수 있게 해준다. 한편, 패킷이 전송하려는 부호화의 결과로서 얻은 비트열을 일정 길이마다 묶은 것이라면, 파티션은 부호화하려는 원래의 정보(메쉬)를 적당한 단위로 분할한 것을 말한다. 분할하는 과정에서 수신측에서 복원할 때 전송로 상의 에러를 효과적으로 대응할 수 있도록 고려한다. 즉, 전체 메쉬를 의미있는 부분들로 분할하면, 부호화된 비트열이 전송로 상에서 에러를 포함하여 수신측에서 완벽한 복원을 할 수 없더라도 에러가 포함된 파티션만 손상을 입을 뿐 에러가 포함되지 않은 다른 파티션들을 완벽한 복원이 가능하게 된다. 여기에서 의미있는 부분이라 하는 것은, 동물 그림을 예로 들면, 팔, 다리, 몸통 등으로 분할하여 처리할 때 각 부분들이 서로 연관성이 있는 의미를 가지는 것을 말한다. 파티션을 하는 과정에서는 패킷에서와 같이 그 크기가 일정하게 정해져 있는 것이 아니다. 다만, 수신된 데이터에 에러가 포함된 경우에도 수신측에서 효과적으로 데이터를 복원할 수 있도록 본 발명에서는 다양한 파티션 방법을 제시한다.
이상과 같이 부호화할 데이터를 파티션으로 분할함으로써 다음과 같은 효과를 기대할 수 있다.
● 손실이 발생한 데이터 단위만 재전송시켜 네트웍 부하 및 복호화 지연시간을 줄일 수 있다.
● 분할된 데이터 단위들간에 상호 독립성을 보장시킨다면,
☞ 손실된 데이터의 재전송없이도 손실없는 나머지 데이터들만으로도 메쉬의복원 및 렌더링이 가능해 손실로 발생하는 복호화 지연시간을 제거할 수 있다.
☞ 메쉬 데이터 전체를 수신받지 못한 상태에서도 현재 수신된 데이터를 순차적으로 복원 및 렌더링할 수 있다.
☞ 데이터 단위들간에 상호 독립성이 보장되지 않은 부호화 방법에 비해 손실된 데이터의 재전송이 없는 경우의 메쉬 복원능력이 보다 우수하다. 또한, 재전송이 있을 경우에도 전송효율(복호화 대기 시간)이 향상된다.
2.1 고정구조 분할방법
도 12a 내지 도 12i는 고정구조를 갖는 데이터 분할방식을 보여 준다. sc는 패킷화된 메쉬 비트스트림에서 파티션의 시작 위치를 표시하는 시작 코드이고, id는 파티션의 식별자인데, 본 발명에 의한 부호화 문법의 일실시예에는 각각 3D_MOBL_start_code 및 mobl_id로 표시된다. vg_id는 여러 개의 연결 성분들로 구성된 메쉬 데이터에서 여러 개의 꼭지점 그래프 정보를 묶어서 처리할 경우, 각 tt/td 쌍의 파티션을 복원할 때 이에 대응되는 꼭지점 그래프를 지정하기 위해 사용하는 표시자인데, 본 발명에 의한 부호화 문법의 일실시예에는 codap_vg_id로 표시된다. vi는 방문 인덱스(visiting index)로서 분할된 파티션의 루트 삼각형의 바운딩 인덱스(bounding_index)값을 나타내는 표시자로서, 도 4에 도시한 것처럼 left_index와 right_index 정보를 갖고 있는데, 본 발명에 의한 부호화 문법의 일실시예에는 이들이 각각 codap_left_idx, codap_right_idx로 표시된다. bp는 경계 예측(boundary_prediction)을 나타내는 표시자로서 위치(geometry), 색상(color), 법선(normal), 텍스쳐 좌표(text coord) 정보를 부호화하는 방법을 결정한다. 즉,bp가 1이면 이미 전에 부호화한 꼭지점에 대해 중복을 허용해 부호화하는 방법을 의미하고, 0이면 중복되지 않게 꼭지점을 부호화하는 방법을 의미한다. bp는 본 발명에 의한 부호화 문법의 일실시예에서 codap_bdry_pred로 표시된다. lbl은 현재 파티션이 분기삼각형에서 끝나는 경우에 상기 분기삼각형의 Y-vertex 인덱스를 현재 파티션 정보만으로도 복호화기에서 계산할 수 있도록 하기 위해 발생하는 표시자로서, 상기 분기삼각형에서 임의의 한쪽가지의 종속트리 총 크기를 나타낸다. lbl는 본 발명에 의한 부호화 문법의 일실시예에서 codap_branch_len로 표시된다. vg는 꼭지점 그래프, tt는 삼각형트리/삼각형데이터에서의 삼각형 트리 그리고 td는 삼각형트리/삼각형데이터에서의 삼각형 데이터를 나타낸다. 또한, lvg는 한 파티션 내에서 복원할 연결 성분의 존재 여부를 나타내기 위해 정의된 1비트 표시자로서, 다음에 복원할 vg가 존재할 경우에는 0, 존재하지 않을 경우에는 1로 정의된다. ltg는 한 파티션 내에서 복원할 연결 성분의 존재 여부나 종속트리의 존재 여부를 나타내는 1비트의 표시자로서, 그 값이 0이면 존재하는 경우를, 1이면 존재하지 않을 경우를 나타낸다. 고정구조 분할 방법은 도 12a 내지 도 12i에 정의된 비트스트림 형태들 중 적용분야에 따라 임의의 한가지 형태만으로 전체 메쉬 데이터를 동일하게 부호화하는 방법이다.
구조면에서 도 12a는 전체 메쉬 데이터를 부호화 순서에 따라 처리하여, 하나의 파티션으로 구성하는 방법을 도시한 것이다. 도 12b는 도 12a처럼 전체 메쉬 데이터를 한개의 파티션으로 구성하되, 꼭지점 그래프 데이터와 tt/td 쌍을 분리하여 구성하는 방법을 도시한 것이다. 도 12c는 한개의 연결 성분를 최소단위로 파티션을 구성하는 방법을 도시한 것이다. 도 12d는 메쉬 데이터를 구성하는 여러 개의 꼭지점 그래프들을 모아서 하나의 파티션으로 구성하고, 대응하는 tt/td 쌍을 역시 모아서 하나의 파티션으로 구성하는 방법을 도시한 것이다. 도 12e는 여러 개의 꼭지점 그래프들을 모아서 하나의 파티션으로 구성하고, tt/td 쌍은 파티션의 크기를 고려하여 여러 개의 파티션들로 분할하여 구성하는 방법을 도시한 것이다. 도 12f는 도 12d처럼 꼭지점 그래프와 tt/td 쌍을 분리하여 구성하고, 이들을 연결성분 단위별로 각각 별도의 파티션으로 구성하는 방법을 도시한 것이다. 도 12g는 메쉬 객체를 구성하는 여러 개의 꼭지점 그래프들을 각각 별도의 파티션으로 구성하고, 이어서 대응하는 모든 tt/td 쌍을 파티션의 크기를 고려하여 여러 개의 파티션들로 분할하여 구성하는 방법을 도시한 것이다. 도 12h는 각 연결성분을 구성하는 꼭지점 그래프를 먼저 파티션화하고, 대응하는 tt/td 쌍을 파티션화하여 모든 성분들을 부호화하는 방법을 도시한 것이다. 도 12i는 각 연결 성분에서 꼭지점 그래프 데이터를 먼저 하나의 파티션으로 부호화하고, 대응하는 tt/td 쌍을 파티션의 크기를 고려하여 분할하여 파티션화하는 방법을 나타낸다.
기능면에서 도 12a 내지 도 12i의 각각의 방법을 살펴본다. 먼저 도 12a와 도 12b에 도시된 방법은 손실탄력성이 제공되지 않거나 전송로나 복호화기 성능에 대한 제약을 받지 않을 경우 사용되는 방법으로서, 도 12a는 도 12b에 비해 처리 비용과 렌더링 효율은 보다 향상되지만 데이터 손실시 발생하는 재전송 비용은 보다 많다. 도 12c, 도 12d, 도 12f 및 도 12h에 도시된 방법은 파티션마다 상호 독립성은 보장되나, 특정 크기 단위의 패킷에 맞추기 어렵다는 단점이 있다. 즉, 특정 크기의 패킷에 실어 전송하는 경우, 파티션의 크기가 패킷의 크기보다 작을 경우 그 차이량 만큼의 더미(Dummy) 정보가 추가되어야 한다. 반대인 경우에는, 패킷화할 수 없어 이에 대한 별도의 처리방법 및 부가 정보가 복호화기에서 제공되어야 한다. 따라서, 전체 부호화 효율이 낮아지고, 복잡도 및 비용이 증가하는 문제가 있다. 그리고, 도 12e, 도 12g 및 도 12i에 도시된 방법의 경우, 메쉬의 연결성 정보를 제공하는 꼭지점 그래프 데이터는 상기의 방법처럼 처리하지만, 메쉬에서 삼각형(다각형)의 구성 형태를 제공하는 tt/td 쌍은 상호 독립성을 보장시키면서도 파티션 크기에 따라 나누어 처리할 수 있다. tt/td 쌍의 파티션들에는 vg_id, vi와 bp정보가 추가된다. 여기서, vg_id는 복원할 tt/td 쌍에 대응하는 꼭지점 그래프를 지정하는 지정자로서, 도 12d 내지 도 12g와 같이 꼭지점 그래프를 합쳐서 처리할 경우에 사용된다. vi는 tt/td 쌍이 여러 개의 파티션들로 나누어졌을 때, 각 파티션의 시작 삼각형에서의 left_index와 right_index 값을 지정하는 지정자로서, 이전 파티션이 손실로 인해 복원이 불가능해도 현재 패킷은 이전 패킷과는 독립적으로 복원이 가능하도록 하기 위해 제공되는 정보이다. 아울러, bp는 꼭지점들에 대한 위치, 색상, 법선, 텍스쳐 좌표 정보들을 부호화하는 방법을 정의하는 1비트 표시자로서, tt/td 쌍의 각 파티션마다 정의된다. 또한 도 12e, 도 12g 및 도 12i에 도시된 방법에서 lbl은 분기삼각형에서 파티션이 끝났을 경우에만 선택적으로 사용되도록 구성된다. 도 12a 내지 도 12d, 도 12f 및 도 12h에 도시된 바와 같이 연결 성분 단위로 tt/td 쌍을 부호화할 수 있는 경우에는 bp를 1로 두어 중복이 허용되는 방법으로 복원된다. 한편, 도 12e, 도 12g 및 도 12i에 도시된 바와 같이 임의의 한 연결성분을 구성하는 tt/td 쌍이 여러 개로 분할될 경우에는 각 파티션마다 bp 표시자를 정의하여 복원하도록 한다.
ltg는 선택적 방법으로 부호화된다. 즉, 현재 파티션의 정보가 tt/td 쌍의 어느 한 브랜치의 마지막이면 1로 부호화하고, 그렇지 않으면 0으로 부호화한다. 이는 방문 인덱스(visiting index)를 이용하여 판단하게 되며 다음과 같은 공식을 이용한다.
right_index - left_index - 1 = 현 파티션에서의 삼각형의 개수
위의 수학식 2를 만족하면 가지의 끝을 의미하므로 ltg를 1로 부호화하게 된다.
이와 같은 구조를 제공하기 위한 데이터 분할의 방법은 다음과 같다.
1. 연결성분 단위로 데이터 분할하는 방법
도 12c 및 도 12h의 경우로서, 이 방법은 구현이 간단하며 연결성분들 간의 크기 차이가 나지 않으면 효율적이다. 그러나, 연결성분의 데이터 크기가 균일하지 않고 차이가 크면, 데이터 파티션의 크기가 일정하지 않아 이에 대한 부가적 비트가 발생하여 부호화 효율을 저하시킨다. 한편, 연결성분 자체 데이터 크기가 크면 부호화 효율을 저하시킬 뿐만 아니라, 소정의 크기로 패킷화할 수 없다. 따라서, 이 방법은 전송로나 복호화기의 성능에 제한을 받지 않을 때만 제한적으로 적용될 수 있는 방법이다. 한편, 도 12a, 도 12b, 도 12d 및 도 12f의 경우도 상기의 문제를 갖고 있다.
2. 크기가 작은 연결성분들을 합쳐서 데이터 분할하는 방법
크기가 작은 연결성분들을 많이 포함하는 메쉬에서는 상기의 1번 방법을 적용하는 것은 부호화 효율면에서 적절한 방법이 아니다. 따라서, 도 12a 및 도 12b의 경우와 같이 크기가 작은 연결성분들은 소정의 크기의 파티션 크기를 만족할 때까지 모아서 하나의 파티션 단위 내에서 처리하는 것이 바람직하다. 이 방법에서 파티션의 헤더 정보에 특정 꼭지점 그래프에 대응하는 tt/td 쌍을 정의하기 위한 지정자(vg_id)를 제공하여야 한다.
3. 큰 연결성분을 데이터 분할하는 방법
상기의 1번 방법을 사용할 경우 패킷 크기보다 큰 연결성분를 부호화하는 것은 제한적인 환경에서만 가능했다. 따라서, 본 발명에서는 파티션 크기에 대한 유연성과 파티션들의 상호 독립성을 모두 만족하도록, 크기가 큰 한개의 연결성분을 나눌수 있는 보다 일반적인 부호화 방법을 제시한다. 도 12e, 도 12g 및 도 12i는 임의의 크기가 큰 연결성분에서 tt/td 쌍만을 다시 여러 개의 파티션으로 나누어 부호화 처리하는 방식을 보여준다. 도 12e는 도 12d에서, 도 12g는 도 12f에서, 도 12i는 도 12h에서 각각 변형된 형태를 나타낸다. 한편, 도 12e 및 도 12g는 도 12d 및 도 12f에서처럼 전체 꼭지점 그래프에 대한 정보를 복호화기에서 모두 저장해 두어야 하므로 비용이 증가한다는 단점을, 도 12i는 부호화 효율면에서 작은 크기의 연결 성분들에 대해 부담이 크다는 단점을 지니고 있다.
아울러, 이 방법에서는 특정 꼭지점 그래프에 대응하는 tt/td 쌍을 정의시키기 위한 지정자(vg_id)와 파티션의 시작 삼각형의 경계 루프 인덱스를 지정하기 위한 지정자(vi) 및 기하, 색상, 법선, 텍스쳐 좌표 정보들의 부호화하는 방법을 표시하는 표시자(bp) 정보가 파티션 헤더 정보에 추가로 정의되어야 하는 부담을 갖고 있다. 그러나, 이 방법은 메쉬 데이터를 손실에서 상호 독립적으로 쉽게 보호할 수 있고, 파티션화에 따른 부호화 손실 역시 줄일 수 있는 보다 일반적인 분할 방법이다.
추가적으로, 도 13a는 tt/td 쌍이 분할되었을 때 비트스트림의 구조를 보여주는 예로, 수직 점선은 분할된 위치를 표시한 것으로 삼각형 트리와 삼각형 데이터와의 상호 관계를 보여준다. 도 13b는 상기 방법들을 적용해서 데이터 분할하는 과정을 실시한 예를 보여준다. 도 13b에서 id 정보는 편의상 생략하였으나, 시작 코드(start code) 다음에 정의된다. 이하 vg는 꼭지점 그래프, tt/td는 삼각형트리/삼각형데이터, cc는 연결성분으로 약칭한다. 도 13b에서 n은 연결 성분들의 개수, n`는 연결성분들을 크기에 따라 재구성하였을 경우의 구성성분들의 개수이다. 재구성의 방법은
1. 연결 성분들의 재합성(201 단계)
크기가 작은 연결성분들은 합쳐서 데이터 파티션의 크기의 범위에 들어가도록 한다. 도 13b에서는 CC1과 CC2를 합쳐서 CC`1을 만든다. 한편, 크기가 데이터 파티션을 고려한 크기에 비해 큰 것들은 내부에서 분할을 하여 작은 가상 구성성분들로 나눈다. 도 13b의 예에서는 CC3을 여러 개의 CC`2, ...,CC`k로 나누었다.
2. vg와 tt/td 쌍의 생성(202 단계)
재구성한 각 구성성분에 대해 vg와 tt/td의 쌍을 만든다.
3. vg들과 tt/td 쌍들의 통합(203 단계)
상기 202 단계에서 생성한 vg들과 tt/td 쌍들을 각각 별도로 통합한다.
4. vg정보의 분할(204 단계)
상기 203 단계에서 통합한 vg정보를 적절한 크기의 단위로 데이터 분할한다.
5. tt/td쌍 정보의 분할(205 단계)
상기 203 단계에서 생성한 tt/td 쌍 정보를 적절한 크기의 의미있는 단위로 분할한다.
이와 같은 고정구조 분할방법은 도 12a 내지 도 12i에 열거한 각 방식들마다 그 구조를 지원할 수 있는 복호화기가 모두 필요하기 때문에 실제 시스템을 구성하는 측면에선 복잡도와 비용면에서 불합리한 면을 갖고 있다. 따라서, 하나의 복호화기만으로도 위에서 열거한 방식의 비트스트림들을 모두 적응적으로 복호화할 수 있게 하기 위하여 본 발명에서 가변구조 분할 방법을 제시한다.
2.2 가변구조 분할방법
가변구조 분할방법에선 고정구조 분할 방법에서 제공하지 않는 pt(partition type)정보, 즉, 현재 파티션의 분할된 형태를 지정하는 정보가 추가되어 도 14a 내지 도 14d에 도시된 바와 같이 총 4가지의 구조로 분류된다. 본 발명에서 정의한 pt는 sc 값에 따라 정의되며, sc와 pt 값 간의 관계는 표 1에서와 같다.
비트값 내 용
0000 0000 0011 0001 하나 또는 여러개의 vg를 포함하며, 이 vg 데이터는 다른 하나 또는 여러개의 다른 데이터 파타션에서 사용된다.
0000 0000 0011 0011 tt/td 정보만을 포함하며, 이 정보를 복원할 경우 임의의 vg에 tt/td 쌍을 대응시키는 vg_id와 삼각형 스트림의 시작점인 vi(visiting index)와 bp(boundary prediction)를 헤더에 포함한다.
0000 0000 0011 0100 vg, tt, td가 하나의 데이터 파티션을 형성하며, vg는 다른 하나 또는 여러 개의 데이터 파티션에서 사용된다.
가변구조 분할 방법은 비용과 복잡도면을 고려하기 위한 방법인데, 이는 다음의 사항을 고려한다.
▶ 시작 코드(start code)는 선택적으로 적용될 수 없다. 즉, 복호화기는 현재 비트스트림의 형태가 어떤 모드에서 부호화된 것인지를 모르는 상태에서 복호화한다. 따라서, 시작 코드를 부호화기에서 부호화 모드에 따라 선별적으로 제공할 경우, 제한된 비트스트림만을 복원하게 되고 경우에 따라선 다양한 종류의 복호화기를 제공해야 한다. 이로 인해 비용과 복잡도가 증가하게 되는 결과를 초래한다. 결국, 부호화기의 부호화 조건과는 무관하게 복호화하기 위해선 가변적인 문법 체계는 배제해야 한다.
▶ 특정한 한가지 형태로만 부호화할 경우 메쉬의 특성이나 복호화기의 특성에 따라 불필요한 정보가 제공되므로서 부호화 효율을 낮출 수 있다.
도 14a 내지 도 14d는 가변 구조를 지원할 수 있는 4 가지 문법모듈을 나타낸 것이다. 도 14c는 도 12a 내지 도 12i에서 정의된 것과 같이, vg_id와 ltg를 적응적으로 제공하는 문법을 갖는다. 즉, 도 14b 문법에서 vg가 한 개로만 구성될 경우, 복원과정에서 vg와 tt/td 쌍의 대응관계를 알 수 있으므로 vg_id는 제공될 필요가 없다. ltg의 경우 분할된 tt/td 쌍이 전체 tt/td 쌍의 가지의 끝부분에 해당될 때만 이를 표시하기 위해 제공된다. 이에 대한 판별식은 수학식 2와 같다. 도 14a는 pt=0이며, 임의의 개수의 연결 성분들로 파티션을 구성하는 구조를 도시한다. 도 14b는 pt=1이며, 임의의 개수의 vg들만으로 파티션을 구성하는 구조를 도시한다. 도 14c는 pt=2이며, 한개의 연결성분에 대응하는 tt/td 쌍만을 파티션으로 구성하는 구조를 도시한다. 도 14d는 pt=3이며, 한개의 연결성분에 대응하는 vg와 tt/td 쌍을 파티션으로 구성하는 구조를 도시한다. 따라서, 이와 같은 문법 구조들의 조합은 도 12b를 제외한 나머지 모든 형태의 문법 구조를 지원할 수 있다. 즉, 도 12a의 경우에는 pt=0으로 구현 가능하고, 도 12i의 경우에는 pt=1과 pt=2의 조합으로 구현가능하다. 따라서, 본 발명에서는 부호화 효율 측면을 고려해 패킷 크기에 비해 상대적으로 작은 연결성분들은 pt=0를 사용함으로써 한 파티션 내에 여러 개의 연결성분들을 모아서 부호화하고, 패킷의 크기에 비해 상대적으로 큰 연결성분들의 경우에는 pt=1과 pt=2 또는 pt=2와 pt=3을 사용하여 부호화하는 방법을 사용한다. 또한, 전송로나 복호화기 능력측면을 고려할 경우, 이에 적절한 여러 가지로 조합된 다양한 형태의 문법도 제공할 수 있다.
도 15a 내지 도 15d는 가변구조 분할 방법을 적용한 예이다. 도 15a에서 cc1 내지 cc3은 크기가 작은 메쉬이므로, pt=0 또는 pt=3으로 정의해서 연결성분별로 처리한다. cc4는 크기가 큰 메쉬이므로, tt/td 쌍을 여러개로 나누고 pt=3과 pt=2를 조합한 형태로 처리한다. 아울러, cc4의 경우 도 15b와 같이 pt=1과 pt=2을 조합한 형태로도 처리할 수도 있다. 또한, 도 15c에 도시된 바와 같이, 부호화 효율을 향상시키기 위해서는 메쉬 데이터에 대해 다른 조합구조로 변형할 수도 있다. 도 15c는 cc1 내지 cc3의 메쉬 데이터는 pt=0로 정의한 경우를 보여준 것인데, 전체 메쉬 데이터를 표현하기 위해 도 15c와 도 15a가 결합된 형태 또는 도 15c와 도 15b가 결합된 형태로도 표현이 가능하다. 단, 도 15c의 구조를 제공하기 위해선 마지막 연결성분을 판별할 수 있는 조건이 필요하다. 기존의 방법에선 마지막 연결성분을 결정하기 위해 last_cc라는 1비트 표시자가 사용되는데, 1이면 마지막 연결성분을 의미한다. 따라서, 본 발명에서는 last_cc와 유사한 기능을 하는 ltg 표시자와 sc 내에 있는 pt 정보를 이용해 복원할 연결성분의 존재여부를 다음과 같이 판별할 수 있다.
if(ltg==1) {
if(pt==0) {
if(next-2_bytes()==sc) 현재 복원된 cc는 파티션내의 마지막 cc임;
else 현재 복원된 cc는 복원할 마지막 파티션임;
} else 현재 복원된 cc는 파티션내의 마지막 cc임;
}else 현재 복원된 cc는 파티션내의 마지막 cc가 아님;
next_2_bytes()는 복호화기에서 비트스트림 중 2바이트만 미리 읽어보는 함수이다. 도 15d는 pt=0,1,2를 이용한 실시예를 보여주고 있다. 상기의 예에서도 알 수 있듯이 가변구조 분할방법은 부호화 환경에 대한 적응력이 우수하고, 부호화 효율이나 비용면에서 고정구조 분할 방법보다 향상된 방법이다.
2.3 tt/td 쌍의 데이터 분할 방법
tt/td 쌍의 분할을 위해서 본 발명에서는 이전 파티션의 끝에서 처음으로 나타나는 분기하는 삼각형의 어느 한쪽가지의 삼각형 정보가 다 들어온 뒤의 위치(=메인줄기)에서 데이터 분할하는 것을 기본으로 한다. 도 16은 이러한 예를 보여 준다. 이와 같이 메인줄기에서 tt/td 쌍을 분할하는 것은 제1절에서 논했듯이 Y-꼭지점의 인덱스를 결정하지 못하면 해당되는 분기 삼각형 이후의 삼각형의 복원 및 렌더링이 불가능하기 때문이다. 그러나, 이 방법은 처음 정해진 방문(traversing)순서와 실제 tt/td 쌍의 형태에 따라서 비효율적일 경우를 발생한다. 즉, 왼쪽(오른쪽)가지 코딩이 우선인 경우, tt/td 쌍의 분기하는 가지의 왼쪽가지의 크기가 매우 크다면 여전히 패킷 크기를 넘어서게 되고, Y-꼭지점의 인덱스를 결정하는 것은 분기 삼각형 이후의 많은 정보, 즉 다른 한쪽가지의 삼각형 수에 대한 정보가 처리될 때까지 기다려야 하는 부담이 있다.
따라서, 본 발명에서는 효율적으로 메쉬 데이터를 분할하는 방법에 대해 세가지 방법을 제시한다. 본 발명에서는 패킷 내에 하나 이상의 파티션들이 포함될 수 있다. 그러나, 본 절에서는 하나의 패킷 내에 하나의 파티션만이 포함된다는 가정하에 설명한다.
첫번째 방법은 도 17에 도시된 바와 같이 참조번호 300의 패킷크기(=target)에 대한 패킷허용치(=t_rate)를 설정하여 분할하는 방법으로서, 연결성분의 단위로 부호화할 tt의 평균 비트 발생량(=tt_mean)을 구하고, 미리 설정한 패킷허용치(=t_rate)를 만족하는 범위 내에서 실제 데이터 분할을 수행한다. 도 17에서 참조번호 300의 tt_mean은 연결성분별로 계산한 tt의 평균비트량이고, 참조번호 320의 td_bitsi는 i번째 삼각형이 부호화되었을 때 vg와 tt 정보를 제외한 나머지 정보들의 비트발생량이고, 참조번호 320의 cur_bits는 패킷의 첫번째 삼각형에서 i번째 삼각형까지 발생한 비트발생량(tt_mean+td_bitsi)들을 모두 합한 값이다. 따라서, i번째까지의 총비트발생량(cur_bits)이 허용된 패킷크기(=t_rate * target)를 만족하면(330), 데이터 분할을 수행하여 코딩하고(340), 그렇지 않으면 다음 (i+1)번째 삼각형의 부호화를 진행시킨다(350). 전체 메쉬가 모두 부호화될 때까지 이와 같은 과정을 반복 수행함으로써 파티션화 또는 패킷화가 이루어진다.
여기서 고려할 점은 메인줄기 상에 있는 분기 삼각형에서의 분할 결정방법이다. 즉, 기본적인 분할 위치는 Y-꼭지점 문제를 고려하기 위해 메인줄기 상에서만 정의된다는 가정하에서, 분기 삼각형 다음에 부호화할 임의의 방향, 즉 방향성 정보에 따라 정해진 방향의 종속트리를 패킷 내에 포함시켜 부호화할 것인지의 여부를 결정하여야 한다. 이를 결정하기 위해 본 발명에서는 부호화할 종속트리를 미리 부호화해 보는 방법을 사용한다. 즉, 미리 부호화하여 보았을 때, 종속트리 내에서 패킷크기를 만족한다면 메인줄기에서 분할한다는 기본 조건을 위배하기 때문에 도 18c와 같이 이전의 분기 삼각형에서 분할을 수행하고, 종속트리까지 부호화된 총비트발생량이 패킷크기보다 적은 경우엔 도 18a 또는 도 18b와 같은 형태로 종속트리를 패킷에 포함시켜 부호화하고 분할한다.
두번째 방법은 패킷허용치에 도달하지는 않았지만, 부호화할 다음 삼각형이 분기 삼각형이고, 분기하는 종속트리에서 발생할 것으로 예측되는 비트량과 현재파티션에서 발생한 비트량과의 합이 패킷 크기를 넘어설 것으로 판단되면 분할을 한다. 이를 상세히 기술하면 다음과 같다.
1. 각 연결성분의 첫번째 파티션에서 부호화된 비트수(cur_bit)를 저장한다.
2. 타겟 비트(target bit)에 도달하지는 않았지만, 다음 삼각형이 분기 삼각형이라면, 다음 삼각형에서의 종속트리의 크기(nst)를 구한다.
3. 현 파티션에서 현재까지 부호화된 삼각형의 꼭지점 개수(cur_ng)를 구한다.
4. cur_ng + nst + 2 > ng 이면 분할하는데, 다음과 같이 분할을 수행한다.
(1) 종속트리에서 발생할 비트 예측량이 패킷크기보다 크면 다음 분기 삼각형까지 포함해서 분할을 한다. 즉, nst+2 > ng 이면 도 18c와 같이 다음 분기 삼각형을 포함하여 분할하고,
(2) 그렇지 않으면 현재 삼각형에서 분할한다.
세번째 방법은 패킷허용치를 설정하지 않고, 항상 다음에 부호화할 메쉬의 한 패킷단위를 미리 부호화해 보고, 패킷크기를 만족할 때의 삼각형의 총개수를 계산한 다음, 이 삼각형의 개수 정보를 이용해 실제 패킷단위의 비트스트림을 구성하는 방법이다. 이 방법에서도 위의 방법에서 고려했던 종속트리의 포함 여부 결정방법을 동일하게 적용한다.
한편, 위와 같은 방법으로 메쉬 데이터를 파티션화할 때 추가적으로 고려되어야 할 두 가지 사항이 있다. 첫째가 Y-꼭지점 계산에 따른 복호화시 지연시간 발생 문제이고, 둘째가 분할된 데이터간의 독립성 보장 문제이다. 본 발명에서는첫번째 문제에 대해서는 제2.4절에서 처럼 가상 연결성분을 설정하는 방법에 의해 지연시간을 최소화시켰으며, 두번째 문제에 대해서는 방향성(orientation) 정보, 바운딩 루프 인덱스(=vi) 정보와 삼각형(=polygon edge) 정보를 패킷단위로 정의하여 해결한다.
2.4 가상 연결성분를 이용한 Y-꼭지점 처리 방법
tt/td 쌍의 분할된 데이터들간 상호 독립성을 유지하면서 Y-꼭지점를 처리하기 위해 두가지 방법이 이용된다. 가장 간단한 방법으로는 분할된 데이터의 길이와 Y-꼭지점 정보를 복호화기에 보내주는 것이고, 다른 방법으로는 tt/td 쌍의 특성에 따라 분할한 데이터를 가상 연결성분으로 정의하는 방법이다. 첫번째 방법에 의하면 전체 메쉬 길이와 분할된 메쉬의 길이를 복호화시 알 수 있으므로 복원될 메쉬 구조를 추정할 수 있고, 아울러, Y-꼭지점 정보 또한 알 수 있어 점진적인 렌더링을 수행할 수 있다. 그러나, 이들 부가정보로 인해 부호화 효율이 낮아지는 단점이 있다.
두번째는 가상 연결성분을 정의하는 방법으로 이진트리로 구성되는 tt/td 쌍은 수학식 3과 같이 가지(branch)와 잎(leaf)의 개수로 연결성분을 정의하는데, 분할된 메쉬 데이터에 수학식 3을 만족하도록 가상 비트를 정의하면 가상 연결성분을 구성할 수 있다. 이때, 파티션의 시작 위치는 항상 이진 트리의 메인줄기 중의 런에서만 발생하도록 구성한다. 이는 Y-꼭지점에 대한 처리를 용이하게 하기 위한 조건으로, 예를 들어, 메인줄기가 아닌 곳에서 분할이 되면 앞에서 열거한 Y-꼭지점의 문제가 발생해, Y-꼭지점 처리를 위한 추가 정보가 제공되어야 하거나 복원및 렌더링을 파티션 단위별로 할 수 없는 문제가 발생한다.
가상 비트를 정의하는 방법은 두 가지 경우로 나누어 정의할 수 있다.
1. 런이나 잎(leaf)에서 파티션이 끝날 경우
수학식 3을 만족하기 위해 (trun, tleaf)에 (1,1)의 한 개의 가상비트 쌍을 추가한다.
2. 가지에서 파티션이 끝날 경우
수학식 3을 만족하기 위해 (trun, tleaf)에 (1,1)의 두 개의 가상비트 쌍을 추가한다.
아울러, 가지(branch)에서 파티션이 끝나고 꼭지점별로(per vertex) 기하(geometry), 색상(color), 법선(normal), 텍스쳐 좌표(texture coord) 정보들을 처리할 경우, 분기 삼각형인 마지막 삼각형에 대한 이들 정보는 부호화하지 않는다. 이는 현재 파티션의 분기 직전 삼각형과 다음에 부호화할 파티션의 루트 삼각형의 인덱스 정보에 의해 결정되는 Y-꼭지점 인덱스에 의해 분기 삼각형의 복원이 가능하기 때문이다. 단, 다음에 부호화할 파티션에 손실이 발생할 경우 현재 파티션의 마지막에 나타나는 분기 삼각형은 복원될 수 없다는 단점이 있다. 상기의 문제는 분기삼각형의 양쪽가지에서 파생되는 두 종속트리 중 임의의 한 종속트리의 총 크기 정보(lbl)를 tt/td 쌍 정보에 포함시켜 복호화기에 전송함으로써 해결할 수 있다. 이는 lbl 값을 이용해 다음에 복원할 파티션 정보 없이도 분기삼각형의 Y-꼭지점 인덱스를 계산할 수 있기 때문이다. 한편, 페이스별로(per face)나 코너별로(per corner)로 부호화할 경우에는 Y-꼭지점 인덱스에 의존적이지 않기 때문에 모든 경우에 대해 부호화가 수행된다. 도 18a 내지 도 18c는 가상 연결성분을 구성하는 개념도이다. 도 18a는 잎(leaf)에서 파티션이 될 경우, 도 18b는 런에서 파티션이 끝날 경우, 그리고 도 18c는 가지(branch)에서 파티션이 끝날 경우의 가상 비트를 도시하고 있으며, 가상 비트는 ▲표시의 가상 삼각형을 구성할 수 있도록 정의된다.
한편, 도 18a에서 분기 삼각형 이후에 바로 이어서 잎 삼각형(leaf triangle)이 나온 형태에서 분할이 되면, 도 18c의 경우와 동일한 트리구조가 된다. 이 경우에 복호기에서는 도 18a와 도 18c의 형태를 구분할 수 없게 되므로, 부호화부에서는 트리 가지의 끝부분을 제외하고는 분기 삼각형(branching triangle) 바로 다음의 잎 삼각형(leaf triangle)에서 분할이 발생되지 않도록 하여야 한다. 이렇게 함으로써 복호부에서는 도 18a와 도 18c의 형태를 구분하기 위한 다른 정보가 없어도 모든 삼각형에 대한 복호화가 가능해진다.
따라서, 메인줄기에서만 분할한다는 기본 조건하에선 종속트리가 큰 경우에는 패킷화할 수 없다는 문제가 있었는데, 위의 방법과 같이 가상 연결성분을 구성하는 방법을 사용하면 종속트리를 여러개의 상호 독립된 가상 연결성분으로 구성할 수 있어, 모든 경우에 대해 패킷화가 가능하다는 부가적인 장점이 발생한다.
아울러, 이와 같은 방법으로 가상 연결성분을 구성하고 부호화하였을 경우 복호화기에서 가상비트를 판단하는 방법은 다음과 같다.
1. 런과 잎(leaf)에서 가상비트 유무 판별
수학식 4를 만족하면 가상 비트가 존재하고, 그렇지 않으면 존재하지 않는다. 도 18a와 도 18b처럼 부호화된 삼각형들 중 마지막에서 세번째 삼각형이 분기 삼각형이 아니고 수학식 4를 만족하면, (trun, tleaf)에서 (1,1) 한쌍의 가상정보만이 발생한 것으로 판단하고, 가상 삼각형에 대해서는 td 데이터를 복호화하지 않는다.
2. 가지(branch)에서 가상비트 유무 판별
도 18c와 같이 분기 삼각형(branching triangle)에서 분할이 된 경우, 가상 잎 삼각형(leaf triangle) 두 개가 더해진다. 따라서, tt데이터의 끝에서 세 번째 삼각형이 분기 삼각형이고 수학식 4를 만족하면, (trun, tleaf)에서 (1,1)인 두 쌍의 가상비트 정보가 존재하므로, 마지막 2개의 잎 삼각형(leaf triangle)에 대해서는 td 데이터는 복호화하지 않는다.
2.5 다각형(Polygon) 메쉬에서의 데이터 분할
위상기하학적 서져리(topological surgery)에서는 다각형으로 구성된 메쉬정보를 코딩하기 위하여 먼저 다각형 정보를 삼각형으로 재구성한다. 도 19는 이 예를 보여 주는데 실선은 원 다각형 메쉬의 실제에지, 점선은 다각형을 삼각형을 나누기 위하여 더해진 가상에지를 나타낸다. 다각형을 삼각형으로 나누기 위하여 가상에지가 더해지는데 이를 복호화기에서 원래의 다각형으로 복원하기 위해서는 가상에지를 제거하기 위한 정보가 전송되어야 한다. 이 정보를 다각형 에지(polygon edge) 정보라 한다. 삼각형 하나당 다각형 에지(polygon edge) 정보 하나가 보내질 경우, 1이면 실제에지를, 0이면 가상에지를 표시한다.
기존의 방법에서는 다각형 에지(polygon edge) 정보는 메쉬에 포함된 다각형들을 삼각형 메쉬화한 후 첫번째 삼각형을 제외한 모든 삼각형의 개수만큼 발생시킨다. 여기서, 부호화기는 첫번째 삼각형을 실제에지로 설정하므로 복호화기에서는 첫번째 삼각형의 다각형 에지(polygon edge) 정보를 1로 가정하고 복원시킨다.
그러나, 도 20b와 같이 삼각형이 아닌 다각형 내부에서 파티션화를 위해 데이터를 분할시켜야 할 경우, 기존의 방법하에서는 메쉬정보를 복원할 수 없는 문제가 발생한다. 또한, 이로 인해 패킷크기를 만족하도록 메쉬 데이터를 분할하는데 있어 제약을 두게 되어 부호화 효율을 저하시키는 요인으로도 작용한다.
따라서, 한 파티션이 가상 에지 상에서 시작될 경우엔 파티션 내에 정의되는 다각형 에지(polygon edge) 정보를 파티션의 첫번째 삼각형에 대해서도 정의해 주어야만 상기의 제약 및 단점을 없앨 수 있다. 도 20에서 tt는 삼각형 런정보, tm은 마칭(marching) 정보, pe는 다각형 에지(polygon edge)의 정보, 아래 첨자는 tt에 해당하는 동일 순서에서의 tm과 pe를 의미, n은 삼각형의 개수를 의미한다. 도 20d는 다각형 메쉬를 실제에지 상에서만 분할하는 경우의 문법으로서, 도 20c가 대응되며, 도 20e는 다각형 메쉬를 가상 에지 상에서 분할하는 것이 허용되는 경우의 문법으로서, 도 20b의 경우가 대응된다.
따라서, 본 발명에서는 실제 에지에서 분할을 하는 것을 기본으로 하되, 경우에 따라서 다각형 내부에서 분할되어도 복원가능하도록 하는 문법을 제공한다. 이에 각 파티션에서의 다각형 에지(polygon edge)의 처리는 다음과 같이 파티션의 형태 정보 pt를 이용하거나 triangulated와 polygon_edge 정보를 이용하는 방법으로 정의할 수 있다.
1. 파티션의 분할된 형태 정보 pt에 따른 처리 방법
(1) 제0파티션유형(pt=0)인 경우, 첫번째 다각형 에지값은 코딩하지 않는다.
(2) 제2파티션유형(pt=2)이고 한 파티션 내의 메쉬에서 하나 이상의 다각형이 존재할 경우(triangulated=0)에만 첫번째 다각형 에지값을 코딩한다.
2. triangulated와 polygon_edge 정보에 따른 처리 방법
(1) 실제 에지 상에서 분할할 경우 파티션 내의 첫번째 다각형 에지값은 코딩하지 않는다.
(2) 가상 에지 상에서 분할을 허용할 경우 파티션 내의 첫번째 다각형 에지값을 코딩한다.
여기서, 임의의 다각형에서 실제 예지와 가상 에지의 판별은 다음과 같은 조건식에 따라 정의된다.
if(triangulated==1) 실제에지
else if(polygon_edge==0) 가상에지
else 실제에지
따라서, 복호화기에선 triangulated가 0일 경우, 첫번째 다각형에지값(polygon_edge)을 무조건 복원해서 그 값이 0이면 첫번째 다각형 에지값으로, 1이면 두번째 다각형에지값으로 지정시켜준다.
triangulated라는 정보는 한 파티션 내의 메쉬에 다각형이 하나 이상 존재하면 0, 그렇지 않으면 1을 표시하여 파티션 단위로 1비트 정보를 구성한다.
2.6 방향성 정보(orientation)에 따른 데이터 분할방법
제1절에서 정의한 방향성 정보의 필요성 및 정의방법은 데이터 분할하는 경우에도 동일하게 적용된다. 단, 여기서 추가적으로 고려할 사항은 제2.4절과 같이 가상 연결성분을 이용하는 경우, 종속트리에서도 분할이 가능하기 때문에 이전 파티션에 손실이 발생하여 복원이 되지 않는 경우 복원할 현재 파티션의 메쉬가 메인(main) 가지에 연결된 것인지, 부가지(sub branch)에 연결된 것인지를 판단할 수 없다는 점이다. 따라서, 바운딩 루프 인덱스의 계산 오류가 유발되고, 복원 및 렌더링이 이루어지지 않는다는 문제가 발생할 수 있다는 것이다.
따라서, 본 발명에서는 방향성 정보를 실제 메쉬의 연결성분 내에서 정의하는 방법과 동일한 방법으로 가상 연결성분 내에서도 모두 정의함으로써 가상 연결성분 내에서 독립적으로 복원 및 렌더링을 할 수 있게 한다.
2.7 바운딩 루프 정보(vi)를 포함한 데이터 분할방법
바운딩 루프 정보에는 실제 꼭지점의 기하정보에 대한 인덱스 값들이 매핑되어 있어 바운딩 루프의 인덱스만 알면 삼각형의 꼭지점의 실제 좌표값 매핑시켜 알 수가 있다. 따라서, 손실이 발생한 파티션의 재전송이 없을 경우, 도 9에 정의한 것 같이 다음에 복원할 파티션들은 파티션의 시작 위치에 있는 삼각형에 대한 바운딩 루프 인덱스 정보를 알 수 없어 복원이 불가능하다. 이런 비효율성을 막기 위해서는 각각의 파티션들이 독립적으로 복원 및 렌더링이 가능하도록 해주어야 한다. 이를 위해서는 각 파티션들 내에 있는 첫번째 삼각형이 시작되는 바운딩 루프상에서의 시작 위치값을 반드시 지정해 주어야 한다.
복호화기에서 메쉬를 복원하는 과정 중 vg는 다음에 복원할 삼각형들의 각 꼭지점들 값을 바운딩 루프이라는 테이블에 저장시키는 작업을 한다. 이때, 각 삼각형의 꼭지점의 인덱스값은 도 21와 같이 시작 위치에 있는 삼각형의 꼭지점의 인덱스값을 1만큼 증감한 값으로 테이블에 저장된다. 따라서, 파티션의 첫번째 삼각형 꼭지점의 바운딩 루프에서의 인덱스만 결정할 수 있다면, 다음에 복원할 나머지 삼각형의 꼭지점은 첫번째 삼각형 꼭지점의 바운딩 루프 인덱스에서 1만큼 증감시켜서 결정할 수 있다.
따라서, 본 발명에서는 파티션의 첫번째 삼각형의 꼭지점들의 바운딩 루프 인덱스만을 각 해당 파티션마다 지정해 줌으로써 파티션들 각각에 대한 독립성을 보장할 수 있게 한다. 아울러, 본 발명에서 정의한 vi는 도 9처럼 좌측 인덱스(left index)와 우측 인덱스(right index) 두가지 인덱스 정보로 구성된다. 이에 대한 비트스트림 구성은 도 22와 같다. 도 22에서 L(left index)은 삼각형 스트립의 왼쪽 경계 위의 첫번째 꼭지점의 바운딩 루프에서의 인덱스, R(right index)은 오른쪽 경계에서의 첫번째 꼭지점의 바운딩 루프에서의 인덱스를 의미한다.
한편, 비트스트림이 컴팩트 디스크(CD)와 같은 저장매체를 통해 순차적 순서로만 수신되거나 복원될 경우에 바운딩 루프의 인덱스는 연결성분(CC)별로 0에서 시작하여 바운딩 루프의 크기 사이에 존재하므로, 각 파티션의 헤더 부분에 주는 인덱스 값도 그 사이 값으로 정의해 주면된다. 이것은 바운딩 루프과 tt/td 쌍 정보가 정확히 일대일 대응관계이며, 항상 vg 다음에 tt/td 쌍의 순서로 부호화되기 때문에 가능하다. 그러나, 전송매체의 특성에 따라서는 전송 지연으로 인한 송신순서와 수신순서가 다른 경우가 발생하거나, 아예 비트스트림의 손실이 발생할 수도 있다. 이럴 경우 tt/td 쌍과 대응되는 vg 정보가 순차적 순서로만 수신되거나 복원된다고 보장할 수 없기 때문에, 이 경우에 한해서는 인덱스값을 다른 식으로 지정해야 할 필요가 있다. 도 21은 다각형 메쉬가 여러 개의 연결성분들을 가지는 경우의 바운딩 루프과 tt/td 쌍의 관계를 보여준다. 여기서, 첫번째 열은 연결성분별로 바운딩 루프이 독립적으로 인덱싱하는 경우, 두번째 열은 현재 바운딩 루프의 인덱싱을 이전 바운딩 루프의 마지막 값에 연속해 증가시키는 경우를 보여준다. 도 23a 및 도 23b는 이 두 가지 경우에 대해 인덱스 정보를 지정하는 방법들의 차이를 보여준다. 예를 들어, 첫번째 연결성분의 바운딩 루프의 크기가 n1, 두번째 연결성분의 바운딩 루프의 크기가 n2일때, 두번째 연결성분의 파티션을 위한 인덱스값은 도 23a 및 도 23b와 같이 두가지 방식으로 인덱스 정보가 헤더에 주어진다. 도 23a는 연결성분별 바운딩 루프 인덱싱을 하는 경우의 파티션의 헤더 정보를 나타내고, 도 23b는 메쉬 전체에 걸쳐서 바운딩 루프 인덱싱을 하는 경우의 파티션의 헤더 정보를 나타낸다.
2.8 기하정보를 고려한 데이터 분할방법
지금까지는 데이터 파티션을 주로 모델의 연결 정보를 위주로 본 발명을 기술하였다. 여기서는 기하정보의 파티션간 상호 독립성 보장과 부호화 효율을 향상시킬 수 있는 방법에 대해 기술한다. 데이터를 분할할 때, 각 삼각형의 꼭지점이 이전 파티션에 포함된 삼각형의 꼭지점과 접해 있는 경우, 그 기하정보가 이미 부호화된 것인지 아닌지에 대한 정보가 필요하다. 이는 visited 표시자에 의해 정의되는데, visited가 1이면 이미 부호화된 경우를, 0이면 부호화되지 않은 경우를 나타낸다. 일반적으로, 이전 파티션과 현재 파티션에 모두 사용되는 기하정보들은 두 파티션의 경계에서 나타나고, 현재 파티션을 부호화할 경우 이전 파티션의 경계에 위치한 기하정보는 모두 visited=2로 정의되어 있다. 이와 같은 점을 고려하면 다음과 같은 부호화 방법이 가능하다.
1. 도 24a에서와 같이 현재 파티션에서는 이전 파티션에서 방문하지 않은 기하정보에 대해서만 부호화하는 방법.
2. 도 24b에서와 같이 이전의 다른 파티션에서 코딩이 된 정보를 현재 파티션에서 중복되게 부호화함으로써 이전 파티션과 독립적으로 현재 파티션만으로도 기하정보를 복원 가능하도록 하는 방법.
3. 도 24c에서와 같이 이전의 다른 파티션에서 이미 부호화된 기하정보들 중에서 현재 파티션에서 새로 나타나는 여러개의 기하정보와 연결되어 나타나는 중요한 기하정보에 대해서만 중복되게 부호화하는 방법.
4. 도 24d에서와 같이 이전 파티션과 현재 파티션에 중복되어 나타나는 기하정보는 일반적으로 삼각형 스트립의 한 경계면에서 연속되어 나타나므로, 중복되는데이터를 샘플링하여 중복되는 데이터의 반은 이전 파티션에서, 남은 반은 현재 파티션에서 부호화하는 방법.
도 24a 내지 도 24d에서 회색원은 이미 방문된 기하정보, 검은원은 이전 파티션과 현재 파티션에서 중복 부호화되는 기하정보이고, 흰원은 아직 방문되지 않은 기하정보를 의미하고, 굵은 검은 실선은 파티션의 경계를 나타낸 것이다.
이러한 방법들 각각은 다음과 같은 장단점을 갖고 있다.
▶ 1번 방법은 구현이 용이하고 부호화 효율이 좋으나, 예측할 주변 기하정보가 다른 방법에 비해 상대적으로 적어 정확도가 저하될 가능성이 크다.
▶ 2번 방법은 구현이 용이하고 주변 모든 기하정보를 참조할 수 있어 정확도는 상대적으로 높으나, 중복되게 부호화함으로써 부호화 효율면에선 가장 떨어진다.
▶ 3번 방법은 압축율을 유지하고 기하정보의 손실도 적으나, 경계면 주변에서의 연결정보의 특성을 미리 파악해야 하기 때문에 구현이 어렵고, 복잡도가 증가한다.
▶ 4번 방법은 2번 방법의 단점은 보완될 수 있으나, 렌더링에서 지연시간이 발생한다. 이는 1, 2, 3번 방법은 그 자체만으로 즉각적인 복원 및 렌더링이 가능하지만, 4번 방법은 생략된 값들을 주변 기하정보를 이용해 보간하든지, 그렇지 않으면 다음 파티션이 복원될 때 비로소 렌더링이 가능하기 때문이다.
한편, 1번과 2번 두 방법은 실제 데이터를 분할할 때 각 파티션마다 적응적으로 적용시킬 수 있다. 즉, 부호화 효율 및 파티션간 상호 독립성 보장을 고려해데이터 분할의 시작과 끝 위치가 메인줄기에 있는 파티션은 이전에 부호화된 파티션들에서 방문정보를 정확히 알 수 있기 때문에 1번 방법으로, 데이터 분할의 시작과 끝 위치가 종속트리에 있는 파티션은 이전 파티션에 손실이 발생해 복원되지 못했을 때 경우 방문정보를 알 수 없기 때문에 2번 방법을 적용해 파티션화시킬 수 있다. 본 발명에서는 각 파티션의 헤더 정보에 위에서 언급한 기하정보 부호화 방법에 관한 정보를 제공하는데, 위의 1과 2번 방법만을 적응적으로 적용할 경우 1비트의 경계 예측(boundary prediction) 표시자를 이용해 0이면 1번 방법으로, 1이면 2번 방법으로 기하정보가 부호화된 파티션임을 표시한다. 도 24e는 경계 예측(boundary prediction) 표시자가 헤더 정보에 포함된 구조의 문법을 보여준다.
2.9 위치정보의 예측 부호화 방법
메쉬의 예측 부호화 방법은 임의의 한 꼭지점의 위치정보(=d)를 이미 부호화된 인접한 삼각형의 세 꼭지점들(a, b, c)의 위치정보를 이용해 예측(=d')하고, 예측된 값과 실제값의 차를 부호화하여 부호화 효율을 높일 수 있게 하는 것을 목적으로 한다. 이와 같은 예측 방법은 수학식 5와 같이 정의될 수 있다.
한편, 이와 같은 위치정보의 예측방법은 경계 예측(boundary predicition) 값에 따라 그 방법을 달리해야 한다. 이는 예측에 사용되는 인접한 삼각형의 세 꼭지점의 이용 여부가 경계 예측(boundary predicition)의 방법에 따라 달라지기 때문에 파티션 단위의 독립적 복원을 모든 방법에 대해 보장시킬 수 없기 때문이다. 따라서, 본 발명에서는 경계 예측(boundary predicition) 값이 1일때, 즉 중복이 허용되는 경우에는 주변 인접 꼭지점들의 visited 정보만을 이용해 기존의 방법과 동일하게 예측 부호화 방법을 적용하게 하고, 0일 경우, 즉 중복이 허용되지 않고 자체 파티션내의 위치정보만으로 예측 부호화를 해야 할 경우엔 수학식 6과 같이 예측 부호화를 수행하게 하는 방법을 제시한다.
if(a,b,c 모두 이용못하는 경우) d'=0
else if(a,b,c중 한 개만 이용할 수 있는 경우) d'=t
else if(a,b,c중 두 개만을 이용할 수 있는 경우) {
if(정점 두 개 각각의 거리가 d에 대해 1인 경우) d'=(t1+t2)/2
else if(한 개의 정점(=t1) 거리만 d에 대해 1인 경우) d'=t1
else d'=t2
} else d'=f(a,b,c)
여기서 t는 a, b, c 세 꼭지점 중 이용할 수 있는 임의의 한 꼭지점을, t1과 t2는 a, b, c중 이용할 수 있는 두 꼭지점을 의미한다.
2.10 기하정보 및 화상정보의 비트스트림 구성 및 처리방법
기하정보와 색상정보, 법선 정보 및 텍스쳐 좌표 등의 화상정보를 부호화하는 방식은 다음과 같다. 먼저, 도 25a와 같이 삼각형의 마칭 비트 하나가 나타날 때마다 관련된 특성정보를 부호화하는 방식으로, 복호화기에서 마칭 비트와 다각형 에지(polygon edge)정보 각각 한개를 복원하면 그 즉시 삼각형의 렌더링이 가능하다는 특징이 있다. 다른 한 방법은 한 데이터 파티션안에 나타나는 모든 특성정보들을 도 25b와 같이 정보 특성별로 분리하여 부호화하는 방법이다. 이와 같은 문법하에서 실제 화상정보를 부호화하기 위한 흐름도는 도 26처럼 나타난다. 도 26에 의하면, 기하정보 부호화 방법으로는 도 24a와 도 24b에 도시된 방식들을 혼용하고, 도 25a의 문법체계를 이용하는 방식을 도시한 것이다.
1. 경계 예측(boundary prediction) 방법을 결정한다(401 단계). 즉, 도 24a 방식으로 부호화할지, 도 24b의 방식으로 부호화할지를 결정한다.
2. 루트(root) 삼각형-파티션에서 처음 나타나는 삼각형-을 부호화한다(402 단계).
3. 루트 기하정보를 부호화한다(403 단계).
4. 다음 삼각형으로 이동한다(405 단계).
5. 삼각형의 각 꼭지점에 대해 이전 파티션에서 방문된 것인지를 판단하고(407 단계), 부호화 되지 않았다면 현재 파티션에서 부호화된 것인지를 판단하여(409 단계), 부호화되지 않았으면 이를 부호화한다(410 단계).
6. 꼭지점이 이전 파티션에서 부호화되었거나, 경계 예측(boundary prediction) 값이 1이면(408 단계), 이 값이 현재 파티션에서 이미 부호화되었는지를 판단하여(409 단계), 부호화되지 않았을 경우 부호화한다(410 단계).
7. 위 4에서 6까지의 과정을 마지막 삼각형을 부호화할 때까지 반복 처리한다.
도 27은 다각형 3차원 모델을 파티션 단위로 분할하여 부호화하는 전체적인순서도이다.
이하에서 본 발명에 의한 이하에서 점진적인 삼차원 메쉬정보 및 손실에 대한 탄력성을 구현하기 위한 부호화 문법의 일실시예를 표시한다.
3차원 메쉬에 대한 압축된 비트스트림은 글로벌 정보를 지닌 헤더 데이터 블록과 이에 뒤따르며 각각 3차원 메쉬의 하나의 연결성분(connected component)에 관련된 일련의 연결성분 데이터 블록들로 구성되어 있다.
3D Mesh Header CC Data #1 CC Data #nCC
만약, 3차원 메쉬가 에러 탄력적인 모드에서 부호화되면, 연결성분 데이터 블록들은 파티션으로 그룹화 또는 분할된다.
Partition #1 Partition #2 Partition #nPT
각 연결성분 데이터 블록은 꼭지점 그래프 레코드, 삼각형 트리 레코드 및 삼각형 데이터 레코드의 세가지 레코드들로 구성된다.
삼각형 트리 레코드는 simple 다각형을 형성하는 대응하는 연결성분의 모든 삼각형들을 링크하는 삼각형 스패닝 그래프의 구조를 지닌다. 다각형 메쉬는 비트 스트림에서 삼각형으로 나뉘어진 형태로 표현되는데, 그것은 또한 원래의 페이스(face)를 재생하는데 필요한 정보를 지닌다. 꼭지점 그래프 레코드는 현재의 연결성분 뿐만 아니라 이전에 복호화된 연결성분 내에서 원래의 연결정보를 재생하기 위한 simple 다각형의 경계 에지들의 쌍들을 꿰매는데 필요한 정보를 지닌다. 그 연결정보는 (연결성분당의)글로벌 정보와 (삼각형당의)로컬 정보로 분할된다. 글로벌 정보는 꼭지점 그래프와 삼각형 트리 레코드들에 저장된다. 로컬 정보는 삼각형 데이터 레코드에 저장된다. 삼각형 데이터는 삼각형 단위에 기초하여 정렬되는데, 삼각형들의 순서는 삼각형 트리의 방문(traverse)에 의해 결정된다.
주어진 삼각형에 대한 데이터는 다음과 같이 구성된다.
marching pattern td_orientation polygon_edge coord Normal color texCoord
marching 패턴, td_orientation 및 polygon_edge는 삼각형 단위의 연결 정보를 구성한다. 다른 필드들은 꼭지점 좌표들(coord) 및 선택적으로 법선(normal), 색상(color) 및 텍스쳐 좌표(texCoord) 정보를 재생하기 위한 정보를 지닌다.
▶ 3D_Mesh_Object
3D_MO_start_code : 이것은 동기 목적으로 사용되는 길이 16의 유일한 코드이다. 이 코드의 값은 항상 '0000 0000 0010 0000'이다.
▶ 3D_Mesh_Object_Layer
3D_MOL_start_code : 이것은 동기 목적으로 사용되는 길이 16의 유일한 코드이다. 이 코드의 값은 항상 '0000 0000 0011 0000'이다.
mol_id : 이 8비트의 부호없는 정수는 단계별 메쉬(mesh object layer:MOL)에 대한 유일한 식별자를 나타낸다. 값 0은 베이스 단계(base layer)를 나타내고, 0보다 큰 값은 정련 단계(refinement layer)를 나타낸다. 3D_Mesh_Object_Header 뒤의 최초의 3D_Mesh_Object_Layer는 mol_id=0이어야 하고, 동일한 3D_Mesh_Object를 갖는 차후의 3D_Mesh_Object_Layer들은 mol_id>0이어야 한다.
cgd_n_vertices는 3차원 메쉬의 현재 해상도에서의 꼭지점들의 개수이다. 계산을 줄이기 위해 사용된다.
cgd_n_triangles는 3차원 메쉬의 현재 해상도에서의 삼각형들의 개수이다. 계산을 줄이기 위해 사용된다.
cgd_n_edges는 3차원 메쉬의 현재 해상도에서의 에지(edge)들의 개수이다. 계산을 줄이기 위해 사용된다.
▶ 3D_Mesh_Object_Base_Layer
3D_MOBL_start_code : 이것은 동기 목적으로 사용되는 길이 16의 유일한 코드이다. 그것은 또한 오류 탄력성을 위해 사용되는 파티션의 세가지 다른 유형들을 나타내기 위해 사용된다.
mobl_id : 이 8비트의 부호없는 정수는 메쉬 객체 성분(mesh object component)에 대한 유일한 식별자를 나타낸다.
one_bit : 이 불값(boolean value)은 항상 참이다.
last_component : 이 불값(boolean value)은 복호화할 연결성분(connected component)들이 더 있는지 여부를 나타낸다. 만약 last_component가 참(true)이면, 마지막 성분은 복호화되었다. 그렇지 않으면, 복호화할 성분들이 더 있다. 이 필드는 산술적으로 부호화된다.
codap_last_vg : 이 불값(boolean value)은 현재 vg가 파티션에서 마지막 vg인지 여부를 나타낸다. 파티션에서 복호화되어야할 vg들이 더 있으면, 거짓(false)이 된다.
codap_vg_id : 이 부호없는 정수는 tt/td 쌍이 사용하여야 할 꼭지점 그래프의 식별자를 나타낸다. 이 값의 길이인 log_vgid_len은 이전의 partition_type_1에서 복호화된 vg의 vg_number를 로그 취한 값이다. 만약, 이전의 partition_type_1에 단 하나의 vg만이 있다면, codap_vg_id는 부호화되지 않는다.
codap_left_bloop_idx : 이 부호없는 정수는 파티션에서 재생되어야 할 삼각형 스트립을 위해 경계 루프 테이블(bounding loop table)에서의 좌측 시작 인덱스를 나타낸다. 이 값의 길이인 log_bloop_len는 경계 루프 테이블(bounding loop table)의 크기 값을 로그 취한 값이다.
codap_right_bloop_idx : 이 부호없는 정수는 파티션에서 재생되어야 할 삼각형 스트립을 위해 경계 루프 테이블(bounding loop table)에서의 우측 시작 인덱스를 나타낸다. 이 값의 길이인 log_bloop_len는 경계 루프 테이블(bounding loop table)의 크기 값을 로그 취한 값이다.
codap_bdry_pred : 이 불 플래그(boolean flag)는 둘 이상의 파티션들에서 공통인 기하정보와 화상정보를 어떻게 예측할 것인지를 나타낸다. 만약 codap_bdry_pred가 '1'이면 모든 공통 정보가 현재 파티션에서 예측되고, 그렇지않으면 공통정보는 단지 한 파티션에서만 예측된다.
▶ 3D_Mesh_Object_Header
ccw : 이 불값(boolean value)은 복호화되는 페이스(face)들의 꼭지점 순서가 역시계방향의 순서를 따르는지 여부를 나타낸다.
convex : 이 불값(boolean value)은 모델이 볼록한지 여부를 나타낸다.
solid : 이 불값(boolean value)은 모델이 견고한지 여부를 나타낸다.
creaseAngle : 이 6비트의 부호없는 정수는 크리스 각(crease angle)인지 여부를 나타낸다.
▶ coord_header
coord_binding : 이 2비트 부호없는 정수는 3차원 메쉬에 대한 꼭지점 좌표의 결합을 나타낸다. 유일하고 허용되는 값은 '01'이다.
coord_bbox : 이 불값(boolean value)은 기하정보(geometry)에 대하여 바운딩 상자(bounding box)가 제공되는지 여부를 나타낸다. 바운딩 상자가 제공되지 않으면, 디폴트가 사용된다.
coord_xmin, coord_ymin, coord_zmin : 이 부동소숫점 값들은 기하정보가 놓인 바운딩 상자의 하위 좌측 구석을 나타낸다.
coord_size : 이 부동소숫점 값은 바운딩 상자의 크기를 나타낸다.
coord_quant : 이 5비트의 부호없는 정수는 기하정보에 대한 양자화 스텝(quantization step)을 나타낸다.
coord_pred_type : 이 2비트 부호없는 정수는 메쉬의 꼭지점 좌표들을 재생하기 위해 사용되는 예측의 형태를 나타낸다.
coord_nlambda : 이 2비트 부호없는 정수는 기하정보를 예측하기 위해 사용되는 선조(ancestor)들의 개수를 나타낸다. coord_nlambda에 대해 허용가능한 값들은 3이다. 표 46는 coord_pred_type의 기능으로서 허용가능한 값들을 보여준다.
coord_lambda : 이 부호없는 정수는 예측을 위한 선조들에 주어지는 가중치를 나타낸다. 이 필드에서 사용되는 비트들의 수는 coord_quant+3과 같다.
▶ normal_header
normal_binding : 이 2비트 부호없는 정수는 3차원 메쉬에 대한 노멀(normal)들의 결합을 나타낸다. 허용가능한 값들은 표 47에 기술된다.
normal_bbox : 이 불값(boolean value)은 항상 거짓('0')이어야 한다.
normal_quant : 이 5비트의 부호없는 정수는 노멀에 대해 사용되는 양자화 스텝(quantization step)을 나타낸다.
normal_pred_type : 이 2비트 부호없는 정수는 어떻게 노멀 값들이 예측되는지를 나타낸다.
normal_nlambda : 이 2비트 부호없는 정수는 노멀들을 예측하기 위해 사용되는 선조(ancestor)들의 개수를 나타낸다. normal_nlambda에 대해 허용가능한 값들은 1, 2, 3이다. 표 50는 normal_pred_type의 기능으로서 허용가능한 값들을 보여준다.
normal_lambda : 이 부호없는 정수는 예측을 위한 선조들에 주어지는 가중치를 나타낸다. 이 필드에서 사용되는 비트들의 수는 normal_quant+3과 같다.
▶ color_header
color_binding : 이 2비트 부호없는 정수는 3차원 메쉬에 대한 색상(color)들의 결합을 나타낸다. 허용가능한 값들은 표 51에 기술된다.
color_bbox : 이 불값(boolean value)은 색상들에 대해 바운딩 상자가 주어지는지 여부를 나타낸다.
color_xmin, color_ymin, color_zmin : 이 부동소숫점 값들은 알.지.비(RGB) 공간 내의 바운딩 상자의 하위 좌측 코너의 위치를 나타낸다.
color_size : 이 부동소숫점 값은 색상 바운딩 상자의 크기를 나타낸다.
color_quant : 이 5비트의 부호없는 정수는 색상에 대해 사용되는 양자화 스텝(quantization step)을 나타낸다.
color_pred_type : 이 2비트 부호없는 정수는 어떻게 색상들이 예측되는지를 나타낸다.
color_nlambda : 이 2비트 부호없는 정수는 색상들을 예측하기 위해 사용되는 선조(ancestor)들의 개수를 나타낸다. color_nlambda에 대해 허용가능한 값들은 1, 2, 3이다. 표 54은 color_pred_type의 기능으로서 허용가능한 값들을 보여준다.
color_lambda : 이 부호없는 정수는 예측을 위한 선조들에 주어지는 가중치를 나타낸다. 이 필드에서 사용되는 비트들의 수는 color_quant+3과 같다.
▶ texCoord_header
texCoord_binding : 이 2비트 부호없는 정수는 3차원 메쉬에 대한 텍스쳐(texture)들의 결합을 나타낸다. 허용가능한 값들은 표 55에 기술된다.
texCoord_bbox : 이 불값(boolean value)은 텍스쳐들에 대해 바운딩 상자가 주어지는지 여부를 나타낸다.
texCoord_xmin, texCoord_ymin, texCoord_zmin : 이 부동소숫점 값들은 2차원 공간 내의 바운딩 상자의 하위 좌측 코너의 위치를 나타낸다.
texCoord_size : 이 부동소숫점 값은 텍스쳐 바운딩 상자의 크기를 나타낸다.
texCoord_quant : 이 5비트의 부호없는 정수는 텍스쳐에 대해 사용되는 양자화 스텝(quantization step)을 나타낸다.
texCoord_pred_type : 이 2비트 부호없는 정수는 어떻게 색상이 예측되는지를 나타낸다.
texCoord_nlambda : 이 2비트 부호없는 정수는 텍스쳐들을 예측하기 위해 사용되는 선조(ancestor)들의 개수를 나타낸다. texCoord_nlambda에 대해 허용가능한 값들은 1, 2, 3이다. 표 58은 texCoord_pred_type의 기능으로서 허용가능한 값들을 보여준다.
texCoord_lambda : 이 부호없는 정수는 예측을 위한 선조들에 주어지는 가중치를 나타낸다. 이 필드에서 사용되는 비트들의 수는 texCoord_quant+3과 같다.
▶ Cgd_header
cgd_n_proj_surface_spheres는 사출된 표면구들(Projected Surface Spheres)의 개수이다. 전형적으로, 이 개수는 1과 같다.
cgd_x_coord_center_point는 사출된 표면구(Projected Surface Sphere)의 중심점(전형적으로, 객체의 무게 중심점)의 x좌표이다.
cgd_y_coord_center_point는 사출된 표면구(Projected Surface Sphere)의 중심점(전형적으로, 객체의 무게 중심점)의 y좌표이다.
cgd_z_coord_center_point는 사출된 표면구(Projected Surface Sphere)의 중심점(전형적으로, 객체의 무게 중심점)의 z좌표이다.
cgd_normalized_screen_distance_factor는 사출된 표면구(Projected Surface Sphere)의 반경과 비교하여 가상 스크린이 어디에 위치하는지를 나타낸다. 사출된 표면구(Projected Surface Sphere)의 중심점과 가상 스크린 사이의 거리는 Radius/(Normalized_Screen_Distance_Factor+1)과 같다. cgd_radius는 각 사출된 표면구(Projected Surface Sphere)에 대하여 기술되나,cgd_normalized_screen_distance_factor는 단 한번 기술된다.
cgd_radius는 사출된 표면구(Projected Surface Sphere)의 반경이다.
cgd_min_proj_surface는 대응하는 사출된 표면구(Projected Surface Sphere)에 관한 최소의 사출된 표면값이다. 이 값은 종종(그러나, 반드시 그러한 것은 아니다) cgd_proj_surface 값들 중 하나와 동일하다.
cgd_n_proj_points는 사출된 표면이 전송될 사출된 표면구(Projected Surface Sphere) 상의 점들의 개수이다. 다른 모든 점들에 대하여, 사출된 표면은 선형 보간에 의해 결정된다. cgd_n_proj_points는 전형적으로 최초의 사출된 표면구(Projected Surface Sphere)에 대해서는 작고(예들들면, 20), 추가적인 사출된 표면구들(Projected Surface Spheres)에 대해서는 매우 작다(예를들면, 3).
cgd_sphere_point_coord는 8면체 내의 점 위치에 대한 인덱스이다.
cgd_proj_surface는 cgd_sphere_point_coord에 의해 기술된 점 내의 사출된 표면이다.
▶ vertex graph
vg_simple : 이 불값(boolean value)은 현재의 꼭지점 그래프가 simple한지 여부를 지정한다. simple vertex graph는 어떠한 루프도 포함하지 않는다. 이 필드는 산술적으로 부호화된다.
vg_last : 이 불 플래그는 현재의 런이 현재의 브랜칭 꼭지점으로부터 시작하는 마지막 런인지 여부를 나타낸다. 이 필드는 각 브랜칭 꼭지점의 첫 번째 런, 즉, skip_last 변수가 참(true)일 때에는 부호화되지 않는다. 현재의 꼭지점 런에대하여 vg_last의 값이 부호화되지 않은 경우에는 거짓(false)인 것으로 간주된다. 이 필드는 산술 부호화된다.
vg_forward_run : 이 불 플래그는 현재의 런이 새로운 런인지 여부를 나타낸다. 만약 그것이 새로운 런이 아니라면, 그것은 그래프 내의 루프를 나타내는 미리 방문된(traversed) 런이어야 한다. 이 필드는 산술 부호화된다.
vg_loop_index : 이 부호없는 정수는 현재의 루프가 연결된 런에 대한 인덱스를 나타낸다. 그것의 단일(unary)의 표현은 산술 부호화된다. 만약 변수 openloops가 vg_loop_index와 같다면, 그 단일의 표현에서 뒤따르는 '1'은 삭제된다.
vg_run_length : 이 부호없는 정수는 현재의 꼭지점 런의 길이를 나타낸다. 그것의 단일의 표현은 산술 부호화된다.
vg_leaf : 이 불 플래그는 현재의 런의 마지막 꼭지점이 립(leaf) 꼭지점인지 여부를 나타낸다. 만약 그것이 립 꼭지점이 아니라면, 그것은 브랜칭(분기) 꼭지점이다. 이 필드는 산술 부호화된다.
vg_loop : 이 불 플래그는 현재의 런의 립이 루프를 나타내며 그 그래프의 브랜칭 꼭지점에 연결되었는지 여부를 나타낸다. 이 필드는 산술 부호화된다.
▶ triangle_tree
branch_position : 이 정수의 변수는 삼각형 트리에서 마지막 브랜치 위치를 저장하기 위해 사용된다.
tt_run_length : 이 부호없는 정수는 현재의 삼각형 런의 길이를 나타낸다. 그것의 단일의 표현은 산술 부호화된다.
tt_leaf : 이 불 플래그는 현재의 런의 마지막 삼각형이 립(leaf) 삼각형인지 여부를 나타낸다. 만약 그것이 립 삼각형이 아니라면, 그것은 브랜칭 삼각형이다. 이 필드는 산술 부호화된다.
triangulated : 이 불 값은 현재의 연결성분이 삼각형들만 포함하는지 여부를 나타낸다. 이 필드는 산술 부호화된다.
marching_triangle : 이 불 값은 삼각형 트리에서의 삼각형의 위치에 의해 결정된다. 삼각형이 잎 또는 가지이면 marching_triangle=0이고, 그렇지 않으면 marching_triangle=1이다.
marching_pattern : 이 불 플래그는 삼각형 런 내부의 에지(edge)들의 마칭(marching) 패턴을 나타낸다. 0은 왼쪽으로부터의 진행(march)을 나타내고, 1은 오른쪽으로부터의 진행을 나타낸다. 이 필드는 산술 부호화된다.
polygon_edge : 이 불 플래그는 현재 삼각형의 베이스가 3차원 메쉬 객체의 재생할 때 유지되어야 하는 에지인지 여부를 나타낸다. 만약 현재 삼각형의 베이스가 유지되지 않는다면, 그것은 버려진다. 이 필드는 산술 부호화된다.
codap_branch_len: 이 부호없는 정수는 파티션에서 재생되어야 할 분기삼각형의 Y-vertex 인덱스값을 계산하기 위해 분기삼각형의 한쪽가지에 있는 종속트리의 총 크기를 나타낸다. 이 값의 길이는 경계 루프 테이블(bounding loop table)의 크기 값을 로그 취한 값이다.
▶ triangle
td_orientation : 이 하나의 비트 프래그는 복호화기에 가지에서의 tt/td 쌍의 방문순서를 알려준다. 이 필드는 산술 부호화된다.
visited : 이 변수는 현재 꼭지점이 방문되었는지 여부를 나타낸다.
no_ancestors : 이 불 변수는 현재 꼭지점의 예측을 위해 사용되는 선조가 없을 때 참이 된다.
coord_bit : 이 불 값은 기하정보(geometry) 비트의 값을 나타낸다. 이 필드는 산술 부호화된다.
coord_heading_bit : 이 불 값은 헤딩 기하정보(heading geometry) 비트의 값을 나타낸다. 이 필드는 산술 부호화된다.
coord_sign_bit : 이 불 값은 기하정보 샘플의 부호를 나타낸다. 이 필드는 산술부호화된다.
coord_trailing_bit : 이 불 값은 트레일링 기하정보 비트의 값을 나타낸다. 이 필드는 산술부호화된다.
normal_bit : 이 불 값은 노멀(normal) 비트의 값을 나타낸다. 이 필드는 산술부호화된다.
normal_heading_bit : 이 불 값은 헤딩 노멀 비트의 값을 나타낸다. 이 필드는 산술부호화된다.
normal_sign_bit : 이 불 값은 노멀 샘플의 부호를 나타낸다. 이 필드는 산술부호화된다.
normal_trailing_bit : 이 불 값은 트레일링 노멀 비트의 값을 나타낸다. 이 필드는 산술부호화된다.
color_bit : 이 불 값은 색상 비트의 값을 나타낸다. 이 필드는 산술부호화된다.
color_heading_bit : 이 불 값은 헤딩 색상 비트의 값을 나타낸다. 이 필드는 산술부호화된다.
color_sign_bit : 이 불 값은 색상 샘플의 부호를 나타낸다. 이 필드는 산술부호화된다.
color_trailing_bit : 이 불 값은 트레일링 색상 비트의 값을 나타낸다. 이 필드는 산술부호화된다.
texCoord_bit : 이 불 값은 텍스쳐 비트의 값을 나타낸다. 이 필드는 산술부호화된다.
texCoord_heading_bit : 이 불 값은 헤딩 텍스쳐 비트의 값을 나타낸다. 이 필드는 산술부호화된다.
texCoord_sign_bit : 이 불 값은 텍스쳐 샘플의 부호를 나타낸다. 이 필드는 산술부호화된다.
texCoord_trailing_bit : 이 불 값은 트레일링 텍스쳐 비트의 값을 나타낸다. 이 필드는 산술부호화된다.
▶ 3DMeshObject_Refinement_Layer
3D_MORL_start_code : 이것은 동기 목적으로 사용되는 길이 16의 유일한 코드이다. 이 코드의 값은 항상 '0000 0000 0011 0010'이다.
morl_id : 이 8비트 부호없는 정수는 포리스트(forest) 분할 성분에 대한 유일한 식별자이다.
connectivity_update : 이 2바이트 변수는 포리스트 분할 동작이 메쉬의 연결정보의 정련의 결과인지 여부를 나타낸다.
pre_smoothing : 이 불 값은 현재의 포리스트 분할 동작이 총체적으로 꼭지점 위치들을 예측하기 위한 사전 평활화 단계(pre-smoothing step)을 사용하는지 여부를 나타낸다.
post_smoothing : 이 불 값은 현재의 포리스트 분할 동작이 양자화 가공물을 제거하기 위한 사후 평활화 단계(post-smoothing step)을 사용하는지 여부를 나타낸다.
stuffing_bit : 이 불 값은 항상 참이다.
other_update : 이 불 값은 꼭지점 좌표에 대한 갱싱과 포리스트의 어떠한 트리에도 부수하여 일어나지 않는 페이스들과 코너들에 관련된 특징들이 비트스트림에 따르고 있는지 여부를 나타낸다.
▶ pre_smoothing parameters
pre_smoothing_n : 이 정수 값은 사전 평활화 필터(pre-smoothing filter)의 반복횟수를 나타낸다.
pre_smoothing_lambda : 이 부동소숫점 값은 사전 평활화 필터(pre-smoothing filter)의 첫 번째 매개변수이다.
pre_smoothing_mu : 이 부동소숫점 값은 사전 평활화 필터(pre-smoothingfilter)의 두 번째 매개변수이다.
▶ post_smoothing parameters
post_smoothing_n : 이 정수 값은 사후 평활화 필터(post-smoothing filter)의 반복횟수를 나타낸다.
post_smoothing_lambda : 이 부동소숫점 값은 사후 평활화 필터(post-smoothing filter)의 첫 번째 매개변수이다.
post_smoothing_mu : 이 부동소숫점 값은 사후 평활화 필터(post-smoothing filter)의 두 번째 매개변수이다.
▶ fs_pre_update
pfs_forest_edge : 이 불 값은 에지가 지금까지 만들어진 포리스트에 추가되어야 한다는 것을 나타낸다.
▶ smoothing_constraints
smooth_with_sharp_edges : 이 불 값은 데이터가 평활화 불연속 에지들(smoothing discontinuity edges)을 표시하는 비트스트림에 포함되었는지 여부를 나타낸다. 만약 smooth_with_sharp_edges==0이면, 어떤 에지도 평활화 불연속 에지(smoothing discontinuity edge)로서 표시되어 있지 않다. 만약 평활화 불연속 에지들(smoothing discontinuity edges)이 표시되어 있다면, 사전 평활화 필터(pre-smoothing filter)들 및 사후 평활화 필터(post-smoothing filter)들은 이들을 고려한다.
smooth_with_fixed_vertices : 이 불 값은 평활화 과정동안 움직이지 않는데이터가 비트스트림에 포함되었는지 여부를 나타낸다. 만약 smooth_with_fixed_vertices==0이면, 어떤 꼭지점도 움직이는 것이 허용되지 않는다. 만약 고정된 꼭지점들이 표시되어 있다면, 사전 평활화 필터(pre-smoothing filter)들 및 사후 평활화 필터(post-smoothing filter)들은 이들을 고려한다.
smooth_sharp_edge : 이 불 값은 대응하는 에지가 평활화 불연속 에지(smoothing discontinuity edge)로 표시되어 있는지 여부를 나타낸다.
smooth_fixed_vertex : 이 불 값은 대응하는 꼭지점이 고정된 꼭지점인지 아닌지 여부를 나타낸다.
본 발명에 의하면, 전송 중 에러가 발생하더라도 에러가 발생한 부분만 재전송함으로써 네트웍의 부담과 전송시간을 줄일 수 있고, 전송된 일부의 연결정보, 기하정보, 그리고 특성정보를 이용해 삼차원 메쉬를 점진적으로 복원할 수 있다.

Claims (83)

  1. 다각형 삼차원 메쉬를 점진적으로 복원할 수 있도록 부호화하는 방법에 있어서,
    (a) 다각형 삼차원 메쉬(MO)를 하나 이상의 연결성분들로 단편화하는 단계;
    (b) 각 연결성분에 대하여 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 생성하는 단계; 및
    (c) 각 연결성분에 대하여 그 연결성분을 구성하는 꼭지점 그래프 정보 및삼각형트리/삼각형데이터 정보를 독립적으로 복호화될 수 있는 형식을 갖는 기본메쉬(MOBL)의 형식에 맞추어 부호화하는 단계를 포함함을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  2. 제1항에서, 상기 (a)단계는
    다각형 삼차원 메쉬(MO)를 다수의 단계별 메쉬(MOL)로 분류하고, 각 단계별 메쉬(MOL)로 분류된 다각형 삼차원 메쉬를 하나 이상의 연결성분들로 단편화하는 단계임을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  3. 제1항에서, 상기 (c)단계에서
    하나의 연결성분을 구성하는 삼각형트리/삼각형데이터 정보가 기본메쉬(MOBL)의 형식에 맞추어지지 않을 정도로 큰 경우에는 상기 삼각형트리/삼각형데이터 정보를 독립적으로 복호화될 수 있는 형식을 갖는 데이터 파티션들로 분할하여 기본메쉬(MOBL)의 형식에 맞추어 부호화하고, 다수의 연결성분들을 구성하는 정보가 기본메쉬(MOBL)의 형식에 맞추어지는 경우에는 다수의 연결성분들을 구성하는 정보를 하나의 데이터 파티션으로 합하여 기본메쉬(MOBL)의 형식에 맞추어 부호화하는 것을 특징으로 다각형 삼차원 메쉬 정보의 부호화방법.
  4. 제1항에서, 상기 삼각형트리/삼각형데이터 정보가 부호화된 기본메쉬에는
    삼각형 트리의 메인줄기에 위치한 분기삼각형이 존재하는 곳에 1 비트 크기의 방향성 표시자(td_orientation)을 구비하고, 그 방향성 표시자에 표시된 방향에 의해 상기 분기삼각형에 이어지는 종속트리들의 부호화 순서가 결정됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  5. 제4항에서, 상기 방향성 표시자(td_orientation)는
    상기 분기삼각형으로부터 이어지는 종속트리들의 크기 정보에 의해 결정됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  6. 제5항에서, 상기 종속트리들 내에서의 삼각형의 방문순서는
    모든 종속트리에 대하여 같은 방향임을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  7. 제5항에서, 상기 종속트리들 내에서의 삼각형의 방문순서는
    상기 방향성 표시자(td_orientation)의 값에 대응하여 결정됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  8. 제 1항에서, 상기 삼각형트리/삼각형데이터 정보가 부호화된 기본메쉬에는,
    삼각형 트리중 메인줄기에 위치한 분기삼각형에서 임의의 한쪽가지에 위치한 종속트리의 총 크기 정보(codap_branch_len)를 구비하고, 이 총 크기 정보에 의해 Y-꼭지점의 인덱스가 결정됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  9. 다각형 삼차원 메쉬를 점진적이고 손실탄력적으로 복원할 수 있도록 부호화하는 방법에 있어서,
    (a) 다각형 삼차원 메쉬(MO)를 하나 이상의 연결성분들로 단편화하는 단계;
    (b) 각 연결성분에 대하여 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 생성하는 단계; 및
    (c) 각 연결성분에 대하여 그 연결성분을 구성하는 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 독립적으로 복호화될 수 있도록 고정된 비트스트림 형식을 갖는 기본메쉬(MOBL)의 형식에 맞추어 부호화하는 단계를 포함함을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  10. 제9항에서, 상기 (c) 단계는
    상기 다각형 삼차원 메쉬를 구성하는 모든 연결성분들에 대하여 꼭지점 그래프 정보, 삼각형트리/삼각형데이터 정보의 순으로 배열하여 하나의 데이터 파티션으로 구성하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  11. 제9항에서, 상기 (c) 단계는
    상기 다각형 삼차원 메쉬를 구성하는 모든 연결성분들에 대응하는 꼭지점 그래프 정보를 먼저 배열하고, 모든 연결성분들에 대응하는 삼각형트리/삼각형데이터정보를 나중에 배열하여 하나의 데이터 파티션으로 구성하여 부호화하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  12. 제9항에서, 상기 (c) 단계는
    각 연결성분별로 그 연결성분을 구성하는 정보를 독립된 데이터 파티션으로 구성하여 부호화하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  13. 제9항에서, 상기 (c) 단계는
    상기 다각형 메쉬를 구성하는 모든 연결성분들에 대응하는 꼭지점 그래프 정보를 하나의 데이터 파티션으로 구성하고, 모든 연결성분들에 대응하는 삼각형트리/삼각형데이터 정보를 다른 하나의 데이터 파티션으로 구성하여 부호화하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  14. 제9항에서, 상기 (c) 단계는
    상기 다각형 메쉬를 구성하는 모든 연결성분들에 대응하는 꼭지점 그래프 정보를 하나의 데이터 파티션으로 구성하고, 각 연결성분에 대응하는 삼각형트리/삼각형데이터 정보를 각각 독립된 데이터 파티션으로 구성하되, 전송패킷의 크기에 비하여 큰 크기를 지닌 연결성분의 삼각형트리/삼각형데이터 정보는 독립적으로 복호화될 수 있는 다수의 데이터 파티션들로 분할하여 부호화하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  15. 제9항에서, 상기 (c) 단계는
    각 연결성분을 구성하는 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보별로 독립된 다수의 데이터 파티션들을 구성하여 부호화하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  16. 제9항에서, 상기 (c) 단계는
    각 연결성분에 대응하는 꼭지점 그래프 정보를 각각 독립된 데이터 파티션으로 구성하여 먼저 부호화하고, 각 연결성분에 대응하는 삼각형트리/삼각형데이터 정보를 각각 독립된 데이터 파티션으로 구성하되, 전송패킷의 크기에 비하여 큰 연결성분의 삼각형트리/삼각형데이터 정보는 독립적으로 복호화될 수 있는 다수의 분할된 데이터 파티션들로 구성하여 나중에 부호화하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  17. 제9항에서, 상기 (c) 단계는
    각 연결성분에 대응하는 꼭지점 그래프 정보별로 독립된 데이터 파티션으로 구성하고, 삼각형트리/삼각형데이터 정보별로 독립된 데이터 파티션으로 구성하여 연결성분별로 부호화하는 것을 특징으로 하는 다각형 삼차원 메쉬정보의 부호화방법.
  18. 제9항에서, 상기 (c) 단계는
    각 연결성분에 대응하는 꼭지점 그래프 정보별로 독립된 데이터 파티션으로 구성하고, 삼각형트리/삼각형데이터 정보별로 독립된 데이터 파티션으로 구성하되, 전송패킷의 크기에 비하여 큰 연결성분의 삼각형트리/삼각형데이터 정보는 독립적으로 복호화될 수 있는 형태로 분할된 데이터 파티션들로 구성하여 연결성분별로 부호화하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  19. 다각형 삼차원 메쉬를 점진적이고 손실탄력적으로 복원할 수 있도록 부호화하는 방법에 있어서,
    (a) 다각형 삼차원 메쉬(MO)를 하나 이상의 연결성분들로 단편화하는 단계;
    (b) 각 연결성분에 대하여 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 생성하는 단계; 및
    (c) 각 연결성분에 대하여 그 연결성분을 구성하는 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 독립적으로 복호화될 수 있도록 정보의 특성에 따라 가변적인 비트스트림 형식을 갖는 기본메쉬(MOBL)의 형식에 맞추어 부호화하는 단계를 포함함을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  20. 제19항에서, 상기 (c) 단계는
    상기 데이터 파티션의 시작코드 내의 일부 비트를 파티션 유형으로 사용하여 부호화된 비트스트림의 구조를 표시하는 것을 특징으로 하는 다각형 삼차원 메쉬정보의 부호화방법.
  21. 제20항에서, 상기 파티션 유형에는
    하나 또는 다수의 연결성분들에 대응하는 정보를 모아 하나의 데이터 파티션으로 구성하여 부호화하는 제0파티션유형(partition_type_0)이 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  22. 제21항에서, 상기 제0파티션유형이 부호화된 기본메쉬(MOBL)에는
    각 연결성분이 부호화된 뒤에 부호화되어야 할 연결성분이 더 존재하는지 여부를 나타내기 위한 비트(last_component)가 더 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  23. 제20항에서, 상기 파티션 유형에는
    하나 또는 다수의 연결성분에 대응하는 꼭지점 그래프 정보를 모아 하나의 데이터 파티션으로 구성하여 부호화하는 제1파티션유형(partition_type_1)이 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  24. 제23항에서, 상기 제1파티션유형이 부호화된 기본메쉬(MOBL)에는
    각 연결성분에 대응하는 꼭지점 그래프 정보가 부호화된 뒤에 부호화되어야 할 꼭지점 그래프 정보가 더 존재하는지 여부를 나타내기 위한비트(codap_last_vg)가 더 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  25. 제20항에서, 상기 파티션 유형에는
    삼각형트리/삼각형데이터 정보를 분할하여 데이터 파티션으로 구성하고 부호화하는 제2파티션유형(partition_type_2)이 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  26. 제25항에서, 상기 제2파티션유형이 부호화된 기본메쉬(MOBL)에는
    상기 삼각형트리/삼각형데이터 정보에 대응하는 꼭지점 그래프의 식별자(codap_vg_id)가 더 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  27. 제26항에서,
    상기 삼각형트리/삼각형데이터 정보가 참조할 수 있는 꼭지점 그래프가 오직 하나 뿐인 경우에는 상기 꼭지점 그래프의 식별자를 부호화하지 않는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  28. 제25항에서, 상기 제2파티션유형이 부호화된 기본메쉬(MOBL)에는
    재생되어야 할 삼각형 스트립을 위해 경계 루프 테이블(bounding looptable)에서의 시작 인덱스(codap_left_bloop_idx,codap_right_bloop_idx)가 더 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  29. 제25항에서, 상기 제2파티션유형이 부호화된 기본메쉬(MOBL)에는
    둘 이상의 데이터 파티션들에서 공통인 기하정보와 화상정보를 어떻게 예측할 것인지를 나타내는 경계예측 표시자(codap_bdry_pred)가 더 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  30. 제20항에서, 상기 파티션 유형에는
    하나의 연결성분을 하나의 데이터 파티션으로 구성하여 부호화하는 제3파티션유형(partition_type_3)이 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  31. 삼각형 삼차원 메쉬를 점진적이고 손실탄력적으로 복원할 수 있도록 부호화할 때, 삼각형 삼차원 메쉬를 데이터 파티션들로 분할하여 패킷화하는 방법에 있어서,
    (a) 삼각형 트리에 포함된 삼각형들을 차례로 방문하면서 그 삼각형에서의 총비트발생량을 계산하는 단계;
    (b) 상기 (a) 단계에서 계산된 삼각형의 총비트발생량을 누적하는 단계; 및
    (c) 상기 (b) 단계에서 누적한 값이 패킷 크기에 패킷허용치를 곱한 값보다작은 경우에는 삼각형 트리에 포함된 다음 방문 삼각형에 대하여 상기 (a) 단계 이하를 반복하고, 작지 않은 경우에는 상기 방문된 삼각형까지의 삼각형트리/삼각형데이터 정보를 데이터 파티션으로 분할하여 패킷화하는 단계를 포함함을 특징으로 하는 다각형 삼각형 메쉬의 데이터 파티션으로의 분할방법.
  32. 제31항에서, 상기 (a) 단계에서 방문된 삼각형이 분기삼각형인 경우에는,
    (d) 상기 (b) 단계에서 누적한 값에 부호화 순서에 따라 결정된 종속트리에 포함된 모든 삼각형들을 부호화한 비트발생량을 합한 값이 상기 패킷 크기에 상기 패킷허용치를 곱한 값보다 작은 경우에는 상기 (a) 단계 이하를 반복하고, 작지 않은 경우에는 상기 분기삼각형까지의 삼각형트리/삼각형데이터 정보를 데이터 파티션으로 분할하여 패킷화하는 단계를 더 포함함을 특징으로 하는 다각형 삼각형 메쉬의 데이터 파티션으로의 분할방법.
  33. 제31항에서, 상기 (a) 단계에서 방문된 삼각형이 분기삼각형인 경우에는,
    (d) 상기 (b) 단계에서 누적한 값에 부호화 순서에 따라 결정된 종속트리의 크기에 의해 추정되는 비트발생량을 합한 값이 상기 패킷 크기에 상기 패킷허용치를 곱한 값보다 작은 경우에는 상기 (a) 단계 이하를 반복하고, 작지 않은 경우에는 상기 분기삼각형까지의 삼각형트리/삼각형데이터 정보를 데이터 파티션으로 분할하여 패킷화하는 단계를 더 포함함을 특징으로 하는 다각형 삼각형 메쉬의 데이터 파티션으로의 분할방법.
  34. 다각형 삼차원 메쉬를 점진적이고 손실탄력적으로 복원할 수 있도록 부호화하는 방법에 있어서,
    (a) 다각형 삼차원 메쉬(MO)를 하나 이상의 연결성분들로 단편화하는 단계;
    (b) 각 연결성분에 대하여 꼭지점 그래프 정보 및 삼각형트리/삼각형데이터 정보를 생성하는 단계;
    (c) 각 연결성분에 대하여 그 연결성분을 구성하는 상기 꼭지점 그래프 정보를 부호화하는 단계; 및
    (d) 상기 삼각형트리/삼각형데이터 정보를 분할한 데이터 파티션들에 각각 가상 비트쌍을 추가함으로써 가상 연결성분들로 구성하여 부호화하는 단계를 포함함을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  35. 제34항에서, 상기 (d) 단계의 분할은
    삼각형 트리의 메인 줄기에서만 이루어짐을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  36. 제35항에서, 상기 (d) 단계의 분할이
    삼각형 트리의 런 또는 잎에서 이루어지는 경우에는 (trun,tleaf) 쌍에 한 쌍의 (1,1)을 추가함에 의해 가상 연결성분을 구성하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  37. 제35항에서, 상기 (d) 단계의 분할이
    삼각형 트리의 분기삼각형에서 이루어지는 경우에는 (trun,tleaf) 쌍에 두 쌍의 (1,1)을 추가함에 의해 가상 연결성분을 구성하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  38. 제34항에서,
    상기 (a) 단계 이전에 상기 다각형 삼차원 메쉬를 삼각형 삼차원 메쉬로 재구성하는 단계를 더 포함함을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  39. 제38항에서, 상기 (d) 단계의 분할은
    다각형 메쉬의 실제에지에서만 이루어지고, 상기 삼각형트리/삼각형데이터의 데이터 파티션에 포함된 첫번째 삼각형의 다각형 에지정보(pe)는 부호화하지 않는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  40. 제38항에서, 상기 (d) 단계의 분할은
    다각형 메쉬의 실제에지 및 가상에지에서 이루어지고, 상기 삼각형트리/삼각형데이터의 제0 파티션 유형에 포함된 첫번째 삼각형의 다각형 에지정보(pe)는 부호화하지 않고, 나머지 파티션 유형들에서는 부호화하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  41. 제34항에서, 상기 가상 연결성분으로 구성된 데이터 파티션 내에 존재하는 모든 분기 삼각형 중 메인 줄기에 위치하는 분기 삼각형에 대하여, 1 비트 크기의 방향성 표시자(td_orientation)을 포함함을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  42. 제34항에서, 상기 삼각형트리/삼각형데이터 정보를 분할한 데이터 파티션의 헤더에는
    이전에 복원된 데이터 파티션과는 독립적으로 복원할 수 있도록 경계 루프 테이블(bounding loop table)에서의 시작 인덱스(codap_left_bloop_idx, codap_right_bloop_idx)를 구비함을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  43. 제42항에서, 상기 시작 인덱스는
    삼각형트리/삼각형데이터 정보와 대응하는 경계 루프 테이블에서 연속적으로 복원되는 삼각형의 시작 꼭지점들에 대응하는 경계 루프에서의 매핑되는 첫 왼쪽과 오른쪽 인덱스로 정하며 경계 루프의 인덱스는 구성성분의 꼭지점의 수에 2를 더한 범위 내에서 매겨지는 것을 특징으로 하는 삼차원 메쉬 정보의 부호화 방법.
  44. 제42항에서, 상기 시작 인덱스는
    삼각형트리/삼각형데이터 정보와 대응하는 경계 루프 테이블에서 연속적으로 복원되는 삼각형의 시작 꼭지점들에 대응하는 경계 루프에서의 매핑되는 첫 왼쪽과 오른쪽 인덱스로 정하며 경계 루프의 인덱스는 전체 메쉬를 고려하여 정하는 것을 특징으로 하는 삼차원 메쉬 정보의 부호화 방법.
  45. 제34항에서, 상기 삼각형트리/삼각형데이터 정보를 분할한 데이터 파티션의 헤더에는
    상기 삼각형트리/삼각형데이터 정보에 대응하는 꼭지점 그래프의 식별자(codap_vg_id)가 더 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  46. 제34항에서, 상기 삼각형트리/삼각형데이터 정보를 분할한 데이터 파티션의 헤더에는,
    둘 이상의 데이터 파티션들에서 공통인 기하정보와 화상정보를 어떻게 예측할 것인지를 나타내는 경계예측 표시자(codap_bdry_pred)를 구비함을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  47. 제46항에서,
    상기 데이터 파티션의 시작과 끝이 삼각형 트리의 메인 줄기에 위치하는 경우에는 상기 데이터 파티션과 이전에 부호화된 데이터 파티션에 공통인 기하정보 및 화상정보를 한 데이터 파티션에서만 포함하고, 상기 데이터 파티션의 시작과 끝이 종속트리에 위치하는 경우에는 상기 데이터 파티션과 이전에 부호화된 데이터 파티션에 공통인 기하정보 및 화상정보가 존재하는가를 판별하여 존재할 경우에는 두 데이터 파티션에 상기 정보들을 모두 포함하고, 그렇지 않을 경우에는 한 데이터 파티션에만 포함하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  48. 제34항에서,
    삼각형트리/삼각형데이터 정보에 포함된 삼각형 데이터 정보에는 대응하는 삼각형 트리를 구성하는 삼각형별로 마칭정보, 기하정보 및 화상정보가 배열됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  49. 제34항에서,
    삼각형트리/삼각형데이터 정보에 포함된 삼각형 데이터 정보에는 대응하는 삼각형 트리를 구성하는 모든 삼각형들의 마칭정보, 모든 삼각형들의 기하정보 및 모든 삼각형들의 화상정보의 순으로 배열됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  50. 다각형 삼차원 메쉬를 점진적이고 손실탄력적으로 복호화하는 방법에 있어서,
    (a) 입력된 비트스트림을 기본메쉬(MOBL) 단위로 구분하는 단계;
    (b) 상기 기본메쉬(MOBL)의 파티션 유형을 판단하는 단계;
    (c) 상기 기본메쉬(MOBL)에 꼭지점 그래프 정보가 포함되어 있으면, 상기 꼭지점 그래프 정보를 복호화하여 바운딩 루프 테이블을 생성하는 단계;
    (d) 상기 기본메쉬(MOBL)에 삼각형트리/삼각형데이터 정보가 포함되어 있으면, 상기 삼각형트리/삼각형데이터 정보를 복호화하여 삼차원 메쉬를 생성하는 단계; 및
    (e) 상기 (a) 단계 내지 상기 (d) 단계를 반복함으로써 삼차원 메쉬를 생성하는 단계를 포함함을 특징으로 하는 삼차원 메쉬 정보의 복호화방법.
  51. 제50항에서, 상기 (a)단계는
    상기 입력되는 비트스트림을 다각형 삼차원 메쉬(MO) 단위로 구분하고, 다각형 삼차원 메쉬에 포함된 단계별 메쉬(MOL)의 종류를 판별하여, 복호화가 가능한 단계별 메쉬(MOL)이면, 그 단계별 메쉬 내의 비트스트림을 기본메쉬(MOBL) 단위로 구분하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  52. 제50항에서, 상기 (d) 단계에서 삼각형트리/삼각형데이터 정보를 복호화할 때,
    삼각형 트리의 메인줄기에 위치한 분기삼각형을 복호화하는 경우 방향성 표시자(td_orientation)에 표시된 방향에 의해 상기 분기삼각형에 이어지는 종속트리들의 복호화 순서가 결정함을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  53. 제52항에서, 상기 종속트리들 내에서의 삼각형의 방문순서는
    모든 종속트리에 대하여 같은 방향임을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  54. 제52항에서, 상기 종속트리들 내에서의 삼각형의 방문순서는
    상기 방향성 표시자(td_orientation)의 값에 대응하여 결정됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  55. 제52항에서, 상기 (b) 단계는
    상기 데이터 파티션의 시작코드 값에 따라 파티션 유형을 판단하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  56. 제55항에서, 상기 파티션 유형에는
    하나 또는 다수의 연결성분들에 대응하는 정보를 모아 하나의 데이터 파티션으로 구성하여 부호화하는 제0파티션유형(partition_type_0)이 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  57. 제56항에서, 상기 제0파티션유형의 기본메쉬(MOBL)를 복호화할 때,
    각 연결성분 뒤에 위치한 소정의 비트(last_component)에 의해 복호화되어야 할 연결성분이 더 존재하는지 여부를 파악하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  58. 제54항에서, 상기 파티션 유형에는
    하나 또는 다수의 연결성분에 대응하는 꼭지점 그래프 정보를 모아 하나의 데이터 파티션으로 구성하여 부호화하는 제1파티션유형(partition_type_1)이 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  59. 제58항에서, 상기 제1파티션유형의 기본메쉬(MOBL)를 복호화할 때,
    각 연결성분에 대응하는 꼭지점 그래프 정보 뒤에 위치한 소정의 비트(codap_last_vg)에 의해 복호화되어야 할 꼭지점 그래프 정보가 더 존재하는지 여부를 파악하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  60. 제55항에서, 상기 파티션 유형에는
    삼각형트리/삼각형데이터 정보를 분할하여 데이터 파티션으로 구성하고 부호화하는 제2파티션유형(partition_type_2)이 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  61. 제60항에서, 상기 제2파티션유형의 기본메쉬(MOBL)를 복호화할 때,
    상기 삼각형트리/삼각형데이터 정보 앞에 위치한 꼭지점 그래프의 식별자(codap_vg_id)에 의해 대응하는 꼭지점 그래프 정보를 식별하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  62. 제60항에서, 상기 제2파티션유형의 기본메쉬(MOBL)를 복호화할 때,
    상기 삼각형트리/삼각형데이터 정보에 대응하는 꼭지점 그래프 정보가 유일하게 확인될 수 있는 경우에는 상기 삼각형트리/삼각형데이터 정보 앞에 꼭지점 그래프의 식별자(codap_vg_id)가 위치하지 않는 것으로 판단하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  63. 제60항에서, 상기 제2파티션유형의 기본메쉬(MOBL)를 복호화할 때,
    상기 삼각형트리/삼각형데이터 정보 앞에 위치한 경계 루프 테이블에서의 시작 인덱스(codap_left_bloop_idx,codap_right_bloop_idx)에 의해 이전의 데이터 파티션과는 독립적으로 복호화함을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  64. 제60항에서, 상기 제2파티션유형의 기본메쉬(MOBL)를 복호화할 때,
    상기 삼각형트리/삼각형데이터 정보 앞에 위치한 경계예측표시자(codap_bdry_pred)에 의해 이전에 복호화한 데이터 파티션과 공통인 기하정보와 화상정보를 어떻게 예측할 것인지를 판단하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  65. 제55항에서, 상기 파티션 유형에는
    하나의 연결성분을 하나의 데이터 파티션으로 구성한 제3파티션유형(partition_type_3)이 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  66. 제 50항에서, 상기 (d) 단계에서 삼각형트리/삼각형데이터 정보를 복호화할때,
    삼각형 트리중 메인줄기에 위치한 분기삼각형을 복호화하는 경우 임의의 한쪽가지에 위치한 종속트리의 총 크기 정보(codap_branch_len)에 의해 상기 분기삼각형에서의 Y-꼭지점 인덱스를 결정함을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화 방법.
  67. 다각형 삼차원 메쉬를 점진적이고 손실탄력적으로 복호화하는 방법에 있어서,
    (a) 입력된 비트스트림을 기본메쉬(MOBL) 단위로 구분하는 단계;
    (b) 상기 기본메쉬(MOBL)의 파티션 유형을 판단하는 단계;
    (c) 상기 기본메쉬(MOBL)에 꼭지점 그래프 정보가 포함되어 있으면, 상기 꼭지점 그래프 정보를 복호화하여 바운딩 루프 테이블을 생성하는 단계;
    (d) 상기 기본메쉬(MOBL)에 삼각형트리/삼각형데이터 정보가 포함되어 있으면, 연결성분 단위로 상기 삼각형트리/삼각형데이터 정보를 복호화하여 삼각형 삼차원 메쉬를 생성하는 단계; 및
    (e) 상기 (d) 단계에서의 연결성분이 가상 연결성분인 경우 상기 (a) 단계 이하를 반복하고, 그렇지 않은 경우 삼각형 삼차원 메쉬의 생성을 완료하는 단계를 포함함을 특징으로 하는 삼차원 메쉬 정보의 복호화방법.
  68. 제67항에서, 상기 (d) 단계에서 삼각형트리/삼각형데이터 정보를 포함한 기본메쉬(MOBL)에는
    이전에 복원된 기본메쉬(MOBL)와는 독립적으로 복원할 수 있도록 경계 루프 테이블(bounding loop table)에서의 시작 인덱스(codap_left_bloop_idx, codap_right_bloop_idx)가 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  69. 제68항에서, 상기 시작 인덱스는
    삼각형트리/삼각형데이터 정보와 대응하는 경계 루프 테이블에서 연속적으로 복원되는 삼각형의 시작 꼭지점들에 대응하는 경계 루프에서의 매핑되는 첫 왼쪽과 오른쪽 인덱스로 결정되며, 경계 루프의 인덱스는 구성성분의 꼭지점의 수에 2를 더한 범위 내에서 매겨진 것을 특징으로 하는 삼차원 메쉬 정보의 복호화 방법.
  70. 제68항에서, 상기 시작 인덱스는
    삼각형트리/삼각형데이터 정보와 대응하는 경계 루프 테이블에서 연속적으로 복원되는 삼각형의 시작 꼭지점들에 대응하는 경계 루프에서의 매핑되는 첫 왼쪽과 오른쪽 인덱스로 결정되며, 경계 루프의 인덱스는 전체 메쉬를 고려하여 정해진 것을 특징으로 하는 삼차원 메쉬 정보의 복호화 방법.
  71. 제68항에서, 상기 (d) 단계에서,
    (codap_right_bloop_idx - codap_left_bloop_idx - 1)이 상기 기본메쉬(MOBL)의 삼각형트리 정보만을 복원하였을 때 발생하는 삼각형의 총갯수보다 큰 경우에는 상기 연결성분은 가상 연결성분이라 판단하는 것을 특징으로 하는 삼차원 메쉬 정보의 복호화방법.
  72. 제71항에서, 상기 (d) 단계에서 복호화된 삼각형들 중 마지막에서 세번째 삼각형이 분기삼각형이면 (trun,tleaf) 쌍에 두 쌍의 가상 삼각형이 존재하는 것으로 판단하고, 분기삼각형이 아니면 (trun,tleaf) 쌍에 두 쌍의 가상 삼각형이 존재하는 것으로 판단하여, 가상 삼각형에 대해서는 삼각형 데이터 정보를 복호화하지 않는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  73. 제67항에서,
    삼각형 삼차원 메쉬를 다각형 삼차원 메쉬로 재구성하는 단계를 더 포함함을 특징으로 하는 다각형 삼차원 메쉬 정보의 부호화방법.
  74. 제73항에서,
    부호화 과정에서의 파티션 분할이 다각형 메쉬의 실제에지에서만 이루어지고, 상기 삼각형트리/삼각형데이터의 기본메쉬(MOBL)에 포함된 첫번째 삼각형의 다각형 에지는 복호화없이 실제에지로 판단하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  75. 제73항에서,
    부호화 과정에서의 파티션 분할이 다각형 메쉬의 내부에서도 이루어지고, 상기 삼각형트리/삼각형데이터의 첫번째 기본메쉬에 포함된 첫번째 삼각형의 다각형 에지는 복호화없이 실제에지로 판단하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  76. 제67항에서,
    상기 가상 연결성분으로 구성된 기본메쉬 내에 존재하는 모든 분기 삼각형에 대하여, 분기삼각형을 복호화하는 경우 방향성 표시자(td_orientation)에 표시된 방향에 의해 상기 분기삼각형에 이어지는 종속트리들의 복호화 순서가 결정함을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  77. 제67항에서, 상기 (d) 단계에서 삼각형트리/삼각형데이터 정보를 포함한 기본메쉬(MOBL)에는
    둘 이상의 기본메쉬들에서 공통인 기하정보와 화상정보를 어떻게 예측할 것인지를 나타내는 경계예측 표시자(codap_bdry_pred)가 구비됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  78. 제77항에서, 상기 경계예측 표시자(codap_bdry_pred)가 0인 경우,
    현재 복호화되는 기본메쉬와 이전에 복호화된 기본메쉬에 공통인 모든 기하정보 및 화상정보가 현재 복호화되는 기본메쉬에는 포함되어 있지 않음을 나타내는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  79. 제78항에서,
    기하정보(d)를 이전의 데이터 파티션에서 방문된 선조들(a,b,c)에 의해 예측한 예측값(d')과 부호화된 값(e)를 이용하여 복호화할 때, 필요한 선조들 중 아무런 값도 이용할 수 없으면 예측값을 0으로 두고, 하나의 값만이 이용가능하면 그 값을 예측값으로 두고, 두 개의 값만이 이용가능하고 그 두 개의 값들 모두 현재의 꼭지점으로부터의 마디 거리가 1이면 두 값의 산술평균을 예측값으로 두고, 두 개의 값만이 이용가능하고 그 두 개의 값들 중 현재의 꼭지점으로부터의 마디 거리가1이면 값을 예측값으로 두고, 세 개의 값 모두 이용가능하면 소정의 예측방법에 의해 예측값을 결정하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  80. 제77항에서, 상기 경계예측 표시자(codap_bdry_pred)가 1인 경우,
    현재 복호화되는 기본메쉬와 이전에 복호화된 기본메쉬에 공통인 모든 기하정보 및 화상정보가 현재 복호화되는 기본메쉬에도 포함되어 있음을 나타내는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  81. 제80항에서,
    기하정보(d)를 방문된 선조들(a,b,c)에 의해 예측한 예측값(d')과 부호화된 값(e)를 이용하여 복호화할 때, 이전의 데이터 파티션에서는 어떠한 꼭지점도 방문되지 않은 것으로 가정하여 소정의 예측방법에 의해 예측값을 결정하는 것을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  82. 제67항에서,
    삼각형트리/삼각형데이터 정보에 포함된 삼각형 데이터 정보에는 대응하는 삼각형 트리를 구성하는 삼각형별의 마칭정보, 기하정보 및 화상정보의 순으로 복호화됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
  83. 제67항에서,
    삼각형트리/삼각형데이터 정보에 포함된 삼각형 데이터 정보에는 대응하는 삼각형 트리를 구성하는 모든 삼각형들의 마칭정보, 모든 삼각형들의 기하정보 및 모든 삼각형들의 화상정보의 순으로 복호화됨을 특징으로 하는 다각형 삼차원 메쉬 정보의 복호화방법.
KR1019990019619A 1998-10-02 1999-05-29 손실 탄력성을 갖는 점진적 삼차원 메쉬 정보의 부호화/복호화방법 KR100294923B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990019619A KR100294923B1 (ko) 1998-10-02 1999-05-29 손실 탄력성을 갖는 점진적 삼차원 메쉬 정보의 부호화/복호화방법

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
KR1019980041763 1998-10-02
KR19980041763 1998-10-02
KR1019980052327 1998-12-01
KR19980052327 1998-12-01
KR19990003649 1999-02-04
KR1019990003649 1999-02-04
KR1019990005239 1999-02-13
KR19990005239 1999-02-13
KR1019990019619A KR100294923B1 (ko) 1998-10-02 1999-05-29 손실 탄력성을 갖는 점진적 삼차원 메쉬 정보의 부호화/복호화방법

Publications (2)

Publication Number Publication Date
KR20000028583A KR20000028583A (ko) 2000-05-25
KR100294923B1 true KR100294923B1 (ko) 2001-09-07

Family

ID=27532284

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990019619A KR100294923B1 (ko) 1998-10-02 1999-05-29 손실 탄력성을 갖는 점진적 삼차원 메쉬 정보의 부호화/복호화방법

Country Status (1)

Country Link
KR (1) KR100294923B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101019558B1 (ko) * 2008-09-23 2011-03-08 샘솔정보기술(주) 가상현실 편집 시스템에서의 압축 방법
US9607434B2 (en) 2011-01-21 2017-03-28 Samsung Electronics Co., Ltd. Apparatus and method for encoding three-dimensional (3D) mesh, and apparatus and method for decoding 3D mesh

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101654777B1 (ko) 2010-07-19 2016-09-06 삼성전자주식회사 3차원 메쉬 가변 부호화 장치 및 방법, 그리고 3차원 메쉬 가변 복호화 장치 및 방법
KR101794537B1 (ko) 2011-01-21 2017-11-07 삼성전자주식회사 데이터 처리 장치 및 방법
US9236024B2 (en) 2011-12-06 2016-01-12 Glasses.Com Inc. Systems and methods for obtaining a pupillary distance measurement using a mobile computing device
US9483853B2 (en) 2012-05-23 2016-11-01 Glasses.Com Inc. Systems and methods to display rendered images
US9311746B2 (en) * 2012-05-23 2016-04-12 Glasses.Com Inc. Systems and methods for generating a 3-D model of a virtual try-on product
US9286715B2 (en) 2012-05-23 2016-03-15 Glasses.Com Inc. Systems and methods for adjusting a virtual try-on
KR20220078298A (ko) 2020-12-03 2022-06-10 삼성전자주식회사 적응적 증강 현실 스트리밍 제공 방법 및 이를 수행하는 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101019558B1 (ko) * 2008-09-23 2011-03-08 샘솔정보기술(주) 가상현실 편집 시스템에서의 압축 방법
US9607434B2 (en) 2011-01-21 2017-03-28 Samsung Electronics Co., Ltd. Apparatus and method for encoding three-dimensional (3D) mesh, and apparatus and method for decoding 3D mesh

Also Published As

Publication number Publication date
KR20000028583A (ko) 2000-05-25

Similar Documents

Publication Publication Date Title
US6577310B1 (en) 3D mesh coding/decoding method and apparatus for error resilience and incremental rendering
JP4452242B2 (ja) 漸進的な三次元メッシュ情報の符号化/復号化方法及びその装置
US6563500B1 (en) Progressive 3D mesh coding method and apparatus
JP4295866B2 (ja) 3次元メッシュ情報のプログレッシブ符号化/復号化方法及びその装置
JP5033261B2 (ja) 共有頂点情報を用いた低複雑度3次元メッシュ圧縮装置及び方法
KR100927601B1 (ko) 3차원 메쉬 정보의 부호화/복호화 방법 및 장치
JP4808771B2 (ja) 3次元メッシュ情報の符号化及び復号化装置ならびにその方法
KR100910031B1 (ko) 3차원 메쉬 모델의 부호화 장치, 그 방법 및 이를 기록한기록매체
KR100294923B1 (ko) 손실 탄력성을 갖는 점진적 삼차원 메쉬 정보의 부호화/복호화방법
KR20080066216A (ko) 스티칭 정보를 포함하는 3차원 메쉬 정보부호화/복호화 방법 및 장치
KR101086774B1 (ko) 저복잡도 3차원 메쉬 압축 장치 및 방법
Yan et al. Mesh segmentation schemes for error resilient coding of 3-D graphic models
CN114051730A (zh) 处理点云数据的设备和方法
CN116508318A (zh) 点云数据发送装置、点云数据发送方法、点云数据接收装置及点云数据接收方法
KR101086772B1 (ko) 양자화 기법에 기반한 3차원 메쉬 압축 장치 및 방법
Yang et al. View-dependent progressive mesh coding for graphic streaming
US20230410374A1 (en) Method and apparatus for mesh compression using point cloud coding
Smolic et al. A survey on coding of static and dynamic 3D meshes
CN117121487A (zh) 点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法
Yan et al. Error-resilient coding of 3D graphics based on morphing and volume splitting
Nordland Compression of 3D media for internet transmission
Li Progressive compression of three-dimensional graphics
Kim et al. Sequential mesh coding using wave partitioning
Balagondar Mesh compression: Theory and practice.

Legal Events

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

Payment date: 20120329

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20130328

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee