KR100840757B1 - 허프만 부호화 및 복호화 - Google Patents

허프만 부호화 및 복호화 Download PDF

Info

Publication number
KR100840757B1
KR100840757B1 KR1020067004185A KR20067004185A KR100840757B1 KR 100840757 B1 KR100840757 B1 KR 100840757B1 KR 1020067004185 A KR1020067004185 A KR 1020067004185A KR 20067004185 A KR20067004185 A KR 20067004185A KR 100840757 B1 KR100840757 B1 KR 100840757B1
Authority
KR
South Korea
Prior art keywords
data structure
value
level
tree
node
Prior art date
Application number
KR1020067004185A
Other languages
English (en)
Other versions
KR20060028750A (ko
Inventor
지운 베이
Original Assignee
노키아 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 노키아 코포레이션 filed Critical 노키아 코포레이션
Priority to KR1020067004185A priority Critical patent/KR100840757B1/ko
Publication of KR20060028750A publication Critical patent/KR20060028750A/ko
Application granted granted Critical
Publication of KR100840757B1 publication Critical patent/KR100840757B1/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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

높이가 H인 허프만 부호화 트리에 따라 부호화된 비트스트림을 복호화하는 방법은 상기 비트스트림으로부터 H 비트들의 제1 코드워드를 추출하는 단계; 상기 코드워드를 제1 시프트 값만큼 시프트함으로써 상기 코드워드를 변경하는 단계; 적어도 하나의 제1 데이터 구조를 사용하여 관련된 제2 오프셋 값 및 관련된 제2 시프트 값을 지닌 제2 데이터 구조 또는 심볼을 식별하기 위하여 상기 변경된 코드워드를 사용하는 단계; 및 제2 데이터 구조가 상기 제1 데이터 구조를 사용하여 식별되는 경우: 상기 제2 오프셋 값을 감산하고 그 결과를 상기 제2 시프트 값만큼 시프트함으로써 상기 코드워드를 변경하는 단계; 및 상기 제2 데이터 구조를 사용하여 관련된 제3 오프셋 값 및 관련된 제3 시프트 값을 지닌 제3 데이터 구조 또는 심볼을 식별하기 위하여 상기 변경된 코드워드를 사용하는 단계를 포함한다.

Description

허프만 부호화 및 복호화{Huffman coding and decoding}
본 발명의 실시예들은 허프만 부호화 및 복호화에 관한 것이다. 특히 본 발명의 실시예들은 부호화 및 복호화를 위한 개선된 메커니즘들 및 허프만 트리의 개선된 표시에 관한 것이다.
디지털 프로세싱에서, 메시지가 일련의 심볼들을 포함하는 경우, 각 개별 심볼은 개별의 이진 코드워드로서 표현될 수 있다. 허프만의 알고리즘은 메시지내의 각 심볼의 발생 빈도의 테이블을 사용하고 가장 빈번한 코드워드가 가장 짧은 길이를 가지도록 가변 길이 코드워드들을 최적화한다. 이것은 데이터 압축을 초래하고 허프만 부호화는 오디오 및 비디오 압축 부호화, 예를 들어 MPEG에서 일반적으로 사용된다.
IRE 40(1952)의 회보 1098-1101, 데이빗 에이 허프만(David A Huffman)에 의한, "최소-중복 부호들의 구성을 위한 방법"은 허프만 부호화를 소개한다.
다음 각 발생 빈도 5, 5, 6, 1, 2, 3, 16, 9, 9를 지닌 9개의 심볼들 S0, S1 ... S8이 존재하는 경우, 그들은 허프만 알고리즘을 사용하여 도 1에 도시된 이진 트리로 부호화될 수 있다.
트리(10)는 H 레벨들로 배열된 내부 노드들(Fi) 및 리프(leaf) 노드들(Si)을 포함한다. 각 리프 노드는 두번째 최저 레벨상의 단일 내부 노드로부터 종속되고 심볼을 나타낸다. 각 내부 노드는 두번째 최저 레벨상의 단일 내부 노드로부터 종속된다. 노드의 레벨(L)은 루트 노드를 레벨 0으로 설정함으로써 정의되고 다른 노드들은 그것이 종속하는 노드의 레벨보다 하나 높은 레벨을 지닌다. 최고 레벨은 상기 허프만 트리의 높이(H)이다. 상기 심볼들(즉 T의 리프들)은 S0, S1, S2 ... S8로서 좌측에서 우측으로 표시된다.
도 1에 도시된 허프만 트리는 하기의 심볼들의 부호화를 초래한다.
심볼 코드워드
S0 000
S1 001
S2 010
S3 01100
S4 01101
S5 0111
S6 10
S7 110
S8 111
그것의 가장 단순한 표시에 있어서, 높이가 H인 허프만 이진 트리는 상기 트리의 각 노드에 대해 한 워드를 사용하여 표시될 수 있다. 이러한 표시의 크기는 복호화중 탐색을 어렵게 한다.
1995년 10월, 통신에 대한 IEEE 회보, 볼륨 43, 번호 10, 2576-, 하세미안(Hashemian)에 의한 "메모리 효율적 및 고속 탐색 허프만 부호화"는 허프만 트리를 표시하는데 필요한 저장 공간을 감소시키고 상기 트리를 사용하여 복호화 속도를 증가시킨다. 희박 단일-면 성장 허프만 트리가 생성되고 상기 허프만 트리는 각각 L 레벨들 떨어져 있는, 더 작고 덜 희박한 클러스터들(부트리들(sub-trees))로 분할된다. 각 클러스터가 노드로 표시되는, 슈퍼-트리(super-tree)가 구성된다. 슈퍼 테이블은 상기 슈퍼-트리를 지정한다. 그것은 각 노드에 대해, 상기 노드와 연관된 상기 클러스터의 길이 및 상기 클러스터에 대한 룩업 테이블의 주소를 지정한다. 상기 룩업 테이블에서 네거티브 엔트리는 상기 슈퍼-테이블 배후의 기준이다. 포지티브 엔트리는 심볼이 발견되었다는 것을 나타내고 상기 엔트리의 크기는 메모리내의 심볼의 위치, 상기 코드워드 및 상기 코드워드 길이를 제공한다.
정보 처리 레터(Inform Process Lett.) 69(1999) 119-122, 첸(Chen)에 의한 "메모리-효율적 및 고속 허프만 복호화 알고리즘"에서, 가중치(weight)가 상기 노드 아래의 완전한 트리내의 리프들의 수와 동일한 리프 노드에 제공된다. 그것은 상기 트리내의 노드의 레벨에 의존한다. 모든 리프 노드에는 그것 이전에 나타나는 모든 리프들의 누적 가중치와 동일한 수 및 그 자신의 가중치가 할당된다. 코드워드에는 그것이 트리상의 노드인 것처럼 동일한 누적 가중치가 제공된다. 하나가 동일한 누적 가중치와 일치하는지를 결정하기 위하여 실제 누적 가중치들이 탐색된다. 일치하는 것이 존재하고 일치하는 노드들의 가중치들이 동일한 경우, 상기 코드워드는 상기 트리의 리프 노드(즉 심볼)이다.
정보 처리 레터(Inform Process Lett.), 81 (2002), 305-308, 조드리 등(Chowdhury et al)의 "허프만 부호들을 위한 효율적인 복호화 기법"은 메모리 사용 및 탐색 속도를 개선하기 위하여 모든 리프들을 제거함으로써 허프만 트리를 절단한다.
허프만 이진 트리의 대안적인 표시 및 이진 디지트들의 수신된 스트링을 복호화하기 위한 개선된 허프만 복호화 메커니즘을 제공하는 것이 바람직할 것이다.
본 발명의 일 실시예에 의하면, 높이가 H인 허프만 부호화 트리에 따라 부호화된 비트스트림을 복호화하는 방법에 있어서,
상기 비트스트림으로부터 H 비트들의 제1 코드워드를 추출하는 단계;
상기 코드워드를 제1 시프트 값만큼 시프트함으로써 상기 코드워드를 변경하는 단계;
적어도 하나의 제1 데이터 구조를 사용하여 관련된 제2 오프셋 값 및 관련된 제2 시프트 값을 지닌 제2 데이터 구조 또는 심볼을 식별하기 위하여 상기 변경된 코드워드를 사용하는 단계; 및
제2 데이터 구조가 상기 제1 데이터 구조를 사용하여 식별되는 경우:
상기 제2 오프셋 값을 감산하고 그 결과를 상기 제2 시프트 값만큼 시프트함으로써 상기 코드워드를 변경하는 단계; 및
상기 제2 데이터 구조를 사용하여 관련된 제3 오프셋 값 및 관련된 제3 시프트 값을 지닌 제3 데이터 구조 또는 심볼을 식별하기 위하여 상기 변경된 코드워드를 사용하는 단계를 포함하는 방법이 제공된다.
본 발명의 다른 실시예에 의하면, 높이가 H인 허프만 부호화 트리에 따라 부호화된 비트스트림을 복호화하는 방법에 있어서,
상기 비트스트림으로부터 H 비트들의 코드워드를 추출하는 단계;
상기 코드워드를 소정의 시프트 값만큼 시프트하는 단계; 및
적어도 하나의 제1 데이터 구조를 사용하여 심볼을 식별하기 위하여 상기 변경된 코드워드를 사용하는 단계를 포함하는 방법이 제공된다.
본 발명의 다른 실시예에 의하면, 높이가 H인 허프만 부호화 트리에 따라 부호화된 비트스트림을 복호화하기 위한 복호기에 있어서,
관련된 제1 오프셋 값 및 관련된 제1 시프트 값을 지닌 제1 데이터 구조 및 관련된 제2 오프셋 값 및 관련된 제2 시프트 값을 지닌 제2 데이터 구조를 적어도 포함하는 높이가 H인 허프만 부호화 트리를 나타내는 복수의 데이터 구조들을 저장하기 위한 메모리; 및
상기 비트스트림으로부터 획득된 H 비트들의 코드워드에서 현재의 오프셋 값을 감산하도록 동작가능하고, 그 결과를 상기 관련된 시프트 값만큼 시프트하도록 동작가능하며, 상기 결과를 사용하여 상기 관련된 데이터 구조를 어드레싱하도록 동작가능한 프로세서를 포함하는 복호기가 제공된다.
본 발명의 다른 실시예에 의하면, 높이가 H인 허프만 부호화 트리에 따라 부호화된 비트스트림을 복호화하는 방법에 있어서,
상기 트리의 제1 레벨에서 각 가능한 노드에 대한 값을 포함하는 제1 데이터 구조를 저장하는 단계;
상기 트리의 제2의 하위 레벨에서 제1 부트리내의 각 가능한 노드에 대한 값을 포함하는 제2 데이터 구조를 저장하는 단계;
상기 비트스트림으로부터 H 비트들의 제1 코드워드를 추출하는 단계;
상기 제1 코드워드의 값을 상기 트리의 제1 레벨에서 상기 트리내의 제1 노드 위치로 변환하는 단계;
상기 제1 데이터 구조에 액세스하여 상기 제1 노드 위치에 대응하는 값을 획득하는 단계로서, 상기 값은 상기 제2 데이터 구조를 나타내는 단계;
상기 제1 코드워드의 값을 상기 트리의 제2 레벨에서 상기 제1 부트리내의 제2 노드 위치로 변환하는 단계; 및
상기 제2 데이터 구조에 액세스하여 상기 제2 노드 위치에 대응하는 값을 획득하는 단계를 포함하는 방법이 제공된다.
본 발명의 다른 실시예에 의하면, 비트스트림으로부터 코드워드를 복호화하는 방법에 있어서,
복수의 순서화된 데이터 구조들로서 허프만 트리의 표시를 수신하는 단계로서, 상기 복수의 순서화된 데이터 구조들은 상기 트리의 식별된 제1 레벨(L1)과 관련되며 각 엔트리가 상기 식별된 제1 레벨에서 완전한 트리의 노드에 대응하는 복수의 데이터 엔트리들을 포함하는 제1 데이터 구조 및 상기 트리의 식별된 제2 레벨(L2) 및 식별된 제1 부트리와 관련되며, 각 엔트리가 상기 제2 식별된 레벨에서, 완전한 경우, 상기 제1 부트리의 노드에 대응하는 복수의 데이터 엔트리들을 포함하는 적어도 하나의 제2 데이터 구조를 포함하는 단계;
허프만 트리에서 제1 레벨(L1)에 대한 값을 획득하는 단계;
코드워드의 제1 L1 비트들에 대응하는, 완전한 경우, 상기 트리의 상기 제1 레벨(L1)에서 상기 노드를 식별하는 단계;
상기 식별된 노드가 내부 노드인 경우 추가 데이터 구조를 식별하고 그렇지 않은 경우 심볼을 식별하는, 상기 식별된 노드에 대한 데이터 엔트리를 상기 제1 데이터 구조로부터 획득하는 단계; 및
상기 식별된 노드가 내부 노드인 경우:
상기 제1 레벨(L1)보다 더 높은 레벨인, 허프만 트리에서 제2 레벨(L2)에 대한 값을 획득하는 단계;
제1 부트리를 식별하는 값을 획득하는 단계;
수신된 비트스트림의 제1 L2 비트들에 대응하는, 완전한 경우, 상기 제1 부트리의 제2 레벨(L2)에서 상기 노드를 식별하는 단계;
상기 식별된 노드가 내부 노드인 경우 추가 데이터 구조를 식별하고 그렇지 않은 경우 심볼을 식별하는, 상기 식별된 노드에 대한 데이터 엔트리를 추가 데이터 구조로부터 획득하는 단계를 포함하는 방법이 제공된다.
본 발명의 다른 실시예에 의하면, H 레벨들에 배열된 내부 노드들 및 리프(leaf) 노드들을 포함하는 허프만 부호화 트리를 나타내는 데이터로서, 각 리프 노드는 두번째 최저 레벨상의 단일 내부 노드로부터 종속되고 상기 각 리프 노드는 심볼을 나타내며 각 내부 노드는 상기 두번째 최저 레벨상의 단일 내부 노드로부터 종속되는 데이터에 있어서, 상기 데이터는,
상기 트리의 제1 특정 레벨내의 노드들 각각에 대해, 제1 내부 노드에 대한 제2 데이터 구조를 포함하여, 각 리프 노드에 대한 심볼 및 각 내부 노드에 대한 추가 데이터 구조를 식별하는 제1 데이터 구조;
상기 제1 데이터 구조에 의해 식별된 적어도 하나의 제2 데이터 구조로서, 상기 제1 내부 노드로부터 종속되고, 상기 트리의 제2 특정 레벨에 있는, 부트리내의 노드들 각각에 대해, 만일 있다면 각 리프 노드에 대한 심볼 및 내부 노드에 대한 추가 데이터 구조를 식별하는 적어도 하나의 제2 데이터 구조; 및
적어도 상기 제1 레벨, 상기 제2 레벨 및 상기 제1 내부 노드를 지정하는 데이터를 포함하는 데이터가 제공된다.
본 발명의 다른 실시예에 의하면, 허프만 이진 트리를 나타내는 방법에 있어서,
상기 트리의 식별된 제1 레벨(L1)과 연관되며 복수의 엔트리들을 포함하는 제1 데이터 구조를 생성하는 단계로서, 각 엔트리는 상기 식별된 제1 레벨에서 완전한 트리의 노드에 대응하고 상기 노드가 내부 노드인 경우 추가 데이터 구조를 식별하며 그렇지 않은 경우 심볼을 식별하는 단계; 및
상기 트리의 식별된 제2 레벨(L2)과 연관되고 식별된 제1 부트리와 연관되며 복수의 데이터 엔트리들을 포함하는 적어도 하나의 추가 데이터 구조를 생성하는 단계로서, 각 엔트리는 상기 제2 식별된 레벨(L2)에서 완전한 경우 상기 제1 부트리의 노드에 대응하고 상기 노드가 내부 노드인 경우 추가 데이터 구조를 식별하며 그렇지 않은 경우 심볼을 식별하는 단계를 포함하는 방법이 제공된다.
본 발명의 실시예들과 관련된 하나의 이점은 상기 기술이 코드워드들의 발생 확률을 이용한다는 것이다. 더 빈번히 발생하는 코드워드들은 먼저 복호화될 것이다.
본 발명의 실시예들과 관련된 다른 이점은 복호화와 관련된 낮은 처리 오버헤드인데, 각 복호화 반복에서 최대 하나의 감산, 하나의 시프트 및 하나의 비교만이 존재한다. 따라서 상기 복호화는 디지털 신호 처리기(DSP)에서 매우 효율적으로 구현될 수 있다.
본 발명의 실시예들과 관련된 다른 이점은 최대 탐색이 log2 N 미만이 되도록 설계될 수 있다는 것이다.
본 발명의 실시예들의 더 나은 이해를 위하여 그리고 본 발명의 실시예들이 실시될 수 있는 방법을 이해하기 위하여, 이제 첨부한 도면들만이 예로서 참조될 것이다.
도 1은 허프만 이진 트리를 도시한 것이다.
도 2는 부호기 및/또는 복호기로서 사용가능한 장치를 도시한 것이다.
도 3은 복호화 프로세스를 도시한 것이다.
도 4는 다른 허프만 트리를 도시한 것이다.
부호화
본 예에서, 다음의 각 발생 빈도들 5, 5, 6, 1, 2, 3, 16, 9, 9를 지닌 9개의 심볼들 S0, S1, ..., S8이 존재한다고 하자. 그들은 상기 허프만 알고리즘을 사용하여 도 1에 도시된 이진 트리로 부호화될 수 있다.
이러한 허프만 트리는 하기의 룩업 테이블들(표 2, 표 3 및 표 4)에서 하기 에 정의된 바와 같이 순서화된 데이터 구조들의 시퀀스로서 표시될 수 있다.
룩업 테이블 Offset_value Shift_value 서브-테이블
룩업 테이블 0 0 2 0
룩업 테이블 1 12 0 1
서브-테이블 0
y 0 1 2 3 4 5 6 7
symbol_locate ->S0 ->S1 ->S2 ->서브-테이블 1 ->S6 ->S6 ->S7 ->S8
서브 테이블 1
y 0 1 2 3
symbol locate ->S3 ->S4 ->S5 ->S5
상기 제1 데이터 구조(표 2)는 제1 룩업 테이블이다. 그것은 각 식별된 서브-테이블을 가지고 사용될 offset_value 및 shift_value 쌍을 식별한다. 본 예에서, 그것은 0 오프셋 및 2인 shift_value가 서브-테이블 0(표 3)을 가지고 사용되어야 하고 12인 offset_value 및 0인 shift_value가 서브-테이블 1(표 4)을 가지고 사용되어야 한다는 것을 나타낸다.
상기 제2 데이터 구조(표 3)는 룩업 테이블이다. 그것은 값 y를 사용하여 어드레싱되고 회답으로 symbol_locate에 대한 값을 제공한다. 상기 symbol_locate에 대한 값은 심볼 값을 지시하거나 다른 룩업 테이블을 지시할 수 있다. 예를 들어, 0, 1, 2, 4, 5, 6, 7과 동일한 y에 대한 값들은 각각 심볼들 S0, S1, S2, S6, S6, S7, S8을 지시하고 3과 동일한 y에 대한 값은 서브-테이블 1(표 4)을 지시한다.
상기 제3 데이터 구조(표 4)는 룩업 테이블이다. 그것은 값 y를 사용하여 어드레싱되고 회답으로 symbol_locate에 대한 값을 제공한다. symbol_locate에 대한 값은 심볼 값을 지시하거나 다른 룩업 테이블을 지시할 수 있다. 본 예에서 0, 1, 2, 3과 동일한 y에 대한 값들은 각각 심볼들 S3, S4 S5, S5를 지시한다.
상기 8-비트 symbol_locate는 그것의 최상위 비트(MSB)가 심볼(MSB=0)에 대한 포인터인지 또는 다른 룩업 테이블(MSB=1)에 대한 포인터인지를 식별하도록 포맷될 수 있다. 비트들 1-7은 정확한 심볼 또는 룩업 테이블의 주소를 제공한다. 예를 들어, y=3에서 서브-테이블 0내의 symbol_locate의 값은 서브-테이블 1을 지시하는 1000 0001일 것이다. y=1에서 서브-테이블 0내의 symbol_locate의 값은 하기에 표 5에 따라 심볼 S0을 나타내는 0000 0000일 것이다.
symbol locate 심볼
0000 0000 S0
0000 0001 S1
0000 0010 S2
0000 0011 S3
0000 0100 S4
0000 0101 S5
0000 0110 S6
0000 0111 S7
0000 1000 S8
상기 설명된 데이터 구조들의 생성이 이제 설명될 것이다. 표 6은 상기 데이터 구조들을 생성하는데 사용되는 방법론을 도시한 것이다.
표 6에서, 컬럼 1은 i=0, 1, 2 ... N-1에 대해 심볼들 Si를 순서대로 열거한 것이다. 컬럼 2는 각 심볼에 인접하여 그것의 코드워드들을 열거한 것이다. 컬럼 3은 각 코드워드에 대한 카운트 값 CountSi을 제공한다.
CountSi는 심볼 Si에 대한 코드워드가 길이 H를 가질 때까지 심볼 Si에 대한 코드워드에 1들을 부가함으로써 획득된 비트들의 시퀀스의 값이다. 예를 들어, S0에 대한 카운트 값은 00011(2+1)의 값이고, S2에 대한 카운트 값은 01011(8+2+1)의 값이다. 대안적으로 상기 카운트 값 CountSi가 [(V+1)*2^(H-Li)]-1로서, 값 V의 코드워드 및 레벨 Li를 차지하는 각 심볼 Si에 대해 계산될 수 있다. 예를 들어 S3{01100}에 대해, V=12 & L=0 및 count=[(12+1)*(2^0)]-1이고 S8{111}에 대해, V=7 & L=2, 및 count=[(7+1)*(2^2)]-1=31이다.
컬럼 4는 각 심볼에 대한 인수를 제공한다. 이것은 countS-1=-1인 경우, countSi-countSi-1로서, 심볼 Si에 대해 계산된다. 그것은 대안적으로 레벨 Li에서 심볼 Si에 대해, 2^(H-Li)로서 계산될 수 있다.
컬럼 5는 각 심볼에 대한 '시프트(shift)'를 제공한다. 그것은 상기 심볼의 인수의 기수 2에 대한 대수이다. 상기 시프트는 대안적으로 Li로서 각 심볼 Si에 대해 계산될 수 있다.
1 2 3 4 5 6 7 8 9
Si 코드워드 CountSi 인수 2^(H-Li) 시프트 H-Li y=(x-0)>>2 y=(x-12)>>0
S-1 -1
S0 000 3 (011) 4 2 0 (0) -
S1 001 7 (111) 4 2 1 (1) -
S2 010 11 (1011) 4 2 2 (10) -
S3 01100 12 (1100) 1 0 3 (11) 0
S4 01101 13 (1101) 1 0 3 (11) 1
S5 0111 15 (1111) 2 1 3 (11) 3
S6 10 23 (10111) 8 3 5 (101) -
S7 110 27 (11011) 4 2 6 (110) -
S8 111 31 (11111) 4 2 7 (111) -
수학식 1은 상기 제2 및 제3 데이터 구조들(표 3 및 표 4)에 대한 콘텐트를 제공하는, 컬럼 6 및 7내의 값들을 계산하는데 사용된다.
y = (x-offset_value)>>(shift_value)
상기에서 x는 코드워드의 값이고, offset_value는 0 보다 크거나 같은 정수이며, shift_value는 0보다 크거나 같은 정수이다. 상기 연산자 ">>"는 상기 값 (x-offset_value)이 shift_value에 의해, 그것의 최하위 비트들의 shift_value를 잃도록, 절단되어야 한다는 것을 나타낸다. 상기 좌측으로의 시프트는 2^shift_value로 나누는 연산과 동일하지만, 그것은 디지털 신호 처리기(DSP)에 의해 용이하게 수행된다.
컬럼 6, 즉 상기 제2 데이터 구조(표 3)에 대해 상기 offset_value는 0으로 설정되고 상기 shift_value는 2로 설정된다. 상기 수학식 y=(x-0)>>2는 서브-테이블 0(표 3)내의 y 값들에 대응하는, 컬럼 6내의 엔트리들 각각을 계산하는데 사용된다. 상기 심볼들 S3, S4 및 S5는 공통 y 값을 공유한다. 추가 서브-테이블은 상 기 심볼들에 대해 사용된다.
컬럼 7, 즉 상기 제3 데이터 구조(표 4)에 대해 상기 offset_value는 12이고 상기 shift_value는 0으로 설정된다. 상기 수학식 y=(x-12)>>0은 서브-테이블 1(표 4)내의 y 값들에 대응하는, 해결되지 않은 심볼들 S3, S4 및 S5에 대해 컬럼 7내의 엔트리들 각각을 계산하는데 사용된다.
따라서, 상기 서브-테이블 0은 상기 트리의 상단으로부터 제거된 shift_value 레벨들인, 레벨 Li, 즉 Li=H-shift_value에서 도 1의 허프만 이진 트리내의 노드들을 나타낸다.
L=3에서의 노드들은 순서대로 S0, S1, S2, F2, 비어있음, 비어있음, S7, S8이다. 상기 비어있는 노드들은 심볼 S6와 연관된 리프 노드로부터 종속될 것이다. 그러므로 상기 심볼 S6은 상기 종속하는 비어있는 노드들에 배치된다. L=3에서의 노드들은 S0, S1, S2, F2, S6, S7, S8로서 재작성될 수 있다. 이것은 서브-테이블 0내의 엔트리들의 콘텐트에 대응한다.
상기 내부 노드 F2는 부트리의 루트이다. 상기 서브-테이블 1은 상기 부트리를 나타낸다. F2로부터 종속되는 어떤 리프 노드들의 카운트 값도 12와 15 사이의 값들을 가질 것이다. 상기 코드워드들의 카운트 값들은 12, 서브-테이블 1에 대한 오프셋 값을 감산함으로써 재정규화된다.
상기 서브-테이블 1은 H-shift_value과 동일한 허프만 이진 트리내의 레벨 L에서 서브-트리의 노드들을 나타낸다. 서브-테이블 1에 대한 shift_value는 상기 서브-트리에 대해 0이어서 L=5이다.
L=5에서의 노드들은 순서대로 S3, S4, 비어있음, 비어있음이다. 상기 비어있는 노드들은 심볼 S5와 연관된 리프 노드로부터 종속될 것이다. 그러므로 상기 심볼 S5는 종속하는 비어있는 노드들내에 배치된다. L=5에서의 노드들은 S3, S4, S5, S5로서 재작성될 수 있다. 이것은 서브-테이블 1내의 엔트리들의 콘텐트에 대응한다.
그러므로 도 1내의 허프만 트리는 레벨 L=3에서 상기 트리를 나타내는 제1 데이터 구조, 서브-테이블 0 및 레벨 L=5에서 서브-트리를 나타내는, 제2 데이터 구조, 서브-테이블 1로 표시된다.
상기 트리를 섹션화하는 것은 가장 유망한 심볼들이 효율적인 방법으로 먼저 발견되도록 허용하기 위해 필요하다. 하지만, 너무 많은 섹션들의 도입은 부가적인 서브-테이블과 부가적인 시프트 및 오프셋 값들을 저장하기 위하여 부가적인 메모리를 사용하고 덜 공통적으로 발생하는 심볼들을 복호화하는 부가적인 처리 단계들을 필요로 한다.
예를 들어, L=3 및 L=5보다는 다른 레벨들에서 상기 허프만 트리를 섹션화함으로써 상기 허프만 트리를 표시하는 것이 가능하다. 예를 들어, 상기 트리가 L=3, L=4 및 L=5에서 섹션화되는 경우, 3개의 서브-테이블들이 존재할 것이다. L=4에 대한 상기 서브-테이블의 제1 엔트리는 L=5에 대한 서브-테이블을 참조할 것이고 상기 제2 엔트리는 S5를 참조할 것이다. L=5에 대한 서브-테이블의 제1 엔트리는 S3을 참조할 것이고 상기 제2 엔트리는 S4를 참조할 것이다. 상기 서브-테이블 양자에 대한 오프셋은 12이다. L=4에 대한 서브-테이블에 대한 시프트는 1이고 L=5에 대한 서브-테이블에 대한 시프트는 0이다.
표 2, 표 3, 표 4 및 표 5의 데이터 구조들을 제공하는 도 1의 허프만 트리의 섹션화를 위해 하기 사항이 언급되어야 한다.
트리의 레벨 L을 나타내는 (즉 L에서 섹션화된 트리) 데이터 구조는 H-L과 동일한 시프트 값을 갖는다. 상기 노드 N이 코드워드 값 V를 지니고 레벨 L에 있는 경우, 상기 트리내의 노드 N으로부터 참조된 데이터 구조는 offset_value V*2^(H-L)을 갖는다.
상기 서브-테이블 0에 대해, 상기 shift_value는 H-L*와 동일하게 설정되는데, L*는 상기 트리가 섹션화되는 레벨이다. 여기에서 그것은 다수의 리프들이 나타나는 최저 레벨이다. 도 1에서 L=2에서 하나의 리프가 존재하지만, L=3에서 다수의 리프들이 존재한다. 그러므로 상기 트리는 L=3에서 섹션화되고 상기 shift_value=2이다. 상기 offset_value는 0이다.
예를 들어, 상기 서브-테이블 1은 L=3에서 노드 {011}을 통해 참조된다. 그러므로, V=3이고 상기 서브-테이블 1에 대한 offset_value는 3*2^2이다. 상기 서브-테이블 1에 대한 시프트 값은 H-L*과 동일하게 설정되는데, L*는 상기 트리가 섹션화되는 레벨이다. 여기에서, 그것은 다수의 리프들이 상기 서브-트리에 나타나는 최저 레벨이다. 도 1에서, 상기 서브-트리는 레벨 L=3에서 그것의 루트로서 F2를 지닌다. 상기 서브-트리는 L=4에서 하나의 리프를 가지지만, L=5에서 두개의 리프들을 갖는다. 그러므로 상기 트리는 L=5에서 섹션화되고 shift_value=0이다.
도 2는 부호기로서 동작가능한 장치(20)를 도시한 것이다. 상기 부호기 장치 는 프로세서(22) 및 메모리(24)를 포함한다. 상기 메모리(24)는 상기에 설명된 부호화 프로세스를 수행하도록 상기 프로세서(22)를 제어하는 컴퓨터 프로그램 명령들을 저장한다.
상기 컴퓨터 프로그램 명령들은 상기 명령들이 구현되는 적합한 저장 매체를 통해 상기 메모리로 전송될 수 있거나 그들은 상기 명령들을 구현하는 전기 신호들을 통해 전송될 수 있다.
상기 프로세서(22)는 부호화를 위한 데이터를 수신하기 위한 입력(21)을 구비하고 부호화된 데이터를 제공하기 위한 출력(23)을 구비한다. 상기 부호화된 데이터는 허프만 트리를 나타내는 복수의 데이터 구조들 및 상기 트리의 높이 H에 대한 값을 포함한다.
복호화
도 2는 복호기로서 동작가능한 장치(20)를 도시한 것이다. 상기 복호기는 프로세서(22) 및 메모리(24)를 포함한다. 상기 메모리는 상기에 설명된 바와 같은 허프만 트리를 나타내는 데이터 구조들을 저장한다. 예를 들어 상기 메모리(24)는 상기에 표 2, 표 3, 표 4 및 표 5에 도시된 것들에 대응하는 표들을 저장할 수 있다. 상기 메모리는 또한 도 3을 참조하여 하기에 설명되는 복호화 프로세스를 수행하도록 상기 프로세서(22)를 제어하는 컴퓨터 프로그램 명령들을 저장한다.
상기 컴퓨터 프로그램 명령들은 상기 명령들이 구현되는 적합한 저장 매체를 통해 상기 메모리로 전송될 수 있거나 그들은 상기 명령들을 구현하는 전기 신호들을 통해 전송될 수 있다.
상기 프로세서(22)는 복호화를 위한 데이터를 수신하기 위한 입력(21)을 구비하고 복호화된 데이터를 제공하기 위한 출력(23)을 구비한다. 상기 허프만 트리의 높이는 상기 복호기에서 알려져 있다. 이것은 복호화를 위한 데이터가 제공되는 헤더에서 상기 복호기로 전달될 수 있다.
상기 복호기는 도 3에 도시된 바와 같이 다음 단계들을 수행한다.
단계 100에서 현재의 서브-테이블 식별자 z가 0으로 설정된다.
그다음 단계 102에서, H 비트들이 값 x를 지닌, 비트스트림으로부터 추출된다.
그다음 단계 104에서, 룩업 테이블이 액세스된다. 서브-테이블 z에 대한 offset_value 및 shift_value가 획득된다.
그다음 단계 106에서, x 및 현재의 서브-테이블에 대한 offset_value 및 shift_value의 획득된 값들을 사용하여 수학식 1로부터 현재의 서브-테이블에 대한 y 값을 계산한다.
그다음 단계 108에서, 현재의 서브-테이블, 서브-테이블 z에 액세스한다. 상기 계산된 y 값들에 대응하는 서브-테이블 z로부터 symbol_locate를 획득한다.
그다음 단계 110에서, 상기 획득된 symbol_locate의 MSB에 대해 비교가 수행된다. 상기 획득된 symbol_locate의 MSB가 0인 경우 상기 프로세스는 단계 114로 점프한다. 상기 획득된 symbol_locate의 MSB가 1인 경우 상기 프로세스는 단계 112로 점프한다.
단계 112에서, 상기 현재의 서브-테이블 식별자 z가 단계 108에서 획득된 상 기 symbol_locate의 나머지 최하위 비트들과 동일하게 설정된다. 그다음 상기 프로세스는 단계 104로 복귀한다.
단계 114에서, 상기 symbol_locate에 대응하는 심볼이 단계 108에서 획득된다.
이제 도시된 프로세스의 예가 상기 제공된 예시적인 룩업 테이블들(표 2, 표 3, 표 4 및 표 5)을 사용하여 제공될 것이다. 탐색될 코드워드는 {0,1,1,1}이다. 추출된 비트들을 {0,1,1,1,0}이라 하자.
단계 100에서, 현재의 서브-테이블 표시자 z=0으로 설정한다.
단계 102에서, 비트들 {0,1,1,1,0}을 추출한다. 그러므로 x=14이다.
단계 104에서, 룩업 테이블(표 2)에 액세스한다. 서브-테이블 0에 대한 offset_value=0이고 서브-테이블 0에 대한 shift_value=2이다.
단계 106에서, 수학식 1을 사용하여 y를 계산한다.
y=(x-0)>>2=3
단계 108에서, 현재의 서브-테이블, 서브-테이블 0(표 3)에 액세스한다. 계산된 y 값에 대응하는 서브-테이블 0으로부터 symbol_locate를 획득한다. 상기 symbol_locate는 {1000 0001}이다.
단계 110에서, 상기 획득된 symbol_locate의 MSB는 1인 것으로 결정되므로, 단계 112로 간다.
단계 112에서, z는 상기 획득된 symbol_locate의 나머지 최하위 비트들 {000 0001}와 동일하게 설정되는데, 즉 z=1로 설정된다.
단계 104에서, 현재의 룩업 테이블(표 2)에 액세스한다. 새로운 현재의 서브-테이블(서브-테이블 1)에 대해 새로운 offset_value 및 새로운 shift_value를 획득한다. 서브-테이블 1에 대한 offset_value = 12이고 서브-테이블 1에 대한 shift_value = 0이다.
단계 106에서, 수학식 1을 사용하여 현재의 서브-테이블, 서브-테이블 1에 대해 y를 계산한다. y=(x-12)>>0=2
단계 108에서, 현재의 서브-테이블(서브-테이블 1)에 액세스한다. 상기 새로운 y 값(y=2)에 대응하는 symbol_locate를 획득한다. 상기 symbol_locate는 {0000 0101}이다.
단계 110에서, 상기 획득된 symbol_locate의 MSB는 0인 것으로 결정되므로, 단계 114로 간다.
단계 114에서, 상기 획득된 symbol_locate에 대응하는 심볼을 획득한다. 상기 획득된 symbol_locate {0000 0101}에 대응하는 심볼은 표 5로부터 S5이다.
추출된 비트들이 {0,1,1,1,0} 대신에 {0,1,1,1,1}인 경우 동일한 결과가 달성될 것이라는 것은 이해될 것이다.
추가 설명
추가 설명으로서 도 4에 도시된 허프만 트리의 부호화가 이제 간략히 설명될 것이다.
표 7이 생성된다:
Si 코드워드 countSi
S0 000 15
S1 001 31
S2 010 47
S3 01100 51
S4 0110100 52
S5 0110101 53
S6 011011 55
S7 0111 63
S8 10 95
S9 110 111
S10 111 127
L=3에서 상기 트리를 섹션화하는 것은 y=(x-0)>>4를 제공한다.
y0 0 1 2 3 4 5 6 7
symbol_locate S0 S1 S2 표 1로 감 S8 S8 S9 S10
L=4에서 상기 트리를 섹션화하는 것은 y=(x-48)>>3을 제공하는데, V{011}*2^4=48이다.
y1 0 1
symbol_locate 표 2로 감 S7
L=5에서 상기 트리를 섹션화하는 것은 y=(x-48)>>2를 제공하는데, V{0110}*2^3=48이다.
y2 0 1
symbol_locate S3 표 3으로 감
L=7에서 상기 트리를 섹션화하는 것은 y=(x-52)>>0을 제공하는데, V{01101}*2^2=52이다.
y3 0 1 2 3
symbol_locate S4 S5 S6 S6
본 발명이 다양한 특정 예들을 참조하여 설명되었을지라도, 다양한 변형들 및 변경들이 본 발명의 정신 및 범위를 벗어나지 않고 행해질 수 있다는 것은 이해되어야 한다.

Claims (46)

  1. 비트스트림을 복호화하는 방법에 있어서,
    높이가 H인 허프만 부호화 트리에 따라 부호화된 상기 비트스트림으로부터 H 비트들의 제1 코드워드를 추출하는 단계;
    상기 코드워드를 제1 시프트 값만큼 시프트함으로써 상기 코드워드를 변경하는 단계;
    적어도 하나의 제1 데이터 구조를 사용하여 관련된 제2 오프셋 값 및 관련된 제2 시프트 값을 지닌 제2 데이터 구조 또는 심볼을 식별하기 위하여 상기 변경된 코드워드를 사용하는 단계;
    제2 데이터 구조가 상기 제1 데이터 구조를 사용하여 식별되는 경우:
    상기 제2 오프셋 값을 감산하고 그 결과를 상기 제2 시프트 값만큼 시프트함으로써 상기 코드워드를 변경하는 단계; 및
    상기 제2 데이터 구조를 사용하여 관련된 제3 오프셋 값 및 관련된 제3 시프트 값을 지닌 제3 데이터 구조 또는 심볼을 식별하기 위하여 상기 변경된 코드워드를 사용하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 상기 제1 시프트 값을 획득하기 위하여 룩업 테이블에 액세스하는 단계 및 상기 제2 오프셋 값 및 상기 제2 시프트 값을 획득하기 위하여 상기 룩업 테이블에 액세스하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제1항 또는 제2항에 있어서, 상기 제1 데이터 구조는 상기 허프만 부호화 트리의 제1 레벨을 나타내고 상기 제2 데이터 구조는 상기 허프만 부호화 트리의 제2의 하위 레벨을 나타내는 것을 특징으로 하는 방법.
  4. 제1항 또는 제2항에 있어서, 적어도 상기 높이 H의 값, 상기 제1 시프트 값, 상기 제2 오프셋 값, 상기 제2 시프트 값, 상기 제1 데이터 구조 및 상기 제2 데이터 구조를 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제1항 또는 제2항에 있어서, 상기 코드워드를 제1 시프트 값만큼 시프트함으로써 상기 코드워드를 변경하는 단계는 만약 있다면, 상기 코드워드에서 제1 오프셋 값을 우선 감산하고 그 결과를 상기 제1 시프트 값만큼 시프트하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 제1항 또는 제2항의 방법을 수행하기 위한 컴퓨터 프로그램을 저장한 컴퓨터로 독출가능한 기록매체.
  7. 제6항의 컴퓨터 프로그램을 구현하는 저장 매체.
  8. 비트스트림을 복호화하는 방법에 있어서,
    높이가 H인 허프만 부호화 트리에 따라 부호화된 상기 비트스트림으로부터 H 비트들의 코드워드를 추출하는 단계;
    상기 코드워드를 소정의 시프트 값만큼 시프트하는 단계; 및
    적어도 하나의 제1 데이터 구조를 사용하여 심볼을 식별하기 위하여 상기 변경된 코드워드를 사용하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서, 상기 소정의 시프트 값을 획득하기 위하여 룩업 테이블에 액세스하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 제8항 또는 제9항에 있어서, 상기 제1 데이터 구조는 상기 허프만 부호화 트리의 제1 레벨을 나타내는 것을 특징으로 하는 방법.
  11. 제8항 또는 제9항에 있어서, 적어도 높이 H의 값, 상기 소정의 시프트 값 및 상기 제1 데이터 구조를 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  12. 제8항 또는 제9항에 있어서, 상기 코드워드를 소정의 시프트 값만큼 시프트하는 단계는 만일 있다면, 우선 상기 코드워드에서 제1 오프셋 값을 감산하고 그 결과를 상기 소정의 시프트 값만큼 시프트하는 단계를 포함하는 것을 특징으로 하는 방법.
  13. 제8항 또는 제9항의 방법을 수행하기 위한 컴퓨터 프로그램을 저장한 컴퓨터로 독출가능한 기록매체.
  14. 제13항의 컴퓨터 프로그램을 구현하는 저장 매체.
  15. 높이가 H인 허프만 부호화 트리에 따라 부호화된 비트스트림을 복호화하기 위한 복호기에 있어서,
    관련된 제1 오프셋 값 및 관련된 제1 시프트 값을 지닌 제1 데이터 구조 및 관련된 제2 오프셋 값 및 관련된 제2 시프트 값을 지닌 제2 데이터 구조를 적어도 포함하는 높이가 H인 허프만 부호화 트리를 나타내는 복수의 데이터 구조들을 저장하기 위한 메모리; 및
    상기 비트스트림으로부터 획득된 H 비트들의 코드워드에서 현재의 오프셋 값을 감산하도록 동작가능하고, 그 결과를 상기 관련된 시프트 값만큼 시프트하도록 동작가능하며, 상기 결과를 사용하여 상기 관련된 데이터 구조를 어드레싱하도록 동작가능한 프로세서를 포함하는 것을 특징으로 하는 복호기.
  16. 제15항에 있어서, 상기 제1 데이터 구조는 상기 허프만 부호화 트리의 제1 레벨을 나타내고 상기 제2 데이터 구조는 상기 허프만 부호화 트리의 제2의 하위 레벨을 나타내는 것을 특징으로 하는 복호기.
  17. 제16항에 있어서, 상기 제1 시프트 값은 상기 제1 레벨에 대응하는 것을 특징으로 하는 복호기.
  18. 제16항 또는 제17항에 있어서, 상기 제2 시프트 값은 상기 제2 레벨에 대응하는 것을 특징으로 하는 복호기.
  19. 제16항 또는 제17항에 있어서, 상기 제2 오프셋 값은 상기 허프만 트리내에서 제1 부트리(sub-tree)의 위치를 식별하는 것을 특징으로 하는 복호기.
  20. 제17항에 있어서, 상기 프로세서는 상기 관련된 데이터 구조를 어드레싱하는 것으로부터 값을 획득한 후, 상기 값을 사용하여 비교를 수행하고 상기 비교에 따라 상기 값을 사용하여 심볼 또는 새로운 현재의 오프셋 값을 식별하도록 동작가능한 것을 특징으로 하는 복호기.
  21. 제20항에 있어서, 상기 비교는 상기 값의 최상위 비트(MSB)를 사용하는 것을 특징으로 하는 복호기.
  22. 제20항 또는 제21항에 있어서, 상기 현재의 오프셋 값은 초기에 상기 제1 오프셋 값으로 설정되는 것을 특징으로 하는 복호기.
  23. 비트스트림을 복호화하는 방법에 있어서,
    상기 트리의 제1 레벨에서 각 가능한 노드에 대한 값을 포함하는 제1 데이터 구조를 저장하는 단계;
    상기 트리의 제2의 하위 레벨에서 제1 부트리내의 각 가능한 노드에 대한 값을 포함하는 제2 데이터 구조를 저장하는 단계;
    높이가 H인 허프만 부호화 트리에 따라 부호화된 상기 비트스트림으로부터 H 비트들의 제1 코드워드를 추출하는 단계;
    상기 제1 코드워드의 값을 상기 트리의 제1 레벨에서 상기 트리내의 제1 노드 위치로 변환하는 단계;
    상기 제1 데이터 구조에 액세스하여 상기 제1 노드 위치에 대응하는 값을 획득하는 단계로서, 상기 값은 상기 제2 데이터 구조를 나타내는 단계;
    상기 제1 코드워드의 값을 상기 트리의 제2 레벨에서 상기 제1 부트리내의 제2 노드 위치로 변환하는 단계; 및
    상기 제2 데이터 구조에 액세스하여 상기 제2 노드 위치에 대응하는 값을 획득하는 단계를 포함하는 것을 특징으로 하는 방법.
  24. 제23항의 방법을 수행하기 위한 컴퓨터 프로그램을 저장한 컴퓨터로 독출가능한 기록매체.
  25. 제24항의 컴퓨터 프로그램을 구현하는 저장 매체.
  26. 비트스트림으로부터 코드워드를 복호화하는 방법에 있어서,
    복수의 순서화된 데이터 구조들로서 허프만 트리의 표시를 수신하는 단계로서, 상기 복수의 순서화된 데이터 구조들은 상기 트리의 식별된 제1 레벨(L1)과 관련되며 각 엔트리가 상기 식별된 제1 레벨에서 완전한 트리의 노드에 대응하는 복수의 데이터 엔트리들을 포함하는 제1 데이터 구조 및 상기 트리의 식별된 제2 레벨(L2) 및 식별된 제1 부트리와 관련되며, 각 엔트리가 상기 제2 식별된 레벨에서, 완전한 경우, 상기 제1 부트리의 노드에 대응하는 복수의 데이터 엔트리들을 포함하는 적어도 하나의 제2 데이터 구조를 포함하는 단계;
    허프만 트리에서 제1 레벨(L1)에 대한 값을 획득하는 단계;
    코드워드의 제1 L1 비트들에 대응하는, 완전한 경우, 상기 트리의 상기 제1 레벨(L1)에서 상기 노드를 식별하는 단계;
    상기 식별된 노드가 내부 노드인 경우 추가 데이터 구조를 식별하고 그렇지 않은 경우 심볼을 식별하는, 상기 식별된 노드에 대한 데이터 엔트리를 상기 제1 데이터 구조로부터 획득하는 단계; 및
    상기 식별된 노드가 내부 노드인 경우:
    상기 제1 레벨(L1)보다 더 높은 레벨인, 허프만 트리에서 제2 레벨(L2)에 대한 값을 획득하는 단계;
    제1 부트리를 식별하는 값을 획득하는 단계;
    수신된 비트스트림의 제1 L2 비트들에 대응하는, 완전한 경우, 상기 제1 부트리의 제2 레벨(L2)에서 상기 노드를 식별하는 단계;
    상기 식별된 노드가 내부 노드인 경우 추가 데이터 구조를 식별하고 그렇지 않은 경우 심볼을 식별하는, 상기 식별된 노드에 대한 데이터 엔트리를 추가 데이터 구조로부터 획득하는 단계를 포함하는 것을 특징으로 하는 방법.
  27. 제26항의 방법을 수행하기 위한 컴퓨터 프로그램을 저장한 컴퓨터로 독출가능한 기록매체.
  28. 제27항의 컴퓨터 프로그램을 구현하는 저장 매체.
  29. H 레벨들에 배열된 내부 노드들 및 리프(leaf) 노드들을 포함하는 허프만 부호화 트리를 나타내는 데이터를 저장한 컴퓨터로 독출가능한 기록매체로서, 각 리프 노드는 두번째 최저 레벨상의 단일 내부 노드로부터 종속되고 상기 각 리프 노드는 심볼을 나타내며 각 내부 노드는 상기 두번째 최저 레벨상의 단일 내부 노드로부터 종속되는 데이터에 있어서, 상기 데이터는,
    상기 트리의 제1 특정 레벨내의 노드들 각각에 대해, 제1 내부 노드에 대한 제2 데이터 구조를 포함하여, 각 리프 노드에 대한 심볼 및 각 내부 노드에 대한 추가 데이터 구조를 식별하는 제1 데이터 구조;
    상기 제1 데이터 구조에 의해 식별된 적어도 하나의 제2 데이터 구조로서, 상기 제1 내부 노드로부터 종속되고, 상기 트리의 제2 특정 레벨에 있는, 부트리내의 노드들 각각에 대해, 만일 있다면 각 리프 노드에 대한 심볼 및 내부 노드에 대한 추가 데이터 구조를 식별하는 적어도 하나의 제2 데이터 구조; 및
    적어도 상기 제1 레벨, 상기 제2 레벨 및 상기 제1 내부 노드를 지정하는 데이터를 포함하는 것을 특징으로 하는 컴퓨터로 독출가능한 기록매체.
  30. 제29항에 있어서, 상기 제1 데이터 구조는 만일 있다면, 각 빈 노드에 대한 심볼을 식별하는 것을 특징으로 하는 컴퓨터로 독출가능한 기록매체.
  31. 제29항 또는 제30항에 있어서, 상기 제2 데이터 구조는 상기 트리의 제2 레벨에서 상기 부트리의 각 빈 노드에 대한 심볼을 식별하는 것을 특징으로 하는 컴퓨터로 독출가능한 기록매체.
  32. 제29항 또는 제30항에 있어서, 상기 제1 레벨은 적어도 두개의 리프 노드들을 지닌 상기 트리내에서 최저 레벨인 것을 특징으로 하는 컴퓨터로 독출가능한 기록매체.
  33. 제29항 또는 제30항에 있어서, 상기 제2 레벨은 적어도 두개의 리프 노드들을 지닌 상기 부트리내에서 최저 레벨인 것을 특징으로 하는 컴퓨터로 독출가능한 기록매체.
  34. 제29항 또는 제30항에 있어서, 레벨 L(L=0, 1, 2..)에서 그리고 값 V를 가지는 경우, 상기 제1 내부 노드는 V*2^(H-L)에 의존하는 값에 의해 지정하는 것을 특징으로 하는 컴퓨터로 독출가능한 기록매체.
  35. 제29항 또는 제30항에 있어서, H를 지정하는 데이터를 더 포함하는 것을 특징으로 하는 컴퓨터로 독출가능한 기록매체.
  36. 제29항 또는 제30항에 의한 데이터를 구현하는 저장 매체.
  37. 허프만 이진 트리에 따라 인코딩된 비트스트림을 디코딩하는 방법에 있어서,
    상기 디코딩 방법은, 상기 트리의 식별된 제1 레벨(L1)과 연관되며 복수의 엔트리들을 포함하는 제1 데이터 구조를 생성하는 단계로서, 각 엔트리는 상기 식별된 제1 레벨에서 완전한 트리의 노드에 대응하고 상기 노드가 내부 노드인 경우 추가 데이터 구조를 식별하며 그렇지 않은 경우 심볼을 식별하는 단계; 및
    상기 트리의 식별된 제2 레벨(L2)과 연관되고 식별된 제1 부트리와 연관되며 복수의 데이터 엔트리들을 포함하는 적어도 하나의 추가 데이터 구조를 생성하는 단계로서, 각 엔트리가 상기 제2 식별된 레벨(L2)에서 완전한 경우, 상기 제1 부트리의 노드에 대응하고 상기 노드가 내부 노드인 경우 추가 데이터 구조를 식별하며 그렇지 않은 경우 심볼을 식별하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  38. 제37항에 있어서, 상기 허프만 트리내의 데이터 구조들의 수 및 상기 데이터 구조들의 연관된 레벨들을 결정하기 위한 알고리즘을 실행하는 것을 특징으로 하는 디코딩 방법.
  39. 제37항 또는 제38항에 있어서, V*2^(H-L)에 의존하는 값을 사용하여 레벨 L(L=0, 1, 2..) 및 값 V에서 루트 노드를 지닌 부트리를 식별하는 단계를 더 포함하고, V는 코드워드 값, H는 허프만 이진 트리의 높이, L은 허프만 이진 트리의 레벨인 것을 특징으로 하는 디코딩 방법.
  40. 삭제
  41. 삭제
  42. 제6항의 컴퓨터 프로그램을 구현하는 전송 매체.
  43. 제13항의 컴퓨터 프로그램을 구현하는 전송 매체.
  44. 제24항의 컴퓨터 프로그램을 구현하는 전송 매체.
  45. 제27항의 컴퓨터 프로그램을 구현하는 전송 매체.
  46. 제29항 또는 제30항에 의한 컴퓨터 프로그램을 구현하는 전송 매체.
KR1020067004185A 2006-02-28 2003-09-02 허프만 부호화 및 복호화 KR100840757B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020067004185A KR100840757B1 (ko) 2006-02-28 2003-09-02 허프만 부호화 및 복호화

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020067004185A KR100840757B1 (ko) 2006-02-28 2003-09-02 허프만 부호화 및 복호화

Publications (2)

Publication Number Publication Date
KR20060028750A KR20060028750A (ko) 2006-03-31
KR100840757B1 true KR100840757B1 (ko) 2008-06-23

Family

ID=37139342

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067004185A KR100840757B1 (ko) 2006-02-28 2003-09-02 허프만 부호화 및 복호화

Country Status (1)

Country Link
KR (1) KR100840757B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101118089B1 (ko) * 2008-12-10 2012-03-09 서울대학교산학협력단 가변장 복호화 장치 및 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110727414B (zh) * 2019-09-30 2023-12-08 安徽问天量子科技股份有限公司 基于哈夫曼编码的随机数生成方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6188797B1 (en) 1997-05-27 2001-02-13 Apple Computer, Inc. Decoder for programmable variable length data
WO2002061948A2 (en) * 2001-01-30 2002-08-08 California Institute Of Technology Lossless and near-lossless source coding for multiple access networks
EP1341314A2 (en) 2002-02-28 2003-09-03 Samsung Electronics Co., Ltd. Improved huffman decoding method and apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6188797B1 (en) 1997-05-27 2001-02-13 Apple Computer, Inc. Decoder for programmable variable length data
WO2002061948A2 (en) * 2001-01-30 2002-08-08 California Institute Of Technology Lossless and near-lossless source coding for multiple access networks
WO2002061948A3 (en) 2001-01-30 2003-09-18 California Inst Of Techn Lossless and near-lossless source coding for multiple access networks
EP1341314A2 (en) 2002-02-28 2003-09-03 Samsung Electronics Co., Ltd. Improved huffman decoding method and apparatus

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101118089B1 (ko) * 2008-12-10 2012-03-09 서울대학교산학협력단 가변장 복호화 장치 및 방법

Also Published As

Publication number Publication date
KR20060028750A (ko) 2006-03-31

Similar Documents

Publication Publication Date Title
US7358870B2 (en) Huffman coding and decoding based upon sectioning of a Huffman coding tree
US6697363B1 (en) Method and apparatus for longest matching prefix determination in a communication network
US7446681B2 (en) Lookup table array compression and indexing
US7135997B2 (en) Method and apparatus for CAVLC decoding
US5455577A (en) Method and system for data compression
Hirschberg et al. Efficient decoding of prefix codes
US7346009B2 (en) Dense mode coding scheme
KR101118089B1 (ko) 가변장 복호화 장치 및 방법
TWI428023B (zh) 解碼方法及裝置
US6563439B1 (en) Method of performing Huffman decoding
CA2668222A1 (en) Memory efficient coding of variable length codes
JP2012533921A (ja) データの圧縮方法
Ferragina et al. On the bit-complexity of Lempel--Ziv compression
KR100484137B1 (ko) 개선된 허프만 디코딩 방법 및 장치
US20070057825A1 (en) Method and system for decoding variable length encoded signals, computer program product therefor
KR100840757B1 (ko) 허프만 부호화 및 복호화
US7205915B2 (en) Method of decoding variable length prefix codes
JP3256121B2 (ja) データ符号化装置およびデータ復号装置およびその方法
US10084477B2 (en) Method and apparatus for adaptive data compression
WO2009001174A1 (en) System and method for data compression and storage allowing fast retrieval
Jiang et al. An efficient Huffman decoding method based on pattern partition and look-up table
US7773003B1 (en) Huffman search algorithm for AAC decoder
SE521907C2 (sv) Metod och system för snabb IP-vägvalssökning för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras
KR100720684B1 (ko) 균형 이진 검색 트리를 이용한 허프만 디코딩 방법 및디코딩 장치
JP3565147B2 (ja) 復号装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130522

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140521

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150519

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160517

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170609

Year of fee payment: 10