KR20030071327A - 개선된 허프만 디코딩 방법 및 장치 - Google Patents

개선된 허프만 디코딩 방법 및 장치 Download PDF

Info

Publication number
KR20030071327A
KR20030071327A KR1020020010981A KR20020010981A KR20030071327A KR 20030071327 A KR20030071327 A KR 20030071327A KR 1020020010981 A KR1020020010981 A KR 1020020010981A KR 20020010981 A KR20020010981 A KR 20020010981A KR 20030071327 A KR20030071327 A KR 20030071327A
Authority
KR
South Korea
Prior art keywords
entry
node
value
index
accessed
Prior art date
Application number
KR1020020010981A
Other languages
English (en)
Other versions
KR100484137B1 (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 KR10-2002-0010981A priority Critical patent/KR100484137B1/ko
Priority to US10/359,089 priority patent/US6741191B2/en
Priority to JP2003038864A priority patent/JP3714935B2/ja
Priority to CNB03106762XA priority patent/CN1254921C/zh
Priority to EP20030251215 priority patent/EP1341314A3/en
Publication of KR20030071327A publication Critical patent/KR20030071327A/ko
Application granted granted Critical
Publication of KR100484137B1 publication Critical patent/KR100484137B1/ko

Links

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
    • 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)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

개선된 허프만 디코딩 방법 및 장치가 개시된다. 이 방법은, 부호화된 비트 스트림을 수신하고, 수신된 부호화된 비트 스트림의 일부 비트로 이루어진 코드워드의 각 비트들에 기반하여 인덱스 정보를 구하고, 상기 인덱스 정보에 대응하는 검색 테이블의 엔트리에 액세싱하고, 액세싱한 엔트리의 내부 값에 기초하여 상기 엔트리가 중간 노드에 해당하는지 또는 단말 노드에 해당하는지를 판단할 수 있도록 하는 과정에서 수치적 연산을 통해 디코딩에 필요한 메모리 용량을 감소시키고, 검색 속도를 향상시키는 것을 특징으로 한다.

Description

개선된 허프만 디코딩 방법 및 장치{Improved huffman decoding method and apparatus thereof}
본 발명은 개선된 허프만 디코딩 방법 및 장치에 관한 것으로서, 특히 허프만 코딩의 기본 원리인 이진 트리로부터 생성된 효율적인 일차원 검색 테이블 구성과, 프로세싱 효율을 증가시키기 위한 수치 연산 기법을 이용하여 허프만 디코딩을 수행하는 허프만 디코딩 방법 및 장치에 관한 것이다.
허프만 코드가 가지는 고유한 특징으로 인해 종래 이진 트리를 이용한 허프만 디코딩 기법은 최대 및 평균 검색 시간 및 검색 시간의 편차 측면에서 매우 효율적인 방법으로 간주되어 왔다. 하지만, 기존의 이진 트리 기반의 검색 방법에 따르면, 검색을 위하여 필요로하는 자료 구조를 생성하기 위해서는 연결 리스트 기반의 이진 트리를 구성하는 복잡한 과정을 수행하여야만 하고, 또한 이진 트리 검색에서 노드 간의 이동을 위하여 수행하는 비교 및 분기 구분은 프로세서의 동작 중 파이프 라인의 흐름을 방해하여 허프만 디코더의 처리 속도를 감소시키는 주요 원인이 되어 왔다.
이하, 종래의 허프만 디코딩 장치의 구성 및 동작과, 그 장치에서 수행되는 종래의 허프만 디코딩 방법을 첨부한 도면들을 참조하여 설명한다.
도 1은 종래의 허프만 디코딩 장치의 개략적인 블럭도로서, 입력 버퍼(110), 서치 엔진(120), 허프만 검색 테이블(130), 및 출력 버퍼(140)로 구성된다.
도 2는 도 1에 도시된 장치에서 수행되는 기존의 조건 분기문에 근거한 허프만 디코더의 디코딩 수행 방법을 설명하기 위한 플로우차트이다.
도 3은 종래 방식에 따른 이진 허프만 트리 구성을 나타내며, 노드(310), (322), (330),(332), (342), (342), (344), (346), (356)은 다음 노드로 분기되는중간 노드(internal node)이고, 노드(320), (340), (346), (350), (352), (354), (360), (362)는 실제로 되돌려 줄 리턴 값(return value)을 가지는 단말 노드(terminal node)이다.
표 1은 도 3에 도시된 이진 허프만 트리의 코드 북(codebook)을 나타낸다.
코드워드(codeword) 값(value)
0 60
100 59
1010 61
1011 58
1100 62
11010 57
11011 63
111 4
도 4(a)(b)는 종래의 이진 트리 허프만 디코딩 방법에 따른 허프만 테이블의 메모리 구성을 나타낸다. 도 4(a)(b)에 도시된 바와 같이, 종래의 허프만 테이블에서는 3개의 메모리 공간을 사용한다. 도 4(a)에 도시된 바와 같이, 중간 노드의 경우에는 할당된 3개의 메모리 공간 중 중간 메모리 공간에는 null 값이 저장되고, 좌측 메모리 공간에는 자식 노드(child node) 중 좌측 노드의 어드레스가 저장되고, 우측 메모리 공간에는 자식 노드 중 좌측 노드의 어드레스가 저장된다. 또한, 도 4(b)에 도시된 바와 같이, 단말 노드의 경우에는 할당된 3개의 메모리 공간 중 중간 메모리 공간에는 해당 노드의 내부 값, 즉 실제로 되돌려 줄 리턴 값이 저장되고, 좌측 및 우측 메모리 공간에는 null 값이 저장된다.
아래에서는, 도 3, 도 4, 및 도 5를 참조하여, 도 2에 도시된 플로우차트에 기초하여 종래 기술에 따른 이진 트리 구조의 허프만 테이블을 이용한 허프만 디코더의 디코딩 수행 방법을 설명한다.
단계 210은 디코딩의 시작 단계로서, 허프만 디코더로 입력되는 부호화된 비트 스트림의 부호어에 기초하여 도 3에 도시된 허프만 트리의 근 노드, 즉 중간 노드(310)에 해당하는 엔트리에 액세싱하는 단계이다.
단계 220은 비교 및 분기 구문으로서, 단계 210에서 액세싱된 엔트리에 해당하는 노드가 중간 노드인지 또는 단말 노드인지를 판단하는 단계이다.
단계 230에서는, 단계 220에서 액세싱된 엔트리에 해당하는 노드가 단말 노드로 판단된 경우, 단말 노드에 할당 된 3개의 메모리 공간 중 중간 메모리 공간에 저장된 값을 실제 되돌려 줄 디코딩된 코드워드값으로 출력한다.
단계 240에서는, 단계 220에서 액세싱된 허프만 트리의 어드레스에 해당하는 노드가 중간 노드인 것으로 판단된 경우, 비트스트림으로부터 입력된 1 비트의 값이 '0'인 경우에는, 단계 250으로 진행하며, '1'인 경우에는 단계260으로 진행한다.
단계 250에서는 현재 노드에 할당된 3개의 메모리 공간 중 좌측 메모리 공간에 저장된 어드레스에 해당하는 엔트리로 액세싱하고, 단계 220으로 진행한다.
단계 260에서는 현재 노드에 할당된 3개의 메모리 공간 중 우측 메모리 공간에 저장된 어드레스로 액세싱하고, 단계 220으로 진행한다.
아래에서는, 상기 설명된 종래 허프만 디코딩 방법에 따라 부호화된 입력 비트 스트림 '1110100....'을 복호화하는 과정을 도 2와 도 5를 참조하여 설명한다. 단계 210에서 디코딩의 시작 단계로서 허프만 이진 트리의 루트 주소에 해당하는도 5에 도시된 허프만 테이블의 어드레스 '1'에 해당하는 엔트리로 액세싱한다.
단계 220에서, 액세싱된 엔트리의 노드가 중간 노드인지 또는 단말 노드인지를 판단한다. 도 5를 참조하면, 어드레스 1에 해당하는 노드에 해당하는 3개의 메모리 공간의 중간 메모리 공간에 저장된 값은 'NULL'이며, 좌측 메모리 공간에는 '4'가 저장되어 있으며, 우측 메모리 공간에는 '7'이 저장되어 있다. 따라서, 단계220은 어드레스 1에 해당하는 노드가 도 4(a)에 도시된 중간 노드라고 판단하고, 단계 240으로 진행한다.
단계240에서는, 입력된 비트 스트림 '1110100'의 부호화된 첫 번째 코드워드의 첫 번째 비트 '1'를 입력 받고, 입력되는 비트 new digit()가 '1'이므로 단계 260으로 진행한다.
단계 260에서는 현재 어드레스 '1'의 우측 어드레스 '2', 즉 현재 노드의 우측 메모리 공간에 저장된 어드레스 '7'에 해당하는 엔트리로 액세싱하고, 단계 220으로 진행한다.
단계 220에서는 허프만 테이블의 어드레스 '7'에 해당하는 노드가 중간 노드인지 또는 단말 노드인지를 판단한다. 도 5를 참조하면, 어드레스 7에 해당하는 노드에 해당하는 3개의 메모리 공간의 중간 메모리 공간에 저장된 값은 'NULL'이며, 좌측 메모리 공간에는 '10'이 저장되어 있으며, 우측 메모리 공간에는 '13'이 저장되어 있다. 따라서, 단계 220은 어드레스 7에 해당하는 노드가 도 4(a)에 도시된 중간 노드라고 판단하고, 단계 240으로 진행한다.
단계 240에서는, 입력된 비트 스트림 '1110100'의 첫 번째 코드워드의 두 번째 비트'1'을 입력 받고, 입력되는 비트 new digit()가 '1'이므로 단계 260으로 진행한다.
단계 260에서는 현재 어드레스 '7'의 우측 어드레스 '8', 즉 현재 노드의 우측 메모리 공간에 저장된 어드레스 '13'에 해당하는 엔트리로 액세싱하고, 단계 220으로 진행한다.
단계 220에서는 허프만 테이블의 어드레스 '13'에 해당하는 노드가 중간 노드인지 또는 단말 노드인지를 판단한다. 도 5를 참조하면, 어드레스 1에 해당하는 노드에 해당하는 3개의 메모리 공간의 중간 메모리 공간에 저장된 값은 'NULL'이며, 좌측 메모리 공간에는 '22'가 저장되어 있으며, 우측 메모리 공간에는 '25'가 저장되어 있다. 따라서, 단계 220은 어드레스 13에 해당하는 노드가 도 4(a)에 도시된 중간 노드라고 판단하고, 단계 240으로 진행한다.
단계 240에서는, 입력된 비트 스트림'1110100'의 첫 번째 코드워드의 세 번째 비트'1'을 입력받고, 입력되는 비트 new digit()가 '1'이므로 단계 260으로 진행한다.
단계 260에서는 현재 어드레스 '13'의 우측 어드레스 '14', 즉 현재 노드의 우측 메모리 공간에 저장된 어드레스 '25'에 해당하는 엔트리로 액세싱하고, 단계 220으로 진행한다.
단계 220에서는 허프만 테이블의 어드레스 '25'에 해당하는 노드가 중간 노드인지 또는 단말 노드인지를 판단한다. 도 5를 참조하면, 어드레스 25에 해당하는 노드에 할당되는 3개의 메모리 공간의 중간 메모리 공간에 저장된 값은 '4'이며, 좌측 메모리 공간에는 'NULL'이 저장되어 있으며, 우측 메모리 공간에는 'NULL'이 저장되어 있다. 따라서, 단계 220에서는 어드레스 25에 해당하는 노드가 도 4(b)에 도시된 단말 노드라고 판단하고, 단계 230으로 진행한다.
단계 230에서는, 어드레스 25에 해당하는 노드에 할당 된 3개의 메모리 공간 중 중간 메모리 공간에 저장된 값 '4'를 디코딩된 코드워드값으로 출력한다.
따라서, 입력된 비트 스트림 '1110100'의 첫 번째 코드워드 '111'에 대한 디코딩된 코드워드 '4'를 구하고, 비트 스트림 '1110100'의 두 번째 코드워드에 대한 디코딩을 재개한다.
디코딩된 코드워드 값 '4'를 구하는 과정과 동일하게, 단계 210에서 디코딩의 시작 단계로서 허프만 이진 트리의 루트 주소에 해당하는 허프만 테이블의 어드레스 '1'에 해당하는 엔트리로 액세싱하고, 단계 220으로 진행한다.
단계 220에서, 액세싱된 허프만 테이블의 어드레스 '1'에 해당하는 노드가 중간 노드인지 또는 단말 노드인지를 판단하고, 어드레스 1에 해당하는 노드에 해당하는 3개의 메모리 공간의 중간 메모리 공간에 저장된 값은 'NULL'이며, 좌측 메모리 공간에는 '4'가 저장되어 있으며, 우측 메모리 공간에는 '7'이 저장되어 있다. 따라서, 단계 220은 어드레스 1에 해당하는 노드가 도 4(a)에 도시된 중간 노드라고 판단하고, 단계 220으로 진행한다.
따라서, 단계 240으로 진행해서, 입력된 비트 스트림 '1110100'의 두 번째 코드워드의 첫 번째 비트'0'을 입력 받고, 입력된 비트 new digit()가 '0'이므로 단계 250으로 진행한다.
단계 250에서는 현재 어드레스 '1'의 좌측 어드레스 '0', 즉 현재 노드의 좌측 메모리 공간에 저장된 어드레스 '4'에 해당하는 엔트리로 액세싱하고, 단계 220으로 진행한다.
단계 220에서는 허프만 테이블의 어드레스 '4'에 해당하는 노드가 중간 노드인지 또는 단말 노드인지를 판단한다. 도 5를 참조하면, 어드레스 '4'에 해당하는 노드의 3개의 메모리 공간 중 중간 메모리 공간에 저장된 값은 '60'이며, 좌측 메모리 공간에는 'NULL' 값이 저장되어 있으며, 우측 메모리 공간에는 'NULL' 값이 저장되어 있다. 따라서, 단계 220은 어드레스 '4'에 해당하는 노드가 도 4(b)에 도시된 단말 노드라고 판단하고, 단계 230으로 진행한다.
단계 230에서는, 어드레스 4에 해당하는 노드에 할당 된 3개의 메모리 공간 중 중간 메모리 공간에 저장된 값 '60'을 비트 스트림 '1110100'의 두 번째 코드워드 '0'에 대한 디코딩된 코드워드값으로 출력한다.
이와 같은 방식으로, 허프만 디코더로 입력되는 부호화된 비트 스트림 '1110100'의 세 번째 코드워드 '100'에 대한 디코딩된 코드워드 값 '59'를 출력하여, 비트 스트림 '1110100....'에 대한, 디코딩된 코드워드값 '4,60,59....' 값을 구한다.
이와 같이, 종래의 이진 트리 기반의 허프만 디코딩 방법은 검색을 위하여 필요로 하는 자료 구조를 생성하기 위하여 연결 리스트 기반의 이진 트리를 구성하는 복잡한 과정을 수행하여야 하며, 특히 이진 트리 검색에서 노드 간의 이동을 위하여 수행하는 비교 및 분기 구문은 프로세서의 동작 중 파이프라인의 흐름을 방해하여 수행 속도의 효율을 감소시키며, 종래의 허프만 디코딩 방법에 따른 검색 테이블은 각 노드 마다 3개의 메모리 공간을 사용하기 때문에 과도하게 메모리 공간을 소비하는 문제점이 있다.
본 발명이 이루고자 하는 기술적 과제는, 종래의 허프만 디코딩 과정에 있어서 프로세싱 효율을 감소시키는 '비교 및 분기' 명령을 생략할 수 있도록 하여 허프만 디코더의 수행 속도를 증가시키고, 요구되는 메모리 공간을 감소시키는 것이 가능한 개선된 허프만 디코딩 방법을 제공하는 데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는, 종래의 허프만 디코딩 과정에 있어서 프로세싱 효율을 감소시키는 '비교 및 분기' 명령을 생략할 수 있도록 하여 허프만 디코더의 수행 속도를 증가시키고, 요구되는 메모리 공간을 감소시키는 것이 가능한 상기 개선된 허프만 디코딩 방법을 수행하는 개선된 허프만 디코딩 시스템을 제공하는 데 있다.
도 1은 종래의 허프만 디코딩 장치의 개략적인 블럭도
도 2는 도 1에 도시된 장치에서 수행되는 종래의 허프만 디코딩 방법을 설명하기 위한 플로우차트
도 3은 허프만 디코딩 방법에 이용되는 이진 트리 구조를 도시하는 도면
도 4a 내지 도 4b는 종래의 허프만 디코딩 방법에 사용되는 각각의 노드에 대응하는 허프만 테이블의 메모리 공간을 도시하는 도면
도 5는 종래의 허프만 디코딩 방법에 사용되는 허프만 테이블
도 6은 본 발명에 따른 일차원 검색 테이블 작성 과정을 도시하는 도면
도 7은 본 발명에 따른 일차원 검색 테이블 작성 과정을 도시하는 도표
도 8은 본 발명에 따른 디코딩 방법에 사용되는 일차원 검색 테이블
도 9는 본 발명에 따른 수치 연산에 기초한 개선된 허프만 디코딩 방법을 설명하기 위한 플로우 차트
상기 과제를 이루기 위해, 본 발명에 따른 개선된 허프만 디코딩 방법은 (a) 상기 부호화된 비트 스트림을 수신하는 단계와; (b) 상기 수신된 부호화된 비트 스트림의 일부 비트로 이루어진 코드워드 중 첫 번째 비트로부터 인덱스 정보를 구하고, 상기 인덱스 정보에 대응하는 상기 검색 테이블의 엔트리에 액세싱하는 단계와; (c) 상기 액세싱한 엔트리의 내부 값에 기초하여 상기 엔트리의 종류를 결정하는 단계를 포함하는 것을 특징으로 한다.
바람직하기로는, 본 발명에 따른 허프만 디코딩 방법은 액세싱한 엔트리의 내부 값의 부호에 따라 상기 엔트리가 중간 노드(internal node)에 해당하는지 또는 단말 노드(terminal node)에 해당하는지 여부를 판단하는 것을 특징으로 한다.
바람직하기로는, 본 발명에 따른 허프만 디코딩 방법은 액세싱한 엔트리가 중간 노드라고 결정되는 경우, 현재 엔트리의 인덱스 값, 액세싱한 엔트리의 내부 값, 및 상기 코드워드 중 두 번째 비트 값에 기초하여, 다음으로 액세싱할 엔트리의 인덱스 값을 계산하는 것을 특징으로 한다.
상기 다른 과제를 이루기 위한, 본 발명에 따른 개선된 허프만 디코딩 장치는 부호화된 비트 스트림을 디코딩하기 위한 프로세서와, 프로세서에 결합되고, 상기 디코딩과 관련된 검색 테이블이 저장된 메모리를 포함하며, 검색 테이블은 상기 이진 트리의 노드들에 대응되며, 내부 값을 가지는 엔트리를 구비하며, 상기 엔트리에 해당하는 상기 이진 트리의 노드의 종류는 상기 엔트리와 연관되어 저장된 내부 값에 따라 결정되는 것을 특징으로 한다.
바람직하기로는, 본 발명에 따른 디코딩 장치는 엔트리와 연관되어 저장된 내부 값은 상기 엔트리에 해당되는 노드의 종류에 따라 부호를 달리하는 것을 특징으로 한다.
바람직하기로는, 본 발명에 따른 디코딩 장치는 엔트리에 해당하는 노드가 중간 노드인 경우, 엔트리의 내부 값은 현재 엔트리에 해당하는 중간 노드와 다음으로 액세싱 할 노드의 상대적인 거리 값인 것을 특징으로 한다.
이하, 본 발명에 의한 개선된 허프만 디코딩 방법을 첨부한 도면들을 참조하여 다음과 같이 설명한다.
도 6은 본 발명에 의한 개선된 허프만 디코딩 방법을 구현하기 위한 검색 테이블의 재구성에 따른 효율적인 일차원 검색 테이블의 구성 과정을 도시한다.
테이블의 변환 과정은 동일 검색 단계별로 이진 트리의 노드들을 그룹화하고, 표 1에 도시된 코드워드의 크기 순으로 좌측에서 우측으로 일차원 배열상에 정렬함으로써 이루어진다. 도 6에 도시된 검색 테이블 생성시, 각 노드 들은 중간 노드의 경우에는 현재 노드의 위치를 기준으로 해서, 다음으로 이동할 노드의 상대적인 거리를 내부 값으로 저장하며, 단말 노드의 경우에는 실제 돌려줄 리턴값을 내부 값으로 저장한다.
상기 정렬 과정에 의하여 생성된 일차원 배열은 도 6에 도시된 바와 같이, 연결리스트에 의한 동적인 자료 구조의 생성 없이, 직렬화된 정적인 검색 테이블의 구성을 가진다.
아래에서는, 도 6을 참조하여 일차원 검색 테이블의 작성 과정을 보다 상세하게 설명한다.
도 6의 이진 트리의 각 노드에는 상위 레이어로부터 하위 레이어로, 즉 레이어-0, 레이어-1, 레이어-2, 레이어-3, 레이어-4, 레이어-5의 순으로, 그리고 각 레이어 내에서는 각 노드들에 대하여 순차적인 인덱스 번호가 부여된다. 본 발명에 따른 실시예에서는, 도 6에 도시된 바와 같이 인덱스 번호는 형제 노드(sibling node)에는 인접한 인덱스 번호가 부여된다. 본 실시예에서는 동일한 레이어 내에서는 좌측에서 우측으로 인덱스 번호가 부여되지만, 선택적으로 동일한 레이어 내에서는 우측에서 좌측으로 인덱스 번호를 부여하는 것도 가능하다.
도 6에서, 인덱스 번호 0, 4, 7, 8, 9, 10, 12, 13 . . . 가 부여된 단말 노드들에는 표 1에 도시된 코드워드의 크기에 따라 좌측에서 우측으로 실제 리턴 값 '60', '59', '61', '58', '62', '57', 및 '63'이 할당된다.
한편, 인덱스 번호 1, 2, 3, 5, 6, 11, . . . 가 부여된 중간 노드들에는 현재 노드와 다음 이동할 노드 간의 상대적인 거리 값이 저장된다. 본 실시예에서는 인덱스 번호 1, 2, 3, 5, 6, 11가 부여된 중간 노드들에는 현재 노드의 인덱스 번호와 자식 노드(child node) 중 좌측 노드의 인덱스 번호와의 차이 값, 즉 '-1', '-2', '-3', '-3', '-4', '-1'이 각각 저장된다.
도 7은 도 6에 도시된 테이블 재구성 법에 따라 구성된 일차원 검색 테이블을 도시한다. 재구성된 일차원 검색 테이블은 상기 이진 트리의 각 노드에 부여된 인덱스 번호와 인덱스 번호와 연관하여 저장된 각 노드의 내부 값을 포함한다.
검색 테이블에 저장된 각 노드의 내부 값은 중간 노드의 경우에는 현재 노드와 다음 이동할 노드의 상대적인 거리 값, 본 실시예의 경우 현재 노드의 인덱스 번호와 자식 노드 중 좌측 노드의 인덱스 번호와의 차이값이기 때문에, 항상 음의 값을 가진다. 반면에, 단말 노드의 경우에는 되돌려줄 결과 값, 즉 리턴 값(return value)을 저장하기 때문에, 양의 값을 가진다.
본 실시예에서는 중간 노드의 경우, 현재 노드와 자식 노드 중 좌측 노드와의 인덱스 번호의 차이값을 가지지만, 선택적으로 우측 노드의 인덱스 번호와의 차이값을 저장하는 등 다른 형태의 상대적인 거리 값을 저장하도록 하는 것도 가능하다.
도 7에 도시된 일차원 검색 테이블에서 '좌측 노드: 0', '우측 노드: 1'로 표시된 열은 도 8에 도시된 최종적인 검색 테이블에는 포함되지 않고, 테이블을 생성하는 중간 과정을 나타낸다. 이들은, 검색 과정에서 이동할 검색 주소 값을 나타내는 것으로 부호화된 비트 스트림으로부터 읽어들인 1 비트 데이터와 연동하여 각각의 경우, 다음으로 이동할 검색 단계의 노드의 인덱스 번호를 표시한다.
종래의 이진 트리 허프만 검색 테이블의 경우에는, 검색을 수행하기 위한 검색 테이블은 각 노드들에 대해, 각 노드에 해당하는 데이터 값, 좌측 또는 우측 노드로 분기시 이동하기 위한 주소 값의 세 가지 구성 요소를 가지고 있어야 하므로, 이진 트리의 각각의 노드에 대해 3개의 메모리 공간을 필요로 하게 된다.
반면에, 도 8은 본 발명에 따른 최종 검색 테이블로서 중간 노드의 경우 현재 노드를 기준으로 다른 이동할 노드의 상대적인 거리 값만을 가지고 있으며, 단말 노드의 경우 되돌려 줄 결과 값, 즉 리턴 값만을 가진다. 또한, 이들 두 가지 값은 도 7의 굵은 선으로 표시된 바와 같이, 항상 배타적으로 발생하므로, 도 8에 도시된 바와 같이, 일차원 공간상에 배열할 수 있다. 따라서, 기존의 검색 테이블과 대비하여 메모리 사용 공간이 1/3로 감소하게 된다.
도 9는 도 8에 도시된 본 발명에 따른 일차원 검색 테이블을 이용한 허프만 디코딩 방법을 설명하기 위한 플로우 차트이다.
단계 910에서는 본 발명에 따른 일차원 검색 테이블을 이용한 디코딩의 시작 단계로서, 허프만 디코더로 입력되는 부호화된 비트 스트림의 소정의 코드워드의첫 번째 비트 값을 인덱스 정보로 사용하여, 도 8의 검색 테이블의 엔트리에 액세싱한다.
단계 920에서는 단계 910에서 액세싱한 엔트리에 해당하는 현재 노드가 중간 노드인지 단말 노드인지 여부를 판단한다. 본 실시예에서는 해당 엔트리의 내부 값이 양의 값(positive value)인지 음의 값(negative value)인지 여부에 따라 노드의 종류를 판별한다. 단계 920에서는 해당 엔트리에 저장된 내부 값이 양의 값인 경우, 현재 노드를 단말 노드로 판단하고, 단계 930으로 진행하고, 상기 내부 값이 음의 값인 경우, 현재 노드를 중간 노드로 판단하고, 단계 940으로 진행한다.
단계 930에서는 단계 920에서 현재 노드를 단말 노드로 판단한 경우, 현재 엔트리의 내부 값을 실제 되돌려 줄 리턴 값으로 출력한다.
단계 940에서는 단계 920에서 현재 노드를 중간 노드로 판단한 경우, 하기의 수학식 1에 따라 새로운 인덱스 값을 계산하여, 검색 테이블에서 계산된 인덱스 값에 해당하는 엔트리로 액세싱한다.
상기 수학식 1에서 우측의 index는 현재 노드에 해당하는 인덱스 번호이며, data(index)는 현재 엔트리에 내부 값으로 저장된 현재 노드와 다음 이동할 노드간의 상대적인 거리 값이며, new_digit()는 다음 비트 값을 의미한다.
본 실시예에서는 상기 상대적인 거리 값은 현재 노드의 인덱스 번호와 현재 노드의 자식 노드 중 좌측 노드의 인덱스 번호와의 차이 값이다.
아래에서는, 도 8에 도시된 본 발명에 따른 일차원 검색 테이블과 도 9에 도시된 플로우차트를 참조하여, 허프만 디코더로 입력되는 부호화된 비트 스트림 중 '1110100'을 디코딩하는 과정을 설명한다.
단계 910에서는 디코딩의 시작 단계로서, 허프만 디코더로 입력되는 부호화된 비트 스트림 '1110100'의 첫 번째 코드워드의 첫 번째 비트 '1'을 인덱스 정보로 사용하여 도 8의 검색 테이블의 엔트리에 액세싱한다. 여기에서는, 소정의 리턴 값에 대응하는 코드워드가 비트 스트림이 '1110100'의 첫 번째 비트에서 시작된다고 가정한다.
단계 920에서는 단계 910에서 액세싱한 현재 엔트리, 즉 도 8의 검색 테이블의 인덱스 값 1을 갖는 엔트리에 해당하는 노드의 내부 값의 부호에 따라 현재 노드가 중간 노드인지 단말 노드인지 여부를 판단한다. 본 실시예에서는, 단계 920에서는 인덱스 값 1을 갖는 엔트리의 내부 값이 음의 값 '-1' 이므로, 현재 노드를 중간 노드로 판단하고, 단계 940으로 진행한다.
단계 940에서는 수학식 1에 따라 새로운 인덱스 값을 계산하여, 계산된 인덱스 값에 따라 새로운 엔트리로 액세싱하고, 단계 920으로 진행한다. 본 실시예에서는 data(index)는 인덱스 번호 1 - 2의 결과 값이며, new_digit()는 디코딩 하고자 하는 비트 스트림 '1110100'의 다음 비트 값 '1'이므로, 새로운 인덱스 값은
index = 1 - (-1) + 1 = 3
이 된다.
따라서, 단계 940에서는 인덱스 3에 해당하는 엔트리로 액세싱하고, 단계920으로 진행한다.
단계 920에서는 단계 940에서 액세싱한 현재 엔트리, 즉 도 8의 검색 테이블의 인덱스 3에 해당하는 엔트리의 노드가 중간 노드인지 단말 노드인지 여부를 판단한다. 단계920에서는 엔트리의 내부 값 '-3'이 음의 값이므로, 현재 노드를 중간 노드로 판단하여 단계 940으로 다시 진행한다.
단계 940은 수학식 1에 따라 새로운 인덱스 값을 계산한다. new_digit()는 디코딩 하고자 하는 비트 스트림 '1110100'의 첫 번째 코드워드의 두 번째 비트 값 '1'이므로, 새로운 인덱스 값은
index = 3 - (-3) + 1 = 7
이므로, 인덱스 7에 해당하는 엔트리로 액세싱하고, 단계 920으로 진행한다.
단계 920에서는 단계 940에서 액세싱한 현재 엔트리, 즉 도 8의 검색 테이블의 인덱스 7에 해당하는 엔트리의 노드가 중간 노드인지 단말 노드인지 여부를 판단한다. 단계 920에서는 현재 엔트리의 내부 값이 양의 값이므로, 현재 노드를 단말 노드로 판단하고, 단계 930으로 진행한다.
단계 930에서는 인덱스 7에 해당하는 엔트리의 내부 값 '4'를 실제 되돌려 줄 리턴 값, 즉 디코딩된 코드워드로 출력하여, 부호화된 비트 스트림 '1110100' 중 첫 번째 비트 셋, 즉 코드워드 '111'에 대한 디코딩 단계를 끝내고, 두 번째 코드워드에 대한 디코딩을 재개한다.
단계 910에서는 비트 스트림 '1110100'의 두 번째 코드워드의 첫 번째 비트 '0'을 인덱스 정보로 사용하여 도 8의 검색 테이블의 엔트리에 액세싱한다.
단계 920에서는 단계 910에서 액세싱한 인덱스 0에 해당하는 엔트리의 내부 값이 양의 값이므로, 현재 노드를 단말 노드로 판단하여 단계 930으로 진행한다.
단계 930에서는 인덱스 0에 해당하는 엔트리의 내부 값 '60'을 디코딩된 코드워드로 출력하여, 부호화된 비트 스트림 '1110100' 중 두 번째 코드워드 '0'에 대한 디코딩 단계를 끝내고, 세 번째 코드워드에 대한 디코딩을 재개한다.
단계 910에서는 비트 스트림 '1110100'의 세 번째 코드워드의 첫 번째 비트 '1'을 인덱스 정보로 이용하여 도 8의 검색 테이블의 엔트리에 액세싱한다.
단계 920에서는 단계 910에서 액세싱한 현재 엔트리, 즉 인덱스 1에 해당하는 엔터리의 내부 값 '-1'이 음의 값이므로, 현재 노드를 중간 노드로 판단하여 단계 940으로 진행한다.
단계 940에서는 수학식 1에 따라 새로운 인덱스 값을 계산한다. new_digit()는 디코딩 하고자 하는 비트 스트림 '1110100'의 다음 비트 값 '0'이므로, 새로운 인덱스 값은
index = 1 - (-1) + 0 = 2
이므로, 인덱스 2에 해당하는 엔트리로 액세싱하고, 단계 920으로 진행한다.
단계 920에서는 단계 940에서 액세싱한 현재 엔트리, 즉 도 8의 검색 테이블의 인덱스 2에 해당하는 엔트리의 노드가 중간 노드인지 단말 노드인지 여부를 판단한다. 본 실시예에서는 현재 엔트리의 내부 값 '-2'이 음의 값이므로, 현재 노드를 중간 노드로 판단하여 단계 940으로 진행한다.
단계 940에서는 수학식 1에 따라 새로운 인덱스 값을 계산한다.new_digit()는 디코딩 하고자 하는 비트 스트림 '1110100'의 세 번째 코드워드의 두 번째 비트 값이 '0'이므로 수학식 1에 따르면, 새로운 인덱스 값은
index = 2 - (-2) + 0 = 4
이므로, 인덱스 4에 해당하는 엔트리로 액세싱하고, 단계 920으로 진행한다.
단계 920에서는 단계 940에서 액세싱한 현재 엔트리, 즉 도 8의 검색 테이블의 인덱스 4에 해당하는 엔트리의 노드가 중간 노드인지 단말 노드인지 여부를 판단한다. 단계 920에서는 현재 엔트리의 내부 값 '59'가 양의 값이므로, 현재 노드를 단말 노드로 판단하고, 단계 930으로 진행한다.
단계 930에서는 현재 엔트리의 내부 값 '59'를 부호화된 비트 스트림 '1110100'의 세 번째 코드워드 '100'의 디코딩된 코드워드로 출력한다.
이와 같은 방식으로, 부호화된 비트 스트림 '1110100'의 세 개의 코드워드에 대한 디코딩을 수행하여, 디코딩된 코드워드 '4,60,59'를 결과 값으로서 출력한다.
이와 같이, 기존의 이진 트리에 기초한 허프만 디코딩 방법과 본 발명에 따른 개선된 허프만 디코딩 방법의 수행 과정을 과정을 대비하면, 본 발명에 따른 허프만 디코딩 방법에서는 부호화된 비트스트림으로부터 입력 받은 1 비트 데이터를 직접 검색 테이블의 엔트리 엑세싱, 즉 주소값의 연산에 적용함으로써, 기존의 허프만 디코딩 방법에서 노드 간의 이동을 위하여 존재하던 조건문을 제거할 수 있도록 하여, 보다 향상된 프로세싱 효율을 얻을 수 있다.
표 2는 본 발명에 따른 개선된 허프만 디코딩 방법에 따른 수행 결과와 기존의 순차 검색 방식에 의한 허프만 디코딩 방법에 따른 수행 결과를 나타낸다.
표 2에 나타난 수행 결과에서 나타난 바와 같이, 임의의 MPEG-2 AAC(advanced audio coding) 테스트 파일을 시험하면, 허프만 코드북의 종류에 따라 최소 30%에서 최대 777%의 성능 향상을 가져온다. 또한, 평균 검색 횟수 측면에서도 본 발명에 따른 허프만 디코딩 방법은 일반적인 순차 검색 방식의 허프만 디코더에 비하여 약 75%의 성능 향상을 보여준다.
표 3은 동일한 측정 환경을 유지하면서 6가지 서로 다른 MPEG-2 AAC 테스트 파일을 사용하여 측정을 수행한 결과를 나타낸다.
표 3에 나타난 바와 같이, 본 발명에 따른 개선된 허프만 디코딩 방법은 기존의 순차 검색 방식의 허프만 디코딩 방법에 비해, 파일의 종류에 따라 최소 24%에서 최고 776%의 검색 속도 향상을 가져온다.
본 발명은 상술한 실시예에 한정되지 않으며, 본 발명의 사상내에서 당업자에 의한 변형이 가능함은 물론이다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 하드디스크, 플로피디스크, 플래쉬 메모리, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
이상에서 설명한 바와 같이, 본 발명에 의한 개선된 허프만 디코딩 방법 및 장치에 따르면, 기존의 이진 트리 검색에서 필요로 하던 '비교 및 분기' 연산을 제거함으로써 검색 속도를 향상시킬 수 있으며, 또한 검색 테이블의 구성을 위한 메모리 공간의 요구 역시 기존의 '비교 및 분기' 구문에서 사용되는 테이블 대비 1/3의 메모리만으로도 구현이 가능하게 되는 효과를 갖는다.

Claims (18)

  1. 검색 테이블을 이용한 부호화된 비트 스트림의 디코딩 방법에 있어서,,
    (a) 상기 부호화된 비트 스트림을 수신하는 단계와;
    (b) 상기 수신된 부호화된 비트 스트림의 일부 비트로 이루어진 코드워드 중 첫 번째 비트로부터 인덱스 정보를 구하고, 상기 인덱스 정보에 대응하는 상기 검색 테이블의 엔트리에 액세싱하는 단계와;
    (c) 상기 액세싱한 엔트리의 내부 값에 기초하여 상기 엔트리의 종류를 결정하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  2. 제1항에 있어서, 상기 (c) 단계는 상기 액세싱한 엔트리의 내부 값의 부호에 따라 상기 엔트리가 중간 노드(internal node)에 해당하는지 또는 단말 노드(terminal node)에 해당하는지 여부를 판단하는 것을 특징으로 하는 디코딩 방법.
  3. 제1항 또는 제2항에 있어서, (d) 상기 (c) 단계에서 상기 액세싱한 엔트리가 중간 노드라고 결정되는 경우, 상기 현재 엔트리의 인덱스 값, 상기 액세싱한 엔트리의 내부 값, 및 상기 코드워드 중 두 번째 비트 값에 기초하여, 다음으로 액세싱할 엔트리의 인덱스 값을 계산하는 것을 특징으로 하는 디코딩 방법.
  4. 상기 제3항에 있어서, 상기 다음으로 액세싱할 엔트리의 인덱스 값은 아래의 수학식 1에 따라 계산되며, 계산된 인덱스 값을 사용하여 대응하는 상기 검색 테이블의 엔트리에 액세싱하는 단계를 더 포함하며, 수학식 1은
    [수학식 1]
    index = index - data(index) + new_digit( )
    이며, index는 현재 엔트리의 인덱스 번호이며, data(index)는 현재 엔트리의 리턴 값이며, new_digit()는 상기 코드워드 중 다음 비트 값인 것을 특징으로 하는 디코딩 방법.
  5. 상기 제3항 또는 제4항에 있어서, 상기 현재 엔트리의 내부 값은 현재 노드와 다음 이동할 노드의 상대적인 거리인 것을 특징으로 하는 디코딩 방법.
  6. 상기 제3항 또는 제4항에 있어서, 상기 다음으로 액세싱할 엔트리는 현재 엔트리에 해당하는 노드의 자식 노드 중 좌측 노드에 해당하는 엔트리이며, 상기 상대적인 거리는 현재 엔트리의 인덱스 값과 상기 좌측 노드에 해당하는 엔트리의 인덱스 값과의 차이 값인 것을 특징으로 하는 디코딩 방법.
  7. 제3항에 있어서, 상기 (c) 단계에서 상기 액세싱한 엔트리의 노드가 중간 노드라고 판단되는 경우, 상기 액세싱한 엔트리의 인덱스 값, 상기 내부 값의 절대 값, 및 상기 코드워드의 다음 비트값을 더한 값에 기초하여 상기 검색 테이블의 엔트리에 액세싱하는 단계를 더 포함 것을 특징으로 하는 디코딩 방법.
  8. 제1항 또는 제2항에 있어서, (e) 상기 (b) 단계에서 액세싱한 상기 엔트리가 단말 노드라고 판단되는 경우, 상기 검색 테이블의 내부 값을 상기 부호화된 비트 스트림의 일부 비트로 이루어진 코드워드의 디코딩된 코드워드로 출력하는 것을 특징으로 하는 디코딩 방법.
  9. 제3항에 있어서, 상기 (c) 단계는 (c1) 상기 계산된 인덱스를 사용하여 상기 인덱스에 대응하는 상기 검색 테이블의 엔트리의 내부 값에 기초하여 상기 액세싱된 엔트리가 중간 노드에 해당하는지 또는 단말 노드에 해당하는지 여부를 판단하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  10. 제9항에 있어서, 상기 (c) 단계는 (c2) 상기 엔트리의 노드가 단말 노드라고 판단되는 경우, 상기 검색 테이블의 내부 값을 상기 부호화된 비트 스트림의 소정의 부호화된 코드워드의 디코딩된 코드워드로 출력하는 것을 특징으로 하는 디코딩 방법.
  11. 제1항에 있어서, 상기 부호화된 비트 스트림은 MPEG(Motion Pictures Experts Group) 규격, JPEG 규격, H.26x 규격 중 어느 하나에 의해 부호화 된 것을 특징으로 하는 디코딩 방법.
  12. 제1항에 있어서, 상기 검색 테이블은 이진 트리로부터 생성된 검색 테이블인 것을 특징으로 하는 디코딩 방법.
  13. 부호화된 비트 스트림을 이진 트리 검색에 따라 디코딩하기 위한 디코딩 장치에 있어서,
    상기 부호화된 비트 스트림을 디코딩하기 위한 프로세서와,
    상기 프로세서에 결합되고, 상기 디코딩과 관련된 검색 테이블이 저장된 메모리를 포함하며,
    상기 검색 테이블은 상기 이진 트리의 노드들에 대응되며, 내부 값을 가지는 엔트리를 구비하며, 상기 엔트리에 해당하는 상기 이진 트리의 노드의 종류는 상기 엔트리와 연관되어 저장된 내부 값에 따라 결정되는 것을 특징으로 하는 디코딩 장치.
  14. 제13항에 있어서, 상기 엔트리와 연관되어 저장된 내부 값은 상기 엔트리에 해당되는 노드의 종류에 따라 부호를 달리하는 것을 특징으로 하는 디코딩 장치.
  15. 제13항 또는 제14항에 있어서, 상기 엔트리에 해당하는 노드가 중간 노드인 경우, 상기 엔트리의 내부 값은 현재 엔트리에 해당하는 중간 노드와 다음으로 액세싱 할 노드의 상대적인 거리 값인 것을 특징으로 디코딩 장치.
  16. 제15항에 있어서, 상기 현재 엔트리의 내부 값은 다음으로 액세싱 할 엔트리는 현재 엔트리에 해당하는 노드의 자식 노드 중 좌측 노드에 해당하는 엔트리이며, 상기 상대적인 거리는 현재 엔트리의 인덱스 값과 상기 좌측 노드에 해당하는 엔트리의 인덱스 값과의 차이 값인 것을 특징으로 하는 디코딩 장치.
  17. 제13항 또는 제14항에 있어서, 상기 엔트리가 단말 노드인 경우, 상기 엔트리의 내부 값은 상기 비트 스트림의 소정의 코드워드에 대한 디코딩된 코드워드인 것을 특징으로 하는 디코딩 장치.
  18. 제13항에 있어서, 상기 부호화된 비트 스트림은 MPEG 규격, JPEG, 또는 H.26X 규격 중 어느 하나에 의해 부호화 된 것을 특징으로 하는 디코딩 장치.
KR10-2002-0010981A 2002-02-28 2002-02-28 개선된 허프만 디코딩 방법 및 장치 KR100484137B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR10-2002-0010981A KR100484137B1 (ko) 2002-02-28 2002-02-28 개선된 허프만 디코딩 방법 및 장치
US10/359,089 US6741191B2 (en) 2002-02-28 2003-02-06 Huffman decoding method and apparatus
JP2003038864A JP3714935B2 (ja) 2002-02-28 2003-02-17 改善されたハフマンデコーディング方法及び装置
CNB03106762XA CN1254921C (zh) 2002-02-28 2003-02-28 改进的哈夫曼译码方法和装置
EP20030251215 EP1341314A3 (en) 2002-02-28 2003-02-28 Improved huffman decoding method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0010981A KR100484137B1 (ko) 2002-02-28 2002-02-28 개선된 허프만 디코딩 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20030071327A true KR20030071327A (ko) 2003-09-03
KR100484137B1 KR100484137B1 (ko) 2005-04-18

Family

ID=36753915

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0010981A KR100484137B1 (ko) 2002-02-28 2002-02-28 개선된 허프만 디코딩 방법 및 장치

Country Status (5)

Country Link
US (1) US6741191B2 (ko)
EP (1) EP1341314A3 (ko)
JP (1) JP3714935B2 (ko)
KR (1) KR100484137B1 (ko)
CN (1) CN1254921C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100468742B1 (ko) * 2002-06-26 2005-01-29 삼성전자주식회사 이진 검색 기법을 이용한 jpeg 허프만 테이블 디코더및 그 방법

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7358870B2 (en) 2003-09-02 2008-04-15 Nokia Corporation Huffman coding and decoding based upon sectioning of a Huffman coding tree
US6839005B1 (en) * 2003-11-07 2005-01-04 Broadcom Corporation Low memory and MIPS efficient technique for decoding Huffman codes using multi-stage, multi-bits lookup at different levels
KR100959532B1 (ko) 2003-12-18 2010-05-27 엘지전자 주식회사 Cavlc 복호 방법
US6975253B1 (en) * 2004-08-06 2005-12-13 Analog Devices, Inc. System and method for static Huffman decoding
JP2006178013A (ja) * 2004-12-20 2006-07-06 Canon Inc データベース作成装置及び方法
US20060190251A1 (en) * 2005-02-24 2006-08-24 Johannes Sandvall Memory usage in a multiprocessor system
EP1908287A4 (en) * 2005-07-20 2011-02-16 Humax Co Ltd CODIER AND DECODER
KR100840757B1 (ko) 2006-02-28 2008-06-23 노키아 코포레이션 허프만 부호화 및 복호화
CN101072034B (zh) * 2007-06-12 2010-06-02 华为技术有限公司 一种变长解码方法及其装置
TW201143306A (en) * 2010-05-19 2011-12-01 Hon Hai Prec Ind Co Ltd Method for storing information of nodes in a huffman tree and method for decoding data using an array of the huffman tree
CN102938685A (zh) * 2012-11-15 2013-02-20 大连理工大学 一种基于变长编码的无线传感器网络数据压缩方法
CN104283567B (zh) * 2013-07-02 2018-07-03 北京四维图新科技股份有限公司 一种名称数据的压缩、解压缩方法及设备
US9086871B2 (en) 2013-09-26 2015-07-21 International Business Machines Corporation Reordering the output of recirculated transactions within a pipeline
CN104717499B (zh) * 2015-03-31 2018-06-05 豪威科技(上海)有限公司 一种霍夫曼表的存储方法及用于jpeg的霍夫曼解码方法
JP6529588B2 (ja) * 2015-07-16 2019-06-12 三菱電機株式会社 情報処理装置、情報処理方法及びプログラム
CN107797541B (zh) * 2016-08-29 2020-11-10 河北百亚信息科技有限公司 基于智能家居环境中ZigBee固件升级的镜像文件轻便解压算法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292114B1 (en) * 1999-06-10 2001-09-18 Intel Corporation Efficient memory mapping of a huffman coded list suitable for bit-serial decoding
EP1069691A1 (en) * 1999-06-15 2001-01-17 STMicroelectronics S.r.l. Decoding method for a Huffman code
US6307489B1 (en) * 2000-03-15 2001-10-23 Robert Allen Freking Fast and small serial huffman decoder for decoding at an optimally high rate
US6636167B1 (en) * 2000-10-31 2003-10-21 Intel Corporation Method of generating Huffman code length information

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100468742B1 (ko) * 2002-06-26 2005-01-29 삼성전자주식회사 이진 검색 기법을 이용한 jpeg 허프만 테이블 디코더및 그 방법

Also Published As

Publication number Publication date
EP1341314A2 (en) 2003-09-03
JP3714935B2 (ja) 2005-11-09
KR100484137B1 (ko) 2005-04-18
EP1341314A3 (en) 2006-01-04
US6741191B2 (en) 2004-05-25
CN1441555A (zh) 2003-09-10
US20030174076A1 (en) 2003-09-18
CN1254921C (zh) 2006-05-03
JP2003273748A (ja) 2003-09-26

Similar Documents

Publication Publication Date Title
KR100484137B1 (ko) 개선된 허프만 디코딩 방법 및 장치
Chambi et al. Better bitmap performance with roaring bitmaps
Bille et al. Random access to grammar-compressed strings and trees
US9235651B2 (en) Data retrieval apparatus, data storage method and data retrieval method
US8838551B2 (en) Multi-level database compression
US7827187B2 (en) Frequency partitioning: entropy compression with fixed size fields
CA2371375C (en) Bitwise adaptive encoding using prefix prediction
US6982661B2 (en) Method of performing huffman decoding
EP0650264A1 (en) Byte aligned data compression
US20230042018A1 (en) Multi-context entropy coding for compression of graphs
US9665590B2 (en) Bitmap compression for fast searches and updates
CN114598331A (zh) Polar码的编码方法、编译码方法及装置
US7796059B2 (en) Fast approximate dynamic Huffman coding with periodic regeneration and precomputing
US7348901B2 (en) Method and system for decoding variable length encoded signals, computer program product therefor
US7205915B2 (en) Method of decoding variable length prefix codes
Cannane et al. General‐purpose compression for efficient retrieval
Huwald et al. Compressing molecular dynamics trajectories: Breaking the one‐bit‐per‐sample barrier
US6778107B2 (en) Method and apparatus for huffman decoding technique
US20230267376A1 (en) System and method for off-chip data compression and decompression for machine learning networks
KR20050037307A (ko) N-트리 검색에 기초한 허프만 디코딩 방법 및 장치
CN117335811A (zh) 列数据压缩方法及装置、存储介质
JPH01277300A (ja) 学習型ベクトル量子化器
Höglund Lightweight Real-Time Lossless Software Compression of Trace Data
CN115185901A (zh) 搜索引擎的解压缩方法、系统、介质及电子设备
JPH0219479B2 (ko)

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: 20120329

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20130328

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee