KR20060051157A - 정수 데이터의 무손실 적응 인코딩 및 디코딩을 위한시스템 및 방법 - Google Patents

정수 데이터의 무손실 적응 인코딩 및 디코딩을 위한시스템 및 방법 Download PDF

Info

Publication number
KR20060051157A
KR20060051157A KR1020050084137A KR20050084137A KR20060051157A KR 20060051157 A KR20060051157 A KR 20060051157A KR 1020050084137 A KR1020050084137 A KR 1020050084137A KR 20050084137 A KR20050084137 A KR 20050084137A KR 20060051157 A KR20060051157 A KR 20060051157A
Authority
KR
South Korea
Prior art keywords
parameter
mode
adaptive
encoder
run
Prior art date
Application number
KR1020050084137A
Other languages
English (en)
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
Priority claimed from US10/978,157 external-priority patent/US6987468B1/en
Priority claimed from US10/976,623 external-priority patent/US7015837B1/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060051157A publication Critical patent/KR20060051157A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • 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
    • 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/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/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

새로운 백워드-적응 기술을 사용하는 정수 데이터의 무손실 압축에 대한 방법 및 시스템이 제공된다. 적응 RLGR(Run-Length Golomb/Rice) 인코더 및 디코더(코덱) 및 방법은 G/R 인코더 모드만을 사용하는 것과 런-길이 인코더와 결합된 G/R 인코더를 사용하는 것 사이에 스위칭한다. 백워드-적응 기술은 각 인코딩된 심볼 이후에 인코더 파라미터를 조정하는 새로운 적응 규칙을 포함한다. 인코더 모드 파라미터 및 G/R 파라미터가 적응된다. 인코딩 모드 파라미터는 적응 RLGR 인코더 및 방법이 런-길이 인코딩을 사용하는지를 제어하고, 만약 그렇다면, 그것이 사용된다. 모든 입력 값을 인코딩하기 위하여(G/R 단독 모드에서) 또는 0의 불완전 런 이후의 수 또는 값을 인코딩하기 위하여(RLGR 모드에서) 두 모드 모두에서 G/R 파라미터가 사용된다. 적응 RLGR 코덱 및 방법은 또한 인코더 규칙의 역에 기초하여 정확하게 구현될 수 있는 디코더를 포함한다.
인코딩, 디코딩, 백워드-적응 기술, 손실 압축, 무손실 압축

Description

정수 데이터의 무손실 적응 인코딩 및 디코딩을 위한 시스템 및 방법{LOSSLESS ADAPTIVE ENCODING AND DECODING OF INTEGER DATA}
도 1은 본 발명에 개시된 적응 RLGR(Run-Length Golomb/Rice) 인코더 및 방법에 잘 적용되는 전형적인 정수값 확률 분포를 도시하는 도면.
도 2a는 본 발명에 개시된 RLGR 코덱 및 방법의 인코더 부분의 예시적인 구현을 도시하는 블럭도.
도 2b는 본 발명에 개시된 RLGR 코덱 및 방법의 디코더 부분의 예시적인 구현을 도시하는 블럭도.
도 3은 도 2에 도시된 적응 RLGR 코덱 및 방법이 구현될 수 있는 적합한 컴퓨팅 시스템 환경의 예를 도시하는 도면.
도 4는 도 2에 도시된 적응 RLGR 인코더의 컴포넌트들을 도시하는 일반적인 블럭도.
도 5는 도 2 및 4에 도시된 적응 RLGR 인코더 및 방법의 일반적인 동작을 도시하는 일반적인 흐름도.
도 6은 도 5에 도시된 적응 RLGR 인코더 및 방법의 세부사항을 더 도시하는 흐름도.
도 7은 도 4에 도시된 적응 RLGR 인코더 및 방법의 인코더 모드 선택기의 동 작의 상세한 흐름도.
도 8은 도 4에 도시된 적응 RLGR 인코더 및 방법의 인코딩 모드 파라미터 적응 모듈의 동작의 상세한 흐름도.
도 9는 도 4에 도시된 적응 RLGR 인코더 및 방법의 G/R 파라미터 적응 모듈의 동작의 상세한 흐름도.
도 10은 도 9에 도시된 G/R 파라미터 적응 모듈에 의해 사용된 적응 값의 계산의 상세한 흐름도.
도 11은 적응 RLGR 인코더 및 방법에 대한 인코더 모드를 선택하는 세부사항을 도시하는 동작 예.
도 12는 G/R 단독 모드 및 동반하는 인코딩 모드 파라미터 s 적응의 인코딩 세부사항을 도시하는 동작 예.
도 13은 RLGR 모드 및 동반하는 인코딩 모드 파라미터 s 적응의 인코딩 세부사항을 도시하는 동작 예.
도 14는 적응 G/R 단독 모드 및 G/R 파라미터 k 적응 규칙의 인코딩 세부사항을 도시하는 동작 예.
<도면의 주요부분에 대한 부호의 설명>
200: 적응 RLGR 인코더
400: 입력 값
405: 인코더 모드 선택기
410: G/R 인코더
415: 런-길이 인코더
420: 코드워드
430: 인코딩 모드 파라미터 적응 모듈
435: 갱신된 인코딩 모드 파라미터
440: G/R 파라미터 적응 모듈
445: 갱신된 G/R 파라미터
450: 다음 입력 값
본 발명은 일반적으로 디지털 데이터의 프로세싱에 관한 것이며, 보다 상세하게는 새로운 백워드-적응 기술(backward-adaptive technique)을 사용하는 정수 데이터의 무손실 인코딩 및 디코딩의 개선된 방법 및 시스템에 관한 것이다.
컴퓨터 데이터(텍스트, 오디오, 비디오, 이미지 및 프로그램 파일 등)의 크기가 계속하여 증가함에 따라 데이터 압축이 점점 중요해지고 있다. 데이터 압축은 원본 데이터보다 소수의 비트들을 사용하는 인코딩된 표현으로 디지털 데이터를 인코딩하는 방식이다. 소수의 비트들로 데이터를 표현하는 것은 데이터가 더 적은 저장 공간을 차지하고 더 적은 전송 대역을 필요로 한다는 것을 의미한다.
일반적으로, 데이터 압축은 가장 빈번히 발생하는 데이터를 예측하고 그것을 더 적은 공간에 저장함으로써 데이터를 압축한다. 특히, 데이터 압축은 적어도 두 개의 상이한 태스크 - (1) 입력 데이터의 확률을 예측하기 위하여 데이터 모델을 정의하는 것 및 (2) 그들의 확률로부터 코드를 생성하기 위하여 코더(coder)를 사용하는 것 - 를 수반한다. 또한, 소정의 데이터 압축 기술들은 훨씬 더 많이 압축하기 위하여 데이터를 수학적으로 변환 및 양자화한다.
압축 기술은 무손실(lossless) 또는 손실(lossy)일 수 있다. 무손실 압축 기술은 가역성이 있어서 인코딩 전의 원본 데이터와 디코딩 후의 복원된 데이터가 비트별로 동일하다. 손실 압축은, 품질은 크게 손상시키지 않고서 버릴 수 있는 많은 반복이 데이터에 존재한다는 사실을 이용한다. 손실 압축은 더 높은 압축을 달성하기 위하여 원본 데이터 중 얼마간의 손실을 용인한다.
무손실 압축은 전형적으로 텍스트 또는 이진 데이터를 압축하기 위해 사용되는 반면, 손실 압축은 전형적으로 오디오, 이미지 및 비디오 데이터에 대해 사용된다. 그러나, 손실 압축 기술도 때때로 무손실 압축 기술을 사용할 수 있다. 예를 들어, 두 가지 일반적으로 사용되는 종류의 압축(또는 코딩) 기술은 변환 코딩(transform coding) 및 예측 코딩(predictive coding)이다. 그러한 종류의 압축 시스템에 대하여, 원본 데이터가 변환되고 그 후 양자화되거나(가장 가까운 정수로 반올림), 또는 (고정 또는 적응) 신호 모델에 기초하여 예측되고, 그 후 예측 에러(본래 데이터와 예측된 데이터 사이의 차이)가 양자화된다. 두 경우 모두에, 양자화 후의 데이터는 정수 형태를 갖는다. 이러한 정수들이 획득되면, 데이터를 표현하기 위해 필요한 비트들의 수를 감소시키기 위하여, 양자화된 값을 인코딩하기 위해 무손실 압축 기술이 사용된다.
이러한 정수 값들의 집합은 보통 관련 확률 분포 함수(PDF)를 갖는다. 이들 PDF는 예측 코딩에서 데이터 속성들이 예측기에 의해 잘 모델링되면, 예측 에러가 대부분 0에 근사하여야 하는 분포를 갖는다. 유사하게, 변환 코딩에서, 양자화된 변환 계수들 중 대부분이 0이다. 도 1은 이러한 정수 값들에 대한 전형적인 확률 분포를 도시하는데, 0이 대부분의 값이고, 0이 아닌 값의 확률은 절대값이 증가함에 따라 거의 기하급수적으로 급격하게 감소한다. 무손실 압축 기술을 사용하여 인코딩되는 데이터는 원본 데이터가 아니기 때문에, 데이터는 도 1에 도시된 확률 분포를 갖는다. 도 1은 변환 계수 또는 예측 에러의 양자화로부터 기인하는 정수 데이터이다.
수학적으로, 문제는 N개의 정수를 포함하는 벡터 x를 인코딩하는 것에 대한 효율적인 해답을 찾는 것이다. 각각의 엘리먼트 x(n), n=0,1,...,N-1는 도 1에 있는 것과 유사한 확률 분포에 따라 값을 가지고, 따라서 대부분의 가능한 값이 0이며, 0으로부터 멀리 떨어진 값들은 급격하게 감소하는 확률을 갖는다.
도 1의 것과 같은 확률 분포에 대한 단순한 수학적 모델은 파라미터 θ로 특징지워지는 라플라시안(Laplacian) 분포 또는 양측 기하학(two-sided geometric, TSG) 분포이다.
Figure 112005050551487-PAT00001
(1)
파라미터 θ가 |x|의 증가에 따른 확률의 감소율을 제어한다는 점을 주목해야 한다. θ의 값이 클수록, 감소가 급격하다. 파라미터 θ는 x=0인 확률, 즉,
Figure 112005050551487-PAT00002
에 직접 관련될 수 있다. 또한, 소스 심볼의 기대된 절대값(expected magnitude)은 다음과 같다.
Figure 112005050551487-PAT00003
(2)
소스의 엔트로피는 비트/심볼로 다음과 같이 주어진다.
Figure 112005050551487-PAT00004
(3)
따라서, 좋은 인코더는 N개의 x 값의 벡터를 이론상의 최소값인 NㆍH(x)비트보다 훨씬 많지는 않은 비트들을 포함하는 비트스트림으로 매핑해야 한다.
예측 코더에서 예측 에러에 대해서든(대부분의 무손실 오디오 및 이미지 코더 같은) 양자화된 변환 계수에 대해서든(대부분의 손실 오디오, 이미지 및 비디오 코더 같은), 라플라시안 분포는 미디어 압축 시스템에서 일반적인 모델이다.
라플라시안/TSG 분포를 갖는 소스에 대해 여러가지 인코더들이 제안되어 있다. 간단하지만 효율적인 인코더는 G/R(Golomb-Rice) 인코더이다. 먼저, TSG 소스 값들 x가 간단한 가역 매핑(invertible mapping)에 의해 음수가 아닌 값들 u에 매핑되며, 이것은 u를 재순서화된 알파벳에 대한 인덱스 {0, -1, +1, -2, +2, ...}로 보는 것과 동등하다.
Figure 112005050551487-PAT00005
(4)
Golomb 코드들은 기하학적 소스들에 대한 허프만 코드(Huffman code)들이기 때문에 Golomb 파라미터가 적합하게 선택되는 한, 새로운 소스 u는 Golomb 코드가 최적이 도록 하는 기하학적 소스의 확률 분포와 유사한 확률 분포를 갖는다.
G/R 코드의 예가 파라미터 m의 몇몇 값들에 대해 표 1에 나타내어진다. m이 2의 멱수와 동일한 경우, m=2k에 의해 m에 관련되는 파라미터 k가 사용된다는 점을 유의해야 한다. 허프만 코드에 대한 G/R 코드의 주요 이점은 임의의 입력 값에 대해 이진 코드워드가 간단한 규칙에 의해 계산될 수 있다는 점이다. 따라서, 어떠한 테이블도 저장될 필요가 없다. 이것은 특히 테이블 엔트리를 저장하는 메모리 위치로부터의 판독이 몇몇 명령어를 실행하는 것보다 시간이 더 걸릴 수 있는 현대의 프로세서에 대해 유용하다. 얼마나 많은 연속적인 코드워드가 동일한 수의 비트를 갖는지를 파라미터 m이 결정한다는 것을 아는 것은 쉽다. 그것은 또한 코드워드를 계산하는 것이 u/m(여기서 u는 입력 값)의 계산을 수반한다는 것을 나타낸다. 대부분의 프로세서에 대해, 정수 나눗셈은 여러 사이클이 걸리고, 따라서 일반적인 m에 대해 G/R 코드는 흥미롭지 않다. Rice 코드에 대응하는 m=2k가 선택되면, u/m=u>>k(여기서 >>는 우향 쉬프트 연산자를 나타냄)이기 때문에 나눗셈 u/m은 쉬프트에 의해 대체될 수 있다. 따라서, 임의의 입력 u에 대해 G/R 코드를 계산하는 것은 단순히 p=u>>k 및 v=u-(p<<k)를 계산하는 것으로 쉽다. 그 후 1인 p를 갖는 스트링을 v의 k-비트 이진 표현과 연결시킴으로써 코드가 형성된다.
Figure 112005050551487-PAT00006
G/R 파라미터 k의 선택이 소스의 통계에 의존해야 한다는 것은 표 1로부터 명백하다. u가 증가함에 따라 확률의 감소가 느릴수록, 더 큰 k가 선택되어야 한다. 그렇지 않으면, 코드워드 길이가 매우 신속하게 증가한다. k를 선택하는 간단한 규칙은 주어진 입력 값 u에 대해 코드워드 길이가 그 값의 발생의 확률의 기저 2의 로그에 근사해야 한다는 것이다.
G/R 코드가 기하학적으로 분포된 소스에 대해 최적이지만, 라플라시안/TSG 소스로부터의 심볼들을 수학식 4의 매핑을 통해 인코딩하는 데에 최적은 아니다. 이것은 TSG 분포를 갖는 입력 변수 x에 대해, 수학식 4로부터의 변수 u가 기하학적에 근접하기는 하지만 정확히 기하학적은 아닌 확률 분포를 갖기 때문이다. 실제로, 성능은 최적에 충분히 근접하고(예를 들어, 전형적으로 엔트로피보다 5%미만으로 높은 비율을 가짐), 따라서 G/R 코드는 상당히 인기가 있다. TSG 소스에 대한 최적 코드는 4개의 코드 변형(code variant)의 집합을 수반하고, 대부분의 경우에 5% 이하로 압축을 구현 및 개선하기가 더욱 복잡하다. 그러므로, 대부분의 경우에 G/R 코더는 성능과 단순성 사이에 최선의 손익상쇄(tradeoff)를 제공한다.
도 1에서, 확률 분포는 지수의 감소율인 단일 파라미터에 의해 표현된다. 감소율이 빠를수록, 0의 값이 나타날 가능성이 더 크다. 이것은 여러 경우에 0이 나타날 가능성이 높아서 0의 런(run)이 나타날 가능성이 매우 높아진다는 것을 의미한다. 즉, 만약 확률 분포의 감소율이 충분히 빠르면, 런을 인코딩하는 것은 좋은 아이디어이다. 0의 런을 인코딩한다는 것은 입력 데이터에서 여러 엔트리들을 처리하기 위하여 단지 소수의 비트들만이 사용된다는 것을 의미한다.
데이터의 런을 인코딩하는 것은 런-길이 인코딩을 사용하여 효율적으로 수행된다. 런 길이 인코딩은 연속적으로 반복된 동일한 값의 시퀀스(또는 "런")들이 원본 런으로서보다, 단일 데이터 값 및 런의 길이로서 저장되는 단순한 형태의 데이터 압축이다.
예를 들어, 데이터가 예측 코딩에서 예측기에 의해 사용된 모델에 매칭하는 경우, 예측 에러가 0일 가능성이 훨씬 높다. 그러나, 좋은 모델을 이용하여서도 때때로 큰 값을 갖는 것이 가능하다. 이것은 픽셀 값이 백그라운드 값으로부터 포어그라운드 값(foreground value)으로 가는 것과 같이, 경계가 도달될 때 발생할 수 있다. 때때로 큰 수가 발생할 수 있다. 이러한 것이 발생하는 경우, 런-길이 인코딩보다 훨씬 유용한 인코딩 기술의 한 유형이 "RLGR(Run-Length Golomb/Rice)" 인코딩 기술로 알려진다. 하나의 그러한 RLFT 인코딩 기술이 제목 "디지털 데이터의 진보적인 변환 코딩을 위한 시스템 및 방법(System and Method for Progressively Transform Coding Digital Data)"인 Malvar의 미국 특허 번호 6,771,828 및 제목 "유한 알파벳 데이터의 무손실 적응 인코딩(Lossless Adaptive Encoding of Finite Alphabet Data)"인 Malvar의 미국 특허 번호 6,477,280에 개시된다.
실제로는, 데이터의 소스가 변화할 때, 확률은 일정하게 유지되지 않고, 시간에 따라 변할 것이다. 이것은 예를 들어 이미지 및 오디오에 대해 사실이다. 전형적으로, 입력 데이터에서 이러한 확률 변동은 여러 상이한 방식들로 다루어진다. JPEG에서, 예를 들어, 인코딩될 상이한 값들에 대해 상이한 길이의 코드워드들이 사용되는 엔트로피 코더(허프만 코더)가 존재한다. 허프만 테이블은 보통 미리 설계되는데, 즉, 전형적으로 많은 이미지들이 획득되고, 그들의 확률이 측정되며, 모든 이미지들에 대해 사용되는 평균 모델이 구성된다. 이 접근법의 한 가지 문제점은 엔트로피 코더에 의해 사용되는 확률 모델이 평균적으로는 좋지만 이미지의 일부에 대해서 반드시 좋지는 않기 때문에, 이미지의 모든 부분에 대해서는 인코딩 효율면에서 손실이 존재한다는 점이다.
표 1로부터, G/R 코드의 두 가지 주요 이슈가 존재한다는 점을 알 수 있는데, (1) 확률 감소 파라미터 θ, 또는 동등한 확률 P(x=0)이 반드시 알려져 있고, 따라서 k의 적절한 값이 결정될 수 있다는 것, 및 (2) 만약 감소 파라미터가 매우 작으면, 엔트로피 H(x)는 1보다 작고, 따라서 평균 코드워드 길이가 1비트/심볼보다 작을 수 없기 때문에 G/R 코드는 최적이 아니라는 것이 그것이다.
실제에 있어서, 첫번째 이슈(최적의 G/R 파라미터의 추정)는 보통 입력 벡터를 미리 결정된 길이의 블럭들로 나눔으로써 해결된다. 각 블럭에 대해, 인코더는 데이터에 대해 두 개의 패스를 행한다. 첫번째 패스에서, 입력 값들의 평균 절대값이 계산된다. 그것을 위해, 파라미터 θ가 수학식 2로부터 추정될 수 있고, 대응하는 최적의 k가 결정될 수 있다. 두번째 패스에서, 먼저 이진 형태로 k의 값들을 출력하고, 다음으로 블럭 내의 데이터 값들에 대한 G/R 코드의 연결된 스트링을 출력함으로써, 인코더가 블럭에 대한 비트스트림을 생성한다. 이것은 무손실 이미지 압축에 대한 JPEG-LS, 무손실 오디오 압축에 대한 SHORTEN 등과 같이 G/R 코드를 사용하는 모든 무손실 압축 시스템에서 본질적으로 사용된 접근법이다. 이것은 "블럭규모 적응(blockwise adaptation)" 또는 "포워드 적응(forward adaptation)"이라 불린다. 포워드 적응 모델은 인코더가 인코딩 전에 데이터를 먼저 보고, 통계 파라미터(보통 평균 절대값)를 측정하고, 그 후 그 파라미터에 기초하여 인코딩하고, 데이터를 인코딩하기 위해 사용된 파라미터의 값을 디코더에 의한 사용을 위해 헤더에 위치시킨다는 의미에서 포워드이다. 한번에 모든 데이터를 코딩하려는 노력 대신에, 데이터는 작은 부분, 또는 블럭으로 분해된다. 각 블럭에 대해, 그 블럭의 통계가 측정되고, 버퍼에 있는 것에 매칭하는 데이터의 부분에 대한 통계 파라미터가 측정되며, 엔트로피 코더가 그 파라미터에 맞추어 조정된다. 인코딩된 파일에서, 데이터의 그 블럭을 인코딩하기 위해 사용되는 파라미터의 값을 나타내는 헤더가 삽입된다.
실행 시 두번째 이슈, 즉, 매우 낮은 엔트로피를 갖는 소스를 인코딩하는 것은 보통 블럭규모 적응 또는 포워드 적응 모델을 사용하여 해결되고, 만약 추정된 엔트로피 H(x)가 1보다 작을만큼 블럭에 있는 입력 심볼들의 평균 절대값이 충분히 작으면, 인코더는 G/R 코딩 대신 런-길이 코딩을 사용한다.
이러한 접근법들은 실제로 잘 동작하지만, 두 가지 주요 단점을 가진다. 하나의 단점은 인코더가 각 입력 블럭을 두번씩 읽을 것을 필요로 하고, 따라서 데이터에 대해 두 개의 패스 - 첫번째는 평균 절대값을 계산하여 G/R 파라미터를 결정하기 위해, 및 두번째는 실제 인코딩을 수행하기 위해 - 가 수행된다는 점이다. 이것은 인코더가 부가적인 작업을 수행하고 복잡도를 추가할 것을 필요로 한다. 예를 들어, 일부 어플리케이션에서는 인코딩 시간이 이슈가 아니지만, 디지털 카메라에 있어서, 그것은 인코딩 프로세스의 속도를 감소시키거나 랜덤-액세스 메모리의 비용을 증가시킬 수 있다. 특히, 포워드 적응 모델은 먼저 데이터를 보고 통계를 측정하며, 모델 파라미터를 찾고, 그 후 인코딩해야 한다. 이것은 인코더가 다량의 프로세싱 전력을 갖는 개인용 컴퓨터에서 동작하는 경우에는 이슈가 아니다. 그러나, 핸드폰으로 찍은 사진인 경우, 그것은 프로세싱 능력이 훨씬 더 제한되는 핸드폰 자체에 의해 인코딩되고 있다.
두번째이면서 가장 중요한 단점은 블럭 크기를 선택하는 데에 있어서 어려움을 수반한다. 만약 블럭 크기가 너무 크면, 통계는 블럭 내에서 극단적으로 변화할 수 있다. 반면, 만약 블럭 크기가 너무 작으면, 데이터의 그 블럭을 인코딩하 기 위해 어떤 파라미터가 사용되었는지를 디코더에게 알려야 하는 오버헤드가 부담이 된다. 모든 블럭에 대해, 인코더는 그 블럭을 인코딩하기 위하여 어떤 파라미터 값이 사용되고 있는지를 저장해야 한다. 어떤 면에서는, 작은 블럭을 인코딩하기 위해 요구된 오버헤드가, 달성된 압축만큼의 가치를 갖지 않는다. 이것은 손익상쇄를 생성한다. 한편으로는, 만약 작은 블럭이 사용되는 경우, 블럭의 통계가 매칭될 수 있지만, 거의 수가 존재하지 않기 때문에 통계를 측정하는 것이 어렵고, 인코딩의 오버헤드가 크다. 다른 한편으로는, 만약 큰 블럭이 사용되는 경우, 문제는 통계가 블럭 내에서 매우 변할 수 있다는 것이다. 실제에 있어서, 그러한 두 개의 충돌하는 요소들 사이의 타협점을 찾는 것은 어렵고, 따라서 블럭 크기는 인코딩될 데이터의 유형에 따라 대개 128과 2048 샘플 사이로 선택된다.
하나의 해결책은 인코더에서 백워드-적응 기술을 사용하는 것이다. 백워드 적응을 이용하면, 인코딩은 인코더와 디코더가 각 블럭의 초기 상태에 동의하는 것으로부터 시작한다. 즉, 각 파라미터는 미리 결정된 값으로 초기화되고, 그 후 인코딩이 시작된다. 디코더가 인코딩하기 위해 사용된 파라미터 값을 알기 때문에, 인코더가 출력 심볼을 생성할 때마다 그 심볼이 디코더에게 즉시 전송될 수 있다. 인코더가 심볼을 출력한 후에, 인코더는 미리 결정된 적응 규칙에 따라 출력된 심볼에 의존하여 인코딩 파라미터에 대한 새로운 값을 계산한다. 디코더가 파라미터 적응 규칙을 알고, 그러므로 그것은 또한 인코딩 파라미터에 대한 새로운 값을 계산할 수 있다. 따라서, 인코딩 파라미터가 모든 인코딩된 심볼 후에 조정되고, 인코더와 디코더는 항상 동기화된 상태에 있다. 즉, 디코더는 인코딩 파라미터에서 의 변화를 추적한다. 이것은 데이터를 인코딩하기 위해 어떤 파라미터 값이 사용되었는지에 관하여, 인코더가 어떠한 오버헤드 정보도 디코더에게 전송할 필요가 없다는 것을 의미한다.
그러므로, 무손실 압축 인코더 및 방법이 0의 런들을 인코딩하기 위한 런-길이 인코딩과 0의 런 이후의 숫자들을 인코딩하기 위한 G/R 인코딩 사이를 스위칭함으로써 정수 데이터의 효율적인 압축을 제공하는 것이 필요하다. 또한, 0의 런 이후에 나타날 수 있는 임의의 입력 정수를 핸들링 및 인코딩할 수 있는 적응 인코더 및 방법이 필요하다. 게다가, 입력 데이터의 신속한 추적 및 효율적인 압축을 제공하기 위하여 백워드-적응 기술을 사용함으로써 포워드 적응의 언급된 문제점들을 방지하는 적응 인코더 및 방법이 또한 필요하다.
본 명세서에 개시된 본 발명은 정수 데이터의 무손실 인코딩을 위한 적응 RLGR 인코더 및 디코더(코덱) 및 방법을 포함한다. 적응 RLGR 코덱 및 방법은 입력 데이터에서 변화하는 통계의 신속한 추적을 제공하기 위하여 백워드 적응을 사용한다. 백워드 적응을 사용하여, 적응 RLGR 코덱 및 방법은 입력 데이터의 통계에서의 임의의 변화를 신속하게 학습한다. 또한, 적응 RLGR 코덱 및 방법은 임의의 입력 정수 값을 인코딩할 수 있다. 적응 RLGR 코덱 및 방법은 오디오, 이미지 및 비디오 인코더와 같은 멀티미디어 압축 시스템을 포함하여 매우 다양한 압축 어플리케이션에 적용될 수 있다.
적응 RLGR 코덱 및 방법은 런-길이 인코딩 및 G/R 인코딩을 새로운 방식으로 결합한다. 특히, 적응 RLGR 코덱 및 방법은 단지 G/R 인코딩인 제1 모드(G/R 단독 모드) 및 G/R 인코딩에 런-길이 인코딩이 더해진 제2 모드(RLGR 모드)를 가진다. 적응 RLGR 코덱 및 방법은 또한 각 인코딩된 심볼 후에 인코딩 파라미터들을 조정하는 새로운 백워드-적응 기술을 사용한다. 인코딩 모드(G/R 단독 모드 또는 RLGR 모드)는 파라미터 값으로부터 자동으로 결정된다. 어떠한 확률 테이블 또는 코드워드 테이블도 필요하지 않고, 따라서 적응 RLGR 코덱 및 방법은 소형 메모리 내에 알맞을 수 있다. 따라서 적응 RLGR 코덱 및 방법은 통상적으로 명령어 페칭 및 실행보다 메모리 액세스에 훨씬 많은 싸이클이 소모되는 현대의 프로세서에 매우 적합하다. 또한 적응 RLGR 코덱 및 방법이 블럭에 있는 입력 데이터를 버퍼링할 것을 필요로 하지 않고, 각 데이터 값을 두번씩 프로세싱할 필요가 없기 때문에, 제한된 메모리 및 제한된 프로세싱 전력을 갖는 소형 장치에 매우 적합하다.
적응 RLGR 코덱 및 방법은 인코딩 모드에 의존하여 입력 데이터의 스트링을 출력 코드워드에 매핑하는 간단하지만 새로운 조합의 코딩 규칙을 사용한다. 적응 RLGR 코덱 및 방법은 또한 새로운 적응 규칙을 갖는 새로운 백워드-적응 기술을 사용한다. 두 개의 파라미터, 즉, 인코더 런 파라미터(s) 및 G/R 파라미터(k)가 사용된다. 인코딩 런 파라미터는 적응 RLGR 코덱 및 방법이 런-길이 인코딩을 사용하는지(s>0에 대해), 및 만약 그렇다면 런-길이 인코딩이 어떻게 사용되는지를 제어한다. G/R 파라미터는 두 인코딩 모드 모두에서, 입력 값을 직접 인코딩하기 위해(G/R 단독 모드에서, s=0) 또는 0의 불완전 런 후의 입력 값을 인코딩하기 위해(RLGR 모드에서) 사용된다.
적응 RLGR 코덱 및 방법의 주요 이점들 중 하나는 생성되는 모든 코드워드 후에 파라미터들(s 및 k)이 조정 및 갱신된다는 것이다. 이것은 입력 데이터의 통계에서의 임의의 변화가 매우 신속하게 추적되도록 허용한다. 그들의 변화가 디코더에 의해 추적되기 때문에, 디코더에 인코딩 파라미터를 전송하기 위한 어떠한 오버헤드도 필요하지 않다. 적응 규칙이 간단하기 때문에, 백워드 적응을 사용하는 계산 복잡도가 낮다. 따라서, 적응 RLGR 코덱 및 방법은 여러 실용적인 어플리케이션에 대해 흥미롭다.
적응 RLGR 방법은 런-길이 인코더가 아닌 엔트로피 인코더를 사용하는 제1 인코딩 모드 및 런-길이 인코더와 결합된 엔트로피 인코더를 사용하는 제2 인코딩 모드 중에서 선택하는 것, 및 백워드-적응 기술을 사용하여 제1 및 제2 모드의 인코더들을 적응시키는 것을 포함한다. 전형적으로, 엔트로피 인코더는 G/R 인코더이다. 백워드-적응 기술은 제1 및 제2 모드 중에서 선택하기 위해 인코딩 모드 파라미터 s를 사용하고, G/R 인코더와의 사용을 위해 G/R 파라미터 k를 사용하는 것을 포함한다. 만약 s=0이라면 제1 인코딩 모드가 선택되고, s>0이라면 제2 인코딩 모드가 선택된다. 런-길이 인코더 또는 G/R 인코더에 의해 생성되는 모든 코드워드 후에 이들 파라미터 각각이 갱신된다.
인코딩 규칙은 인코딩 모드에 의존한다. 만약 s=0이면, 먼저 간단한 1-1 매핑 규칙을 통해 입력 값을 음수가 아닌 값 u에 매핑하고(x>0이면 u=2x, 및 x<0이면 u=-2x-1), 그 후 파라미터 k를 갖는 G/R 인코더를 사용하여 u를 인코딩함으로써 다음 입력 값 x가 인코딩되고, 따라서 출력 코드워드는 GR(u,k)로 표기된다. 만약 s>0이면, 입력 값 x의 0의 런 r이 먼저 검사된다. 만약 r=2s이면, 런 r이 완전 런으로 정의되고, 출력 코드워드는 0과 동일한 단일 비트이다. 만약 r<2s이면, 런 r은 불완전 런으로 정의되고, 코드워드는 1+bin(r,s)+GR(u,k)이며, 여기서 bin(r,s)는 불완전 런 r의 길이의 s비트로 된 이진 표현이고, GR(u,k)는 (x로부터 u에의 매핑을 다시 사용하는) 불완전 런 r의 뒤에 오는 값에 대한 G/R 코드이다.
심볼이 인코딩된 후에, 파라미터 적응 규칙이 적용된다. 백워드-적응 기술의 적응 규칙은 파라미터들 s 및 k 각각에 대한 규칙을 포함한다. s에 대한 적응 규칙은 다음과 같다. 만약 s=0(G/R 단독 모드)이면, 입력 값 x의 절대값이 검사된다. 만약 |x|=0이면, s의 스케일된 버전, 즉, S가 제1 정수 상수 A1만큼 증가된다. 만약 |x|>0이면, S는 제2 정수 상수 B1만큼 감소된다. 만약 s>0(RLGR 모드)인 경우, 만약 런 r이 완전 런이면, S는 제3 정수 상수 A2만큼 증가된다. 만약 런 r이 불완전 런이면, S는 제4 정수 상수 B2만큼 감소된다. 다음 코드워드를 생성하기 위해 사용될 s의 값이 그 후 s=S/L로서 계산되며, 여기서 L은 고정 파라미터(L이 2의 멱수로 선택되는 경우, L에 의한 나눗셈은 단지 쉬프트 연산자임)이다.
k에 대한 적응 규칙은 다음과 같다. 입력 값 u로부터(GR 코더는 항상 u 값에 대해 동작한다는 것을 상기해야 함), p=u>>k(여기서 >>는 우향-쉬프트 연산자를 나타냄)에 의해 임시 값 p가 계산된다. 만약 p=0이면, k의 스케일된 버전, 즉, K가 제5 정수 상수 B3만큼 감소된다. 만약 p=1이면, k는 변화없이 남겨진다. 만약 p>1이면, K는 p만큼 증가된다. 이러한 방식으로, 각 코드워드가 생성된 후에, 제1 및 제2 모드 둘 모두에서 파라미터 k는 G/R 인코더에 대해 갱신된다. 그 후 다음 코드워드를 생성하기 위해 사용될 k의 값이 k=K/L로서 계산되며, 여기서 L은 고정 파라미터(L이 2의 멱수로 선택되는 경우, L에 의한 나눗셈은 단지 쉬프트 연산자임을 상기해야 함)이다.
적응 RLGR 방법이 또한 "분수 적응(fractional adaptation)"이라 불리는 특성을 포함한다는 것은 상기 적응 규칙의 설명으로부터 알 수 있다. 분수 적응은 적응률의 보다 세밀한 제어를 허용한다. 먼저, 스케일링 파라미터 L이 정의되고, L의 값은 전형적으로 2의 멱수로 설정된다. 다음으로, 스케일된 인코딩 모드 파라미터 S=s*L 및 스케일된 G/R 파라미터 K=k*L이 정의된다. s 및 k에 대한 상기 적응 규칙을 사용할 때, 생성된 코드워드에 따라, 스케일된 파라미터 값 S 및 K가 정수 상수만큼 증가되거나 감소된다. S 및 K의 적응 후에, 최종 파라미터 값들 s 및 k가 s=S/L 및 k=K/L에 의해 계산된다. 그러한 방식으로, S 및 K에 대한 정수 증가량이 s 및 k에 대한 분수 증가량으로 여겨질 수 있으며, 이것은 s 및 k의 값의 보다 부드러운 제어를 허용하고, 따라서 입력 통계에서의 변화를 더 잘 추적할 수 있다. 만약 모든 인코딩된 심볼 후에 s 및 k가 정수 증가량에 의해 조정된다면, 그들의 값은 매우 많이 동요할 것이다. 파라미터 값에 있어서 그러한 노이즈는 압축 비율(인코딩된 비트스트림을 저장하기 위해 필요한 비트 수에 대한 변경되지 않은 이진 포맷으로 입력 데이터를 저장하기 위해 필요한 비트 수에 있어서의 비율)에 있어서 감소를 일으킬 것이다.
적응 RLGR 코덱은 상기 기술된 적응 RLGR 방법을 구체화하기 위한 모듈을 포 함한다.
적응 RLGR 코덱 및 방법은 상기 인코딩 규칙에 대응하는 디코딩 규칙을 사용하고, 상기 기술된 동일한 파라미터 적응 규칙을 사용함으로써 동작한다. 디코더에서의 디코딩 규칙은 이전에 기술된 인코더에서의 인코딩 규칙을 역으로 한다. 즉, 만약 s=0이면, 디코더는 GR 파라미터 k의 현재 값에 의존하여 입력 비트스트림(또는 파일)으로부터 필요한 만큼의 비트들을 읽는다. 이러한 방식으로, 디코더는 표 1에 따라 유효한 G/R 코드 GR(u,k)에 대응하는 완전한 코드워드를 읽는다. G/R 코드는 모든 파라미터 k에 대해 고유하게 디코딩가능하기 때문에, 디코더는 그 코드워드를 디코딩할 수 있다. 즉, 디코더는 인코더에 존재했던 심볼 u의 값을 결정할 수 있다. u로부터, 디코더는 단순히 역 1-1 매핑 규칙을 사용함으로써 대응하는 데이터 값 x를 결정할 수 있다. 특히, 만약 u가 짝수이면, x=u/2이고, 만약 u가 홀수이면, x=-(u+1)/2이다. 만약 s>0이면, 디코더는 입력 비트스트림 또는 파일로부터 다음 비트를 읽는다. 만약 그 비트가 0과 같으면, 디코더는 r개의 0의 스트링(여기서 r=2s)인 출력을 생성한다. 만약 그 비트가 1과 같으면, 디코더는 다음 s개의 비트를 변수 r의 이진 표현으로서 읽는다. 그 후 디코더는 GR 파라미터 k의 현재 값에 의존하여 입력 비트스트림(또는 파일)으로부터 필요한 만큼의 비트들을 읽는다. 이러한 방식으로, 유효한 G/R 코드 GR(u,k)에 대응하는 완전한 코드워드가 읽혀진다. G/R 코드로부터, 디코더는 임시 변수 u를 결정할 수 있고, 역 1-1 매핑 규칙을 통해 0의 부분적 스트링 뒤에 왔던 입력 데이터 값 x를 계산할 수 있다. 특히, 만약 u가 짝수이면, x=u/2이고, 만약 u가 홀수이면, x=-(u+1)/2이다. 그 후 디코더는 그 값 x가 뒤따르는 r개의 0의 스트링을 출력한다. 상기 기술된 디코딩 프로세스는 인코더에 나타났던 것과 정확히 매칭하는 출력 값 또는 값들의 스트링으로 입력 코드워드를 디코딩하기 위해 수행된다. 따라서, 디코딩 프로세스는 무손실이다.
상기 기술된 바와 같이 입력 비트스트림 또는 파일로부터 코드워드를 디코딩한 후에, 디코더는 상기에서 인코더에 대해 기술된 바와 동일한 적응 규칙을 계산한다. 이러한 방식으로, 디코더는 인코더가 한 것과 정확히 동일한 방식으로 파라미터 s 및 k의 값들을 조정할 것이다. 따라서, 파라미터는 다음 비트스트림(또는 파일) 코드워드를 디코딩하기 위한 올바른 값을 가질 것이다.
본 발명은 후술되는 설명 및 본 발명의 양상을 도시하는 첨부 도면을 참조함으로써 더욱 이해될 수 있다. 예로서 본 발명의 원리를 도시하는 첨부 도면과 함께 취해질 때, 기타 특성 및 이점들이 후술되는 본 발명의 상세 설명으로부터 명백해질 것이다.
이제 동일한 참조 번호가 곳곳의 대응하는 부분을 나타내는 도면을 참조한다.
후술되는 본 발명의 설명에서, 본 발명의 일부를 형성하고 본 발명이 실행될 수 있는 특정 예를 예로서 도시하는 첨부 도면에 대한 참조가 행해진다. 기타 실시예들이 이용될 수 있고, 본 발명의 범위를 벗어나지 않고서 구조적 변경이 행해질 수 있다는 점을 이해해야 한다.
Ⅰ. 서론
본 발명에 개시된 RLGR 인코더 및 방법은 다양한 압축 어플리케이션에서 사용될 수 있다. 압축에 대한 예측 또는 변환 접근법을 사용하는 기타 시스템들뿐 아니라 멀티미디어 압축 시스템(예를 들어, 오디오, 이미지 및 비디오 코덱)도 대개 도 1에 유사한 확률 분포를 갖는 정수 데이터를 생성한다. RLGR 코덱 및 방법은 이미지, 오디오, 지형 고도 및 기하학적 지도 데이터의 압축을 위한 어플리케이션으로 구현되고 있다. 이러한 어플리케이션들에서 RLGR 코덱 및 방법 사용의 결과는 가장 정교한 엔트로피 코더에 필적하지만 단순한 구현으로 가능한 압축 비율이다.
본 발명에 개시된 RLGR 코덱 및 방법은 정수 데이터의 무손실 압축에 대한 개선된 기술이다. 정수 값을 포함하는 벡터는 인코더에 의해 비트스트림으로 매핑되며, 나중에 디코더에 의해 정확히 재구성될 수 있다. 개선된 성능을 위해 백워드-적응을 사용하면, RLGR 코덱 및 방법은 입력 데이터의 통계에서의 변화를 신속히 알고 적응한다. RLGR 코덱 및 방법은 오디오, 이미지 및 비디오 코덱과 같은 멀티미디어 압축 시스템을 포함하는 다양한 압축 어플리케이션에서 적용될 수 있다.
RLGR 코덱 및 방법은 새로운 방식으로 런-길이 인코딩과 G/R 인코딩을 결합하고, 각 인코딩된 심볼 후에 인코더 파라미터를 조정하는 백워드-적응 전략으로 특징지워진다. 확률 테이블 또는 코드워드 테이블이 불필요하며, 이는 RLGR 코덱 및 방법이 매우 작은 메모리에 알맞도록 한다. 따라서 RLGR 코덱 및 방법은 보통 명령어 페칭 및 실행에서보다 메모리 액세스에서 훨씬 많은 싸이클을 소모하는 현대의 프로세서에 대해 특히 매우 적합하다.
이전 종류의 엔트로피 코더와 비교할 때의 RLGR 코덱 및 방법의 하나의 주요 이점은 그것의 백워드-적응 전략이 데이터의 통계에 있어서의 변화를 신속히 학습한다는 것이다. 따라서, 실제에 있어서 RLGR 코덱 및 방법을 허프만 코더, 블럭-적응 G/R 인코더 또는 문맥-적응 산술적 인코더와 같은 다른 종류의 인코더들보다 나은 성능을 나타낸다. 인코딩 파라미터에 대한 백워드-적응 전략을 사용하는 또다른 이점은 확률 추정기가 필요하지 않다는 것이다. RLGR 코덱 및 방법의 또다른 이점은 그것이 데이터에 대해 단일 패스로 각 인코딩된 심볼 후에 적응을 수행하며, 따라서 블럭규모 또는 포워드 적응을 사용하는 인코더들보다 나은 압축 결과 및 신속한 인코딩을 생성한다는 점이다.
Ⅱ. 일반적인 개요
도 2a 및 2b는 본 발명에 개시된 적응 RLGR 인코더 및 방법의 예시적인 구현을 도시하는 블럭도이다. 도 2a에서, 적응 런-길이 RLGR 코덱 및 방법의 인코더 부분에 대한 블럭도가 도시된다. 도 2b에서, 적응 런-길이 RLGR 코덱 및 방법의 디코더 부분에 대한 블럭도가 도시된다. 도 2a 및 2b는 적응 RLGR 코덱 및 방법이 구현 및 사용될 수 있는 여러 방식들 중 단지 두 방식일 뿐이라는 점을 유의해야 한다.
도 2a를 참조하면, 적응 RLGR 인코더(200)는 제1 컴퓨팅 장치(210)에서 동작한다. 적응 RLGR 인코더(200)는 정수 데이터(220)를 입력하고 프로세싱한다. 일 반적으로, 정수 값을 포함하는 벡터와 같은 정수 데이터(220)가 주어지면, 적응 RLGR 인코더(200)는 정수 데이터(220)를 인코딩된 비트스트림(230)으로 인코딩 또는 매핑한다. 정수 데이터(220)는 전형적으로 가장 가능성 높은 값이 0이고, 0이 아닌 임의의 값은 값이 증가함에 따라 감소하는 확률을 갖도록 정수의 벡터를 포함한다. 이러한 유형의 정수 데이터는 전형적으로 도 1에 도시된 것에 유사한 확률 분포 함수(PDF)를 갖는다. 정수 데이터가 인코딩된 후에, 인코딩된 비트스트림(230)은 저장되거나 전송될 수 있다.
도 2b를 참조하면, RLGR 디코더(240)는 제2 컴퓨팅 장치(250)에 상주한다. 개별적인 컴퓨팅 장치로서 도시되지만, 제1 컴퓨팅 장치(210) 및 제2 컴퓨팅 장치(250)는 동일한 컴퓨팅 장치일 수 있다는 점을 유의해야 한다. 즉, RLGR 인코더(200) 및 디코더(240)는 동일한 컴퓨팅 장치에 상주할 수 있다. 일반적으로, RLGR 디코더(240)는 인코더 비트스트림(230)을 프로세싱하고, 재구성된 정수 데이터(260)를 출력한다. 적응 RLGR 인코더(200)가 정수 데이터(220)의 무손실 인코딩을 수행하기 때문에, RLGR 디코더(240)는 인코딩된 비트스트림(230)을 읽고, 정수 데이터(220)에 포함된 원본 데이터 벡터를 정확히 재구성할 수 있다.
실제의 응용에서, 소정의 장치 또는 설비는 RLGR 인코더를 구체화할 수는 있지만 RLGR 디코더를 구체화할 수는 없다는 점을 유의해야 한다(예를 들어, 디지털 카메라). 마찬가지로, 소정의 장치 또는 설비는, RLGR 디코더를 구체화할 수는 있지만 RLGR 인코더를 구체화할 수는 없다(예를 들어, 디지털 오디오 재생기 또는 디지털 사진 뷰어).
Ⅲ. 예시적인 운영 환경
적응 RLGR 코덱 및 방법은 컴퓨팅 환경 및 도 2에 도시된 제1 컴퓨팅 장치(210) 및 제2 컴퓨팅 장치(250)와 같은 컴퓨팅 장치에서 동작하도록 설계된다. 적응 RLGR 코덱 및 방법이 동작하는 컴퓨팅 환경이 이제 논의될 것이다. 다음 논의는 적응 RLGR 인코더 및 방법이 구현될 수 있는 적합한 컴퓨팅 환경의 간략하고 일반적인 설명을 제공하기 위한 것이다.
도 3은 도 2에 도시된 RLGR 코덱 및 방법이 구현될 수 있는 적합한 컴퓨팅 시스템 환경의 예를 도시한다. 컴퓨팅 시스템 환경(300)은 적합한 컴퓨팅 환경의 하나의 예일 뿐이며, 본 발명의 사용 또는 기능에 대해 어떠한 제한을 제안하고자 하는 것이 아니다. 컴퓨팅 환경(300)이 예시적인 운영 환경(300)에 도시된 컴포넌트들 중 임의의 하나 또는 조합에 관한 어떠한 의존성 또는 요구사항을 갖는 것으로도 해석되어서는 안 된다.
적응 RLGR 코덱 및 방법은 다수의 기타 범용 또는 특수용 컴퓨팅 시스템 환경 또는 구성에서 동작가능하다. 적응 RLGR 코덱 및 방법에서 사용되기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예는 개인용 컴퓨터, 서버 컴퓨터, 포켓형, 랩탑 또는 모바일 컴퓨터 또는 휴대폰 및 PDA와 같은 통신 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋탑 박스, 프로그래밍가능 가전기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함하지만, 이들로 제한되지는 않는다.
적응 RLGR 코덱 및 방법은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터-실행가능 명령어의 일반적인 문맥으로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 적응 RLGR 코덱 및 방법은 또한 통신 네트워크를 통해 연결되는 원격 프로세싱 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하여 로컬 및 원격 컴퓨팅 저장 매체 둘 모두에 위치될 수 있다. 도 3을 참조하면, 적응 RLGR 코덱 및 방법을 구현하기 위한 예시적인 시스템은 컴퓨터(310)의 형태로 범용 컴퓨팅 장치를 포함한다. 컴퓨터(310)는 도 2에 도시된 제1 컴퓨팅 장치(210) 및 제2 컴퓨팅 장치(250)의 예이다.
컴퓨터(310)의 컴포넌트들은 프로세싱 유닛(320), 시스템 메모리(330), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(320)에 연결하는 시스템 버스(321)를 포함할 수 있지만 이들로 제한되지는 않는다. 시스템 버스(321)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 포함하는 여러 유형의 버스 구조 중 임의의 것일 수 있다. 제한을 가하지 않는 예로서, 그러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 강화된 ISA(EISA) 버스, 비디오 전자 표준 협회(VESA) 로컬 버스, 및 Mezzanine 버스로도 알려진 주변 컴포넌트 인터커넥트(PCI) 버스를 포함한다.
컴퓨터(310)는 전형적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨 터 판독가능 매체는 컴퓨터(310)에 의해 액세스될 수 있는 임의의 가용 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 둘 모두 포함한다. 제한을 가하지 않는 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성 분리형 및 비분리형 매체를 포함한다.
컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD 또는 기타 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨터(310)에 의해 액세스될 수 있는 임의의 기타 매체를 포함하지만 이들로 제한되지는 않는다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터 또는 기타 전송 메커니즘을 구현하며, 임의의 정보 전달 매체를 포함한다.
"변조된 데이터 신호"라는 용어는 신호에서 정보를 인코딩하기 위한 방식으로 하나 이상의 특성이 설정되거나 변경된 신호를 의미한다는 점을 유의해야 한다. 제한을 가하지 않는 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 연결과 같은 유선 매체, 및 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함한다. 상기 중 임의의 것의 조합 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(330)는 ROM(331) 및 RAM(332)와 같은 휘발성 및/또는 비휘발 성 메모리의 형태로 컴퓨터 저장 매체를 포함한다. 시작할 때 등에 컴퓨터(310) 내의 구성요소들 사이의 정보 전달을 돕는 기본 루틴을 포함하는 기본 입력/출력 시스템(333)(BIOS)은 전형적으로 ROM(331)에 저장된다. RAM(332)은 전형적으로 적시 액세스가능하고/거나 현재 프로세싱 유닛(320)에 의해 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 제한을 가하지 않는 예로서, 도 3은 운영 시스템(334), 어플리케이션 프로그램(335), 기타 프로그램 모듈(336) 및 프로그램 데이터(337)를 도시한다.
컴퓨터(310)는 또한 기타 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 3은 비분리형 비휘발성 자기 매체로부터 판독 또는 기입하는 하드 디스크 드라이브(341), 분리형 비휘발성 자기 디스크(352)로부터 판독 또는 기입하는 자기 디스크 드라이브(351), 및 CD ROM 또는 기타 광학 매체와 같은 분리형 비휘발성 광학 디스크(356)로부터 판독 또는 기입하는 광학 디스크 드라이브(355)를 도시한다.
예시적인 운영 환경에서 사용될 수 있는 기타 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만 이들로 제한되지는 않는다. 하드 디스크 드라이브(341)는 전형적으로 인터페이스(340)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(321)에 연결되고, 자기 디스크 드라이브(351) 및 광학 디스크 드라이브(355)는 전형적으로 인터페이스(350)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(321)에 연결된다.
상기에 논의되고 도 3에 도시된 드라이브 및 관련 컴퓨터 저장 매체는 컴퓨터(310)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 3에서, 예를 들어, 하드 디스크 드라이브(341)는 운영 시스템(344), 어플리케이션 프로그램(345), 기타 프로그램 모듈(346) 및 프로그램 데이터(347)를 저장하는 것으로서 도시된다. 이러한 컴포넌트들은 운영 시스템(334), 어플리케이션 프로그램(335), 기타 프로그램 모듈(336) 및 프로그램 데이터(337)와 동일할 수도 상이할 수도 있다는 점을 유의해야 한다. 운영 시스템(344), 어플리케이션 프로그램(345), 기타 프로그램 모듈(346) 및 프로그램 데이터(347)는 최소한 그들이 상이한 것들이란 점을 도시하기 위하여 여기서 상이한 번호를 부여받는다. 사용자는 키보드(362) 및 일반적으로 마우스, 트랙볼 또는 터치 패드로 불리는 포인팅 장치(361)와 같은 입력 장치를 통해 컴퓨터(310)에 명령어 및 정보를 입력할 수 있다.
기타 입력 장치(도시되지 않음)는 마이크, 조이스틱, 게임 패드, 위성 디쉬, 스캐너, 라디오 수신기, 또는 텔레비전 또는 방송 비디오 수신기 등을 포함할 수 있다. 이들 및 기타 입력 장치들은 종종 시스템 버스(321)에 연결되는 사용자 입력 인터페이스(360)를 통해 프로세싱 유닛(320)에 연결되지만, 예를 들어, 병렬 포트, 게임 포트 또는 USB와 같은 기타 인터페이스 및 버스 구조에 의해 연결될 수 있다. 모니터(391) 또는 기타 유형의 디스플레이 장치는 또한 비디오 인터페이스(390)와 같은 인터페이스를 통해 시스템 버스(321)에 연결된다. 모니터 이외에, 컴퓨터는 또한 출력 주변 인터페이스(395)를 통해 연결될 수 있는 스피커(397) 및 프린터(396)와 같은 기타 주변 출력 장치를 포함할 수 있다.
컴퓨터(310)는 원격 컴퓨터(380)와 같은 하나 이상의 원격 컴퓨터에의 논리적 연결을 사용하여 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(380)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 공통 네트워크 노드일 수 있으며, 도 3에는 메모리 저장 장치(381)만이 도시되지만, 전형적으로 컴퓨터(310)에 관련되어 상기 기술된 구성요소들 중 다수 또는 모두를 포함한다. 도 3에 도시된 논리적 연결은 근거리 통신망(LAN)(371) 및 광역 통신망(WAN)(373)을 포함하지만, 기타 네트워크 또한 포함할 수 있다. 그러한 네트워크 환경은 사무실, 기업규모 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용될 때, 컴퓨터(310)는 네트워크 인터페이스 또는 어댑터(370)를 통해 LAN(371)에 연결된다. WAN 네트워크 환경에서 사용될 때, 컴퓨터(310)는 전형적으로 인터넷과 같은 WAN(373)을 거쳐 통신을 수립하기 위한 모뎀(372) 또는 기타 수단을 포함한다. 내장 또는 외장일 수 있는 모뎀(372)은 사용자 입력 인터페이스(360) 또는 기타 적합한 메커니즘을 통해 시스템 버스(321)에 연결될 수 있다. 네트워크 환경에서, 컴퓨터(310)에 관련되어 도시된 프로그램 모듈 또는 그들의 일부는 원격 메모리 저장 장치에 저장될 수 있다. 제한을 가하지 않는 예로서, 도 3은 메모리 장치(381)에 상주하는 것으로서 원격 어플리케이션 프로그램(385)을 도시한다. 도시된 네트워크 연결이 예시적이며, 컴퓨터 사이에 통신 링크를 수립하는 기타 수단이 사용될 수 있다는 점을 잘 알 것이다.
Ⅳ. 시스템 컴포넌트
도 4는 도 2에 도시된 적응 RLGR 인코더(200)의 컴포넌트들을 도시하는 일반적인 블럭도이다. 적응 RLGR 인코더는 입력 값(또는 값들의 스트링)(400)을 입력으로서 수신한다. 그 후 적응 RLGR 인코더(200)의 두 모드 중 하나를 선택하여 스위칭하기 위하여 인코더 모드 선택기(405)가 사용된다. 특히, 도 4에 도시된 바와 같이, 인코더 모드 선택기(405)는 G/R 단독 모드 또는 런-길이 및 G/R 인코더 모드를 선택할 수 있다. G/R 단독 모드는 적응 파라미터를 갖는 G/R 인코더(410)만을 사용한다. 런-길이 및 G/R 인코더 모드는 적응 파라미터를 갖는 런-길이 인코더(415)와 적응 G/R 인코더(410) 둘 모두 사용한다.
코드워드(420)를 획득하기 위하여 입력 값(또는 스트링)(400)을 인코딩하기 위하여 상기 두 모드 중 하나가 사용된다. 각 입력 값(또는 스트링)(400)의 인코딩 후, 인코딩 파라미터가 입력 데이터의 통계를 추적하도록 적응된다. 적응 RLGR 인코더(200)는 적어도 두 유형의 파라미터를 사용한다. 첫째, 인코딩 모드가 런-길이 인코더를 사용하는지, 및 만약 그렇다면, 런-길이 인코더가 어떻게 사용되는지를 제어하기 위하여 인코딩 모드 파라미터가 사용된다. 둘째, G/R 파라미터는 (a) 모든 입력 값을 인코딩하기 위하여(인코더가 G/R 단독 모드에 있는 경우), 및 (b) 0의 불완전 런을 뒤따르는 수들을 인코딩하기 위하여(인코더가 RLGR 모드에 있는 경우) 두 모드 모두에서 사용된다. 이들 파라미터 및 이들 파라미터의 적응은 하기에 상세히 논의될 것이다.
백워드-적응 기술을 사용하여 인코딩 모드 파라미터를 갱신하기 위하여 인코딩 모드 파라미터 적응 모듈(430)이 사용된다. 모듈(430)은 갱신된 인코딩 모드 파라미터(435)를 산출한다. 유사하게, G/R 파라미터 적응 모듈(440)은 백워드-적응 기술을 사용하여 원본 G/R 파라미터를 갱신하기 위하여 사용된다. 이것은 갱신된 G/R 파라미터(445)를 산출한다. 인코딩 모드 파라미터 및 G/R 파라미터 둘 모두의 적응이 하기에 상세히 논의될 것이다. 파라미터가 갱신되면, 갱신된 인코딩 모드 파라미터(435) 및 갱신된 G/R 파라미터(445)를 사용하여 적응 RLGR 인코더(200)에 의해 다음 입력 값(450)이 프로세싱된다.
Ⅴ. 동작 개요
도 2 및 도 4에 도시된 바와 같은 본 발명에 사용된 적응 RLGR 인코더(200) 및 방법의 동작이 이제 논의될 것이다. 도 5는 적응 RLGR 인코더(200) 및 방법의 일반적인 동작을 도시하는 일반적인 흐름도이다. 방법은 인코딩될 디지털 데이터를 입력함(단계(500))으로써 시작한다. 하나의 시험적인 실시예에서, 입력 디지털 데이터는 정수 값인 엘리먼트들을 갖는 벡터 형태의 정수 데이터이다. 각 입력 디지털 데이터 값은 특정 범위로 제한되지 않고, 임의의 정수 값(예를 들어, 이진 또는 부호있는 이진. 이것이 기타의 엔트로피 코더에서 일반적이기 때문)일 수 있다는 점을 유의해야 한다. 다음, 적응 RLGR 인코더의 인코더 모드가 선택된다(단계(510)). 모드는 인코딩 모드 파라미터의 값에 의존하여 G/R 단독 모드 또는 RL+GR 모드일 수 있다. 그 후 선택된 인코더가 입력 디지털 데이터를 인코딩한다.
특정 값으로 초기화되는 인코딩 파라미터를 사용하여 디지털 데이터가 선택된 모드에서 인코딩된다. 그러나, 입력 디지털 데이터의 통계가 변할 수 있기 때문에, RLGR 인코더(200)는 적응적이다. 이 적응은 더 큰 인코딩 효율성을 제공하 기 위하여 RLGR 인코더(200)가 입력 디지털 데이터의 통계를 추적하여 통계들에 신속히 적응할 수 있게 한다. RLGR 인코더(200) 및 방법은 백워드-적응 기술을 사용하여 인코딩 파라미터를 갱신한다(단계(520)). 인코딩 파라미터의 이러한 갱신은 입력 디지털 데이터의 각 값 또는 값들의 스트링이 인코딩된 후에 발생한다. 게다가, 백워드-적응 기술은 새로운 적응 규칙을 포함하는데, 이것은 하기에 상세히 논의된다. 그 후 인코딩된 디지털 데이터가 출력된다(단계(530)). 다음, 입력 디지털 데이터의 다음 값 또는 스트링이 방금 기술된 방법을 사용하여 프로세싱된다. 인코딩 파라미터의 갱신된 값이 다음 입력 값 또는 스트링의 인코딩에 사용된다. 모든 디지털 데이터가 인코딩된 비트스트림으로 인코딩될 때까지 이 프로세스가 반복된다.
도 6은 도 5에 도시된 적응 RLGR 인코더 및 방법의 보다 더 세부적인 사항을 도시하는 흐름도이다. 특히, 디지털 데이터의 값 또는 스트링이 입력으로서 수신된다(단계(600)). 다음, (a) G/R 단독 모드, 및 (b) 런-길이 및 G/R 모드 중 하나로부터 인코더 모드가 선택된다(단계(610)). 그 후 선택된 인코더 모드를 사용하여 입력 값 또는 스트링이 인코딩된다(단계(620)).
입력 값 또는 스트링이 인코딩된 후에, 인코딩 파라미터가 갱신된다. 이러한 적응 프로세스는 분수 적응 파라미터를 정의함으로써 시작한다(단계(630)). 최적 파라미터 값이 더욱 근사적으로 추적될 수 있도록 인코딩 파라미터의 적응 속도를 감소시키기 위하여 분수 적응 파라미터가 사용된다. 분수 적응 파라미터는 하기에 보다 상세히 논의된다. 다음, 인코딩 모드 파라미터의 분수 적응 버전이 새 로운 적응 규칙을 포함하는 백워드-적응 기술을 사용하여 갱신된다(단계(640)). 유사하게, G/R 파라미터는 백워드-적응 기술 및 새로운 적응 규칙을 사용하여 갱신된다(단계(650)). 인코딩된 입력 값 또는 스트링은 인코딩된 비트스트림에 첨부되고, 인코딩될 디지털 데이터로부터 다음 값 또는 스트링이 입력된다(단계(660)). 갱신된 인코딩 모드 파라미터 및 G/R 파라미터를 사용하여 다음 값 또는 스트링을 인코딩하기 위하여 프로세스가 다시 시작한다.
Ⅵ. 동작 세부사항
상기 논의된 도 4, 5 및 6의 적응 RLGR 인코더(200) 및 방법의 동작 세부사항이 이제 논의될 것이다.
인코더 모드 선택기
도 7은 도 4에 도시된 적응 RLGR 인코더(200) 및 방법의 인코더 모드 선택기(405)의 동작의 상세한 흐름도이다. 일반적으로, 인코더 모드 선택기(405)는 인코딩 모드 파라미터의 값에 기초하여 두 인코더 모드 중에서 선택 및 스위칭한다. 인코더 모드의 선택은 디지털 데이터의 값 또는 스트링이 인코딩되고 인코딩 파라미터가 갱신된 후에 발생한다.
프로세스는 초기 인코딩 모드 파라미터(단계(705)) 및 인코딩될 입력 값(또는 0의 스트링)(단계(710))을 입력으로서 수신함으로써 시작한다. 인코딩 모드 파라미터의 값이 0과 같은지에 대한 결정이 행해진다(단계(715)). 만약 그렇다면, 인코딩 모드는 G/R 모드이다. 그렇지 않으면, 인코딩 모드는 RLGR 모드이다.
G/R 모드에서, 적응 G/R 인코더를 사용하여 입력 값이 인코딩된다(단계 (720)). 이것은 G/R 파라미터에 대해 백워드-적응 적응 규칙을 사용하는 G/R 인코더이다. 인코딩 모드 파라미터가 0보다 크다는 것을 의미하는 RLGR 모드에서, 높은 가능성으로 입력 값이 0의 런을 포함한다고 기대될 수 있다. 0의 런이 완전 런인지 불완전 런인지에 대한 결정이 행해진다(단계(725)). 서로에게 인접한 동일한 값의 스트링으로서 런이 정의된다. 완전 런은 2를 인코딩 모드 파라미터만큼 제곱한 것과 같은 수의 0을 갖는 런으로서 정의된다. 예를 들어, 만약 인코딩 모드 파라미터가 3과 같다면, 23=8. 따라서, 이 예에서는, 완전 런은 8개의 0의 런이다.
만약 런이 완전 런이면, 입력 값 스트링을 코드워드=0으로서 인코딩하기 위해 적응 런-길이 인코더가 사용된다(단계(730)). 즉, 완전 런은 0의 코드워드에 의해 표현된다. 상기 예에서, 8개의 0의 스트링(완전 스트링을 나타냄)은 코드워드=0에 의해 표현될 것이다. 만약 런이 불완전 런이면, 런이 불완전이라는 것, 불완전 런에 있는 0의 수, 및 불완전 런 바로 뒤의 값을 인코더에게 알리도록 입력 값 스트링이 인코딩된다. 특히, 입력 값 스트링을 코드워드=1에 의해 표현된 불완전 런으로서 인코딩하기 위하여 적응 런-길이 인코더가 사용된다(단계(735)). 이것은 런이 불완전 런이라는 것을 디코더에게 경고한다. 다음, 불완전 런의 길이가 인코딩된 입력 값 스트링에 추가된다(단계(740)). 이 인코딩된 값은 불완전 런의 길이를 나타낸다. 예를 들어, 만약 불완전 런이 4개의 0 길이를 가지면, 런 길이가 4와 같다는 것을 디코더에게 알리기 위하여 값 4(또는 이진 표기로 "100")가 인코딩된 비트스트림에 추가된다.
인코딩할 남겨진 정보의 유일한 부분은 불완전 런 바로 뒤의 값이다. 불완전 런 바로 뒤의 값을 인코딩하기 위하여 적응 G/R 인코더가 사용된다(단계(745)). 적응 G/R 인코더를 사용하는 경우 G/R 파라미터가 사용된다. 마지막으로, 인코딩된 입력 값(인코딩 모드가 G/R 모드인 경우) 또는 인코딩된 입력 값 스트링(인코딩 모드가 RLGR 모드인 경우)이 출력된다(단계(750)).
인코딩 모드 파라미터 적응 모듈
도 8은 도 4에 도시된 적응 RLGR 인코더(200)의 인코딩 모드 파라미터 적응 모듈(430) 및 방법의 동작에 대한 상세한 흐름도이다. 일반적으로, 인코딩 모드 파라미터 적응 모듈(430)은 백워드-적응 기술을 사용하여 초기 인코딩 모드 파라미터를 갱신한다. 갱신은 디지털 데이터의 각 값 또는 스트링이 인코딩된 후에 수행된다. 백워드-적응 기술은 인코딩 모드 파라미터를 갱신하기 위하여 새로운 적응 규칙을 사용한다.
프로세스는 초기 인코딩 모드 파라미터(단계(805)) 및 인코딩될 입력 값(단계(810))을 입력으로서 수신함으로써 시작한다. 그 후 인코딩 모드 파라미터가 0과 같은지에 대한 결정이 행해진다(단계(815)). 만약 그렇다면, 인코딩 모드는 G/R 단독 모드이고, 그렇지 않으면 인코딩 모드는 RLGR 모드이다.
G/R 단독 모드에 대해, 그 후 입력 값의 절대 값이 0인지에 대한 결정이 행해진다(단계(820)). 만약 그렇다면, 현재의 스케일된 인코딩 모드 파라미터가 제1 정수 상수만큼 증가된다(단계(825)). 그렇지 않다면, 현재의 스케일된 인코딩 모드 파라미터는 제2 정수 상수만큼 감소된다(단계(830)).
RLGR 모드에 대해, 값의 스트링에서 0의 런이 완전 런인지 불완전 런인지에 대한 결정이 행해진다(단계(835)). 만약 런이 완전 런이면, 현재의 스케일된 인코딩 모드 파라미터는 제3 정수 상수만큼 증가된다(단계(840)). 만약 런이 불완전 런이면, 현재의 스케일된 인코딩 모드 파라미터는 제4 정수 상수만큼 감소된다(단계(845)).
현재의 스케일된 인코딩 모드 파라미터가 갱신되면, 현재의 인코딩 모드 파라미터는 갱신된 인코딩 모드 파라미터로 대체된다(단계(850)). 이것은 스케일된 인코딩 모드 파라미터를 고정 스케일링 인수로 나누고, 그 결과의 정수 부분을 유지함으로써 획득된다. 적응은, 스케일된 인코딩 모드 파라미터를 정수 스텝으로 조정하기 때문에, 실제 인코딩 파라미터는 마치 분수 스텝에 의해 적응된 것처럼 동작한다. 이것은 "분수 적응"이라 불리며, 적응 속도의 보다 세밀한 제어를 허용한다. 그 후 최종 갱신된 인코딩 모드 파라미터가 출력된다(단계(855)). 다시 한번 언급하면, 현재의 스케일된 인코딩 모드 파라미터는 모든 입력 값 또는 스트링이 인코딩된 후에 갱신된다. 그 후 갱신된 인코딩 모드 파라미터는 다음 입력 값 또는 스트링의 인코딩에 사용된다.
G/R 파라미터 적응 모듈
도 9는 도 4에 도시된 적응 RLGR 인코더(200)의 G/R 파라미터 적응 모듈(440) 및 방법의 동작에 대한 상세한 흐름도이다. 일반적으로, G/R 파라미터 적응 모듈(440)은 새로운 적응 규칙을 갖는 백워드-적응 기술을 사용하여 초기 G/R 파라미터를 갱신한다. 디지털 데이터의 각 값 또는 스트링이 인코딩된 후에 갱신이 수 행된다.
동작은 초기 G/R 파라미터(단계(905)) 및 적응 값(단계(910))을 입력으로서 수신함으로써 시작하며, 그 계산이 나중에 기술될 것이다. 그 후 적응 값이 0과 같은지에 대한 결정이 행해진다(단계(915)). 만약 그렇다면, 적응 규칙은 스케일된 G/R 파라미터를 제5 정수 상수만큼 감소시키는 것이다(단계(920)).
만약 적응 값이 0과 같지 않다면, 적응 값이 1과 같은지에 대한 결정이 행해진다(단계(925)). 만약 그렇다면, 적응 규칙은 스케일된 G/R 파라미터를 변경하지 않고 남겨둔다(단계(930)). 만약 그렇지 않다면, 적응 규칙은 스케일된 G/R 파라미터를 적응 값만큼 증가시키는 것이다(단계(935)).
G/R 파라미터가 갱신되면, 현재의 G/R 파라미터는 갱신된 G/R 파라미터로 대체된다(단계(940)). 이것은 스케일된 G/R 모드 파라미터를 고정 스케일링 인수로 나누고, 그 결과의 정수 부분을 유지함으로써 획득된다. 적응은, 스케일된 G/R 모드 파라미터를 정수 스텝으로 조정하기 때문에, 실제 G/R 파라미터는 마치 분수 스텝에 의해 적응된 것처럼 동작한다. 다시, 이것은 적응 속도의 보다 세밀한 제어를 허용하는 "분수 적응"의 예이다. 물론, 만약 G/R 파라미터가 변경되지 않은 채 남겨지면(단계(930)), 수행할 갱신이 존재하지 않고, 현재의 G/R 파라미터가 동일하다. 마지막으로, 갱신된 G/R 파라미터가 출력된다(단계(945)).
도 10은 적응 값 계산 모듈(1000)의 동작에 대한 상세한 흐름도이다. 도 7 및 9를 다시 참조하면, 적응 값 계산 모듈(1000)은 도 9의 흐름도에 대한 입력인 적응 값(단계(910))을 생성한다. 동작은 두 입력 - 도 7의 G/R 인코더(단계(720) 및 단계(745))에 대한 현재의 G/R 파라미터 값(단계(1005)) 및 입력 값(단계(1010)) - 을 수신함으로써 시작한다. 다음, 입력 값은 G/R 파라미터의 값만큼 자리가 오른쪽으로 쉬프트된다(단계(1020)). 결과 값이 적응 값이며, 그 후 출력된다(단계(1030)).
Ⅶ. 동작 예
본 발명에 기술된 적응 RLGR 인코더 및 방법을 보다 완전히 이해하기 위하여, 예시적인 동작 예의 동작 세부사항이 제공된다. 이 동작 예는 단지 적응 RLGR 인코더 및 방법이 구현될 수 있는 한 방식일 뿐이라는 점을 유의해야 한다.
RLGR 인코더 및 방법은 상기 언급된 미국 특허 번호 6,477,280에 개시된 PTC 엔트로피 인코더의 확장이다. 그러나, 미국 특허 번호 6,477,280의 PTC 엔트로피 인코더는 이진 데이터(전형적으로 정수 데이터의 비트-평면) 인코딩에 사용된다. 본 발명에 개시된 RLGR 인코더 및 방법은 임의의 입력 값을 갖는 정수 데이터를 인코딩할 수 있다. 즉, 본 발명에 개시된 적응 RLGR 인코더 및 방법은 임의의 알파벳 데이터를 인코딩할 수 있다. 데이터가 0의 런을 포함할 가능성이 있는 경우에 본 발명에 개시된 RLGR 인코더 및 방법이 보다 효율적이지만, 런에 나타날 가능성이 높을 수 있는 임의의 다른 값의 런을 고려하도록 상기 기술된 인코딩 동작을 수정하는 것은 쉬운 일이라는 점 또한 유의해야 한다.
본 발명에 기술된 RLGR 인코더 및 방법의 한 장점은 PTC 엔트로피 인코더와 달리 입력 데이터의 가능한 최대값을 알 필요가 없다는 점이다. 대신에, RLGR 인코더 및 방법은 얼마나 큰지에 상관없이 임의의 크기의 입력 값을 처리할 수 있다. 이것은, RLGR 인코더가 입력 데이터가 도 1에 도시된 것과 같은 라플라시안 분포를 갖는다고 가정하며, 입력 데이터에 갑자기 큰 수가 나타나도 RLGR 인코더 및 방법이 그 큰 수를 인코딩할 수 있다는 것을 의미한다. 그 큰 수를 인코딩하기 위해서는 작은 수에서보다 더 많은 비트가 사용될 것이지만, 어쨌든 그 큰 수는 인코딩될 것이다. 그러나, 더 많은 비트를 사용하는 불이익은 큰 수가 발생할 때, 그 큰 수에 대해서만 부과될 것이며, 다른 모든 값에 대해서 부과되는 것은 아니다. 이것은 하기에 언급된 새로운 모드 선택 및 적응 규칙으로 인한 것이다.
PTC 엔트로피 인코더를 이용하여 입력 데이터가 수신되어 비트 평면으로 나주어지고, 그 후 각 비트 평면이 G/R 인코더를 이용하여 인코딩된다. 본 발명에 개시된 적응 RLGR 인코더 및 방법에서, G/R 인코더는 라플라시안 데이터를 직접 처리하도록 확장된다. 이것은 적응 RLGR 인코더 및 방법이 단일-패스 인코딩을 사용한다는 이점을 가지며, 이것에 의해 PTC 엔트로피 인코더보다 상당히 신속하게 된다.
PTC 엔트로피 인코더의 입력 데이터는, 작은 수가 나타날 가능성이 더 큰 라플라시안 분포를 갖는다. 때때로 작은 수가 나타날 가능성이 훨씬 더 높아서, 비트스트림의 특정 부분에 대해서는 0의 런을 인코딩하는 것이 더 효율적이다. 그러나, PTC 엔트로피 인코더는 데이터를 고를 것이며, 최상위 비트 평면에 대해 하나의 패스를 행할 것이고, 다시 되돌아가 다음 비트 평면에서 하나의 패스를 행할 것이다. 예를 들어, 만약 데이터가 16비트인 경우, 패스는 #16 비트에서 먼저 행해지고 인코딩된다. 물론, 그 비트만이 매우 큰 수들에 대한 단편을 갖고, 그 후 계 속하여 감소하기 때문에, 데이터의 대부분이 0일 것이다. 비트 #5, 4, 3, 2, 및 1이 도달될수록, 이 비트들은 여러 0 및 1을 가지고, 이것은 그들을 인코딩하는 것이 전혀 도움이 되지 않는 지점에 도달한다는 것을 의미한다. 보통 최하위 비트는 랜덤하여 비트를 인코딩하기 위하여 그 비트가 사용되어야 하며, 즉, 각 입력 비트는 출력에 직접 복제된다. PTC 엔트로피 인코더의 문제점은 비트 평면에서 인코딩하는 것이 데이터에서 여러 패스를 요구한다는 점이다. 특히, PTC 엔트로피 인코더는 최상위 비트, 다음 비트, 그 후 그 다음 비트 등을 인코딩해야 한다. 명백하게, 이것은 상당히 많은 시간이 걸릴 것이고, 어떤 경우에는 PTC 엔트로피 인코더가 본 발명에 기술된 적응 RLGR 인코더 및 방법보다 1.5 내지 3배 느리다.
인코더 모드 선택
도 11은 적응 RLGR 인코더 및 방법에 대한 인코더 모드를 선택하는 세부사항을 도시하는 동작 예이다. 프로세스는 엘리먼트 x(n)(여기서, n=0, 1, ..., N-1)을 갖는 입력 벡터를 읽음으로써(단계(1110)) 시작한다(단계(1105)). 이 동작 예에서, 입력 값은 도 1에 도시된 라플라시안 분포와 유사한 확률 분포를 갖는다. 확률 분포는 지수의 감소율인 단일 파라미터에 의해 표현된다. 도 1에 도시된 라플라시안 감소는 합당하게 신속하게 감소된다. 실행 시 감소는 전형적으로 신속하거나 느릴 수 있다. 감소율이 신속할수록, 0과 동일한 값이 나타날 가능성이 더 높다.
적응 RLGR 인코더 및 방법은 정수의 효율적인 인코딩에 유용하다. 특히, 이것은 효율적으로 인코딩될 필요가 있는 정수들로 채워진 벡터(또는 버퍼)가 존재하 는 경우 발생한다. 전형적으로, 정수 데이터는 작은 수가 큰 수보다 훨씬 더 나타날 가능성이 클 것이다. 그리고 만약 데이터의 확률 분포의 감소율이 충분히 크면(지수가 신속하게 감소함을 의미함), 이것은 0이 나타날 가능성이 훨씬 커진다는 것을 의미한다. 이 경우에, 0의 런을 인코딩하는 것은 좋은 아이디어이다.
이 동작 예에서, 인코딩되고 있는 데이터(또는 입력 데이터)가 원본 멀티미디어 데이터가 아니기 때문에, 입력 데이터는 도 1에 도시된 이상적인 것과 유사한 확률 분포를 갖는다. 예를 들어, 오디오 파일의 경우에, 적응 RLGR 인코더 및 방법이 모든 오디오 샘플에 직접 적용되지 않는다. 유사하게, 사진 파일의 경우에, 적응 RLGR 인코더 및 방법이 모든 픽셀 값에 적용되지는 않는다. 대신, 여러 적용에서(오디오 및 이미지 코딩을 포함함), 데이터의 몇몇 모델이 존재한다. 이것은 데이터가 무엇이어야 하는지에 대해 합리적인 추측을 행하는 소정 예측기가 사용될 수 있다는 것을 의미한다. 따라서, 예측 에러는 입력 데이터일 수 있고, 그것은 인코딩되는 예측 에러이다. 예측 에러는 실제 값과 예측된 값의 차이이다. 게다가, 예측 에러는 데이터에 대한 모델이 합리적인 경우 0일 가능성이 훨씬 높다. 그러나, 훌륭한 모델을 가지고서도, 때때로 큰 값을 갖는 것이 가능하다. 이것은 픽셀 값이 백그라운드 값으로부터 포어그라운드 값으로 가는 경우와 같이 경계가 도달될 때 발생할 수 있다. 즉, 도 1에 도시된 것과 같은 확률 분포를 가지고서도, 때때로 큰 수가 나타날 수 있다. 기타 멀티미디어 코딩 어플리케이션에서, 원본 데이터 값(예를 들어, 오디오 샘플 또는 픽셀)은 변환 동작기를 통해 변환되고, 그 목표는 적은 수의 큰 값 변환 계수들(large-valued transform coefficients), 및 많은 수의 작은 값 변환 계수(small-valued transform coefficients)의 정보에 집중하는 것이다. 그 후 이들 계수는 양자화된다(가장 가까운 정수로 반올림). 따라서, 모든 양자화된 변환 계수가 벡터로서 읽혀지면, 그 벡터의 엘리먼트들은 작은 값을 포함할 가능성이 더 높고, 따라서 본 발명에 개시된 적응 RLGR 인코더 및 방법을 통한 압축에 매우 적합하다.
또한, 적응 RLGR 인코더 및 방법은 무손실이다. 무손실 압축은 입력 데이터가 더 작은 크기로 압축되고, 그 후 원본 값과 동일한 입력 데이터의 값을 정확히 복구하도록 디코딩된다는 것을 의미한다. 반대로, 손실 압축은 원본 입력 데이터의 정확히 동일한 값을 복구하지 않는다. 오디오 및 비디오 압축은 손실 압축을 사용할 수 있다. 그러나, 다수의 이러한 손실 압축 기술에서, 변환 또는 예측이 데이터에 대해 생성된다. 그 후 변환 또는 예측은 양자화되고, 이것은 그들이 가장 가까운 정수로 반올림된다는 것을 의미한다. 이러한 정수들이 획득되면, 무손실 압축이 빈번히 사용된다. 이것은 멀티미디어에 대한 대부분의 손실 코덱은 보통 양자화된 예측 또는 변환 동작기의 정수 값을 인코딩하기 위하여 무손실 인코더 부분을 갖는다는 것을 의미한다. 이러한 정수 값을 인코딩하기 위하여 적응 RLGR 인코더 및 방법이 사용될 수 있다. 보통, 이러한 정수 값들 각각이 관련 확률 분포 함수(PDF)를 갖는다. 이러한 PDF는 모델이 훌륭하다면 예측 에러가 대부분의 시간에 0에 근사해야 한다는 점에서 도 1의 확률 분포와 유사하다.
도 11을 참조하면, 다음 인코딩 파라미터 {s,S} 및 {k,K}가 초기화된다(단계(1115)). 그 후 카운터 n 및 런이 0으로 설정된다(단계(1120)). 이 동작 예에서, s는 인코딩 모드 파라미터이고, S는 스케일된 인코딩 모드 파라미터이며, k는 G/R 파라미터이고, K는 스케일된 G/R 파라미터이다. 일반적으로, s는 인코딩 모드 및 런-길이 인코더가 어떻게 사용되는지를 제어하고, k는 G/R 인코더를 제어한다. 파라미터 s=S/L이며, 여기서 L은 스케일링 파라미터이다. 이 동작 예에서, L은 16과 같고, 2의 멱수이다. 이것은 나눗셈이 단지 쉬프트를 행함으로써 수행되도록 한다.
적응 RLGR 인코더 및 방법은 두 개의 다른 인코딩 모드를 갖는다. 제1 인코딩 모드는 어떠한 런-길이 인코딩도 수행하지 않고서 G/R 인코딩만을 수행한다. 이 G/R 단독 모드는 데이터에 0이 나타날 가능성이 훨씬 크지 않은 경우, 그래서 0의 런이 빈번히 나타나지 않을 경우에 적용된다. 제2 인코딩 모드는 런-길이와 G/R 인코딩을 수행한다. 이 RLGR 인코딩 모드는, 0의 런을 인코딩하면 비트를 절약할 수 있을 만큼 0의 런이 입력 데이터에 나타날 가능성이 훨씬 큰 경우에 사용된다. 따라서, 두 개의 다른 인코딩 모드가 존재하고, 적응 RLGR 인코더 빛 방법은 인코딩 모드 파라미터 s의 값에 기초하여 인코딩 모드 각각 사이에서 선택 및 스위칭한다.
s가 0과 같은지에 대한 결정이 행해진다(단계(1125)). 만약 그렇다면, 인코딩 모드는 G/R 단독 모드이다. 이 경우에, 적응 G/R 인코더를 사용하여 입력 데이터 x(n)이 인코딩된다(단계(1130)). 만약 s가 0과 같지 않다면, 인코딩 모드는 RLGR 모드이다. 이 경우에, 입력 데이터 x(n)은 적응 런-길이 인코더 및 적응 G/R 인코더 둘 모두를 사용하여 인코딩된다(단계(1135)). 다음, n이 n+1에 의해 대체 되고(단계(1140)), n이 N과 같은지에 대한 결정이 행해진다(단계(1145)). 만약 같지 않다면, 프로세스는 새로운 x(n)을 가지고 다시 시작한다(지점(1150)). 그렇지 않으면, 출력 비트스트림이 작성되고(단계(1155)), 주어진 입력 데이터에 대해 프로세스가 완료된다(단계(1160)).
인코딩 규칙
적응 RLGR 인코더 및 방법은 인코딩 모드 파라미터 s 및 G/R 파라미터 k에 기초하는 새로운 인코딩 규칙을 사용한다. 표 2는 정수 값 x를 이진 비트스트림에 매핑하기 위한 적응 RLGR 인코더 및 방법에 대한 코딩 규칙을 언급한다. 표 2로부터 알 수 있는 바와 같이, 코드는 파라미터 {s,k}에 의해 제어된다. 파라미터 s는 동작의 메인 모드(G/R 단독 또는 런-길이 + G/R)를 제어하고, 파라미터 k는 G/R 코더를 제어한다.
Figure 112005050551487-PAT00007
이 동작 예에서, 매핑 값 u가 정의된다. 적응 RLGR 인코더 및 방법의 입력 값 x는 양수 또는 음수일 수 있다. 입력 값 x는 u 값에 매핑되고, 여기서 u는 오직 양수이다. 따라서, 부호를 갖는(signed) 입력 값 x가 부호를 갖지 않는(unsigned) 동등한 표현 u로 변환된다. 수학식 4는 x로부터 u로의 매핑을 언급한다. 특히, 매핑은 u값이 항상 양수이도록 0은 0으로, 1은 1로, -1은 2로, 2는 3으로, -2는 4 등으로 매핑되는 것을 보여준다. G/R 표(표 1)가 오직 음수가 아닌 값에 대한 것이기 때문에, G/R 표가 사용될 수 있도록 이것이 행해진다. 이 매핑은 적응 RLGR 인코더 및 방법이 임의의 입력 알파벳을 처리할 수 있게 한다. 즉, G/R 표가 사용되기 때문에(임의의 입력 숫자를 처리할 수 있음), 입력 알파벳이 무한일 수 있고, 적응 RLGR 인코더 및 방법이 임의의 크기의 숫자 입력을 다룰 수 있다. 적응 RLGR 인코더 및 방법은 단지 운영 시스템이 다룰 수 있는 수들의 크기에 의해서만 제한된다. 실행 시 G/R 인코딩 표 1이 메모리에 저장될 필요가 없다는 점을 유의해야 한다. 임의의 값의 u 및 인코딩 파라미터 k에 대해 코드워드가 쉽게 계산될 수 있을 만큼 충분한 구조를 표 엔트리들이 가진다는 것을 아는 것은 쉽다.
u 데이터가 주어진 경우, 표 2는 파라미터 s 및 k가 알려지는 한, 채널에 있는 코드를 언급한다. 표 2의 규칙은 인코더가 어떻게 인코딩하는지를 정밀하게 정의하고, 이것은 인코딩된 데이터를 복구(또는 디코딩)하기 위하여 디코더가 표 2의 동일한 규칙을 사용할 수 있다는 것을 의미한다.
s=0이라는 것을 의미하는 G/R 단독 모드에서, 표 2는 입력 값 x의 매핑 값 u가 표 1에 의해 예시화된 적응 G/R 인코더 및 G/R 인코딩 규칙을 사용하여 인코딩된다는 것을 언급한다. 따라서, x를 인코딩하기 위해 사용된 코드워드는 u 및 k의 값에 기초한다. G/R 파라미터 k는 하기에 상세히 논의된 바와 같이 백워드-적응 기술을 사용하여 갱신된다.
s>0을 의미하는 RLGR 모드에서, 입력 데이터는 r개의 x=0의 런으로서 보여진다. RLGR 모드에 대해 표 2를 보면, 한 경우에(두번째 행), 입력 값이 2s개의 x=0값의 런이다. 이것은 완전 런으로서 알려진다. 예로서, s=3이라 가정한다. 만약 입력 데이터가 행에서 23=8개의 0이면, 그 런은 표 2의 규칙을 사용하여 0과 동일한 단일 비트로서 인코딩된다. 즉, 8개의 0의 전체 런이 값이 0인 단일 비트에 매핑된다. 디코더가 0을 읽는다면, 그것을 2s개의 0의 스트링으로 디코딩해야 한다는 것을 디코더가 안다. 이러한 상황에서, 최대 압축이 달성된다. 본 발명에 의해 달성된 전체 압축은 이 RLGR 모드 및 G/R 모드의 평균이다.
만약 입력 데이터가 2s보다 적은 수의 0의 런을 가지면, 런은 불완전 런이다. 표 2의 세번째 행과 관련하여, 코드워드 0은 한 행에서 8개의 0이 있다는 것 또는 완전 런을 의미하기 때문에, 만약 입력 데이터가 한 행에 예를 들어 7개(또는 2s보다 적은)의 0만을 갖는다면, 코드워드는 0일 수 없다. 따라서 코드워드는 대신 1로 시작하며, 이것은 디코더에게 불완전 런이 뒤따른다는 것을 알린다. 다음, 코드워드는 불완전 런의 길이의 이진 표현을 포함한다. 이 이진 표현은 불완전 런의 길이 r을 명기하기 위해 s개의 비트를 사용한다.
예를 들어, 불완전 런이 7개의 0을 갖도록 r=7이라 가정한다. 그러면, 코드워드는 불완전 런이 뒤따른다는 것을 디코더가 알게 하기 위하여, 처음에 1로 시작한다. 이 예에서 s=3이기 때문에, 불완전 런의 길이는 0과 7 사이의 수로만 될 수 있다(0과 7 사이의 수를 표현하는 데에는 3개의 비트만이 필요하므로). 즉, r이 표현되기 위하여 s비트보다 많은 비트를 가질 수 없다. 따라서 코드워드는 111(이진 7)과 동일한 3개의 비트를 포함하도록 첨부된다. 이제 디코더는 런이 불완전 런이고 런 길이가 7개의 0이라는 것을 안다.
다음으로 불완전 런 바로 뒤에 어떤 값이 오는지를 나타내기 위하여 코드워드가 첨부된다. 불완전 런 뒤에 오는 이 값은 적응 G/R 인코더로부터의 코드워드에 의해 표현된다. 표 2에 보여진 바와 같이, 먼저 불완전 런 뒤의 값이 수학식 4를 사용함으로써 매핑된다. 그 후, {u,k}의 함수인 G/R 코드를 획득하기 위하여 적응 G/R 인코더가 사용된다. 표 2의 오른쪽 아래 블럭의 하부는 불완전 런을 인코딩하기 위해 사용되는 코드워드 전체 - 코드 = 1 + bin(r,s) + GR(u,k), 여기서 bin(r,s)는 s 비트에 의해 표현된 불완전 런 r의 길이의 이진 표현이고, GR(u,k)는 불완전 런 바로 뒤에 오는 값을 나타내는 표 1에 의해 주어진 G/R 코드임 - 를 보여준다.
분수 적응
분수 적응은 s 및 k 대신 S 및 K를 사용한다. 분수 적응은 적응의 속도를 감소시키기 위한 방식이다. 분수 적응없이 적응 RLGR 인코더 및 방법을 사용하는 것이 가능하다. 그러나, 분수 적응을 사용하지 않으면, 적응은 보통 너무 빨리 변화하고, 전형적으로 입력 데이터에 대한 최적 파라미터를 올바르게 추적하는 것에 실패한다.
이 동작 예에서, 스케일된 S 및 K 파라미터를 사용하여 s 및 k 파라미터의 적응이 수행된다. 따라서, s 및 k 대신에 S 및 K가 갱신된다. s와 S 및 k와 K 사이의 관계는 s=S/L 및 k=K/L과 같고, 여기서 L은 상기 설명된 바와 같은 스케일링 파라미터이다. 따라서, 적응이 수행될 때, S의 값이 갱신되고, s의 값을 획득하기 위하여 S가 L에 의해 나누어진다. 모든 값이 정수이고, 따라서 s=S/L에 의해 그것이 결과의 정수 부분을 의미한다는 것을 유의해야 한다. 또한, 고정 스케일링 파라미터 L이 2의 멱수와 동일한 값으로 설정되고(예를 들어, L=16), 그러면 L에 의한 나눗셈이 쉬프트 동작에 의해 효율적으로 수행될 수 있다는 점을 상기해야 한다.
적응 RLGR 인코더 및 방법이 생성되는 모든 코드에 대해 파라미터(s 및 k)의 조정을 행하기 때문에, 분수 적응이 바람직하다. 즉, 입력 값 또는 스트링이 인코딩된 후에, 적응 규칙이 실행된다. 만약 s 및 k가 정수 값을 갖는 변경을 통해 직접 적응되면, 그들은 정수이기 때문에, 행해질 수 있는 것은 일정하게 유지되는 것, 또는 적어도 1만큼 증가 또는 감소하는 것뿐이다. 그러나, 입력 데이터가 점점 커진다고 가정하면, 이것은 파라미터가 증가되어야 한다는 것을 의미한다. 만약 s가 1만큼 증가되면, 그것은 너무 클 수 있다. 예를 들어, 만약 s=3이면, 8개의 0의 런이 인코딩되고 있다. s를 1만큼 증가시키면, s는 4와 같을 것이며, 이것은 현재 16개의 0의 런이 단일 코드워드=0을 통해 인코딩되고 있다는 것을 의미한다. 8로부터 16으로의 그러한 점프는 약간 클 수 있다. 다음 스트링이 인코딩될 때, s가 너무 크다는 것을 알게 될 것이고, s를 3으로 감소시킨다. 그러나, 이것은 너무 작을 수 있고, s는 진동할 것이다.
분수 적응은 s의 분수 증가를 허용한다. 예를 들어, s는 1 대신 .5만큼 증가될 수 있다. 그러나, s는 정수 파라미터이기 때문에, 이것은 허용되지 않는다. 따라서, 분수 적응은 S에서 정수 증가를 수행하고, S를 L로 나눔으로써 s의 분수 증가를 제공한다. 예를 들어, L=16, s=3이라고 가정하면, 이것은 S=48을 의미한다. 입력 데이터가 훨씬 작아져서, S가 증가되어야 한다고 가정한다. 다음에 S가 48로부터 52로 증가되고, 이것을 16으로 나누면, s는 여전히 3이지만, S는 52이다. 만약 또다른 작은 입력 데이터가 오면, S는 52로부터 64로 증가될 수 있고, S=64이면 s=4이다. 따라서, 더 작은 입력 데이터가 왔다고 해서 곧바로 s를 4로 점프시키는 것이 아니라, s=3으로부터 s=4로 가기 위해서는 입력 데이터의 값의 감소를 두 번 보아야 한다. 이것은 파라미터 s 및 k가 진동하지 않을 것을 보장한다.
분수 적응을 사용하는 대신에, 데이터에서 감소 또는 증가가 존재하면, 파라미터를 증가 또는 감소하기 전에 특정 수의 인코딩 사이클을 지나도록 플래그를 정의하는 것이 가능하다. 인코딩 사이클의 수를 추적하는 새로운 파라미터가 정의될 수 있다. 즉, 파라미터가 변경되기 전에 조건(입력 데이터가 증가하거나 감소하는 조건)이 얼마나 많이 발생해야 하는지를 파라미터가 추적할 것이다. 그러나, 이 기술을 시험해 보았지만, 분수 적응이 보다 나은 결과를 제공했다는 점을 유의해야 한다.
인코딩 모드 파라미터(s) 적응
인코딩 모드 파라미터 s는 각 입력 값 또는 스트링이 인코딩된 후에 적응된다. 분수 적응이 사용될 때, s를 직접 적응시키는 대신 분수 인코딩 모드 파라미터 S가 실제로 적응된다. 표 3은 인코딩 모드 파라미터 s에 대한 적응 규칙을 언급한다. 적응 후, s의 값은 s=S/L로 설정되며, 여기서 L은 스케일링 파라미터이다. 이 동작 예에서, 우향 쉬프트에 의해 나눗셈이 구현되도록, L은 2의 멱수와 같다. 이 동작 예에서, L=16이다.
Figure 112005050551487-PAT00008
표 3의 상부에, 인코더가 G/R 단독 모드에 있을 때의 s 적응에 대한 규칙이 제공된다. 만약 인코딩될 심볼 x의 절대값이 0과 같으면, 파라미터 s는 A1이라 불리는 제1 정수 상수만큼 증가된다. 좌측을 가리키는 화살표(<-)는 S가 S+A1에 의해 대체된다는 것을 의미한다. 만약 x의 절대값이 0보다 크면, 파라미터 s는 B1이라 불리는 제2 정수 상수만큼 감소된다. 정수 상수 A1 및 B1은 s가 얼마나 많이 위로 또는 아래로 조정되어야 하는지를 말해주는 증가량 및 감소량이다.
표 3의 하부에, 인코더가 RLGR 모드에 있을 때의 s의 적응에 대한 규칙이 제공된다. 만약 런이 2s개의 x=0 값을 포함함을 의미하는 완전 런이면, 파라미터 s는 제3 정수 상수 A2만큼 증가된다. 그러나, 만약 런이 2s보다 적은 수의 0을 포함하고, 0이 아닌 x 값이 뒤따르는 부분적 런(partial run)이면, 파라미터 s는 제4 정수 상수 B2만큼 감소된다. 이러한 적응 규칙을 사용하여, 파라미터 s(또는 분수 적응이 사용되는 경우에는, S)가 각 입력 값 또는 스트링이 인코딩된 후에 갱신된다.
표 3에 포함된 적응 규칙을 사용함으로써, 입력 데이터에 대한 확률 모델이 암시적으로 측정되고 있다. 사실상, 확률을 먼저 측정하고, 그 후 파라미터를 적응하려 하는 대신, 파라미터가 직접 변경되고 있다. 이 동작 예에서, L=16, A1=3, B1=3, A2=4, B2=6 및 B3=2 값들이 훌륭한 결과를 달성하는 것으로 알려지고 있다. 만약 A1, B1, A2 및 B2 중 적합한 값이 사용되면, 적응 RLGR 인코더 및 방법이 실제로 종래기술보다 신속하게 입력 데이터의 통계에 있어서의 변화를 추적할 것이라는 점이 관찰된다. 이것은, 종래기술이 전체 통계 모델을 먼저 측정하고, 그 후 G/R 파라미터와 같은 파라미터를 조정하기 때문이다. 종래기술은 합리적인 확률 추정을 계산하기 위하여 상당한 양의 데이터가 필요하기 때문에 이렇게 행한다. 가용한 유일한 데이터는 현재 디코딩된 값 및 전에 디코딩된 값이다. 이것은 확률 추정이 정밀해지기 위해서는, 확률 추정이 행해질 수 있고 G/R 파라미터가 발견될 수 있기 전에, 상당한 양의 데이터가 사용되어야 한다는 것을 의미한다. 이것은 코딩 프로세스에 지연이 있을 것이라는 것을 의미한다. 예를 들어, 만약 오디오 파일이 인코딩되고 있다면, 입력 데이터에서의 임의의 변경을 감지하는 데에 지연이 존재한다. 이것은 G/R 파라미터가 한 주기의 시간 동안 입력 데이터와 매칭하지 않는다는 것을 의미한다. 즉, 표 3(s 파라미터에 대해) 및 하기의 표 4(k 파라미터에 대해)에 언급된 적응 규칙이 종래기술의 방법보다 훨씬 신속하고, 입력 데이터의 통계에 훨씬 신속하게 적응한다. 사실상, 이것, 즉, 입력 데이터의 통계에 대한 신속한 적응은 종래기술에 대한 커다란 이점이다.
G/R 단독 모드
도 12는 G/R 단독 모드 및 그에 수반하는 인코딩 모드 파라미터 s 적응의 인코딩 세부사항을 도시하는 동작 예이다. 프로세스는 입력 벡터 x(n)을 읽음(단계(1210))으로써 시작한다(단계(1205)). G/R 단독 모드의 두 메인 프로세스는 심볼 인코딩(단계(1215)) 및 인코딩 모드 파라미터 적응(단계(1220))이다. 심볼 인코딩 프로세스는 G/R 단독 모드에 대해 표 2에 보여진 바와 같이 매핑 값 u를 정의함(단계(1225))으로써 시작한다. 다음, 입력 값이 적응 G/R 인코더를 사용하여 인코딩된다(단계(1230)). 도 14에 도시된 바와 같이, 적응 G/R 인코더는 G/R 파라미터 k 적응을 사용한다는 점을 유의해야 한다. 심볼 인코딩 프로세스는 G/R 코드를 출력 인코딩 비트스트림에 첨부함(단계(1235))으로써 종료한다.
인코딩 모드 파라미터 적응 프로세스는 u의 값이 0과 같은지를 결정함(단계(1240))으로써 시작한다. 만약 같지 않다면, S는 제1 정수 상수 A1만큼 증가된 S에 의해 갱신 및 대체된다(단계(1245)). 만약 u가 0과 같다면, S는 제2 정수 상수 B1만큼 감소된 S에 의해 갱신 및 대체된다(단계(1250)). 마지막으로, s는 L에 의해 나누어진 S와 같게 설정되고(단계(1255)), 프로세스는 종료된다(단계(1260)).
RLGR 모드
도 13은 RLGR 모드 및 동반하는 인코딩 모드 파라미터 s 적응의 인코딩 세부사항을 도시하는 동작 예이다. 프로세스는 입력 벡터 x(n)을 읽음(단계(1310))으로써 시작한다(단계(1305)). 다시 한번 언급하면, RLGR 모드의 두 메인 프로세스는 심볼 인코딩(단계(1315)) 및 인코딩 모드 파라미터 적응(단계(1320))이다. 그러나, 이번에는, 심볼 인코딩 프로세스는 입력 값 x(n)을 인코딩하기 위하여 적응 런-길이 인코더 및 적응 G/R 인코더를 사용한다.
심볼 인코딩 프로세스는 x의 값이 0과 같은지를 결정함으로써 시작한다(단계(1325)). 만약 그렇다면, run은 run+1로 대체된다(단계(1330)). 다음으로, run=2s인지에 대한 결정이 행해진다(단계(1335)). 즉, 런이 완전 런인지 불완전 런인지가 결정된다. 만약 런이 불완전 런이면, 프로세스는 종료된다(지점(1340)). 만약 런이 완전 런이면, bit=0이 비트스트림에 첨부된다(단계(1345)). 그 후, run의 값이 0과 같도록 설정된다(단계(1350)).
만약 x의 값이 0과 같지 않으면(단계(1325)), bit=1이 비트스트림에 첨부된다(단계(1355)). 다음, run의 s-비트 이진 값(또는 s 비트에 의해 표현된 불완전 런의 길이)이 비트스트림에 첨부된다(단계(1360)). 그 후, 불완전 런 이후의 값이 적응 G/R 인코더를 사용하여 인코딩된다. 특히, 매핑 값 u가 정의되고(단계(1365)), 적응 G/R 인코더를 사용하여 값이 인코딩되며, G/R이 비트스트림에 첨부된다(단계(1370)). 다시 한번 언급하면, 도 14에 도시된 바와 같이 적응 G/R 인코더가 G/R 파라미터 k 적응을 사용한다는 점이 유의되어야 한다. run을 0으로 설정함으로써 심볼 인코딩 프로세스가 종료된다(단계(1380)).
x의 값이 0과 같은 경우(단계(1325)), 인코딩 모드 파라미터 적응 프로세스는 제3 정수 상수 A2만큼 증가된 S로 S를 갱신 및 대체한다(단계(1385)). x의 값이 0과 같지 않은 경우(단계(1325)), 제4 정수 상수 B2만큼 감소된 S에 의해 S가 갱신 및 대체된다(단계(1390)). 마지막으로, 프로세스는 L로 나누어진 S와 같게 s를 설정하고(단계(1395)), 프로세스가 종료한다(단계(1398)). 이전에 언급된 바와 같이, L의 값이 2의 멱수로서 선택된 경우, L에 의한 나눗셈은 쉬프트 동작에 의해 구현될 수 있다.
G/R 파라미터(k) 적응
각 입력 값 또는 스트링이 인코딩된 후에 G/R 파라미터 k가 적응된다. 분수 적응이 사용되는 경우, k를 직접 적응시키는 대신, 스케일된 G/R 파라미터 K가 실제로 적응된다. 표 4는 G/R 파라미터 k에 대한 적응 규칙을 언급한다. 값 u를 인코딩한 후, u가 오른쪽으로 k 위치만큼 쉬프트된다는 것을 의미하는 p=u>>k의 적응 값에 의해 적응이 제어된다. 적응 후에, k의 값은 k=K/L으로 설정되며, L은 상수이다. 이 동작 예에서, L=16이다.
Figure 112005050551487-PAT00009
표 1로부터의 G/R 코드는 파라미터 k에 의존한다. 예를 들어, 만약 불완전 런 이후의 값이 13이면, 13에 대한 GR 코드는 "1111111111110"(k=0에 대해)이고, k=1이면, "11111101"이다. k가 클수록, 13을 표현하는 수는 더 작아질 것이다. 그리고 k가 작을수록, 13을 표현하는 수는 더 커질 것이다. 따라서, 파라미터 k가 알려져야 한다. 이것은 만약 s 및 k에 대해 적합한 값을 선택하면, 적응 RLGR 인코더 및 방법은 잘 동작할 수 있다는 것을 의미한다. 그러나, 표 1에 나타난 바와 같이, 큰 값의 k를 사용하면 작은 값의 입력 데이터에 대한 스트링이 더 길어질 것이기 때문에, 큰 값의 k를 사용하는 것이 항상 유리한 것은 아니다. 즉, k의 값에 대한 훌륭한 선택은 입력 데이터에 의존한다. 만약 값이 13이면, 큰 값의 k를 사용하는 것이 좋은 아이디어이다. 그러나, 불완전 런 이후의 값이 "1"이라고 가정한다. 그러면, 작은 값의 k가 바람직하다. 따라서, 불완전 런 이후의 작은 값에 대해서는 작은 k를 사용하는 것이 더 좋고, 큰 값에 대해서는 큰 k를 사용하는 것이 더 좋다. 따라서, k의 선택은 값의 확률에 관련된다. 종래기술에서, 이러한 영향에 대한 이론적 작업의 집합이 존재하는데, 입력 데이터의 확률이 알려지며(예를 들어, 입력 데이터가 감소를 제어하는 단일 파라미터가 존재하는 라플라시안인 경우), 그 감소 파라미터로부터 사용될 파라미터 k가 계산될 수 있는 잘 알려진 공식이 존재한다. 이것은 평균적으로 가능한 한 적은 비트를 사용하기 위한 매핑을 제공한다.
따라서, k 파라미터가 적응적일 것은 중요하다. 그러한 방식으로, 만약 입력 데이터에 큰 값이 다가오고 있다면, 큰 값에 대해 k가 클수록 좋기 때문에, k는 증가되어야 한다. 반면, 만약 작은 값이 다가오고 있다면, k는 감소되어야 한다. 직관적으로, 큰 값에 대하여 k가 증가되어야 하고, 작은 값에 대하여 k가 감소되어야 한다는 것을 알 수 있다. 그 후, k가 충분히 작은 페이스로 변화되는 한(분수 적응을 사용하는 경우와 같이), 입력 데이터에 대한 최적 파라미터는 항상 올바르게 추적될 것이다.
표 4에 보여진 k에 대한 적응 규칙은 매우 새롭다. 적응 RLGR 인코더 및 방법에서, 0의 불완전 런 이후에 임의의 값이 올 수 있고, 따라서 이 값이 인코딩되어야 한다. 인코딩은 적응 G/R 인코더 및 G/R 파라미터 k를 사용하여 행해진다. 표 4를 참조하면, 입력 데이터는 x이다. 입력 데이터 x는 임의의 정수일 수 있고, 작은 x가 더욱 가능성이 높다(양수일 수도 있고, 음수일 수도 있음). 그러나, G/R 인코딩은 오직 양수에 대한 것이다. x를 u에 매핑하기 위하여 x의 간단한 매핑이 사용된다(수학식 4 참조). k의 적응이 적응 값 p에 의해 제어되며, p는 오른쪽으로 k 자리만큼 쉬프트된 u로서 정의된다. 따라서, 적응 값 p는 u의 스케일 다운된 버전이다. 또는, 등가적으로, p 파라미터는 u/2k에 근사화된 정수이다. 오른쪽으로 k 자리만큼 쉬프트하는 것은 그 수를 2k로 나누는 것과 등가이다. 예를 들어, 만약 수가 오른쪽으로 5비트만큼 쉬프트되면, 이것은 그 수를 32(또는 25)로 나누는 것과 동일하다. 나머지는 버려지고, 단지 몫만이 사용된다.
표 4를 참조하면, 만약 적응 값 p가 0과 같으면, K는 제5 정수 상수 B3만큼 감소된 K에 의해 갱신 및 대체된다. 만약 적응 값 p가 1과 같으면, K는 변경되지 않는다. 만약 적응 파라미터 p가 1보다 크면, K는 적응 값 p만큼 감소된 K에 의해 갱신 및 대체된다.
만약 p의 적응 값이 1과 같으면, 그것은 u의 값이 2k에 가깝다는 것을 의미하고, 그것들은 파라미터 k가 올바른 종류의 값들이다. 따라서, 표 4에 보여진 바와 같이, 변화가 없다. 만약 적응 값 p의 값이 0이면, 그것은 입력 값이 2k보다 작다는 것을 의미한다. 이것은 k를 감소시키기 시작할 때라는 것을 의미한다(입력 값이 2k보다 작기 때문). 입력 값이 매우 클 가능성이 높지 않기 때문에, 적응 값 p가 1보다 큰 경우는 훨씬 더 가능성이 적다. 그러나 만약 수가 크고 p>1이면, k 파라미터를 증가시키기 시작할 때이다.
적응 G/R 인코더
도 14는 G/R 파라미터 k 적응 규칙을 포함하여, 적응 G/R 인코딩 모듈의 인코딩 세부사항을 도시하는 동작 예이다. k 적응이 G/R 단독 모드 및 RLGR 모드 둘 모두에서 사용되지만, 도면을 복잡하게 함을 방지하기 위하여 도 12 및 13에는 도시되지 않는다는 점을 유의해야 한다. 프로세스는 입력 값 u를 읽음(단계(1410))으로써 시작한다(단계(1405)). 적응 G/R 모드의 두 주요 프로세스는 G/R 인코딩(단계(1415) 및 G/R 파라미터 적응(단계(1420))이다.
G/R 인코딩 프로세스는 적응 값 p 및 v를 계산함으로써 시작한다(단계(1425)). 비트스트림은 1과 동일한 p 비트로 첨부된다(단계(1430)). 그 후 v의 k-비트 이진 값이 비트스트림에 첨부된다(단계(1435)). 이 동작들은 표 1에 정의된 바와 같은 G/R 인코더를 포함한다.
G/R 파라미터 적응 프로세스는 적응 값 p가 1과 같은지를 결정하는 단계를 포함한다(단계(1440)). 만약 그렇다면, 적응 값 p는 변경되지 않고 남겨진다(지점(1445)). 그렇지 않으면, 적응 값 p가 0과 같은지에 대한 또다른 결정이 행해진다(단계(1450)). 만약 그렇지 않다면, K는 제5 정수 상수 B3만큼 감소된 K에 의해 갱신 및 대체된다(단계(1455)). 그렇지 않으면, K는 적응 값 p만큼 증가된 K에 의해 갱신 및 대체된다(단계(1460)). 마지막으로, 프로세스는 L로 나누어진 K와 동일하게 k를 설정하고(단계(1465)), 프로세스는 종료한다(단계(1470)).
결과
이 동작 예의 RLGR 인코더 및 방법은 이미지, 오디오 및 지도 데이터 압축을 위한 어플리케이션에서 구현되어 왔다. 이러한 어플리케이션들에서 RLGR 인코더 및 방법 사용의 결과는 가장 정교한 엔트로피 코더에 필적하는 압축률이지만, 구현은 더 단순하다.
특히, 정수 데이터에 대한 기존의 엔트로피 인코더에 관하여, RLGR 인코더 및 방법은 도 1에 있는 것과 같이 소스 심볼 확률 분포의 거대한 클래스에 대하여 이론상 최대(소스 엔트로피에 의해 알려짐)에 가까운 압축 비율을 달성한다. 예로서, 잘 알려진 G/R 및 허프만 인코더는 심볼 당 1비트 또는 더 높은 비율의 소스 엔트로피에 대해서만 효율적이다.
Ⅷ. 디코딩
적응 RLGR 코덱 및 방법은 또한 상기의 인코더 설명에 기초하여 정밀하게 구현될 수 있는 디코더를 포함한다. 도 2b를 참조하면, 컴퓨팅 장치(250)는 단지 RLGR 디코더(240)를 구현할 수 있다. 적응 RLGR 디코더(240) 및 방법은 인코딩된 비트스트림으로부터 코드워드를 수신한다(단계(230)). 다음, 적응 RLGR 디코더(240)는 G/R 단독 모드 또는 RLGR 모드에서 그것들에 대응하는 역 규칙을 적용함으로써 코드워드를 디코딩한다. 다음, 인코딩 모드 및 G/R 파라미터가 인코더에 대한 것들과 정확하게 동일한 규칙(상기 기술됨)을 사용하여 적응된다. 마지막으로, 디코딩된(재구성된) 정수 데이터가 출력된다(단계(260)).
인코딩 규칙이 고유하게 디코딩가능하고, 디코더에 대한 적응 규칙이 인코더의 것들과 동일하기 때문에, 인코딩 규칙 및 적응 규칙의 이전 설명이 디코더의 동작 또한 정확하게 설명한다.
본 발명의 전술한 설명은 예시 및 설명을 위하여 제공된다. 본 발명을 철저하게 규명하거나 본 발명을 개시된 정확한 형태로 제한하기 위한 것이 아니다. 상기 교시의 관점에서 여러 수정 및 변형이 가능하다. 본 발명의 범위는 본 발명의 상세한 설명에 의해서가 아니라 오히려 첨부된 특허청구범위에 의해 제한되도록 의도된다.
0의 런들을 인코딩하기 위한 런-길이 인코딩과 0의 런 이후의 숫자들을 인코딩하기 위한 G/R 인코딩 사이를 스위칭함으로써 정수 데이터의 효율적인 압축을 제공하는 무손실 압축 인코더 및 방법이 제공된다.

Claims (20)

  1. 디지털 데이터를 인코딩하기 위한 방법으로서,
    제1 인코딩 모드와 제2 인코딩 모드 중에서 선택하여, 상기 디지털 데이터를 인코딩된 비트스트림으로 인코딩하는 단계 - 상기 제1 모드는 런-길이 인코더(Run-Length encoder)가 아닌 제1 유형의 엔트로피 인코더를 사용하고, 상기 제2 모드는 상기 런-길이 인코더와 결합된 제1 유형의 엔트로피 인코더를 사용함 - , 및
    백워드-적응 기술을 사용하여 상기 인코딩된 비트스트림에 기초하여 상기 제1 모드 및 상기 제2 모드의 인코더들을 적응시키는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 유형의 엔트로피 인코더는 상기 제2 모드에서 상기 런-길이 인코더와 결합하여 RLGR(Run-Length Golomb/Rice) 인코더를 생성하는 G/R 인코더인 방법.
  3. 제2항에 있어서,
    상기 제1 모드와 상기 제2 모드 중에서 선택하기 위하여 인코딩 모드 파라미터를 사용하는 단계를 더 포함하는 방법.
  4. 제2항에 있어서,
    G/R 파라미터(Golomb/Rice parameter)를 갱신하는 단계를 더 포함하고,
    상기 갱신하는 단계는,
    상기 G/R 파라미터의 용어로 적응 값을 정의하는 단계,
    상기 적응 값이 0과 같으면, 상기 G/R 파라미터를 제3 정수 상수만큼 감소시키는 단계,
    상기 적응 값이 1과 같으면, 상기 G/R 파라미터를 변경하지 않고 그대로 두는 단계, 및
    상기 적응 값이 1보다 크면, 상기 G/R 파라미터를 상기 적응 값만큼 증가시키는 단계
    를 포함하는 방법.
  5. 제2항에 있어서,
    생성되는 모든 코드워드 이후에 상기 제1 모드 및 상기 제2 모드의 인코더들을 적응시키는 단계를 더 포함하는 방법.
  6. 컴퓨터 시스템 상에서 수행되는 경우, 상기 컴퓨터 시스템이 제1항의 방법을 수행하도록 하는 컴퓨터-실행가능 명령어들을 포함하는 컴퓨터-판독가능 매체.
  7. 정수 값을 갖는 디지털 정수 데이터를 인코딩하기 위한 방법으로서,
    상기 디지털 정수 데이터의 입력 스트링 x를 수신하는 단계,
    (a) 적응 G/R 인코더만을 사용하는 제1 모드를 사용하는 것, (b) 적응 런-길이 인코더 및 상기 적응 G/R 인코더를 사용하는 제2 모드를 사용하는 것 중 하나를 선택하기 위하여 인코딩 모드 파라미터 s를 사용하는 단계,
    스케일된 인코딩 모드 파라미터를 S=s*L로서 정의하는 단계 - 여기서, L은 스케일링 파라미터임 - ,
    상기 제1 및 상기 제2 모드의 적응 G/R 인코더에서 스케일된 G/R 파라미터 K를 사용하는 단계, 및
    백워드-적응 기술을 사용하여 상기 스케일된 인코딩 모드 파라미터 S 및 상기 스케일된 G/R 파라미터 K를 갱신하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서,
    s=0이면, 상기 제1 모드에서 상기 입력 스트링을 인코딩하는 단계,
    |x|=0이면, 제1 정수 상수 A1만큼 S를 증가시키는 단계, 및
    |x|>0이면, 제2 정수 상수 B1만큼 S를 감소시키는 단계
    를 더 포함하는 방법.
  9. 제7항에 있어서,
    s>0이면, 상기 제2 모드에서 상기 입력 스트링을 인코딩하는 단계,
    x가 r=2s인 0의 런 r을 포함한다면, 제3 정수 상수 A2만큼 S를 증가시키는 단계, 및
    만약 x가 r<2s인 0의 런 r을 포함한다면, 제4 정수 상수 B2만큼 S를 감소시키는 단계
    를 더 포함하는 방법.
  10. 제9항에 있어서,
    적응 값 p를 정의하는 단계,
    p=0이면, 제5 정수 상수 B3만큼 K를 감소시키는 단계,
    p=1이면, K를 변경하지 않고 그대로 두는 단계, 및
    p>1이면, p만큼 K를 증가시키는 단계
    를 더 포함하는 방법.
  11. 인코딩된 비트스트림을 디코딩하기 위한 방법으로서,
    상기 인코딩된 비트스트림으로부터 코드워드를 수신하는 단계,
    제1 디코딩 모드 및 제2 디코딩 모드 중에서 선택하여, 상기 코드워드를 디코딩하는 단계 - 상기 제1 모드는 런-길이 디코더가 아닌 제1 유형의 엔트로피 디코더를 사용하며, 상기 제2 모드는 상기 런-길이 디코더와 결합된 제1 유형의 엔트로피 디코더를 사용함 - ,
    백워드-적응 기술을 사용하여 상기 제1 모드와 상기 제2 모드의 디코더들을 적응시키는 단계, 및
    상기 디코딩된 코드워드로부터 디지털 데이터의 값을 재구성하는 단계
    를 포함하는 방법.
  12. 백워드-적응 기술을 갖는 적응 RLGR(Run-Length Golomb/Rice) 인코더를 사용하여 디지털 정수 데이터를 인코딩함으로써 획득된 인코딩된 비트스트림을 디코딩하기 위한 컴퓨터-구현 프로세스로서,
    상기 인코딩된 디지털 정수 데이터를 표현하는 상기 인코딩된 비트스트림으로부터 코드워드들을 수신하는 단계,
    G/R 디코딩만을 수행하는 제1 디코더 모드 및 런-길이 디코딩과 G/R 디코딩을 수행하는 제2 디코더 모드 사이에 스위칭하는 단계,
    상기 제1 디코더 모드와 상기 제2 디코더 모드 중 어느 것이 사용되는지를 제어하기 위하여 인코딩 모드 파라미터 s를 사용하는 단계, 및
    상기 백워드-적응 기술을 사용하여 각 코드워드가 디코딩된 후에 상기 인코딩 모드 파라미터 s를 갱신하는 단계
    를 포함하는 컴퓨터-구현 프로세스.
  13. 제12항에 있어서,
    상기 제1 및 상기 제2 디코딩 모드 둘다의 G/R 디코딩을 제어하기 위하여 G/R 파라미터 k를 정의하는 단계, 및
    상기 백워드-적응 기술을 사용하여 각 코드워드가 디코딩된 후에 상기 G/R 파라미터 k를 갱신하는 단계
    를 더 포함하는 컴퓨터-구현 프로세스.
  14. 제13항에 있어서,
    s=0이면, 상기 제1 디코딩 모드로 스위칭하는 단계를 더 포함하는 컴퓨터-구현 프로세스.
  15. 제13항에 있어서,
    s>0이면, 상기 제2 디코딩 모드로 스위칭하는 단계를 더 포함하는 컴퓨터-구현 프로세스.
  16. 제13항에 있어서,
    스케일링 파라미터 L을 정의하는 단계,
    스케일된 인코딩 모드 파라미터를 S=s*L로서 정의하는 단계,
    스케일된 G/R 파라미터를 K=k*L로서 정의하는 단계, 및
    상기 백워드-적응 기술 및 적응 규칙을 사용하여, 각 코드워드가 디코딩된 후에, s 및 k 대신에 상기 스케일된 인코딩 모드 파라미터 S 및 상기 스케일된 G/R 파라미터 K를 갱신하는 단계
    를 더 포함하는 컴퓨터-구현 프로세스.
  17. 정수 값을 포함하는 인코딩된 디지털 정수 데이터를 표현하는 코드워드를 갖는 인코딩된 비트스트림을 디코딩하기 위한 적응 RLGR(Run-Length and Golomb/Rice) 디코더로서,
    상기 인코딩된 비트스트림의 코드워드들을 디코딩하기 위한 적응 G/R 디코더,
    상기 코드워드들을 디코딩하기 위한 적응 런-길이 디코더,
    인코딩 모드 파라미터 s를 사용하여, 상기 적응 G/R 디코더만을 포함하는 제1 디코딩 모드와, 상기 적응 런-길이 디코더 및 상기 적응 G/R 디코더 둘다를 포함하는 제2 디코딩 모드 사이에서 스위칭하기 위한 수단, 및
    적응 규칙을 갖는 백워드 적응 기술을 사용하여 상기 인코딩 모드 파라미터 s를 갱신하기 위한 수단
    을 포함하는 적응 RLGR 디코더.
  18. 제17항에 있어서,
    상기 제1 및 제2 디코딩 모드 둘다의 상기 적응 G/R 디코더를 사용하여 상기 코드워드들을 디코딩하기 위한 G/R 파라미터 k,
    상기 적응 규칙을 갖는 백워드 적응 기술을 사용하여 상기 G/R 파라미터 k를 갱신하기 위한 수단
    을 더 포함하는 적응 RLGR 디코더.
  19. 제18항에 있어서, 상기 적응 규칙은,
    s=0이면, 제1 정수 상수 A1만큼 s를 증가시키고,
    s>0이면, 제2 정수 상수 B1만큼 s를 감소시키고,
    0의 런 r이 r=2s인 완전 런이면, 제3 정수 상수 A2만큼 s를 증가시키며,
    0의 런 r이 r<2s인 불완전 런이면, 제4 정수 상수 B2만큼 s를 감소시킴으로써,
    상기 인코딩 모드 파라미터 s를 갱신하기 위한 수단, 및
    적응 값 p를 정의하고,
    p=0이면, 제5 정수 상수만큼 k를 감소시키고,
    p=1이면, k를 동일하게 유지하며,
    p>1이면, p만큼 k를 증가시킴으로써,
    상기 G/R 파라미터 k를 갱신하기 위한 수단
    을 더 포함하는 적응 RLGR 디코더.
  20. 제19항에 있어서,
    스케일링 파라미터 L을 정의하고,
    S=s*L을 정의하며,
    K=k*L을 정의함으로써,
    스케일된 인코딩 모드 파라미터 S 및 스케일된 G/R 파라미터 K를 정의하기 위한 수단, 및
    상기 각각의 적응 규칙을 사용하여, s 및 k 대신에, S 및 K를 갱신하기 위한 수단
    을 더 포함하는 적응 RLGR 디코더.
KR1020050084137A 2004-10-29 2005-09-09 정수 데이터의 무손실 적응 인코딩 및 디코딩을 위한시스템 및 방법 KR20060051157A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/976,623 2004-10-29
US10/978,157 US6987468B1 (en) 2004-10-29 2004-10-29 Lossless adaptive encoding and decoding of integer data
US10/978,157 2004-10-29
US10/976,623 US7015837B1 (en) 2004-10-29 2004-10-29 Lossless adaptive encoding and decoding of integer data

Publications (1)

Publication Number Publication Date
KR20060051157A true KR20060051157A (ko) 2006-05-19

Family

ID=35929810

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050084137A KR20060051157A (ko) 2004-10-29 2005-09-09 정수 데이터의 무손실 적응 인코딩 및 디코딩을 위한시스템 및 방법

Country Status (3)

Country Link
EP (1) EP1653746A3 (ko)
JP (1) JP2006129467A (ko)
KR (1) KR20060051157A (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4655013B2 (ja) * 2006-09-15 2011-03-23 日本電気株式会社 符号化装置とその方法、復号装置とその方法、および符号化ならびに復号プログラム
KR100903109B1 (ko) * 2006-12-13 2009-06-16 한국전자통신연구원 오디오 신호의 무손실 부호화/복호화 장치 및 그 방법
WO2010149799A1 (es) * 2009-06-22 2010-12-29 Universidad De Barcelona Método para la calibración totalmente adaptativa de un codificador de errores de predicción
US9936200B2 (en) * 2013-04-12 2018-04-03 Qualcomm Incorporated Rice parameter update for coefficient level coding in video coding process
US10021419B2 (en) 2013-07-12 2018-07-10 Qualcomm Incorported Rice parameter initialization for coefficient level coding in video coding process
JP6512927B2 (ja) * 2015-04-28 2019-05-15 キヤノン株式会社 画像符号化装置及びその制御方法
JP6885466B2 (ja) * 2017-07-25 2021-06-16 日本電信電話株式会社 符号化装置、復号装置、符号化方法、復号方法、符号化プログラム、復号プログラム
EP3734973B1 (en) * 2019-05-02 2023-07-05 Sick IVP AB Method and encoder relating to encoding of pixel values to accomplish lossless compression of a digital image
CN116505952B (zh) * 2023-06-27 2023-09-08 厦门立林科技有限公司 红外码压缩方法、装置、智能设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3847891B2 (ja) * 1997-04-10 2006-11-22 キヤノン株式会社 符号化装置及び方法及び方法を記憶した記憶媒体
JP3839974B2 (ja) * 1998-10-06 2006-11-01 キヤノン株式会社 符号化装置
JP2000115782A (ja) * 1998-10-06 2000-04-21 Canon Inc 符号化装置及び方法及び記憶媒体
KR100304798B1 (ko) * 1999-08-11 2001-11-01 정병철 애니메이션 동영상 부호화 방법
US6735254B2 (en) * 2001-06-29 2004-05-11 Qualcomm, Inc. DCT compression using Golomb-Rice coding

Also Published As

Publication number Publication date
EP1653746A3 (en) 2006-05-10
EP1653746A2 (en) 2006-05-03
JP2006129467A (ja) 2006-05-18

Similar Documents

Publication Publication Date Title
US7126506B2 (en) Lossless adaptive encoding and decoding of integer data
US7245235B2 (en) Lossless adaptive encoding and decoding of integer data
KR20060051149A (ko) 백워드-적응 규칙을 사용하는 정수 데이터의 무손실 적응g/r 인코딩 및 디코딩을 위한 시스템 및 방법
US9299166B2 (en) Image compression method and apparatus for bandwidth saving
KR20060051157A (ko) 정수 데이터의 무손실 적응 인코딩 및 디코딩을 위한시스템 및 방법
Malvar Adaptive run-length/Golomb-Rice encoding of quantized generalized Gaussian sources with unknown statistics
US6125348A (en) Lossless data compression with low complexity
JP5736032B2 (ja) 算術符号化のための適応型2値化
US6043763A (en) Lossless data compression with low complexity
US6121904A (en) Lossless data compression with low complexity
US6028541A (en) Lossless data compression with low complexity
KR102168511B1 (ko) 산술 인코딩 또는 산술 디코딩 방법 및 장치
EP1946246A2 (en) Extended amplitude coding for clustered transform coefficients
JP2008118307A (ja) 符号化装置及びその制御方法
KR20070046852A (ko) 혼합된 그래픽 및 비디오 소스의 압축을 위한 시스템 및방법
US6118392A (en) Lossless data compression with low complexity
CN103581684A (zh) 压缩编码和解码方法及装置
CN101180886A (zh) 利用预估值的修正进行压缩和解压缩
KR20040075944A (ko) 디지털 정보신호의 데이터 압축 및 압축해제
US9088296B2 (en) Variable length coding and decoding using counters
US20220109891A1 (en) Features of range asymmetric number system encoding and decoding
KR20180031944A (ko) 비디오 디코더 및 이를 포함하는 전자 시스템
Mohamed Wireless Communication Systems: Compression and Decompression Algorithms
WO2021058655A1 (en) Arithmetic encoders and decoders, video encoders and decoders, methods for encoding or decoding symbols, and methods for encoding or decoding video content
WO2015102432A1 (en) Method and apparatus for performing an arithmetic coding for data symbols

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid