KR100561875B1 - 위치 인터폴레이터 복호화 방법 및 장치 - Google Patents

위치 인터폴레이터 복호화 방법 및 장치 Download PDF

Info

Publication number
KR100561875B1
KR100561875B1 KR1020050100897A KR20050100897A KR100561875B1 KR 100561875 B1 KR100561875 B1 KR 100561875B1 KR 1020050100897 A KR1020050100897 A KR 1020050100897A KR 20050100897 A KR20050100897 A KR 20050100897A KR 100561875 B1 KR100561875 B1 KR 100561875B1
Authority
KR
South Korea
Prior art keywords
key
data
value
dpcm
header
Prior art date
Application number
KR1020050100897A
Other languages
English (en)
Other versions
KR20050109413A (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 삼성전자주식회사
Publication of KR20050109413A publication Critical patent/KR20050109413A/ko
Application granted granted Critical
Publication of KR100561875B1 publication Critical patent/KR100561875B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/25Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding with scene description coding, e.g. binary format for scenes [BIFS] compression
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Processing Or Creating Images (AREA)

Abstract

본 발명은 키 데이터 및 키 값 데이터를 포함하는 위치 인터폴레이터를 복호화하는 방법 및 장치를 개시한다.
본 발명의 위치 인터폴레이터 복호화 장치는, 입력 비트스트림으로부터 키 데이터를 복호화하는 키 데이터 복호화기, 입력 비트스트림으로부터 키 값 데이터를 복호화하는 키 값 데이터 복호화기, 및 복호화된 키 값 데이터 및 복호화된 키 값 데이터로부터 선형 보간된 키 값 데이터를 복호화된 키 데이터와 합성하여 위치 인터폴레이터를 생성하는 인터폴레이터 합성기를 포함한다.

Description

위치 인터폴레이터 복호화 방법 및 장치{Decoding method and apparatus for position interpolator}
도 1a 는 위치 인터폴레이터의 키 데이터를 도시하고, 도 1b 는 위치 인터포레이터의 각 성분의 키 값 데이터를 도시하는 도면이다.
도 2 는 MPEG-4 BIFS의 PMFC의 부호화기 및 복호화기의 구조를 도시한 블록도이다.
도 3a 는 본 발명의 바람직한 실시예에 따른 위치 인터폴레이터 부호화 장치의 구성을 도시하는 블록도이고, 도 3b 는 본 발명의 바람직한 실시예에 따른 위치 인터폴레이터 부호화 방법을 설명하는 흐름도이다.
도 4a 내지 도 4c 는 본 발명의 바람직한 실시예에 따른 분석기의 구성을 도시하는 블록도이다.
도 5a 는 도 3b 에 도시된 S320 단계의 상세 흐름도이다.
도 5b 는 본 발명의 바람직한 실시예에 따른 리샘플링 방법을 설명하는 흐름도이다.
도 5c 는 본 발명의 바람직한 실시예에 따른 분절점 추출방법을 설명하는 흐름도이다.
도 6a 는 원 키 데이터와 리샘플링된 키 데이터를 도시하는 도면이고, 도 6b 는 원 애니메이션 경로와 리샘플링된 애니메이션 경로를 도시하는 도면이다.
도 7a 내지 도 7f 는 본 발명의 바람직한 실시예에 따른 분절점 추출방법의 일예를 도시하는 도면이다.
도 8 은 생성 모드에 따라서 분절점 추출부에서 출력되는 키 데이터 및 키 값 데이터를 설명하는 도면이다.
도 9a 는 본 발명의 바람직한 실시예에 따른 키 데이터 부호화기의 구성을 도시하는 블록도이다.
도 9b 은 도 9a 에 도시된 DND 처리부의 구성을 도시하는 블록도이다.
도 10a 내지 도 10e 는 본 발명의 바람직한 실시예에 따른 키 데이터 부호화 방법을 설명하는 흐름도이다.
도 11 은 encodeSignedAAC 함수의 일예를 도시하는 도면이다.
도 12a 내지 도 12j 는 본 발명의 바람직한 실시예에 따른 키 데이터를 부호화하기 위한 연산들이 수행된 후의 키 데이터를 도시하는 도면들이다.
도 13a 는 본 발명의 바람직한 실시예에 따른 키 값 데이터 부호화기의 구성을 도시하는 블록도이다.
도 13b 는 도 13a 에 도시된 양자화 오차 최소화부의 구성을 도시하는 블록도이고, 도 13c 는 도 13a 에 도시된 DPCM 처리부의 구성을 도시하는 블록도이다.
도 14a 내지 도 14h 는 본 발명의 바람직한 실시예에 따른 키 값 데이터 부호화 방법을 설명하는 흐름도이다.
도 15a 는 양자화된 키 값 데이터에 대해서 단순한 예측 DPCM 연산을 수행한 결과를 도시한 도면이고, 도 15b 는 동일한 양자화된 키 값 데이터에 대해서 수정된 예측 DPCM 연산 결과를 도시한 도면이다.
도 16a 는 양자화된 데이터를 도시하고, 도 16b 및 도 16c 는 도 16a 에 도시된 양자화된 데이터에 대해서 DPCM 연산 및 순환 양자화 DPCM 연산을 수행한 결과를 각각 도시한 도면이다.
도 17 은 Unary AAC 함수를 예시하는 도면이다.
도 18a 및 도 18b 는 SQ AAC 함수를 예시하는 도면이다.
도 19a 는 본 발명의 바람직한 실시예에 따른 위치 인터폴레이터 복호화기의 구성을 도시하는 블록도이고, 도 19b 는 위치 인터폴레이터 복호화 방법을 설명하는 흐름도이다.
도 20 은 본 발명의 바람직한 실시예에 따른 키 데이터 복호화기의 구성을 도시하는 블록도이다.
도 21a 및 도 21b 는 본 발명의 바람직한 실시예에 따른 키 데이터 복호화 방법을 설명하는 흐름도이다.
도 22a 는 본 발명의 바람직한 실시예에 따른 키 값 데이터 복호화기의 구성을 도시하는 블록도이고, 도 22b 는 도 22a 에 도시된 역 DPCM 처리부의 구성을 도시하는 블록도이다.
도 23a 내지 도 23e 는 본 발명의 바람직한 실시예에 따른 키 값 데이터 복호화 방법을 설명하는 흐름도이다.
도 24 는 본 발명의 바람직한 실시예에 따른 키 데이터 및 키 값 데이터의 위치 인터폴레이터 합성방법을 설명하는 흐름도이다.
도 25a 및 도 25b 는 도 3a 에 도시된 분석기에서 경로 오차를 계산하는 방법을 예시하는 도면이다.
도 26a 내지 도 26c 는 부호화할 위치 인터폴레이터와 복호화된 위치 인터폴레이터간의 오차를 계산하는 방법을 예시하는 도면이다.
도 27 은 부호화할 위치 인터폴레이터와 복호화된 위치 인터폴레이터간의 오차를 계산하는 방법을 설명하는 흐름도이다.
도 28a 내지 도 28j 는 본 발명의 바람직한 실시예에 따라 키 및 키 값 데이터를 복호화하는 위치 인터폴레이터 복호화 장치를 구현하는 프로그램 코드의 일예를 SDL 언어 형식으로 구현한 예를 도시한 도면이다.
본 발명은 3차원 애니메이션 데이터의 부호화 및 복호화에 관한 것이다. 구체적으로, 본 발명은 애니메이션 경로의 위치 정보를 나타내는 위치 인터폴레이터의 부호화 및 복호화 방법 및 장치에 관한 것이다.
키 프레임에 기반한 애니메이션 방식은 컴퓨터로 생성한 3차원 애니메이션을 표현하기 위한 가장 기본적인 기술중 하나이다. 키 프레임에 기반한 에니메이션에서, 다수의 키 프레임과 키 프레임 사이에 위치하는 프레임들이 에니메이션을 구성하고, 키 프레임들 사이에 위치하는 프레임들은 보간(interpolation) 에 의해서 채워진다.
MPEG-4 BIFS(Binary Format for Scene) 및 VRML(Virtual Reality Modelling Language)와 같은 국제 멀티미디어 표준들은 인터폴레이터 노드를 이용한 키 프레임 기반의 에니메이션을 지원한다. MPEG-4 BIFS 및 VRML 에는 여러 종류의 인터폴레이터가 있는데, 그 중 대표적인 것이 스칼라 인터폴레이터, 위치 인터폴레이터, 좌표 인터폴레이터, 회전 인터폴레이터, 법선 인터폴레이터 및 색 인터폴레이터이다. 각 인터폴레이터의 종류, 기능 및 특징은 아래의 표 1 에 나타내었다.
종 류 특 징 기 능
스칼라 인터폴레이터 스칼라 변화량의 선형 삽입 넓이, 반경, 강도 등의 표현
위치 인터폴레이터 3차원 좌표상의 선형 삽입 3차원 공간상의 평행 이동
회전 인터폴레이터 3차원 좌표축과 회전량의 선형삽입 3차원 공간상의 회전
좌표 인터폴레이터 3차원 모델의 좌표 변화량과 선형 삽입 3차원 모핑(morphing)
법선 인터폴레이터 3차원 법선 좌표의 선형 삽입 3차원 법선 벡터의 변화 표현
색 인터폴레이터 색상 정보의 선형 삽입 색상 변화량의 표현
상기 표 1 에 기재된 인터폴레이터 중 하나인 위치 인터폴레이터는 키 프레임 기반의 에니메이션 방식에서 애니메이션 경로의 위치 정보를 나타내는 것으로, 키(Key) 및 키 값(Key-Value) 필드로 구성된다. 키 필드는 (-∞,+∞) 범위에서 키 프레임이 위치하는 시간을 불연속적인 숫자로 표현한다. 키 값 필드는 각각의 키가 나타내는 시간에 객체의 위치 정보를 나타내며, 3차원 공간을 표현하는 x, y 및 z 의 세 가지 성분 데이터를 갖는다. 따라서, 키 값 필드는 키 필드와 동일한 개수의 키 값을 포함한다.
위치 인터폴레이터의 일 예가 도 1a 및 도 1b 에 도시되어 있다. 도 1a 는 키 데이터를 도시하고, 도 1b 는 키 값 데이터를 도시한다.
MPEG-4 BIFS 및 VRML 는 선형 보간을 이용하므로, 선형 인터폴레이터를 이용하여 매끄럽고 자연스러운 에니메이션을 구현하기 위해서는 매우 많은 양의 키 데이터와 키 값 데이터가 요구된다. 또한, 이러한 매끄럽고 자연스러운 에니메이션을 저장하거나 전송하기 위해서는 대용량의 저장장치 및 많은 시간이 필요하다. 따라서, 이들 인터폴레이터의 저장 및 전송을 위해서는 인터폴레이터를 압축하는 것이 효과적이다. MPEG-4 BIFS 에서는 인터폴레이터 노드를 부호화하고 복호화하는 방법으로 PMFC(Predictive MF Coding)이라 칭해지는 방법이 있다.
도 2 는 MPEG-4 BIFS의 PMFC의 부호화기 및 복호화기의 구조를 도시한 도면이다.
도 2 에 도시된 종래의 부호화 장치와 같이, PMFC 방법은 양자화기, DPCM(Differential Pulse Code Modulation) 및 엔트로피 부호화기를 이용하여 위치 인터폴레이터의 키 및 키 값 데이터를 부호화한다. 양자화기 및 DPCM 모듈은 키 및 키 값 데이터의 중복성을 제거하고, DPCM 모듈의 출력은 엔트로피 부호화기로 출력된다. 그러나, 이 방법은 일반적인 DPCM 연산에 의해서 얻어진 차분 데이터를 엔트로피 부호화하므로 부호화 효율이 높지 않다. 또한, 엔트로피 부호화기의 제한으로 고화질의 에니메이션을 제공하지 못한다.
본 발명이 이루고자 하는 기술적 과제는 높은 압축율과 고화질의 애니메이션을 제공할 수 있는 위치 인터폴레이터의 복호화 방법 및 장치를 제공하는 것이다.
상술한 기술적 과제를 이루기 위한 본 발명의 위치 인터폴레이터 복호화 장치는, 입력 비트스트림으로부터 키 데이터를 복호화하는 키 데이터 복호화기, 입력 비트스트림으로부터 키 값 데이터를 복호화하는 키 값 데이터 복호화기, 및 복호화된 키 값 데이터 및 복호화된 키 값 데이터로부터 선형 보간된 키 값 데이터를 복호화된 키 데이터와 합성하여 위치 인터폴레이터를 생성하는 인터폴레이터 합성기를 포함한다.
한편, 상술한 기술적 과제를 이루기 위한 본 발명의 위치 인터폴레이터 부호화 방법은, (b) 위치 인터폴레이터로 구성되는 제 1 애니메이션 경로와 제 1 애니메이션 경로로부터 추출된 분절점에 의해서 생성되는 제 2 애니메이션 경로간의 오차가 소정의 임계값 이하가 되도록 하는 최소 개수의 분절점을 상기 제 1 애니메이션 경로로부터 추출하여 부호화할 키 데이터 및 키 값 데이터를 생성하는 단계, (d) (b) 단계에서 추출된 키 데이터를 부호화하는 키 부호화 단계, 및 (e) (b) 단계에서 추출된 키 값 데이터를 부호화하는 키 값 부호화 단계를 포함한다.
또한, 상술한 기술적 과제를 이루기 위한 본 발명의 위치 인터폴레이터 부호화 방법은, (b) 위치 인터폴레이터로 구성되는 애니메이션 경로를 균일한 시간 간격을 갖는 소정수의 구간으로 샘플링하여, 리샘플링된 키 데이터 및 키 값 데이터를 포함하는 위치 인터폴레이터를 생성하는 단계, (d) (b) 단계에서 생성된 키 데이터를 부호화하는 키 부호화 단계, 및 (e) (b) 단계에서 생성된 키 값 데이터를 부호화하는 키 값 부호화 단계를 포함하는 것이 바람직하다.
또한, 상술한 기술적 과제를 이루기 위한 본 발명의 위치 인터폴레이터 복호화 방법은, (a) 입력 비트스트림으로부터 키 데이터를 복호화하는 단계, (b) 입력 비트스트림으로부터 키 값 데이터를 복호화하는 단계, 및 (c) 복호화된 키 값 데이터 및 복호화된 키 값 데이터로부터 선형 보간된 키 값 데이터를 복호화된 키 데이터와 합성하여 위치 인터폴레이터를 생성하는 단계를 포함한다.
한편, 상술한 기술적 과제를 이루기 위한 본 발명의 위치 인터폴레이터로 구성되는 경로의 분절점을 선형 근사화를 이용하여 추출하는 방법은, (a) 원래 경로의 시작점과 종료점에 대응되는 경로점을 선택하는 단계, (b) 선택된 경로점들을 제외한 경로점들 중 하나를 선택하고, 나머지 경로점들을 상기 선택된 경로점들로부터 선형으로 보간하는 단계, (c) 원래 경로와 보간된 경로점들에 의해서 생성된 경로간의 오차를 계산하는 단계, (d) (b) 및 (c) 단계를 선택되지 않은 모든 경로점들에 대해서 수행하여, 오차가 최소인 경로점을 선택하는 단계, 및 (e) (d) 단계에서 선택된 경로점을 포함하는 선택된 경로점들에 따라서 구성된 경로와 원래 경로간의 오차를 소정의 임계값과 비교하여 (b) 내지 (d) 단계를 반복 수행하는 단계를 포함한다.
또한, 상술한 기술적 과제를 이루기 위한 본 발명의 복수의 경로점들로 구성되는 제 1 및 제 2 경로간의 오차를 계산하는 방법은, (a) 경로점에 포함되는 하나의 성분 데이터를 기준으로, 제 1 및 제 2 경로가 성분 데이터가 서로 동일한 경로점들을 갖도록 제 1 및 제 2 경로상에 경로점을 삽입하는 단계, (b) 기준 성분 데이터에 따라서 경로점에 대응되도록 경로들의 구간을 분할하는 단계, (c) 각 구간 의 오차를 계산하는 단계, 및 (d) 모든 구간의 오차가 계산되었는지를 판단하여 오차를 정규화하는 단계를 포함한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 따른 위치 인터폴레이터 부호화 장치를 설명한다.
본 발명의 바람직한 실시예에 따른 부호화 장치의 구성을 도시한 블록도인 도 3a 를 참조하면, 본 발명의 부호화 장치는 분석기(40), 키 데이터 부호화기(200), 키 값 데이터 부호화기(300), 및 헤더 부호화기(400)를 포함한다.
본 발명의 바람직한 실시예에 따른 부호화 방법을 설명하는 흐름도인 도 3b를 참조하면, 부호화될 위치 인터폴레이터는 분석기(40)로 입력되고(S300), 분석기(40)는 위치 인터폴레이터를 구성하는 키 값 데이터의 x, y 및 z 각 성분의 제 1 애니메이션 경로로부터 부호화할 키 데이터 및 키 값 데이터를 각각 추출하여, 키 데이터는 키 데이터 부호화기(200)로 출력하고 키 값 데이터는 키 값 데이터 부호화기(300)로 출력한다(S320).
키 데이터를 입력받은 키 데이터 부호화기(200)는 키 데이터를 소정의 양자화 비트수로 양자화하고, 양자화된 키 데이터에 소정의 DPCM 연산을 수행하여 차분 데이터를 구한 후, 차분 데이터를 엔트로피 부호화한다(S340).
또한, 키 값 데이터를 입력받은 키 값 데이터 부호화기(300)는 키 값 데이터를 소정의 양자화 비트수로 양자화하고, 양자화된 키 데이터에 소정의 DPCM 연산을 수행하여 차분 데이터를 구한 후, 차분 데이터를 부호화한다(S360).
한편, 헤더 부호화기(400)는 키 데이터 부호화기(200) 및 키 값 데이터 부호 화기(300)로부터 복호화에 필요한 정보를 입력받아 부호화한다(S380).
이하, 분석기(40), 키 데이터 부호화기(200), 및 키 값 데이터 부호화기(300) 각각의 구성을 도시하는 도면을 참조하여, 각각의 구성 및 처리 과정을 상세히 설명한다.
도 4a 는 본 발명의 바람직한 제 1 실시예에 따른 분석기(40)의 구성을 도시하는 블록도이다. 이하에서, 분석기(40)가 부호화될 키 데이터 및 키 값 데이터를 추출하는 과정은 키 값 데이터의 x, y, 및 z 성분 각각에 대해서 수행되며, 설명의 편의를 위해서 하나의 성분의 키 값 데이터 및 이 키 값 데이터에 대응되는 키 데이터에 대한 경우만을 설명한다.
도 4a 를 참조하면, 본 발명의 바람직한 제 1 실시예에 따른 분석기(40)는 입력 위치 인터폴레이터에 따른 제 1 애니메이션 경로를 균일한 시간 간격을 갖는 소정수의 구간으로 샘플링하여, 키 부호화기, 키 값 부호화기 및 헤더 부호화기로 출력하는 리샘플링부(43), 제 1 애니메이션 경로와 제 1 애니메이션 경로로부터 추출된 분절점에 의해서 생성되는 제 2 애니메이션 경로간의 오차가 소정의 임계값 이하가 되도록 하는 최소 개수의 분절점을 제 1 애니메이션 경로로부터 추출하여 키 데이터 부호화기, 키 값 데이터 부호화기 및 헤더 부호화기로 출력하는 분절점 추출부(42), 및 입력 위치 인터폴레이터를 외부 입력 신호에 따라서 리샘플링부(43) 또는 분절점 추출부(42)로 출력하는 선택부(41)를 포함한다. 또한, 분절점 추출부(42)는 선형 보간부(42a), 오차 계산부(42b), 및 판단부(42c)를 포함한다.
도 5a 는 본 발명의 바람직한 제 1 실시예에 따른 분석기(40)의 처리과정을 도시하는 흐름도이다.
도 5a 를 참조하면, 선택부(41)는 외부로부터 위치 인터폴레이터 및, 외부의 설정신호를 입력받는다(S325). 외부로부터 입력되는 설정 신호는 부호화할 키 데이터 및 키 값 데이터를 생성하는 방법을 설정하는 신호 및 부호화할 키 데이터 및 키 값 데이터를 생성하는 모드를 설정하는 생성 신호를 포함한다.
먼저, 키 데이터 및 키 값 데이터를 생성하는 모드에 대해서 설명한다.
분석기(40)는 입력된 위치 인터폴레이터의 키 프레임을 감소시켜 전체적으로 부호화할 키 데이터 및 키 값 데이터의 양을 줄이게 된다. 이러한 분석기(40)는 외부로부터 입력된 모드 설정 신호에 따라서 애니메이션 경로 유지 모드(path-preserving mode) 및 애니메이션 키 유지 모드(key-preserving mode) 중 하나의 모드를 갖는다.
먼저, 경로 유지 모드는 위치 인터폴레이터가 애니메이션 경로의 보간을 기술하기 위해서만 이용되고, 키 프레임의 랜덤 억세스가 필요없는 경우이다. 경로 유지 모드에서는 효율적인 부호화를 위해서, 소정의 오차 범위 내에서 경로에 포함되는 위치 인터폴레이터의 키 데이터 및 대응되는 키 값 데이터를 제거하는 것이 허용된다.
한편, 키 유지 모드는 MPEG-4 의 BIFS 명령어(예컨대, replace, delete, insert 등)를 이용하여 키 프레임에 랜덤 억세스가 필요한 경우이다. 키 유지 모드에서는 인터폴레이터의 키 데이터의 개수가 그대로 유지된다. 경로 유지 모드 및 키 유지 모드의 상세한 내용에 대해서는 후술한다.
도 5a를 다시 참조하면, 선택부(41)는 외부로부터 입력된 생성 모드에 따라서 부호화할 키 및 키 값 데이터의 생성 모드를 선택한다. 또한, 선택부(41)는 입력된 생성 모드가 키 유지 모드인 경우에는 입력된 회전 인터폴레이터를 분절점 추출부(42)로 출력하고, 입력된 생성 모드가 경로 유지 모드인 경우에는 입력된 생성 방법 설정신호에 따라서 회전 인터폴레이터를 키 및 키 값 데이터의 생성에 필요한 정보와 함께 리샘플링부(43) 또는 분절점 추출부(42)로 출력한다(S330).
구체적으로, 리샘플링에 의해서 부호화할 키 및 키 값 데이터를 생성하는 경우에는 위치 인터폴레이터와 함께 샘플링할 키 데이터의 개수(즉, 시간 간격) 및 생성 모드를 리샘플링부(43)로 출력하고, 분절점 추출에 의해서 부호화할 키 및 키 값 데이터를 생성하는 경우에는 원래 경로와 분절점 추출에 의해서 생성된 경로간의 임계 오차값 및 생성 모드를 함께 출력한다.
선택부(41)로부터 입력 위치 인터폴레이터를 수신한 리샘플링부(43)는 입력 위치 인터폴레이터에 의해서 형성된 애니메이션 경로를 소정의 시간 간격으로 샘플링하여 샘플링된 키 데이터 및 키 값 데이터를 생성하고, 선택부(41)로부터 입력 위치 인터폴레이터를 수신한 분절점 추출부(42)는 입력 위치 인터폴레이터에 의해서 형성된 경로와 추출된 분절점에 의해서 생성된 경로간의 오차가 소정의 임계값 이하가 되도록 하는 최소 개수의 분절점을 추출한다(S335).
도 5b 는 본 발명의 바람직한 실시예에 따른 리샘플링부(43)의 처리과정을 도시한 흐름도이다.
도 5b 를 참조하여 리샘플링 과정을 설명한다.
리샘플링부(43)는 선택부(41)로부터 회전 인터폴레이터 및 리샘플링할 키 데이터의 개수(m)를 입력받는다(S502). 이 때, 리샘플링할 키 데이터의 개수는 사용자에 의해서 임의로 설정되거나, 미리 정의된 소정의 값이 된다.
리샘플링부(43)는 입력 위치 인터폴레이터에 의해서 형성된 원 경로의 첫 번째 및 마지막 경로점을 선택하고, 리샘플링할 키 데이터의 초기값(i)을 1 로 설정한다(S504).
그 후, 리샘플링부(43)는 소정의 시간 간격으로 i 번째 키 데이터를 생성한다(S506).
원래 키 데이터 및 리샘플링된 키 데이터를 도시한 도 6a를 참조하면, 입력 위치 인터폴레이터의 키 데이터는 키 프레임의 시간 축상의 위치를 나타내므로 단조증가 하지만, 도 6a 에 도시된 바와 같이 그 간격이 일정하지는 않다.
따라서, 도 6a 에 도시된 바와 같이, 리샘플링부(43)는 제 S504 단계에서 선택된 첫 번째 및 마지막 경로점을 나타내는 키 데이터들 간의 차를 입력된 리샘플링할 키의 개수로 나누어 시간 간격을 구하고, 구해진 균일한 시간 간격으로 키 데이터를 리샘플링한다.
리샘플링부(43)는 리샘플링에 의해서 생성된 키 데이터에 대응되는 키 값 데이터를 원래의 애니메이션 경로에서 선형으로 보간하여 생성한다(S508). 즉, 리샘플링된 키 데이터보다 시간 축상의 뒤쪽에 위치하는 키 데이터에 대응되는 키 값 데이터와 리샘플링된 키 데이터보다 시간 축상의 앞쪽에 위치하는 키 데이터에 대 응되는 키 값 데이터를 이용하여 리샘플링된 키 값 데이터를 선형으로 보간하여 키 값 데이터를 생성한다.
리샘플링부(43)는 보간에 의해서 키 데이터 및 키 값 데이터를 리샘플링한 후, 입력된 리샘플링할 모든 키 데이터에 대해서 키 데이터 및 키 값 데이터의 리샘플링이 수행되었는지를 조사하여, 모든 키 데이터 및 키 값 데이터가 리샘플링될 때까지 제 S506 및 S508 단계를 반복한다(S510).
도 5c 는 본 발명의 바람직한 제 1 실시예에 따른 분절점 추출방법을 설명하는 흐름도이고, 도 7a 내지 도 7f 는 위치 인터폴레이터 경로로부터 분절점을 추출하는 과정을 단계별로 예시하는 도면이다.
도 4a , 도 5c , 및 도 7a 내지 도 7f 를 참조하면, 본 발명의 바람직한 제 1 실시예에 따른 분절점 추출부(42)의 선형 보간부(42a)는 선택부(41)로부터 위치 인터폴레이터 및 임계 오차값(eth)을 입력받는다(S520). 입력된 위치 인터폴레이터로 구성된 경로는 도 7a 에 도시된 바와 같다.
선형 보간부(42a)는 도 7b 에 도시된 바와 같이, 입력된 위치 인터폴레이터로 구성되는 경로의 첫 번째 경로점(Q0)과 마지막 경로점(Qn)을 선택하고, 카운터(i)를 1로 설정한다(S522).
선형 보간부(42a)는 첫 번째 경로점(Q0)과 마지막 경로점(Qn) 사이의 경로점 중 하나를 임의로 또는 순차적으로 선택하고(S524), 선택되지 않은 경로점들을 선택된 경로점들로부터 선형으로 보간하고, 선택된 경로점들 및 보간된 경로점들을 오차 계산부(42b)로 출력한다(S526).
오차 계산부(42b)는 선택된 경로점들과 보간된 경로점들로 형성되는 후보 경로와 원 경로간의 오차(e)를 계산하여 판단부(42c)로 출력한다(S528). 경로간의 오차를 계산하는 방법은 후술한다.
오차 계산부(42b)는 선택되지 않은 모든 경로점들에 대해서 오차가 계산되었는지를 조사하여, 오차가 계산되지 않은 경로점이 있으면, 제 S524 단계 내지 제 S528 단계를 반복적으로 수행하여 모든 선택되지 않은 점들에 대해서 원 경로와의 오차를 계산하게 된다(S530).
도 7c 은 상술한 제 S524 단계 및 S530 단계를 도시하는 도면으로서, 선형 보간부(42a)는 먼저 k1 시간에 해당되는 키 데이터에 대해서 분절점 Q1 선택하고, Q1 과 Qn 사이의 경로점들을 선형으로 보간하여 후보 1 경로를 생성하고, 오차 계산부(42b)는 원 경로와 후보 1 경로간의 오차(e1)를 계산하였다. 그 후, 상술한 과정을 반복하여 선형 보간부(42a)는 분절점 Qk 선택하고, Q0 과 Qk 사이의 경로점들 및 Qk 와 Qn 사이의 경로점들을 선형으로 보간하여 후보 k 경로를 생성하고, 오차 계산부(42b)는 원 경로와 후보 k 경로간의 오차(ek)를 계산하였다.
한편, 선택되지 않은 모든 경로점에 대해서 오차가 계산되면, 모든 경로점들에 대한 오차는 판단부(42c)로 입력되고, 판단부(42c)는 오차가 최소인 경로점을 선택하고, 카운터(i)를 1 만큼 증가시킨다(S532).
판단부(42c)는 제 S532 단계에서 선택된 분절점에 따른 오차(e)가 입력된 소정의 임계 오차값(eth)보다 크고, 카운터가 첫 번째 경로점(Q0)과 마지막 경로점(Qn) 사이의 경로점의 개수에 해당하는 키 데이터의 개수(n)보다 큰지를 조사한다(S534).
만약, 계산된 오차가 임계 오차값보다 작다면, 부호화에 필요한 분절점이 모두 추출된 것을 의미하고, 카운터가 나타내는 선택된 분절점의 개수가 n 과 같다면 모든 원 경로상의 모든 경로점들이 분절점으로 선택되었음을 의미하므로 분절점 추출 과정은 종료된다.
그러나, 선택된 분절점의 수가 n 보다 작고, 선택된 분절점들에 의한 오차가 임계 오차값보다 크다면 분절점을 더 추출해야 하므로 선택된 분절점들을 선형 보간부(42a)로 출력하여 제 S524 단계 내지 S532 단계를 반복 수행한다.
이하, 분석기(40)의 선택부(41)로 입력된 부호화할 키 데이터 및 키 값 데이터 생성 모드가 경로 유지 모드인 경우에 리샘플링부(43) 및 분절점 추출부(42)로부터 키 데이터 부호화기(200) 및 키 값 데이터 부호화기(300)로 출력되는 데이터에 대해서 살펴본다.
리샘플링부(43)는 샘플링된 키 데이터 및 키 값 데이터를 모두 부호화할 키 및 키 값 데이터로 키 데이터 부호화기(200) 및 키 값 데이터 부호화기(300)로 출력한다.
이하, 도 8을 참조하여 생성 모드에 따라서 분절점 추출부(42)에서 출력되는 키 데이터 및 키 값 데이터에 대해서 설명한다.
도 8 에 도시된 바와 같이, 최종적으로 추출된 분절점이 0, 3, 6, 및 8 이라고 할 때, 경로 유지 모드에서 분석기(40)는 분절점 0, 3, 6, 및 8에 해당되는 키 데이터 및 키 값 데이터만을 출력한다.
그러나, 키 유지 모드에서 분석기(40)는 0 내지 8 의 모든 키 데이터를 부호화할 데이터로서 출력하고, 분절점 0, 3, 6, 및 8 에 해당되는 키 값 데이터는 키 선택 플래그와 함께 출력한다. 키 선택 플래그는 다음의 표 2 에 나타내었다.
원 경로의 키 데이터 P0 P1 P2 P3 P4 P5 P6 P7 P8
키 선택 플래그 1 0 0 1 0 0 1 0 1
지금까지, 본 발명의 바람직한 제 1 실시예에 따른 분석기(40)의 구성을 설명하였다. 본 발명의 기술분야의 통상의 지식을 가진자는 상술한 제 1 실시예에 따른 분석기(40)의 구성 중 선택기(41) 및 리샘플링부(43)를 생략하고 분절점 추출부(42)만으로 분석기(40)를 구성할 수 있으며, 또한, 분석기(40)의 구성 중 선택기(41) 및 분절점 추출부(42)를 생략하고 리샘플링부(43)만으로 분석기(40)를 구성할 수 있음을 알 수 있을 것이다.
이하, 도 4b를 참조하여 본 발명의 바람직한 제 2 실시예에 따른 분석기(40)를 설명한다.
도 4b를 참조하면, 제 2 실시예에 따른 분석기(40)는 입력 위치 인터폴레이터를 입력받아 리샘플링하는 리샘플링부(45), 및 리샘플링된 위치 인터폴레이터의 분절점을 추출하여 부호화할 키 데이터 및 키 값 데이터를 출력하는 분절점 추출부(46)를 포함한다. 또한, 분절점 추출부(46)는 상술한 제 1 실시예의 분절점 추출부(46)와 동일하게 선형 보간부(46a), 오차 계산부(46b), 및 판단부(46c)를 구비한다.
본 발명의 제 2 실시예에 따른 분석기(40)로 위치 인터폴레이터가 입력되면, 리샘플링부(45)는 외부로부터 입력된 모드 설정 신호에 따라서, 입력된 위치 인터폴레이터에 의해서 구성되는 제 1 애니메이션 경로를 균일한 시간 간격을 갖는 소정수의 구간으로 리샘플링한다.
리샘플링부(45)는 리샘플링된 키 데이터 및 키 값 데이터로 구성된 위치 인터폴레이터를 분절점 추출부(46)의 선형 보간부(46a)로 출력한다.
선형 보간부(46a)는 상술한 도 5c 의 제 S522 단계 내지 제 S526 단계를 수행하여 위치 인터폴레이터를 보간하여 오차 계산부(46b)로 출력하고, 오차 계산부(46b)는 제 S528 및 제 S530 단계를 수행하여, 보간된 위치 인터폴레이터에 의해서 구성되는 제 2 애니메이션 경로와 제 1 애니메이션 경로간의 오차를 계산한다. 판단부(46c)는 오차가 최소인 경로점을 선택하고, 선택된 경로점에 따른 오차가 임계 오차값(eth) 보다 큰지 여부 및 모든 경로점이 선택되었는지 여부를 조사하여 부호화할 키 데이터 및 키 값 데이터를 생성한다.
따라서, 제 2 실시예에 따른 분석기(40)에 포함된 리샘플링부(45) 및 분절점 추출부(46)의 동작은 제 1 실시예의 리샘플링부(45) 및 분절점 추출부(46)의 동작과 거의 유사하다. 다만, 분절점 추출부(46)가 리샘플링부(45)로부터 출력된 키 및 키 값 데이터로 구성되는 위치 인터폴레이터를 입력받고, 리샘플링부(45)로부터 입력된 위치 인터폴레이터에 의해서 구성되는 애니메이션 경로에 대해서 분절점 추출을 수행한다는 점에서만 상술한 제 1 실시예의 부호화할 키 및 키 값 데이터 선택과정과 다르다.
이하, 도 4c 를 참조하여 본 발명의 바람직한 제 3 실시예에 따른 분석기(40)를 설명한다.
도 4c를 참조하면, 제 3 실시예에 따른 분석기(40)는 입력 위치 인터폴레이터를 입력받아, 위치 인터폴레이터에 의해서 구성되는 제 1 애니메이션 경로로부터 분절점을 추출하여 키 데이터 및 키 값 데이터를 출력하는 분절점 추출부(48), 및 분절점 추출부(48)로부터 입력된 키 데이터 및 키 값 데이터로 구성되는 위치 인터폴레이터에 의해서 구성되는 제 2 애니메이션 경로를 소정의 시간 간격으로 리샘플링하는 리샘플링부(49)를 포함한다. 또한, 분절점 추출부(48)는 상술한 제 1 실시예의 분절점 추출부(48)와 동일하게 선형 보간부(48a), 오차 계산부(48b), 및 판단부(48c)를 구비한다.
제 3 실시예에 따른 분절점 추출부(48)는 상술한 제 1 실시예와 동일하게 키 데이터 및 키 값 데이터를 추출하여 리샘플링부(49)로 출력한다.
리샘플링부(49)는 입력된 키 데이터 및 키 값 데이터로 구성되는 위치 인터폴레이터에 의해서 형성된 경로를 소정의 일정한 시간 간격으로 리샘플링하여 부호화할 키 데이터 및 키 값 데이터를 출력한다. 리샘플링부(49)의 기능은 상술한 제 1 및 제 2 실시예의 리샘플링부(49)의 기능과 유사하므로 자세한 설명은 생략한다.
상술한 제 1 내지 제 3 실시예에 따른 분석기(40)에서 출력된 키 데이터 및 키 값 데이터는 각각 키 데이터 부호화기(200) 및 키 값 데이터 부호화기(300)로 입력된다.
이하, 도 9a 내지 도 12j 를 참조하여 본 발명의 바람직한 실시예에 따른 키 데이터 부호화기(200)를 설명한다.
도 9a 는 본 발명의 바람직한 실시예에 따른 키 데이터 부호화기의 구성을 도시하는 도이다.
본 발명의 키 데이터 부호화기(200)는 선형 키 부호화기(900), 양자화기(910), DPCM 처리부(920), 쉬프팅부(930), 폴딩 처리부(940), DND 처리부(950) 및 엔트로피 부호화기(960)를 포함한다.
선형 키 부호화기(900)는 전체 키 데이터의 범위에서 키 데이터가 선형으로 증가하는 영역을 식별하여 부호화한다. 양자화기(910)는 양자화 오차를 최소화하는 방법을 이용하여 입력된 키 데이터를 양자화한다. DPCM 처리부(920)는 양자화된 키 데이터를 수신하고, 키 데이터의 차분 데이터를 생성한다. 쉬프팅부(930)는 모든 차분 데이터에서 가장 높은 빈도수의 차분 데이터를 감산한다. 폴딩 처리부(940)는 모든 차분 데이터를 양수 또는 음수의 영역으로 이동시킨다. DND 처리부(950)는 디바이드, 디바이드-업, 및 디바이드-다운의 3가지 연산을 선택적으로 수행하여 키 데이터의 차분 데이터의 범위를 줄인다. 키 데이터에 대한 엔트로피 부호화기(960)는 비트플레인 단위로 차분 데이터를 부호화하는 SignedAAC 및 UnsignedAAC 함수를 이용하여 차분 데이터들을 부호화한다.
이하, 도 10a 을 더 참조하여 본 발명의 바람직한 실시예에 따른 키 데이터 부호화기(200)를 설명한다. 도 10a 은 본 발명의 키 데이터 부호화 방법을 설명한 흐름도이다.
키 데이터가 부호화기로 입력되면, 전체 키 데이터의 개수 및 각 키 데이터의 자리수와 같은 정보는 헤더 부호화기(400)로 입력되어 부호화되고, 입력된 키 데이터들은 선형 키 부호화기(900)에서 선형 키 영역, 즉, 일정한 시간 간격으로 키 프레임이 존재하고 키 데이터가 동일한 차를 갖게 되어, 키 데이터가 선형으로 변화하는 영역이 있는지를 검색하고, 검색된 선형 영역을 먼저 부호화한다(S9000).
3Dmax, Maya 와 같은 유명 3D 응용 소프트웨어들은 특정 영역이 일정한 시간 간격을 갖는 키를 이용하여 키 프레임 기반의 에니메이션을 생성한다. 이러한 경우에, 선형 키 데이터 영역은 선형 영역이 시작되는 키 데이터, 종료되는 키 데이터 및 사이에 존재하는 키 프레임의 개수만 알면 간단하게 키 데이터를 부호화할 수 있기 때문에, 인터폴레이터에서 특정 영역의 키의 부호화를 위해서 선형 예측을 이용하는 것은 매우 유용하다.
선형 예측에 이용되는 수식은 다음의 수학식 1 과 같다.
Figure 112005060696882-pat00001
여기서, tS 는 부분적으로 선형인 영역이 시작되는 키의 데이터를 나타내고, tE는 부분적으로 선형인 영역이 종료되는 키의 데이터를 나타내며, S 는 tS 의 인덱스를 E 는 tE 의 인덱스를 각각 나타낸다. S 번째 키 데이터 및 E 번째 키 데이터에 대응되는 특정 영역에서 수학식 1 에 따라 선형적으로 예측된 키 데이터와 실제 키 데이터간의 오차는 다음 수학식 2 에 따라서 계산할 수 있다.
Figure 112005060696882-pat00002
만약, 수학식 2 에 의해서 계산된 오차값들 중 최대 오차값이 소정의 임계값 이하라면, ti 는 [tS,tE]구간 및 소정의 오차내에서 유사 선형(co-linear)이라고 할 수 있다. 최대 오차값과 특정 영역이 유사 선형인지의 여부는 다음의 수학식 3 에 의해서 결정된다.
Figure 112005060696882-pat00003
만약,
Figure 112005060696882-pat00004
라면, ti 는 [tS,tE]구간에서 유사 선형이다. 여기서, nBits는 부호화에 이용되는 부호화 비트수를 나타낸다.
일단, 선형 키 부호화기(900)는 부분적으로 선형인 영역을 찾게되면, 영역의 시작점의 키 데이터 및 종료점의 키 데이터는 실수 변환부(905)로 출력하고, 선형 키 영역에 포함되는 키의 개수는 헤더 부호화기(400)로 출력하여 부호화한다. 이러한, 선형 부호화를 이용함으로써 부호화할 데이터의 양을 크게 줄일 수 있음을 알 수 있다. 시작 키 데이터 및 종료 키 데이터는 실수 변환부(905)에서 후술하는 실수 변환과정에 의해서 부호화된다.
실수 변환부(905)는 시작 키 데이터와 종료 키 데이터를 부호화하기 위해서 2진수 체계로 표현된 키 데이터를 10진수 체계로 변환한다.
컴퓨터는 실수(floating-point number)를 32 비트의 2진수 형태로 저장한다. 실수(floating-point number)가 2진수 형태로 입력되면, 실수 변환부(905)는 실수를 10진수 체계의 크기(이하, "맨티사(mantissa)"라 칭함) 및 10 의 거듭 제곱(이하, "지수(exponent)"라 칭함)의 형식으로 변환한다.
Figure 112005060696882-pat00005
예를 들어, 실수 12.34를 컴퓨터에서 2진수 형태로 표현하면, 다음과 같다.
Figure 112005060696882-pat00006
이 수를 전술한 수학식 4 에 따라서 10진수로 표현하면, 다음과 같다.
Figure 112005060696882-pat00007
십진수 체계의 맨티사와 지수를 비트스트림에 포함시키기 위해서는 각각이 필요한 비트수를 계산하여야 한다. 먼저, 지수는 -38 ~ 38 사이 범위의 값을 갖으므로, 지수는 부호(sign)를 포함하여 7 비트로 표현될 수 있다. 또한, 맨티사는 자리수에 따라서 필요한 비트의 수가 결정된다. 맨티사의 값과 이에 필요한 비트수(단, 부호 비트는 제외)를 다음의 표 3 에 나타내었다.
Figure 112005060696882-pat00008
한편, 상술한 과정에 의해서 검색되어 변환된 선형 키 영역의 시작 키 데이터와 종료 키 데이터는 도 10b 에 도시된 부호화 과정에 따라서 부호화되고, 헤더 부호화기(400)로 출력되어 비트스트림에 저장된다.
도 10b 는 실수 변환부(905)가 입력된 2개의 실수(floating-point number)를 부호화하는 과정을 도시한다. 도 10b를 참조하여, 실수 변환부(905)가 변환된 실수를 부호화하는 과정을 설명한다.
실수 변환부(905)는 선형 키 부호화기(900)로부터 원래 키 데이터의 자리수(original key digit, Kd), 선형 영역이 시작되는 키 데이터(Start key, S), 선형 영역이 종료되는 키 데이터(end key, E)를 입력받아 상술한 수학식 4 에 의해서 키 데이터들을 변환한다(S9040).
실수 변환부(905)는 우선 S 를 부호화하는데, S의 자릿수가 Kd 와 다른지를 판단하여, 자리수가 다르면, S의 자릿수를 구하여 헤더 부호화기(400)로 출력한다(S9042).
그 후, 실수 변환부(905)는 S 의 자리수가 7 이하이면, 소정의 비트수를(본 발명에서는, IEEE 표준 754의 floating-point number 방식으로 32bit을 사용)이용하여, S 의 자리수가 비트스트림에 포함되도록 헤더 부호화기(400)로 출력한다(S9043).
한편, S 의 자리수가 0 이 아니고 7보다 작으면, 실수 변환부(905)는 S 의 부호를 헤더 부호화기(400)로 출력하고(S9044), S의 멘티사의 절대값의 부호화에 필요한 비트수를 상기 표 3 으로부터 구하고, 구해진 비트수로 멘티사의 절대값을 헤더 부호화기(400)로 출력한다(S9045). 그 후, S의 지수를 구하고, 부호를 헤더 부호화기(400)로 출력하고, 지수를 소정의 비트수로(본 발명의 실시예에서는 6 bit로) 헤더 부호화기(400)로 출력한다(S9046). 이와 같은 키 데이터의 변환으로 인해 비트스트림에 포함되는 비트수는 대폭 감소된다.
한편, S 의 자리수가 0 이면 시작 키 데이터의 부호화 과정은 종료되고, 종료 키 데이터를 변환하기 위한 과정으로 진행한다. 왜냐하면, 자릿수가 0 이면 실수(floating-point number)는 0을 의미하므로 더 이상의 부호화과정이 필요 없기 때문이다.
실수 변환부(905)는 시작 키 데이터를 변환하여 부호화한 후 종료 키 데이터 E를 변환한다. E 의 변환은 S 의 변환과 같은 과정을 반복하되, 단 E의 지수가 S의 지수와 같은 값을 가지는지를 판별하여(S9047), 양 값이 동일하면 이를 나타내는 플래그(flag) 비트만을 헤더 부호화기(400)로 출력하고, 다르면 플래그(flag) 비트와 E의 지수를 S의 지수와 같은 방식으로 헤더 부호화기(400)로 출력한다(S9048).
한편, 입력 키 데이터에서 선형 영역을 제외한 키 데이터들은 양자화기(910)로 입력되어 소정의 양자화 비트 사이즈인 nKeyQBit 에 따라서 양자화된다.
그러나, 복호화기에서 양자화된 키 데이터를 복호화하여 이용할 때에는, 원래의 키 데이터와 양자화된 키 데이터간의 오차로 인해 원래의 키 데이터가 완전히 복원될 수 는 없다. 따라서, 본 발명의 양자화기(910)는 단순히 입력되는 키 데이터에서 최대값 및 최소값을 구하고, 구해진 값들을 이용하여 양자화할 수 있을 뿐 아니라, 양자화 오차 최소화부(915)를 포함하여, 양자화 오차를 최소화할 수 있도록 수정된 최대값 및 최소값을 이용하여 양자화할 수 있다.
양자화 오차 최소화부(915)는 양자화 오차를 최소화하기 위해서 입력된 데이터에 대해서 미리 양자화 및 역양자화를 수행하여, 양자화의 오차가 최소가 되는 양자화의 범위를 제어하는 방법을 이용한다(S9100).
구체적으로 살펴보면, 고정된 양자화에 이용될 최대값을 Max 라하고, 조절되는 양자화에 이용될 최소값을 Min라하며, Xi 를 입력 값, nQuantBit를 양자화에 이용되는 비트수라 할 때, 양자화된 입력값
Figure 112005060696882-pat00009
, 역양자화된 값
Figure 112005060696882-pat00010
, 및 오차 ei 는 각각 다음의 수학식 5 에 의해서 계산한다.
Figure 112005060696882-pat00011
오차의 합(∑ei)을 감소시키는 방법에는 두 가지가 있는데, 하나는 오차의 합이 최소가 될 때까지 Min 값을 조절하는 것이며, 다른 하나는 다음과 같다.
먼저, Δx 가 입력 데이터의 기본 스텝 사이즈이고, n 이 임의의 정수이며, εi 가 영평균 난수 노이즈(zero mean random noise)라 할 때, 입력 키 데이터 시퀀스 Xi를 Xi=(i+n)Δx+εi 와 같이 표현되는 양자화된 값이라고 가정한다.
그 후, di ≡Xi - Xi-1 = Δx +(εi i-1) 라 할 때, Δ'x = E[di] 이고, 최소 값 Min = Max - Δ'x * (2nQuantBit-1) 과 같다.
이러한 과정을 통해서 구해진 양자화 오차를 최소로 만드는 Min 값은 Max 값과 양자화기(320)로 입력되어 키 데이터의 양자화에 이용된다.
양자화 오차가 최소가되는 최대값(Max) 및 최소값(Min)을 수신한 양자화기(910)는 다음의 수학식 6 을 이용하여 키 데이터(fKeyi)의 양자화를 수행한다(S9200).
Figure 112005060696882-pat00012
여기서, i 는 양자화된 키 데이터의 인덱스를, nQKeyi 는 양자화된 데이터의 정수 배열을, fKeyi 는 입력 키 데이터로서의 실수(float) 배열을, fKeyMax 및 fKeyMin 은 양자화오차 최소화부(915)에서 수신된 최대값(Max) 및 최소값(Min)을, nKeyQBit 는 양자화 비트 사이즈를 각각 나타낸다. 한편, 상기 수학식 6에서 사용된 함수 floor(v) 는 실수 v를 입력받아 v 이하의 최대 정수를 출력하는 함수이다.
한편, 본 발명의 양자화기(910)는 상술한 양자화오차를 최소화하는 알고리즘을 이용하지 않고, 간단하게, 입력된 키 데이터 중에서 최대값(fKeyMax)과 최소값(fKeyMin)을 구하여 양자화를 수행할 수도 있다.
본 발명의 양자화 과정을 설명한 도 10c를 참조하여, 양자화과정을 자세히 살펴본다.
양자화기(910)는 키 데이터를 입력받고(S9210), 양자화오차 최소화부(915)로부터 최대값 및 최소값이 입력되었는지 여부를 조사한다(S9220).
양자화기(910)는 양자화오차 최소화부(915)로부터 최대값(MAX) 및 최소값(MIN)이 입력되었으면, 양자화에 이용할 최대값(fKeyMax) 및 최소값(fKeyMin)을 MAX 와 MIN 으로 설정하고(S9230), 설정된 최대값 및 최소값을 상술한 실수 변환부(905)로 출력한다. 양자화에 이용될 최대값 및 최소값은 상술한 실수 변환 과정을 통해서 변환되고 부호화되어 헤더 부호화기(400)로 출력되므로써, 복호화에 이용할 수 있도록 최대값과 최소값을 키 헤더에 포함된다.
양자화기(910)는 양자화오차 최소화부(915)로부터 입력된 값이 없으면, 입력된 키 데이터 중에서 첫 번째 키 데이터(fKey0)를 최소값(fKeyMin)으로, 마지막 키 데이터(fKeyN-1)를 최대값(fKeyMax)으로 설정한다(S9240).
그 후, 양자화기(910)는 설정된 최대값이 1보다 작고, 최소값이 0보다 큰 값인지를 판단하여(S9250), 그렇지 않으면, 최대값과 최소값을 상술한 실수 변환부(905)로 출력하고 상술한 과정을 통해서 변환하여 부호화한 후, 헤더 부호화기(400)로 출력하여 복호화에 이용할 수 있도록 최대값과 최소값을 키 헤더에 포함시킨다(S9260).
한편, 최대값과 최소값이 제 S9250 단계의 조건을 만족하면, 최대값과 최소값을 복호화에 이용할 수 있도록 키 헤더 데이터에 포함할지의 여부를 나타내는 플 래그를 조사한다(S9270). 만약, 플래그가 최대값과 최소값을 키 헤더에 포함하도록 설정되어 있다면, 상술한 제 S9260 단계를 수행하여 최대값(fKeyMax) 및 최소값(fKeyMin)을 부호화한 후 헤더 부호화기(400)로 출력하고, 그렇지 않다면, 양자화기(910)는 최대값과 최소값을 키 헤더에 포함시키지 않게 된다.
최대값과 최소값을 키 헤더에 포함시키지 않는 경우는, 키 데이터 부호화기(200) 및 키 데이터 복호화기가 서로 최대값을 1 로 최소값을 0으로 설정하여 부호화 및 복호화를 수행할 것을 규약한 경우에 해당되므로, 양자화기(910)는 최소값(fKeyMin)을 0 으로, 최대값(fKeyMax)을 1 로 각각 설정한다(S9280). 이렇게 설정된 양자화에 이용되는 최대값과 최소값은 이미 복호화기에 알려져 있으므로 별도로 키 헤더에 포함시키지 않는다.
한편, 양자화기(910)는 상술한 과정을 통해서 설정된 fKeyMax 및 fKeyMin를 상기 수학식 6 에 대입하여 입력된 키 데이터들을 양자화하고, 양자화된 키 데이터를 DPCM 처리부(920)로 출력한다(S9290).
양자화된 키 데이터들을 수신한 DPCM 처리부(920)는 소정 회수의 DPCM을 수행하여 최소의 산포도가 생성되는 차수 및 인트라 키 데이터는 헤더 부호화기(400)로 출력하고, DPCM 연산이 수행된 키 데이터의 차분 데이터들을 쉬프팅부(930)로 출력한다(S9300).
도 10d 을 참조하여 DPCM 처리과정을 살펴보면, DPCM 처리부(920)는 입력된 키 데이터에 대해서 먼저 소정의 회수만큼 DPCM 연산을 수행하고, DPCM 이 수행된 회수는 DPCM 차수로서 저장한다(S9310). 본 발명의 바람직한 실시예에서는 3회 의 DPCM 연산을 수행하였다.
그 후, DPCM 처리부(920)는 각 차수의 DPCM 연산 결과에 대해서 산포도를 계산한다(S9320). 이때의 산포도를 나타내는 통계값으로서 분산, 표준편차, 및 사분편차등이 이용될 수 있고, 본 발명의 바람직한 실시예에서는 사분 편차가 산포도로서 사용된다.
각 차수의 DPCM 연산 결과에 대한 산포도가 계산되면, DPCM 처리부(920)는 산포도가 최소가 되는 DPCM 차수 및 해당 차수의 DPCM 결과를 선택하여, DPCM 연산 결과는 쉬프팅부(930)로 출력하고, DPCM 차수, 각 차수의 인트라 키 데이터 및 그 외의 DPCM 연산에서 필요한 정보들은 헤더 부호화기(400)로 출력한다(S9330). 다만, 본 발명의 바람직한 실시예에서는 키의 개수가 5보다 작으면, 1 차 DPCM 만을 수행하였다. 예컨대, 1 차 DPCM 이 수행될 때에는, 다음의 수학식 7을 이용하여 DPCM 연산을 수행하였다.
Figure 112005060696882-pat00013
여기서 i 는 양자화된 키 데이터의 인덱스를, nQKeyi 는 정수 배열을, Δi는 차분 데이터를 각각 나타낸다.
한편, DPCM 처리부(920)는 선택된 DPCM 결과, 및 DPCM 된 키 데이터의 차분 데이터를 부호화할 때 필요한 비트수를 계산하여, 소정의 기억장소(본 발명의 실시예에서는 nQStep_DPCM)에 저장한다(S9340). 다만, 부호화에 필요한 비트수를 계 산하는 단계는 후술할 부호화할 키 데이터를 선택하는 단계에서 수행할 수 있음은 당업자에게 자명할 것이다.
DPCM 결과를 수신한 쉬프팅부(930)는 입력된 차분 데이터들 중에서 가장 빈도수가 높은 차분 데이터(이하, 모드라 함)를 선택하여 모든 차분 데이터에서 모드를 감산하므로써, 부호화될 데이터들이 0 주변에 집중적으로 분포되도록 하여 부호화에 필요한 비트수를 줄인다(S9400).
쉬프팅 연산은 모든 양자화된 키 데이터의 차분 데이터에 모드(nKeyShift)를 감산함으로써 수행된다. 이러한 쉬프팅 연산은 다음의 수학식 8 로 표현된다.
Figure 112005060696882-pat00014
i 는 양자화된 키 데이터의 인덱스를 나타내고, nQKeyi 는 정수 배열을 나타내며, nKeyShift는 모드값을 나타낸다. 쉬프팅 연산이 수행된 후에는, 키 데이터의 차분 데이터 중 최고 많은 빈도를 나타내는 차분 데이터는 0 이 되므로, 부호화에 필요한 비트수를 대폭 줄일 수 있다.
쉬프팅 연산이 수행된 키 데이터들은 폴딩(fold)처리부(940) 및 DND 처리부(950)로 출력되고, 모드값(nKeyShift)은 헤더 부호화기(400)로 출력되어 키 헤더에 포함된다.
쉬프팅된 데이터를 수신한 폴딩 처리부(940)는 DND 연산을 수행하기 위한 전처리 단계로서 폴딩 연산을 수행하여, 폴딩 연산된 키 데이터를 DND 처리부(950)로 출력한다(S9500).
폴딩 연산은 0 을 중심으로 음수 영역과 양수 영역으로 다양하게 분포되는 차분 데이터를 양수 영역 또는 음수 영역으로 집중시켜 차분 데이터의 범위를 줄이기 위한 것으로, 본 실시예에서는 다음의 수학식 9 에 의해서 폴딩 연산을 수행하여 차분 데이터의 분포를 양수 영역으로 집중시켰다.
Figure 112005060696882-pat00015
여기서, i 는 양자화된 키 데이터의 인덱스를 나타내고, nQKeyi 는 정수 배열을 나타낸다. 폴딩 연산에 의해서, 쉬프팅된 키 데이터의 차분 데이터 중 양수인 데이터는 짝수인 양수로, 음수인 데이터는 홀수인 양수로 각각 변환된다.
폴딩 처리부(940)는 폴딩 연산이 수행된 데이터를 부호화할 때 필요한 비트수를 계산하여 소정의 기억장소(nQStep_fold)에 저장한다. 제 S9300 단계에서와 같이, 부호화에 필요한 비트수의 계산은 후술할 엔트로피 부호화할 차분 데이터를 선택하는 단계에서 수행할 수 있음은 당업자에게 자명할 것이다. 한편, 폴딩 처리부(940)에서 폴딩연산이 수행된 데이터는 DND 처리부(950)로 출력된다.
DND 처리부(950)는 엔트로피 부호화 효율을 높이기 위해서, 입력된 키 데이터의 차분 데이터들에 대해서 DND 연산을 소정의 회수만큼 수행하여 데이터의 범위를 줄인다(S9600).
도 9b를 참조하여 DND 처리부(950)를 살펴보면, DND 처리부는 DND 연산을 수행하는 DND 연산부(952), 부호화 비트수에 따라서 엔트로피 부호화할 차분 데이터를 선택하는 제 1 차분 데이터 선택부(954), 제 1 차분 데이터 선택부에서 DND 연산이 수행된 차분 데이터가 선택되면 DND 연산이 수행된 차분 데이터에 쉬프트-업 연산을 수행하는 쉬프트-업 연산부(956), 및 DND 연산된 차분 데이터 및 쉬프트-업 연산된 차분 데이터 중 에서 산포도가 더 작은 차분 데이터를 선택하여 엔트로피 부호화기(960)로 출력하는 제 2 차분 데이터 선택부(958)를 포함한다.
먼저, DND 연산부(952)에서 수행되는 DND 연산에 대해서 살펴본다.
폴딩 연산된 차분 데이터가 DND 연산부(952)로 입력되면, 입력된 차분 데이터들은 절반으로 나눠지고, 상위 범위에 위치하는 차분 데이터들은 디바이드 함수에 의해서 음수 영역으로 이동된다. 디바이드 함수는 다음의 수학식 10 과 같이 정의된다.
Figure 112005060696882-pat00016
여기서, j 는 입력된 차분 데이터의 인덱스이고, nQKeyj 는 정수 배열을, nKeyMax 는 입력된 폴딩연산된 차분 데이터 중 최대값을 각각 나타낸다. 차분 데이터의 분포가 전체 차분 데이터가 차지하는 범위의 경계 영역에 집중되어 있는 경우에, DND 연산은 데이터의 전체 영역을 대폭 감소시키는 효과가 있다.
디바이드 연산후에 산포도가 계산되는데, 이 경우에 최소한의 부호화 비트 사이즈가 선택되도록 부호화에 필요한 비트 사이즈가 산포도로서 이용된다.
디바이드 연산이 수행된 후에, 디바이드 연산과 유사한 다른 DND 연산인 디바이드-업 연산 또는 디바이드-다운 연산이 수행되는데, 수행될 연산은 디바이드 연산후의 데이터의 양수측 및 음수측 범위의 크기에 따라서 결정된다.
양수측의 범위가 더 크면, 다음의 수학식 11 로 정의되는 디바이드-다운 연산이 수행된다.
Figure 112005060696882-pat00017
한편, 음수측의 범위가 더 크면, 다음의 수학식 12로 정의되는 디바이드-업 연산이 수행된다.
Figure 112005060696882-pat00018
상기 수학식들에서, j 는 양자화된 키 데이터의 인덱스이고, nQKeyj 는 정수 배열이며, nKeyMax 는 nQKeyj 의 최대값이고, nKeyMin 는 nQKeyj 의 최소값이다.
이하, DND 연산부(952)의 연산수행 과정을 도시한 도 10e 을 참조하여, DND 연산과정을 살펴본다.
DND 연산부(952)는 폴딩 처리부(940)로부터 키 데이터의 차분 데이터가 입력되면, 입력된 차분 데이터들 중에서 최대값(nKeyMax) 및 최소값(nKeyMin)을 구한다(S9610). 그 후, DND 연산부(952)는 최대값과 최소값의 절대값을 비교하고(S9620), 최대값이 최소값의 절대값보다 크거나 같으면, 구해진 최대값을 현재 DND 연산 차수의 최대값으로 설정한다(S9622).
DND 연산부(952)는 DND 연산 차수가 1 인지를 조사하여(S9624), 차수가 1 이면 상술한 수학식 10 에 최대값(nKeyMax)을 대입하여 DND 연산부(952)로 입력된 차분 데이터에 대해서 디바이드 연산을 수행한다(S9630).
디바이드 연산을 수행한 DND 연산부(952)는 부호화에 필요한 비트 사이즈를 구하기 위한 함수 getQBit()를 이용하여, 디바이드 연산을 수행하여 줄어든 차분 데이터 범위를 부호화하기 위해서 필요한 비트 사이즈를 측정한다(S9640). 그 후, 현재의 DND 연산 차수가 1 이면(S9650), 상기 값을 DND 연산후에 최소 부호화 비트 사이즈를 나타내는 값(nQBitDND)으로 일단 저장하고, DND 차수를 1 증가시킨다(S9655).
그 후, DND 연산부(952)는 상술한 과정을 다시 수행하는데, 제 S9624 단계에서 차수가 1 이 아니면, 상기 수학식 11 에 nKeyMax 값을 대입하여 디바이드-다운 연산을 수행한다(S9634). DND 연산부(952)는 디바이드-다운 연산이 수행된 차분 데이터의 부호화에 필요한 비트수를 계산하고(S9640), 이 값이 이전 차수의 DND 연산에서 저장된 부호화에 필요한 최소값(nQBitDND)보다 작으면(S9652), DND 연산후에 부호화에 필요한 최소비트 사이즈를 이 값으로 대체한다(S9658).
한편, 제 S9620 단계에서, 최소값의 절대값이 최대값보다 더 크다면, 당해 차수의 최대값을 입력된 최소값으로 갱신하고(S9623), 최소값을 상기 수학식 12 에 대입하여 디바이드-업 연산을 수행한다(S9638). 그 후, DND 연산부(952)는 디바이드-업 연산이 수행된 차분 데이터의 부호화에 필요한 비트수를 계산하고(S9640), 이 값이 이전 차수의 DND 연산에서 저장된 부호화에 필요한 최소값(nQBitDND)보다 작으면(S9652), DND 연산후에 부호화에 필요한 최소비트 사이즈를 이 값으로 대체한다(S9658).
DND 연산부(952)는 소정의 회수가 될 때까지 상술한 과정을 반복하는데, DND 연산을 수행하는 회수는 가변적이다. 예컨대, 본 실시예는 DND 연산을 수행하는 회수를 7 회로 설정하였다. DND 연산 연산부(952)는 부호화에 필요한 최소 비트 사이즈(nQBitDND) 및 그때의 DND 연산된 차분 데이터를 제 1 차분 데이터 선택부(954)로 출력하고, 그 때의 차수를 헤더 부호화기(400)로 출력하여 비트스트림에 포함시킨다.
제 1 차분 데이터 선택부(954)는 쉬프팅 연산된 차분 데이터, 폴딩 연산된 차분 데이터 및 DND 연산된 차분 데이터를 입력받아, 어떤 연산 수행 결과를 엔트로피 부호화할 것이지를 결정한다.
도 10a을 다시 참조하며, 제 1 차분 데이터 선택부(954)는 DND 연산후에 부호화에 필요한 최소 비트수(nQBitDND)가 DPCM 연산후의 부호화 비트 사이즈(nQStep-DPCM)보다 크거나 같으면(S9700), DPCM 연산의 결과를 선택하고 쉬프팅 연산을 수행한 후, 쉬프팅된 차분 데이터를 엔트로피 부호화기(960)로 출력하여 엔트로피 부호화한다(S9710). 이 경우에, DND 차수는 -1 로 설정되고 헤더 부호화기(400)로 출력되어 키 헤더에 포함된다.
그러나, nQBitDND 가 DPCM 후의 부호화 비트 사이즈보다 작지만, 폴딩 연산후의 부호화 비트 사이즈보다 크거나 같으면(S9720), 제 1 차분 데이터 선택부(954)는 폴딩연산된 차분 데이터를 엔트로피 부호화기(960)로 출력하여 엔트로피 부호화한다(S9730). 이 경우에, DND 차수는 0 으로 설정되고 헤더 부호화기(400)로 출력되어 키 헤더에 포함된다.
만약, DND 연산된 후의 차분 데이터의 부호화 비트수가 가장 적다면, 제 1 차분 데이터 선택부(954)는 DND 연산된 차분 데이터를 쉬프트-업 연산부(956)로 출력하고, 쉬프트-업 연산부(956)은 차분 데이터를 입력받아, DND 연산된 차분 데이터에 대해서 제 1 산포도를 계산하고(S9740), 아울러, DND 연산된 차분 데이터에 대해서 다음의 수학식 13 으로 정의되는 쉬프트-업 연산을 수행한 후(S9800), 쉬프트-업 연산된 차분 데이터들의 제 2 산포도를 다시 계산한다(S9810).
Figure 112005060696882-pat00019
여기에서 j 는 양자화된 키 데이터의 차분 데이터의 인덱스이고, nQKeyj는 정수 배열이며, nKeyMax 는 차분 데이터 중에 최대값을 각각 나타낸다.
DND 연산된 차분 데이터 및 쉬프트-업 연산된 차분 데이터를 입력받은 제 2 차분 데이터 선택부(958)는 제 1 산포도 및 제 2 산포도의 크기를 비교하여(S9900) 쉬프트-업 연산후의 제 2 산포도가 DND 연산 후의 제 1 산포도보다 작으면, 쉬프트-업 연산이 수행된 차분 데이터를 엔트로피 부호화기(960)로 출력하여 엔트로피 부호화하고(S9910), DND 연산에서 사용된 최대값(nKeyMax) 및 최소값(nKeyMin), 그리고, 쉬프트-업 연산에서 사용된 최대값(nKeyMax)을 헤더 부호화기(400)로 출력하여 키 헤더에 포함시킨다.
그러나, DND 연산 후의 제 1 산포도가 쉬프트-업 연산후의 제 2 산포도보다 더 작으면, 제 2 차분 데이터 선택부(958)는 DND 연산이 수행된 차분 데이터를 엔트로피 부호화기(960)로 출력하여 엔트로피 부호화하고(S9920), DND 연산에서 사용된 최대값(nKeyMax) 및 최소값(nKeyMin)만이 헤더 부호화기(400)로 출력된다. 본 발명의 바람직한 실시예에서는 전술한 제 1 및 제 2 산포도로서 표준편차를 이용하였다.
엔트로피 부호화기(960)는 부호화할 차분 데이터의 성질에 따라서 2가지 함 수 연산을 수행하여 차분 데이터를 부호화한다. 예컨대, DPCM 이 수행되고 쉬프팅 연산이 수행된 차분 데이터 및 디바이드 연산이 수행된 차분 데이터는 양수 및 음수를 모두 갖게 되므로, 차분 데이터의 부호를 포함하는 부호화를 수행하고, 폴딩 연산된 차분 데이터 및 쉬프트-업 연산된 차분 데이터는 양수값만을 가지므로 부호를 포함하지 않는 부호화를 수행한다.
본 발명의 바람직한 실시예는 부호를 포함하는 부호화함수로서 encodeSignedAAC 함수를 이용하고, 부호를 포함하지 않는 부호화함수로서 encodeUnsignedAAC 함수를 이용하여 차분 데이터를 부호화한다.
도 11 은 encodeSignedAAC 함수의 일예를 도시하는 도면이다. 도 8 을 참조하면, 입력 값이 74 이고, 이 값에 대한 부호화 비트수가 8 이라면, 이 값의 부호는 0 이고, 이 값의 이진수는 1001010 이 된다. 부호 및 모든 비트 플레인은 다음과 같이 과정을 통해서 부호화된다.
제 1 단계: 이진수를 MSB 에서부터 LSB로 비트플레인 단위로 부호화한다.
제 2 단계: 부호화중에 현재 부호화되는 비트가 0이 아닌지를 검사한다.
제 3 단계: 만약, 첫 번째 0 이 아닌 값이라면, 이진수의 현재 부호화 비트를 부호화한 후에 부호를 부호화한다.
제 4 단계: 이진수의 잔여 비트를 부호화한다.
encodeUnsignedAAC 함수는 부호없는 값을 값들에 대한 컨택스트를 이용하여 적응 산술 부호화 비트스트림으로 부호화한다. 이것은 부호 컨택스트가 있다는 점을 제외하면, 전술한 encodeSignedAAC 함수의 처리과정과 유사하다.
도 12a 내지 도 12j 는 본 발명의 바람직한 실시예에 따른 연산들이 수행된 후의 키 데이터를 도시하는 도면들이다. 도 12a 내지 도 12j에서 횡축은 각 키 데이터의 인덱스를 나타내고, 종축은 키 데이터의 값을 나타낸다.
도 12a 는 본 발명의 부호화기로 입력된 원래 키 데이터를 도시한 도면이다. 도 12a 에 도시된 키 데이터가 양자화기(910)로 출력되어 9비트의 양자화 비트로 양자화되면, 도 12b 에 도시된 양자화된 키 데이터가 얻어진다. 양자화된 키 데이터에 대해서 DPCM을 수행하면, 도 12c 와 같은 키 데이터의 차분 데이터를 얻게된다.
그 후, 양자화된 키 데이터의 차분 데이터를 약 7 의 모드값으로 쉬프팅하면, 도 12d 에 도시된 키 데이터의 차분 데이터를 얻을 수 있고, 쉬프팅된 차분 데이터에 폴딩 연산을 수행하면, 도 12e 에 도시된 바와 같이 모두 양수로 변환된 데이터를 얻을 수 있다.
폴딩된 데이터에 DND 연산을 수행한 데이터를 도 12f 내지 12h 에 도시하였다.
폴딩된 데이터에 대해서 먼저 DND 연산 중 디바이드 연산을 수행한 후의 차분 데이터를 도 12f 에 도시하였다. 도시된 바와 같이 양수측의 범위는 0~28 이고, 음수측의 범위는 0 ~ -29 이므로 음수측의 범위가 더 크다. 따라서, 도 9f 에 도시된 데이터에 대해서 디바이드-업 연산이 수행되고, 디바이드-업 연산의 결과를 도 12g 에 도시하였다.
디바이드-업 연산에 의해서 키 데이터의 음수측 범위는 양수측 범위에 비해 서 상당히 줄어들고, DND의 다음 차수에서 디바이드-업 연산된 차분 데이터에 대해서 디바이드-다운 연산이 수행된다. 도 12h 는 도 12g 의 차분 데이터에 대해서 디바이드-다운 연산을 수행한 결과를 도시한 도면이다. 한편, 디바이드-다운 연산된 키 데이터에 대해서 쉬프트-업 연산을 수행한 결과를 도 12i 에 도시하였다.
상술한 도 12a 내지 도 12g 까지는 키 데이터 및 차분 데이터의 범위가 점점 줄어드는 것을 알 수 있다. 그러나, 쉬프트-업 연산 결과를 도시한 도 9i 와 도 9h를 비교하여 보면, 쉬프트-업 연산 수행후의 부호화될 차분 데이터의 범위가 더 증가했음을 알 수 있다. 따라서, 최종적으로 부호화할 키 데이터의 차분 데이터는 디바이드-다운 연산이 수행된 차분 데이터인 것을 도 9j를 통해서 알 수 있다.
한편, 헤더 부호화기(400)에서 부호화되어 키 헤더에 저장되는 정보들을 살펴본다.
부호화될 키 데이터들이 입력되면, 헤더 부호화기(400)는 입력 키 데이터들로부터 키 데이터의 자리수 및 부호화될 전체 키의 개수를 입력받아 부호화한다. 그 후, 헤더 부호화기(400)는 선형 키 부호화기(900)로부터 선형 키 부호화된 선형 키 영역이 있는지를 나타내는 정보 및 선형 키 영역의 키 데이터의 개수를 입력받고, 실수 변환부(905)로부터 실수 변환된 선형 키 영역의 시작 키 데이터 및 종료 키 데이터를 입력받는다.
아울러, 실수 변환부(905)가 양자화 오차 최소화부(915)로부터 양자화 오차가 최소화되는 최대값 및 최소값을 입력받아 실수 변환한 경우에는, 변환된 최대값 및 최소값은 역 양자화에 이용될 수 있도록 실수 변환부(905)로부터 헤더 부호화기 (400)로 입력되어 키 헤더에 포함된다. 또한, 양자화에 이용된 양자화 비트 사이즈도 헤더 부호화기(400)로 입력되어 키 헤더에 포함된다.
또한, 헤더 부호화기(400)는 DPCM 처리부(920)로부터 DPCM 연산 수행 차수 및 각 차수에서의 인트라 키(intra Key) 데이터를 입력받고, 쉬프팅부(930)로부터 쉬프팅연산에 이용된 모드값을 입력받으며, DND 처리부(950)로부터 쉬프트-업 연산이 수행되었는지 여부, 산포도가 최소가 되는 DND 차수 및 각 DND 차수에서의 최대값 및 최소값을 입력받는다. 마지막으로, 헤더 부호화기(400)는 엔트로피 부호화기(960)로부터 부호화에 이용된 부호화 비트수를 입력받아 키 헤더로 부호화한다.
이하, 도 13a 내지 도 18b를 참조하여 본 발명의 바람직한 실시예에 따른 키 값 데이터 부호화기(300) 및 부호화 방법을 설명한다.
도 13a 는 본 발명의 바람직한 실시예에 따른 키 값 데이터 부호화기(300)의 구성을 도시하는 블록도이고, 도 14a 는 키 값 데이터 부호화 방법을 설명하는 흐름도이다.
도 13a를 참조하면, 본 발명의 키 값 데이터 부호화기(300)는 입력된 각 성분의 키 값 데이터를 최대 범위에 따라서 정규화하는 정규화기(1300), 정규화된 키 값 데이터를 소정의 양자화 비트로 양자화하는 양자화기(1310), 양자화 오차를 최소화할 수 있도록 상기 각 성분의 양자화된 키 값 데이터의 최대값 및 최소값을 조정하여 출력하는 양자화 오차 최소화부(1320), 양자화 오차를 최소화하는 최소값 및 최대값을 10 진수 체계의 실수로 변환하는 실수 부호화기(1330), 양자화된 키 값 데이터에 대해서 차분 데이터 및 예측 차분 데이터를 구하고 상기 차분 데이터들의 범위를 감소시키는 순환 양자화 연산을 수행하는 DPCM 처리부(1340), 및 차분 데이터를 엔트로피 부호화하여 키 값 데이터가 부호화된 비트스트림을 출력하는 엔트로피 부호화기(1350)를 포함한다.
도 14a 를 더 참조하여 본 발명의 키 값 데이터의 부호화 방법을 설명한다.
부호화될 각 성분(x, y, 및 z) 의 키 값 데이터는 먼저 부호화기의 정규화기(1300)로 입력되고(S14000), 정규화기(1300)는 다음의 수학식 14 를 이용하여, 각 성분의 키 값 데이터의 범위를 계산하고(S14120), 각 성분의 키 값 데이터 범위를 비교하여 키 값 데이터의 최대 범위를 계산한다(S14140).
Figure 112005060696882-pat00020
그 후, 정규화기(1300)는 다음의 수학식 15 를 이용하여 각 성분의 키 값 데이터를 정규화한다(S14160).
Figure 112005060696882-pat00021
상기 수학식 14 및 수학식 15 에서 n 은 데이터의 개수를 나타내며, i=0,1,...n-1 이고, j 는 키 값 데이터의 성분 x, y, 및 z를 나타낸다.
상기 수학식 15 에서 보는 바와 같이, 각 성분의 데이터는 각 성분의 최대 범위가 아닌, 모든 성분의 최대 범위를 이용하여 정규화된다. 이러한 정규화 과정을 통해서 최대 범위를 갖지 않는 성분의 데이터의 비트 중복성이 증가하게 되어 부호화 효율이 높아지게 된다.
정규화기(1300)는 각 성분의 키 값 데이터의 최소값 (x_min, y_min 및 z_min), 모든 성분의 키 값 데이터 중 최대값(max), 최대값이 어느 성분에 포함되는지를 나타내는 정보(nWhichAxis), 및 원래 키 값 데이터의 자리수(nKeyValueDigit)를 후술하는 실수 부호화기(1330)로 출력하여 키 값 헤더로서 비트스트림에 포함시키고, 정규화된 키 값 데이터는 양자화기(1310)로 출력한다.
한편, 정규화기에서 정규화된 각 성분(x, y, 및 z) 의 키 값 데이터는 양자화기(1310)로 입력되고, 양자화기(1310)는 키 값 데이터를 다음의 수학식 16 에 따라서 소정의 양자화 비트(nQuantBit)로 양자화 한다(S14200).
Figure 112005060696882-pat00022
수학식 16 의 floor() 함수는 입력된 실수값을 실수값 이하의 최대 정수로 변환하는 함수이다. 양자화기(1310)는 양자화된 키 값 데이터를 DPCM 처리부(1340) 및 양자화 오차 최소화부(1320)로 출력한다.
도 13b 는 본 발명의 바람직한 실시예에 따른 양자화 오차 최소화부(1320)의 구성을 도시하는 블록도이다.
도 13b를 참조하면, 본 발명의 바람직한 실시예에 따른 양자화 오차 최소화부(1320)는 최소 오차값(emin), 조정 최소값(min') 및 양자화 오차 최소화값(minmin)의 초기값을 설정하는 초기값 설정부(1321), 조정 최소값(min')에 소정의 연산을 수행하여 조정 최소값을 갱신하는 조정 최소값 갱신부(1323), 갱신된 조정 최소값의 자리수 및 크기에 따라서 양자화 오차 최소화값(minmin)을 역 양자화에 이용될 최소값으로 결정하는 판단부(1325), 및 갱신된 조정 최소값에 따른 양자화 오차값을 계산하고 계산된 오차값이 상기 최소 오차값보다 작은 경우에 상기 조정 최소값을 양자화 오차 최소화값(minmin)으로 갱신하고 계산된 오차값을 최소 오차값으로 갱신하여 조정 최소값 갱신부(1323)로 출력하는 오차값 갱신부(1327)를 포함한다.
양자화 오차 최소화부(1320)는 양자화 오차를 최소화하기 위해서 입력된 데이터에 대해서 미리 양자화 및 역양자화를 수행하여, 양자화의 오차가 최소가 되는 양자화의 범위를 제어하는 방법을 이용하는 점에서, 키 데이터 부호화기의 양자화 오차 최소화부(915)와 유사하다.
이하, 본 발명의 양자화 오차 최소화부(1320)의 처리 과정을 도 14c를 참조하여 설명한다.
초기값 설정부(1321)는 정규화기(1300)로 입력되는 키 값 데이터와 동일한 키 값 데이터를 입력받고, 또한, 양자화기(1310)로부터 출력된 양자화된 키 값 데이터를 입력받는다(S14320).
초기값 설정부(1321)는 입력된 양자화된 키 값 데이터로부터 최대값(max) 및 최소값(min)을 선정하여 최소값의 자리수를 계산하고, 선정된 최대값 및 최소값을 이용하여 양자화된 키 값 데이터를 역 양자화하여 양자화 오차(e)를 계산하며, 계산된 양자화 오차(e)를 최소 오차값(emin)의 초기값으로 설정한다(S14340).
또한, 초기값 설정부(1321)는 입력된 키 값 데이터 중 최소값(min)에서, 양자화 스텝 사이즈(QuantSpace)를 2로 나눈 값을 감산하여, 조정 최소값(min')의 초기값을 설정하고, 조정 최소값(min')의 초기값을 양자화 오차 최소화값(minmin)으로 설정하며, 설정된 조정 최소값을 조정 최소값 갱신부(1323)로 출력한다(S14360).
조정 최소값 갱신부(1323)는 입력된 조정 최소값에 대해서 소정의 연산을 수행하여 조정 최소값을 갱신하는데, 본 발명의 바람직한 실시예에 따른 조정 최소값 갱신부(1323)는 다음의 수학식 17 에 따라서 입력된 조정 최소값을 갱신하여 판단부(1325)로 출력한다(S14380).
Figure 112005060696882-pat00023
판단부(1325)는 갱신된 조정 최소값(min')의 자리수를 계산하여 초기값 설정부(1321)에서 계산한 최소값(min)의 자리수와 비교하고, 초기값 설정부(1321)로 입력된 양자화된 키 값 데이터의 최소값(min)에, 소정의 양자화 비트 사이즈(QuantSpace)를 2로 나눈값을 가산한 값과 조정 최소값의 크기를 비교한다(S14400).
비교 결과, 갱신된 조정 최소값(min')의 자리수가 양자화된 키 값 데이터의 최소값(min)의 자리수보다 크거나, 갱신된 조정 최소값(min')의 크기가 min+QuantSpace/2 보다 크면, 판단부는 현재 저장된 양자화 오차 최소화값(minmin)을 역 양자화에 이용할 최소값으로 결정하여 출력부로 출력한다(S14420). 그러나, 상기 조건을 모두 만족하지 않으면, 판단부는 갱신된 조정 최소값을 오차값 갱신부(1327)로 출력한다.
오차값 갱신부(1327)는 갱신된 조정 최소값 및 초기값 설정부(1321)에서 선정된 최대값(max)을 이용하여 입력된 양자화된 키 값 데이터를 역 양자화하고, 양자화 오차(e)를 계산한다(S14440).
오차값 갱신부(1327)는 새롭게 계산된 오차값(e)을 최소 오차값(emin)과 비교하여(S14460), 새롭게 계산된 오차값(e)이 최소 오차값(emin)보다 더 작으면, 새롭게 계산된 오차값(e)으로 최소 오차값(emin)을 갱신하고, 조정 최소값으로 양자화 오차 최소화값(minmin)을 갱신한다(S14480). 그러나, 새롭게 계산된 오차값(e)이 최소 오차값(emin)보다 더 크면, 최소 오차값(emin) 및 양자화 오차 최소화값(minmin)을 갱신하지 않고 제 S14380 단계부터 다시 수행한다.
한편, 상술한 과정을 통해서 검출된 양자화 오차를 최소화하는 최소값 및 최대값은 실수 부호화기(1330)로 출력되어 복호화에 필요한 정보를 포함하는 헤더 정보로서 부호화되어 엔트로피 부호화기(1350)에 의해서 생성된 비트스트림에 포함된 다.
이하, 도 14d 를 참조하여 실수 부호화기(1330)의 처리과정(S14500)에 대해서 설명한다. 기본적으로 키 값 데이터 부호화 장치의 실수 부호화기(1330)는 도 9a 에 도시된 실수 변환부(905)와 그 기능이 유사하다.
먼저, 실수 부호화기(1330)는 정규화기(1300)부터 입력된 각 성분의 키 값 데이터의 최소값 (x_min, y_min 및 z_min), 모든 성분의 키 값 데이터 중 최대값(max), 최대값이 어느 성분에 포함되는지를 나타내는 정보(nWhichAxis), 및 원래 키 값 데이터의 자리수(nKeyValueDigit)를 입력받는다(S14510).
실수 부호화기(1330)는 부호화에 필요한 비트수를 줄여 부호화 효율을 높이기 위해서, 입력값들 중 2진수 체계의 실수로 표현된 각 성분의 최소값 (x_min, y_min 및 z_min), 및 모든 성분 중 최대값(max)을 상술한 수학식 4 의 관계에 따라서 10 진수 체계의 실수로 변환한다(S14520).
그 후, 실수 부호화기(1330)는 각 성분의 최소값의 자리수가 모두 동일한지 여부를 조사하고(S14530), 만약 동일하지 않으면, 각 성분의 최소값의 자리수를 헤더 부호화기(400)로 출력하여 키 값 헤더로서 부호화한다(S14540).
만약, 각 성분의 최소값의 자리수가 모두 동일하면, 이들 최소값들의 자리수가 원래 키 값 데이터의 자리수와도 동일한지를 조사하고(S14550), 동일하지 않으면, 최소값의 자리수를 헤더 부호화기(400)로 출력하여 키 헤더로서 부호화한다(S14560).
이상의 과정을 통해서 각 성분의 최소값의 자리수 정보를 모두 키 값 헤더로 서 부호화한 실수 부호화기(1330)는 최대값 정보를 부호화하기 위해서 최대값(max)이 어느 성분에 포함되는지를 조사하고, 최대값(max)의 자리수와 최대값이 포함되는 성분의 최소값의 자리수가 동일한지 여부를 조사한다(S14570).
만약 동일하지 않으면, 최대값(max)의 자리수를 헤더 부호화기(400)로 출력하여 키 값 헤더로서 부호화하고, 동일하면 자리수가 동일하다는 상태정보를 헤더 부호화기(400)로 출력한다(S14580).
상술한 과정을 통해서 실수 부호화기(1330)는 변환된 실수의 맨티사에 관한 정보를 키 값 헤더로서 부호화하였고, 후술하는 과정을 통해서 지수(Exponent)에 관한 정보를 키 값 헤더로서 부호화한다.
실수 부호화기(1330)는 10 진수 체계로 변환된 각 성분의 최소값 (x_min, y_min 및 z_min) 및 최대값(max)의 지수(Exponent)의 절대값 중 최대값을 조사하여, 그 값을 nMaxExp 값으로 저장하고 소정의 비트로 키 값 헤더로서 부호화한다(S14590).
그 후, 실수 부호화기(1330)는 모든 지수의 부호가 동일한지 여부를 조사하여(S14600), 동일하면 bSameSignExp 값을 1 로 저장하고, 동일한 최대값(max) 또는 최소값의 부호(sign)를 헤더 부호화기(400)로 출력한다(S14610). 그러나, 동일하지 않으면 bSameSignExp 값을 0 으로 설정한다(S14620). 상술한 과정을 통해서 최소값들 및 최대값의 지수에 관한 정보가 키 값 헤더로서 부호화되었다.
도 14e를 참조하면, 실수 부호화기(1330)는 입력된 각 성분의 최소값 및 최대값을 키 값 헤더로서 부호화하는데, 먼저, 변환된 실수의 부호(sign)를 부호화한 다(S14630).
그 후, 실수 부호화기(1330)는 상술한 표 2를 참조하여 각 실수의 자리수에 따라서 부호화에 필요한 비트수를 계산하고, 계산된 비트수만큼 맨티사를 헤더 부호화기(400)로 출력한다(S14640).
또한, 실수 부호화기(1330)는 상술한 표 2를 참조하여 nMaxExp 값을 부호화하는데 필요한 비트수를 계산하고, 계산된 비트수만큼 지수를 헤더 부호화기(400)로 출력한다(S14650).
실수 부호화기(1330)는 상술한 bSameSignExp 값을 조사하여(S14660), 지수의 부호(sign)가 모두 동일한지를 조사하고, 동일하지 않으면, 각 성분의 최소값의 부호와 최대값의 부호를 각각 헤더 부호화기(400)로 출력하여 부호화함으로써(S14670), 정규화기로부터 입력된 키 값 데이터의 최소값 및 최대값의 부호화 과정은 종료된다.
한편, 실수 부호화기(1330)는 양자화 오차 최소화부(1320)로부터 각 성분의 양자화 오차를 최소화하는 최소값 및 최대값을 입력받아 상술한 과정을 통해서 키 값 헤더로 부호화한다.
도 13c 는 본 발명의 바람직한 실시예에 따른 DPCM 처리부(1340)의 구성을 도시하는 블록도이고, 도 14f 는 본 발명의 바람직한 실시예에 따른 DPCM 연산 방법을 설명하는 흐름도이다.
도 13c를 참조하면, 본 발명의 DPCM 처리부(1340)는 입력된 양자화된 키 값 데이터에 일반적인 DPCM 연산을 수행하여 차분 데이터를 출력하는 DPCM 연산부 (1342) 및 입력된 차분 데이터에 대해서 차분 데이터의 범위를 감소시키는 순환 양자화 연산을 수행하는 순환 양자화부(1343)를 포함하는 순환 DPCM 연산부(1341), 입력된 양자화된 키 값 데이터에 예측 DPCM 연산을 수행하여 예측 차분 데이터를 출력하는 예측 DPCM 연산부(1346) 및 입력된 차분 데이터에 대해서 차분 데이터의 범위를 감소시키는 순환 양자화 연산을 수행하는 순환 양자화부(1347)를 포함하는 예측 순환 DPCM 연산부(1345), 및 입력된 차분 데이터의 크기에 따라서 순환 DPCM 연산부로부터 입력된 차분 데이터 및 예측 순환 DPCM 연산부로부터 입력된 차분 데이터 중에서 하나의 차분 데이터를 선택하여 출력하는 선택부(1349)를 포함한다.
도 14f를 더 참조하여, 본 발명의 바람직한 실시예에 따른 DPCM 연산 방법을 설명한다.
양자화된 키 값 데이터는 순환 DPCM 연산부(1341) 및 예측 순환 DPCM 연산부(1345)로 각각 입력된다(S14720).
먼저, 순환 DPCM 연산부(1341)로 입력된 양자화된 키 값 데이터를 수신한 DPCM 연산부(1342)는 입력된 양자화된 키 값 데이터에 대해서 일반적인 DPCM 연산을 수행하여 구해진 차분 데이터를 순환 양자화부(1343)로 출력하고, 순환 양자화부(1343)는 입력된 차분 데이터에 대해서 순환 양자화를 수행한다(S14740a).
DPCM 연산부(1342)는 입력된 양자화된 키 값 데이터에서 이전에 입력된 양자화된 키 값 데이터를 감산하여 차분 데이터를 계산한다. 그 후, 순환 양자화부(1343)는 계산된 차분 데이터를 입력받아 순환 양자화 연산을 수행한다. 순환 DPCM 연산부(1341)의 처리 과정은 다음의 수학식 18 로 표현된다.
Figure 112005060696882-pat00024
상기 수학식에서 n 은 데이터의 개수를 나타낸다. 순환 양자화 연산에 대해서는 후술하기로 한다.
한편, 예측 순환 DPCM 연산부(1345)의 예측 DPCM 연산부(1346)는 입력된 양자화된 키 값 데이터에 대해서 예측 DPCM 연산을 수행하여 예측 차분 데이터를 계산하고, 순환 양자화부(1347)는 예측 차분 데이터에 대해서 순환 양자화 연산을 수행한다(S14740b).
예측 DPCM 연산부(1346)는 현재의 양자화된 키 값 데이터에서 예측 데이터를 감산하여 예측 차분 데이터를 생성하여 출력한다. 구체적으로, 예측 DPCM 연산부(1346)는 현재의 양자화된 키 값 데이터에 대한 예측 데이터를 구하기 위해서, 양자화된 이전 데이터에서 그 이전 데이터를 감산하여 차분값을 구한다. 그 후, 구해진 차분값을 이전 차분 데이터에 합산하여 현재 데이터에 대한 예측 데이터를 계산한다. 예측 DPCM 연산부(1346)는 현재의 데이터에서 계산된 예측 데이터를 감산하여 현재 데이터에 대한 예측 차분 데이터를 계산한다.
다만, 예측 DPCM 연산부(1346)가 계산한 예측 데이터는 입력된 양자화된 키 값 데이터가 가질 수 있는 최대 범위를 초과할 수 없다. 즉, 예측 DPCM 연산부(1346)는 예측된 데이터가 입력된 양자화된 키 값 데이터의 양자화 범위의 최대값을 초과하는 경우에는, 예측 데이터를 입력된 데이터의 양자화 범위의 최대값으로 하고, 예측 데이터에서 현재의 데이터를 감산하여 현재의 데이터에 대한 차분 데이터를 생성한다. 만약, 예측 데이터가 입력된 데이터의 양자화 범위의 최소값보다 작다면, 현재의 데이터 자체를 예측 차분 데이터로서 결정한다(이하, "수정된 예측 DPCM 연산"이라 칭함).
예측 DPCM 연산부(1345)에서 계산된 예측 차분 데이터는 순환 양자화부(1347)로 입력되어 순환 양자화 연산이 수행된다.
상술한, 예측 순환 DPCM 연산부(1345)의 연산 과정은 다음의 수학식 19 로 표현할 수 있다.
Figure 112005060696882-pat00025
수학식 19 에서, n 이 데이터의 개수라 할 때, i 는 2, 3, .... , n-1 이다.
도 15a 는 최대값이 1024 이고 최소값이 0 인 50개의 양자화된 키 값 데이터에 대해서 단순한 예측 DPCM 연산을 수행한 결과를 도시하였고, 도 15b 는 동일한 양자화된 키 값 데이터에 대해서 예측 값이 최대값을 초과하거나 최소값이하인 경우에, 상기 수학식 19 에 따라서 차분 데이터를 조정한 수정된 예측 DPCM 연산 결과를 도시한 도면이다.
도 15a 및 도 15b 에 도시되었듯이, 단순한 예측 DPCM 연산을 수행한 결과 예측 차분 데이터의 범위는 약 3000 정도임을 알 수 있고, 수정된 예측 DPCM을 이용한 결과 예측 차분 데이터의 범위는 2000 이하이므로, 수정된 예측 DPCM 연산 결과 더 적은 예측 차분 데이터의 범위를 얻을 수 있다는 것을 알 수 있다.
이하, 순환 양자화 과정에 대해서 설명한다.
도 16a 는 양자화된 데이터를 도시하고, 도 16b 는 도 16a 에 도시된 양자화된 데이터에 대해서 DPCM 연산을 수행한 결과를 도시한 도면이다. 도 16b 에 도시되었듯이, DPCM 연산을 수행한 후의 차분 데이터의 범위는 DPCM 연산이 수행되기 전의 데이터의 범위의 2배까지 증가할 수 있다. 따라서, 순환 양자화 연산의 목적은 차분 데이터의 범위를 입력된 데이터의 범위로 유지하면서 DPCM 연산을 수행하는 것이다.
순환 양자화 연산은 양자화 범위의 최대값과 양자화 범위의 최소값이 서로 연결되어 있다고 가정한다. 따라서, 만약, 2개의 연속된 양자화된 데이터간의 선형 DPCM 결과인 차분 데이터가 양자화 범위의 최대값의 절반을 초과하면, 차분 데이터 값에서 최대값을 감산하므로써, 차분 데이터 값을 더 작은 값으로 표현 할 수 있다.
또한, 만약, 2개의 연속된 양자화된 데이터간의 선형 DPCM 결과인 차분 데이터가 양자화 범위의 최소값의 절반보다 작으면, 차분 데이터 값에 최대값을 가산하므로써, 차분 데이터 값을 더 작은 범위의 값으로 표현할 수 있다.
X 를 입력 차분 데이터라 하고,
Figure 112005060696882-pat00026
순환 양자화된 차분 데이터라고 할 때, 순환 양자화는 다음의 수학식 20 와 같이 표현된다.
Figure 112005060696882-pat00027
수학식 20 에서 nQBits 는 양자화에 이용되는 비트 사이즈이다. 도 16c 는 도 16b 에 도시된 차분 데이터에 대해서 순환 양자화를 적용한 결과를 도시한 도면이다.
도 14f를 다시 참조하면, 순환 양자화된 차분 데이터 및 예측 차분 데이터는 선택부(1349)로 출력되고, 선택부(1349)는 입력된 차분 데이터들에 대해서 SAD 연산을 수행한다(S14760).
SAD(Sum of Absolute Difference) 연산은 입력된 값들의 절대값을 모두 합산하는 연산으로서, 선택부(1349)는 입력된 일련의 차분 데이터를 구성하는 각각의 차분 데이터의 절대값을 모두 합산한다. 또한, 선택부(1349)는 입력된 일련의 예측 차분 데이터를 구성하는 각각의 예측 차분 데이터의 절대값을 모두 합산한다.
그 후, 선택부(1349)는 합산된 절대값들을 서로 비교하여 절대값이 더 작은 차분 데이터를 최종 차분 데이터로 선택하여 출력한다(S14780). 선택부(1349)가 SAD 연산 결과 절대값이 더 적은 값을 선택하는 이유는, 절대값의 합이 더 작은 차분 데이터 크기의 범위가 전체적으로 적을 것이라고 예측하기 때문이다. 예컨대, 예측 차분 데이터를 엔트로피 부호화할 경우에, 절대값이 더 적은 차분 데이터의 부호화에 필요한 비트수가 절대값이 더 큰 차분 데이터의 부호화에 필요한 비트수보다 적을 것으로 예측된다.
따라서, 이러한 SAD 연산은 차분 데이터를 선택하기 위한 하나의 방법에 지나지 않고, 선택부는 SAD 연산 수행 이외에 다른 방법으로 차분 데이터를 선택할 수 있음은 당업자에게 자명할 것이다.
도 14a를 다시 참조하면, DPCM 처리부(1340)로부터 입력된 차분 데이터는 엔트로피 부호화기(1350)에서 엔트로피 부호화된다(S14800).
도 14g 를 참조하면, 본 발명의 바람직한 실시예의 엔트로피 부호화기(1350)는 x, y 및 z 의 각 성분의 키 값 데이터의 차분 데이터를 엔트로피 부호화한다.
엔트로피 부호화기(1350)는 입력된 각 성분의 차분 데이터를 조사하여, 각 성분에 포함된 양자화된 값들이 동일한지 여부, 즉, 차분 데이터가 모두 0 인지를 조사하고, 그렇다면, 엔트로피 부호화 과정을 종료한다(S14810). 예컨대, 3차원 애니메이션상에서 기차가 x 성분 방향인 수평방향으로 이동하는 경우에, x 성분의 키 값 데이터는 변화하지만 나머지 성분들의 키 값 데이터는 그 변화가 미약하여, 양자화하면 그 값들이 동일하게 된다. 따라서, 동일한 키 값 데이터들을 모두 부호화하지 않고, 하나의 키 값 데이터만을 키 값 헤더로서 부호화함으로써 부호화 효율을 높일 수 있다. 본 발명에서는 실수부호화기(1330)를 통해서 각 성분의 최소값이 부호화되므로 그 값을 이용할 수 있다.
각 성분의 모든 양자화된 키 값 데이터가 동일하지는 않다면, 엔트로피 부호 화기(1350)는 미리 설정된 값을 판독하여(S14820), Unary AAC 함수를 이용하여 차분 데이터들을 부호화하거나(S14830), SQ(Successive Quantization) AAC 함수를 이용하여 입력된 차분 데이터를 엔트로피 부호화한다(S14850).
먼저, 도 17 을 참조하여 Unary AAC 함수에 대해서 설명한다. Unary AAC 함수는 부호화할 심볼들을 일련의 0 으로 변환한 후, 상기 0 이 종료되었음을 나타내는 1 및 심볼의 부호를 나타내는 1 비트를 이용하여 심볼을 부호화한다. 이 때, 일련의 0 은 심볼의 크기를 나타낸다. 예컨대, 부호화할 심볼이 256 이라면, Unary AAC 함수는 도 17 에 도시된 바와 같이, 심볼을 256 개의 0 와, 0 이 종료되었음을 나타내는 1 및 심볼의 부호(양수)를 나타내는 0을 부호화하게 된다. Unary AAC 함수에 의해서 부호화할 심볼의 비트 중복성이 증가하므로 부호화 효율이 높아지게 된다.
도 14h , 도 18a 및 도 18b 를 참조하여, SQ AAC 함수의 부호화 과정을 설명한다. SQ AAC 함수는 양자화의 범위를 연속적으로 정의함으로써 각각의 심볼의 값을 부호화한다.
도 18a 는 SQ AAC 함수에 의해서 심볼을 부호화 개념을 설명하는 도면이다. 도 18a에 도시된 바와 같이 부호화할 입력 심볼은 1 이고, 부호화 범위의 최소값은 0 이며 최대값은 9 이다.
첫 번째 단계에서 SQ AAC 함수는 부호화 범위를 상위 범위 및 하위 범위의 2 개의 범위로 나누고, 부호화할 심볼 1 이 어느 범위에 속하는지를 살펴본다. 심볼 1 은 부호화 범위의 하위 범위에 속하므로 0을 부호화하고, 부호화 범위를 하위 범위로 갱신한다. 즉, 부호화 범위의 최대값을 하위 범위의 최대값으로 갱신한다. 따라서, 두 번째 단계에서의 부호화 범위는 [0,4]이 된다.
두 번째 단계에도 SQ AAC 함수는 부호화 범위를 상위 범위와 하위 범위로 나누고, 부호화할 심볼 1 이 어느 범위에 속하는지 조사한다. 심볼 1 은 부호화 범위의 하위 범위에 속하므로 0을 부호화하고, 부호화 범위의 최대값을 하위 범위의 최대값인 1 로 갱신한다. 따라서, 새로운 부호화 범위는 하위 범위인 [0,1] 로 갱신된다.
세 번째 단계에서 SQ AAC 함수는 부호화 범위를 상위 범위인 1 과 하위 범위인 0 으로 나누고, 부호화할 심볼 1 이 어느 범위에 속하는지를 조사한다. 이번에는 심볼이 상위 범위인 1 과 같으므로, 1을 부호화하고, 부호화 범위의 최소값을 1 로 갱신한다. 따라서, 새로운 부호화 범위는 [1,1] 이 되어, 부호화 범위의 최대값과 최소값은 동일하게 되었다. 부호화 범위의 최대값 및 최소값이 동일하면 SQ AAC 함수는 부호화 과정을 종료하게 된다.
도 14h 는 본 발명의 엔트로피 부호화기(1350)에서 SQ AAC 함수를 이용하여 입력된 하나의 성분의 차분 데이터를 엔트로피 부호화하는 과정을 설명하는 흐름도이다.
도 14h를 참조하면, 엔트로피 부호화기(1350)는 키 값 데이터의 차분 데이터, 입력된 차분 데이터(이하, "심볼"이라 칭함)를 엔트로피 부호화할 때 이용되는 비트수(nQP), 양자화된 값의 첫번째 값이 인트라값으로 부호화되었는지는 나타내는 nStartIndex 및 부호화할 심볼의 개수(n)을 입력으로 받는다(S14920).
엔트로피 부호화기(1350)는 입력된 모든 심볼의 부호(sign)를 부호화한 후, 입력 심볼을 모두 양수로 변환한다(S14940). 모든 값을 양수로 만드는 이유는 이후의 과정들은 음수를 입력으로 받지 않기 때문이다.
엔트로피 부호화기(1350)는 양수로 변환된 값들 중에서 최대값을 찾아 nMax 로 저장하고, 그것을 nQP 비트수만큼 부호화한다(S14960).
엔트로피 부호화기(1350)는 심볼들을 부호화할 부호화 범위를 초기화한다. 이 범위의 최소값(
Figure 112005060696882-pat00028
)은  0 으로 최대값(
Figure 112005060696882-pat00029
)은 제 S14960 단계에서 검출된 최대값(nMax)으로 설정한다. 또한, 모든 심볼에 대해서 각각 한 비트 크기의 플래그(
Figure 112005060696882-pat00030
)를 설정하며, 이 값은 심볼을 부호화할 때, 확률모델을 변환하기 위해서 사용된다(S14980). 이 플래그는 초기에 false 로 설정되며, 부호화할 값이 1 이 나오면 값을 true 로 변경되고, 그 이후부터는 부호화에 이용되는 확률모델이 변경된다.
그 후, 엔트로피 부호화기(1350)는 부호화할 각 성분의 첫 번째 차분 데이터를 설정하고(i=nStartIndex), 각 성분의 모든 심볼의 부호화가 종료되었는지를 나타내는 플래그(nDone)를 참으로 설정한다(S15000).
엔트로피 부호화기(1350)는 모든 심볼의 부호화 범위의 최대값과 최소값이 같아질 때까지 다음의 제 S15020 단계 내지 제 S15180 단계를 반복한다. (어떤 심볼의 부호화 범위의 최대값과 최소값이 같다는 것은 이 심볼의 부호화가 종료되었다는 것을 의미하기 때문에, 모든 심볼의 범위의 최대값 및 최소값이 같다는 것 은 더 이상 부호화할 심볼이 없음을 의미한다.)
엔트로피 부호화기(1350)는 현재 심볼의 부호화 범위의 최대값(
Figure 112005060696882-pat00031
)과 최소값(
Figure 112005060696882-pat00032
)이 동일한지를 조사하여(S15020), 최대값과 최소값이 같으면 다음 심볼의 부호화 과정으로 진행하고, 동일하지 않으면 현재 성분의 부호화가 종료되지 않았음을 bDone 값을 "거짓"으로 설정하여 기록한다(S15040).
그 후, 부호화기는 현재 심볼의 부호화 범위의 중간값을 계산하고(S15060), 중간값과 심볼의 값을 비교한다(S15080). 본 발명의 실시예에서는 중간값(nMid)를 다음의 수학식 21를 이용하여 계산하였다.
Figure 112005060696882-pat00033
비교 결과, 심볼의 값이 중간값이하면, 0 을 비트스트림으로 출력한 후, 이 심볼의 부호화 범위의 최대값(
Figure 112005060696882-pat00034
)을 중간값으로 대체한다(S15100).
그러나, 비교 결과 심볼의 값이 중간값 이상이면, 1 을 비트스트림으로 출력한 후, 이 심볼의 부호화 범위의 최소값(
Figure 112005060696882-pat00035
)을 중간값으로 대체한다. 이때, 현재의 심볼이 처음으로 중간값 이상이 되는 경우, 즉 처음으로 1이 비트스트림으로 출력된 경우라면, 부호화에 이용되는 확률모델을 변경하기 위해서
Figure 112005060696882-pat00036
를 참으로 설정한다(S15120).
SQ AAC 함수에서 사용되는 확률모델은 2개가 존재한다. 하나는 각 심볼이 최초로 1 을 출력하기 전까지 출력되는 각 비트를 엔트로피 부호화하기 위해서 사용되는 notFoundContext 이고, 다른 하나는 각 심볼들이 최초로 1이 나온 이후의 모든 비트를 엔트로피 부호화하기 위해서 사용되는 FoundContext 이다. 이렇게 확률 모델을 변경하는 이유는 첫 번째 확률 모델을 사용할 때, 0 이 나올 수 있는 확률을 높이기 위함이다. 0 이 나올 확률이 높아지면 그만큼 엔트로피 부호화의 효율을 높아지게 된다.
그 후, 부호화기는
Figure 112005060696882-pat00037
값을 조사하여(S15140),
Figure 112005060696882-pat00038
값이 참이면 Found context를 이용해서 차분 데이터를 부호화하고(S15160),
Figure 112005060696882-pat00039
값이 거짓이면 notFound context를 이용해서 차분 데이터를 부호화한다(S15180).
한 심볼에 대한 부호화 과정(S15020 내지 S15180)이 종료되면, 부호화기는 인덱스를 1 증가시키고(S15200), 모든 심볼에 대해서 부호화 과정이 종료되었는지를 조사하여(S15220), 부호화할 심볼이 더 있으면 제 S15020 단계부터 다시 수행한다.
모든 심볼에 대해서 부호화 과정이 종료되면, 엔트로피 부호화기(1350)는 bDone 플래그를 조사하여 모든 성분에 대한 부호화 과정이 종료되었는지를 조사하고(S15240), bDone 이 참이면 모든 부호화 과정을 종료하고, bDone 이 거짓이면 다른 성분의 심볼들을 부호화하기 위해서 S15000 단계부터 다시 수행한다.
도 18b 는 SQ AAC 함수에 의해서 다수의 심볼을 부호화하는 과정을 설명하는 도면으로서, 입력된 부호화될 심볼들이 0, 1, 2, 3, 4, 및 9 라 할 때의 부호화 과 정을 예시한다.
도 14a를 다시 참조하면, 부호화 장치는 입력된 키 값 데이터를 모두 엔트로피 부호화하여 비트스트림을 생성하면, 부호화된 키 값 데이터를 복호화할 때 필요한 정보를 헤더 부호화기(400)에서 키 값 헤더 정보로서 부호화하여, 미리 생성된 키 값 데이터 비트스트림에 합산하여 출력한다(S15300).
헤더 부호화기(400)는 부호화할 키 값 데이터를 입력받아 키 값 데이터의 개수 및 키 값 데이터의 자리수(digit)를 부호화한다. 또한, 키 값 데이터의 양자화 비트 사이즈를 부호화하고, x, y, 및 z 각 성분에 대해서 모든 양자화 값이 같은지(예컨대, y 및 z 성분의 키 값 데이터는 변화하나 x 성분의 변화가 극히 미약하여, 양자화된 x 성분의 키 값 데이터가 모두 동일한 경우)를 판별하여 그 결과를 플래그로써 부호화한다.
예컨대, 만약 X 성분의 양자화 값들이 모두 같지는 않으면, X 성분의 부호화에 이용된 DPCM 연산의 종류(예컨대, 순환 DPCM 연산인지 또는 예측 순환 DPCM 연산인지 여부), 및 X 성분의 키 값 데이터를 UnaryAAC로 부호화할 것인지 여부를 각각 플래그로써 부호화한다. 또한, 키 값 데이터를 UnarryAAC로 부호화하지 않는다면, x 성분의 부호화 비트 사이즈, 및 x 성분의 부호화 시작 키 값 데이터를 키 값 헤더로 부호화한다.
한편, y 및 z 의 양자화된 키 값 데이터가 x 와 마찬가지로 모두 같지는 않으면, y 및 z 성분의 키 값 데이터에 대해서도 상술한 x 성분의 키 값 헤더 정보와 동일한 정보를 헤더로서 부호화한다.
또한, X 의 모든 양자화 값들이 같지 않고, 엔트로피 부호화할 때 UnaryAAC를 사용하지 않으며, 부호화 시작 키 값 데이터가 첫 번째 키 값 데이터라면, 첫 번째 키 값 데이터를 인트라 데이터로서 부호화하고, 이러한 과정을 Y 및 Z 성분에 대해서 반복한다.
헤더 부호화기(400)는 정규화기(1300)로부터 최대 범위를 가지는 성분을 조사하여 nWhichAxis변수의 값을, 최대 성분이 X 이면 0 으로, Y 이면 1로, Z 이면 2로 각각 설정하고, nWhichAxis와 x_min, y_min, z_min, max값을 실수 부호화기(1330)를 사용하여 키 헤더로서 부호화한다. 또한, 양자화 오차 최소화부(1320)로부터 각 성분의 양자화 오차를 최소화하는 최소값 및 최대값을 실수 부호화기로부터 입력받아 키 값 헤더로 부호화한다.
지금까지 본 발명의 바람직한 실시예에 따른 키 값 데이터 부호화기(300) 및 부호화 방법에 관하여 설명하였다.
다시 도 3a 및 도 3b를 참조하면, 본 발명의 부호화기는 키 데이터 및 키 값 데이터를 부호화한 후, 헤더 부호화기(400)에서 헤더 정보를 부호화한 후(S380), 부호화된 키 데이터, 키 값 데이터, 및 헤더를 합하여 위치 인터폴레이터를 부호화한 비트스트림을 출력한다.
이하, 도 19a 내지 도 24를 참조하여 본 발명의 바람직한 실시예에 따른 위치 인터폴레이터를 부호화한 비트스트림을 복호화하는 복호화 장치 및 복호화 방법을 설명한다.
도 19a 는 본 발명의 바람직한 실시예에 따른 복호화 장치의 구성을 도시하 는 블록도이고, 도 19b 는 부호화된 위치 인터폴레이터를 복호화하는 방법을 설명하는 흐름도이다.
도 19a를 참조하면, 본 발명의 복호화 장치는 입력된 비트스트림으로부터 키 데이터를 복호화하는 키 데이터 복호화기(1920), 입력된 비트스트림으로부터 키 값 데이터를 복호화하는 키 값 데이터 복호화기(1950), 입력된 비트스트림으로부터 헤더 정보를 복호화하여 키 데이터 복호화기(1920) 및 키 값 데이터 복호화기(1950)로 출력하는 헤더 복호화기(1910), 및 헤더 복호화기(1910)로부터 입력된 정보에 따라서 복호화된 키 데이터 및 키 값 데이터를 합성하여 복호화된 위치 인터폴레이터를 출력하는 위치 인터폴레이터 합성기(1980)를 포함한다.
도 19b를 참조하면, 도 3a 에 도시된 부호화 장치에 의해서 부호화된 위치 인터폴레이터는 본 발명의 부호화 장치의 키 데이터 복호화기(1920), 키 값 데이터 복호화기(1950) 및 헤더 복호화기(1910)로 각각 입력된다(S19000).
헤더 복호화기(1910)는 입력된 비트스트림으로부터 헤더 정보를 복호화하여 키 데이터 부호화기(200), 키 값 데이터 부호화기(300) 및 위치 인터폴레이터 합성기(1980)로 각각 제공한다(S19100).
키 데이터 복호화기(1920)는 입력된 비트스트림으로부터 키 데이터를 엔트로피 복호화하고, 소정의 역 DND 연산, 역 폴딩 연산, 역 쉬프팅 연산등을 수행하여 복호화된 키 데이터를 생성하여 위치 인터폴레이터 합성기(1980)로 출력한다. 또한, 키 값 데이터 복호화기(1950)는 입력된 비트스트림으로부터 키 값 데이터를 엔트로피 복호화하고, 소정의 역 양자화 연산 및 역 DPCM 연산등을 수행하여 복호 화된 키 값 데이터를 생성하여 위치 인터폴레이터 합성기(1980)로 출력한다(S19200).
위치 인터폴레이터 합성기(1980)는 헤더 복호화기(1910)로부터 입력된 모드 설정 신호 및 키 선택 플래그에 따라서 입력된 키 데이터 및 키 값 데이터를 합성하여 위치 인터폴레이터를 합성하여 출력한다(S19400).
이하, 도 20 내지 도 21b 를 참조하여 본 발명의 바람직한 실시예에 따른 키 데이터 복호화기(1920) 및 복호화 방법을 설명한다.
도 20 은 본 발명의 바람직한 실시예에 따른 키 데이터 복호화기(1920)의 구성을 도시하는 블록도이다. 본 발명의 키 데이터 복호화기는 부호화된 비트스트림을 수신하여, 복호화된 키 데이터로 재구성한다.
본 발명의 키 데이터 복호화기(1920)는 엔트로피 복호화기(2060), 역DND 처리부(2050), 역폴딩 처리부(2040), 역쉬프팅부(2030), 역DPCM 처리부(2020), 역양자화기(2010), 선형 키 복호화기(2000) 및 실수 역변환부(2005)를 포함한다.
도 21a 는 본 발명의 바람직한 실시예에 따른 키 데이터 복호화 방법을 설명하는 흐름도이다.
먼저, 입력 비트스트림은 헤더 복호화기(1910) 및 엔트로피 복호화기(2060)로 입력된다.
헤더 복호화기(1910)는 각 복호화 단계별로 필요한 정보를 복호화하여 각 단계에 제공하는데, 헤더 복호화기(1910)에서 복호화되는 정보는 각 단계마다 설명한다(S21000).
비트스트림을 입력받은 엔트로피 복호화기(2060)는 헤더 복호화기(1910)로부터 복호화할 차분 데이터의 개수와 부호화에 이용된 비트수, 즉, 복호화할 비트수를 입력받아, 비트스트림을 엔트로피 복호화한다(S21100). 이 때, 복호화할 차분 데이터의 개수는 주어진 키 데이터의 개수에서 DPCM 연산의 인트라 키 데이터의 개수만큼 감산한 개수가 된다.
엔트로피 복호화기(2060)는 비트스트림을 복호화할 때, 비트스트림에 포함된 소정의 정보(본 실시예에서는 bSignedAACFlag)를 참조하여 부호화된 차분 데이터가 음수인지 또는 양수인지를 식별하고, 음수이면 decodeSignedAAC() 함수를 사용하여 복호화하고, 양수이면 decodeUnsignedAAC() 함수를 사용하여 복호화한다. 이렇게 해서 복호화된 차분 데이터는 역 DND 처리부(2050)로 전달된다.
엔트로피 복호화된 차분 데이터를 수신한 역 DND 처리부(2050)는 헤더 복호화기(1910)로부터 DND 차수 및 각 DND 차수에서의 최대값(nKeyMax)을 입력받는다.
만약, DND 차수가 -1 이라면, 이것은 부호화기가 DND 연산된 차분 데이터 대신에 DPCM 연산되고 쉬프팅된 차분 데이터를 엔트로피 부호화하였다는 것을 나타내므로, 역 쉬프팅 연산을 수행하는 과정으로 바로 진행한다. 한편, DND 차수가 0 이라면, 이것은 부호화기가 DND 연산된 차분 데이터 대신에 폴딩된 차분 데이터를 엔트로피 부호화하였다는 것을 나타내므로, 역폴딩 연산을 수행하는 과정으로 바로 진행한다. 그러나, DND 차수가 0보다 크다면, 역 DND 연산을 수행하게 된다(S21200).
먼저, 역 DND 처리부(2050)는 쉬프트-업 연산이 수행된 차분 데이터가 부호 화되었는지를 판단한다(S21300). 본 발명의 바람직한 실시예에서는 비트스트림에 포함된 nKeyInvertDown 값이 0 보다 큰 값인지 여부를 조사함으로써, 쉬프트-업 연산이 수행된 차분 데이터가 부호화되었는지 여부를 판단한다.
만약, 쉬프트-업 연산이 수행되지 않은 차분 데이터가 부호화되었다면, 역 DND 처리부(2050)는 역 DND 연산을 수행하는 과정으로 진행한다. 그러나, 쉬프트-업 연산이 수행된 차분 데이터가 부호화되었다면, 쉬프트-업 연산으로 인해 양수의 영역로 이동된 차분 데이터를 다시 원래의 음수영역으로 환원한다(S21400). 본 발명의 실시예는 다음의 수학식 22 로 표현되는 쉬프트-다운(이하, "인버트-다운(invert-down)"과 동일한 의미로 사용됨) 연산을 수행하여 쉬프트-업 연산된 차분 데이터를 복원한다.
Figure 112005060696882-pat00040
여기서, nKeyInvertDown은 쉬프트-업 연산에서의 최대값(nKeyMax)와 동일한 값이 이용된다. 쉬프트-다운 연산에 의해서 nKeyInvertDown을 초과하는 차분 데이터들은 -1 이하의 음수값으로 변환된다.
쉬프트-다운 연산이 수행된 차분 데이들에 대해서 각 DND 차수에서의 nKeyMax 값에 따라서 역 디바이드-다운 또는 역 디바이드-업 연산이 선택적으로 수행된다.
도 21b을 더 참조하여, 본 역 DND 연산 과정을 살펴보면, 역 DND 처리부(2050)는 부호화과정에서 수행된 DND 연산의 차수의 회수만큼 역 DND 연산을 수행한다. 즉, 역 DND 처리부(2050)는 역 DND 차수의 초기값을 DND 차수로 설정하고, 역 DND 연산을 수행할 때마다 1씩 감산하고 역 DND 차수가 1 이 될 때까지 역 DND 연산을 수행한다. 먼저, 역 DND 처리부(2050)는 각 차수에서의 nKeyMax 값을 조사하여 nKeyMax 값이 0 이상인지를 판단한다(S21510).
nKeyMax 값이 0 보다 작다면, 부호화 과정에서 디바이드-업 연산이 수행되었음을 의미하므로, 역 DND 처리부(2050)는 역 디바이드-업 연산을 수행하여 차분 데이터의 범위를 음수 영역으로 확장한다(S21530). 본 발명의 바람직한 실시예는 다음의 수학식 23 과 같은 역 디바이드-업 연산을 이용하였다.
Figure 112005060696882-pat00041
그러나, 만약, nKeyMax 가 0 이상이라면, 역 DND 처리부(2050)는 역 DND 연산의 차수가 1 인지를 조사한다. 역 DND 차수가 1 이 아니라면, 부호화할 때 디바이드-다운 연산이 수행되었음을 의미하므로, 역 DND 처리부(2050)는 역 디바이드-다운 연산을 수행하여 차분 데이터의 범위를 양수 영역으로 확장한다(S21570).
본 발명의 바람직한 실시예는 다음의 수학식 24 와 같은 역 디바이드-다운 연산을 이용하였다.
Figure 112005060696882-pat00042
만약, nKeyMax 가 0 이상이고, 역 DND 연산의 차수가 1 이라면, 역 DND 처리부(2050)는 역 디바이드 연산을 수행함으로써 역 DND 연산을 종료하게 된다(S21590). 본 발명의 바람직한 실시예는 다음의 수학식 25 와 같은 역 디바이드 연산을 이용하였다.
Figure 112005060696882-pat00043
역 DND 연산이 수행된 키 데이터의 차분 데이터는 역 폴딩 처리부(2040)로 입력되고, 역 폴딩 처리부(2040)는 역폴딩 연산을 수행하여, 양수영역에만 위치하는 차분 데이터의 범위를 양수와 음수로 분리한다(S21600). 본 발명의 바람직한 실시예는 다음의 수학식 26 과 같은 역폴딩 연산을 이용하였다.
Figure 112005060696882-pat00044
역폴딩된 차분 데이터는 역 쉬프팅부(2030)로 출력되고, 역 쉬프팅부(2030)는 헤더 복호화기(1910)로부터 부호화기에서 이용된 모드(nKeyShift)를 입력받아, 다음의 수학식 27 에서와 같이 입력된 차분 데이터들에 모드를 합산한다(S21700).
Figure 112005060696882-pat00045
역 쉬프팅부(2030)로부터 차분 데이터를 입력받은 역 DPCM 처리부(2020)는 키 헤더 부호화기(1910)로부터 DPCM 차수를 입력받아, 차분 데이터를 양자화된 키 데이터로 복원한다(S21800). 역 쉬프팅부(2030)는 다음의 수학식 28 을 이용하여 DPCM 차수만큼 역 DPCM 연산을 수행한다.
Figure 112005060696882-pat00046
여기서, i 는 차분 데이터 및 키 데이터의 인덱스를, v 는 정수 배열을, delta(i) 는 차분 데이터를 각각 나타낸다.
역 DPCM 처리되어 생성된 양자화된 키 데이터는 역 양자화기(2010)로 입력되고, 역 양자화기(2010)는 헤더 복호화기(1910)로부터 양자화 비트 사이즈 (nKeyQBit) 및 역 양자화에 이용될 최대값 및 최소값이 양자화과정에서 실수 변환부(205)에 의해서 부호화되었는지 여부를 입력받아, 다음의 수학식 29 를 이용하여 입력된 양자화된 키 데이터를 역 양자화된 키 데이터로 변환한다(S21900).
Figure 112005060696882-pat00047
부호화기에서 키 데이터를 양자화할 때, 양자화에 이용된 최대값 및 최소값이 실수 변환부(205)에서 변환되지 않았다면, 수학식 29 의 fKeyMin 및 fKeyMax 는 0 및 1 로 각각 설정된다. 그러나, 양자화에 이용된 최대값 및 최소값이 실수 변환부(205)에 의해서 변환되었다면, 역 양자화에 이용되는 최대값 및 최소값은 후술할 실수 역변환부(2005)에서 역 변환되어 입력되는 최소값 및 최대값이 각각 이용된다.
한편, 역양자화기(2010)에서 출력되는 복호화된 키 데이터는 선형 키 복호화기(2000)에서 복호화된 선형 키 데이터와 합산되어 복호화된 키 데이터를 구성한다.
이하, 선형 키 복호화과정을 설명한다.
헤더 복호화기(1910)는 비트스트림으로부터 키 헤더 정보를 복호화해서 선형 키에 관한 정보가 있으면, 선형 키 영역의 시작 키와 종료 키를 복호화하기 위해서 필요한 정보를 실수 역변환부(2005)로 출력하고, 선형 키 복호화기(2000)로 선형 키로 부호화된 키의 개수를 출력한다.
선형 키 복호화에 이용될 시작 키 및 종료 키 정보를 입력받은 실수 역변환부(2005)는 10진수 체계로 표현된 시작 키 및 종료 키를 다시 2 진수 체계로 역변환하여 선형키 복호화기(2000)로 출력한다.
복호화할 2개의 실수를 fKeyMin과 fKeyMax라고 하면, 첫 번째 값 fKeyMin을 역변환하는 과정은 다음과 같다.
헤더 복호화기(1910)는 fKeyMin의 자릿수를 비트스트림으로부터 읽어드린다. 만약에 자릿수가 0이면 fKeyMin의 값을 0으로 설정한 후, fKeyMax의 값을 복호화하기 위해서 fKeyMax 의 자리수를 비트스트림으로부터 판독한다. 만약에 자릿수가 8이상이면 IEEE 표준 754 방식에 따라서 부호화된 것이므로, 실수(floating-point number)를 32bit만큼 읽어드린 후, fKeyMax의 값을 복호화하는 과정으로 진행한다.
그러나, 만약에 자릿수가 1 과 7 사이의 값을 가지면, 헤더 복호화기(1910)는 부호 비트를 비트스트림으로부터 판독한다. 본 발명의 실시예에서는, 부호비트가 1 이면 MinKeyMantissaSign를 -1로, 0 이면 MinKeyMantissaSign를 1 로 설정하여 부호를 판독한다. 그리고, mantissa를 상술한 표 3 의 자릿수와 필요한 비트수의 관계를 참조하여 필요한 비트수를 얻은 후, 그 비트수만큼 비트스트림으로부터 판독하고, 판독된 값을 nMinKeyMantissa에 저장한다. 그 후, 비트스트림으로부터 1 비트만큼 판독하여 MinKeyExponentSign에 저장하되, MinKeyMantissaSign과 같은 방식으로 저장한다. 그리고 비트스트림으로부터 6bit만큼의 exponent값을 판독하여 nMinKeyExponent에 저장한다.
실수 역변환부(2005)는 헤더 복호화기(1910)로부터 입력된 값을 다음의 수학 식 30 를 대입하여 fKeyMin을 복원한다.
Figure 112005060696882-pat00048
fKeyMax를 복원하는 과정은 fKeyMin과 동일하다. 다만, fKeyMax의 exponent를 비트스트림으로부터 판독하기 전에, fKeyMax 의 exponent로 fKeyMin과 동일한 exponent가 이용되었는지를 판독하여, 동일한 값이 이용되었으면, fKeyMin의 exponent를 사용하고, 그렇지 않으면 fKeyMin의 exponent를 비트스트림으로부터 판독하는 방식과 동일하게 fKeyMax 의 exponent를 판독한다.
한편, 실수 역변환부(2005)로부터 선형 키 영역의 시작 키와 종료 키를 입력받은 선형 키 복호화기(2000)는 다음의 수학식 31 을 이용하여 선형 키 영역을 복호화한다.
Figure 112005060696882-pat00049
여기서, fKeyMin 및 fKeyMax 는 선형 키 영역의 시작 및 종료 키 데이터를 의미한다.
이렇게 복호화된 선형 키 영역의 키 데이터는 역양자화기(2010)로부터 출력된 키 데이터와 합산되어 복호화된 최종 키 데이터로서 출력된다.
이하, 도 22a 내지 도 23e 를 참조하여 본 발명의 바람직한 실시예에 따른 키 값 데이터 복호화기(1950) 및 복호화 방법을 설명한다.
도 22a를 참조하면, 본 발명의 키 값 데이터 복호화기(1950)는 입력된 비트스트림을 엔트로피 복호화하여 차분 데이터를 출력하는 엔트로피 복호화기(2220), 차분 데이터에 역 순환 DPCM 연산 및 역 예측 순환 DPCM 연산을 수행하여 양자화된 키 값 데이터를 출력하는 역 DPCM 처리부(2230), 양자화된 키 값 데이터를 역 양자화하여 정규화된 키 값 데이터를 출력하는 역 양자화기(2240), 키 값 헤더 복호화기로부터 각 성분의 양자화된 키 값 데이터의 최소값 및 최대값을 입력받아 2진수 체계의 실수로 변환하여 역 양자화기(2240)로 출력하고 각 성분의 키 값 데이터의 최소값 및 최대값을 2진수 체계의 실수로 변환하여 출력하는 실수 복호화기(2260), 및 실수 복호화기로부터 각 성분의 키 값 데이터의 최소값 및 모든 성분의 키 값 데이터 중 최대값을 입력받아 키 값 데이터를 역 정규화하는 역 정규화기(2250)를 포함한다.
이하, 키 값 데이터 복호화 방법을 설명한 흐름도인 도 23a 를 더 참조하여 복호화 방법을 설명한다.
부호화된 키 값 데이터의 비트스트림이 엔트로피 복호화기(2220)로 입력되면, 먼저, 헤더 복호화기(1910)는 입력된 비트스트림에서 복호화에 필요한 헤더 정보를 추출하여 복호화하고, 복호화된 헤더 정보를 엔트로피 복호화기(2220), 역 DPCM 처리부(2230), 및 역 양자화기(2240)로 각각 출력한다(S23000).
한편, 엔트로피 복호화기(2220)는 입력된 비트스트림을 엔트로피 복호화하여 차분 데이터를 역 DPCM 처리부(2230)로 출력한다(S23200).
엔트로피 복호화 과정을 설명하는 흐름도인 도 23b를 참조하면, 비트스트림(
Figure 112005060696882-pat00050
)은 엔트로피 복호화기(2220)로 입력된다(S23210).
엔트로피 복호화기(2220)는 입력된 비트스트림에 포함된 한 성분(예컨대, X 성분)의 키 값 데이터의 양자화된 값들이 모두 동일한지(즉, 차분 데이터가 모두 0 인지)를 조사하고(S23220), 모두 동일하다면, 그 성분의 모든 심볼을 헤더 복호화기(1910)로부터 입력받은 최소값(예컨대, fMin_X)으로 설정하여 복호화 한다(S23230).
엔트로피 복호화기(2220)는 키 값 데이터의 양자화된 값들이 모두 동일하지 않으면, 키 값 데이터들이 Unary AAC 함수로 부호화되었는지를 조사하여(S23240), Unary AAC 함수로 부호화되었다면, Unary AAC 함수를 이용하여 복호화한다(S23250).
Unary AAC 함수는 비트스트림으로부터 1 이 판독될 때까지 0을 판독하고, 판독된 0 의 개수를 절대값으로 변환한 후, 1 이 판독된 비트 다음의 부호 비트를 판독하여 복호화된 값을 출력한다.
키 값 데이터들이 Unary AAC 함수로 부호화되지 않았다면, 엔트로피 복호화기(2220)는 SQ AAC 함수를 이용하여 입력된 비트스트림을 복호화한다(S23300).
도 23c 를 참조하여, 엔트로피 복호화기(2220)가 SQ AAC 함수를 이용하여 한 성분의 키 값 데이터를 부호화한 비트스트림을 복호화하는 과정을 설명한다.
엔트로피 복호화기(2220)는 모든 심볼의 부호를 비트스트림으로부터 복호화하고, 최대값(nMax)을 복호화한 후, 모든 심볼들의 복호화 범위(0 부터 최대값 (nMax)까지) 및
Figure 112005060696882-pat00051
플래그를 거짓(false)으로 초기화한다(S23310).
그 후, 엔트로피 복호화기(2220)는 복호화할 첫 번째 키 값 데이터를 설정(i=nStartIndex)하고, bDone을 참으로 설정한다(S23320).
엔트로피 복호화기(2220)는 심볼을 복호화하기 위해서 다음의 제 S23330 단계 내지 S23430 단계를 반복한다.
먼저, 엔트로피 복호화기(2220)는 복호화 범위의 최대값(
Figure 112005060696882-pat00052
)과 최소값(
Figure 112005060696882-pat00053
)이 동일한지를 조사한다(S23330).
복호화 범위의 최대값과 최소값이 동일하면 복호화될 심볼의 값을 범위의 최대값(또는, 최소값)으로 결정하고(S23340), 동일하지 않은 경우에는 bDone을 거짓(false)로 설정하고 심볼의 복호화 범위의 중간값(nMid)을 다음의 수학식 32 에 따라서 갱신한다(S23350).
Figure 112005060696882-pat00054
엔트로피 복호화기(2220)는 복호화에 이용할 확률 모델을 결정하기 위해서 컨택스트 플래그(
Figure 112005060696882-pat00055
)가 참인지를 조사하고(S23360), 참이면 FoundContext를 이용해서 비트스트림을 복호화하고(S23370), 거짓이면 notFoundContext를 이용해서 비트스트림을 복호화한다(S23380).
비트스트림으로부터 1 비트를 복호화한 엔트로피 복호화기(2220)는 판독된 비트가 1 인지를 조사하여(S23390), 1 이 아니면 복호화 범위의 최대값을 중간값으로 대체하고(S23400), 판독된 비트가 1이면 복호화 범위의 최소값을 중간값으로 대체한 후, 컨택스트 플래그(
Figure 112005060696882-pat00056
)를 참으로 설정한다(S23410).
엔트로피 복호화기(2220)는 복호화 인덱스를 1 증가시키고(S23420), 한 성분의 모든 키 값 데이터가 복호화 되었는지를 조사한 후(S23430), 아직 복호화할 심볼이 더 있으면 S23330 단계 내지 S23420 단계를 반복한다.
한편, 한 성분의 키 값 데이터가 모두 복호화되었다면, 엔트로피 복호화기(2220)는 복호화할 다른 성분의 키 값 데이터가 더 있는지를 조사하고(S22440), 더 있다면 제 S23320 단계 내지 제 S23430 단계를 반복 수행한다.
도 22a 및 도 23a 를 다시 참조하면, 엔트로피 복호화기(2220)에 의해서 복호화된 키 값 데이터의 차분 데이터는 역 DPCM 처리부(2230)로 입력되어, 역 순환 DPCM 연산 및 역 예측 순환 DPCM 연산이 수행된다(S23500).
도 23d 를 더 참조하여 본 발명의 역 DPCM 연산 과정(S23500)을 설명한다.
역 DPCM 연산될 차분 데이터는 판단부(1132)로 입력되고, 판단부(1132)는 입력된 차분 데이터에 수행된 DPCM 연산의 종류를 조사하여 어떤 역 DPCM 연산을 수행할 지를 결졍하고, 입력된 차분 데이터를 역 순환 DPCM 연산부(2234) 또는 역 예측 순환 DPCM 연산부(2238)로 출력한다(S23520).
먼저, 역 순환 DPCM 연산부(2234)의 처리 과정을 살펴보면, nMax 가 입력된 데이터의 양자화 범위의 최대값이라고 할 때, 역 순환 DPCM 연산부(2234)는 다음의 수학식 33 을 이용하여 입력된 차분 데이터(
Figure 112005060696882-pat00057
)를 역 순환 양자화하고, 역 순환 양자화된 차분 데이터(
Figure 112005060696882-pat00058
)를 계산한다(S23540).
Figure 112005060696882-pat00059
그 후, 역 순환 DPCM 연산부(2234)는 다음의 수학식 34 에 따라서 입력된 값(
Figure 112005060696882-pat00060
)을 이용하여 역 DPCM 연산된 A 값과, 역 순환 양자화된 차분 데이터(
Figure 112005060696882-pat00061
)를 이용하여 역 DPCM 연산된 B 값을 구한다(S23560).
Figure 112005060696882-pat00062
상기 수학식에서 , n 이 데이터의 개수를 나타낼 때, i 는 1 내지 n-1 의 정수이다.
역 순환 DPCM 연산부(2234)는 A 값이 0 이상이고 nMax 이하이면 A 를 역 순환 DPCM 연산된 데이터(
Figure 112005060696882-pat00063
)로서 출력하고, A 값이 0 보다 작거나 nMax 값보다 크면 B 값을 출력한다(S23580).
한편, 역 예측 순환 DPCM 연산부(2238)는 상기 수학식 34 를 이용하여 입력된 예측 차분 데이터(
Figure 112005060696882-pat00064
)를 역 순환 양자화하여, 역 순환 양자화된 예측 차분 데이터(
Figure 112005060696882-pat00065
)를 계산한다(S23540).
그 후, 복호화에 이용되는 예측값이
Figure 112005060696882-pat00066
라고 할 때, 역 예측 순환 DPCM 연산부(2238)는 다음의 수학식 35 에 따라서, 입력된 값(
Figure 112005060696882-pat00067
)을 이용하여 역 예측 DPCM 연산된 A 값을 구하고, 다음의 수학식 36 에 따라서 역 순환 양자화된 차분 데이터(
Figure 112005060696882-pat00068
)를 이용하여 역 예측 DPCM 연산된 B 값을 구한다(S23560).
Figure 112005060696882-pat00069
Figure 112005060696882-pat00070
상기 수학식들에서 , n 이 데이터의 개수를 나타낼 때, i 는 1 내지 n-1 의 정수이다.
역 순환 DPCM 연산부(2234)는 A 값이 0 이상이고 nMax 이하이면 A 를 역 순환 DPCM 연산된 데이터(
Figure 112005060696882-pat00071
)로서 출력하고, A 값이 0 보다 작거나 nMax 값보다 크면 B 값을 출력한다(S23580).
역 DPCM 처리부(2230)는 상술한 역 DPCM 연산이 수행되어 생성된 양자화된 키 값 데이터(
Figure 112005060696882-pat00072
)를 역 양자화기(2240)로 출력하고, 역 양자화기(2240)는 입력된 양자화된 키 값 데이터(
Figure 112005060696882-pat00073
)를 헤더 복호화기(1910)로부터 입력된 양자화 비트(nKeyValueQBits)로 역 양자화한다(S23700). n 을 헤더 복호화기(1910)로부터 입력된 복호화될 키 값 데이터의 개수라고 할 때, 역 양자화기(2240)의 역 양자화 과정은 다음의 수학식 37 로 표현된다.
Figure 112005060696882-pat00074
역 양자화기는 각 성분에 대해서 모두 역 양자화를 수행하여 정규화된 데이터를 생성하고, 정규화된 각 성분의 키 값 데이터를 역 정규화기(2250)로 출력한다.
역 정규화기(2250)는 실수 복호화기로부터 입력된 정보를 이용하여 정규화된 키 값 데이터를 역 정규화한다(S23800). 도 23e를 더 참조하여, 정규화된 데이터의 역 정규화 과정을 살펴본다.
실수 복호화기(2260)는 헤더 복호화기(1910)로부터 정규화에 이용된 최대값(fMax), 각 성분의 최소값(fMin_X, fMin_Y, 및 fMin_Z), 최대값이 포함된 성분 정보(nWhichAxis), 및 부호화 형식 정보(bUse32Float)를 입력받는다(S23820).
실수 복호화기(2260)는 수학식 4 에 기재된 관계에 따라서 입력된 10진수 체계로 표현된 최대값 및 최소값을 2진수 체계의 실수로 변환하고, 입력된 정보들과 변환된 최대값 및 최소값을 역 정규화기(2250)로 출력한다(S23840).
역 정규화기(2250)는 부호화 형식 정보(bUse32Float)를 조사하여, 입력된 최대값(fMax)과 최소값이 32 비트 단위로 부호화되었으면 다음의 수학식 38 에 따라서 최대범위(Rangemax)를 계산하고, 32 비트 단위로 부호화되지 않았다면 입력된 최대값을 최대 범위로 결정한다(S23860).
Figure 112005060696882-pat00075
최대 범위가 결정되면 역 정규화기(2250)는 최대범위에 따라서 각 성분의 키 값 데이터를 다음의 수학식 39 에 따라서 역 정규화한다(S23880).
Figure 112005060696882-pat00076
상기 수학식에서 n 은 데이터의 개수를 나타낸다.
역 정규화기(2250)는 역정규화된 키 값 데이터를 위치 인터폴레이터 합성기(1980)로 출력한다(S23900).
이하, 복호화된 키 데이터 및 키 값 데이터를 결합하는 위치 인터폴레이터 합성기(1980)에 대해서 설명한다.
도 24 는 위치 인터폴레이터 합성기(1980)의 처리과정을 설명하는 흐름도이 다.
합성기(1980)는 복호화된 키 데이터 및 키 값 데이터를 입력받고, 헤더 복호화기로부터 키 데이터의 개수 및 분절점 생성 모드를 입력받는다(S24000).
합성기(1980)는 분절점 생성모드를 조사하여, 분절점 생성 모드가 경로 유지 모드라면 복호화된 키 데이터 및 키 값 데이터를 출력한다(S24100). 경로 유지 모드로 분절점이 추출된 경우에는 키 데이터와 키 값 데이터가 서로 대응되므로 보간에 의해서 새로운 키 값 데이터를 생성할 필요가 없다. 그러나, 부호화된 위치 인터폴레이터가 키 유지 모드로 생성되었다면, 키 데이터는 모두 부호화되고 복호화된 반면, 키 값 데이터는 분절점에 해당되는 경우에만 부호화되므로 키 데이터와 키 값 데이터가 대응되지 않는다. 따라서, 이하 설명는 바와 같이 키 값 데이터를 보간하여야 한다.
분절점 추출에 이용된 생성 모드가 키 유지 모드라면, 키 데이터와 대응되는 키 값 데이터가 존재하는지를 살펴보기 위해서 키 데이터에 대응되도록 카운터를 설정한다(S24200).
합성기(1980)는 카운터가 설정되면 카운터가 가리키는 키 데이터에 대응되는 키 값 데이터가 존재하는지를 조사하여, 키 값 데이터가 존재하면 제 S24500 단계로 진행한다(S24300).
만약, 대응되는 키 값 데이터가 존재하지 않으면, 합성기(1980)는 현재의 키 데이터 이전의 분절점인 키 데이터에 대응되는 키 값 데이터 및 현재의 키 데이터 이후의 분절점인 키 데이터에 대응되는 키 값 데이터에 따라서 현재의 키 값 데이 터를 선형으로 보간하여, 키 값 데이터를 생성한다(S24400).
합성기(1980)는 키 값 데이터를 선형으로 보간한 후, 모든 키 데이터에 대해서 키 값 데이터의 존재 여부 및 선형 보간이 수행되었는지를 조사하여(S24500), 아직 조사하지 않은 키 데이터가 존재한다면, 카운터를 갱신하고 제 S24300 단계부터 다시 수행하고, 모든 키 데이터에 대해서 조사하였다면, 합성된 키 및 키 데이터를 위치 인터폴레이터로서 출력한다(S24600).
지금까지 위치 인터폴레이터에 포함되는 키 데이터 및 각 성분의 키 값 데이터를 부호화하고 복호화하는 방법 및 장치에 대해서 설명하였다.
이하에서는 도 28a 내지 도 28j를 참조하여 본 발명의 바람직한 실시예에 따라 키 및 키 값 데이터를 복호화하는 위치 인터폴레이터 복호화 장치를 구현하는 프로그램 코드의 일예를 SDL 언어 형식으로 구현한 예를 설명한다.
도 28a 에 도시된 CompressedPositionInterpolator 클래스는 최상위 클래스로서 위치 인터폴레이터의 압축 비트스트림을 판독하기 위한 클래스이다. 이 클래스는는 KeyHeader, PosIKeyValueHeader, KeySelectionFlag, Key 및 PosIKeyValue 서브 클래스를 포함한다. KeyHeader 및 PosIKeyValueHeader 클래스는 Key 및 PosIKeyValue 를 복호화하는데 이용되는 헤더 정보를 포함한다. KeySelectionFlag 클래스는 대응되는 키 값 데이터가 PosIKeyValue 에 포함되어 있는 경우에, 각 키를 나타내는 플래그를 갖는다. 마지막으로, Key 및 PosIKeyValue 클래스는 비트스트림으로부터 각각 키 및 키 값 데이터를 판독하는 클래스이다.
도 28b 에 도시된 키 헤더 클래스는 복호화에 필요한 정보인 키 헤더를 복호화하는 클래스이다.
키 헤더의 주된 정보는 키의 개수, 양자화 비트, 인트라 키 데이터, DND 헤더 및 부호화에 필요한 실제 비트수이다. nKeyQBit 는 실수 키 값을 복원하는 역 양자화에 이용되는 양자화비트이다. nNumKeyCodingBit은 키 데이터의 개수를 나타내는 nNumberOfKey의 비트 사이즈를 나타낸다. nKeyDigit은 원 키 데이터의 최대 중요 자리수를 나타내며, 복호화된 값의 반올림에 이용된다.
키 헤더에 선형 키 영역에 관한 정보가 포함된 경우에, blsLinearKeySubRegion 플래그가 1로 설정된다. 이 경우에, 전체 키에 포함되는 소정의 부영역에 포함된 키들은 blsLinearLeySubRegion 플래그를 추종하는 복호화된 헤더 정보를 이용하여 계산될 수 있다. bRangeFlag은 키 데이터의 범위가 0 내지 1 인지 여부를 나타낸다. 만약, 범위가 0 내지 1 이 아니라면, 최소값 및 최대값은 KeyMinMax 클래스로부터 복호화된다. KeyMinMax 클래스는 역양자화를 위해서 최소값 및 최대값을 재구성한다. 각 값은 mantissa 및 exponent 로 분리될 수 있다.
nBitSize는 nQIntraKey 의 비트 사이즈이고, nKeyShift 는 nKeyMax 의 최초 비트사이즈 이다. nQIntraKey는 제 1 양자화된 인트라 데이터의 크기이다. 이것은 nQIntraKey의 부호를 나타내는 nQIntraKeySign 과 함께 결합된다. 이것은 나머지 양자화된 키 데이터를 복원하기 위한 밑으로 이용된다. 인터폴레이터 압축에 이용되는 모든 부호 비트에 있어서, 0은 양수를 1 은 음수를 각각 의미한다. nKDPCMOrder는 DPCM 차수 - 1이다. 차수의 범위는 1 내지 3 이다. 양자화된 인트라 데이터의 수는 DPCM 의 차수와 같다.
nKeyShift는 부호 비트인 nKeyShiftSign 와 함께 키 데이터 복호화기의 쉬프트 양을 나타내는 정수이다. 이들 두 값은 bShiftFlag 이 1 로 설정되면 복호화된다. nDNDOrder 는 DND(Divide-and-Divide)의 차수이다. DND 는 키 데이터 복호화기에서 설명한다. 만약, nDNDOrder 값이 7 이면, bNoDND 가 복호화된다. 이 불리언(boolean)값은 역 DND가 처리될지 여부를 나타낸다. nKeyMax는 각각의 연속한 역 DND 연산동안 사용되는 최대값 및 최소값이다. nKeyCodingBit은 키 데이터의 부호화에 이용되는 비트이다.
bSignedAACFlag 는 AAC 복호화를 위해서 어떤 복호화 방법이 이용될 지를 나타낸다. 만약, 값이 0 이라면, unsignedAAC 복호화가 수행된다. 그렇지 않으면, signedAAC 복호화가 수행된다. bKeyInvertDownFlag 는 nKeyInvertDown 이 이용될지 여부를 나타내는 불리언 값이다. nKeyInvertDown 은 정수값으로, 이것을 초과하는 모든 양자화된 키 데이터를 -1이하의 음수값으로 반전시킨다. nKeyInvertDown이 -1 이면, 쉬프트-다운 연산은 수행되지 않는다.
도 28c 는 LinearKey 클래스를 도시한 도면이다. LinearKey 클래스에서 이용된 변수의 의미를 살펴보면, nNumLinearKeyCodingBit는 선형으로 예측가능한 키의 개수를 부호화하기 위해서 필요한 비트의 개수를 나타내는 값이다. nNumberOfLinearKey 는 선형으로 예측가능한 키 데이터의 개수를 나타낸다.
도 28d 는 KeyMinMax 클래스를 도시하는 도면이다.
KeyMinMax 클래스에서 이용된 변수의 의미를 살펴보면, 먼저, bMinKeyDigitSame 는 전체 키들의 최고 중요 자리수(nKeyDigit)와 키의 최대값의 최고 중요 자리수가 동일한지를 나타낸다. nMinKeyDigit은 키의 최대값의 최고 중요 자리수를 나타낸다. nMinKeyMantissaSign 은 nMinKeyMantissa의 부호를 나타낸다. nMinKeyMantissa는 키의 최소값의 mantissa를 나타낸다.
nMinKeyExponentSign 은 nMinKeyExponent의 부호를 나타낸다. nMinKeyexponent는 키의 최소값의 Exponent를 나타낸다.
fKeyMin 은 키의 최소값을 나타낸다. nMaxKeyDigitSame 은 전체 키들의 최고 중요 자리수(nKeyDigit)와 키의 최대값의 최고 중요 자리수가 동일한지를 나타낸다. nMaxKeyDigit은 키의 최대값의 중요 자리수를 나타낸다. nMaxKeyMantissaSign은 nMaxKeyMantissa의 부호를 나타낸다. nMaxKeyMantissa는 키의 최대값의 mantissa를 나타낸다.
bSameExponent 는 키의 최대값의 exponent가 nMinKeyExponent와 동일한지를 나타낸다. nMaxKeyExponentSign 은 nMaxKeyExponent 의 부호를 나타낸다. nMaxKeyExponent 는 키의 최대값의 exponent를 나타낸다. fKeyMax는 키의 최대값을 나타낸다.
도 28e 는 PosIKeyValueHeader 클래스를 도시한 도면이다. PosIKeyValueHeader 에 기재된 변수들의 의미를 살펴보면, 먼저, bPreserveKey 는 현재의 복호화 모드가 키 유지 모드인지의 여부를 나타내고, nKVQBit 는 키 값 데이터의 양자화 비트 사이즈를 나타낸다.
x_keyvalue_flag, y_keyvalue_flag 및 z_keyvalue_flag 는 세가지 성분인 (x, y, 및 z)를 나타내고, nKVDigit 키 값 데이터의 최대 중요 자리수를 나타내며, nKVDPCMOrder_X, nKVDPCMOrder_Y 및 nKVDPCMOrder_Z 는 각 키 값 데이터의 성분에 대해 사용된 DPCM 연산을 나타낸다. 만약, DPCM 연산이 이용되었다면 0 이 플래그로 설정되고, 예측 DPCM 연산이 이용되었다면, 1 이 플래그로 설정된다.
한편, bIsUnaryAAC_X, bIsUnaryAAC_Y, 및 bIsUnaryAAC_Z 는 unary AAC 함수가 엔트로피 부호화에 이용되었다는 것을 나타내고, nKVCodingBit_X, nKVCodingBit_Y 및 nKVCodingBit_Z 는 각 키 값 데이터의 성분에 대한 양자화 비트를 나타내며, nStartIndex_X, nStartIndex_Y 및 nStartIndex_Z 는 각 성분 축의 시작 인덱스를 나타내고, firstKV_X, firstKV_Y 및 firstKV_Z 는 첫 번째로 양자화된 키 값 데이터의 x, y 및 z를 나타낸다.
도 28f 는 KeyValueMinMax 클래스를 도시한 도면이다.
KeyValueMin 클래스는 키 값 데이터의 정규화에 이용된 최대값 및 최소값을 복원한다. bUse32Float는 최대값 및 최소값을 저장하기 위해서 32 비트 실수가 사용되었는지를 나타낸다. bUse32Float 가 0 이라면, 10진수 체계로 표현된 실수가 사용되었음을 나타낸다.
nWhichAxis 는 최대 범위를 갖는 성분을 나타낸다. 본 실시예에서는 nWhichAxis 가 0이면 x 축을, 1 이면 y축을, 2 면 z 축을 각각 나타낸다.
bAllSameMantissaDigitFlag 는 x, y 및 z 의 최소값의 맨티사의 자리수가 모두 동일한지를 나타내고, bSameKVDigitFlag 는 모든 맨티사의 자리수가 nKVDigit 과 동일한 지를 나타낸다. nMantissaDigit_X, nMantissaDigit_Y, nMantissaDigit_Z 는 x, y 및 z 의 최소값의 맨티사의 자리수를 각각 나타낸다.
bMaxDigitFlag 는 최대값의 맨티사의 자리수가 최소값의 맨티사의 자리수와 다른지를 나타내고, 다르다면, 최대 범위의 맨티사의 자리수가 비트스트림으로부터 판독된다.
nMantissaDigit_M 은 최대값의 맨티사의 자리수를 나타내고, nExponentBits 는 지수값을 부호화하는데 필요한 비트수를 나타낸다. bAllSameExponentSign은 x, y, 및 z 성분의 부호가 모두 동일한지를 나타내고, nExponentSign 은 bAllSameExponentSign 가 참일 때, 지수의 부호를 나타낸다.
fpnMin_X, fpnMin_Y, fpnMin_Z 및 fpnMax 는 10진수 체계에서 실수(floating-point number)를 나타내고, 이들 값들은 FloatingPointNumber에서 설명되는 바와 같이 복호화된다. 또한, fMin_X, fMin_Y, 및 fMin_Z 는 각 성분의 최소값을 나타내고, fMax 는 최대 범위를 갖는 성분의 최대값을 나타낸다.
도 28g 는 FloatingPointNumber 클래스를 도시한 도면이다.
FloatingpointNumber 클래스는 실수(floating-point number)를 10진수 체계로 나타내고, nMantissa 는 10진수 체계의 실수(FloatingPointNumber) 의 맨티사 값을 나타내며, nExponent 10진수 체계의 실수(FloatingPointNumber) 의 지수 값을 나타내고, nSign 상기 값들의 부호를 나타낸다. 또한, nExponentSign 는 10진수 체계의 실수(FloatingPointNumber) 의 지수의 부호를 나타낸다.
도 28h 는 KeySelectionFlag를 도시하는 도면이다. 이 클래스에서 이용 된 keyFlag는 i 번째 키 데이터의 키 값 데이터가 부호화되었는지 여부를 나타내는 불리언 배열이고, nNumOfKeyValue는 복호화될 키 값 데이터의 개수를 나타내는 정수값이다.
도 28i 는 Key 클래스를 도시한 도면이다.
Key 클래스에 이용된 변수의 의미를 살펴보면, nQKey는 비트스트림으로부터 복호화될 양자화된 키 데이터를 저장한 배열을 나타낸다. KeyContext는 nQKey 의 크기를 판독하는데 이용되는 context를 의미한다. KeySignContext는 nQKey 의 부호를 판독하는데 이용되는 context를 의미한다.
decodeUnsignedAAC 는 주어진 context로, 적응적 산술부호화를 부호없는 복호화를 수행하는 함수이다. decodeSignedAAC 는 주어진 context로, 적응적 산술부호화를 부호있는 복호화를 수행하는 함수이다.
도 28j 는 PosIKeyValue 클래스를 도시한 도면이다. 도시된 PosIKeyValue 클래스에 기재된 변수들의 의미를 살펴보면, keyValue_X, keyValue_Y 및 keyValue_Z 는 위치 인터폴레이터에서 각 성분의 배열을 나타내고, 만약, nStartIndex_X 가 1로 설정되었다면, keyValue_X[0]는 PosIKeyValueHeader 클래스의 firstKV_X 로 채워진다. 만약, nStartIndex_X 가 0 으로 설정되었다면, keyValue_X[0] 는 산술 복호화기를 이용하여 비트스트림으로부터 복호화된다. 동일한 방식으로, keyValue_Y[0] 및 keyValue_Z[0] 가 결정된다. 이 들은 decodeUnaryAAC 또는 decodeSQAAC 함수를 통해서 비트스트림으로부터 산술 복호화된다.
컨택스트 모델 kVXSignContext, kVYSignContext 및 kVZSignContext 는 keyValue_X, keyValue_Y 및 keyValue_Z 의 부호를 복호화하는데 이용되고, 이들 컨택스트들은 decodeUnaryAAC 또는 decodeSQAAC 함수로 전달된다.
MaxValueContext, FoundContext 및 NotFoundContext 키 값의 절대값을 엔트로피 복호화하는데 이용되고 (예컨대, kVXMaxValueContext, kVXFoundContext 및 kVXNotFoundContext 는 keyValue_X의 복호화에 이용된다), decodeSQAAC 함수로 전달된다.
컨택스트 모델 kVXUContext, kVYUContext 및 kVZUContext 는 keyValue_X, keyValue_Y 및 keyValue_Z 의 복호화에 이용되고, decodeUnaryAAC 함수로 전달된다.
이하, 도 25a 내지 도 27을 참조하여, 본 발명의 애니메이션 경로간의 오차 측정 방법을 설명한다.
도 25a 및 도 25b 는 상술한 본 발명의 바람직한 제 1 내지 제 3 실시예에 따른 분석기(40)에서 경로 오차를 계산하는 방법을 도시한 도면이다.
본 발명에서 경로간의 오차는 도 25a 및 도 25b에 도시된 바와 같이 각 경로사이에 생성되는 면적에 따라서 계산한다.
도 25를 참조하면,
Figure 112005060696882-pat00077
를 원 위치 인터폴레이터의 경로점이라 하고,
Figure 112005060696882-pat00078
를 보간에 의해서 생성된 위치 인터폴레이터의 경로점이라 한다. 또한, 원 애니메이션 경로는 실선으로, 보간된 인터폴레이터에 의해서 생성된 애니메이션 경로는 점선으로 각각 표시한다. 이 때, i 는 키 데이터를, j 는 위치 인터폴레이터의 키 값 데이터의 각 성분을 나타낸다.
2개의 경로간에는 도 25a 에 도시된 사다리꼴 형상의 오차 및 도 25b 에 도시된 비틀린 사다리꼴의 2가지 종류의 오차가 존재한다. 분석기(40)의 오차 계산부(154)는 키 데이터에 따라서 각 성분의 애니메이션 경로를 소정의 구간으로 분할하고, 각 구간에 대해서 오차를 구한 후, 구해진 오차를 합산하여 양 경로간의 최종 오차를 계산한다.
먼저, 오차 계산부(154)는 원 위치 인터폴레이터를 시간축상에 배열하고, 입력된 보간된 위치 인터폴레이터를 시간축상에 배열하여, 2개의 애니메이션 경로를 생성한다. 그 후, 생성된 애니메이션 경로를 시간 축상의 키 데이터의 간격으로 분할한다.
오차 계산부(154)는 각 구간이 사다리꼴 형상인지 또는 비틀린 사다리꼴 형상인지를 조사하여, 사다리꼴 형상인 경우에는 다음의 수학식 40 을 이용하고, 비틀린 사다리꼴 형상인 경우에는 다음의 수학식 41 을 이용하여 각 구간의 면적을 계산한다.
Figure 112005060696882-pat00079
Figure 112005060696882-pat00080
한 성분에 대한 전체 구간의 오차의 합은 다음의 수학식 42 로 표현된다.
Figure 112005060696882-pat00081
오차 계산부(154)는 수학식 42 에 의해서 계산된 오차를 판단부(156)로 출력하고, 판단부(156)는 입력된 오차와 임계 오차값을 비교하여 분절점을 선택한다.
또한, X, Y, 및 Z 세 개의 키 값 데이터 성분에 대한 오차를 합산하고 공간에 대해서 정규화함으로써, 2개의 경로간의 전체 오차를 계산할 수 있다. 계산 방법은 다음의 수학식 43 과 같다.
Figure 112005060696882-pat00082
한편, 본 발명의 오차 계산 방법은 부호화를 위해서 부호화 장치로 입력된 위치 인터폴레이터에 의해서 형성되는 제 1 경로와 복호화된 위치 인터폴레이터에 의해서 형성되는 제 2 경로간의 오차를 계산하는데 이용될 수 있다.
도 26 은 제 1 경로와 제 2 경로간의 오차를 계산하는 과정의 일 예를 도시하는 도면이고, 도 27 은 제 1 경로와 제 2 경로간의 오차를 계산하는 과정을 설명하는 흐름도이다.
이하, 도 26 및 도 27 을 참조하여 제 1 및 제 2 경로간의 오차를 계산하는 방법을 설명한다.
복호화된 위치 인터폴레이터의 키 데이터 및 키 값 데이터는 부호화 과정에서 가감 및 보간되고 양자화되므로 원래의 위치 인터폴레이터와 동일하지 않다. 특히, 분석기(40)에서의 오차 계산과정과 달리 키 데이터가 서로 달라지므로 키 데이터의 위치를 보상하는 과정이 필요하다.
도 26a 는 제 1 경로와 제 2 경로간에 키 데이터가 서로 어긋나는 사다리꼴 형상의 구간을 도시한다. 또한, 도 26b 는 제 1 경로와 제 2 경로간에 키 데이터가 서로 어긋나는 비틀린 사다리꼴 형상의 구간을 도시한다. 상술한 바와 같이 각 경로의 구간을 분할하여 상술한 수학식 40 내지 수학식 42 를 이용하여 면적 오차를 계산하기 위해서는 각 키 데이터를 일치시킬 필요가 있다.
따라서, 도 26c 및 도 27을 참조하면, 먼저 각 경로가 동일한 키 데이터의 경로점을 갖도록 제 1 경로에는 없지만 제 2 경로상에 존재하는 키 데이터에 대응되는 경로점을 제 1 경로에 삽입하고, 제 2 경로에는 없지만 제 1 경로상에 존재하는 키 데이터에 대응되는 경로점을 제 2 경로에 삽입한다(S27000).
그 후, 각 경로를 삽입된 경로점을 포함한 경로점들에 따라서 다수의 구간으로 분할한다(S27100).
각 구간의 오차를 계산하기 위해서는 먼저 각 구간의 사다리꼴 형상인지 또는 비틀린 사다리꼴 형상인지를 조사하고, 상술한 수학식 40 및 수학식 41 을 이용하여 각 구간의 오차를 계산한다(S27200).
각 성분에 대한 오차가 모두 구해지면, 모든 구간의 오차를 합산하고, 합산된 오차를 시간 및 공간에 대해서 정규화하여 입력된 위치 인터폴레이터에 의해서 형성된 제 1 경로와 복호화된 위치 인터폴레이터에 의해서 형성된 제 2 경로간의 오차의 정도를 측정할 수 있다(S27300). 오차의 정규화는 다음의 수학식 44를 이용하여 수행한다.
Figure 112005060696882-pat00083
상기 수학식 44 에서 tMax 는 경로의 시작 키 데이터를, tMin 는 경로의 종료 키 데이터를 각각 나타내며, Rangemax 는 상술한 수학식 43 을 이용하여 구한다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플라피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있 는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
본 발명의 위치 인터폴레이터 부호화 방법 및 장치에 따르면, 고화질의 애니메이션 영상을 유지하면서 키 데이터 및 키 값 데이터를 고효율로 부호화 및 복호화할 수 있다. 특히, 본 발명의 데이터 경로간의 오차 측정 방법을 이용하므로써 고화질의 애니메이션 데이터를 유지할 수 있으며, 본 발명의 리샘플링 방법 및 분절점 추출방법에 의해서 부호화할 키 데이터 및 키 값 데이터의 양을 크게 줄일 수 있다.

Claims (19)

  1. 키 프레임의 시간축상의 위치를 나타내는 키 데이터 및 상기 키 프레임상의 객체의 위치 정보를 나타내는 키 값 데이터를 포함하는 위치 인터폴레이터를 부호화한 비트스트림을 복호화하는 장치로서,
    입력 비트스트림으로부터 키 데이터를 복호화하는 키 데이터 복호화기;
    상기 입력 비트스트림으로부터 키 값 데이터를 복호화하는 키 값 데이터 복호화기; 및
    복호화된 키 값 데이터 및 상기 복호화된 키 값 데이터로부터 선형 보간된 키 값 데이터를 복호화된 키 데이터와 합성하여 위치 인터폴레이터를 생성하는 인터폴레이터 합성기를 포함하는 것을 특징으로 하는 복호화 장치.
  2. 제 1 항에 있어서, 상기 인터폴레이터 합성기는
    현재 합성할 키 데이터에 대응되는 복호화된 키 값 데이터가 없는 경우에는, 이전 합성된 키 데이터에 대응되는 복호화된 키 값 데이터와, 이후 합성될 키 데이터에 대응되는 복호화된 키 값 데이터를 이용하여, 현재 합성할 키 데이터에 대응되는 키 값 데이터를 보간하는 것을 특징으로 하는 복호화 장치.
  3. 제 1 항에 있어서, 상기 키 데이터 복호화기는
    상기 입력 비트스트림을 엔트로피 복호화하여 차분 데이터를 생성하는 엔트 로피 복호화기;
    상기 차분 데이터에 소정의 역 DPCM 연산을 수행하여 양자화된 키 데이터를 생성하는 역 DPCM 처리부; 및
    상기 양자화된 키 데이터를 역 양자화하여 복원된 키 데이터를 생성하는 역 양자화기를 포함하는 것을 특징으로 하는 복호화 장치.
  4. 제 1 항에 있어서, 상기 키 값 데이터 복호화기는
    상기 입력 비트스트림을 엔트로피 복호화하여 차분 데이터를 생성하는 엔트로피 복호화기;
    상기 차분 데이터에 소정의 역 DPCM 연산을 수행하여 양자화된 키 값 데이터를 생성하는 역 DPCM 처리부; 및
    상기 양자화된 키 값 데이터를 역 양자화하여 복원된 키 값 데이터를 생성하는 역 양자화기를 포함하는 것을 특징으로 하는 복호화 장치.
  5. 키 프레임의 시간축상의 위치를 나타내는 키 데이터, 및 상기 키 프레임상의 객체의 위치 정보를 나타내는 키 값 데이터를 포함하는 위치 인터폴레이터를 부호화한 비트스트림을 복호화하는 방법으로서,
    (a) 입력 비트스트림으로부터 키 데이터를 복호화하는 단계;
    (b) 상기 입력 비트스트림으로부터 키 값 데이터를 복호화하는 단계; 및
    (c) 복호화된 키 값 데이터 및 상기 복호화된 키 값 데이터로부터 선형 보간 된 키 값 데이터를 복호화된 키 데이터와 합성하여 위치 인터폴레이터를 생성하는 단계를 포함하는 것을 특징으로 하는 복호화 방법.
  6. 제 5 항에 있어서, 상기 (c) 단계는
    현재 합성할 키 데이터에 대응되는 복호화된 키 값 데이터가 없는 경우에는, 이전 합성된 키 데이터에 대응되는 복호화된 키 값 데이터와, 이후 합성될 키 데이터에 대응되는 복호화된 키 값 데이터를 이용하여, 현재 합성할 키 데이터에 대응되는 키 값 데이터를 보간하는 것을 특징으로 하는 복호화 방법.
  7. 제 5 항에 있어서, 상기 (a) 단계는
    상기 입력 비트스트림을 엔트로피 복호화하여 차분 데이터를 생성하는 단계;
    상기 차분 데이터에 소정의 역 DPCM 연산 및 역 DND 연산을 수행하여 양자화된 키 데이터를 생성하는 단계; 및
    상기 양자화된 키 데이터를 역 양자화하여 복원된 키 데이터를 생성하는 단계를 포함하는 것을 특징으로 하는 복호화 방법.
  8. 제 5 항에 있어서, 상기 (b) 단계는
    상기 입력 비트스트림을 엔트로피 복호화하여 차분 데이터를 생성하는 단계;
    상기 차분 데이터에 소정의 역 DPCM 연산을 수행하여 양자화된 키 값 데이터를 생성하는 단계; 및
    상기 양자화된 키 값 데이터를 역 양자화하여 복원된 키 값 데이터를 생성하는 단계를 포함하는 것을 특징으로 하는 복호화 방법.
  9. 제 5 항 내지 제 8 항 중 어느 한 항의 방법을 컴퓨터에서 판독할 수 있고 실행 가능한 프로그램 코드로 기록한 기록매체.
  10. 키데이터에 관한 정보를 나타내는 키헤더, 키값데이터에 관한 정보를 나타내는 키값 헤더, 키프레임의 선택여부를 나타내는 키선택플래그, 키 프레임의 시간축상의 위치를 나타내는 키 데이터 및 상기 키 프레임 상의 객체의 위치 정보를 나타내는 키 값 데이터를 포함하는 위치 인터폴레이터가 부호화된 비트스트림을 복호화하는 방법에 있어서,
    (a) 상기 키헤더 및 키값헤더를 읽어들여 키값헤더에 포함된 preserve key 비트(bPreserveKey)가 1 인 경우, 상기 키헤더에 포함된 nNumberOfKey 가 나타내는 값에 해당하는 만큼의 키선택플래그(keyFlag)를 복호화하는 단계;
    (b) 상기 키헤더 정보에 따라 키데이터를 복호화하는 단계; 및
    (c) 상기 키선택 플래그 정보 및 상기 키값헤더 정보에 따라 키값데이터를 읽어 상기 키값헤더 정보에 포함된 역정규화, 역양자화, 역순환 DPCM 차수 및 엔트로피 디코더의 종류에 따라 상기 키값데이터를 복호화하는 단계를 포함함을 특징으로 하는 위치 인터폴레이터 복호화 방법.
  11. 제10항에 있어서, 상기 키헤더는
    양자화 비트 사이즈(nKeyQBit);
    키 데이터로부터 복호화할 키 데이터의 개수(nNumberOfKey);
    키 데이터의 자리수(nKeyDigit);
    상기 키 데이터 중 키 데이터가 선형으로 증가하는 영역의 존재 여부를 나타내는 선형키 플래그(bIsLinearKeySubRegion);
    상기 선형키 플래그가 1인 경우, 선형키 영역의 시작 및 종료를 나타내는 시작키 데이터 및 종료키 데이터(lKey);
    양자화 오차를 최소화할 수 있도록, 상기 키 데이터의 최대값 및 최소값을 조정하는 여부를 나타내는 양자화 오차 조정 플래그(bRangeFlag);
    상기 양자화 오차 조정 플래그가 1인 경우, 역양자화 시 이용될 수 있도록 조정된 최대값 및 최소값(keyMinMax);
    DPCM 수행 회수를 나타내는 DPCM 차수(nKDPCMOrder);
    DPCM 수행을 위한 기준이 되는 값으로서, 상기 DPCM 차수에 상응하는 갯수의 키데이터(nQIntraKey);
    상기 DPCM 차수에 상응하는 갯수의 키데이터 부호 비트(nQIntraKeySign);
    DPCM 수행 결과 빈도수가 가장 많은 키 데이터 값을 기준으로 전체 키데이터 값의 쉬프트 여부를 나타내는 쉬프트 플래그(bShiftFlag);
    상기 키데이터의 쉬프트 정도를 나타내는 쉬프트 값(nKeyShift);
    상기 쉬프트 값의 부호비트(nKeyShiftSign);
    DPCM 수행 결과의 범위를 조정하기 위한 DND(Divide-and-divide) 수행 횟수를 나타내는 DND 차수(nDNDOrder);
    DND 연산에 이용되며, 상기 DND 차수에 상응하는 갯수의 최대값 및/또는 최소값(nKeyMax);
    상기 최대값 및/또는 최소값을 구별하며, 상기 DND 차수에 상응하는 갯수의 부호비트(nKeyMaxSign);
    DND 결과의 인버트다운 여부를 나타내는 플래그(bKeyInvertDownFlag);
    인버트 다운되는 양을 나타내는 인버트다운 값(nKeyInvertDown); 및
    엔트로피 부호화할 때 사용한 signed AAC 또는 unsigned AAC를 구별하는 플래그(bSignedAACFlag)를 포함함을 특징으로 하는 위치 인터폴레이터 복호화 방법.
  12. 제11항에 있어서, 상기 (b)단계는
    상기 키헤더에 포함된 bSignedAACFlag 정보가 signed AAC를 나타내면 역 signed AAC를 수행하고, unsigned AAC를 나타내면 역 unsigned AAC를 수행하여 엔트로피 복호화하는 단계;
    상기 엔트로피 복호화 결과에 상기 기준 키데이터(IntraKey)를 부가하는 단계;
    상기 DND 차수(nDNDOrder)가 일차 이상일 경우 역 DND를 수행하는 단계;
    상기 역DND결과에 대해 nKeyShift 값 만큼 역쉬프트하는 단계;
    상기 역 쉬프트된 데이터를 상기 DPCM 차수(nKDPCMOrder)에 따라 역 DPCM 수 행하는 단계;
    상기 역 DPCM 결과를 상기 키헤더의 양자화비트 사이즈에 따라 역 양자화하되, 상기 키헤더에 포함된 양자화 오차를 최소화할 수 있도록, 상기 키 데이터의 최대값 및 최소값이 조정된 경우 이를 이용하여 역양자화하는 단계; 및
    선형키 영역이 존재하는 경우, 상기 키헤더에 포함된 선형 키 영역의 시작키 데이터 및 종료키 데이터를 이용하여 선형키 데이터를 복호화하고 상기 역 양자화된 키데이터와 합산하는 선형키 복호화 단계를 포함함을 특징으로 하는 위치 인터폴레이터 복호화 방법.
  13. 제12항에 있어서, 상기 역DND를 수행하는 단계는
    상기 DND 차수(nDNDOrder)가 일차 이상일 경우, nKeyInvertDown 이 -1 이면 부호화의 쉬프트 업 역과정에 해당하는 인버트 다운을 수행하지 않고, 그렇지 않으면 인버트 다운을 수행하는 단계;
    DND 차수에 해당하는 횟수만큼 역 DND를 수행하되, 상기 역 DND는 nKeyMax 값이 양수이면 역 divide down 을 수행하고 음수이면 역 divide up 을 수행하고, 마지막 회수에서는 nKeyMax 값이 양수이면 역 divide 를 수행하는 단계;
    DND 차수가 -1 이 아닌 경우에는 역 폴딩을 수행하는 단계를 포함함을 특징으로 하는 위치 인터폴레이터 복호화 방법.
  14. 제10항에 있어서, 상기 키값데이터를 복호화하는 단계는
    x, y, z 좌표값으로 표현되는 키값들을 복호화할 때, x, y, z 각 성분별로 복호화함을 특징으로 하는 위치 인터폴레이터 복호화 방법.
  15. 제10항에 있어서, 상기 키값헤더는
    양자화 비트수(nKVQBit);
    x, y, z 각 성분의 복호화여부를 나타내는 비트(x_keyvalue_flag, y_keyvalue_flag, z_keyvalue_flag);
    역양자화를 위한 최대 최소값을 읽어들이기 위해 필요한 자리수(nKVDigit);
    첫번째 키값의 엔트로피 디코딩 여부를 나타내는 비트;
    상기 첫번째 키값; 및
    역양자화를 위한 최대 최소 값(KeyValueMinMax)을 더 포함함을 특징으로 하는 위치 인터폴레이터 복호화 방법.
  16. 제15항에 있어서, 상기 (a)단계의 키값헤더를 읽어들일 때의 역정규화 및 역양자화를 위한 최대 최소값을 읽어들이는 것은
    상기 최대 최소값을 부동소수점으로 표현했는지 여부를 나타내는 비트를 읽어 들이는 단계; 및
    부동소수점으로 표현되어 있지 않은 경우, x 최소값, y 최소값, z 최소값 및 상기 x, y, z 최소값과 그에 상응하는 x, y, z 최대값의 차이가 가장 큰 값 각각의 기수(mantissa)와 지수(exponent)를 상기 nKVDigit에 따라 읽어 들이는 단계를 구 비함을 특징으로 하는 위치 인터폴레이터 복호화 방법.
  17. 제15항에 있어서, (c) 단계의 키값데이터 복호화는
    x, y, z 각 성분의 복호화여부를 나타내는 비트에 따라 복호화가 필요한 경우 엔트로피 디코더의 종류 정보에 해당하는 엔트로피 디코더를 선택하여 x, y, z 각 성분을 복호화하고, 복호화가 필요하지 않은 경우에는 해당 성분의 역양자화를 위한 최소값으로 복호화 값을 생성함을 특징으로 하는 위치인터폴레이터 복호화 방법
  18. 제17항에 있어서, 상기 x, y, z 각 성분에 대한 복호화는
    엔트로피 디코더의 종류 정보에 해당하는 unaryAAC 또는 SQAAC 엔트로피 디코더를 사용하여 엔트로피 디코딩하는 단계;
    상기 엔트로피 디코딩된 데이터를 DPCM 차수에 따라 1차 또는 2차 역순환 DPCM을 수행하는 단계; 및
    상기 역순환 DPCM 데이터를 상기 x, y, z 중 현재 성분의 최소값과, x, y, z 최대값의 차이가 가장 큰 값을 이용하여 역 양자화 및 역정규화하는 단계를 구비함을 특징으로 하는 위치인터폴레이터 복호화 방법
  19. 제10항에 있어서, 상기 키값데이터 복호화 단계는
    복호화하고자 하는 현재 키프레임의 키선택플래그가 0 인 경우, 이전 키프레 임과 다음 키프레임을 보간하여 현재 키프레임을 복원하는 단계를 더 구비함을 특징으로 하는 위치 인터폴레이터 복호화 방법.
KR1020050100897A 2001-11-27 2005-10-25 위치 인터폴레이터 복호화 방법 및 장치 KR100561875B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US33313001P 2001-11-27 2001-11-27
US60/333,130 2001-11-27
US33454101P 2001-12-03 2001-12-03
US60/334,541 2001-12-03
US34210101P 2001-12-26 2001-12-26
US60/342,101 2001-12-26
US36959702P 2002-04-04 2002-04-04
US60/369,597 2002-04-04
KR10-2002-0073044A KR100499135B1 (ko) 2001-11-27 2002-11-22 회전 인터폴레이터 부호화/복호화 방법 및 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020020070659A Division KR100552710B1 (ko) 2001-11-27 2002-11-14 위치 인터폴레이터 부호화/복호화 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20050109413A KR20050109413A (ko) 2005-11-21
KR100561875B1 true KR100561875B1 (ko) 2006-03-17

Family

ID=27532390

Family Applications (8)

Application Number Title Priority Date Filing Date
KR10-2002-0063852A KR100480787B1 (ko) 2001-11-27 2002-10-18 좌표 인터폴레이터의 키 값 데이터 부호화/복호화 방법 및 장치
KR1020020064007A KR100552665B1 (ko) 2001-11-27 2002-10-19 키 데이터 부호화/복호화 방법 및 장치
KR1020020064008A KR100552666B1 (ko) 2001-11-27 2002-10-19 좌표 인터폴레이터의 키 및 키 값 데이터의 부호화/복호화장치, 및 좌표 인터폴레이터를 부호화한 비트스트림을기록한 기록 매체
KR1020020067679A KR100543697B1 (ko) 2001-11-27 2002-11-02 데이터 부호화/복호화 방법 및 장치
KR1020020070496A KR100537500B1 (ko) 2001-11-27 2002-11-13 회전 인터폴레이터의 키 값 데이터 부호화 및 복호화 방법및 장치
KR1020020070659A KR100552710B1 (ko) 2001-11-27 2002-11-14 위치 인터폴레이터 부호화/복호화 방법 및 장치
KR10-2002-0073044A KR100499135B1 (ko) 2001-11-27 2002-11-22 회전 인터폴레이터 부호화/복호화 방법 및 장치
KR1020050100897A KR100561875B1 (ko) 2001-11-27 2005-10-25 위치 인터폴레이터 복호화 방법 및 장치

Family Applications Before (7)

Application Number Title Priority Date Filing Date
KR10-2002-0063852A KR100480787B1 (ko) 2001-11-27 2002-10-18 좌표 인터폴레이터의 키 값 데이터 부호화/복호화 방법 및 장치
KR1020020064007A KR100552665B1 (ko) 2001-11-27 2002-10-19 키 데이터 부호화/복호화 방법 및 장치
KR1020020064008A KR100552666B1 (ko) 2001-11-27 2002-10-19 좌표 인터폴레이터의 키 및 키 값 데이터의 부호화/복호화장치, 및 좌표 인터폴레이터를 부호화한 비트스트림을기록한 기록 매체
KR1020020067679A KR100543697B1 (ko) 2001-11-27 2002-11-02 데이터 부호화/복호화 방법 및 장치
KR1020020070496A KR100537500B1 (ko) 2001-11-27 2002-11-13 회전 인터폴레이터의 키 값 데이터 부호화 및 복호화 방법및 장치
KR1020020070659A KR100552710B1 (ko) 2001-11-27 2002-11-14 위치 인터폴레이터 부호화/복호화 방법 및 장치
KR10-2002-0073044A KR100499135B1 (ko) 2001-11-27 2002-11-22 회전 인터폴레이터 부호화/복호화 방법 및 장치

Country Status (6)

Country Link
US (1) US7446771B2 (ko)
EP (2) EP2278808B1 (ko)
JP (1) JP3905834B2 (ko)
KR (8) KR100480787B1 (ko)
CN (3) CN1277239C (ko)
ES (1) ES2381777T3 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4002502B2 (ja) * 2001-11-27 2007-11-07 三星電子株式会社 座標インタポレータの符号化/復号化装置及びその方法
DE102004049156B4 (de) 2004-10-08 2006-07-13 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Codierschema für einen ein zeitlich veränderliches Graphikmodell darstellenden Datenstrom
US8090586B2 (en) 2005-05-26 2012-01-03 Lg Electronics Inc. Method and apparatus for embedding spatial information and reproducing embedded signal for an audio signal
US8185403B2 (en) 2005-06-30 2012-05-22 Lg Electronics Inc. Method and apparatus for encoding and decoding an audio signal
US8494667B2 (en) 2005-06-30 2013-07-23 Lg Electronics Inc. Apparatus for encoding and decoding audio signal and method thereof
AU2006266655B2 (en) 2005-06-30 2009-08-20 Lg Electronics Inc. Apparatus for encoding and decoding audio signal and method thereof
JP4859925B2 (ja) 2005-08-30 2012-01-25 エルジー エレクトロニクス インコーポレイティド オーディオ信号デコーディング方法及びその装置
JP5173811B2 (ja) 2005-08-30 2013-04-03 エルジー エレクトロニクス インコーポレイティド オーディオ信号デコーディング方法及びその装置
US7788107B2 (en) 2005-08-30 2010-08-31 Lg Electronics Inc. Method for decoding an audio signal
US7761303B2 (en) 2005-08-30 2010-07-20 Lg Electronics Inc. Slot position coding of TTT syntax of spatial audio coding application
KR100857106B1 (ko) * 2005-09-14 2008-09-08 엘지전자 주식회사 오디오 신호의 디코딩 방법 및 장치
US7696907B2 (en) 2005-10-05 2010-04-13 Lg Electronics Inc. Method and apparatus for signal processing and encoding and decoding method, and apparatus therefor
US8068569B2 (en) 2005-10-05 2011-11-29 Lg Electronics, Inc. Method and apparatus for signal processing and encoding and decoding
US7672379B2 (en) 2005-10-05 2010-03-02 Lg Electronics Inc. Audio signal processing, encoding, and decoding
KR20070038439A (ko) 2005-10-05 2007-04-10 엘지전자 주식회사 신호 처리 방법 및 장치
US7751485B2 (en) 2005-10-05 2010-07-06 Lg Electronics Inc. Signal processing using pilot based coding
CN101283254B (zh) * 2005-10-05 2011-07-06 Lg电子株式会社 信号处理的方法和装置以及编码和解码方法及其装置
KR100878828B1 (ko) * 2005-10-05 2009-01-14 엘지전자 주식회사 신호 처리 방법 및 이의 장치, 그리고 인코딩 및 디코딩방법 및 이의 장치
US7646319B2 (en) 2005-10-05 2010-01-12 Lg Electronics Inc. Method and apparatus for signal processing and encoding and decoding method, and apparatus therefor
US7761289B2 (en) 2005-10-24 2010-07-20 Lg Electronics Inc. Removing time delays in signal paths
US20100091845A1 (en) * 2006-03-30 2010-04-15 Byeong Moon Jeon Method and apparatus for decoding/encoding a video signal
BRPI0710048A2 (pt) * 2006-03-30 2011-08-02 Lg Electronics Inc método e aparelho para decodificar / codificar um sinal de vìdeo
TW201028018A (en) * 2009-01-07 2010-07-16 Ind Tech Res Inst Encoder, decoder, encoding method and decoding method
US20100324913A1 (en) * 2009-06-18 2010-12-23 Jacek Piotr Stachurski Method and System for Block Adaptive Fractional-Bit Per Sample Encoding
CN103597829B (zh) * 2011-06-28 2017-03-22 日本电气株式会社 对视频量化参数编码的方法和对视频量化参数解码的方法
US9202297B1 (en) * 2011-07-12 2015-12-01 Domo, Inc. Dynamic expansion of data visualizations
US9792017B1 (en) 2011-07-12 2017-10-17 Domo, Inc. Automatic creation of drill paths
US10001898B1 (en) 2011-07-12 2018-06-19 Domo, Inc. Automated provisioning of relational information for a summary data visualization
US9357214B2 (en) * 2012-12-07 2016-05-31 Qualcomm Incorporated Advanced merge/skip mode and advanced motion vector prediction (AMVP) mode for 3D video
CN103268067B (zh) * 2013-05-03 2016-02-10 哈尔滨工业大学 一种基于拟四元数与拟四元数运动学方程的卫星指向跟踪控制方法
SE538512C2 (sv) 2014-11-26 2016-08-30 Kelicomp Ab Improved compression and encryption of a file
SE544304C2 (en) * 2015-04-17 2022-03-29 URAEUS Communication Systems AB Improved compression and encryption of a file
US10841595B2 (en) * 2018-11-27 2020-11-17 Semiconductor Components Industries, Llc Methods and apparatus for transform coefficient encoding and decoding
CN110688092B (zh) * 2019-09-04 2021-08-17 湖南遥昇通信技术有限公司 一种随机数生成方法、装置、设备及存储介质
US20200327454A1 (en) * 2020-06-26 2020-10-15 Intel Corporation Secured deployment of machine learning models

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4125861A (en) * 1977-08-18 1978-11-14 Bell Telephone Laboratories, Incorporated Video signal encoding
US4797836A (en) * 1986-11-19 1989-01-10 The Grass Valley Group, Inc. Image orientation and animation using quaternions
JP3048578B2 (ja) * 1988-11-17 2000-06-05 キヤノン株式会社 符号化及び復号化装置
AU8932191A (en) * 1990-11-30 1992-06-25 Cambridge Animation Systems Limited Image synthesis and processing
JPH0583700A (ja) * 1991-09-18 1993-04-02 Nec Corp Dpcm予測符号化回路
KR960013062A (ko) * 1994-09-30 1996-04-20 김광호 양자화 계수값 전송장치
JP3305140B2 (ja) * 1994-12-28 2002-07-22 キヤノン株式会社 符号化装置及び方法
KR0171118B1 (ko) * 1995-03-20 1999-03-20 배순훈 비디오신호 부호화 장치
JP3649469B2 (ja) * 1995-05-12 2005-05-18 株式会社ソニー・コンピュータエンタテインメント アニメーションデータの作成方法および作成装置
US5757668A (en) * 1995-05-24 1998-05-26 Motorola Inc. Device, method and digital video encoder of complexity scalable block-matching motion estimation utilizing adaptive threshold termination
JPH09182082A (ja) * 1995-12-25 1997-07-11 Nippon Telegr & Teleph Corp <Ntt> 動画像の動き補償予測符号化方法とその装置
KR970064261A (ko) * 1996-02-09 1997-09-12 모리시타 요우이치 윤곽 부호화 방법, 윤곽 복호화 방법, 및 그의 방법을 이용한 윤곽 부호화 장치, 윤곽 복호화 장치 및 그의 방법을 기록한 기록 매체
KR100197602B1 (ko) * 1996-04-29 1999-06-15 윤종용 회전 움직임 추정 방법 및 이를 이용한 영상부호화/복호화장치
KR970078657A (ko) * 1996-05-20 1997-12-12 구자홍 비디오 데이타 압축 장치
JPH09326990A (ja) * 1996-06-07 1997-12-16 Matsushita Electric Ind Co Ltd 映像編集装置
KR0182182B1 (ko) * 1996-08-30 1999-04-15 삼성전자주식회사 적응차분 펄스부호변조 압축회로
KR100212552B1 (ko) * 1996-12-23 1999-08-02 전주범 이산적 사인 변환을 이용한 윤곽선 영상 신호 부호화 방법 및 그 장치
JPH10215458A (ja) * 1997-01-31 1998-08-11 Matsushita Electric Ind Co Ltd 画像圧縮伸長装置および欠落フレーム補間方法
US5818463A (en) * 1997-02-13 1998-10-06 Rockwell Science Center, Inc. Data compression for animated three dimensional objects
JPH1198512A (ja) * 1997-09-18 1999-04-09 Sanyo Electric Co Ltd 画像符号化装置及び画像符号化方法
US6075901A (en) * 1998-12-04 2000-06-13 France Telecom Method and system for predictive encoding of arrays of data
KR20000052205A (ko) * 1999-01-30 2000-08-16 김영환 디지털 신호처리장치에서의 동화상 처리방법
KR100292803B1 (ko) * 1999-07-06 2001-06-15 정선종 3차원 메쉬모델의 정점위치 압축방법 및 장치
US6891565B1 (en) * 1999-07-16 2005-05-10 Sarnoff Corporation Bitstream testing method and apparatus employing embedded reference data
US6693645B2 (en) * 1999-12-01 2004-02-17 Ivast, Inc. Optimized BIFS encoder
JP2001285868A (ja) * 2000-03-29 2001-10-12 Victor Co Of Japan Ltd 動画像符号列切替装置及び動画像符号列切替方法
KR100612828B1 (ko) * 2000-10-20 2006-08-18 삼성전자주식회사 오리엔테이션 보간 노드의 부호화 장치 및 방법
KR100561835B1 (ko) * 2000-11-23 2006-03-16 삼성전자주식회사 선형 근사화를 이용한 애니메이션 궤적의 압축 및 복원 방법, 이 방법을 수행하는 장치
US6559848B2 (en) * 2000-12-13 2003-05-06 Intel Corporation Coding and decoding three-dimensional data
US6704890B1 (en) * 2000-12-22 2004-03-09 Nortel Networks Limited Skew compensating interface for operation with arbitrary data
KR100580616B1 (ko) * 2001-02-28 2006-05-16 삼성전자주식회사 삼차원 객체의 형태 변형 정보에 대한 부호화 방법 및 그장치
KR100561836B1 (ko) * 2001-07-07 2006-03-16 삼성전자주식회사 3차원 애니메이션 객체의 형태 변환 정보에 대한 키 값부호화 방법 및 그 장치

Also Published As

Publication number Publication date
KR20030043621A (ko) 2003-06-02
KR100543697B1 (ko) 2006-01-20
CN1294540C (zh) 2007-01-10
KR100552666B1 (ko) 2006-02-20
CN1441387A (zh) 2003-09-10
KR20030043655A (ko) 2003-06-02
KR20030043690A (ko) 2003-06-02
KR100552710B1 (ko) 2006-02-20
KR100480787B1 (ko) 2005-04-07
CN1187716C (zh) 2005-02-02
EP1320264A3 (en) 2005-06-01
KR20030043634A (ko) 2003-06-02
KR100499135B1 (ko) 2005-07-04
CN1428742A (zh) 2003-07-09
CN1438613A (zh) 2003-08-27
EP2278808B1 (en) 2012-10-10
JP3905834B2 (ja) 2007-04-18
ES2381777T3 (es) 2012-05-31
KR20030043620A (ko) 2003-06-02
US20030128883A1 (en) 2003-07-10
KR100552665B1 (ko) 2006-02-20
EP1320264A2 (en) 2003-06-18
US7446771B2 (en) 2008-11-04
KR20030043622A (ko) 2003-06-02
JP2003248839A (ja) 2003-09-05
EP1320264B1 (en) 2012-03-21
KR100537500B1 (ko) 2006-01-09
KR20050109413A (ko) 2005-11-21
CN1277239C (zh) 2006-09-27
KR20030043657A (ko) 2003-06-02
EP2278808A1 (en) 2011-01-26

Similar Documents

Publication Publication Date Title
KR100561875B1 (ko) 위치 인터폴레이터 복호화 방법 및 장치
US7733345B2 (en) Method and apparatus for encoding and decoding position interpolator
US20060171533A1 (en) Method and apparatus for encoding and decoding key data
JP3756875B2 (ja) データ符号化及び復号化方法、並びに装置
US7209590B2 (en) Coding and decoding apparatus of key data for graphic animation and method thereof
JP4104615B2 (ja) キーデータの符号化及び復号化方法、並びに装置
JP4205426B2 (ja) 回転インタポレータのキー値データ復号化方法
JP4629014B2 (ja) 位置インタポレータの符号化/複合化方法、及び装置
EP1750447A2 (en) Method and apparatus for encoding and decoding key data

Legal Events

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

Payment date: 20130221

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140221

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150212

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee