KR20020065211A - 고속 허프만 디코딩 방법 및 장치 - Google Patents
고속 허프만 디코딩 방법 및 장치 Download PDFInfo
- Publication number
- KR20020065211A KR20020065211A KR1020010005630A KR20010005630A KR20020065211A KR 20020065211 A KR20020065211 A KR 20020065211A KR 1020010005630 A KR1020010005630 A KR 1020010005630A KR 20010005630 A KR20010005630 A KR 20010005630A KR 20020065211 A KR20020065211 A KR 20020065211A
- Authority
- KR
- South Korea
- Prior art keywords
- code value
- value
- huffman
- minimum
- code
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Multimedia (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
고속 허프만 디코딩 방법 및 장치가 개시된다. 이 방법은, 코드워드의 길이(I)의 초기값을 설정하고, 입력 코드스트림으로부터 취한 2K비트에서 I비트 만큼을 마스킹하여 현재 코드값(CODE)을 구하고, I를 이용하여 상위 및 하위 점프어드레스들(I_UP 및 I_DOWN)을 구하고, 플래그 정보의 I번째 비트(bitI)가 '0'인 것으로 판단되면 CODE가 I번째 최소 코드값[MINCODE(I)] 이상인가를 판단하고, bitI가 '1'인 것으로 판단되면 CODE이 I번째 최대 코드값[MAXCODE(I)]보다 큰가를 판단하고, CODE가 MAXCODE(I)보다 큰 것으로 판단되거나 CODE가 MINCODE(I)이상인 것으로 판단되면 I를 I_UP로 갱신하여 CODE를 다시 구하고, CODE가 MAXCODE(I)보다 크지 않은 것으로 판단되면 CODE가 MINCODE(I)보다 적은가를 판단하고, CODE가 MINCODE(I)보다 적은 것으로 판단되거나 CODE가 MINCODE(I)이상이 아닌 것으로 판단되면 I를 I_DOWN로 갱신하여 CODE를 다시 구하고 및 CODE가 MINCODE(I)보다 적지 않은 것으로 판단되면 2K개의 허프만 값들중 I번째 포인터 값, MINCODE(I) 및 CODE를 이용하여 선택한 하나를 심볼로서 결정하고, 플래그 정보는 각각 유효한 코드 워드의 정보가 존재하는가에 상응하여 사전에 결정되는 2K개의 정보 비트들로 구성되는 것을 특징으로 한다. 그러므로, 고속으로 허프만 디코딩을 수행할 수 있는 효과를 갖는다.
Description
본 발명은 정지 영상 압축(JPEG:Joint Picture Expert Group) 형식으로 코딩된 이진 데이타 처리에 관한 것으로서, 특히, 이진 입력 비트 스트림을 허프만 디코딩(Huffman decoding)하는 허프만 디코딩 방법 및 장치에 관한 것이다.
이하, 종래의 허프만 디코딩 장치의 구성 및 동작과, 그 장치에서 수행되는 종래의 허프만 디코딩 방법을 첨부한 도면들을 참조하여 다음과 같이 설명한다.
도 1은 종래의 허프만 디코딩 장치의 개략적인 블럭도로서, 서치 엔진(search engine)(10), 최대/최소(MAX/MIN) 테이블(12), 포인터 값(VALPTR:VALue PoinTeR) 테이블(14) 및 허프만값(HUFFVAL:HUFFman VALue) 테이블(16)로 구성된다.
도 2는 도 1에 도시된 장치에서 수행되는 종래의 허프만 디코딩 방법을 설명하기 위한 플로우차트로서, 초기화 단계(제20 단계) 및 현재 코드값과 최대 코드값을 비교한 결과에 따라 심볼을 구하는 단계(제22 ∼ 제26 단계들)로 이루어진다.
JPEG 디코딩 과정에서, 출력 영상 데이타로 복원하기 위해 JPEG 형식으로 코딩된 이진 코드를 이용한다. 이 때, JPEG 디코딩 과정에서 가장 먼저 수행되며 JPEG 표준에서 권장하는 종래의 허프만 디코딩 방법을 ISO 10918-1 Appendix A.의 Figure C.1 및 Figure C.2를 참조하여 다음과 같이 개략적으로 설명한다.
먼저, JPEG 파일 헤더로부터 디코딩용 허프만 테이블 즉, 최대/최소 테이블(12), VALPTR 테이블(14) 및 HUFFVAL 테이블(16) 각각에 저장될 값을 구한다. 여기서, 허프만 코드 워드를 코드 워드 길이 순서로 나열했을 때, 각 길이별로 최대 코드 워드와 최소 코드 워드만을 추출해서 최대/최소 테이블(12)을 만든다. 또한, 최대/최소 테이블(12)에서 최소 코드값이 저장된 어드레스만을 추출하여 VALPTR 테이블(14)을 만든다. 이 때, 사용된 허프만 테이블의 코드 워드를 길이별, 순서별로 나열했을 때의 허프만 값들을 HUFFVAL 테이블(16)에 저장한다. 각 테이블(12, 14 또는 16)은 휘도 직류(Luminance DC), 휘도 교류(Luminance AC), 색도 직류(Chrominance DC) 및 색도 교류(Chrominance AC)에 대한 값을 갖는다.
도 2에 도시된 허프만 디코딩 방법을 수행하기 위해, 도 1에 도시된 서치 엔진(10)은 JPEG 형식으로 코딩된 이진 입력 코드 스트림이 몇 비트의 코드 워드를 갖는가를 전술한 바와 같이 구해진 각 테이블(12, 14 및 16)에 저장된 값들을 이용하여 결정하고, 결정된 결과를 런 크기(run-size)로 구성되는 심볼로서 출력한다.
이를 위해, 초기 코드 워드의 길이(I')를 정하고, 이진 입력 코드 스트림으로부터 1비트의 데이타를 취해 현재 코드값으로 정한다(제20 단계). 제20 단계후에, 현재 코드값이 I'번째 최대 코드값[MAXCODE(I')]보다 큰가를 판단한다(제22 단계). 만일, 현재 코드값이 I'번째 최대 코드값[MAXCODE(I')]보다 큰 것으로 판단되면, I'를 '1'만큼 증가시키고, 현재 코드값에 다음 비트를 추가한 후, 제22 단계로 진행한다(제24 단계). 그러나, 현재 코드값이 I'번째 최대 코드값[MAXCODE(I')]보다 크지 않은 것으로 판단되면, 현재 I'비트 길이의 허프만 코드 중에 코드 워드가 매칭된다는 것을 의미하므로, I'번째 포인터 값[VALPTR(I')]과 현재 코드값을 더한 값으로부터 I'번째 최소 코드값[MINCODE(I')]을 감산하여 어드레스 옵셋으로 사용할 J'을 구하고, HUFFVAL 테이블(16)의 어드레스 옵셋(J')을 이용하여 허프만 값들중 하나를 심볼로서 선택한다(제26 단계).
전술한 종래의 허프만 디코딩 장치 및 방법은 코드 길이에 해당하는 변수(I')가 1 ∼ 16 범위에서 가변되므로 최대 16번의 반복 수행으로 코드 워드의 길이를 찾아낸다. 즉, 종래의 디코딩 장치 및 방법은, 인코딩이 한 번의 어드레싱으로 코드 워드를 생성하는데 비교할 때 허프만 디코딩을 위해 상당히 긴 시간을 소요하는 문제점을 갖는다.
본 발명이 이루고자 하는 기술적 과제는, 고속으로 허프만 디코딩을 수행할 수 있는 고속 허프만 디코딩 방법을 제공하는 데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는, 상기 고속 허프만 디코딩 방법을 수행하는 고속 허프만 디코딩 장치를 제공하는 데 있다.
도 1은 종래의 허프만 디코딩 장치의 개략적인 블럭도이다.
도 2는 도 1에 도시된 장치에서 수행되는 종래의 허프만 디코딩 방법을 설명하기 위한 플로우차트이다.
도 3은 본 발명에 의한 고속 허프만 디코딩 방법을 설명하기 위한 플로우차트이다.
도 4은 도 3에 도시된 고속 허프만 디코딩 방법을 수행하기 위한 본 발명에 의한 고속 허프만 디코딩 장치의 일 실시예의 블럭도이다.
상기 과제를 이루기 위해, 정지 영상 압축 방식(JPEG) 형식으로 코딩된 이진 입력 코드 스트림이 몇 비트의 코드 워드에 해당하는가를 나타내는 심볼을 구하는 본 발명에 의한 고속 허프만 디코딩 방법은, 상기 코드 워드의 길이(I)의 초기값을 2K-1+1로 설정하는 (a) 단계와, 상기 입력 코드 스트림으로부터 취한 2K비트에서 I비트 만큼을 마스킹하여 현재 코드값을 구하는 (b) 단계와, 상기 I를 이용하여 상위 및 하위 점프 어드레스들을 구하는 (c) 단계와, 플래그 정보의 I번째 비트가 '1'인가를 판단하는 (d) 단계와, 상기 플래그 정보에서 상기 I번째 비트가 '0'인 것으로 판단되면, 상기 현재 코드값이 I번째 최소 코드값 이상인가를 판단하는 (e) 단계와, 상기 플래그 정보에서 상기 I번째 비트가 '1'인 것으로 판단되면, 상기 현재 코드값이 I번째 최대 코드값 보다 큰가를 판단하는 (f) 단계와, 상기 현재 코드값이 I번째 최대 코드값보다 큰 것으로 판단되거나 상기 (e) 단계에서 상기 현재 코드값이 I번째 상기 최소 코드값 이상인 것으로 판단되면, 상기 I를 상기 상위 점프 어드레스로 갱신하고 상기 (b) 단계로 진행하는 (g) 단계와, 상기 (f) 단계에서 상기 현재 코드값이 I번째 상기 최대 코드값보다 크지 않은 것으로 판단되면, 상기현재 코드값이 I번째 상기 최소 코드값보다 적은가를 판단하는 (h) 단계와, 상기 현재 코드값이 I번째 상기 최소 코드값보다 적은 것으로 판단되거나, 상기 (e) 단계에서 상기 현재 코드값이 I번째 상기 최소 코드값 이상이 아닌 것으로 판단되면, 상기 I를 상기 하위 점프 어드레스로 갱신하고, 상기 (b) 단계로 진행하는 (i) 단계 및 상기 (h) 단계에서 상기 현재 코드값이 I번째 상기 최소 코드값보다 적지 않은 것으로 판단되면, 2K개의 허프만 값들중 I번째 포인터 값, I번째 상기 최소 코드값 및 상기 현재 코드값들을 이용하여 선택한 하나를 상기 심볼로서 결정하는 (j) 단계로 구성되고, 상기 플래그 정보는 2K개의 정보 비트들로 구성되고, 상기 각 정보 비트는 유효한 상기 코드 워드의 정보가 존재하는가에 상응하여 사전에 결정되는 것이 바람직하다.
상기 다른 과제를 이루기 위해, 상기 고속 허프만 디코딩 방법을 수행하는 본 발명에 의한 고속 허프만 디코딩 장치는, 상기 최소 코드값, 상기 최대 코드값, 상기 포인터 값 및 상기 허프만 값을 저장하는 허프만 테이블 저장부와, 상기 초기값, 상기 상위 및 하위 점프 어드레스들중 하나를 선택 신호에 응답하여 상기 I로서 선택하는 선택부와, 상기 I에 응답하여 상기 상위 및 상기 하위 점프 어드레스들을 생성하여 상기 선택부로 출력하는 제1 어드레스 생성부와, 입력한 상기 입력 코드 스트림으로부터 취한 2K비트의 데이타를 상기 I 비트만큼 마스킹하고, 마스킹된 결과를 상기 현재 코드값으로서 출력하는 마스킹부와, 상기 현재 코드값과 상기 I번째 최소 코드값 또는 상기 I번째 최대 코드값을 비교하고, 비교된 결과를 출력하는 비교부와, 상기 I번째 포인터값, 상기 I번째 최소 코드값 및 상기 현재 코드값에 상응하여 J를 계산하는 제2 어드레스 생성부 및 상기 I에 응답하여 상기 허프만 테이블 저장부로부터 독출한 상기 최대 코드값이나 상기 최소 코드값을 상기 플래그 정보의 I번째 비트와 소정값을 비교한 결과에 응답하여 상기 비교부로 출력하고, 상기 I에 응답하여 상기 허프만 테이블 저장부로부터 독출한 상기 포인터값을 상기 비교된 결과에 응답하여 상기 제2 어드레스 생성부로 출력하고, 상기 I에 응답하여 상기 허프만 테이블 저장부로부터 독출한 상기 최소 코드값을 상기 비교부로 출력하고, 상기 비교된 결과에 응답하여 상기 선택 신호를 상기 선택부로 출력하는 제어부로 구성되고, 상기 허프만 테이블 저장부는 어드레스 옵셋으로 입력한 상기 J에 응답하여 상기 허프만 값들중 하나를 상기 심볼로서 출력하는 것이 바람직하다.
이하, 본 발명에 의한 고속 허프만 디코딩 방법을 첨부한 도면을 참조하여 다음과 같이 설명한다.
도 3은 본 발명에 의한 고속 허프만 디코딩 방법을 설명하기 위한 플로우차트로서, 심볼을 구하기 위한 초기화 작업을 수행하는 단계(제40 ∼ 제44 단계들) 및 플래그(flag) 정보를 이용하여 심볼을 구하는 단계(제46 ∼ 제58 단계들)로 이루어진다.
본 발명에 의한 고속 허프만 디코딩 방법은, JPEG 형식으로 코딩된 이진 입력 코드 스트림이 몇 비트의 코드 워드에 해당하는가를 나타내는 심볼을 구한다. 이를 위해, 본 발명에 의한 고속 허프만 디코딩 방법은, 먼저, 코드 워드의길이(I)의 초기값을 2K-1+1(여기서, 2K는 I가 가변될 수 있는 범위를 의미한다.)로 설정한다(제40 단계). 예를 들어, K=4인 경우 즉, I가 1 ∼ 16의 범위내에서 가변될 수 있는 경우, 코드 워드의 길이(I)의 초기값을 '9'로 설정한다.
제40 단계후에, 이진 입력 코드 스트림으로부터 취한 2K비트에서 I비트 만큼을 마스킹하고, 마스킹된 값을 현재 코드값(CODE)으로서 결정한다(제42 단계). 여기서, 코드 워드의 길이(I)가 '1'인 것은 없다고 가정되었다.
제42 단계후에, I를 이용하여 상위 점프 어드레스(I_UP)를 다음 수학식 1과 같이 구하고, 하위 점프 어드레스(I_DOWN)를 다음 수학식 2와 같이 구한다(제44 단계).
제44 단계후에, 플래그 정보에서 I번째 비트가 '1'인가를 판단한다(제46 단계). 여기서, 본 발명에 의한 고속 허프만 디코딩 방법은 허프만 코드 워드가 할당되지 않은 코드 워드 길이에 대해서 올바른 서치 결과를 얻기 위해 플래그 정보를 마련하였다. 이 플래그 정보는 다음과 같이 정의될 수 있다.
전술한 바와 같이, 허프만 테이블은 최대값 테이블, 최소값 테이블, 포인터 값 테이블 및 허프만 값 테이블의 네가지가 존재하고, 각 테이블은 휘도 직류, 휘도 교류, 색도 직류 및 색도 교류에 대한 값을 갖는다. 이 때, 본 발명에 의한 허프만 디코딩 방법에서는, 네가지의 값들(Luminance DC, Luminance AC, Chrominance DC 및 Chrominance AC) 각각에 대하여 2K비트의 정보 비트들을 갖는 플래그 정보를 마련한다. 즉, 네개의 플래그 정보들을 마련한다. 여기서, 플래그 정보를 구성하는 각 정보 비트는 유효한 코드 워드의 정보가 존재하는가에 상응하여 사전에 정해진다. 예를 들어, 각 정보 비트는 유효한 코드 워드 정보가 존재하면 '1'로 정해지고 그렇지 않으면 '0'으로 정해질 수 있다.
이 플래그 정보는 예를 들면 다음과 같이 정의될 수 있다. 표준안에서 제안하는 허프만 테이블인 경우, 휘도 직류 테이블의 코드 워드는 다음 표 1과 같이 정의된다.
카테고리(category) | 코드 길이(code length) | 코드 워드(code word) |
0 | 2 | 00 |
1 | 3 | 010 |
2 | 3 | 011 |
3 | 3 | 100 |
4 | 3 | 101 |
5 | 3 | 110 |
6 | 4 | 1110 |
7 | 5 | 11110 |
8 | 6 | 111110 |
9 | 7 | 1111110 |
10 | 8 | 11111110 |
11 | 9 | 111111110 |
표 1에 보여진 코드 워드를 길이별로 정리하면 다음 표 2와 같다.
코드 길이 | 코드 워드의 개수 | 코드 길이 | 코드 워드의 개수 |
1 | 0 | 9 | 1 |
2 | 1 | 10 | 1 |
3 | 5 | 11 | 1 |
4 | 1 | 12 | 0 |
5 | 1 | 13 | 0 |
6 | 1 | 14 | 0 |
7 | 1 | 15 | 0 |
8 | 1 | 16 | 0 |
표 2에 대한 플래그 정보는 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0(이는 16진수 0x07fe)와 같이 정의될 수 있다. 이 플래그 정보의 MSB부터 LSB까지는 bit 15, bit14, bit13, bit12, ..., bit1 및 bit0을 나타낸다. 즉, 플래그 정보의 2번째 비트(bit 1 또는 bit 14)는 '0' 또는 '1'이 될 수 있다.
예컨데, 이진 서치 도중에, 플래그 정보의 해당 비트가 '0'으로 되어 있으면, 서치 조건에 부합하는 경우라도 코드 워드 서치를 중단하지 않고 계속 서치해 나간다. 즉, 플래그 정보에서 I번째 비트가 '0'인 것으로 판단되면, 현재 코드값(CODE)이 I번째 최소 코드값[MINCODE(I)] 이상인가를 판단한다(제48 단계). 여기서, 최소 코드값(MINCODE)은 허프만 코드 워드를 코드 워드 길이 순서로 나열했을 때, 각 길이별로 최소 코드 워드(또는, 최소 코드값)만을 추출해서 만든 최소값 테이블에 저장된다. 이 때, 플래그 정보에서 I번째 비트가 '0'인 경우 'I'번째 최소 코드값[MINCODE(I)]을 'I-1'번째 최대 코드값[MAXCODE(I-1)]과 동일하게 설정한다. 이와 같이 설정되어 최소값 테이블에 1부터 2K(1≤I≤2K)까지 순차적으로 저장된 최소 코드값들중에서 I번째 최소 코드값이 현재 코드값(CODE)과 제48 단계에서 비교된다.
그러나, 플래그 정보에서 I번째 비트가 '1'인 것으로 판단되면, 현재코드값(CODE)이 I번째 최대 코드값[MAXCODE(I)] 보다 큰가를 판단한다(제50 단계). 여기서, 최대 코드값(MAXCODE)은 허프만 코드 워드를 코드 워드 길이 순서로 나열했을 때, 각 길이별로 최대 코드 워드(또는, 최대 코드값)만을 추출해서 만든 최대값 테이블에 저장된다. 이 때, 플래그 정보에서 I번째 비트가 '0'인 경우 I번째 최대 코드값[MAXCODE(I)]을 I번째 최소 코드값[MINCODE(I)]과 동일하게 설정한다. 이와 같이 설정되어 최대값 테이블에 1부터 2K(1≤I≤2K)까지 순차적으로 저장된 최대 코드값들중에서 I번째 최대 코드값[MAXCODE(I)]이 현재 코드값(CODE)과 제50 단계에서 비교된다.
만일, 현재 코드값(CODE)이 I번째 최대 코드값[MAXCODE(I)]보다 큰 것으로 판단되거나 제48 단계에서 현재 코드값(CODE)이 I번째 최소 코드값[MINCODE(I)] 이상인 것으로 판단되면, I를 수학식 1에 표현된 상위 점프 어드레스(I_UP)로 갱신하고 제42 단계로 진행한다(제52 단계). 따라서, 상위 점프 어드레스(I_UP)로 갱신된 I 비트를 이용하여, 제42, 제44 및 제46 단계들이 수행되고, 제46 단계에서 판단된 결과에 따라 제48 또는 제50 단계가 수행된다.
한편, 제50 단계에서 현재 코드값(CODE)이 I번째 최대 코드값[MAXCODE(I)]보다 크지 않은 것으로 판단되면, 현재 코드값(CODE)이 I번째 최소 코드값[MINCODE(I)]보다 적은가를 판단한다(제54 단계). 만일, 현재 코드값(CODE)이 I번째 최소 코드값[MINCODE(I)]보다 적은 것으로 판단되거나, 제48 단계에서 현재 코드값(CODE)이 I번째 최소 코드값[MINCODE(I)] 이상이 아닌 것으로 판단되면, I를 수학식 2에 표현된 하위 점프 어드레스(I_DOWN)로 갱신하고 제42 단계로 진행한다(제56 단계). 따라서, 하위 점프 어드레스(I_DOWN)로 갱신된 I비트를 이용하여 제42, 제44 및 제46 단계들이 수행되고, 제46 단계에서 판단된 결과에 따라 제48 또는 제50 단계가 수행된다.
만일, 제54 단계에서 현재 코드값(CODE)이 I번째 최소 코드값[MINCODE(I)]보다 적지 않은 것으로 판단되면, 즉, 최종 코드 워드를 찾으면, 2K개의 허프만 값들중 I번째 포인터 값[VALPTR(I)], I번째 최소 코드값[MINCODE(I)] 및 현재 코드값(CODE)을 이용하여 선택한 하나를 심볼로서 결정한다(제58 단계). 제58 단계를 부연 설명하면, 허프만값 테이블은 순차적으로 허프만 값들을 저장하고, 포인터 값 테이블은 최소값 테이블에서 최소 코드값이 저장된 어드레스만을 추출하여 만들어지며, 1부터 2K(1≤I≤2K)까지 순차적으로 포인터 값들으로서 저장한다. 이 때, 다음 수학식 3과 같이 허프만값 테이블의 어드레스 옵셋(J)을 구한다.
허프만값 테이블에 저장된 허프만값들중 하나를 어드레스 옵션(J)을 이용하여 선택하고, 선택된 허프만값을 심볼로서 결정한다.
여기서, 해당하는 허프만값에서 부가적인 비트 처리를 수행한 뒤, 다음 입력 비트 스트림에 대해 전술한 본 발명에 의한 고속 허프만 디코딩 방법을 수행한다.
이 때, 플래그 정보가 '0'인 코드 워드 길이의 최대 코드값과 최소 코드값은 이전 I의 최대 코드값과 동일한 값으로 설정해 놓는다. 예를 들어, 본 발명에 의한고속 허프만 디코딩 방법은, 찾으려는 코드 워드의 길이가 '12'라고 가정할 때 9 →13 →11 →12의 4단계로 코드 워드의 길이를 찾아내고, 코드 워드의 길이가 '3'이라면 9 →5 →3의 3 단계로 코드 워드의 길이를 찾아낼 수 있다.
이하, 도 3에 도시된 고속 허프만 디코딩 방법을 수행하는 본 발명에 의한 고속 허프만 디코딩 장치의 구성 및 동작을 첨부한 도면을 참조하여 다음과 같이 설명한다.
도 4은 도 3에 도시된 고속 허프만 디코딩 방법을 수행하기 위한 본 발명에 의한 고속 허프만 디코딩 장치의 일 실시예의 블럭도로서, 서치 엔진(80) 및 허프만 테이블 저장부(82)로 구성된다.
도 4에 도시된 서치 엔진(80)은 선택부(100), 제1 및 제2 어드레스 생성부들(102 및 114), 마스킹부(104), 비교부(112) 및 제어부(116)로 구성된다.
먼저, 전술한 허프만 테이블을 저장하는 역할을 하는 허프만 테이블 저장부(82)는 최소 코드값(MINCODE), 최대 코드값(MAXCODE), 플래그 정보(FLAG), 포인터 값(VALPET) 및 허프만 값(HUFFVAL)을 저장한다. 이를 위해, 허프만 테이블 저장부(82)는 제1, 제2, 제3, 제4 및 제5 저장부들(84, 86, 88, 90 및 92)로 구성된다.
여기서, 전술한 최소값 테이블을 저장하는 역할을 하는 제1 저장부(84)는 외부로부터 입력한 최소 코드값(MINCODE)을 순차적으로 저장하고, 저장된 최소 코드값(MINCODE)들중 I번째 저장된 최소 코드값[MINCODE(I)]을 제어부(116)로부터 출력되는 I에 응답하여 제어부(116)로 독출한다. 또한, 전술한 최대값 테이블을 저장하는 역할을 하는 제2 저장부(86)는 외부로부터 입력한 최대 코드값(MAXCODE)을 순차적으로 저장하고, 저장된 최대 코드값(MAXCODE)들중 제어부(116)로부터 출력되는 I에 응답하여, I번째 저장된 최대 코드값[MAXCODE(I)]을 제어부(116)로 출력한다. 제3 저장부(88)는 외부로부터 입력한 플래그 정보(FLAG)를 저장하고, 저장된 플래그 정보(FLAG)의 비트들중에 제어부(116)로부터 출력되는 I에 응답하여, 플래그 정보(FLAG)에서 I번째 비트를 제어부(116)로 출력한다. 전술한 포인터값 테이블을 저장하는 역할을 하는 제4 저장부(90)는 외부로부터 입력한 포인터 값(VALPTR)을 순차적으로 저장하고, 제어부(116)로부터 출력되는 I에 응답하여 I번째 포인터값[VALPTR(I)]을 제어부(116)로 출력한다. 전술한 허프만값 테이블을 저장하는 역할을 하는 제5 저장부(92)는 허프만 값(HUFFVAL)들을 저장하고, 제2 어드레스 생성부(114)로부터 출력되는 어드레스 옵셋(J)에 응답하여 허프만 값들중 선택한 허프만 값을 심볼로서 출력단자 OUT를 통해 출력한다.
도 4에 도시된 제1 및 제2 저장부들(84 및 86)은 도 1에 도시된 MAX/MIN 테이블(12)에 해당하고, 제4 저장부(90)는 VALPTR 테이블(14)에 해당하고, 제5 저장부(92)는 HUFFVAL 테이블(16)에 각각 해당한다. 그러므로, 도 4에 도시된 저장부들(84, 86, 88, 90 및 92)에 각각 저장되는 최소 코드값(MINCODE), 최대 코드값(MAXCODE), 플래그 정보(FLAG), 포인터 값(VALPRT) 및 허프만 값(HUFFVAL)은 사전에 결정됨을 알 수 있다.
한편, 선택부(100)는 초기값(2K-1+1), 수학식 1 및 2에 각각 표현된 상위 및 하위 점프 어드레스들(I_UP 및 I_DOWN)중 하나를 제어부(116)로부터 출력되는 선택신호(S)에 응답하여 선택하고, 선택된 결과를 I로서 마스킹부(104), 제1 어드레스 생성부(102) 및 제어부(116)로 각각 출력한다. 즉, 제40 단계를 수행하기 위해, 제어부(116)는 선택 신호(S)를 출력하여 선택부(100)가 초기값을 선택하여 해당하는 부(102, 104 및 116)로 출력하도록 한다.
이 때, 제42 단계를 수행하기 위해, 마스킹부(104)는 입력단자 IN을 통해 입력되는 JPEG 형식으로 코딩된 이진 입력 코드 스트림으로부터 취한 2K비트의 데이타를 선택부(100)로부터 출력되는 I 비트만큼 마스킹하고, 마스킹된 결과를 현재 코드값(CODE)으로서 비교부(112) 및 제2 어드레스 생성부(114)로 각각 출력한다. 즉, 마스킹부(104)는 선택부(100)로부터 새로운 I가 입력될 때마다 즉, I가 갱신될 때마다 제42 단계를 수행한다.
제44 단계를 수행하기 위해, 제1 어드레스 생성부(102)는 선택부(100)로부터 입력한 I에 응답하여 수학식들 1 및 2와 같이 상위 및 하위 점프 어드레스들(I_UP 및 I_DOWN)을 생성하고, 생성된 상위 및 하위 점프 어드레스들(I_UP 및 I_DOWN)을 선택부(100)로 출력한다.
제46 ∼ 제58 단계들을 수행하기 위해, 제어부(116)는 I에 응답하여 허프만 테이블 저장부(82)로부터 독출한 최대 코드값(MAXCODE)이나 최소 코드값(MINCODE)을 플래그 정보(FLAG)의 I번째 비트와 소정값을 비교한 결과에 응답하여 해당하는 비교기(106 또는 108)로 출력하고, I에 응답하여 허프만 테이블 저장부(82)로부터 독출한 포인터 값(VALPTR) 및 최소 코드값(MINCODE)을 비교부(112)에서 비교된 결과에 응답하여 제2 어드레스 생성부(114) 및 비교기(110)로 출력하고, 비교부(112)에서 비교된 결과에 응답하여 선택 신호(S)를 선택부(100)로 출력한다. 이를 위해, 비교부(112)는 현재 코드값(CODE)과 I번째 최소 코드값[MINCODE(I)] 또는 I번째 최대 코드값[MAXCODE(I)]을 비교하고, 비교된 결과를 제어부(116)로 출력하며, 예를 들면 제1, 제2 및 제3 비교기들(106, 108 및 110)로 구성될 수 있다. 이 때, 제2 어드레스 생성부(114)는 I번째 포인터값[VALPTR(I)], I번째 최소 코드값[MINCODE(I)] 및 현재 코드값(CODE)에 상응하여 J를 수학식 3과 같이 계산하고, 계산된 결과를 제5 저장부(92)의 어드레스 옵션으로서 출력한다. 그러므로, 허프만 테이블 저장부(82)의 제5 저장부(82)는 제2 어드레스 생성부(114)로부터 어드레스 옵션으로서 입력한 J에 응답하여 선택한 허프만 값들중 하나를 심볼로서 출력단자 OUT를 통해 출력한다.
도 3에 도시된 고속 허프만 디코딩 장치에서 제46 ∼ 제58 단계들을 수행하는 과정을 다음과 같이 설명한다.
제46 단계를 수행하기 위해, 제어부(116)는 선택부(100)로부터 입력한 I를 제3 저장부(88)로 출력하여 플래그 정보(FLAG)의 I번째 비트를 제3 저장부(88)로부터 읽어들이고, 읽어들인 플래그 정보(FLAG)의 I번째 비트가 소정값 예를 들면 '1'인가를 검사한다.
이 때, 플래그 정보(FLAG)의 I번째 비트가 '1'인 것으로 판단되면, 제어부(116)는 I를 제2 저장부(86)로 출력하여 I번째 최대 코드값[MAXCODE(I)]을 제2 저장부(86)로부터 읽어들여 제1 비교기(106)로 출력한다. 따라서, 제1 비교기(106)는 제어부(116)로부터 입력한 I번째 최대 코드값[MAXCODE(I)]과 현재코드값(CODE)을 비교하여 제50 단계를 수행할 수 있으며, 비교된 결과를 제어부(116)로 출력한다.
그러나, 플래그 정보(FLAG)의 I번째 비트가 '0'인 것으로 판단되면, 제어부(116)는 I를 제1 저장부(84)로 출력하여 I번째 최소 코드값[MINCODE(I)]을 제1 저장부(84)로부터 읽어들여 제2 비교기(108)로 출력한다. 따라서, 제2 비교기(108)는 제어부(116)로부터 입력한 I번째 최소 코드값[MINCODE(I)]과 현재 코드값(CODE)을 비교하여 제48 단계를 수행할 수 있으며, 비교된 결과를 제어부(116)로 출력한다.
제어부(116)는 제1 비교기(106)에서 비교된 결과를 검사하여 현재 코드값(CODE)이 I번째 최대 코드값[MAXCODE(I)]보다 크지 않은 것으로 인식되면, 제1 저장부(84)로부터 읽어들인 I번째 최소 코드값[MINCODE(I)]을 제3 비교기(110)로 출력한다. 따라서, 제3 비교기(110)는 I번째 최소 코드값[MINCODE(I)]과 현재 코드값(CODE)을 비교하여, 제54 단계를 수행할 수 있으며, 비교된 결과를 제어부(116)로 출력한다. 이 때, 제어부(116)는 제1 비교기(106)에서 비교된 결과를 통해 현재 코드값(CODE)이 I번째 최대 코드값[MAXCODE(I)]보다 큰 것으로 인식되거나, 제2 비교기(108)에서 비교된 결과를 통해 현재 코드값(CODE)이 I번째 최소 코드값[MINCODE(I)] 이상인 것으로 인식되면, 선택부(100)가 상위 점프 어드레스(I_UP)를 선택하도록 선택 신호(S)를 발생한다. 그러나, 제어부(116)는 제2 비교기(108)에서 비교된 결과를 통해 현재 코드값(CODE)이 I번째 최소 코드값[MINCODE(I)] 이상이 아닌 것으로 판단되거나, 제3 비교기(110)에서 비교된결과를 통해 현재 코드값(CODE)이 I번째 최소 코드값[MINCODE(I)]보다 적은 것으로 인식되면, 선택부(100)가 하위 점프 어드레스(I_DOWN)을 선택하도록 선택 신호(S)를 발생한다.
제58 단계를 수행하기 위해, 제어부(116)는 제3 비교기(110)에서 비교된 결과를 통해 현재 코드값(CODE)이 I번째 최소 코드값[MINCODE(I)]보다 적지 않은 것으로 인식되면, 제4 저장부(90)로부터 읽어들인 I번째의 포인터 값[VALPTR(I)]과 제1 저장부(84)로부터 읽어들인 I번째의 최소 코드값[MINCODE(I)]을 제2 어드레스 생성부(114)로 출력한다. 따라서, 제2 어드레스 생성부(114)는 제어부(116)로부터 포인터 값[VALPTR(I)]과 최소 코드값[MINCODE(I)]이 입력될 때, 수학식 3에 보여진 어드레스 옵셋(J)을 계산하여 제5 저장부(92)로 출력한다. 이 때, 제5 저장부(92)는 제2 어드레스 생성부(114)로부터 어드레스 옵셋에 응답하여, 허프만 값들중 하나를 출력단자 OUT를 통해 심볼로서 출력한다.
이상에서 설명한 바와 같이, 본 발명에 의한 고속 허프만 디코딩 방법 및 장치는 허프만 코드 워드 길이가 1 ∼ 16 사이에서 가변되는 값을 찾을 때 순차 서치(sequential search)로 최소 1회, 최대 16회, 평균 8회의 반복 수행을 해야만 코드 워드의 길이를 찾아낼 수 있는 종래의 허프만 디코딩 방법 및 장치와 달리 플래그 정보를 이용하는 수정된 이진 서치로 최소 1회, 최대 4회의 반복 수행만으로 코드 워드의 길이를 정확하고 빠른 시간내에 찾아낼 수 있는 효과를 갖는다. 즉, 4종류의 휘도 직류, 휘도 교류, 색도 직류 및 색도 교류 각각에 대한 플래그 정보의추가만으로 디코딩 시간을 단축시킬 수 있는 효과를 갖는다.
Claims (4)
- 정지 영상 압축 방식(JPEG) 형식으로 코딩된 이진 입력 코드 스트림이 몇 비트의 코드 워드에 해당하는가를 나타내는 심볼을 구하는 허프만 디코딩 방법에 있어서,(a) 상기 코드 워드의 길이(I)의 초기값을 2K-1+1로 설정하는 단계;(b) 상기 입력 코드 스트림으로부터 취한 2K비트에서 I비트 만큼을 마스킹하여 현재 코드값을 구하는 단계;(c) 상기 I를 이용하여 상위 및 하위 점프 어드레스들을 구하는 단계;(d) 플래그 정보의 I번째 비트가 '1'인가를 판단하는 단계;(e) 상기 플래그 정보에서 상기 I번째 비트가 '0'인 것으로 판단되면, 상기 현재 코드값이 I번째 최소 코드값 이상인가를 판단하는 단계;(f) 상기 플래그 정보에서 상기 I번째 비트가 '1'인 것으로 판단되면, 상기 현재 코드값이 I번째 최대 코드값 보다 큰가를 판단하는 단계;(g) 상기 현재 코드값이 I번째 최대 코드값보다 큰 것으로 판단되거나 상기 (e) 단계에서 상기 현재 코드값이 I번째 상기 최소 코드값 이상인 것으로 판단되면, 상기 I를 상기 상위 점프 어드레스로 갱신하고 상기 (b) 단계로 진행하는 단계;(h) 상기 (f) 단계에서 상기 현재 코드값이 I번째 상기 최대 코드값보다 크지 않은 것으로 판단되면, 상기 현재 코드값이 I번째 상기 최소 코드값보다 적은가를 판단하는 단계;(i) 상기 현재 코드값이 I번째 상기 최소 코드값보다 적은 것으로 판단되거나, 상기 (e) 단계에서 상기 현재 코드값이 I번째 상기 최소 코드값 이상이 아닌 것으로 판단되면, 상기 I를 상기 하위 점프 어드레스로 갱신하고, 상기 (b) 단계로 진행하는 단계; 및(j) 상기 (h) 단계에서 상기 현재 코드값이 I번째 상기 최소 코드값보다 적지 않은 것으로 판단되면, 2K개의 허프만 값들중 I번째 포인터 값, I번째 상기 최소 코드값 및 상기 현재 코드값들을 이용하여 선택한 하나를 상기 심볼로서 결정하는 단계를 구비하고,상기 플래그 정보는 2K개의 정보 비트들로 구성되고, 상기 각 정보 비트는 유효한 상기 코드 워드의 정보가 존재하는가에 상응하여 사전에 결정되는 것을 특징으로 하는 고속 허프만 디코딩 방법.
- 제1 항에 있어서, 상기 (c) 단계는상기 상위 점프 어드레스(I_UP) 및 상기 하위 점프 어드레스(I_DOWN)를 아래와 같이 구하는 것을 특징으로 하는 고속 허프만 디코딩 방법.I_UP = I + (I - 1)/2 , I_DOWN = I - (I - 1)/2
- 제1 항에 있어서, 상기 (j) 단계는상기 현재 코드값이 I번째 상기 최소 코드값보다 적지 않은 것으로 판단되면, 순차적으로 저장된 상기 허프만 값들중 아래와 같이 구해지는 J를 어드레스 옵셋을 이용하여 선택한 허프만 값을 상기 심볼로서 선택하고,상기 옵셋은 상기 허프만 값들을 저장하는 테이블의 어드레스에 대한 옵셋인것을 특징으로 하는 고속 허프만 디코딩 방법.J = VALPTR(I) + CODE - MINCODE(I)(여기서, VALPTR(I)는 I번째 포인터 값을 나타내고, MINCODE(I)는 I번째 상기 최소 코드값을 나타내고, CODE는 상기 현재 코드값을 각각 나타낸다.)
- 제1 항에 있어서, 상기 고속 허프만 디코딩 방법을 수행하는 고속 허프만 디코딩 장치에 있어서,상기 최소 코드값, 상기 최대 코드값, 상기 포인터 값 및 상기 허프만 값을 저장하는 허프만 테이블 저장부;상기 초기값, 상기 상위 및 하위 점프 어드레스들중 하나를 선택 신호에 응답하여 상기 I로서 선택하는 선택부;상기 I에 응답하여 상기 상위 및 상기 하위 점프 어드레스들을 생성하여 상기 선택부로 출력하는 제1 어드레스 생성부;입력한 상기 입력 코드 스트림으로부터 취한 2K비트의 데이타를 상기 I 비트만큼 마스킹하고, 마스킹된 결과를 상기 현재 코드값으로서 출력하는 마스킹부;상기 현재 코드값과 상기 I번째 최소 코드값 또는 상기 I번째 최대 코드값을 비교하고, 비교된 결과를 출력하는 비교부;상기 I번째 포인터값, 상기 I번째 최소 코드값 및 상기 현재 코드값에 상응하여 J를 계산하는 제2 어드레스 생성부; 및상기 I에 응답하여 상기 허프만 테이블 저장부로부터 독출한 상기 최대 코드값이나 상기 최소 코드값을 상기 플래그 정보의 I번째 비트와 소정값을 비교한 결과에 응답하여 상기 비교부로 출력하고, 상기 I에 응답하여 상기 허프만 테이블 저장부로부터 독출한 상기 포인터값을 상기 비교된 결과에 응답하여 상기 제2 어드레스 생성부로 출력하고, 상기 I에 응답하여 상기 허프만 테이블 저장부로부터 독출한 상기 최소 코드값을 상기 비교부로 출력하고, 상기 비교된 결과에 응답하여 상기 선택 신호를 상기 선택부로 출력하는 제어부를 구비하고,상기 허프만 테이블 저장부는 어드레스 옵셋으로 입력한 상기 J에 응답하여 상기 허프만 값들중 하나를 상기 심볼로서 출력하는 것을 특징으로 하는 고속 허프만 디코딩 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020010005630A KR20020065211A (ko) | 2001-02-06 | 2001-02-06 | 고속 허프만 디코딩 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020010005630A KR20020065211A (ko) | 2001-02-06 | 2001-02-06 | 고속 허프만 디코딩 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20020065211A true KR20020065211A (ko) | 2002-08-13 |
Family
ID=27693436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020010005630A KR20020065211A (ko) | 2001-02-06 | 2001-02-06 | 고속 허프만 디코딩 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20020065211A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100468742B1 (ko) * | 2002-06-26 | 2005-01-29 | 삼성전자주식회사 | 이진 검색 기법을 이용한 jpeg 허프만 테이블 디코더및 그 방법 |
-
2001
- 2001-02-06 KR KR1020010005630A patent/KR20020065211A/ko not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100468742B1 (ko) * | 2002-06-26 | 2005-01-29 | 삼성전자주식회사 | 이진 검색 기법을 이용한 jpeg 허프만 테이블 디코더및 그 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5467087A (en) | High speed lossless data compression system | |
US4814746A (en) | Data compression method | |
US6879271B2 (en) | Method and apparatus for adaptive data compression | |
EP1024600B1 (en) | Data compression method and data decompressing method, and data compressing apparatus and data decompressing apparatus therefor | |
US5717393A (en) | Apparatus for data compression and data decompression | |
US6563439B1 (en) | Method of performing Huffman decoding | |
US6128412A (en) | Statistical data compression/decompression method | |
JP3240495B2 (ja) | データの可逆符号化方法および装置、並びに、伸長装置 | |
US5550542A (en) | Variable length code look-up table having separate code length determination | |
EP0127815B1 (en) | Data compression method | |
JP2002252563A (ja) | ハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法 | |
US5594435A (en) | Permutation-based data compression | |
CN112100455B (zh) | 基于字符串并行搜索的lzw字典搜索方法 | |
US7548175B2 (en) | Encoding apparatus, decoding apparatus, encoding method, computer readable medium storing program thereof, and computer data signal | |
JP2011066557A (ja) | データ処理装置およびデータ処理方法 | |
US7864085B2 (en) | Data compression method and apparatus | |
US6515598B2 (en) | System and method for compressing and decompressing data in real time | |
JP3593884B2 (ja) | 符号化装置および復号装置 | |
KR20030082586A (ko) | 폰트 압축 및 검색 | |
JPH07107303A (ja) | ハフマン符号の復号化方法 | |
KR20020065211A (ko) | 고속 허프만 디코딩 방법 및 장치 | |
JP2003264703A (ja) | データ符号化装置、データ符号化方法、及びそのプログラム | |
JP3350385B2 (ja) | 符号生成方法および符号化方法 | |
JP3199292B2 (ja) | ハフマン符号の符号化でのランレングス抽出方法、ハフマン符号変換方法およびmh符号化処理方法 | |
JP2002330076A (ja) | ハフマン復号装置及び復号方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |