KR100527891B1 - 허프만 디코딩을 수행하는 방법 - Google Patents

허프만 디코딩을 수행하는 방법 Download PDF

Info

Publication number
KR100527891B1
KR100527891B1 KR10-2003-7006044A KR20037006044A KR100527891B1 KR 100527891 B1 KR100527891 B1 KR 100527891B1 KR 20037006044 A KR20037006044 A KR 20037006044A KR 100527891 B1 KR100527891 B1 KR 100527891B1
Authority
KR
South Korea
Prior art keywords
code
length
huffman
data structure
binary digital
Prior art date
Application number
KR10-2003-7006044A
Other languages
English (en)
Other versions
KR20030040567A (ko
Inventor
아챠리야틴쿠
차이핑-싱
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20030040567A publication Critical patent/KR20030040567A/ko
Application granted granted Critical
Publication of KR100527891B1 publication Critical patent/KR100527891B1/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

Abstract

허프만 디코딩을 수행하는 방법의 실시예가 기재되어 있다. 이러한 일실시예에서는, 데이터 구조가 사용되지만, 물론, 본 발명은 이러한 특정 실시예로 그 범위가 제한되지는 않는다.

Description

허프만 디코딩을 수행하는 방법{METHOD OF PERFORMING HUFFMAN DECODING}
본 발명은 허프만 디코딩에 관한 것이다.
본 특허 출원은 동시 출원된 미국특허출원 제09/704,392호(Acharya 등에 의한 "허프만 디코딩을 수행하는 방법", 본 발명의 양수인에게 양도됨)와 관련된 것이고, 이것은 여기서 레퍼런스로 포함된다.
잘 알려진 바와 같이, 허프만 코딩은 널리 보급된 가변 길이 통계적 인코딩 스킴이다. 주지된 바와 같이, 허프만 코드 생성은 각각의 개별 심볼에 대한 통계적 확률에 의존한다. 예로, D.A. Huffman 저서의 논문, "A Method for the Reconstruction of Minimum-Redundancy Codes"(IRE의 학회지, 40권 제9호, 1098~1101 페이지, 1952)를 참조하라. 적어도 부분적으로, 구현의 효율성 및 용이성으로 인해, 인코딩 스킴에 기반한 전형적인 테이블 룩업이 허프만 인코딩에 널리 사용된다. 그러나, 디코딩에 따른 테이블 검색은 통상적으로 소프트웨어 및 하드웨어 모두에서 비효율적이다. 이것은 특히, 실제 애플리케이션에 대해 전형적인 것과 같이, 테이블내의 엔트리 수가 상당히 높은 경우이다. 허프만 디코딩에 사용되는 다른 접근방법은 "트리 트래버싱 기법"을 사용하는 허프만 트리의 생성이다. 그러나, 이러한 디코딩 기법도 역시 단점이 있다. 이 특정 기법은 비트 순차적이고, 허프만 트리 생성 프로세스 및 디코딩 프로세스에 대한 계산의 실행 및 메모리 할당 관점 모두에서 과도한 "오버헤드"를 초래한다.
도1은 허프만 트리 구조 및 연관된 허프만 트리의 일례를 도시한 도면.
도2는 도1의 허프만 트리에 대해 가능한 허프만 코드를 도시한 테이블.
도3은 허프만 코드를 고유하게 결정하도록 선택된 규칙이 적용되는 허프만 코드의 일례를 도시한 테이블.
도4는 대응하는 디코딩 트리를 갖는 허프만 인코딩 테이블의 일례를 도시한 도면.
도5는 비트 직렬 허프만 디코딩을 위한 ROM 엔트리를 도시한 테이블.
도6은 상이한 구조가 적용된 도3의 테이블로부터 정보를 이용하는 테이블
도7은 본 발명에 따른 데이터 구조의 일실시예를 도시한 테이블.
발명의 요약
허프만 디코딩을 수행하는 방법의 실시예가 기재된다. 이러한 일실시예에서는, 데이터 구조가 사용되지만, 물론, 본 발명은 이러한 특정 실시예로 그 범위가 제한되지는 않는다.
다음의 상세한 설명에서는, 본 발명의 완전한 이해를 제공하기 위해, 여러 가지 특정 세부사항들이 제시되어 있다. 그러나, 이 기술 분야에서 통상의 지식을 가진 자는, 본 발명이 이러한 특정 세부사항들 없이도 실시될 수 있다는 것이 이해될 것이다. 다른 예에서, 주지된 방법, 절차, 구성요소 및 회로는, 본 발명을 모호하지 않게 하기 위해, 상세히 설명되지는 않는다.
전술된 바와 같이, 심볼 세트에 대한 허프만 코드의 생성은 소스 심볼의 발생 확률에 기반한다. 통상적으로 허프만 트리라고 부르는 2진 트리가 사용된다. D.A.Huffman은 상기의 논문에서 다음의 방식으로 프로세스를 기술하고 있다.
. 그 확률을 갖는 모든 가능한 심볼들을 목록으로 만듦.
. 최소 확률을 갖는 2개의 심볼을 찾음
. 그 확률이 각각의 확률의 합인, 두 심볼을 포함하는 단일 세트로 교체함
. 목록이 하나의 멤버만을 포함할 때까지 반복함
이 절차는 세트들의 귀납적 조직 세트를 생성하는데, 이것의 각각은 2개의 멤버를 정확히 포함한다. 그러므로, 이것은 심볼들을 "잎(leaves)"으로 갖는 2진 트리("허프만 트리")로 표현될 수 있다. 그리고, 특정 심볼에 대한 코드("허프만 코드")를 형성하는 것은, 뿌리로부터 그 심볼까지 2진 트리를 좌우로 이동하면서, 좌측 가지에 "0"을, 우측 가지에 "1"을 기록한다. 그러나, 이 절차에 대한 하나의 문제는, 결과로서 생성된 허프만 트리가 고유하지 않다는 점이다. 이러한 코드 애플리케이션의 일례가 GZIP과 같은 텍스트 압축이다. GZIP은, UNIX 운영 체제상에서 "압축(compress)" 텍스트 압축 유틸리티를 대체하기 위한, "자유로운(free)" 또는 자유롭게 이용가능한 UNIX와 같은 운영 체제를 개발하기 위한 목표로 GNU(Gnu's Not Unix) 프로젝트 하에서 개발된 텍스트 압축 유틸리티이다. 예를 들면, 웹사이트 "http"//www.gzip.orh/"에서 gzip-1.2.4로서 이용가능한, Gailly, J.L 및 Adler,M.의 GZIP documentation and sources를 참조하라.
주지된 바와 같이, 결과로서 생성되는 허프만 코드는 프리픽스(prefix) 코드이고, 보다 자주 나타나는 심볼은 가변 길이 허프만 코드를 형성하기 위해 보다 작은 수의 비트로 설정된다. 결과적으로, 평균 코드 길이는 심볼 발생 주파수를 이용하여 급격히 감소된다.
도1은 3개의 소스 심볼을 갖는 허프만 트리의 간단한 예를 도시하고 있다. 상이한 2진 심볼을 트리의 에지에 설정함으로써, 몇몇 2진 코드를 이용하여 동일한 허프만 트리가 표현될 수 있다.
이 허프만 트리에 대한 허프만 코드의 가능한 세트가 도2에 도시되어 있다. 도2로부터, 허프만 코드가 고유하지 않은 것으로 도시되었지만, 이 예로부터, 각 심볼의 개별 코드 길이는 고유하게 나타난다.
대응하는 허프만 트리를 구성함으로써 허프만 코드에 대한 길이 정보를 생성할 수 있다. 그러나, 전술된 바와 같이, 이 방식으로 생성되는 경우, 허프만 코드는 고유하지 않을 수 있다. 그럼에도 불구하고, 2가지 조건을 부과함으로써, 허프만 트리를 사용함으로써 생성된 허프만 코드가 고유한 것으로 보장될 수 있다는 것을 볼 수 있다. 이 조건은 다음과 같다.
1. 주어진 비트 길이의 모든 코드가, 그것이 표현하는 심볼과 동일한 순서로, 사전 편집상(lexicographically) 연속된 값을 가짐; 및
2. 보다 짧은 코드는 사전 편집상 보다 긴 코드를 앞섬.
이러한 조건에 기반하여, 허프만 코드가 고유하게 결정될 수 있다. 예를 들면, 도3은 이러한 조건을 적용한 19개 심볼의 허프만 코드 세트를 도시하고 있는데, 여기서, 코드 길이는 허프만 트리를 이용하여 사전 결정된다. 도3의 테이블에 있어서, 허프만 코드내의 엔트리에서의 대쉬(-)는, 심볼 및 전류원 알파벳에 의한 코드가 존재하지 않고, 그 길이 정보가 0이라는 것을 나타낸다.
본 발명은 이에 대해 제한되지 않지만, 상기의 조건들은, 예를 들면, 전술된 GZIP 유틸리티와 같은, 다양한 압축 방법 및 표준에 적용될 수 있다. 통상적으로, 이러한 애플리케이션에서, 허프만 트리 정보는 압축된 텍스트 데이터에 따라 코드 길이 정보 세트 형태로 전달된다. 그러므로, 고유한 허프만 트리를 복원하는데 코드 길이 정보 세트는 충분하다. 예를 들면, 도3에 도시된 허프만 코드 테이블은, GZIP에서 구현되는 바와 같이, 다음의 프로세스를 이용하여 생성될 수 있다.
코드 길이는 초기에 Length[1];
1) 각 코드 길이에 대한 코드수를 카운트함.
"카운트[N]를 길이 N(N>=1)인 코드수로 함.
2) 각 코드 길이에 대한 최소 코드의 수치값을 찾음
Huffman_code=0; count[0]=0;
for(i=1 to MAX_BITS){
Huffman_code=(Huffman_code + count[i-1])<<1;
next_code[i]=Huffman_code;
}
3) 2에서 결정된 연속값을 이용하여 모든 코드에 대해 수치값을 설정함
전술된 바와 같이, 허프만 디코딩은 테이블 룩업 기법을 이용하여 비교적 쉽게 달성될 수 있다. 그러나, 코드 워드가 디코딩될 압축된 비트 스트림에서 수신되기 때문에, 허프만 코드의 디코딩은 통상적으로 보다 계산 집약적이고, 코드 워드 사이에 경계가 사전 정의되지 않는다. 허프만 코드는 전술된 바와 같이 가변 길이 코드이다.
일정 입력 속도 디코더(constant input rate decoder)로 언급되는 하나의 접근법 또는 기법은 한번에 1비트의 입력 비트 스트림을 직렬로 처리한다. 이 방법은 디코딩 또는 허프만 트리 구조를 사용한다. 그러므로, 이 기법은, 뿌리로부터 시작하여, 최종 노드에 도달할 때까지, 디코딩 트리의 가지를 트래버싱하는 것을 포함한다. 최종 노드에서, 코드 워드가 완전히 디코딩되고, 대응하는 심볼이 요구된 것과 같이 생성되거나 출력될 수 있다. 그리고 나서, 이 프로세스는 트리의 뿌리로부터 다시 시작한다. 예를 들면, B.Bhaskarin 및 K.Konstantinides에 의한 "Image and Video Compressions Standards:Algorithms and Architectures"(Kluwer Academic Publishers, 1995)를 참조하라.
도4는 대응하는 디코딩 트리를 갖는 허프만 인코딩 테이블의 일례이다. 하드웨어 또는 소프트웨어에서 이러한 디코더에 관련된 하나의 문제점은 디코딩 트리를 메모리에 효과적으로 매핑하는 것에 관한 것이다. 예를 들면, 도5는 도4의 디코딩 트리를 이용하여 비트 직렬 허프만 디코딩에 대한 ROM 엔트리 테이블을 도시하고 있다. 메모리를 효과적으로 매핑하는 하나의 방법이, 예를 들면, Mukherjee 등에 의한 "MARVLE:a VLSI chip for data compression using tree-based codes"(IEEE Transactions on Very Large Scale Integration(VLSI) System, 1(2):203-214, June 1993)에 제안되었다.
매우 효과적이지는 않더라도, 허프만 코드를 디코딩하는 다른 방법은, 허프만 테이블의 각 엔트리를 입력 버퍼내의 입력 비트와 비교하는 것이다. 이 방법 하에서, 최악의 경우, 인코딩 테이블내의 N개 엔트리가 비교될 수 있다(N은 심볼의 총 개수). 또한, 엔트리에 대한 코드 길이 정보는 알려진다.
데이터 구조를 이용하여 2진 디지털 신호 시리즈를 디코딩하는 방법의 일실시예에서, 다음과 같은 방법이 사용될 수 있다. 데이터 구조는, 적어도 부분적으로, 디코딩되는 2진 디지털 신호의 서브그룹핑(subgrouping) 길이에 기반하여 검색될 수 있다. 이 특정 실시예에서, 시리즈 2진 디지털 신호는 허프만 인코딩과 같이 인코딩되지만, 본 발명은 허프만 코딩 또는 디코딩으로 그 범위가 제한도지는 않는다. 이 특정 실시예에서는, 이로 제한되지는 않지만, 검색 이전에, 시리즈내의 제1 N개의 2진 디지털 신호가 서브그룹핑으로 선택되는데, 여기서, N은 최단 코드 길이이다. 또한, 길이 N을 갖는 데이터 구조내에 코드가 서브그룹핑에 매칭되지 않는 경우, 후속의 2진 디지털 신호에 의해 증가된다. 마찬가지로, 이 방법이 적용되는 특정 실시예에서, 서브그룹핑과 동일한 길이를 갖는 데이터 구조내의 모든 코드에 대해 매칭이 검사된다. 이후에 보다 상세히 논의되는 바와 같이, 데이터 구조는, 적어도 부분적으로, 코드 길이에 기반하여 구성된다. 또한, 데이터 구조는 동일한 코드 길이를 갖는 코드가 순차적으로 저장되도록 구성된다.
본 발명은 데이터 구조의 특정 실시예로 그 범위가 제한되지는 않지만, 이 특정 실시예는, 테이블의 여분을 보여주기 위해 일부 심볼을 재배열한 후의, 도3의 허프만 코드 테이블에 관련될 수 있다. 이것은, 예를 들면, 도6에 도시되어 있다. 예로, 허프만 코드 길이 0을 갖는 심볼은, 이 심볼이 사용되지 않음을 의미한다. 마찬가지로, 앞의 첫 번째 조건에 기반하여, 주어진 비트 길이의 모든 코드가 사전 편집상 연속값을 가질 수 있다. 따라서, 길이 정보를 추적함으로써, 사전 편집 순서로 이 길이의 허프만 코드를 갖는 첫번째 심볼의 허프만 코드, 및 동일한 길이를 갖는 마지막 심볼에 대한 허프만 코드의 수는 잠재적으로 보다 적은 정보를 제공한다.
데이터 구조의 특정 실시예가 도7에 도시되어 있다. 도7은 도6과 동일한 정보를 운반하지만, 간략하고 쉽게 재배열되는 것을 알 수 있다. 따라서, 도7은, 이후에 보다 상세히 설명되는 바와 같이, 보다 적은 메모리를 사용하고, 비트 병렬 디코딩 스킴이 사용될 수 있도록 한다.
도7에 도시된 데이터 구조의 실시예를 이용하면, 허프만 코드의 디코딩은, 적어도 부분적으로, 도7에 도시된 바와 같이, 각 코드 길이에 대한 허프만 코드의 범위 및 코드 길이의 정보에 기반하여 비트 병렬 접근으로 수행될 수 있다. 이것은 의사-코드 구현을 이용하여 예시 및 후술되지만, 본 발명은 특정 의사-코드로 그 범위가 제한되지는 않는다.
합성 데이터 구조는 여기서 NDS(NDC)로 언급된다. 이것은 C 프로그래밍 언어를 위한 합성 데이터 구조의 정의와 대응되지만, 본 발명은 이러한 특정 프로그래밍 언어로 그 범위가 제한되지는 않는다. 이 특정 실시예에서는, 이에 제한되지는 않지만, NDS의 각 엔트리는, 도7에 도시된 바와 같이, 4개의 필드, 즉, 지시된 길이, 시작 코드, 종료 코드 및 기본 인덱스를 포함한다. 물론, 시작 코드 및 종료 코드 대신에, 시작 코드와 종료 코드 사이에 시작 코드 및 차를 사용하는 것과 같은, 많은 동등한 데이터 구조가 가능하다는 것이 이해될 수 있다.
그러나, 이 특정 실시예에서, NDC는 개별 코드 길이를 갖는 엔트리의 수이다. 각 엔트리는 동일한 코드 길이를 갖는 연속된 허프만 코드의 그룹을 나타낸다. 시작 코드는 이 그룹의 첫번째 허프만 코드이고, 종료 코드는 이 그룹의 마지막 허프만 코드이다. 기본 인덱스는, 도6에 도시된 바와 같이, 대응하는 심볼에 대한 허프만 테이블에서의 첫번째 허프만 코드의 인덱스값이다. 전술된 바와 같이, 본 발명은 이러한 특정 데이터 구조로 그 범위가 제한되지 않는다는 것을 알 수 있다. 명백히, 이 특정 데이터 구조에 대한 많은 변형예가 이루어질 수 있고, 이것은 기술된 사상 및 범위내에 있을 것이다.
도7에 도시된 데이터 구조의 실시예를 사용하면, 2진 디지털 신호를 디코딩하기 위한 본 발명에 따른 실시예의 의사 코드 표현은 다음과 같다.
이 특정 실시예에서는, 데이터 구조를 검색하기 전에, 시리즈내의 첫번째 N개의 2진 디지털 신호가 서브그룹핑으로 선택되는데, 여기서, N은 최단 코드의 길이이다. 그리고 나서, 그 길이를 갖는 모든 코드에 대해 매칭이 체크된다. 매칭이 발생하지 않는 경우, 서브그룹핑 길이는 시리즈내의 후속 2진 디지털 신호에 의해 증가되고, 증가된 길이를 갖는 코드에 대한 매칭이 체크된다. 이 프로세스는 매칭이 발생할 때까지 지속된다. 전술된 바와 같이, 데이터 구조는, 적어도 부분적으로, 동일한 코드 길이를 갖는 코드가 사전 편집상 순차적으로 저장되도록, 코드 길이 및 데이터 구조에 기반하여 구성된다. 이것은 요구된 효과적인 동작을 가능하게 한다.
매칭이 발생하지 않은 경우에, 최장 코드를 이용하여 검색을 시작하고, 서브그룹핑 길이를 감소시키는 대안적인 실시예가 가능하다는 것을 알 수 있다. 그러나, 통상적으로, 보다 짧은 허프만 코드는 보다 높은 발생 확률을 가지며, 이를 수행하면 최단 코드를 형성하는 검색을 시작하기 위해 이러한 상황에서 보다 효과적이 된다.
2진 디지털 신호 시리즈를 디코딩하는 방법의 이 특정 실시예는 메모리 활용, 계산상 복잡성 및 구현의 관점에서 몇몇 장점을 갖는다. 앞서 제안된 바와 같이, 데이터 구조에 대한 엔트리 수는 허프만 코드에 대한 최대 코드 길이에 의존하며, 심볼의 수에는 의존하지 않는다. 그러므로, 이것은 메모리의 감소를 가져온다. 예를 들면, GZIP과 같은, 고정된 제한 코드 길이를 이용한 애플리케이션인 경우, 통상적인 허프만 트리는 285개의 심볼을 갖고, 코드 길이는 15비트로 제한된다. 반면에, 본 실시예에 사용되는 엔트리 수는, 데이터에 따라, 최대 15개 엔트리를 가지며, 이것은 메모리 활용에서 19배의 감소를 초래한다.
마찬가지로, 계산상 복잡성은 비트 직렬 검색 프로세스라기 보다는, 비트 병렬 검색 프로세스를 이용하여 감소된다. 여기서, 본 실시예는, 적어도 부분적으로, 데이터 구조내의 코드 길이 정보에 기반한다. 검색 절차는 코드 길이를 갖는 그룹에 대한 시작 및 종료 코드 범위를 체크함으로써 현재 방법을 개선한다. 19개의 심볼 및 7비트의 최대 코드 길이를 사용하는 이 실시예를 이용한 실험 결과는, 허프만 코드 검색이 사용되는 디코딩과 비교하면, 그 복잡성에서 5.5배 감소를 제공한다. 마찬가지로, 허프만 트리가 구성되는 데 발생하는 것과 같이 2진 트리 구조가 발생하지 않고, 동적 메모리 할당이 적거나 없기 때문에, 본 발명에 따른 디코딩의 구현은 하드웨어 및 소프트웨어 모두에서 비교적 쉽다.
여기에서, 특정 실시예들이 설명되었지만, 본 발명은 이러한 특정 실시예로 그 범위가 제한되지 않는다는 것이 이해될 것이다. 예를 들면, 일실시예는 하드웨어로 이루어질 수 있고, 다른 실시예는 소프트웨어로 이루어질 수 있다. 마찬가지로, 일실시예는 펌웨어, 또는 하드웨어, 소프트웨어 또는 펌웨어의 조합으로 이루어질 수 있다. 그리고, 일실시예는 저장 매체와 같은 물품을 포함할 수 있다. 예를 들면, CD-ROM,디스크와 같은 저장 매체가 그 안에 명령어를 저장할 수 있고, 상기 명령어는 컴퓨터 시스템 또는 플랫폼, 또는 이미징 시스템과 같은 시스템에 의해 실행되는 경우, 전술된 바와 같이, 허프만 디코딩을 수행하는 방법과 같은, 본 발명에 따른 방법의 실시예가 실행될 수 있도록 한다. 또한, 본 발명에 따른, 데이터 구조를 초기화하고, 심볼을 인코딩하고, 및/또는 심볼을 디코딩하는 방법의 실시예가 실행될 수 있다.
본 발명의 특정 형태가 여기서 설명되었지만, 이 기술분야에서 통상의 지식을 가진 자에 의해 많은 변형, 대체, 변경 및 등가물이 발생할 수 있다. 그러므로, 첨부된 청구범위는 본 발명의 진정한 사상안에 있는 이러한 모든 변경 및 변형을 포함하도록 의도된다.

Claims (24)

  1. 데이터 구조를 이용하여 인코딩된 2진 디지털 신호 시리즈를 디코딩하는 방법에 있어서,
    적어도 부분적으로, 디코딩될 2진 디지털 신호 시리즈의 2진 디지털 신호의 서브그룹핑(subgrouping) 길이에 기반하여, 상기 데이터 구조를 검색하는 단계; 및
    검색 전에, 상기 시리즈내의 처음 N개의 2진 디지털 신호를 상기 서브그룹핑으로 선택하는 단계 - 여기서, N은 최장 코드의 길이임 -
    를 포함하는 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    길이 N을 갖는 상기 데이터 구조내의 코드가 상기 서브그룹핑과 매칭되지 않는 경우, 상기 시리즈내의 후속 2진 디지털 신호로 상기 서브그룹핑의 길이를 감소시키는 단계
    를 더 포함하는 방법.
  6. 제1항에 있어서,
    상기 2진 디지털 신호는 허프만 코드에 따라 인코딩되는
    방법.
  7. 제1항에 있어서,
    상기 데이터 구조는, 적어도 부분적으로, 코드 길이에 기반하여 구성되는
    방법.
  8. 제7항에 있어서,
    상기 서브그룹핑과 동일한 길이를 갖는 상기 데이터 구조내의 모든 코드에 대해 매칭이 체크되는
    방법.
  9. 제8항에 있어서,
    상기 데이터 구조는 동일한 코드 길이를 갖는 코드의 서브그룹핑으로 구성되고, 상기 서브그룹핑은 순차적으로 저장되는
    방법.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 명령어가 저장된 저장 매체에 있어서,
    상기 명령어는 실행되는 경우 다음의 단계, 즉,
    데이터 구조를 이용하여 인코딩된 2진 디지털 신호 시리즈를 디코딩하기 위해, 적어도 부분적으로, 디코딩될 2진 디지털 신호 시리즈의 2진 디지털 신호의 서브그룹핑의 길이에 기반하여 상기 데이터 구조를 검색하는 단계; 및
    검색 전에, 상기 시리즈내의 처음 N개의 2진 디지털 신호를 상기 서브그룹핑으로 선택하는 단계 - 여기서, N은 최장 코드의 길이임 -를 야기하는
    저장 매체.
  18. 삭제
  19. 제17항에 있어서,
    상기 명령어는, 실행되는 경우, 길이 N을 갖는 상기 데이터 구조내의 코드가 상기 서브그룹핑과 매칭되지 않는 경우, 상기 시리즈내의 후속 2진 디지털 신호로 상기 서브그룹핑의 길이를 감소시키도록 야기하는
    저장 매체.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 제17항에 있어서,
    상기 명령어는, 실행되는 경우, 상기 2진 디지털 신호가 허프만 코드에 따라 인코딩되도록 야기하는
    저장 매체.
  24. 제17항에 있어서,
    상기 명령어는, 실행되는 경우, 상기 데이터 구조가 적어도 부분적으로 코드 길이에 기반하여 구성되도록 야기하는
    저장 매체.
KR10-2003-7006044A 2000-10-31 2001-10-09 허프만 디코딩을 수행하는 방법 KR100527891B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/704,380 US6563439B1 (en) 2000-10-31 2000-10-31 Method of performing Huffman decoding
US09/704,380 2000-10-31
PCT/US2001/031532 WO2002037687A2 (en) 2000-10-31 2001-10-09 Method of performing huffman decoding

Publications (2)

Publication Number Publication Date
KR20030040567A KR20030040567A (ko) 2003-05-22
KR100527891B1 true KR100527891B1 (ko) 2005-11-15

Family

ID=24829232

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-7006044A KR100527891B1 (ko) 2000-10-31 2001-10-09 허프만 디코딩을 수행하는 방법

Country Status (9)

Country Link
US (3) US6563439B1 (ko)
JP (1) JP3974036B2 (ko)
KR (1) KR100527891B1 (ko)
CN (1) CN100417028C (ko)
AU (1) AU2002211558A1 (ko)
DE (1) DE10196890B4 (ko)
GB (1) GB2385759B (ko)
TW (1) TW538599B (ko)
WO (1) WO2002037687A2 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636167B1 (en) * 2000-10-31 2003-10-21 Intel Corporation Method of generating Huffman code length information
US6563439B1 (en) * 2000-10-31 2003-05-13 Intel Corporation Method of performing Huffman decoding
US7274671B2 (en) * 2001-02-09 2007-09-25 Boly Media Communications, Inc. Bitwise adaptive encoding using prefix prediction
US6677868B2 (en) * 2001-03-16 2004-01-13 Sharp Laboratories Of America, Inc. Entropy coding with adaptive syntax to replace high probability symbols with lower probabilities symbols
US7129863B1 (en) * 2001-06-01 2006-10-31 California Institute Of Technology Interval modulation coding
US6778107B2 (en) * 2001-08-30 2004-08-17 Intel Corporation Method and apparatus for huffman decoding technique
US6573847B1 (en) * 2002-01-08 2003-06-03 Intel Corporation Multi-table mapping for huffman code decoding
US20050111556A1 (en) * 2003-11-26 2005-05-26 Endress William B. System and method for real-time decompression and display of Huffman compressed video data
US7917480B2 (en) 2004-08-13 2011-03-29 Google Inc. Document compression system and method for use with tokenspace repository
US8407239B2 (en) 2004-08-13 2013-03-26 Google Inc. Multi-stage query processing system and method for use with tokenspace repository
US7068192B1 (en) * 2004-08-13 2006-06-27 Google Inc. System and method for encoding and decoding variable-length data
WO2007011116A1 (en) * 2005-07-20 2007-01-25 Humax Co., Ltd. Encoder and decoder
JP4958466B2 (ja) * 2006-04-05 2012-06-20 グローバル・オーエルイーディー・テクノロジー・リミテッド・ライアビリティ・カンパニー 表示装置
TWI330473B (en) * 2006-11-24 2010-09-11 Primax Electronics Ltd Huffman decoding method
CN101282121B (zh) * 2007-04-05 2010-10-06 安凯(广州)微电子技术有限公司 一种基于条件概率的哈夫曼解码的方法
US20090006399A1 (en) * 2007-06-29 2009-01-01 International Business Machines Corporation Compression method for relational tables based on combined column and row coding
US8902873B2 (en) 2009-10-08 2014-12-02 Qualcomm Incorporated Efficient signaling for closed-loop transmit diversity
CN102237878B (zh) * 2010-04-20 2015-09-02 慧荣科技股份有限公司 一种霍夫曼解码方法
US8442988B2 (en) 2010-11-04 2013-05-14 International Business Machines Corporation Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data
KR101725223B1 (ko) * 2011-03-25 2017-04-11 삼성전자 주식회사 저장 장치에서의 데이터 압축 방법
US8593308B1 (en) * 2012-05-31 2013-11-26 International Business Machines Corporation Method of accelerating dynamic Huffman decompaction within the inflate algorithm
KR101853148B1 (ko) * 2013-05-20 2018-04-27 엘에스산전 주식회사 데이터 저장방법
CN105988777B (zh) * 2015-01-27 2019-03-15 深圳市腾讯计算机系统有限公司 一种规则匹配方法及装置
US9564917B1 (en) * 2015-12-18 2017-02-07 Intel Corporation Instruction and logic for accelerated compressed data decoding
CN107483059B (zh) * 2017-07-31 2020-06-12 广东工业大学 一种基于动态霍夫曼树的多路数据编解码方法及装置

Family Cites Families (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4899149A (en) * 1986-02-28 1990-02-06 Gary Kahan Method of and apparatus for decoding Huffman or variable-length coees
FR2612025B1 (fr) * 1987-03-06 1989-05-26 Labo Electronique Physique Dispositif de decodage de signaux codes en duobinaire
US4813056A (en) 1987-12-08 1989-03-14 General Electric Company Modified statistical coding of digital signals
DE3912605B4 (de) * 1989-04-17 2008-09-04 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Digitales Codierverfahren
EP0920136B1 (en) * 1992-10-13 2002-08-28 Nec Corporation Huffman code decoding circuit
US5778371A (en) * 1994-09-13 1998-07-07 Kabushiki Kaisha Toshiba Code string processing system and method using intervals
US5821886A (en) * 1996-10-18 1998-10-13 Samsung Electronics Company, Ltd. Variable length code detection in a signal processing system
US5821887A (en) * 1996-11-12 1998-10-13 Intel Corporation Method and apparatus for decoding variable length codes
US5875122A (en) 1996-12-17 1999-02-23 Intel Corporation Integrated systolic architecture for decomposition and reconstruction of signals using wavelet transforms
FI102426B1 (fi) * 1997-03-14 1998-11-30 Nokia Telecommunications Oy Menetelmä muistin toteuttamiseksi
US6009201A (en) 1997-06-30 1999-12-28 Intel Corporation Efficient table-lookup based visually-lossless image compression scheme
US5973627A (en) * 1997-08-28 1999-10-26 Philips Electronics North America Corporation Variable length decoder with adaptive acceleration optimized by sub-grouping and cross-grouping the symbols having the highest probability of occurrence
US6009206A (en) 1997-09-30 1999-12-28 Intel Corporation Companding algorithm to transform an image to a lower bit resolution
US6160918A (en) 1997-10-02 2000-12-12 At&T Corp. Method and apparatus for fast image compression
US6091851A (en) 1997-11-03 2000-07-18 Intel Corporation Efficient algorithm for color recovery from 8-bit to 24-bit color pixels
US6151069A (en) 1997-11-03 2000-11-21 Intel Corporation Dual mode digital camera for video and still operation
US6285796B1 (en) 1997-11-03 2001-09-04 Intel Corporation Pseudo-fixed length image compression scheme
US6130960A (en) * 1997-11-03 2000-10-10 Intel Corporation Block-matching algorithm for color interpolation
US6351555B1 (en) 1997-11-26 2002-02-26 Intel Corporation Efficient companding algorithm suitable for color imaging
US6094508A (en) 1997-12-08 2000-07-25 Intel Corporation Perceptual thresholding for gradient-based local edge detection
US6229578B1 (en) 1997-12-08 2001-05-08 Intel Corporation Edge-detection based noise removal algorithm
US6348929B1 (en) 1998-01-16 2002-02-19 Intel Corporation Scaling algorithm and architecture for integer scaling in video
US6215916B1 (en) 1998-02-04 2001-04-10 Intel Corporation Efficient algorithm and architecture for image scaling using discrete wavelet transforms
US6075470A (en) 1998-02-26 2000-06-13 Research In Motion Limited Block-wise adaptive statistical data compressor
US6392699B1 (en) * 1998-03-04 2002-05-21 Intel Corporation Integrated color interpolation and color space conversion algorithm from 8-bit bayer pattern RGB color space to 12-bit YCrCb color space
US6211521B1 (en) 1998-03-13 2001-04-03 Intel Corporation Infrared pixel sensor and infrared signal correction
US6356276B1 (en) 1998-03-18 2002-03-12 Intel Corporation Median computation-based integrated color interpolation and color space conversion methodology from 8-bit bayer pattern RGB color space to 12-bit YCrCb color space
US6366694B1 (en) 1998-03-26 2002-04-02 Intel Corporation Integrated color interpolation and color space conversion algorithm from 8-bit Bayer pattern RGB color space to 24-bit CIE XYZ color space
US6366692B1 (en) 1998-03-30 2002-04-02 Intel Corporation Median computation-based integrated color interpolation and color space conversion methodology from 8-bit bayer pattern RGB color space to 24-bit CIE XYZ color space
US6154493A (en) 1998-05-21 2000-11-28 Intel Corporation Compression of color images based on a 2-dimensional discrete wavelet transform yielding a perceptually lossless image
US6040790A (en) * 1998-05-29 2000-03-21 Xerox Corporation Method of building an adaptive huffman codeword tree
US6124811A (en) 1998-07-02 2000-09-26 Intel Corporation Real time algorithms and architectures for coding images compressed by DWT-based techniques
US6233358B1 (en) 1998-07-13 2001-05-15 Intel Corporation Image compression using directional predictive coding of the wavelet coefficients
US6236765B1 (en) 1998-08-05 2001-05-22 Intel Corporation DWT-based up-sampling algorithm suitable for image display in an LCD panel
US6178269B1 (en) 1998-08-06 2001-01-23 Intel Corporation Architecture for computing a two-dimensional discrete wavelet transform
US5995210A (en) 1998-08-06 1999-11-30 Intel Corporation Integrated architecture for computing a forward and inverse discrete wavelet transforms
US6047303A (en) 1998-08-06 2000-04-04 Intel Corporation Systolic architecture for computing an inverse discrete wavelet transforms
US6166664A (en) 1998-08-26 2000-12-26 Intel Corporation Efficient data structure for entropy encoding used in a DWT-based high performance image compression
US6301392B1 (en) 1998-09-03 2001-10-09 Intel Corporation Efficient methodology to select the quantization threshold parameters in a DWT-based image compression scheme in order to score a predefined minimum number of images into a fixed size secondary storage
US6731807B1 (en) * 1998-09-11 2004-05-04 Intel Corporation Method of compressing and/or decompressing a data set using significance mapping
US6195026B1 (en) 1998-09-14 2001-02-27 Intel Corporation MMX optimized data packing methodology for zero run length and variable length entropy encoding
US6108453A (en) 1998-09-16 2000-08-22 Intel Corporation General image enhancement framework
US6236433B1 (en) 1998-09-29 2001-05-22 Intel Corporation Scaling algorithm for efficient color representation/recovery in video
US6625318B1 (en) * 1998-11-13 2003-09-23 Yap-Peng Tan Robust sequential approach in detecting defective pixels within an image sensor
US6759646B1 (en) * 1998-11-24 2004-07-06 Intel Corporation Color interpolation for a four color mosaic pattern
US6151415A (en) 1998-12-14 2000-11-21 Intel Corporation Auto-focusing algorithm using discrete wavelet transform
US6215908B1 (en) 1999-02-24 2001-04-10 Intel Corporation Symmetric filtering based VLSI architecture for image compression
US6381357B1 (en) 1999-02-26 2002-04-30 Intel Corporation Hi-speed deterministic approach in detecting defective pixels within an image sensor
US6275206B1 (en) 1999-03-17 2001-08-14 Intel Corporation Block mapping based up-sampling method and apparatus for converting color images
US6377280B1 (en) 1999-04-14 2002-04-23 Intel Corporation Edge enhanced image up-sampling algorithm using discrete wavelet transform
US6574374B1 (en) * 1999-04-14 2003-06-03 Intel Corporation Enhancing image compression performance by morphological processing
US6563948B2 (en) * 1999-04-29 2003-05-13 Intel Corporation Using an electronic camera to build a file containing text
US6640017B1 (en) * 1999-05-26 2003-10-28 Intel Corporation Method and apparatus for adaptively sharpening an image
US6697534B1 (en) * 1999-06-09 2004-02-24 Intel Corporation Method and apparatus for adaptively sharpening local image content of an image
US6292114B1 (en) 1999-06-10 2001-09-18 Intel Corporation Efficient memory mapping of a huffman coded list suitable for bit-serial decoding
US6628716B1 (en) * 1999-06-29 2003-09-30 Intel Corporation Hardware efficient wavelet-based video compression scheme
US6600833B1 (en) * 1999-07-23 2003-07-29 Intel Corporation Methodology for color correction with noise regulation
US6373481B1 (en) 1999-08-25 2002-04-16 Intel Corporation Method and apparatus for automatic focusing in an image capture system using symmetric FIR filters
US7065253B2 (en) * 1999-09-03 2006-06-20 Intel Corporation Wavelet zerotree coding of ordered bits
US6658399B1 (en) 1999-09-10 2003-12-02 Intel Corporation Fuzzy based thresholding technique for image segmentation
US6625308B1 (en) * 1999-09-10 2003-09-23 Intel Corporation Fuzzy distinction based thresholding technique for image segmentation
US6633610B2 (en) * 1999-09-27 2003-10-14 Intel Corporation Video motion estimation
US6798901B1 (en) * 1999-10-01 2004-09-28 Intel Corporation Method of compressing a color image
US7106910B2 (en) * 1999-10-01 2006-09-12 Intel Corporation Color video coding scheme
US6834123B2 (en) 2001-05-29 2004-12-21 Intel Corporation Method and apparatus for coding of wavelet transformed coefficients
US6956903B2 (en) 2001-05-29 2005-10-18 Intel Corporation Method and apparatus for three-dimensional wavelet transform
US6731706B1 (en) * 1999-10-29 2004-05-04 Intel Corporation Square root raised cosine symmetric filter for mobile telecommunications
US6813384B1 (en) 1999-11-10 2004-11-02 Intel Corporation Indexing wavelet compressed video for efficient data handling
US6628827B1 (en) * 1999-12-14 2003-09-30 Intel Corporation Method of upscaling a color image
US6650688B1 (en) 1999-12-20 2003-11-18 Intel Corporation Chip rate selectable square root raised cosine filter for mobile telecommunications
US6757430B2 (en) * 1999-12-28 2004-06-29 Intel Corporation Image processing architecture
US6748118B1 (en) * 2000-02-18 2004-06-08 Intel Corporation Method of quantizing signal samples of an image during same
US6654501B1 (en) 2000-03-06 2003-11-25 Intel Corporation Method of integrating a watermark into an image
US6449380B1 (en) * 2000-03-06 2002-09-10 Intel Corporation Method of integrating a watermark into a compressed image
US6738520B1 (en) * 2000-06-19 2004-05-18 Intel Corporation Method of compressing an image
US6775413B1 (en) * 2000-09-18 2004-08-10 Intel Corporation Techniques to implement one-dimensional compression
US6636167B1 (en) * 2000-10-31 2003-10-21 Intel Corporation Method of generating Huffman code length information
US6563439B1 (en) * 2000-10-31 2003-05-13 Intel Corporation Method of performing Huffman decoding
US6690306B1 (en) * 2000-11-03 2004-02-10 Intel Corporation Method of generating a length-constrained huffman code
US6678708B1 (en) * 2000-11-15 2004-01-13 Intel Corporation Method and apparatus for two-dimensional separable symmetric filtering
US6751640B1 (en) * 2000-11-20 2004-06-15 Intel Corporation Method and apparatus for multiply-accumulate two-dimensional separable symmetric filtering
US20020063899A1 (en) * 2000-11-29 2002-05-30 Tinku Acharya Imaging device connected to processor-based system using high-bandwidth bus
US6707928B2 (en) * 2000-11-29 2004-03-16 Intel Corporation Method for block-based digital image watermarking
US6917381B2 (en) * 2000-11-30 2005-07-12 Intel Corporation Color filter array and color interpolation algorithm
US6662200B2 (en) 2001-01-03 2003-12-09 Intel Corporation Multiplierless pyramid filter
US20020118746A1 (en) * 2001-01-03 2002-08-29 Kim Hyun Mun Method of performing video encoding rate control using motion estimation
US20020122482A1 (en) * 2001-01-03 2002-09-05 Kim Hyun Mun Method of performing video encoding rate control using bit budget
US6681060B2 (en) * 2001-03-23 2004-01-20 Intel Corporation Image retrieval using distance measure
US20020174154A1 (en) 2001-03-26 2002-11-21 Tinku Acharya Two-dimensional pyramid filter architecture
US6766286B2 (en) * 2001-03-28 2004-07-20 Intel Corporation Pyramid filter
US20020184276A1 (en) 2001-03-30 2002-12-05 Tinku Acharya Two-dimensional pyramid filter architecture
US6889237B2 (en) * 2001-03-30 2005-05-03 Intel Corporation Two-dimensional pyramid filter architecture
US6725247B2 (en) * 2001-04-30 2004-04-20 Intel Corporation Two-dimensional pyramid filter architecture
US20030021486A1 (en) * 2001-07-27 2003-01-30 Tinku Acharya Method and apparatus for image scaling
US6653953B2 (en) 2001-08-22 2003-11-25 Intel Corporation Variable length coding packing architecture
US6891889B2 (en) * 2001-09-05 2005-05-10 Intel Corporation Signal to noise ratio optimization for video compression bit-rate control
US6996180B2 (en) * 2001-09-05 2006-02-07 Intel Corporation Fast half-pixel motion estimation using steepest descent
US6795592B2 (en) * 2001-09-13 2004-09-21 Intel Corporation Architecture for processing fingerprint images
US7136515B2 (en) * 2001-09-13 2006-11-14 Intel Corporation Method and apparatus for providing a binary fingerprint image
US20030063782A1 (en) * 2001-09-13 2003-04-03 Tinku Acharya Method and apparatus to reduce false minutiae in a binary fingerprint image
US6944640B2 (en) * 2001-12-28 2005-09-13 Intel Corporation Progressive two-dimensional (2D) pyramid filter
US20030123539A1 (en) * 2001-12-28 2003-07-03 Hyung-Suk Kim Method and apparatus for video bit-rate control
US20030194008A1 (en) * 2002-04-11 2003-10-16 Tinku Acharya Computationally fast and efficient DV to DVD transcoding
US20030198387A1 (en) * 2002-04-22 2003-10-23 Tinku Acharya Method and apparatus for image retrieval
US7133555B2 (en) * 2002-08-02 2006-11-07 Intel Corporation Image color matching scheme
US20040042551A1 (en) * 2002-09-04 2004-03-04 Tinku Acharya Motion estimation
US7266151B2 (en) * 2002-09-04 2007-09-04 Intel Corporation Method and system for performing motion estimation using logarithmic search
US20040057626A1 (en) * 2002-09-23 2004-03-25 Tinku Acharya Motion estimation using a context adaptive search
US7075987B2 (en) * 2002-09-23 2006-07-11 Intel Corporation Adaptive video bit-rate control

Also Published As

Publication number Publication date
US20030174077A1 (en) 2003-09-18
JP2004515096A (ja) 2004-05-20
WO2002037687A3 (en) 2002-08-29
CN100417028C (zh) 2008-09-03
JP3974036B2 (ja) 2007-09-12
DE10196890T1 (de) 2003-12-18
US6982661B2 (en) 2006-01-03
AU2002211558A1 (en) 2002-05-15
GB0311329D0 (en) 2003-06-25
DE10196890B4 (de) 2008-02-07
US6646577B2 (en) 2003-11-11
CN1547805A (zh) 2004-11-17
KR20030040567A (ko) 2003-05-22
US20030085821A1 (en) 2003-05-08
GB2385759A (en) 2003-08-27
GB2385759B (en) 2004-11-03
WO2002037687A2 (en) 2002-05-10
TW538599B (en) 2003-06-21
US6563439B1 (en) 2003-05-13

Similar Documents

Publication Publication Date Title
KR100527891B1 (ko) 허프만 디코딩을 수행하는 방법
KR100950607B1 (ko) 허프만 코딩
US7190287B2 (en) Method of generating Huffman code length information
JP3273119B2 (ja) データ圧縮・伸長装置
US5877711A (en) Method and apparatus for performing adaptive data compression
US7375660B1 (en) Huffman decoding method
JP2000315954A (ja) 入力データストリームの圧縮方法とその装置
JPH07307675A (ja) 可変長復号器及び可変長符号値を復号化する方法
US5394144A (en) Variable length code decoding apparatus
US7348901B2 (en) Method and system for decoding variable length encoded signals, computer program product therefor
JPH07107303A (ja) ハフマン符号の復号化方法
US6778107B2 (en) Method and apparatus for huffman decoding technique
JP3242795B2 (ja) データ処理装置及びデータ処理方法
US6580377B1 (en) Huffman decoding using cascaded sub-table lookup method
JPH0628149A (ja) 複数種類データのデータ圧縮方法
GB2402584A (en) Method of performing Huffman decoding
JP3565147B2 (ja) 復号装置
JP3236747B2 (ja) データ伸長方式
JPH06274311A (ja) データ圧縮装置及びデータ復元装置
KR20050037307A (ko) N-트리 검색에 기초한 허프만 디코딩 방법 및 장치
CN114637459A (zh) 处理接收到的数据的装置
JP2005175926A (ja) 復号装置及び方法
JPH08181620A (ja) 復号装置及びデコードテーブルの生成方法

Legal Events

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

Payment date: 20091028

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee