KR20100113172A - 복잡성이 축소된 벡터 인덱싱 및 탈-인덱싱 - Google Patents

복잡성이 축소된 벡터 인덱싱 및 탈-인덱싱

Info

Publication number
KR20100113172A
KR20100113172A KR1020107020582A KR20107020582A KR20100113172A KR 20100113172 A KR20100113172 A KR 20100113172A KR 1020107020582 A KR1020107020582 A KR 1020107020582A KR 20107020582 A KR20107020582 A KR 20107020582A KR 20100113172 A KR20100113172 A KR 20100113172A
Authority
KR
South Korea
Prior art keywords
vectors
sets
leader
vector
index
Prior art date
Application number
KR1020107020582A
Other languages
English (en)
Other versions
KR101170137B1 (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 KR20100113172A publication Critical patent/KR20100113172A/ko
Application granted granted Critical
Publication of KR101170137B1 publication Critical patent/KR101170137B1/ko

Links

Images

Classifications

    • 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/3082Vector coding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • G10L19/032Quantisation or dequantisation of spectral components
    • G10L19/038Vector quantisation, e.g. TwinVQ audio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 입력 벡터에 인덱스 (index)를 부여하는 것에 관련된다. 상기 인덱스를 부여하는 것은, 상기 입력 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 또는 그 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 입력 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하는 것을 포함한다. 상기 인덱스를 부여하는 것은, 상기 입력 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하는 것을 포함한다. 본 발명은 벡터들의 복수의 세트들의 하나의 세트의 벡터들에 포함된 타겟 벡터를 그 타겟 벡터에 연고나된 인덱스를 기반으로 하여 결정하는 것에 또한 관련된다.

Description

복잡성이 축소된 벡터 인덱싱 및 탈-인덱싱{Reduced-complexity vector indexing and de-indexing}
본 발명은 벡터 인덱싱 및 탈-인덱싱에 관련된다.
음성 및 오디오 코딩을 위한 낮은 복잡성의 알고리즘들은 통신 기반의 모바일 단말에 대해서는 매우 의미있는 자산이다. 작은 저장용량 및 낮은 복잡성로 인해서, 코딩 효율을 유지하면서도 구조화된 코드북 (codebook)들이, 예를 들면, 양자화를 위해서, ITU-T SG16/Q9 에서 현재 표준화하고 있는 G.EV-VBR 또는 적응적인 멀티 레이트 광대역 (Adaptive Multi Rate - WideBand (AMR-WB))과 같은 음성 및 오디오 코덱들 기술의 여러 상태에서 선호된다.
음성 및 오디오 코덱들의 양자화 방법 내에서 사용되는 상기 코드북들은 예를 들면, 래티스 (lattice) 구조를 기반으로 할 수 있을 것이며, 상기 래티스 구조는 참조문서 "Low-complexity multi-rate lattice vector quantization with application to wideband TCX speech coding at 32 kbit/s" by S. Ragot, B. Bessette and R. Lefebvre, Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing, 2004 (ICASSP '04), Montreal, Canada, May 17-21, 2004, vol. 1, page 501-504에서 설명된 것과 같으며, 상기 참조분서는 그 전체가 본원에 참조로 편입된다. 이런 선호는 또한 양자화 프로세스를 더욱 상세하게 설명한다.
래티스 구조가 코드북들로서 사용될 때에, 래티스 포인트들에 인덱스를 부여하는 것 (indexing)이 필요하다.
래티스 코드북 (lattice codebook)을 리더 클래스 (leader class)들의 집합 (union)으로서 정의하는 것이 가능하며, 리더 클래스들 각각은 리더 벡터 (leader vector)에 의해 특징이 주어진다. 리더 벡터는 n-차원 벡터이며, 그 성분들은 순서가 정해져 있다 (예를 들면, 감소하는 순서). 상기 리더 클래스는 상기 리더 벡터에 대응하며 그래서 상기 리더 벡터로 구성되며 그리고 모든 벡터들은 상기 리더 벡터의 모든 부호화된 치환 (signed permutation)들을 통해서 (몇몇의 있음직한 제한들을 가지면서) 얻어진다.
리더 클래스들의 집합으로서 정의되는 래티스의 포인트들에 인덱스를 붙이기 위한 알고리즘은, 예를 들면, 리더들 상에 유형 인덱스를 부여하는 것일 수 있을 것이다. 이런 맥락에서, 참조문서 "Robust indexing of lattices and permutation codes over binary symmetric channels" by A. Vasilache and I. Tabus, In Signal Processing vol. 83, no. 7, pp. 1467-1486, 2003에서 설명된 것과 같은 사진 편집 및 이항 사이 (inter alia lexicographical and binomial) 알고리즘이 적용될 수 있으며, 상기 참조문서는 그 전체가 본원에 참조로서 편입된다.
이항 (binomial) 알고리즘들은 그 알고리즘들이 여러 벡터 성분들을 한번에 고려하기 때문에 일반적으로 덜 복잡하다.
인덱싱 및 탈-인덱싱 (de-indexing)의 복잡성을 더욱 줄이기 위한 가능성이 존재하며, 본 발명의 과제는 이와 같은 가능성을 제공하는 기술을 제시하려는 것이다.
본 발명의 첫 번째 모습에 따른 방법이 개시된다. 상기 방법은 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 입력 벡터에 인덱스 (index)를 부여하는 것을 포함한다. 상기 인덱스를 부여하는 것은, 상기 입력 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 입력 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하는 것을 포함한다. 상기 인덱스를 부여하는 것은 상기 입력 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하는 것을 더 포함한다.
본 발명의 첫 번째 모습에 따른, 컴퓨터 프로그램이 또한 개시된다. 상기 컴퓨터 프로그램은 프로세서로 하여금 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 입력 벡터에 인덱스를 붙이도록 하는 동작 가능한 명령어들을 포함한다. 상기 인덱스를 부여하는 것은, 상기 입력 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 입력 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하는 것을 포함한다. 상기 인덱스를 부여하는 것은 상기 입력 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하는 것을 더 포함한다.
본 발명의 첫 번째 모습에 따라, 상기와 같은 컴퓨터 프로그램을 저장하는, 컴퓨터로 읽을 수 있는 매체가 또한 개시된다. 상기 컴퓨터로 읽을 수 있는 매체는 전기, 자기, 전기-자기 또는 광학의 모습으로 디지털 데이터를 저장할 수 있는 임의의 매체일 수 있을 것이다. 상기 매체는 기기 내에 장착되어 고정되어 있을 수 있을 것이며 또는 탈부착 가능한 매체일 수 있을 것이다.
본 발명의 첫 번째 모습에 따른 장치가 또한 개시된다. 상기 장치는 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 입력 벡터에 인덱스 (index)를 붙이도록 구성된 프로세싱 컴포넌트를 포함한다. 상기 프로세싱 컴포넌트는, 인덱스가 붙여질 상기 입력 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 입력 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하도록 또한 구성된다. 상기 프로세싱 컴포넌트는, 인덱스가 붙여질 상기 입력 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하도록 또한 구성된다.
본 발명의 첫 번째 모습에 따른 장치가 또한 개시된다. 상기 장치는 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 입력 벡터에 인덱스 (index)를 부여하기 위한 수단을 포함한다. 상기 인덱스를 부여하기 위한 수단은, 상기 입력 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 입력 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하기 위한 수단을 포함한다. 상기 인덱스를 부여하기 위한 수단은 상기 입력 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하기 위한 수단을 더 포함한다.
본 발명의 상기 첫 번째 모습에 따르면, 상기 입력 벡터는 인덱스가 부여될 벡터이다. 상기 입력 벡터는 한 세트의 벡터들에 포함되며, 한 세트의 벡터들은 벡터들의 복수의 세트들에 포함된다. 예를 들면, 벡터들의 상기 복수의 세트들은 예컨대 양자화 프로세스를 위한 코드북 (codebook)으로서 봉사할 수 있을 것이다. 그런 양자화 프로세스에서, 상기 입력 벡터는 예를 들면 양자화될 벡터에 관하여 벡터들의 상기 복수의 세트들 내의 모든 벡터들과 가장 가깝게 정합하는 것으로서 식별될 수 있을 것이다.
상기 입력 벡터에 대한 인덱싱 (indexing)은 상기 입력 벡터에 인덱스를 부여하는 것이다. 상기 인덱스는 예를 들면 신호를 구성할 수 있을 것이다. 그 신호는 상기 입력 벡터의 신원으로서 두 개체들 사이에서 교환될 수 있을 것이다. 상기 인덱스를 통해서, 상기 입력 벡터는 자신이 포함된 벡터들의 세트 내에서 적어도 부분적으로 식별될 수 있을 것이다. 상기 인덱스는 예를 들면 벡터들의 상기 복수의 세트들 내에서 또는 상기 입력 벡터가 포함된 벡터들의 세트 내에서만 상기 입력 벡터를 식별하게 할 수 있을 것이다. 또한, 상기 인덱스는 상기 입력 벡터의 성분들의 부호들을 나타낼 수도 있고 아닐 수도 있을 것이다.
상기 입력 벡터에 인덱스를 부여하는 것은 예를 들면 상기 입력 벡터 내의 값들의 위치를 나타내는 위치 벡터를 적어도 산출할 수 있을 것이다. 상기 인덱스를 부여하는 것은 상기 입력 벡터의 성분들의 부호를 나타내는 부호 인덱스를 추가로 산출할 수 있을 것이다. 상기 인덱스를 부여하는 것은 상기 위치 인덱스와 부호 인덱스를 결합하고 그리고 상기 입력 벡터가 포함되어 있는 리더 클래스를 추가로 나타낼 수도 있는 최종 인덱스를 또한 산출할 수 있을 것이다.
상기 입력 벡터들이 포함되어 있는 벡터들의 세트들에 의존하여, 상이한 프로세싱이 수행된다. 상기 입력 벡터가 벡터들의 세트들의 미리 정의된 그룹에 속한 한 세트의 벡터들에 포함되면, 특정 프로세싱이 적용된다. 그렇지 않으면, 일반 프로세싱이 적용된다. 프로세싱의 두 가지 모두의 유형은 상기 입력 벡터에 인덱스를 부여하는 것의 적어도 일부를 형성한다. 예를 들면, 상기 특정 프로세싱 및 일반 프로세싱은 인덱스를 부여하는 프로세스 전체에 관련될 수 있을 것이며, 또는 인덱스를 부여하는 상기 프로세스의 일부분만에 관련될 수 있을 것이다.
상기 특정 프로세싱은 상기 입력 벡터가 포함된 벡터들의 세트의 특성 (characteristic)에 적응된다.
상기 특정 프로세싱은 상기 입력 벡터가 포함된 벡터들의 세트들로 맞추어진다. 이는 프로세싱을 개선하도록 하며 그리고 상기 입력 벡터에 인덱스를 부여하는 전반적인 복잡성을 줄어들게 한다.
예를 들면, 상기 특정 프로세싱의 구조는 예를 들면 하나의 루프 내에서 여러 동작을 수행하도록 함으로써 상기 일반 프로세싱에 비교하여 단순하게 될 수 있을 것이다.
마찬가지로, 상기 특정 프로세싱을 도입하는 것은, 예를 들면, 벡터들의 특정 세트들의 입력 벡터들을 프로세싱하는 것을 일반 프로세싱으로부터 제외시켜서 (그리고 그것들을 상기 특정 프로세싱에 포함시켜서) 그래서 일반 프로세싱이 간략하게 될 수 있도록 하여, 상기 일반 프로세싱의 복잡성을 감소시키도록 할 수 있을 것이다. 두 가지 모든 방책들은 상기 입력 벡터에 인덱스를 부여하는 전반적인 복잡성이 감소되는 것으로 귀결된다.
상기 맞추어지는 것은 상기 특성을 구비한 벡터들의 세트들에 포함된 입력 벡터들로 특정 프로세싱을 적용하는 것을 제한할 수 있을 것이다. 즉, 예를 들면 벡터들의 세트들 내에 포함된 상기 입력 벡터들이 벡터들의 세트들의 상기 미리 정의된 그룹 내에 있지 않은 경우에는 상기 특정 프로세싱은 적용 가능하지 않을 수 있을 것이다.
벡터들의 세트들의 특정 그룹의 벡터들의 세트들 내에 입력 벡터들이 포함된 경우에만 상기 일반 프로세싱은 적용에 제한받지 않을 수 있을 것이다. 예를 들면, 상기 일반 프로세싱은 벡터들의 복수의 세트들 중 임의 세트의 벡터들에 포함된 입력 벡터들의 경우에 또는 벡터들의 복수의 세트들 중 임의 세트의 벡터들에 포함된 상기 입력 벡터들에서 벡터들의 세트들의 미리 정의된 그룹의 벡터들의 세트들이 제외된 경우에 적용 가능할 수 있을 것이다. 후자의 경우 대안으로 벡터들의 세트들의 상기 미리 정의된 그룹에 있지 않은 벡터들의 세트들 내에 포함된 입력 벡터들에 관해서 상기 일반 프로세싱을 최적화하는 것을 허용할 수 있을 것이다.
본 발명의 상기 첫 번째 모습의 예시적인 일 실시예에 따르면, 상기 일반 프로세싱은, 상기 특성을 구비하여 벡터들의 상기 세트들에 포함된 입력 벡터들에 적용되면, 동일한 입력 벡터들에 적용되는 상기 특정 프로세싱보다 더 복잡할 것이다. 거기에서, 복잡성은 예를 들면 계산 복잡성 및/또는 저장 요구사항에 관한 것일 수 있을 것이다.
본 발명의 상기 첫 번째 모습의 예시적인 일 실시예에 따르면, 벡터들의 세트들 중의 상기 미리 정의된 그룹 내의 한 세트의 벡터들에 포함된 입력 벡터들은, 벡터들의 세트들 중의 상기 미리 정의된 그룹 내에 있지 않은 한 세트의 벡터들에 포함된 입력 벡터들보다 인덱스가 붙여질 확률이 더 크다. 전반적인 복잡성에 관하여, (상기 특성을 구비한 벡터들의 세트들 내에 포함된 입력 벡터들에게 적용될 때에) 상기 특정 프로세싱이 상기 일반 프로세싱보다 덜 복잡하다는 것이 특히 유용할 수 있을 것이다. 상기 확률은 상기 인덱스를 부여하는 것이 수행될 애플리케이션에 따라 달라질 수 있을 것이다. 상기 확률은 예를 들면 오프-라인으로 결정될 수 있을 것이다.
본 발명의 상기 첫 번째 모습의 예시적인 일 실시예에 따르면, 벡터들의 상기 세트들은 리더 클래스들이며, 그리고 각 리더 클래스는 상이한 리더 벡터 및 그 리더 벡터의 치환 (permutation)들을 포함한다. 이런 리더 클래스들의 집합 (union)은 그러면 래티스 (lattice)를 정의할 수 있을 것이며, 이 래티스는 예를 들면 음성, 오디오 또는 비디오 코덱에서, 사진 코딩에서, 데이터 압축 또는 양자화가 적용되는 어떤 다른 분야에서 양자화를 위한 구조화된 코드북으로서 사용될 수 있을 것이다.
상기 리더 클래스들은 부호화될 수 있을 것이며, 그리고 상기 인덱스를 부여하는 것은 상기 입력 벡터 내의 값들의 위치들을 나타내는 위치 인덱스 그리고 상기 입력 벡터의 성분들의 부호들을 나타내는 부호 인덱스를 산출할 수 있을 것이다. 그러면, 상기 특정 프로세싱에서, 상기 위치 인덱스 및 상기 부호 인덱스는 하나의 루프 내에서 공동으로 결정될 수 있을 것이다. 이 루프는 예를 들면 상기 입력 벡터의 각 성분을 통하는 사이클일 수 있을 것이다. 대조적으로, 상기 일반 프로세싱에서, 상기 위치 인덱스 및 부호 인덱스는 교대로만 결정될 수 있을 것이다. 상기 인덱스를 부여하는 것은 상기 위치 인덱스와 부호 인덱스를 결합하며 그리고 상기 입력 벡터가 포함되어 있는 리더 클래스를 추가적으로 나타낼 수도 있을 최종 인덱스를 또한 산출할 수 있을 것이다.
대안으로, 상기 리더 클래스들은 부호화되지 않을 수 있을 것이다. 그러면 상기 인덱스를 부여하는 것은 상기 입력 벡터 내의 값들의 위치들을 나타내는 위치 인덱스만을 산출할 수 있을 것이다. 경우에 따라서는, 상기 인덱스를 부여하는 것은 상기 입력 벡터가 포함되어 있는 리더 클래스를 추가적으로 나타내는 최종 인덱스를 또한 산출할 수 있을 것이다.
상기 특정 프로세싱이 적응되는 특성은, 리더 클래스들의 미리 정의된 그룹이, 벡터의 성분들이 상이한 값들의 미리 정의된 개수만을 취하는 그런 리더 벡터들을 구비한 리더 클래스들만을 포함한다는 것일 수 있을 것이다. 이 미리 정의된 개수는 예를 들면 2일 수 있을 것이다. 상기 특정 프로세싱을 이런 특성으로 적응시키는 것은 이항 인덱싱의 맥락에서는 특히 유용할 수 있을 것이며, 이는 그 적응시키는 것이, 그 중에서도, 위치 인덱스와 부호 인덱스를 차례로 결정하는 것 대신에 하나의 루프 내에서 상기 위치 인덱스와 부호 인덱스를 공동으로 결정하도록 하기 때문이다. 또한, 상기 특정 프로세싱을 이런 특성으로 적응시키는 것은 이항 인덱싱의 맥락에서는 특히 유용할 수 있을 것이며, 이는, 그 중에서도, 상기 인덱싱 절차가 하나의 값 (첫번째 값)의 위치를 두 번째 값의 위치 (그 위치(들)는 상기 첫 번째 값의 위치(들) 고정에 의해 고정된다)를 검사하기 위한 추가의 준비를 하지 않고도 처리해야만 하기 때문이다.
리더 클래스들의 상기 미리 정의된 그룹은, 벡터들의 성분들이 짝수 값들만을 취하는 그런 리더 벡터들을 구비한 리더 클래스들의 제1 서브그룹 그리고 벡터들의 성분들이 홀수 값들만을 취하는 그런 리더 벡터들을 구비한 리더 클래스들의 제2 서브그룹을 포함할 수 있을 것이다. 그러면 상기 특정 프로세싱은 상기 입력 벡터가 리더 클래스들의 상기 제1 서브그룹의 리더 클래스에 포함된 경우에는 상기 입력 벡터가 리더 클래스들의 상기 제2 서브그룹의 리더 클래스에 포함된 경우와는 다른 동작들을 규정할 (prescribe) 수 있을 것이다.
대안으로, 상기 특정 프로세싱이 적응되는 상기 특성은, 리더 클래스들의 상기 미리 정의된 그룹이, 벡터들의 성분들이 상이한 값들 중의 최대 수를 취하는 그런 리더 벡터들을 구비하는 리더 클래스들만을 포함한다는 것일 수 있을 것이다. 예를 들면, 리더 클래스들의 상기 미리 정의된 그룹 내의 상기 리더 클래스들은 4개-값의 리더 벡터들을 가질 수 있을 것이다. 상기 특정 프로세싱에서 그런 리더 클래스들을 다루는 것은 상기 일반 프로세싱의 복잡성을 감소시키도록 할 수 있을 것이며, 이는 상기 일반 프로세싱이 3개 또는 그 보다 작은 개수의 상이한 값들을 가진 리더 벡터들을 구비한 리더 클래스들에 대처할 수 있을 것이기 때문이다. 이는 입력 벡터들에 인덱스를 부여하는 것의 전반적인 복잡성을 감소시키는데 기여한다.
벡터들의 복수의 세트들의 벡터들의 임의 세트에 포함된 입력 벡터에서, 상기 일반 프로세싱의 최적화를 허용하기 위해, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 세트들이 제외된 경우에, 상기 일반 프로세싱이 적용 가능할 수 있을 것이다.
상기 입력 벡터에 인덱스를 부여하는 것은 상기 리더 클래스들에 의해 정의된 래티스 코드북을 기반으로 하는 양자화 프로세스에서 수행될 수 있을 것이다.
본 발명의 상기 첫 번째 모습의 예시적인 일 실시예에 따르면, 상기 인덱스를 부여하는 것 (indexing)은 이항 인덱싱 (binomial indexing)이다. 그런 이항 인덱싱에서, 인덱스를 부여하는 것은 특정 차원의 벡터에서의 위치들 상에 값들을 분배하는 확률들의 수를 기반으로 한다.
본 발명의 두 번째 모습에 따른 방법이 개시된다. 상기 방법은, 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 타겟 벡터를 상기 타겟 벡터와 연관된 인덱스를 기반으로 하여 결정하는 것을 포함한다. 상기 결정하는 것은, 상기 타겟 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 타겟 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하는 것을 포함한다. 상기 결정하는 것은 상기 타겟 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하는 것을 더 포함한다.
본 발명의 두 번째 모습에 따른, 컴퓨터 프로그램이 또한 개시된다. 상기 컴퓨터 프로그램은 프로세서로 하여금 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 타겟 벡터를 상기 타겟 벡터와 연관된 인덱스를 기반으로 하여 결정하도록 동작 가능한 명령어들을 포함한다. 상기 결정하는 것은, 상기 타겟 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 타겟 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하는 것을 포함한다. 상기 결정하는 것은 상기 타겟 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하는 것을 더 포함한다.
본 발명의 두 번째 모습에 따라, 상기와 같은 컴퓨터 프로그램을 저장하는, 컴퓨터로 읽을 수 있는 매체가 또한 개시된다. 상기 컴퓨터로 읽을 수 있는 매체는 전기, 자기, 전기-자기 또는 광학의 모습으로 디지털 데이터를 저장할 수 있는 임의의 매체일 수 있을 것이다. 상기 매체는 기기 내에 장착되어 고정되어 있을 수 있을 것이며 또는 탈부착 가능한 매체일 수 있을 것이다.
본 발명의 두 번째 모습에 따른 장치가 또한 개시된다. 상기 장치는 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 타겟 벡터를 상기 타겟 벡터와 연관된 인덱스를 기반으로 하여 결정하도록 구성된 프로세싱 컴포넌트를 포함한다. 상기 프로세싱 컴포넌트는, 결정될 상기 타겟 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 타겟 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하도록 또한 구성된다. 상기 프로세싱 컴포넌트는, 상기 타겟 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하도록 또한 구성된다.
본 발명의 두 번째 모습에 따른 장치가 또한 개시된다. 상기 장치는 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 타겟 벡터를 상기 타겟 벡터와 연관된 인덱스를 기반으로 하여 결정하는 수단을 포함한다. 상기 결정하는 수단은 상기 타겟 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 타겟 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하기 위한 수단을 포함한다. 상기 결정하는 수단은 상기 타겟 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하기 위한 수단을 더 포함한다.
본 발명의 두 번째 모습에 따르면, 상기 타겟 벡터는 상기 타겟 벡터와 연관된 인덱스를 기반으로 하여 결정될 벡터이다. 상기 타겟 벡터는 벡터들의 한 세트 내에 포함되며, 상기 벡터들의 한 세트는 벡터들의 복수의 세트들에 포함된다. 벡터들의 상기 복수의 세트들은 예를 들면 양자화 프로세스를 위한 코드북으로서 봉사할 수 있을 것이다. 예를 들면 본 발명의 상기 첫 번째 모습을 참조하여 상기에서 개시된 것과 같이, 그런 양자화 프로세스에서, 상기 타겟 벡터는 예를 들면 양자화될 벡터에 관하여 벡터들의 복수의 세트들 내의 모든 벡터들과 가장 가깝게 정합하는 것으로서 식별될 수 있을 것이며, 그리고 인덱스가 부여될 수 있을 것이다 (즉, 인덱싱되었을 것이다). 그 인덱스는 한 세트의 벡터들 내에서 상기 타겟 벡터를 적어도 부분적으로 식별할 수 있을 것이다. 추가로, 이 인덱스는 예를 들면 상기 타겟 벡터가 포함된 벡터들의 세트를 식별할 수 있을 것이며, 그리고 또한 상기 타겟 벡터의 성분들의 부호들을 나타낼 수 있을 것이다. 이 인덱스를 기반으로 하여, 본 발명의 두 번째 모습에 따라서, 상기 타겟 벡터가 회복된다. 이는 상기 타겟 벡터에 인덱스를 부여하는 것을 수행하는 개체로부터 상기 인덱스를 기반으로 하여 상기 타겟 벡터를 결정하는 것을 수행하는 개체로 상기 인덱스를 전송할 것을 필요로 할 수 있을 것이다. 이 목적을 위해, 상기 인덱스는 상기 개체들 사이에서 전달되는 하나의 신호로서 간주될 수 있을 것이다. 인덱스를 부여하는 것은 예를 들면 양자화 동안에 발생할 수 있을 것이며, 그리고, "탈-인덱싱 (de-indexing)"으로서도 여겨질 수 있을 것인, 상기 인덱스를 기반으로 하여 상기 타겟 벡터를 결정하는 것은 탈-양자화 (de-quantization) 동안에 발생할 수 있을 것이다.
본 발명의 상기 두 번째 모습에 따르면, 상기 타겟 벡터가 포함되어 있는 벡터들의 세트에 의존하여, 상이한 프로세싱이 수행된다. 벡터들의 세트들의 상기 미리 정의된 그룹에 속한 한 벡터의 세트들에 상기 타겟 벡터가 포함되면, 특정 프로세싱이 적용된다. 그렇지 않으면, 일반 프로세싱이 적용된다.
상기 특정 프로세싱은 상기 타겟 벡터가 포함되어 있는 벡터들의 세트의 특성에 적응된다.
상기 특정 프로세싱은 상기 특성을 이용하는데 있어서 상기 타겟 벡터가 포함된 벡터들의 세트에 맞추어진다. 이는 프로세싱을 개선하도록 하며 그리고 상기 타겟 벡터를 결정하는 것의 전반적인 복잡성을 줄이도록 한다. 예를 들면, 상기 특정 프로세싱의 구조는 상기 일반 프로세싱에 비하여 간략하게 될 수 있을 것이다. 이 방책은 전반적인 복잡성 감소로 귀결된다. 그러나, 상기 맞추어지는 것은 상기 특성을 가진 벡터들의 세트들에 상기 타겟 벡터들이 포함된 경우들로 상기 특정 프로세싱을 적용하는 것을 제한할 수 있을 것이다. 즉, 상기 특정 프로세싱은, 예를 들면, 벡터들의 세트들 내에 포함된 상기 타겟 벡터들이 벡터들의 세트들의 상기 미리 정의된 그룹 내에 있지 않은 경우에는 상기 특정 프로세싱은 적용 가능하지 않을 수 있을 것이다.
벡터들의 세트들의 특정 그룹에 타겟 벡터들이 포함된 경우에만 상기 일반 프로세싱은 적용에 제한받지 않을 수 있을 것이다. 예를 들면, 상기 일반 프로세싱은 벡터들의 복수의 세트들 중 임의 세트의 벡터들에 포함된 타겟 벡터들의 경우에 또는 벡터들의 복수의 세트들 중 임의 세트의 벡터들에 포함된 상기 타겟 벡터들에서 벡터들의 세트들의 미리 정의된 그룹의 벡터들의 세트들이 제외된 경우에 적용 가능할 수 있을 것이다. 후자의 경우 대안으로 상기 일반 프로세싱의 적어도 일부 최적화를 허용할 수 있을 것이다.
본 발명의 상기 첫 번째 모습의 예시적인 일 실시예에 따르면, 상기 일반 프로세싱은, 상기 특성을 구비한 벡터들의 상기 세트들에 포함된 타겟 벡터들에 적용되면, 동일한 타겟 벡터들에 적용되는 상기 특정 프로세싱보다 더 복잡할 것이다. 거기에서, 복잡성은 예를 들면 계산 복잡성 및/또는 저장 요구사항에 관한 것일 수 있을 것이다.
본 발명의 두 번째 모습의 예시적인 일 실시예에 따르면, 벡터들의 세트들 중의 상기 미리 정의된 그룹 내의 한 세트의 벡터들에 포함된 타겟 벡터들은, 벡터들의 세트들 중의 상기 미리 정의된 그룹 내에 있지 않은 벡터들의 한 세트 내에 포함된 타겟 벡터들보다 더 큰 확률로 결정된다. 전반적인 복잡성에 관하여, (상기 특성을 구비한 벡터들의 세트들 내에 포함된 타겟 벡터들에게 적용될 때에) 상기 특정 프로세싱이 상기 일반 프로세싱보다 덜 복잡하다는 것이 특히 유용할 수 있을 것이다. 상기 확률은 상기 타겟 벡터를 결정하는 것이 수행될 애플리케이션 (예를 들면, 탈-양자화)에 따라 달라질 수 있을 것이다. 상기 확률은 예를 들면 오프-라인으로 결정될 수 있을 것이다.
본 발명의 상기 첫 번째 모습의 예시적인 일 실시예에 따르면, 벡터들의 상기 세트들은 리더 클래스들이며, 그리고 각 리더 클래스는 상이한 리더 벡터 및 그 리더 벡터의 치환 (permutation)들을 포함한다.
상기 특정 프로세싱이 적응되는 상기 특성은, 예를 들면, 리더 클래스들의 상기 미리 정의된 그룹이, 벡터들의 성분들이 상이한 값들의 미리 정의된 개수만을 취하는 그런 리더 벡터들을 구비한 리더 클래스들만을 포함한다는 것일 수 있을 것이다. 상기 미리 정의된 개수는 예를 들면 2일 수 있을 것이다. 거기에서, 두 개의 서로 다른 값들 중의 하나는 예를 들면 0일 수 있을 것이다.
상기 타겟 벡터를 상기 결정하는 것은 상기 리더 클래스들에 의해 정의된 래티스 코드북 (lattice codebook)을 기반으로 하는 탈-양자화 (de-quantization) 프로세스에서 수행될 수 있을 것이다.
상기 특정 프로세싱이 적응되는 상기 특성은, 리더 클래스들의 상기 미리 정의된 그룹이, 벡터들의 성분들이 상이한 값들 중의 최대 수를 취하는 그런 리더 벡터들을 구비한 리더 클래스들만을 포함한다는 것일 수 있을 것이다. 예를 들면,
리더 클래스들의 상기 미리 정의된 그룹 내의 상기 리더 클래스들은 4개-값의 리더 벡터들을 가질 수 있을 것이다. 상기 특정 프로세싱에서 그런 리더 클래스들을 다루는 것은 상기 일반 프로세싱의 복잡성을 감소시키도록 할 수 있을 것이며, 이는 상기 일반 프로세싱이 3개 또는 그 보다 작은 개수의 상이한 값들을 가진 리더 벡터들을 구비한 리더 클래스들에 대처할 수 있을 것이기 때문이다. 이는 입력 벡터들의 인덱스를 제거하는 전반적인 복잡성을 감소시키는데 기여한다.
벡터들의 복수의 세트들의 벡터들의 임의 세트에 포함된 타겟 벡터에서, 상기 일반 프로세싱의 최적화를 허용하기 위해, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 세트들이 제외된 경우에, 상기 일반 프로세싱이 적용 가능할 수 있을 것이다.
본 발명의 두 번째 모습의 예시적인 일 실시예에 따르면, 상기 인덱스는 이항 (binomial) 인덱스를 부여하는 것을 통해서 상기 타겟 벡터와 연관된다. 그런 이항 인덱싱에서, 인덱스를 부여하는 것은 특정 차원의 벡터에서의 위치들 상에 값들을 분해하는 확률들의 수를 기반으로 한다.
본 발명의 세 번째 모습에 따른 시스템이 개시된다. 상기 시스템은, 제1 프로세싱 컴포넌트를 포함한다. 상기 제1 프로세싱 컴포넌트는 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 입력 벡터에 인덱스 (index)를 붙이도록 구성되며, 상기 제1 프로세싱 컴포넌트는, 인덱스가 붙여질 상기 입력 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 입력 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하도록 또한 구성되고, 그리고 상기 제1 프로세싱 컴포넌트는, 인덱스가 붙여질 상기 입력 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하도록 또한 구성된다. 상기 시스템은 제2 프로세싱 컴포넌트를 더 포함하며, 상기 제2 프로세싱 컴포넌트는 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 타겟 벡터를 상기 타겟 벡터와 연관된 인덱스를 기반으로 하여 결정하도록 구성되며, 상기 제2 프로세싱 컴포넌트는, 결정될 상기 타겟 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 타겟 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하도록 또한 구성되고, 그리고 상기 제2 프로세싱 컴포넌트는, 상기 타겟 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하도록 또한 구성된다.
본 발명의 상기 세 번째 모습에 따른 시스템을 위해, 본 발명의 상기 첫 번째 모습 및 두 번째 모습의 특징들 및 이점들에 대한 상기의 설명이 따라서 적용된다.
상기 제2 프로세싱 컴포넌트는 예를 들면 상기 제1 프로세싱 컴포넌트에 의해 입력 벡터에 인덱스를 부여하는 동안에 상기 입력 벡터에 부여된 인덱스와 연관된 타rpt 벡터를 결정할 수 있을 것이며, 그래서 상기 입력 벡터와 타겟 벡터는 동일하다. 상기 인덱스는 예를 들면 상기 제1 프로세싱 컴포넌트와 제2 프로세싱 컴포넌트 사이에서 전달될 수 있을 것이다.
상기 제1 프로세싱 컴포넌트와 제2 프로세싱 컴포넌트는 예를 들면 두 가지 서로 다른 기기들에 포함될 수 있을 것이며, 상기 제1 프로세싱 컴포넌트를 포함하는 기기 내에서 입력 벡터에 인덱스가 부여되고 그리고 상기 제1 프로세싱 컴포넌트에 의해 결정된 인덱스와 연관된 타겟 벡터가 상기 제2 프로세싱 컴포넌트를 포함하는 기기 내에서 결정된다.
마찬가지로, 상기 제1 프로세싱 컴포넌트와 제2 프로세싱 컴포넌트는 동일한 기기 내에 포함될 수 있을 것이며, 그리고 예를 들면, 각각 양자화 및 탈-양자화를 위해서 사용될 수 있을 것이다.
본 발명의 이와 같은 모습들 그리고 다른 모습들은 여기에서 제시된 상세한 설명을 참조하면 명백하고 명료할 것이다. 본 발명 및 상기에서 제시된 예시적인 실시예들의 특징들은 가능한 서로의 모든 결합에서 또한 개시된 것으로 이해되어야 한다.
도 1은 G.EV-VBR 인코더의 개략적인 블록도이다.
도 2는 본 발명의 첫 번째 모습의 예시적인 일 실시예에 따라 입력 벡터에 인덱스를 부여하는 방법의 흐름도이다.
도 3은 본 발명의 첫 번째 모습의 예시적인 일 실시예에 따라 타겟 벡터와 연관된 인덱스를 기반으로 하여 타겟 벡터를 결정하는 방법의 흐름도이다.
도 4는 본 발명의 첫 번째 모습 및 두 번째 모습의 예시적인 일 실시예에 따른 방법을 실시할 수 있는 기기의 개략적인 블록도이다.
본 발명의 다음의 상세한 설명에서, 본 발명의 예시적인 실시예들은 G.EV-VBR 코덱 또는 그것의 파생 기술을 위해서 제안된 래티스 양자화기의 맥락에서 래티스 포인트들에 인덱스를 붙이고 (indexing) 그리고 인덱스를 제거 (de-indexing)하는 맥락에서 설명될 것이다. 그러나 본 발명은 이 코덱으로, 이 특정 래티스 양자화기로, 또는 래티스 구조의 인덱싱/탈-인덱싱으로 한정되는 것이 아니며; 벡터들의 인덱싱 및 탈-인덱싱이 필요한 경우에는 모든 다른 시나리오에 동등하게 적용될 수 있을 것이다.
G.EV-VBR 코덱은 ITU-T SG16/Q9에서 표준화 절차가 진행된다. 그 코덱은 8, 12, 16, 24 및 32 kbits/s의 코딩 비트레이트를 가진 광대역 신호들을 위한 음성 및 오디오 내장 스케일러블 코덱이다.
도 1은 G.EV-VBR 인코더 (1)의 개략적인 블록도이다. 처음의 두 계층들은 코드 여기 선형 예층 (Code Excited Linear Prediction (CELP))을 기반으로 하며 "코어 코덱" (코어 코덱 유닛 (101) 참조)으로 표시된다. 나머지 계층들은 원래의 신호 (100)와 코어 코덱 합성 신호 사이의 차이 신호 (103)의 수정된 이산 코사인 변환 (Modified Discrete Cosine Transform (MDCT)) 계수 (MDCT 유닛 (104) 참조)를 인코딩하는 것을 통해 획득되며, 상기 차이 신호는 덧셈기 (102)로부터 얻어진다. (비트레이트 24 kbit/s에 대응하는 계층에 대해) 상기 MDCT 계수들을 양자화하는 것은 팩터 2로 크기 조절된 래티스 E8의 회전된 버전인 래티스 2RE8 로부터의 리더 클래스들로부터 얻어진 리더 클래스들을 기반으로 하여 양자화기 (105)를 이용한다. 그러면 상기 첫 번째 2개의 계층들은 비트스트림 생성 유닛 (106)에서 상기 나머지 계층들과 결합된다.
양자화에서 보통 사용되는 상기 래티스들은 리더 클래스들의 집합 (union)으로서 표현된다. 결과적으로, 래티스들을 기반으로 하는 양자화 구조들은 리더 클래스들의 집합들로서 기술될 수 있다.
리더 벡터는 n-차원 정수 벡터이며, 그 벡터의 성분들은 다음과 같이 순서가 정해진다 (예를 들면, 감소한다):
Figure pct00001
값 vi가 ni 개 존재한다. 상기 리더 벡터에 대응하는 리더 클래스는, 아마도 몇몇 제한들을 가진, 상기 리더 클래스의 모든 부호화된 치환들을 통해서 얻어진 벡터들로 구성된다. 상기 제한들은, 그 제한들이 적용될 때에, 홀수 또는 짝수일 수 있을 음의 벡터 성분들의 개수에 관련된다. 상기 리더 클래스 내의 벡터들의 개수는
Figure pct00002
이며, 이 경우 p는 0 (부호 제한이 없다) , +1 (음의 성분들의 짝수 개수), 또는 -1 (음의 성분들의 홀수 개수) 일 수 있는 패리티 (parity)이다.
이항 (binimial)의 인덱스를 부여하는 것 (indexing)을 예시하기 위해, 4-차원 리더 벡터 (2,1,1,0)을 고려한다. 여기에서는 치환 (permutation)들을 고려하며 부호는 고려하지 않는다.
(2,1,1,0)의 리더 클래스에 속한 벡터들은 아래의 테이블 1에서 주어지며, 그 경우 서로 다른 두 인덱싱 변형 (variant)들이 존재한다:
Figure pct00003
테이블 1: 리더 벡터 (2,1,1,0)에 대한 리더 클래스
테이블 1의 첫 번째 변형 (variant)에 대해서, 첫 번째 그룹 (0-3의 인덱스 즉, 수평선에 의해 표시되는 첫 번째 4개의 벡터들)에서, 1 및 0의 값들의 상대적인 위치는 동일하지만, 한 벡터에서 다른 벡터로 가면 값 2의 위치는 변한다. 동일한 것이 (인덱스 4-7의) 두 번째 그룹에서 일어나며 그리고 이하 동일하다. 첫 번째 그룹과 두 번째 그룹 사이의 차이는 1의 값을 가지는 성분들이, 2의 값을 가진 성분들을 위한 위치를 결정한 후에 이용 가능한 상기 3개 위치 (position)들 상에 어떻게 놓여 있는가에 있다. 3개 위치들 상의 이런 두 값들의 가능한 배치들의 개수는 이항 계수
Figure pct00004
에 의해 주어진다. 그러므로, 첫 번째 변형에 3개 그룹들이 존재하며, 이 경우 각 그룹에, 2의 값의 위치만이 변경되며, 그래서 상기 3개 그룹들 각각에
Figure pct00005
벡터들이 존재한다.
그러므로, 리더 클래스 내의 벡터들을 세는 한가지 방법은 벡터 내의 차이 값들을, 한번에 하나씩, 고려하고, 그리고 그 값들이 가능한 위치들을 검사하는 것이다. 고려된 예에서 (변형 (Variant) 1), 값 2에 대한 가능한 위치들이 먼저 고려되고, 그리고 나머지 3개 위치들 중에서, 값 1을 가진 성분들의 위치들이 고려된다. 0의 값을 가진 성분들의 위치들은 첫 번째 두 값들의 위치에 종속되며 (왜냐하면 마지막 값이기 때문에), 그래서 개별적으로 고려될 필요가 없다.
테이블 1에서 변형 2 (Variant 2)는 유사한 접근 방식을 따른다. 그러나, 값 2의 위치는 한 그룹 내에서는 변경되지 않지만, 그룹들을 통해서는 변경된다. 따라서, (각각 0-2, 3-5, 6-8 및 9-11의 인덱스들을 구비한) 새로운 4개 그룹들이 존재한다. 이런 그룹들 각각에서, 3개의 벡터들은, 3개의 이용 가능한 위치들 상에 두 번 (즉,
Figure pct00006
) 씩 존재하는 상기 값 1의 배치라는 점에서 서로 다르다.
ITU-T SG16/Q9에서 표준화되고 있는 G.EV-VBR 코덱에 대해서 제안된 예시의 래티스 양자화기로 돌아가서, 거기에서 정의된 리더 벡터들은 아래의 테이블 2에서 다시 생성된다 (이 리더 벡터들은 스케일링 요소의 면에서 표준화된 리더 벡터들과는 다를 수 있을 것이다). 상기 리더 벡터들의 차수 (그리고 그래서 상기 래티스)는 8이며, 그리고 전체 36개의 리더 벡터들의 존재한다. 그 속에, 홀수-값의 성분들을 구비한 리더 벡터들은 부호 제한들을 가진다. 특히, 8개 모든 성분들의 절대값들의 합이 4의 배수이면, 음의 성분들의 개수는 짝수이어만 하며, 그렇지 않다면, 그것은 홀수이어야만 한다. 예를 들면, 인덱스 0인 리더 벡터 (1,1,1,1,1,1,1,1) 는 합이 8이며, 이는 4의 배수이며, 그러므로, 리더 벡터에 대응하는 리더 클래스로부터의 벡터들 내에는 짝수개의 -1들이 존재해야만 한다.
인덱스 3인 리더 벡터 (3,1,1,1,1,1,1,1) 는 합이 10이며, 이는 4의 배수가 아니며, 그러므로, 음의 성분들의 개수는 짝수이어야만 한다.
Figure pct00007
Figure pct00008
테이블 2: G.EV-VBR 코덱 내의 리더 벡터들
리더 클래스에 속한 벡터에 대한 이항 인덱싱 (binomial indexing) 절차는 다음의 예시의 일반 인덱싱 코드에 의해 기술될 수 있으며, 이 코드는 ITU G.191 ITU-T 소프트웨어 툴 라이브러리 2005 사용자 매뉴얼에 의해 제공되는 고정 포인트 라이브러리를 이용하는 (일반적인 디지털 신호 프로세서 (DSP)를 시뮬레이션하기 위한, 예를 들면, 함수 sub(), add(), L_multO(), movel6()) ANSI-C로 쓰여져 있다. 거기에서, 코드에 대한 코멘트들은 이중 전방 슬래시 "//" 뒤에 또는 "/*" 과 "*/" 표시들 사이에 제공된다.
이 인덱싱 코드는 일반적이며, 즉, 테이블 2의 어떤 리더 클래스 내에 포함된 입력 벡터들에 적용 가능하다.
pi = DIM; movel6();
index = 0; movel6();
i = 0 ; move16 ( ) ;
tmp = sub (no_vals_ [idx_lead], 1) ;
//tmp = no_vals_[idx_lead] -1 ;
WHILE (tmp>0)
{
tmp = sub (tmp, 1); // tmp --;
IF ( tmp > 0) {
find_pos_elim_fx (abs_cv, DIM, vals_[idx_lead] [i], p);
idx = c2idx fx(pi,p,no vals ind [idx lead] [i]);
pi = sub (pi, no_vals_ind_[idx_lead] [i]);
// pi = pi-no_vals_ind_[idx_lead] [i];
q = number_fx (sub (no_vals_[idx_lead],
add(1, i) ), &no_vals_ind_[idx_lead] [i+1 ], pi);
index = add (index, extract_l (L_multO (idx, q) ) ) ;
// index = index + idx*q;
i = add(i, 1) ; // i ++
}
ELSE{
find pos fx (abs_cv, DIM, vals_[idx_lead] [i],p);
idx = c2idx_fx (pi, p, no_vals_ind_[idx_lead] [i]);
index = add (index, idx) ; // index = index + idx;
}
}
이런 인덱싱 코드에서, 상기 변수들 및 함수들/절차들은 다음의 의미를 가진다:
- DIM 은 래티스 차원, 즉, 8이다.
- 변수 int no_vals_ind_[36]은 각 리더 벡터에 대한 서로 다른 값들의 개수를 저장한다.
- 변수 int no_vals_ind_[36][4] 는 각 리더 벡터 내의 각 개별 값의 개수를 저장한다.
- 변수 int vals_[36][4] 는 각 리더 벡터에 속한 값들을 저장한다.
- 변수 int idx_lead 는, 인덱스가 붙여질 입력 벡터가 속하는 리더 클래스의 인덱스를 나타낸다.
- 변수 int abs_cv[8] 은 인덱스가 붙여질 입력 벡터의 절대값들을 간직한다.
- 함수 find_pos_elim_fx (int *abs_cv, int dim, int val, int *p)는 절대값들 abs_cv의 dim-차원 벡터 내에서 val 의 값을 가진 성분들의 위치들을 찾고, 그 성분들을 어레이 p에 놓으며, 그리고 그것들을 벡터 abs_cv 에서 제거하여, 다음 값을 검색하기 위해 벡터 abs_cv를 준비한다.
- 함수 find_pos_fx(int * abs cv, int dim, int val, int * p) 는 상기 성분들을 제거하는 것이 없는 find_pos_elim_fx 함수와 동일하다. 이 함수는 리더 벡터 내의 마지막 값의 다음에 대해서 호출되며, 이는 마지막 값에 대해서는 추가의 검색이 존재하지 않기 때문이며, 그래서, 마지막 값의 다음을 가지는 성분들을 제거할 필요가 없다.
- 함수 int c2idx_fx(int dim, int *p, int no vals) 는 no_vals 성분들의 위치에 대한 인덱스를 dim 개의 전체 가능한 성분들로 할당한다. 예를 들면:
(x x 0 0) index 0
(x 0 x 0) index 1
(x 0 0 x) index 2
(0 x x 0) index 3
(0 x 0 x) index 4
(0 0 x x) index 5,
이 경우, no_vals = 2, DIM =4 그리고 4개의 가능한 위치들 상의 두 개의 "x"들의 위치에 인덱스가 붙여진다.
- 함수 int number_fx (int no_vals, int *no_vals_ind, int dim)는 각각이 어레이 no_vals_ind_에서의 발생 개수를 구비한 값들의 no_vals 개수를 가지는 dim-차원 벡터의 비-부호화 (non-signed) 치환들을 통해서 얻어진 벡터들의 개수를 카운트한다. 이것은 수학식 1에서
Figure pct00009
의 요소가 없는 공식에 대응한다.
상기에서 제시된 일반적인 인덱싱 코드의 기능은 다음의 예로부터 이해될 수 있다. 테이블 1의 변형 2의 예시의 리더 클래스를 다시 고려한다. 이 예에서 상기 리더 벡터는 (2, 1, 1, 0) 이며, 비록 상기 예에 대래서 중요한 것은 아니지만, 상기 리더 클래스는 idx_lead=5와 연관되는 것으로 가정한다. 더 나아가, 인덱스가 붙여질 입력 벡터는 (1,0,2,1)이라고 가정하며, 즉, 상기 예의 차원은 8-차원 벡터들을 사용하는 테이블 2에서의 예시의 래티스 양자화기에서 보다 더 작다. 그러나, 상기 인덱싱 코드의 보편성 때문에, 이는 문제가 되지 않는다.
그러면, 상기 인덱싱 코드에서의 변수들은 다음의 값들로 초기화된다:
abs_cv= (1, 0, 2, 1) // 리더 클래스 5에서
// 초기화될 입력 벡터
DIM=4 // 4-차원 벡터들
no_vals[5]=3 // 타겟 벡터 내의 3개의 서로 다른 벡터들,
// 즉, 3개-값으로 된 타겟 벡터
no_vals_ind_[5] = (1, 2, 1) // 상기 3개의 서로 다른 값들이 각각
// 입력 벡터에서 한 차례, 두 차례, 그리고
// 한 차례 발생한다.
vals_[5] = (2, 1, 0) // 입력 벡터 내의 3개의 서로
// 다른 값들은 각각 2, 1 그리고 0이다.
그러면, 상기 인덱싱 코드는 (각각의 while-반복의 끝에서) 다음의 결과들을 산출한다:
Figure pct00010
상기의 테이블 1의 변형 2에서 보여지는 것과 같이 리더 클래스 idx_lead=5 에 포함된 입력 벡터 (1,0,2,1)에 인덱스를 붙인 (indexing) 최종 결과로서, (위치) 인덱스 7이 얻어지며, 이는 실제로 리더 클래스 5 내의 벡터 (1,0,2,1)에 대응한다.
상기에서 제시된 일반적인 인덱싱 코드로 돌아가서, 상기 입력 벡터 내의 값들의 위치들을 나타내는 위치 인덱스에 추가로, 상기 입력 벡터 내의 영-아닌 값들의 부호에 관련된 정보가 인코드되어야만 한다. 상기 부호에 대한 인덱스는 다음과 같이 계산된다:
Figure pct00011
이 경우 S는 인덱스가 붙여질 벡터 내의 영-아닌 성분들의 개수이며, i-번째 영-아닌 성분이 양이면 b i 는 0이고 그렇지 않으면 1이다. S의 값은 한 리더 클래스 내의 모든 벡터들에 대해서 동일하다.
그러면 (상기 입력 벡터가 포함되어 있는 리더 클래스를 나타내는 정보는 물론이고 위치 정보 및 부호 인덱스 정보 두 가지 모두를 포함하는) 마지막 인덱스 I는 다음과 같이 계산된다:
I = shl(index, idx_sign_max_bit [idx_lead] ) ;
// I = index<<idx_sign_max_bit [idx_lead];
I = L_add(I, L_deposit_l(idx_sign));
// I = I+idx_sign;
I = extract_l(L_add(I, offset_lead_[idx_lead] ) ) ;
// I = I + offset_lead[idx_lead] ;
사용된 변수들은 다음의 의미를 가진다.
- int idx_sign_max_bit [36] 는 상기 부호 인덱스가 표현되는 비트들의 개수를 저장하는 변수이다. 실제로 그 변수는 패리티가 0이면 상기 벡터 내의 영-아닌 값들의 개수에 대응하며 또는 상기 패리티가 +/-1이면 영-아닌 값들의 개수 - 1에 대응한다.
- uint offset_lead [36+1] 는 각 리더 클래스에 대한 리더 오프셋을 나타낸다. 그것은 제1 리더 클래스 내에 n1 개 벡터들이 존재하고, 제2 리더 클래스 내에 n2 개 벡터들이 존재하는 등이라면, 상기 offset_lead는 0, n1, n1+n2, ... 일 것이라는 것을 실제로 의미한다. 이런 방식에서, 상기 입력 벡터가 포함된 리더 클래스의 표현은 상기 최종 인덱스 I에 포함될 수 있다.
- 상기 최종 인덱스 I는, 상기 idx_sign을 이동된 인덱스의 마지막 idx_sign_max_bits[] 비트들 위에 실제로 놓음으로써 (즉, idx_sign이 기껏해야 idx_sign_max_bits를 이용할 수 있다는 것을 알면서 상기 위치 인덱스 비트들과 idx_sign 비트들을 연결시키면서) 그리고 인덱스가 붙여질 현재의 벡터가 속한 리더 클래스에 대한 오프셋을 더함으로써 얻어진다.
본 발명의 첫 번째 모습은, 인덱스가 붙여질 입력 벡터가 리더 클래스들의 미리 정의된 그룹에 속한 리더 클래스에 포함되면 특정 프로세싱을 적용하고, 그리고 그렇지 않은 경우에는 일반 프로세싱을 적용하여, 상기에서 설명된 일반적인 인덱스 붙이기 (indexing)의 복잡성을 줄이도록 제안한다.
도 2는 본 발명의 첫 번째 모습의 예시적인 일 실시예에 따른 입력 벡터에 인덱스를 부여하는 방법을 예시한다.
첫 번째 단계 (200)에서, 입력 벡터가 수신된다. 상기 입력 벡터는, 예를 들면, 리더 클래스들의 집합인 래티스 내의 모든 벡터들에 가장 가깝게 정합되는 것으로서, 예를 들면, 양자화 프로세스 동안에 결정될 수 있을 것이다. 상기 입력 벡터가 포함되는 리더 클래스의 신원 역시 단계 200에서 수신된다. 몇 가지 예를 들면, 이는 상기 리더 클래스에 대한 인덱스 또는 상기 입력 벡터가 포함된 리더 클래스의 리더 벡터에 대한 인덱스가 될 수 있을 것이다.
단계 201에서, 그러면 리더 클래스가 하나 또는 그 이상의 리더 클래스들의 미리 정의된 그룹에 포함되는가의 여부가 판별된다. 포함된다면, 특정 프로세싱이 단계 202에서 적용된다. 그렇지 않다면, 일반 프로세싱이 단계 203에서 적용된다.
리더 클래스들의 미리 정의된 그룹에 대한 예 그리고 리더 클래스들의 그런 미리 정의된 그룹의 리더 클래스 내에 포함된 입력 벡터들에 인덱스를 붙일 때에 적용되는 상기 특정 프로세싱의 예가 더 상세하게 이제 설명될 것이다.
본 발명의 첫 번째 모습의 첫 번째 예시적인 실시예에 따르면, 인덱스 20의 리더 벡터 (테이블 2 참조) 즉, {6,4,2,0,0,0,0,0} 와 연관된 리더 클래스만이 특정 프로세싱을 받기 쉽다. 그래서, 리더 클래스들의 상기 미리 정의된 그룹만이 인덱스 20에 의해 식별된 하나의 리더 클래스를 포함한다.
특히, 상기에서 설명된 일반적인 인덱싱 코드에서 함수 number_fx()를 호출하는 것은 다음의 코드에 의해 대체될 수 있을 것이다:
IF (sub(idx_lead,20)==0) // if (idx_lead == 20)
{
q = 42; movel6() ;
if (sub(tmp,l) ==0 ){ // if (tmp == 1)
q = 6; movel6 ( ) ;
}
}
ELSE {
q = C [sub (pi, 1)] [(no_vals_ind_[idx_lead] [add(i, 1)])] ; movel6( );
/ / q = C [pi - 1 ] [ no_val s_ind_[ idx_lead] [ i+ 1 ] ] ;
}
상기 변수 C[DIM+1][DIM+1]은 차원 8까지 이항 계수들을 저장한다.
이 실시예에서, 상기 특정 프로세싱은 idx_lead 가 20과 같은 경우에 실행되는 코드에 의해 표현되며, 그리고 상기 일반 프로세싱은 idx_lead 가 20과 같지 않으면 실행되는 코드에 의해 표현된다.
이 실시예의 맥락에서, 본 발명자들은 인덱스 20인 리더 클래스는 4 개의 서로 다른 값들을 가진 단일 리더라는 것을 알게 되었다. 4개의 서로 다른 값들을 가지는 단 하나인, 인덱스 20의 상기 리더 클래스는 테이블 no_vals_ind_이 36 x 4 차원 (36개 리더 클래스들 그리고 리더 클래스마다 4개의 서로 다른 값들의 최대 개수)이도록 강제한다, 즉, no_vals_ind_[idx_lead][i] 는 idx_lead=20 그리고 i=3 (i 는 0부터 3)에 대해서만 0과 다르다. 그러나, 상기에서 제시된 일반적인 인덱싱 (indexing)에서, no_vals_ind_ 의 이 영-아닌 값에 대한 참조는 함수 number_fx()에서 idx_lead=20 에 대해서만 일어난다. 그러므로, 상기 함수 number_fx()를 (인덱스 20의 리더 벡터를 구비한 리더 클래스용의) 특정 프로세싱 그리고 (나머지 리더 클래스들 용의) 일반 프로세싱으로 분할하는 것이 도움이 되며, 이 경우 상기 일반 프로세싱에서, 36x3 차원의 테이블 no_vals_ind_ 로의 참조만이 필요하다. 그러므로, 상기 특정 프로세싱을 도입하는 것은 상기 일반 프로세싱을 최적하도록 허용한다.
본 발명의 첫 번째 모습의 두 번째 실시예의 맥락에서, 본 발명자들은 일부 실제 사용의 경우들에서 상기 리더 클래스들의 작은 서브세트가 다른 것들보다 더 빈번하게 발행한다는 것을 알게 되었다. 예를 들면, 테이블 2의 리더 벡터들 상에 구축된 래티스 구조를 구비한 G.EV-VBR 코덱 내에서 래티스 양자화기로 양자화된 데이터에 대해, 인덱스 1의 리더 벡터, 즉, (2,2,0,0,0,0,0,0)이 사용될 가능성이 가장 크며, 그리고, 일반적으로, 리더 벡터가 두 개의 서로 다른 값들 가진 벡터들이 (예를 들면, 1, 2, 3, 4, 5, 6, 9 등의 인덱스를 가진 리더 벡터들) 다른 벡터들보다 더 사용될 것 같다. 그들은 이런 벡터들에 대해서는 복잡성이 더 작은, 인덱스를 부여하는 방법을 생각하는 것이 합리적일 것이라고 결론을 내렸다.
부호에 대한 인덱스를 계산하기 위해, 각 벡터 성분의 부호를 검사하는 루프에 대한 필요가 있다. 두 개의 서로 다른 값들만을 가진 리더 벡터들을 개별적으로/특별하게 고려하는 것은 덜 복잡하며, 이는 인덱스를 부여하는 절차가, 다음 값들의 위치들을 검사하기 위해서 추가의 준비를 하지 않으면서, 오직 하나의 값 (첫 번째 값)의 위치를 처리하기 때문이다. 추가로, 두 개의 값들만을 가진 리더 벡터들의 대부분은 하나의 0 값을 가지며 (예를 들면, 테이블 2의 인덱스 1, 2, 4 등을 가진 리더 벡터를 참조), 그래서 위치 인덱스를 생성하는 것은 동일한 루프 내에서 부호 인덱스를 생성하는 것과 효율적으로 결합될 수 있다.
두 값들을 가진 두 가지 유형의 리더들이 존재하며, 한 가지 유형은 짝수 값들만을 가지며 (예를 들면, 테이블 2에서 1, 2, 4, 5 등의 인덱스를 가진 리더 벡터들 참조) 그리고 다른 유형은 홀수 값들만을 가진다 (3, 6, 9 등의 인덱스 참조). 첫 번째 유형에 대해, 대개의 성분들은 0의 값을 가지며, 두 번째 유형에 대해서, 대개의 성분들은 1의 값을 가진다.
예를 들면, 다음의 특정 절차가 짝수 성분들을 가진 두 개-값 벡터들을 프로세싱하기 위해 상기에서 설명된 일반적인 인덱싱 코드를 대체하기 위해 사용될 수 있다.
idx_sign = 0; movel6();
index = 0; /* used as cnt */ movel6();
FOR (i=0; KDIM; i++)
{
q = cv [i]; movel6(); Iogicl6();
if (q)
{
p [index] = i; movel6(); // 위치 인덱스용
}
if (q<0)
{
tmp = shl ( 1, index) ; // 부호 인덱스용
}
if (q<0){
idx_sign = add (idx_sign, tmp) ; // 부호 인덱스용
}
if (q) {
index = add (index, 1) ;
}
}
index = c2idx_fx (DIM, p, index) ; // 위치 인덱스
유사한 방식으로, 상기 두 번째 유형 (홀수 값들을 구비한 두 개-값 벡터들)은 예를 들면 다음의 절차를 사용하여 개별적으로 다루어질 수 있다:
idx_sign = 0; movel6();
index = 0; movel6();
FOR (i=0; KDIM; i++ )
{
q = cv [ i ] ; move16 ( );
if (q <0)
{
tmp = shl (1, i) ;
}
if (q<0)
{
idx_sign = add (idx_sign, tmp);
}
if (q<0){
q = sub (0, q);
}
tmp = sub (q, 1);
if (tmp)
{
p [index] = i; movel6();
}
if (tmp) {
index = add (index, 1) ;
}
}
idx_sign = shl(idx_sign, 1); // 영-아닌 패리티 때문에
index = c2idx_fx (DIM, p, index);
본 발명의 첫 번째 모습의 이 두 번째 예시의 실시예에서, 리더 클래스들의 미리 정의된 그룹은 두 개-값 리더 벡터들을 가진 모든 리더 클래스들 (즉, 인덱스 1, 2, 3, 4, 5, 6, 9 등의 리더 벡터를 구비한 리더 클래스들)을 포함한다. 상기 특정 프로세싱은 짝수 및 홀수 성분들을 각각 구비한 두 개-값 리더 벡터들을 위한 프로세싱을 규정하는 두 개 코드 세그먼트들에 의해 표현되며, 그리고 상기 일반 프로세싱은 모든 다른 리더 클래스들 (예를 들면, 테이블 2에서 리더 벡터 인덱스 0, 7, 8, 10 등을 가진 리더 클래스들)을 위해서 적용된 일반적인 인덱싱 코드에 의해 표현된다. 그 경우, 상기 미리 정의된 그룹이 여기에서 첫 번째 서브-그룹은 짝수 성분들을 가진 두 개-값 리더 벡터들을 구비하며, 두 번째 서브-그룹은 홀수 성분들을 가진 두 개-값 리더 벡터들을 구비한 두 개의 서브-그룹들로 분할되며, 그리고 이 서브-그룹들 각각에 대해, 상기 특정 프로세싱에서 서로 다른 행동들이 수행되는 것에 유의한다.
본 발명의 상기 첫 번째 모습의 두 번째 예시의 실시예에 대한 첫 번째 변경으로서, (예를 들면, 인덱스 3, 6, 9 등의) 홀수 성분들을 가진 두 개-값 리더 벡터들을 위한 특정 프로세싱을 생략하고 그리고 그 대신에 일반적으로 인덱스 코드를 부여하는 (indexing) 코드를 수행하는 것 또한 가능할 것이다. 그러면, 리더 클래스들의 미리 정의된 그룹은 짝수 성분들을 가진 두 개-값 리더 벡터들을 구비한 리더 클래스들만을 포함하게 될 것이다. 대안으로, 짝수 성분들을 가진 두 개-값 리더 벡터들을 위한 특정 프로세싱이 생략될 수 있을 것이다.
본 발명의 상기 첫 번째 모습의 두 번째 예시의 실시예에 대한 두 번째 변경으로서, 상기 특정 프로세싱을 위치 인덱스 ("index")를 결정하는 것으로 제한하거나 또는 부호 인덱스 ("idx_sign")만을 결정하는 것으로 제한하는 것이 또한 가능할 수 있을 것이다. 이런 변경은 물론 본 발명의 상기 첫 번째 모습의 두 번째 실시예의 첫 번째 변경에도 또한 적용될 수 있을 것이다.
본 발명의 첫 번째 모습은 입력 벡터에 인덱스를 부여하는 것 (인덱싱 (indexing))에 관한 것으로, 이는 예를 들면 양자화 동안에 필요하다. 다음에 설명될 본 발명의 두 번째 모습은 타겟 벡터에 연관된 인덱스를 기반으로 하여 그 타겟 벡터를 결정하는 (또는 회복시키는) 탈-인덱싱에 관한 것이다.
테이블 2에 의해 정의된 것과 같은 리더 클래스에 속한 타겟 벡터를 위한 이항 탈-인덱싱 절차는 다음의 예시의 일반적인 탈-인덱싱 코드에 의해 기술될 수 있다. 이 탈-인덱싱 코드는 일반적이며, 즉, 그것은 테이블 2의 임의 리더 클래스에 포함된 타겟 벡터들에 적용 가능하다. 이 탈-인덱싱 코드에서 사용된 변수들 및 함수들은 상기에서 본 발명의 첫 번째 모습의 맥락에서 제시된 일반적인 인덱싱 코드에서 사용된 것들에 대응한다. 상기 탈-인덱싱 절차는 리더 클래스를 식별하는 변수 idx_lead 및 (상기 타겟 벡터에서 값들의 위치들을 나타내는) 위치 인덱스를 식별하는 변수 index_loc를 입력으로서 수신하며, 그리고 타겟 벡터 cv를 출력으로서 결정한다. 거기에서, 상기 타겟 벡터의 부호는 고려되지 않으며, 그것은 별도의 절차에서 회복될 수 있을 것이다.
FOR(J=O;j<DIM;j++) {
cv[j] = vals_[idx_lead] [sub (no_vals_[idx_lead], 1)];
movel6(); /* put by default the last value */
occ_pos[j] = 0; movel6();
}
/*-------------------------------------*/
no places old = DIM; movel6();
FOR ( i = 0 ; i<sub(no_vals_[idx_lead], 1 ) ; i + + )
{
no_vals_crt = no_vals_[idx_lead] ;
no_places=sub (no_places_old, no_vals_ind_[idx_lead] [i]
);
tmp = sub (no_vals_[idx_lead], add(2,i));
IF (tmp>0) {
quotient = number_fx (sub(no_vals_crt, add(l,i)),
&no_vals_ind_[idx_lead] [i], no_places) ;
idx = div_int (index_loc, quotient, &index_loc) ;
/* integer division: index loc/quotient = idx,
reminder index_loc */
/* p is a table with the positions of the value vals [i]
out of no places available positions */
idx2c_fx (no_places_old, p,
no vals ind [idx lead] [i], idx);
no_places_old = no_places; movel6();
/* put the i-th value in the codevector */
IF (i==0)
{
FOR(J=O; j<no_vals_ind_[idx_lead] [i] ; j++)
{
pos = p [J]; movel6();
cv[pos] = vals_[idx_lead] [i]; movel6();
occ_pos [pos] = 1; movel6();
}
}ELSE{
FOR (j=0; j<no_vals_ind_[idx_lead] [i] ; j++)
{
pos = offset[p[j]] ; movel6(); movel6( );
cv[pos] = vals_[idx_lead] [i] ; move16( ) ;
occ pos [pos] = 1; movel6();
}
/* update offset */
1=0; move16();
FOR( j=0; j<DIM; j++
{
IF (occ_pos [ j ] ==0)
{
offset [l]=j; move16( );
1 = add (1,1);
}
}
]
ELSE{
idx2c_fx (no_places_old, p,
no_vals_ind_[idx_lead] [i], index_loc) ;
/* put the next to last-th value in the codevector
*/
FOR(J=O; j<no_vals_ind_[idx_lead] [i] ; j++)
{
pos = offset [p [ j ] ] ; movel6(); movel6();
cv[pos] = vals_[idx_lead] [i]; movel6();
}
}
}
거기에서, 상기 함수 idx2c_fx(int dim, int* p, int no_vals, int index_loc) 는 상기에서 설명된 함수 c2idx_fx를 보충하는 것이며 그리고 dim-차원 벡터에서 no_vals 성분들의 위치 결정 p를 반환한다.
또한, 변수 int occ_pos[8] 은 이미 디코드된 값들이 성분들이 놓여진 위치들을 기록한다. 변수 int offset[8] 은 상기 값들의 실제 위치를 찾기 위해서 사용되며, 이는 예를 들면 하나의 값이 8-차원 벡터 상에 이미 위치한다면, 그 다음 값의 위치 인덱스는 7개 위치들에만 관련이 있기 때문이다. 예를 들면, 4-차원 리더 (2 1 1 0)에 대해, 값 2의 위치를 디코딩한 것이 (x 2 x x)이고 그리고 값 1을 위한 위치 인덱스가 0이면, 이는 두 개 값들인 것에 대한 (0,1) 위치들에 대응하지만, 첫 번째 값 2가 이미 위치 1에 있기 때문에 그것은 (0,2) 위치들 상에 실제로 있을 것이다.
도 3은 본 발명의 두 번째 모습의 예시적인 일 실시예에 따라 타겟 벡터와 연관된 인덱스를 기반으로 하여 상기 타겟 벡터를 결정하기 위한 방법을 예시하는 흐름도이다. 이 방법은 예를 들면 탈-양자화 (de-quantization) 프로세스 동안에 수행될 수 있을 것이다.
첫 번째 단계 300에서, 결정되어야 하는 타겟 벡터와 연과된 인덱스가 수신된다. 그 인덱스는 예를 들면 리더 클래스의 벡터들로부터 하나의 벡터를 선택하는 인덱스이며, 이 경우 상기 리더 클래스 내의 상기 벡터들은 예를 들면 이항 인덱스가 붙여질 수 있을 것이다. 그 인덱스에 추가로, 타겟 벡터가 포함된 리더 클래스의 신원이 수신된다. 그러나 이는 옵션인 것이며, 상기 타겟 벡터가 포함된 상기 리더 클래스의 신원은 상기 타겟 벡터와 연관된 인덱스 내에 마찬가지로 포함될 수 있을 것이다. 단계 300에서 수신된 상기 리더 클래스의 신원과 인덱스는 예를 들면 다음의 정보 모두를 포함하는 인덱스로부터 얻어질 수 있을 것이다: 상기 리더 클래스의 신원, 상기 리더 클래스 내의 벡터 중에서 어느 벡터가 타겟 벡터로서 결정될 것인가 그리고 상기 타겟 벡터에 대한 부호 정보.
도 3의 흐름도 (3)에서 결정될 타겟 벡터는 예를 들면 양자화 프로세스 동안에 래티스 내의 모든 벡터들과 가장 가깝게 정합되는 것으로서 선택될 수 있을 것이다.
그러면, 단계 301에서, 상기 리더 클래스가 하나 또는 그 이상의 리더 클래스들의 미리 정의된 그룹에 포함되는가의 여부가 판별된다. 포함된다면, 특정 프로세싱이 단계 302에서 적용된다. 그렇지 않다면, 일반 프로세싱이 단계 303에서 적용된다.
리더 클래스들의 미리 정의된 그룹에 대한 예 그리고 리더 클래스들의 그런 미리 정의된 그룹의 리더 클래스 내에 포함된 타겟 벡터들에서 인덱스를 제거 (de-indexing) 할 때에 적용되는 상기 특정 프로세싱의 예가 더 상세하게 이제 설명될 것이다.
본 발명의 두 번째 모습의 첫 번째 예시적인 실시예에 따르면, 인덱스 20의 리더 벡터 (테이블 2 참조) 즉, {6,4,2,0,0,0,0,0} 와 연관된 리더 클래스만이 특정 프로세싱을 받기 쉽다. 그래서, 리더 클래스들의 상기 미리 정의된 그룹만이 인덱스 20에 의해 식별된 하나의 리더 클래스를 포함한다.
그러면, 특히, 상기에서 제시된 일반적인 탈-인덱싱 코드의 첫 번째 For-루프 (상기에서 수평의 점선)는 다음의 코드에 의해 대체될 수 있을 것이다:
FOR(J=O; j<DIM;j++) {
if (sub(idx_lead,20)==0) {
cv[j] = 0; movel6();
}
if (sub (idx_lead,20) )
{
cv[j] = vals_[idx_lead] [sub (no_vals_[idx_lead], 1)];
move16 ( );
}
occ_pos[j] = 0; movel6();
}
또한, 일반 탈-인덱싱 코드에서 함수 number_fx()를 호출하는 것은 다음의 코드에 의해 대체될 수 있을 것이다:
IF (sub(idx_lead, 20) ==0)
{
quotient = 42; movel6();
if (sub (tmp, 1) ==0 ) {
quotient = 6; movel6();
}
}
ELSE{
quotient =
C[sub(no_places,1)][(no_vals_ind_[idx_lead]
[add (i,l)])]; movel6(;
}
여기에서, 상기에서 이미 설명된 것처럼, 변수 C[DIM+1][DIM+1]는 8차원까지의 이상 계수들을 저장한다.
이 실시예에서, 상기 특정 프로세싱은 idx_lead가 20과 같은 경우에 수행되는 코드로 표현되며, 그리고 상기 일반 프로세싱은 idx_lead가 20과 같지 않으면 수행되는 코드에 의해서 표현된다.
이 실시예의 맥락에서, 본 발명자들은 인덱스 20인 리더 클래스는 4 개의 서로 다른 값들을 가진 단일 리더라는 것을 알게 되었다. 4개의 서로 다른 값들을 가지는 단 하나인, 인덱스 20의 상기 리더 클래스는 테이블 no_vals_ind_ 그리고 테이블 vals_ 모두가 36 x 4 차원 (36개 리더 클래스들 그리고 리더 클래스마다 4개의 서로 다른 값들의 최대 개수)이도록 강제한다, 즉, no_vals_ind_[idx_lead][i] 그리고 vals_[idx_lead] 는 idx_lead=20 그리고 i=3 (i 는 0부터 3)에 대해서만 존재한다. 그러나, 상기에서 제시된 일반적인 탈-인덱싱 (de-indexing)에서, no_vals_ind_ 그리고 vals_의 각 값에 대한 참조는 상기 특정 코드에 의해 대체되었던 일반 탈-인덱싱 코드의 일부분들에서 idx_lead=20 에 대해서만 일어난다. 그러면, 상기 일반 탈-인덱싱 코드의 나머지에서, 36x3 차원의 테이블 no_vals_ind_ 그리고 테이블 val_ 로의 참조만이 필요하다. 그러므로, 상기 특정 프로세싱을 도입하는 것은 상기 일반 프로세싱을 최적하도록 허용한다.
본 발명의 두 번째 모습의 두 번째의 예시적인 일 실시예에 따르면, 리더 클래스들의 상기 미리 정의된 그룹은 인덱스 1의 리더 클래스 벡터 (테이블 2 참조) 즉, (2,2,0,0,0,0,0,0)를 구비한 리더 클래스 만을 포함한다. 일반 탈-인덱싱, 즉, 임의 리더 클래스에 포함된 타겟 벡터들의 경우에 이용 가능한 (그리고 상기에서 일반 탈-인덱싱 코드를 참조하여 제시되었던) 탈-인덱싱을 항상 수행하는 것 대신에, 예를 들면, 인덱스 1의 리더 클래스 벡터를 구비한 리더 클래스에 포함된 타겟 벡터의 경우에 다음의 특정 프로세싱이 수행될 수 있을 것이며, 그렇지 않은 경우에는 일반 프로세싱만이 수행된다. 상기에서 제시된 탈-인덱싱 코드에서와 같이, 다음의 특정 프로세싱은 부호화되지 않은 타겟 벡터 cv를 산출한다는 것에 주목한다.
FOR (i=0; KDIM; i++)
{
cv [ i ] = 0 ; move16 ( ) ;
}
idx2c_fx (DIM, p, 2, index_loc);
FOR(i=0;i<2;i++)
{
cv[p[i]]=2; movel6(); movel6();
}
(테이블 2에서 정의된 리더 벡터들을 기반으로 하는 코드북용의) G.EV.VBR 코덱 그리고 16, 24 그리고 32kbits/s 의 비트레이트의 음성 및 음악 데이터에서, 리더 벡터 (2,2,0,0,0,0,0,0) 는 가장 많이 예상되며, 그래서 특정 프로세싱을 그것의 리더 클래스에 적용하는 것은 상기 탈-인덱싱 절차의 전반적인 복잡성을 줄어들게 한다.
도 4는 본 발명의 첫 번째 모습과 두 번째 모습에 따른 방법들을 수행할 수 있는 기기 (4)의 개략적인 블록도이다. 이 기기는 예를 드면 모바일 전화기, 컴퓨터 또는 어떤 다른 전자 기기일 수 있을 것이다. 상기 기기는 중앙 처리 유닛 (CPU) (400)을 포함하며, 이는 프로그램 메모리 (401) 및 메모리 (402)에 액세스한다. 상기 CPU (400)는 예를 들면 프로그램 메모리 (401)에 저장된 컴퓨터 프로그램을 실행시킨다. 거기에서, 프로그램 메모리 (401)는 기기 (4)에 고정될 수 있을 것이며 또는 탈부착 가능할 수 있을 것이다. 예를 들면, 상기 프로그램 메모리 (401)는 컴퓨터 프로그램을 저장한, 컴퓨터로 읽을 수 있는 매체로서 구현될 수 있을 것이다. 메모리 (402)는 예를 들면, 랜덤 액세스 메모리 (RAM)으로 구현될 수 있을 것이다. 프로그램 메모리 (401) 및 메모리 (402)는 마찬가지로 단일의 부품으로서 구현될 것이다.
CPU (400)는 마이크로폰을 제어하는 마이크로폰 드라이버 (404), 스피커를 제어하는 스피커 드라이버 (403) 및 인터페이스 (405)를 포함하며, 상기 인터페이스를 통해서 다른 기기들과 데이터가 교환될 수 있다. 상기 인터페이스 (405)는 예를 들면, 무선 인터페이스로서 구현될 수 있을 것이다.
그러므로 기기 (4)는 다른 개체와 오디오-기반의 통신을 설립하기 위해 필요한 모든 컴포넌트들을 포함한다. 마이크로폰 드라이버 (404)를 통해서 수신된 오디오 신호들은 상기 CPU (400)에 의해 인코드되어 인터페이스 (405)를 통해 다른 기기로 전송될 수 있다. 마찬가지로, 다른 기기들로부터의 오디오 데이터는 인터페이스 (405)를 통해 수신되오, CPU (400)에 의해 디코드되며 그리고 스피커 드라이버 (403)를 통해서 표현될 수 있다.
여기에서, 인코딩 및 디코딩을 수행하기 위해, 기기 (4)의 CPU (400)는 코덱, 예를 들면, G.EV-VBR 코덱을 동작시킨다. 이 코덱은 예를 들면 프로그램 메모리 (401)에 저장된 컴퓨터 프로그램으로서 구현될 수 있을 것이다. 이런 방식에서, 기기 (4)는 예를 들면 도 1의 구조 블록들 (101, 104, 105 및 106)을 구현할 수 있을 것이다.
CPU (400)는 (도 2의 흐름도에 따라서) 입력 벡터들에 인덱스를 부여하는 것 (indexing)을 수행하며 그리고/또는 (도 3의 흐름도에 따라서) 타겟 벡터와 연관된 인덱스를 기반으로 하여 타겟 벡터를 결정하는 것을 수행하며 그리고 이런 목적으로 본 발명의 첫 번째 모습 및 두 번째 모습에 따라서 특정 프로세싱과 일반 프로세싱을 수행하는 프로세싱 컴포넌트로서 이해될 수 있을 것이다. 마찬가지로, 상기 코덱 또는 그 코덱의 일부는 전용의 하드웨어 (406) (예를 들면, 디지털 신호 프로세서 (DSP), FPGA (Field Programmable Gate Array), ASIC (Application Specific Integrated Circuit) 또는 어떤 다른 전용의 하드웨어)로 구현될 수 있을 것이며, 그러면 상기 전용의 하드웨어 (406)는 입력 벡터들에 인덱스를 부여하는 것 (indexing)을 수행하며 그리고/또는 (도 3의 흐름도에 따라서) 타겟 벡터와 연관된 인덱스를 기반으로 하여 타겟 벡터를 결정하는 것을 수행하며 그리고 이런 목적으로 본 발명의 첫 번째 모습 및 두 번째 모습에 따라서 특정 프로세싱과 일반 프로세싱을 수행하는 프로세싱 컴포넌트로서 이해될 수 있을 것이다.
CPU (400)에 의해 실행된 상기 프로그램 코드는 기능적인 모듈들의 형상인 그런 프로세싱 컴포넌트들을 포함하는 것으로 또한 보여질 수 있다.
본 발명은 예시적인 실시예들에 의해 상기에서 설명되었다. 본 발명이 속한 기술분야의 통상의 지식을 가진 자에게는 자명하며 그리고 첨부된 청구범위의 범위 및 사상으로부터 벗어나지 않으면서 구현될 수 있는 대안의 방식들 및 변형들의 존재한다는 것에 주목해야만 한다.

Claims (47)

  1. 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 입력 벡터에 인덱스 (index)를 부여하는 것을 포함하는 방법으로서, 상기 인덱스를 부여하는 것은:
    - 상기 입력 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 입력 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하고, 그리고
    - 상기 입력 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하는 것을 포함하는, 방법.
  2. 제1항에 있어서,
    벡터들의 상기 세트들은 리더 클래스 (leader class)들이며, 그리고
    각 리더 클래스는 상이한 리더 벡터 및 상기 리더 벡터의 치환 (permutation)들을 포함하는, 방법.
  3. 제2항에 있어서,
    상기 리더 클래스들은 부호화되며, 그리고
    상기 인덱스를 부여하는 것은 상기 입력 벡터 내의 값들의 위치들을 나타내는 위치 인덱스 그리고 상기 입력 벡터의 성분들의 부호들을 나타내는 부호 인덱스를 산출하는, 방법.
  4. 제3항에 있어서,
    상기 특정 프로세싱에서, 상기 위치 인덱스 및 상기 부호 인덱스는 하나의 루프 내에서 공동으로 결정되는, 방법.
  5. 제2항 내지 제4항 중의 어느 한 항에 있어서,
    상기 특정 프로세싱이 적응되는 상기 특성은, 리더 클래스들의 상기 미리 정의된 그룹이, 벡터들의 성분들이 상이한 값들의 미리 정의된 개수만을 취하는 그런 리더 벡터들을 구비한 리더 클래스들만을 포함한다는 것인, 방법.
  6. 제5항에 있어서,
    리더 클래스들의 상기 미리 정의된 그룹은, 벡터들의 성분들이 짝수 값들만을 취하는 그런 리더 벡터들을 구비한 리더 클래스들의 제1 서브그룹 그리고 벡터들의 성분들이 홀수 값들만을 취하는 그런 리더 벡터들을 구비한 리더 클래스들의 제2 서브그룹을 포함하며, 그리고
    상기 특정 프로세싱은 상기 입력 벡터가 리더 클래스들의 상기 제1 서브그룹의 리더 클래스에 포함된 경우에는 상기 입력 벡터가 리더 클래스들의 상기 제2 서브그룹의 리더 클래스에 포함된 경우와는 다른 동작들을 규정하는 (prescribe), 방법.
  7. 제1항 내지 제6항 중의 어느 한 항에 있어서,
    벡터들의 세트들 중의 상기 미리 정의된 그룹 내의 한 세트의 벡터들에 포함된 입력 벡터들은, 벡터들의 세트들 중의 상기 미리 정의된 그룹 내에 있지 않은 한 세트의 벡터들에 포함된 입력 벡터들보다 인덱스가 붙여질 확률이 더 큰, 방법.
  8. 제1항 내지 제7항 중의 어느 한 항에 있어서,
    상기 일반 프로세싱은, 벡터들의 상기 세트들에 포함된 입력 벡터들에 상기 특성을 구비하여 적용되면, 동일한 입력 벡터들에 적용되는 상기 특정 프로세싱보다 더 복잡할 것인, 방법.
  9. 제2항 또는 제3항에 있어서,
    상기 특정 프로세싱이 적응되는 상기 특성은, 리더 클래스들의 상기 미리 정의된 그룹이, 벡터들의 성분들이 상이한 값들 중의 최대 수를 취하는 그런 리더 벡터들을 구비하는 리더 클래스들만을 포함한다는 것인, 방법.
  10. 제1항 내지 제3항 그리고 제9항 중의 어느 한 항에 있어서,
    상기 일반 프로세싱은,
    상기 일반 프로세싱의 최적화를 허용하기 위해,
    벡터들의 상기 복수의 세트들 중의 벡터들의 임의 세트에 포함된 입력 벡터들에서, 벡터들의 세트들의 상기 미리 정의된 그룹 중의 벡터들의 상기 세트들이 제외된 경우에 적용 가능한, 방법.
  11. 제1항 내지 제10항 중의 어느 한 항에 있어서,
    상기 인덱스를 부여하는 것은 이항 (binomial) 인덱스를 부여하는 것인, 방법.
  12. 제2항 내지 제11항 중의 어느 한 항에 있어서,
    상기 입력 벡터에 상기 인덱스를 부여하는 것은 상기 리더 클래스들에 의해 정의된 래티스 코드북 (lattice codebook)을 기반으로 하는 양자화 프로세스에서 수행되는, 방법.
  13. 컴퓨터 프로그램을 저장하는 컴퓨터로 읽을 수 있는 매체로서,
    상기 컴퓨터 프로그램은 프로세서로 하여금 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 입력 벡터에 인덱스를 붙이도록 하는 동작 가능한 명령어들을 포함하며,
    상기 인덱스를 부여하는 것은,
    상기 입력 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 입력 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하고, 그리고
    상기 입력 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하는 것을 포함하는, 컴퓨터로 읽을 수 있는 매체.
  14. 컴퓨터 프로그램으로서,
    프로세서로 하여금 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 입력 벡터에 인덱스를 붙이도록 하는 동작 가능한 명령어들을 포함하며,
    상기 인덱스를 부여하는 것은,
    상기 입력 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 입력 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하고, 그리고
    상기 입력 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하는 것을 포함하는, 컴퓨터 프로그램.
  15. 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 입력 벡터에 인덱스 (index)를 붙이도록 구성된 프로세싱 컴포넌트를 포함하는 장치로서,
    상기 프로세싱 컴포넌트는,
    인덱스가 붙여질 상기 입력 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 입력 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하도록 또한 구성되고, 그리고
    상기 프로세싱 컴포넌트는,
    인덱스가 붙여질 상기 입력 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하도록 또한 구성된, 장치.
  16. 제15항에 있어서,
    벡터들의 상기 세트들은 리더 클래스 (leader class)들이며, 그리고
    각 리더 클래스는 상이한 리더 벡터 및 상기 리더 벡터의 치환 (permutation)들을 포함하는, 장치.
  17. 제16항에 있어서,
    상기 리더 클래스들은 부호화되며, 그리고
    상기 인덱스를 부여하는 것은 상기 입력 벡터 내의 값들의 위치들을 나타내는 위치 인덱스 그리고 상기 입력 벡터의 성분들의 부호들을 나타내는 부호 인덱스를 산출하는, 장치.
  18. 제17항에 있어서,
    상기 특정 프로세싱에서, 상기 위치 인덱스 및 상기 부호 인덱스는 하나의 루프 내에서 공동으로 결정되는, 방법.
  19. 제16항 내지 제18항 중의 어느 한 항에 있어서,
    상기 특정 프로세싱이 적응되는 상기 특성은, 리더 클래스들의 상기 미리 정의된 그룹이, 벡터들의 성분들이 상이한 값들의 미리 정의된 개수만을 취하는 그런 리더 벡터들을 구비한 리더 클래스들만을 포함한다는 것인, 장치.
  20. 제19항에 있어서,
    리더 클래스들의 상기 미리 정의된 그룹은, 벡터들의 성분들이 짝수 값들만을 취하는 그런 리더 벡터들을 구비한 리더 클래스들의 제1 서브그룹 그리고 벡터들의 성분들이 홀수 값들만을 취하는 그런 리더 벡터들을 구비한 리더 클래스들의 제2 서브그룹을 포함하며, 그리고
    상기 특정 프로세싱은 상기 입력 벡터가 리더 클래스들의 상기 제1 서브그룹의 리더 클래스에 포함된 경우에는 상기 입력 벡터가 리더 클래스들의 상기 제2 서브그룹의 리더 클래스에 포함된 경우와는 다른 동작들을 규정하는 (prescribe), 장치.
  21. 제15항 내지 제20항 중의 어느 한 항에 있어서,
    벡터들의 세트들 중의 상기 미리 정의된 그룹 내의 한 세트의 벡터들에 포함된 입력 벡터들은, 벡터들의 세트들 중의 상기 미리 정의된 그룹 내에 있지 않은 한 세트의 벡터들에 포함된 입력 벡터보다 인덱스가 붙여질 확률이 더 큰, 장치.
  22. 제15항 내지 제21항 중의 어느 한 항에 있어서,
    상기 일반 프로세싱은, 벡터들의 상기 세트들에 포함된 입력 벡터들에 상기 특성을 구비하여 적용되면, 동일한 입력 벡터들에 적용된 상기 특수 프로세싱보다 더 복잡할 것인, 장치.
  23. 제16항 또는 제17항에 있어서,
    상기 특정 프로세싱이 적응되는 상기 특성은, 리더 클래스들의 상기 미리 정의된 그룹이, 벡터들의 성분들이 상이한 값들 중의 최대 수를 취하는 그런 리더 벡터들을 구비하는 리더 클래스들만을 포함한다는 것인, 장치.
  24. 제15항 내지 제17항 그리고 제23항 중의 어느 한 항에 있어서,
    상기 일반 프로세싱은,
    상기 일반 프로세싱의 최적화를 허용하기 위해,
    벡터들의 상기 복수의 세트들 중의 벡터들의 임의 세트에 포함된 입력 벡터들에서, 벡터들의 세트들의 상기 미리 정의된 그룹 중의 벡터들의 상기 세트들이 제외된 경우에 적용 가능한, 장치.
  25. 제15항 내지 제24항 중의 어느 한 항에 있어서,
    상기 인덱스를 부여하는 것은 이항 (binomial) 인덱싱를 부여하는 것인, 장치.
  26. 제16항 내지 제25항 중의 어느 한 항에 있어서,
    상기 입력 벡터에 상기 인덱스를 부여하는 것은 상기 리더 클래스들에 의해 정의된 래티스 코드북 (lattice codebook)을 기반으로 하는 양자화 프로세스에서 수행되는, 방법.
  27. 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 타겟 벡터를 상기 타겟 벡터와 연관된 인덱스를 기반으로 하여 결정하는 것을 포함하는 방법으로서,
    상기 결정하는 것은:
    - 상기 타겟 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 타겟 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하고, 그리고
    - 상기 타겟 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하는 것을 포함하는, 방법.
  28. 제27항에 있어서,
    벡터들의 상기 세트들은 리더 클래스 (leader class)들이며, 그리고
    각 리더 클래스는 상이한 리더 벡터 및 상기 리더 벡터의 치환 (permutation)들을 포함하는, 방법.
  29. 제28항에 있어서,
    상기 특정 프로세싱이 적응되는 상기 특성은, 리더 클래스들의 상기 미리 정의된 그룹이, 벡터들의 성분들이 상이한 값들의 미리 정의된 개수만을 취하는 그런 리더 벡터들을 구비한 리더 클래스들만을 포함한다는 것인, 방법.
  30. 제27항 내지 제29항 중의 어느 한 항에 있어서,
    벡터들의 세트들 중의 상기 미리 정의된 그룹 내의 한 세트의 벡터들에 포함된 타겟 벡터들은, 벡터들의 세트들 중의 상기 미리 정의된 그룹 내에 있지 않은 벡터들의 한 세트 내에 포함된 타겟 벡터들보다 결정될 확률이 더 큰, 방법.
  31. 제27항 내지 제30항 중의 어느 한 항에 있어서,
    상기 일반 프로세싱은, 벡터들의 상기 세트들에 포함된 타겟 벡터들에 상기 특성을 구비하는 경우에 적용되면, 동일한 타겟 벡터들의 경우에 적용되는 상기 특정 프로세싱보다 더 복잡할 것인, 방법.
  32. 제28항에 있어서,
    상기 특정 프로세싱이 적응되는 상기 특성은, 리더 클래스들의 상기 미리 정의된 그룹이, 벡터들의 성분들이 상이한 값들 중의 최대 수를 취하는 그런 리더 벡터들을 구비한 리더 클래스들만을 포함한다는 것인, 방법.
  33. 제27항, 제28항 그리고 제32항 중의 어느 한 항에 있어서,
    상기 일반 프로세싱은,
    상기 일반 프로세싱의 최적화를 허용하기 위해,
    벡터들의 상기 복수의 세트들 중의 벡터들의 임의 세트에 포함된 타겟 벡터에서, 벡터들의 세트들 중의 상기 미리 정의된 그룹의 벡터들의 상기 세트들이 제외되는 경우에 적용 가능한, 방법.
  34. 제27항 내지 제33항 중의 어느 한 항에 있어서,
    상기 인덱스는 이항 (binomial) 인덱스를 부여하는 것을 통해서 상기 타겟 벡터와 연관된, 방법
  35. 제28항 내지 제34항 중의 어느 한 항에 있어서,
    상기 타겟 벡터를 상기 결정하는 것은 상기 리더 클래스들에 의해 정의된 래티스 코드북 (lattice codebook)을 기반으로 하는 탈-양자화 (de-quantization) 프로세스에서 수행되는, 방법.
  36. 컴퓨터 프로그램을 저장하는 컴퓨터로 읽을 수 있는 매체로서,
    상기 컴퓨터 프로그램은 프로세서로 하여금 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 타겟 벡터를 상기 타겟 벡터와 연관된 인덱스를 기반으로 하여 결정하도록 동작 가능한 명령어들을 포함하며,
    상기 결정하는 것은:
    상기 타겟 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 타겟 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하고, 그리고
    상기 타겟 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하는 것을 포함하는, 컴퓨터로 읽을 수 있는 매체.
  37. 컴퓨터 프로그램으로서,
    프로세서로 하여금 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 타겟 벡터를 상기 타겟 벡터와 연관된 인덱스를 기반으로 하여 결정하도록 동작 가능한 명령어들을 포함하며,
    상기 결정하는 것은:
    상기 타겟 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 타겟 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하고, 그리고
    상기 타겟 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하는 것을 포함하는, 컴퓨터 프로그램.
  38. 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 타겟 벡터를 상기 타겟 벡터와 연관된 인덱스를 기반으로 하여 결정하도록 구성된 프로세싱 컴포넌트를 포함하는 장치로서,
    상기 프로세싱 컴포넌트는,
    결정될 상기 타겟 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 타겟 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하도록 또한 구성되고, 그리고
    상기 프로세싱 컴포넌트는,
    상기 타겟 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하도록 또한 구성된, 장치.
  39. 제38항에 있어서,
    벡터들의 상기 세트들은 리더 클래스 (leader class)들이며, 그리고
    각 리더 클래스는 상이한 리더 벡터 및 상기 리더 벡터의 치환 (permutation)들을 포함하는, 장치.
  40. 제39항에 있어서,
    상기 특정 프로세싱이 적응되는 상기 특성은, 리더 클래스들의 상기 미리 정의된 그룹이, 벡터들의 성분들이 상이한 값들의 미리 정의된 개수만을 취하는 그런 리더 벡터들을 구비한 리더 클래스들만을 포함한다는 것인, 장치.
  41. 제38항 내지 제40항 중의 어느 한 항에 있어서,
    벡터들의 세트들 중의 상기 미리 정의된 그룹 내의 한 세트의 벡터들에 포함된 타겟 벡터들은, 벡터들의 세트들 중의 상기 미리 정의된 그룹 내에 있지 않은 벡터들의 한 세트 내에 포함된 타겟 벡터들보다 결정될 확률이 더 큰, 장치.
  42. 제38항 내지 제41항 중의 어느 한 항에 있어서,
    상기 일반 프로세싱은, 벡터들의 상기 세트들에 포함된 타겟 벡터들에 상기 특성을 구비하는 경우에 적용되면, 동일한 타겟 벡터들의 경우에 적용되는 상기 특정 프로세싱보다 더 복잡할 것인, 장치.
  43. 제38항에 있어서,
    상기 특정 프로세싱이 적응되는 상기 특성은, 리더 클래스들의 상기 미리 정의된 그룹이, 벡터들의 성분들이 상이한 값들 중의 최대 수를 취하는 그런 리더 벡터들을 구비한 리더 클래스들만을 포함한다는 것인, 장치.
  44. 제38항, 제39항 그리고 제43항 중의 어느 한 항에 있어서,
    상기 일반 프로세싱은,
    상기 일반 프로세싱의 최적화를 허용하기 위해, 벡터들의 상기 복수의 세트들 중의 벡터들의 임의 세트에 포함된 타겟 벡터에서 벡터들의 세트들 중의 상기 미리 정의된 그룹의 벡터들의 상기 세트들이 제외되는 경우에 적용 가능한, 장치.
  45. 제38항 내지 제44항 중의 어느 한 항에 있어서,
    상기 인덱스는 이항 (binomial) 인덱스를 부여하는 것을 통해서 상기 타겟 벡터와 연관된, 장치.
  46. 제38항 내지 제45항 중의 어느 한 항에 있어서,
    상기 타겟 벡터를 상기 결정하는 것은 상기 리더 클래스들에 의해 정의된 래티스 코드북 (lattice codebook)을 기반으로 하는 탈-양자화 (de-quantization) 프로세스에서 수행되는, 장치.
  47. 제1 프로세싱 컴포넌트; 및
    제2 프로세싱 컴포넌트를 포함하는 시스템으로서,
    상기 제1 프로세싱 컴포넌트는, 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 입력 벡터에 인덱스 (index)를 붙이도록 구성된 제1 프로세싱 컴포넌트로서,
    상기 제1 프로세싱 컴포넌트는,
    인덱스가 붙여질 상기 입력 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 입력 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하도록 또한 구성되고, 그리고
    상기 제1 프로세싱 컴포넌트는,
    인덱스가 붙여질 상기 입력 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하도록 또한 구성되며,
    상기 제2 프로세싱 컴포넌트는 벡터들의 복수의 세트들 중의 한 세트의 벡터들에 포함된 타겟 벡터를 상기 타겟 벡터와 연관된 인덱스를 기반으로 하여 결정하도록 구성된 제2 프로세싱 컴포넌트로서,
    상기 제2 프로세싱 컴포넌트는,
    결정될 상기 타겟 벡터가 벡터들의 상기 복수의 세트들 중 벡터들의 하나 이상의 세트들의 미리 정의된 그룹의 한 세트의 벡터들에 포함되는 경우, 벡터들의 세트들의 상기 미리 정의된 그룹의 벡터들의 상기 세트들의 특성에 적응되고 그리고 상기 특성을 구비한 벡터들의 세트들 내에 포함된 타겟 벡터들의 경우에만 적용 가능한, 특정 프로세싱을 수행하도록 또한 구성되고, 그리고
    상기 제2 프로세싱 컴포넌트는,
    상기 타겟 벡터가 벡터들의 세트들의 상기 미리 정의된 그룹 중의 한 세트의 벡터들에 포함되지 않은 경우, 일반 프로세싱을 수행하도록 또한 구성된, 시스템.
KR1020107020582A 2008-02-15 2008-02-15 복잡성이 축소된 벡터 인덱싱 및 탈-인덱싱 KR101170137B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2008/051901 WO2009100768A1 (en) 2008-02-15 2008-02-15 Reduced-complexity vector indexing and de-indexing

Publications (2)

Publication Number Publication Date
KR20100113172A true KR20100113172A (ko) 2010-10-20
KR101170137B1 KR101170137B1 (ko) 2012-07-31

Family

ID=39495330

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107020582A KR101170137B1 (ko) 2008-02-15 2008-02-15 복잡성이 축소된 벡터 인덱싱 및 탈-인덱싱

Country Status (10)

Country Link
US (1) US8762141B2 (ko)
EP (2) EP3367381B1 (ko)
KR (1) KR101170137B1 (ko)
CN (1) CN101981618B (ko)
AR (1) AR070125A1 (ko)
ES (1) ES2821432T3 (ko)
PL (1) PL3367381T3 (ko)
TW (1) TWI480859B (ko)
WO (1) WO2009100768A1 (ko)
ZA (1) ZA201006498B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130115897A (ko) * 2012-04-13 2013-10-22 삼성디스플레이 주식회사 액정표시장치 및 그 제조방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2011241424B2 (en) * 2010-04-14 2016-05-05 Voiceage Evs Llc Flexible and scalable combined innovation codebook for use in CELP coder and decoder
JP5711733B2 (ja) * 2010-06-11 2015-05-07 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 復号装置、符号化装置及びこれらの方法
HUE039862T2 (hu) 2010-07-02 2019-02-28 Dolby Int Ab Audio dekódolás szelektív utószûréssel
KR101461840B1 (ko) 2010-11-26 2014-11-13 노키아 코포레이션 낮은 복잡도의 타깃 벡터 식별
WO2012069886A1 (en) * 2010-11-26 2012-05-31 Nokia Corporation Coding of strings
WO2012101483A1 (en) 2011-01-28 2012-08-02 Nokia Corporation Coding through combination of code vectors
WO2013147667A1 (en) * 2012-03-29 2013-10-03 Telefonaktiebolaget Lm Ericsson (Publ) Vector quantizer
CN109979470B (zh) * 2014-07-28 2023-06-20 瑞典爱立信有限公司 椎体矢量量化器形状搜索
WO2017005296A1 (en) 2015-07-06 2017-01-12 Nokia Technologies Oy Bit error detector for an audio signal decoder

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4493045A (en) 1981-10-19 1985-01-08 Fairchild Camera & Instrument Corp. Test vector indexing method and apparatus
US5105353A (en) * 1987-10-30 1992-04-14 International Business Machines Corporation Compressed LR parsing table and method of compressing LR parsing tables
US6084595A (en) * 1998-02-24 2000-07-04 Virage, Inc. Indexing method for image search engine
CA2388358A1 (en) * 2002-05-31 2003-11-30 Voiceage Corporation A method and device for multi-rate lattice vector quantization
US20070094035A1 (en) 2005-10-21 2007-04-26 Nokia Corporation Audio coding
US20070168197A1 (en) * 2006-01-18 2007-07-19 Nokia Corporation Audio coding

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130115897A (ko) * 2012-04-13 2013-10-22 삼성디스플레이 주식회사 액정표시장치 및 그 제조방법

Also Published As

Publication number Publication date
WO2009100768A1 (en) 2009-08-20
US20110010169A1 (en) 2011-01-13
EP2260486B1 (en) 2018-04-18
TW200947420A (en) 2009-11-16
KR101170137B1 (ko) 2012-07-31
ZA201006498B (en) 2012-02-29
ES2821432T3 (es) 2021-04-26
CN101981618A (zh) 2011-02-23
CN101981618B (zh) 2014-06-18
PL3367381T3 (pl) 2020-12-14
AR070125A1 (es) 2010-03-17
EP3367381B1 (en) 2020-09-02
EP3367381A1 (en) 2018-08-29
US8762141B2 (en) 2014-06-24
TWI480859B (zh) 2015-04-11
EP2260486A1 (en) 2010-12-15

Similar Documents

Publication Publication Date Title
KR101170137B1 (ko) 복잡성이 축소된 벡터 인덱싱 및 탈-인덱싱
TWI405187B (zh) 可縮放語音及音訊編碼解碼器、包括可縮放語音及音訊編碼解碼器之處理器、及用於可縮放語音及音訊編碼解碼器之方法及機器可讀媒體
RU2326450C2 (ru) Способ и устройство для векторного квантования с надежным предсказанием параметров линейного предсказания в кодировании речи с переменной битовой скоростью
KR101175651B1 (ko) 다중 압축 부호화 방법 및 장치
PT2282310E (pt) Codificação entrópica por adaptação de modos de codificação entre codificação por nível e codificação por comprimento/nível de sequência
JP5337235B2 (ja) 符号化方法、復号方法、符号化装置、復号装置、プログラム及び記録媒体
US7738559B2 (en) Vector decoding method and apparatus and computer program
JPWO2007114290A1 (ja) ベクトル量子化装置、ベクトル逆量子化装置、ベクトル量子化方法及びベクトル逆量子化方法
JP2020204771A (ja) 最下位ビットの符号化および復号に適合するオーディオ符号化器、オーディオ復号器、方法、およびコンピュータプログラム
KR20120096541A (ko) 디지털 신호의 압축 또는 압축해제를 위한 방법, 시스템 및 장치
JP5923517B2 (ja) 階層型符号器における改良ステージの改良符号化
EP2668651A1 (en) Coding through combination of code vectors
RU2461079C2 (ru) Упрощенная индексация и деиндексация векторов
US20130246076A1 (en) Coding of strings
JP2004120623A (ja) 符号化装置、符号化方法、復号装置及び復号方法
JP5734519B2 (ja) 符号化方法、符号化装置、復号方法、復号装置、プログラム及び記録媒体
JP5544371B2 (ja) 符号化装置、復号装置およびこれらの方法
WO2009072685A1 (en) A method and an apparatus for processing an audio signal
WO2011129774A1 (en) Probability table generator, encoder and decoder

Legal Events

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

Payment date: 20160630

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 7