KR100317792B1 - 가역임베디드웨이블릿을이용한데이터압축/복원장치및방법 - Google Patents

가역임베디드웨이블릿을이용한데이터압축/복원장치및방법 Download PDF

Info

Publication number
KR100317792B1
KR100317792B1 KR1019980015709A KR19980015709A KR100317792B1 KR 100317792 B1 KR100317792 B1 KR 100317792B1 KR 1019980015709 A KR1019980015709 A KR 1019980015709A KR 19980015709 A KR19980015709 A KR 19980015709A KR 100317792 B1 KR100317792 B1 KR 100317792B1
Authority
KR
South Korea
Prior art keywords
bit
data
coding
coefficient
coefficients
Prior art date
Application number
KR1019980015709A
Other languages
English (en)
Other versions
KR19980086694A (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 KR19980086694A publication Critical patent/KR19980086694A/ko
Application granted granted Critical
Publication of KR100317792B1 publication Critical patent/KR100317792B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/36Scalability techniques involving formatting the layers as a function of picture distortion after decoding, e.g. signal-to-noise [SNR] scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output

Landscapes

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

Abstract

압축 그리고/또는 복원을 수행하는 방법과 장치를 설명한다. 한 실시예에서, 본 발명은 버퍼, 웨이블릿 변환 유니트, 코더를 갖는 시스템을 포함한다. 웨이블릿 변환 유니트는 버퍼에 연결되는 입력을 갖고 버퍼에 저장된 화소에 대하여 웨이블릿 변환을 수행하며 출력에 계수를 발생한다. 코더는 웨이블릿 변환 유니트에 연결되어 버퍼로부터 수신된 변환된 화소를 부호화한다.

Description

가역 임베디드 웨이블릿을 이용한 데이터압축/복원장치 및 방법{Data Compression/decompression apparatus using reversible embeded wavelet and method thereof}
본 발명은 데이터의 압축과 복원 시스템에 관한 것으로, 특히 압축/복원 시스템에서 무손실 그리고 유손실 데이터의 부호화와 복호화 장치 및 방법에 관한 것이다.
이 출원은 1996년 5월 3일에 출원된 "Compression/Decompression Using Reversible Embedded Wavelet"의 제목인 출원번호 08/643,268의 CIP(continuation-in-part)이고, 이것은 1995년 6월 30일에 출원된 "Reversible Wavelet Transform andEmbedded Codestream Manipulation"의 제목인 출원번호 08/498,036의 CIP이며, 이것은 1994년 9월 20일에 출원된 "Apparatus for Compression Using Reversible Embedded Wavelets"의 제목인 출원번호 08/310,146의 CIP이다.
데이터 압축은 많은 양의 데이터를 저장하고 전송하는데 매우 유용한 툴(tool)이다. 예를들면, 원고의 팩시밀리 전송과 같은 화상 전송에 요구되는 시간은 압축을 사용하여 화상을 재생하는데 요구되는 비트(bit)의 수를 줄이면 급격히 감소한다.
많은 데이터 압축기술이 종래에도 있었다. 압축기술은 크게 두 개의 범주로 분리될 수 있는데 무손실 부호화와 유손실 부호화가 그것이다. 유손실 부호화는 정보의 손실이 있는 부호화에 관계되며 따라서 원래 데이터를 완전하게 재구성하는 것을 보장하지 못한다. 유손실 부호화의 목적은 원래 데이터로의 변환이 거부되지 않고 검출할 수 있을 정도로 이루어지는 것이다. 무손실 부호화에서, 모든 정보를 보유하고 데이터는 완전하게 재구성될 수 있도록 압축된다.
무손실 부호화에서, 입력 심볼 또는 농도 데이터는 출력 코드워드(cordwords)로 변환된다. 입력은 화상, 음성, 1차원(예를들면, 공간적으로 또는 시간적으로 변화하는 데이터), 2차원(예를들면, 두 공간적 방향(한 공간방향과 한 시간방향)으로 변화하는 데이터), 또는 다차원/다중-스펙트럴 데이터를 포함할 수 있다. 압축이 잘 되면 코드워드는 부호화되지 않은 입력 심볼(또는 농도 데이터)에 요구되는 비트의 수보다 적은 비트로 표현된다. 무손실 부호화 방법은 사전적 코딩방법(예를들면, Lempel-Ziv), 런 길이 코딩, 열거(enumerative) 코딩, 엔트로피 코딩을 포함한다. 무손실 화상 압축에서, 압축은 예측 또는 컨텍스트와 코딩에 기초한다. 팩시밀리압축(ISO/IEC 11544)을 위한 JBIG 표준과 연속-톤 화상을 위한 DPCM(differential pulse code modulation-JPEG 표준(ISO/IEC 10918)의 옵션)는 화상의 무손실 압축의 예이다. 유손실 압축에서, 입력 심볼 또는 농도 데이터는 출력 코드워드로 변환되기 전에 양자화된다. 양자화는 중요하지 않은 특성을 제거하는 반면에 데이터의 의미있는 특성은 보존하도록 한다. 양자화 전에, 유손실 압축 시스템은 가끔 에너지를 밀집시키기 위한 변환을 사용한다. JPEG는 화상 데이터의 유손실 코딩 방법의 예이다.
화상신호처리의 최근의 발달은 효율적이고 정확한 형태의 데이터 압축 코딩의 필요성에 주의가 집중되고 있다. 다중 해상도 피라미드식 처리와 웨이블릿 피라미드 처리를 포함한 다양한 형태의 변환 또는 피라미드 모양의 신호처리가 제안되었다. 이러한 형태는 또한 서브밴드 처리와 계층적 처리라고도 한다. 화상 데이터의 웨이블릿 피라미드식 처리는 원래 화상의 서브밴드 분해를 생성하는 직각 미러 필터(QMFs: quadrature mirror filters)를 사용하는 다중해상도 피라미드식 처리의 구체적인 형태이다. 다른 형태의 논(non)-QMF 웨이블릿이 존재한다. 웨이블릿 처리에 대한 더 많은 정보는 Antonini, M., et al., "Image Coding Using Wavelet Transform", IEEE Transaction on Image Processing, Vol. 1, No. 2, April 1992; Shapino, J., "An Embedded Hierarchical Image Coder Using Zerotrees of Wavelet Coefficient", Proc. IEEE Data Compression Conference, pgs. 214-223, 1993에 있다. 가역 변환에 대한 정보는 Said, A. and Pearlman, W. "Reversible Image Compression via Multiresolution Representation and Predictive Coding", Dept.of Electrical, Computer and Systems Engineering, Renssealaer Polytechnic Institute, Troy, NY 1993에 있다.
압축은 가끔 많은 시간을 소비하며 메모리를 필요로 한다. 가능하면 적은 메모리를 가지고 그리고/또는 빠른 압축을 수행하는 것이 바람직하다. 몇몇 응용예에서는 품질을 보장할 수 없고 압축 비율이 충분히 높지 않거나 데이터 비율을 제어할 수 없기 때문에 압축을 사용하지 않는다. 그러나 전송 그리고/저장할 정보의 양을 줄이기 위하여 압축을 사용하는 것이 바람직하다.
디지털 복사기, 프린터, 스캐너, 다기능 기계는 프레임 스토어로 매우 진보하였다. 압축된 프레임 스토어는 메모리를 감소시키고 이러한 제품의 프레임 스토어에 요구되는 비용을 감소시킨다. 그러나 많은 프레임 스토어는 램(RAMs)으로 구현된다. 램은 빠르지만 대개 비싸다. 또한, 하드디스크를 메모리로 사용할 수 있는데, 이러한 하드디스크는 일반적으로 싸다(또는 RAM보다는 일반적으로 덜 비싸다)고 여겨진다. 그러므로, 시스템 제조업자는 프레임 스토어와 같은 목적을 위하여 RAM대신 하드디스크를 사용하여 덜 비싼 시스템을 생산할 수 있는 잇점이 있다.
시간에 민감한 응용례에서 하드디스크를 사용함에 있어서의 문제점은 동일한 정보를 RAM으로부터 엑세스할 수 있는 만큼 빠르게 하드디스크로부터 정보를 억세스하기 어렵다는 것이다. 또한, 많은 하드디스크는 디스크 상에 저장되는 정보의 양을 증가시키기 위하여 디스크 상에 정보를 저장할 때 압축을 사용한다. 압축을 수행하는데 필요한 시간은 또한 시간에 민감한 응용례에서 하드디스크를 사용하는데 방해가 된다. 하드디스크의 사용에 있어서 낮은 속도와 압축의 사용은 시간에 민감한응용례에서 하드디스크를 사용하는 것을 구현하기 어렵게 만든다.
본 발명은 빠른 유손실/무손실 압축을 제공한다. 본 발명은 비싼 RAM대신 값싼 하드디스크 기술을 사용할 수 있는 시스템을 구현한다. 또한 본 발명은 하드디스크에 비율을 매칭시키고 프린트 엔진과 같은 시스템을 구현하는 다른 부분의 대역폭에 하드디스크를 매칭시키기 위한 것이다. 본 발명은 또한 압축 그리고 복원시간이 RAM 속도보다 많이 늦지 않도록 RAM을 사용하기 위한 것이다. 이러한 방법으로 본 발명은 RAM에 비율 매칭을 수행한다.
도 1은 자녀(children)가 부모(parent)에 의해 조절되는 컨텍스트 의존관계를 나타내는 도면.
도 2A는 래스터 오더와 유사한 오더를 나타내는 도면.
도 2B는 쇼트 심 오더(short seam order)라고 불리는 오더의 다른 실시예를 나타내는 도면.
도 2C는 다른 쇼트 심 오더를 나타내는 도면.
도 3A 내지 3H는 본 발명의 웨이블릿 트리에 대한 4 레벨 변환을 위한 TS-변환의 각 적용 결과를 나타내는 도면.
도 4의 (A)는 1차원 필터를 구현하는데 사용하기 위한 정/역 필터 유니트의 일실시예를 나타내는 블록 다이어그램.
도 4의 (B)는 본 발명에 따른 첫 번째 레벨 정변환의 일실시예를 나타내는 블록 다이어그램.
도 5는 본 발명에 따른 완전 정변환의 일실시예를 나타내는 블록 다이어그램.
도 6은 계수를 출력할 때의 타이밍 다이어그램.
도 7A 내지 7H는 TT-변환의 각 1차원 필터링 동작의 결과(출력)를 나타내는 도면.
도 8은 10 탭 정/역필터유니트의 블록 다이어그램.
도 9는 도 8의 정/역필터를 위한 중첩 유니트의 일실시예를 나타내는 블록 다이어그램.
도 10은 코드스트림의 오더링과 코딩 유니트내의 오더링을 나타내는 도면.
도 11은 화소마다 b비트를 갖는 입력 화상의 2-레벨 TT-변환과 TS-변환 분해에서 다양한 계수의 비트 깊이를 나타내는 도면.
도 12는 본 발명에서 계수 정렬에 사용되는 주파수 대역의 곱셈기의 일실시예를 나타내는 도면.
도 13A는 가장 중요한 데이터와 덜 중요한 데이터로 분할된 계수를 나타내는 도면.
도 13B는 데이터가 버려지지 않는 무손실의 경우를 나타내는 도면.
도 13C는 비트평면을 버리는 것이 2에 의하여 분할되는 것과 같기 때문에 데이터의 1 비트평면이 버려진 경우(즉, Q=2)를 나타내는 도면.
도 14는 압축/복원 시스템의 동작의 일실시예를 설명하는 플로우차트.
도 15에서 각 트리에 6 비트가 사용되는 일실시예를 나타내는 도면.
도 16은 가장 중요한 청크(chunk)를 코딩하는 플로우차트.
도 17은 가장 중요한 데이터의 코딩 패스동안 사용되는 포맷팅 유니트와 컨텍스트 모델의 일실시예를 나타내는 블록 다이어그램.
도 18은 첫 번째 비트평면의 일실시예를 나타내는 도면.
도 19는 LIC 비트평면을 코딩하는 프로세스의 일실시예를 설명하는 플로우차트.
도 20은 덜 중요한 데이터에 대한 미리보기와 컨텍스트 모델의 일실시예를 나타내는 블록 다이어그램.
도 21은 헤드 비트에 대한 조절을 제공하는 컨텍스트 모델의 일실시예를 나타내는 블록 다이어그램.
도 22는 모든 이웃과 부모(parent)에 대한 조절을 갖는 컨텍스트 모델의 일실시예에 대한 메모리 사용을 나타내는 도면.
도 23은 부호 비트에 대한 컨텍스트 모델의 일실시예를 나타내는 블록 다이어그램.
도 24는 LIC에 대한 병렬 코딩의 일실시예를 나타내는 도면.
도 25는 프린터 전단의 일실시예를 나타내는 블록 다이어그램.
도 26은 프린터 후단의 일실시예를 나타내는 블록 다이어그램.
도 27은 프린터 후단의 다른 실시예를 나타내는 블록 다이어그램.
도 28은 프린터 압축/복원을 포함하는 집적 회로(IC) 칩의 일실시예를 나타내는 블록 다이어그램.
도 29는 프린팅 동안 시스템의 기본적이 타이밍도.
도 30은 페이지의 대역 버퍼를 나타내는 도면.
도 31은 페이지의 대역 버퍼를 나타내는 도면.
도 32는 병행 메모리 억세스의 필요조건을 설명하는 엔코딩의 타이밍 다이어그램.
도 33은 판독된 데이터보다 큰 기록 데이터를 취급하기 위하여 순환 어드레싱이 어떻게 사용될 수 있는지를 나타내는 도면.
도 34는 엔코더 및 디코더의 쌍을 나타내는 도면.
도 35는 2진 컨텍스트 모델의 일실시예를 나타내는 도면.
도 36은 2진 컨텍스트 모델의 다른 실시예를 나타내는 도면.
도 37은 코딩 유니트의 모든 계수의 이웃하는 계수를 나타내는 도면.
도 38은 MSE 정렬에 기초한 피라미드 정렬을 나타내는 도면.
도 39는 웨이블릿 계수의 MSE 정렬을 나타내는 도면.
*도면의 주요부분에 대한 부호의 설명*
4001, 4002, 4007, 4008, 4009, 4010, 4011 ... 가산기
4003, 4004, 4006 ... 먹스
4005 ... 레지스터 파일
401, 402 ... 필터 유니트
403, 404, 405, 406 ... 레지스터
407, 408 ... 먹스
본 발명은 압축 그리고/또는 복원을 수행하는 방법과 장치를 개시한다. 본 발명의 일실시예는 버퍼, 웨이블릿 변환 유니트, 코더를 갖는 시스템을 포함한다. 웨이블릿 변환 유니트는 버퍼에 저장된 화소에 대하여 웨이블릿 변환을 수행하고 출력에 계수를 발생하기 위하여 버퍼에 연결되는 입력을 갖는다. 코더는 웨이블릿 변환 유니트에 연결되어 버퍼로부터 수신된 변환된 화소를 부호화한다.
압축과 복원을 위한 방법과 장치를 설명한다. 다음의 설명에서, 지연의 형태, 비트 레이트, 필터의 형태 등과 같은 여러 가지 상세한 것에 대하여 개시한다. 그러나 당업자에게 본 발명은 이러한 구체적인 설명이 없이도 실시할 수 있는 것은 명백하다. 다른 예에서, 본 발명을 불명료하도록 하는 것을 피하기 위하여 공지의 구조와 장치를 상세하게 도시하기보다는 블록 다이어그램 형태로 도시한다.
다음의 상세한 설명의 일부분은 컴퓨터 메모리내에서 데이터 비트상의 동작을 알고리즘과 부호적 표현의 관점에서 제공된다. 이러한 알고리즘적 설명과 표현은 데이터 처리기술의 분야에서 당업자가 다른 당업자에게 그들의 일의 본질을 가장 효과적으로 전달하는데 사용하는 수단이다. 여기서 알고리즘은 일반적으로 원하는 결과로 이끄는 단계의 일관된 시퀀스로 생각된다. 단계들은 물리량을 물리적으로 처리하는 것을 요구한다. 보통 필연적은 아닐지라도 이러한 양은 저장되고 전송되고 결합되고 비교되고 그리고 달리 처리될 수 있는 전기적 또는 자기적 신호의 형태를 취한다. 주로 보편적 사용의 이유에서 이러한 신호들은 때때로 비트, 값, 요소, 심볼, 문자, 용어, 수 등으로 부르는 것이 편리하다.
그러나 이러한 용어 그리고 유사한 용어는 적절한 물리량과 관계가 있으며 단지 이들 양에 적용되는 편리한 라벨인 것을 명심해야 한다. 다음의 논의에서 명백하게 달리 구체적으로 언급하지 않는 한 본 발명을 통하여 처리, 계산, 계산, 또는 결정 또는 표시와 같은 용어를 사용하는 논의는, 컴퓨터 시스템의 레지스터와 메모리내에서 물리(전자)양으로 표현되는 데이터를 컴퓨터 시스템의 메모리 또는 레지스터 또는 다른 정보저장, 전송, 표시장치내에서 물리량으로 유사하게 표현되는 다른 데이터로 처리하고 변환하는 메모리내 컴퓨터 시스템 또는 유사한 전자계산장치의 작동과 처리에 관련되는 것으로 인식된다.
본 발명은 또한 여기의 동작을 수행하는 장치와 관련된다. 이 장치는 요구되는 목적을 위하여 구체적으로 구성되고, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의하여 선택적으로 동작되고 재구성되는 일반적 목적의 컴퓨터를 포함한다. 그러한 컴퓨터 프로그램은 제한되지는 않지만 플로피 디스크, 광 디스크, CD-ROMs, 자기-광디스크, ROMs(read-only memories), RAMs(random access memories), EPROMs, EEPROMs, 자기 또는 광 카드, 전자적 명령을 저장하는데 적합한 어떤 형태의 매체와 같은 읽기 가능한 컴퓨터 저장매체에 저장되고, 각각은 컴퓨터 시스템 버스에 연결된다. 여기에서 제공되는 알고리즘과 표시는 원래부터 어떤 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 많은 일반 목적의 기계는 여기에서 개시한 바에 따라 프로그램으로 사용할 수 있고 또는 요구되는 방법의 단계를 수행하는 더 구체적인 장치를 편리하게 구성할 수 있다. 많은 이러한 기계에 요구되는 구조는 아래의 설명으로부터 나타난다. 또한, 본 발명은 어떤 특정 프로그램 언어에 대하여 기술하지 않는다. 많은 프로그램 언어가 여기에서 설명하는 본 발명을 구현하기 위하여 사용될 수 있다.
다음의 용어들이 다음에 설명에서 사용된다. 이러한 여러 가지 용어에 대한 정의가 포함된다. 그러나 제공되는 정의는 용어들이 기술분야에서 알려진 범위에 제한되지 않는다. 이들 정의는 본 발명을 이해하는데 도움을 주기 위하여 제공된다.
ABS 코딩 : 비트 발생을 위한 간단한 코드(예를들면, 실행코드)와 사용된 코드워드에 기초한 확률 예측(예를들면, 확률예측 표)을 사용하는 병렬 엔트로피 코딩방법. 일실시예에서, ABS 코딩은 또한 몇 개의 코더로부터의 스트림을 멀티플렉싱과 디멀티플렉싱하기 위한 방법을 포함한다.
정렬(alignment) : 나머지 주파수 대역에 대하여 하나의 주파수 대역의 변환 계수의 쉬프팅 정도.
산술코딩 : 한정된 정확성의, 반드시는 아니지만 2진 코더를 갖는 새넌(Shannon)/엘리어스(Elias) 코딩.
B-코딩 : 압축을 위한 유한 상태 머신을 사용하는 2진 엔트로피 부호화기. 호퍼만 코딩과 달리, 유한 상태머신을 사용하여 2진 심볼을 잘 처리해 내며, 그리고 입력확률의 범위를 위해 유용하다.
2진 엔트로피 코더: 간혹 가장 확률이 높은 심볼(mps)과 가장 확률이 낮은 심볼(lps)로 표현되며, 2진(예/아니오)결정을 수행하는 무잡음 코더.
2진-형태(style) : 특정 컨텍스트 모델과 화소에 대해 에지-필(edge-fill) 그레이 엔코딩을 갖는 코딩형태.
2진-형태 컨텍스트 모델 : 2-레벨과 제한된-레벨의 화상 데이타를 위한 컨텍스트 모델.
비트-중요도(bit-significance) : 부호 크기와 유사하고, 헤드 비트를 포함하며, 만일 있으면, 부호 비트가 후속하고, 테일(tail) 비트가 후속하는 수의 표현.
자녀-기초 순서(child-based order) : 2차원 화상에 대한 스캔 순서. 이는 2*2블럭에 대한 스캔작업을 제외한 래스터 순서와 유사하다. 래스터 순서에서 "부모(parent)" 주파수 대역에 대한 스캐닝을 고려하라. 각 계수는 4개 자녀(children)를 포함할 것이다. 이들 자녀(children)는 최상좌측(top-left), 최상우측(top-right), 최하좌측(bottom-left), 최하우측(bottom-right)에서부터 그 다음 부모(parent)와 그 다음 4개 자녀(children) 세트 등이 후속하여 라인의 끝까지 순서화된다. 이후 처리는 그 다음의 두 라인으로 리턴하여 결국 우측(right) 아래 코너에서 종료된다. 라인은 스킵되지 않는다. 자녀-기초 순서는 또한 2*2블럭순서라고도 한다.
계수 : 변환후 성분
성분(components) : 화상의 구성부분. 이 성분은 화소를 구성한다. 예를들면, 레드(red), 그린(green), 그리고 블루(blue) 대역은 대역의 성분 대역이다. 각 개별 화소는 레드, 그린, 및 블루 성분으로 이루어진다. 성분과 성분 대역은 화상에 대한 공간 매핑을 갖는 어떤 형태의 정보를 포함할 수 있다.
컨텍스트 모델(context model) : 현재 비트에 대하여 시계열적으로-학습된 정보를 제공하는 코딩될 현재 비트에 관한 인과적으로 취할 수 있는 정보로, 엔트로피 코딩을 위한 조건적 확률 예측을 가능하게 한다. 2진 화상에서, 화소를 위해 가능한 컨텍스트는 동일행내 앞의 2개 화소와 그 앞의 행에서부터 3개 화소이다.
분해 레벨 : 웨이블릿 분해 피라미드에 위치됨. 이는 직접적으로 해상도에 관련된다.
효율적인 변환 : 그 계수들을 표현하기 위해서 비트의 최고 적은 숫자를 사용하면서 계수 내로 최고의 에너지 응축(compaction)을 달성하는 변환.
임베디드 컨텍스트 모델(embedded context model) : 더 중요한 값이 유지될 경우에 효과적인 유손실 압축이 획득되는 방법으로 컨텍스트 빈(bins)을 분리시키고 중요도의 레벨을 발생시키는 컨텍스트 모델.
순서를 갖는 임베디드(embedded with ordering) : 중요도에 대한 명확한 라벨링없이, 앞에 가장 중요한 데이터로 압축 데이터를 순서화하는 임베디드 컨텍스트 모델에 대한 특별 케이스.
임베디드 양자화 : 코드스트림에 의해 함축되는 양자화. 예를 들어, 만약 중요한 레벨이, 가장 중요한 것부터 가장 덜 중요한 것까지, 순서적으로 위치되면, 그후 양자화는 코드스트림의 간단한 절단에 의해 수행된다. 동일한 기능은 태그(tags), 마커(markers), 포인터(pointers), 또는 다른 신호를 가지고 취할 수 있다. 다중 양자화는 디코드시간에 화상에 대해 수행될 수 있으나 단지 하나의 임베디드된 양자화가 엔코드 시간에 수행될 수 있다.
엔트로피 코더 : 확률예측에 기초하여 현재 비트를 엔코딩하고 디코딩하는 장치. 엔트로피 코더를 또한 여기에선 멀티-컨텍스트 2진 엔트로피 코더라고 말할 수 있다. 현재 비트의 컨텍스트는 "인접(nearby)" 비트에서 선택된 몇 개의 구성(configuration)이고 현재 비트(또는 멀티 비트)의 최적 표현을 위해 확률예측을 허용한다. 일실시예에 있어서, 엔트로피 코더는 2진 코더, 병렬 실행-길이 코더 또는 호퍼만 코더를 포함할 수 있다.
엔트로피 포인트 : 알려진 코딩 상태로 시작하는 코딩된 데이타의 포인트. 디코더는 이전의 데이타를 디코딩하지 않고서 이 포인트에서 디코딩을 시작할 수 있다. 대부분의 경우에 있어서, 이는 컨텍스트와 2진 엔트로피 코더가 초기 상태로 리세트되는 것을 필요로 한다. 각 코딩 유니트를 위한 코딩된 데이타는 엔트로피 포인트에서 시작한다.
고정-길이 : 데이타의 특정 블럭을 압축된 데이타의 특정 블럭으로 변환시키는 장치, 예를들면, 블록절단코딩(BTC:block truncation coding)과 벡터 양자화(VQ)의 몇가지 형태. 고정-길이 코드들은 고정-비율과 고정-크기의 응용(applications)을제공하지만, 비율-왜곡 수행이 가변-비율 시스템과 비교해서 좋지 않다.
고정-비율 : 어떤 화소 비율을 유지시키면서 제한된 대역폭의 채널을 갖는 응용 또는 시스템. 일실시예에 있어서, 이 목적을 달성하기 위해, 전체 평균 압축보다도 오히려 국부적 평균 압축이 이루어진다. 예를 들어, MPEG는 고정-비율을 필요로 한다.
고정-크기 : 제한된 크기의 버퍼를 갖는 응용 또는 시스템. 일실시예에서, 이 목적을 달성하기 위해, 전체 평균 압축이 달성된다. 예를들면, 프린트 버퍼이다. (응용은 고정비율, 고정크기, 또는 둘 모두로 될 수 있다.)
주파수 대역 : 각 주파수 대역은 필터링 동작의 동일한 시퀀스로부터 발생하는 일군의 계수들을 기술한다.
헤드 비트 : 비트-중요도 표현에서, 헤드 비트는 가장 중요한 비트에서 첫 번째 논-제로 비트(non-zero bit)까지(첫 번째 논-제로 비트(non-zero bit)를 포함)의 크기 비트이다.
호퍼만 코더 : 일반적으로, 각 심볼을 위한 정수 비트를 생산하는 고정 길이코드.
중요도 레벨 : 압축전, 임베디드된 데이타의 전체 비트평면(bit-plane)에 해당하는 코딩된 데이타의 유니트. 중요도 레벨은 다른 계수 주파수 대역으로부터의 적절한 모든 비트평면을 포함한다.
가장 확률이 낮은 심볼(LPS:least probable symbol) : 50% 보다 낮은 확률을 갖는 2진 결정에서의 결과. 2개의 결과가 확률이 동일할 때, 엔코더와 디코더가 동일하게 지시하는 한 어떤 것이 mps 또는 lps로 지시되는가는 중요하지 않다.
무손실/무잡음/가역 코딩 : 원래 데이타의 완벽한 재구성을 허용하는 방법으로 데이터를 압축.
유손실 코딩 : 원본 데이타의 완벽한 재구성을 보장하지 못하는 데이타의 코딩. 원래 데이타로의 변화는 가시적으로 부정하거나 검출하지 못하는 방법으로 수행될 수 있다. 간혹 고정 비율은 가능하다.
가장 확률이 높은 심볼(MPS:most probable symbol) : 50%이상의 확률을 갖는 2진 결정의 결과.
중첩 변환 : 단일 소스 샘플 포인트가 동일 주파수의 다중 계수에 기여하는 변환. 샘플들은 다수의 웨이블릿(wavelets)과 중첩된 직교변환(Lapped Orthogonal Transform)을 포함한다.
부모 계수(parent coefficient) : 현재계수 또는 화소와 동일종류의 화상 공간을 커버하는 다음의 보다 높은 피라미드 레벨내의 계수 또는 화소. 예를들면, 1SD 계수의 부모(parent)는 도 1의 3SD의 부모인 2SD계수이다.
확률예측 머신/모듈(probability estimation machine/module) : 컨텍스트내의 확률을 추종하는 코딩 시스템의 부분.
진행하는 화소 깊이(progressive pixel depth);전체 화상 해상도에서 데이타의 비트-평면을 깊게 하여 순서화되는 코드스트림.
진행하는 피라미달 (progressive pyramidal) : 보다 낮은 각 해상도가 각 차원(영역에서의 4개의 팩터)내에서 2개의 선형 팩터로 되는 연속 해상도.
Q-코더; 이산값으로 제한된 승산을 대신하여 가산(additions)을 이용할 수 있고 비트가 출력될 때 이산값으로 제한된 확률과 확률예측이 갱신되는 2진 산술 코더.
래스터 오더(raster order); 2차원 화상 전체에 대한 스캔 순서. 상부 좌측 코너에서 시작하고, 좌측에서 우측으로 이동하며, 이후 그 다음 라인의 좌측으로 복귀한 후, 마지막에는 하부 우측 코너에서 종료된다. 라인은 스킵되지 않는다.
가역 변환 : 일실시예에 있어서, 가변변환은 정수 산술의 압축 결과가 원본으로 재구성될 수 있는 정수 산술로 이루어진 효율적인 변환이다.
테일-비트(tail-bits) 또는 테일 : 비트-중요도 표현에 있어서, 테일 비트는 가장 중요한 논-제로 비트보다 덜 중요도를 갖는 크기 비트이다.
타일 데이타 세그먼트(tile data segment) : 하나의 코딩 유니트를 충분히 설명하는 코드스트림의 부분.
TS-변환 : 2-6 변환, 2-탭 저역통과 분석 필터와 6-탭 고역통과 분석 필터를 갖춘 특정 가역 웨이블릿 필터쌍. 합성필터는 분석필터의 구적미러이다.
TT-변환 : 2-10 변환, 2-탭 저역통과 분석 필터과 10-탭 고역통과 분석필터를 갖춘 특정 가역 웨이블릿 필터쌍. 합성필터는 분석필터의 구적미러이다.
통합된 무손실/유손실 : 동일한 압축 시스템은 무손실 또는 유손실 재구성이 가능한 코드스트림을 제공한다. 본 발명의 일실시예에서, 이 코드스트림은 엔코더에 셋팅이나 명령없이 둘다 가능하다.
웨이블릿 필터(wavelet filter) : 웨이블릿 변환으로 사용된 고역과 저역통과 합성 및 분해필터.
웨이블릿 변환 : "주파수"영역과 "시간(또는 공간)"영역의 제약 두가지 모두를 갖는 변환. 일실시예에 있어서, 고역통과필터와 저역통과필터를 구비하는 변환이다. 결과계수는 두가지에 의해 추출되며(엄밀하게는 필터링 되며) 그리고 필터는 저역통과계수에 적용된다.
웨이블릿 트리(wavelet trees) : 최고 높은 레벨분해의 SS섹션내 단일 계수에 관련되는 계수, 및 화소. 계수 숫자는 레벨 숫자의 기능이다. 도 1은 웨이블릿 트리내에 포함된 계수를 도시하고 있다. 웨이블릿의 길이는 분해레벨의 숫자에 의존한다. 예를 들어, 하나의 분해레벨을 가지고는, 웨이블릿 트리가 4개 화소에 미치고, 두 개의 분해레벨을 가지고는, 16개 화소에 미친다. 아래 테이블1은 다른 레벨을 위한 웨이블릿에 의해 영향받는 화소의 숫자를 보이고 있다. 2차원에 있어서, 각 웨이블릿 트리는 SD, DD 및 DS라고 명명된 서브트리를 형성한다.
다른 레벨의 분해에 대한 웨이블릿 트리의 스팬(span)
폭 높이 합계
1 레벨2 레벨3 레벨4 레벨5 레벨6 레벨 2 2 44 4 168 8 6416 16 25632 32 102464 64 4096
본 발명의 개요
본 발명은 엔코딩부와 디코딩부를 갖는 압축/복원시스템을 제공한다. 엔코딩부는 입력 데이터를 엔코딩하여 압축 데이터를 생성하고 반면에 디코딩부는 먼저 엔코딩된 데이터를 디코딩하여 원래의 입력 데이터를 재구성한다. 입력 데이터는 화상(또는 비디오), 오디오 등의 다양한 형태의 데이터를 포함한다. 한 실시예에서, 데이터는 디지털 신호 데이터이지만, 디지털화된 아날로그 데이터, 텍스트 데이터 포맷 그리고 다른 포맷도 가능하다. 데이터의 소스는 엔코딩부 그리고/또는 디코딩부의 메모리 또는 채널이 될 수 있다.
본 발명에서, 엔코딩부 그리고/또는 디코딩부의 요소는 컴퓨터 시스템상에서 사용되는 하드웨어 또는 소프트웨어로 구현될 수 있다. 본 발명은 무손실 압축/복원 시스템을 제공한다. 본 발명은 또한 유손실 압축/복원을 수행하도록 구성할 수 있다.
본 발명의 시스템은 다음에서 더 자세하게 설명되는 가역 웨이블릿에 의하여 빠른 유손실/무손실 압축을 채용한다. 시스템은 예를들면 레이저 프린터와 같은 프린터를 포함한다. 한 실시예에서, 프린터는 한 페이지를 저장하는 값싼 하드디스크를 사용하여 비싼 RAM의 필요양을 줄인다. 압축은 하드디스크 또는 다른 저장장치의 제한된 대역폭을 프린트 엔진이 요구하는 더 큰 대역폭에 매칭시킨다. 본 발명의 코딩 기술은 프린터의 고속, 실시간의 요구를 만족시키고 본 발명은 화상의 특성과 하드디스크의 버스트 성질(bursty nature)이 요구하는 대로 뛰어난 무손실 또는 유손실 압축을 제공한다.
다음의 상세한 설명은 가역 웨이블릿, 압축된 프레임 스토어 응용, 컬러 레이저 프린터, 프린터 칩의 실시에 의하여 압축의 일반적인 개요를 나타낸다. 프린터의 렌더링(rendering) 엔진은 저장을 위하여 하드디스크를 사용한다. 하드디스크는 프린트 엔진보다 늦기 때문에 압축은 비율 매칭을 제공하기 위하여 사용된다. 표시 리스트 기술 또한 렌더링시 요구되는 메모리를 줄이기 위하여 사용된다. 표시-리스트에 기초하는 렌더링 엔진은 압축 시스템이 화상의 대역을 독립적으로 다룰 수 있도록 한다. 본 발명이 프린트 시스템의 관점에서 설명되지만 본 발명은 압축 그리고/또는 복원이 그 일부분으로 포함되는 다른 시스템에 적용 가능하다.
또한 여기에서 임베디드 유니필드 무손실/유손실 압축 시스템에 대하여 논의한다. 시스템의 임베디드 특성은 질이 디스크의 전송 비율에 의하여 결정되도록 한다. 쉽게 압축된 화상(예를들면, 텍스트 그리고/또는 선으로 된 대부분의 원고)에 대하여, 무손실 압축이 된다. 압축하기 힘든 화상(예를들면, 노이즈가 있는 자연화상 그리고/또는 하프톤을 갖는 원고)에 대하여 높은 질의 유손실 압축이 된다.
컬러 화상의 무손실 압축과 높은 질의 유손실 압축을 위한 시스템에 대한 설명은 1996년 5월 3일 출원된 미국특허 출원번호 08/642,518 "Compression and decompression with Wavelet Style and Binary Style Including Quantization by the Device-Dependent Parser"와 1995년 5월 8일 출원된 미국특허 출원번호 "Method and Apparatus for Reversible Color Conversion"에 있다.
가역 웨이블릿
본 발명은 가역 웨이블릿에 의한 압축을 채용한다.
웨이블릿 분해
본 발명은 초기에 가역 웨이블릿을 사용하여 화상(화상 데이터의 형태) 또는 다른 데이터 신호를 분해한다. 본 발명에서, 가역 웨이블릿 변환은 정수 계수의 신호가 무손실로 재생되는 정수 산술의 정확한 재구성 시스템을 구현하는 것을 포함한다. 계수 가역 변환은 변환 행렬의 행렬식이 1(또는 거의 1)인 것이다.
가역 웨이블릿을 사용하여, 본 발명은 무손실 압축에 유한 정도(precision)의 산술을 제공할 수 있다. 가역 웨이블릿 변환을 화상 데이터에 적용하여 발생되는 결과는 계수의 열이다.
본 발명의 가역 웨이블릿 변환은 필터 세트를 사용하여 구현할 수 있다. 한 실시예에서, 필터는 2-탭 저역-통과 필터와 6-탭 고역-통과 필터로서 여기에서 TS변환 또는 2,6변환이라고 하는 변환을 구현한다. 다른 실시예에서, 필터는 2-탭 저역-통과 필터와 10-탭 고역-통과 필터로서 여기에서 TT변환 또는 2,10변환이라고 하는 변환을 구현한다. 이들 필터는 가산 그리고 감산 동작(플러스 하드와이어 비트 쉬프트)만을 사용하여 구현할 수 있다.
TT-변환은 TS변환에 대하여 적어도 하나의 잇점과 적어도 하나의 결점을 갖는다. 하나의 잇점은 TS변환보다 좋은 압축을 제공하는 것이다. TT변환의 결점은 더 긴 10-탭 필터는 더 높은 하드웨어 비용을 요구하는 것이다.
2차원 웨이블릿 분해
본 발명의 저역-통과 필터와 고역-통과 필터를 사용하여, 다중 해상도 분해가 수행된다. 구성 레벨의 수는 다양하며 어떤 수도 될 수 있다. 그러나 현재 분해 레벨의 수는 2에서 8레벨이다. 레벨의 최대수는 입력의 길이 또는 폭의 최대값의 log2이다.
화상과 같은 2차원 데이터에 변환을 수행하는 가장 일반적인 방법은 1차원 필터를 분리하여, 즉 행을 따라 적용 된 후 열을 따라 적용하는 것이다. 분해의 첫 번째 레벨은 여기에서 SS, DS, SD, DD라고 하는 4개의 다른 계수 대역이 된다. 문자는 위에서 정의된 smooth(S)와 detail(D) 필터를 가리키고, 이들은 각각은 low(L)와 high(H) 통과 필터에 해당한다. 따라서, SS 대역은 행과 열 방향의 S 필터의 계수로 구성된다.
웨이블릿 분해의 각 주파수 서브 대역은 더 분해될 수 있다. 가장 일반적인 것은 단지 SS 주파수 서브 대역을 더 분해하는 것이고 각각 발생되는 분해 레벨에서 SS 주파수 서브대역의 분해를 더 포함한다. 그러한 다중 분해는 피라미드식 분해라고 한다. SS, SD, DS, DD와 분해 레벨 수는 각 분해를 나타낸다.
본 발명의 TS 또는 TT 변환으로, 피라미드식 분해는 계수 크기를 증가시키지 않는다.
가역 웨이블릿 변환이 회귀적으로 화상에 적용되면, 분해의 첫 번째 레벨은 가장 미세한 정도 또는 해상도로 동작한다. 첫 번째 레벨에서, 화상은 4개의 서브-화상(예를들면, 서브대역)으로 분해된다. 각 서브대역은 공간 주파수 대역을 나타낸다. 첫 번째 레벨 서브대역은 1SS, 1SD, 1DS, 1DD로 표시한다. 원래 화상을 분해하는 과정은 수평과 수직 방향의 두 개에 의한 서브샘플링과 관련된다. 첫 번째 레벨 서브대역 1SS, 1SD, 1DS, 1DD 각각은 입력이 갖는 화상의 화소(또는 계수)의 1/4의 계수를 갖는다.
서브대역 1SS는 저 주파수 수평 정보와 저주파수 수직 정보를 동시에 포함한다. 전형적으로 화상 에너지의 많은 부분이 이 서브대역에 집중되어 있다. 서브대역 1SD는 저 주파수 수평 정보와 고 주파수 수직 정보(예를들면, 수평 가장자리 정보)를 포함한다. 서브대역 1DS는 고 주파수 수평 정보와 저 주파수 수직 정보(예를들면, 수직 가장자리 정보)를 포함한다. 서브대역 1DD는 고 주파수 수평 정보와 고 주파수 수직 정보(예를들면, 텍스처 또는 대각 가장자리 정보)를 포함한다.
계속되는 두 번째, 세 번째, 네 번째 하위 분해 레벨의 각각은 진행되는 레벨의 저 주파수 SS 서브대역을 분해하여 생성된다. 이 첫 번째 레벨의 서브대역 1SS는 적절한 상세 두 번째 레벨의 서브대역 2SS, 2SD, 2DS, 2DD를 생성하도록 분해된다. 유사하게, 서브대역 2SS는 세 번째 레벨의 개략적인 상세 레벨 3SS, 3SD, 3DS, 3DD를 생성하도록 분해된다. 또한 서브대역 SS2는 세 번째 레벨의 더 개략적인 상세 레벨 4SS, 4SD, 4DS, 4DD를 생성하도록 분해된다. 두 서브샘플링으로 인하여, 각 두 번째 레벨 서브대역은 원래의 화상의 1/16 크기가 된다. 이 레벨에서 각 샘플(예를들면, 화소)은 같은 장소의 원래의 화상에서 적절한 상세를 나타낸다. 유사하게, 각 세 번째 레벨 서브대역은 원래의 화상의 1/64 크기가 된다. 이 레벨에서 각 화소는 같은 장소의 원래의 화상에서 비교적 개략적인 상세에 해당한다. 또한 각 세 번째 레벨 서브대역은 원래의 화상의 1/256 크기가 된다.
분해된 화상은 샘플링으로 인하여 원래의 화상보다 물리적으로 작아지므로, 원래의 화상을 저장하기 위하여 사용되는 같은 메모리는 모든 분해된 서브대역을 저장하는데 사용될 수 있다. 달리 말하면, 원래의 화상과 분해된 서브대역 1SS와 2SS는 버려지고 3 레벨 분해에 저장되지 않는다.
단지 4 서브대역 분해 레벨을 설명하지만, 특정 시스템의 요구에 따라 추가적인 레벨을 개발할 수 있다. 또한, DCT 또는 선형적으로 배치된 서브대역과 같은 다른 변환으로 다른 부-자(parent-child) 관계를 정의할 수 있다.
피라미드식 분해는 본 발명의 웨이블릿 필터로 계수 크기를 증가시키지 않는다.
다른 실시예에서 SS 이외에 다른 서브대역이 또한 분해될 수 있다.
웨이블릿의 구조
피라미드 분해의 웨이블릿 계수에 자연스럽고 유용한 트리 구조가 있다. 서브대역의 분해 결과는 분해의 마지막 레벨에 해당하는 단일 SS 주파수 서브대역이다. 반면에 레벨의 수만큼 많은 SD, DS, DD 대역이 있다. 트리 구조는 주파수 대역의 계수의 부모(parent)를 낮은 해상도의 동일 주파수 대역에 있고 동일 공간 위치와 관계되는 계수로 정의한다.
본 발명에서, 각 트리는 SS 계수와 3개의 서브트리, 즉 DS, SD, DD 서브트리를 포함한다. 본 발명의 처리는 전형적으로 3개의 서브트리에 수행된다. 각 트리의 루트(root)는 매우 부드러운(smooth) 계수이다. 화상과 같은 2차원 신호에 대하여, 3개의 서브트리가 있고 각각은 4개의 자(children)를 갖는다. 트리는 계층적으로 2차원 신호에 제한되지 않는다. 예를들면, 1차원 신호에 대하여, 각 서브트리는 하나의 자(child)를 갖는다. 더 높은 차원은 1차원과 2차원으로부터 따라온다.
다중 해상도 분해의 처리는 필터링 시스템을 사용하여 수행된다. 1-차원의 전형적인 필터를 사용하여 구현된 2차원의 2-레벨 변환의 예는 1995. 6. 30에 출원된 "Method and Apparatus for Compression Using Reversible Wavelet Transform and an Embedded Codestream"인 제목의 미국특허 출원번호 08/498,695와 1995년 6월 30일 출원된 "Reversible Wavelet transform and an Embedded Codestream Manipulation"인 제목인 미국특허 출원번호 08/498,036에 있다.
정 웨이블릿 변환의 수행
본 발명에서, 웨이블릿 변환은 2개의 1-D 동작, 수평후 수직으로 수행된다. 한 실시예에서, 수평과 수직방향으로 TT 변환을 사용하여 4 레벨 분해가 수행된다. 다른 실시예에서, 대신에 TS 변환을 사용하여 4 레벨 분해가 수행된다.
본 발명의 변환은 계산상 매우 효율적이다. 한 실시예에서, 본 발명은 온-칩과 오프-칩 메모리와 요구되는 대역폭의 양을 줄이기 위하여 변환에 의하여 수행되는 계산을 지시한다.
계산 순서와 변환의 데이터 흐름
본 발명에서 위에 논의된 바와 같이, 변환을 계산하는 기본적인 유니트는 웨이블릿 트리이다. 4 레벨 변환을 가정하면, 각 웨이블릿 트리는 16*16 화소블록이다. 16*16 화소블록(모든 CMYK 화상의 4 성분)은 본 발명의 변환의 입력이고 계수를 발생하기 위한 모든 가능한 계산이 수행된다. (역도 유사하다. 각 성분에 대한 계수의 16*16 블록은 입력이고 모든 가능한 계산이 수행된다). 본 발명은 중첩된 변환을 채용하므로, 이웃하는 트리는 저장되고 계산에 사용된다. 현재의 웨이블릿 트리와 이전의 이웃하는 정보와의 경계는 여기에서 심(seam)이라고 한다. 본 발명의 변환을 수행하기 위하여 심을 가로질러 존재하는 정보는 이하에서 상세하게 설명한다.
웨이블릿 트리의 오더링
어떤 응용례(예를들면, 프린팅)에서, 본 발명의 코딩 유니트는 큰 폭과 작은 높이를 갖기 때문에 변환을 계산하기 위한 웨이블릿 트리의 오더링은 중요하다. 한 실시예에서, 각 코딩 유니트는 4096*256 화소를 포함한다.
다음의 논의에서 각 코딩 유니트는 4096*256 화소를 포함한다. 그러나, 이하에서설명되는 오더링은 다른 사이즈의 코딩에도 적용할 수 있다. 도 2A는 래스터 오더와 유사한 오더를 설명한다. 여기에서 이 오더는 롱 심 변환 오더(long seam transfer order)라고 한다. 도 2A에 의하면, 두꺼운 선은 심을 가로질러 존재하는 데이터의 양을 나타내고, 변환을 계산하는데 얼마나 많은 저장이 필요한지를 나타낸다. 이 데이터는 수평 변환을 위한 하나의 웨이블릿 트리에 비례하지만 수직 변환을 위한 화상의 폭(이 예에서 4096)에는 비례하지 않는다. 이 데이터를 저장하는데 요구 메모리의 사용이 필요하다. 그러나 래스터 오더에 가깝기 때문에, 역 변환 동안, 웨이블릿 트리의 수평 행이 화소로 변환되자마자 데이터는 변환으로부터 (예를들면, 프린터 응용례에서 프린터로) 출력될 수 있다.
도 2B는 여기에서 쇼트 심 오더(short seam order)라고 하는 오더의 다른 실시예를 설명한다. 심의 저장은 수평 변환을 위한 코딩 유니트의 높이(이 예에서 256)와 수직 변환을 위한 하나의 웨이블릿 트리에 비례한다. 이것은 필요 메모리의 양을 매우 감소시키고 온-칩 저장을 실현할 수 있도록 한다.
도 2C는 다른 쇼트 심 오더를 설명한다. 하나 이상의 웨이블릿 트리에 비례하는 저장 비용으로, 래스터 오더에서 처리되는 연속하는 화소의 수는 증가한다. 이 예 또는 유사한 예는 심 메모리에서 거의 여분의 비용없이 밴드 버퍼의 확장 데이터 출력(EDO) RAM과 빠른 페이지 모드(fast page mode)를 효율적으로 사용할 수 있도록 한다. 효율은 대부분의 메모리가 이웃하는 메모리 위치에 엑세스하도록 최적화되어 있다는 사실에 의하여 얻어진다. 그리하여 심 오더로 인하여 이웃하는 메모리 억세스의 사용에서 어떠한 증가는 더 효율적인 메모리 사용의 결과가 된다.
1 웨이블 트리의 계산
다음의 식은 TS-변환과 TT-변환을 정의한다. x(n) 입력에 대하여, 저역통과 필터의 출력, 부드러운 신호 s(n), 고역통과필터, 상세 신호 d(n)는 수학식 1에서 나타낸 바와 같이 계산된다.
역 변환은 아래의 수학식 2에 나타낸다.
여기서 p(n)는 p(n)=d(n)-t(n) 에 의하여 계산된다.
TS-변환과 TT-변환은 t(n)의 정의에 있어서 다르다.
TS-변환에 대하여
으로 정의되고,
TT-변환에 대하여
으로 정의된다.
다음의 논의에서 [.]의 표시는 끝수를 버리는 것을 의미하고 때때로 바닥 함수(floor function)라고 한다.
TS-변환
짝수(even) 위치에서 6탭 필터와 2탭 필터를 사용하는 효과는 3 조각(piece)의 정보가 저장되어야 한다는 것이다. 6탭 필터는 2 지연을 필요로 한다. 2탭 필터는 1 지연을 필요로 하므로 그 결과는 6탭 필터의 결과에 대하여 중심에 둘 수 있다. 구체적으로, 2 s(·) 값과 1 d(·) 값 또는 d(·) 계산의 부분적인 결과는 저장되어야 한다. 이들 값의 저장은 특정 필터링 동작이 심 또는 그 이외를 가로지르든지 아니든지 관계없이 동일하다.
도 3A 내지 3H는 본 발명의 웨이블릿 트리의 4 레벨 변환에 TS-변환을 각각 적용한 결과를 도시한 것이다. 이들 도면에서, 저역통과 필터의 출력은 "s"(smooth)로 표시한다. 고역통과 필터의 출력은 "d"(detail)로 나타낸다. "B"는 x(2n)-x(2n+1)의 값인 "d"를 계산하는데 사용되는 중간 값을 나타낸다. "B"값은 정 변환 동안 사용된다. 역 변환에 대하여, 어떤 계산에서도 사용되지 않는 "d"값은 그 장소에 저장된다. "sd"는 계수가 처음에 수평 저역통과필터 그 다음에 수직 고역통과필터의 결과임을 나타낸다. "ds", "dd", "ss", "dB", "sB"의 의미는 유사하다. 두꺼운 사각은 256 입력 화소에 해당한다. 빗금친 "s", "ds", "ss"값은 이전의 웨이블릿 트리로 계산되고 현재의 웨이블릿 트리에서 사용되도록 저장된다.
정 변환에 대하여, 변환의 레벨 2, 3, 4의 입력은 이전 레벨의 "ss" 계수이다. "sd", "ds", "dd" 계수는 끝나고, 따라서 그들은 계산되면 출력될 수 있다. 역변환은 레벨(먼저 네번째 레벨, 다음으로 3,2, 그리고 마지막으로 1), 그리고 수직(첫번째)과 수평(두번째)에 대하여 역순으로 모든 계산을 한다. 변환의 동안에는 정과 역의 데이터의 흐름은 동일하고 단지 계산이 다르다.
TS-변환 하드웨어
도 4A는 1차원 필터를 구현하는데 사용되는 정/역 필터 유니트의 일 실시예의 블록 다이어그램이다. 단지 메모리와 계산 유니트를 도시하고 하드와이어 쉬프트는 도시하지 않는다. 도 4A에 의하면, 필터 유니트 400은 정과 역 변환을 모두 처리한다. 다른 실시예는 정과 역 변환을 위하여 분리된 유니트를 사용할 수 있다. 정 변환에 대하여, 크기 "n" 입력이 사용되고, "s"와 "d" 출력이 발생된다. 역 변환에 대하여, "s"와 "d" 입력이 사용되고, 다른 출력이 발생된다.
가산기 4001은 n비트 입력을 수신하도록 연결되고 그것을 더하여 x(2n+2)+x(2n+3)의 출력을 생성한다. 가산기 4002는 다른 n비트 입력에서 하나의 n비트 입력을 감산하여 x(2n+2)-x(2n+3)의 양을 출력한다. 가산기 4001과 4002의 출력은 먹스 4003과 4004의 한 입력에 각각 연결된다. 먹스 4003과 4004의 다른 입력은 각각 s와 d입력을 수신하도록 연결된다. 한 실시예에서, s입력은 n비트이고, 반면에 d입력은 n비트보다 크다.
먹스 4003과 4004의 출력은 필터가 정 또는 역 모드인지를 나타내는 정/역 제어신호에 의하여 제어된다. 정 또는 역 모드에서, 먹스 4003의 출력은 s(n+1)와 같다. 반면에, 먹스 4004의 출력은 정 모드에서 p(n+1)와 같고 역 모드에서 d(n+1)와 같다. 먹스 4003과 4004의 출력은 먹스 4006에서 출력되는 s(n)의 피이드백과 함께 레지스터 화일 4005의 입력에 연결된다. 레지스터 화일 4005는 1 웨이블릿 트리의 길이의 각 성분에 대한 엔트리를 포함한다. 데이터는 전형적으로 레지스터 화일 4005를 통과한다. 공간 위치에 기초하여, 레지스터 화일 4005의 입력은 출력까지지연된다. 어드레스 입력은 레지스터 화일 4005의 출력을 제어한다. 한 실시예에서, 레지스터 화일 4005는 2 메모리 뱅크를 포함하고 뱅크마다 1 포트를 가지며 2 메모리 뱅크사이의 핑-퐁(ping-pong) 형식의 전후 억세스에 사용된다.
먹스 4003의 출력은 또한 필터 유니트의 s 출력이다.
레지스터 화일 4005의 출력은 외부의 심 버퍼 인(seam buffer in) 4020의 데이터와 함께 먹스 4006의 입력에 연결된다. 출력 4006A는 먹스 4003의 출력이 두 번 지연된 s(n-1)를 포함한다. 출력 4006B는 s(n+1)가 지연된 s(n)를 포함한다. 출력 4006C는 정 모드를 위한 p(n)와 역 모드를 위한 d(n)를 포함한다. 먹스 4006은 또한 외부의 심 버퍼 아웃(seam buffer out) 4021에서 버퍼링되는 심 데이터를 제공하도록 제어된다.
출력 4006C는 가산기 4008과 4009의 한 입력에 연결된다. 가산기 4008과 4009의 다른 입력은 먹스 4015의 출력이다. 먹스 4015는 경계조건을 처리한다. 경계에서, 먹스 4015는 그것의 한 입력에 배선된 0으로 출력한다. 배선된 0은 다른 실시예에서 다른 값을 사용하도록 변환될 수 있다. 비경계조건에서, 먹스 4015는 가산기 4007의 출력인 t(n)를 출력하며 가산기 4007은 s(n+1)에서 s(n-1)를 감산하므로써 한 입력의 s(n+1)를 다른 입력의 s(n-1)에 가산하도록 연결된다.
가산기 4008은 먹스 4006의 출력 4006C를 먹스 4015의 출력에 가산하여 필터 유니트의 d출력을 발생한다.
가산기 4009는 먹스 4006의 출력 4006C를 먹스 4015의 출력에서 감산한다. 가산기 4009의 출력은 가산기 4010에 의하여 먹스 4006의 출력 4006B상의 s(n)에 가산되어필터 유니트의 n비트 출력을 생성한다. 가산기 4009의 출력은 또한 가산기 4011에 의하여 먹스 4006의 출력 4006B의 s(n)으로부터 감산되어, 역 방향으로 필터 유니트의 다른 n비트 출력을 출력한다.
1 웨이블릿 트리 보다 긴 심에 대하여, 심 데이터는 레지스터 화일 4005 대신에 온-칩 SRAM(static RAM) 또는 외부 메모리에 저장된다. 먹스 4006은 이 부가적인 메모리로 그리고 메모리로부터의 억세스를 제공한다.
필터 유니트 4000의 대부분의 하드웨어 비용은 레지스터 화일 4005에 기인한다. 필요로 하는 메모리의 전체 양은 필터링 유니트의 수에 의존한다. 한 실시예에서 세가지 값(s,s,d 또는 ss,ss,sd)을 저장하는 전체 60 위치가 요구된다. 더 많은 필터 유니트가 요구되면 각각에 필요한 메모리는 적어진다. 그리하여 다중 필터 유니트를 사용하는 하드웨어 비용은 낮다.
빠른 역변환은 디코딩의 끝과 프린팅과 같은 데이터 출력 동작의 시작사이의 잠재시간을 줄여준다. 이것은 복원에 필요한 동작공간 메모리를 줄여주고 큰 코딩 유니트를 가능하도록 한다. 빠른 정 변환은 더 큰 대역폭이 가능할 때 필터로 하여금 데이터의 버스트(burst)를 취급할 수 있도록 하고, 미리-보기(look-ahead)로 컨텍스트 모델이 데이터를 신속하게 처리할 때 변환 컨텍스트 모델에 더 많은 데이터를 제공할 수 있도록 한다. 정 변환이 부호화 중에 컨텍스트 모델과 보조를 맞출 수 없으면 부호화중의 디스크 대역폭은 낭비하게 되며, 프린팅을 시작하는 시간을 지연시키게 된다. 또한 제어와 데이터 흐름은 다중 필터를 가지므로써 간단하게 된다.
도 4B는 본 발명에 따른 첫 번째 레벨 정 변환의 한 실시예의 블록 다이어그램이다. 도 4B에 의하면, 도 4A에서 도시한 것과 같은 두 필터 유니트 401과 402는 변환의 첫 번째 레벨을 수행한다. 필터 유니트 401은 레벨 1 수평 변환을 수행하고, 반면에 필터 유니트 402는 레벨 1 수직 변환을 수행한다. 한 실시예에서, 변환의 첫 번째 레벨은 입력의 2*2블록에 대하여 동작한다. 4 레지스터 403-406은 필터 유니트 401의 출력을 지연시키는 지연 유니트로서 동작한다. 이것은 자(子)-기초 오더라고 한다. 레지스터 403은 필터 유니트 401의 S 출력을 수신하고, 반면에 레지스터 404와 405는 d 출력을 수신한다. 레지스터 404의 출력은 레지스터 406의 입력에 연결된다. 레지스터 403과 406의 출력은 먹스 407의 입력에 연결되고, 반면에 필터 유니트 401의 s출력과 레지스터 405의 출력은 먹스 408의 입력에 연결된다. 두 먹스 407과 408은 필터 유니트 401의 지연된 계수 출력들로부터 필터 유니트 402의 입력을 선택한다.
필터 유니트 401은 수직으로 인접하는 두 입력쌍에 대하여 연속적으로 동작한다. 이것은 각 성분에 대하여 레지스터 403-406에 의하여 제공되는 적절한 지연을 갖고 필터 유니트 402에 입력되는 계수를 생성한다. 4개의 결과중 3개는 바로 출력되고 "ss"출력은 더 처리된다.
첫 번째 레벨 정 전송은 2*2그룹화된 4개의 화소의 그룹에 대하여 동작한다. 논의를 위하여, 첫 번째 행은 화소 a와 b를 포함하고, 반면에 두 번째 행은 화소 c와 d를 포함한다. 도 4B의 첫번째 레벨 4 변환의 동작은 다음과 같다. 첫 번째 사이클 동안, 필터 유니트 401에 의하여 처리된 a와 b화소에 수평 변환이 적용된다. 필터유니트 401은 레지스터 403에 저장되는 Sab와 레지스터 404와 405에 저장되는 Dab를 생성한다. 다음 사이클에서, 화소 c와 d는 수평 변환을 수행하기 위하여 필터 유니트 401에 의하여 처리된다. 필터 유니트를 적용한 결과는 레지스터 403에 저장되는 Scd와 레지스터 404와 405에 저장되는 Dcd를 생성하는 것이다. 이 사이클에서, 레지스터 403의 Scd와 레지스터 405의 Dcd는 변환의 수직 패스를 수행하고 SS와 SD를 발생하는 필터 유니트 402에 의하여 처리된다. 또한, 두 번째 사이클 동안, Dab의 값은 레지스터 404에서 레지스터 406으로 이동한다. 다음 사이클에서 레지스터 406의 Dab값과 레지스터 405의 Dcd값은 필터 유니트 402에 의하여 처리되고 DS와 DD출력을 발생한다. 같은 사이클에서, 필터 유니트 401은 다음 2*2블록의 a와 b 화소를 처리한다.
도 5는 본 발명에 따른 정 변환의 한 실시예의 블록 다이어그램이다. 도 5에 의하면, 레벨 1 변환 502는 레벨 1 변환을 수행한다. 한 실시예에서, 레벨 1 변환은 도 4B의 레벨 1 변환을 수행한다. 필터 유니트 505는 변환의 2, 3, 4 레벨을 처리한다. 메모리 503은 변환을 수행하기 위한 충분한 계수가 얻어질 때까지 "ss" 계수를 저장한다. 저장될 필요가 있는 계수의 수는 아래의 표 2에 도시한다.(각 위치는 각 성부의 계수를 저장한다).
"ss" 지연 메모리
레벨간 필요 메모리
1과 22와 33과 4 9 위치8 위치4 위치
오더 유니트 504는 적절한 입력을 필터 유니트 505에 다중화(multiplexing)한다. 입력 버퍼 501과 출력 버퍼 506은 변환에 의하여 요구되는 전송 오더와 대역 버퍼 또는 컨텍스트 모델에 의하여 요구되는 오더사이를 매칭하는 것이 요구된다.
역 변환에 대하여, 데이터의 흐름은 역전되어 레벨 4 역 변환이 수행되고 레벨 3, 레벨 2, 레벨 1 변환의 순서로 수행된다. 레벨 2 변환의 출력은 레벨 1 변환 502의 첫번째 레벨 변환 하드웨어로 인가된다. 또한 수직 필터링이 수평 필터링 전에 수행된다. 수평과 수직 필터링은 한 방향이 심의 부가 메모리에 엑세스하는 것을 요구하는 것을 제외하고는 동일하므로, 데이터 흐름을 역전시키는 것은 적은 양의 다중화(multiplexing)로 수행될 수 있다. 역변환 전에, 2 바이트 계수는 두 신호 비트를 갖는 임베디드 형태에서 일반적인 2의 보수(complement numbers)로 변환될 필요가 있다.
도 4B와 5에 도시한 요소는 TT-변환에 또한 사용될 수 있다.
변환 타이밍
도 5의 정 변환의 변환 타이밍은 개개의 필터 유니트의 타이밍에 기초한다. 첫 번째 필터 유니트, 필터 유니트 401은 수평 레벨 1 변환을 계산하고, 반면에 두 번째 필터 유니트, 필터 유니트 402는 수직 레벨 1 변환을 계산한다. 세 번째 필터 유니트, 필터 유니트 505는 레벨 2 내지 4의 변환을 계산하거나 아이들(idle)이다.
한 실시예에서, 세 번째 필터 유니트(505)는 아이들이지 않을 때 짝수 클럭 사이클동안 수평 변환을 계산하고 홀수 클럭 사이클동안 수직 변환을 계산한다. 역 변환의 타이밍도 유사하다(그러나 역전된다).
다음의 예에서, 웨이블릿 트리내의 2*2블록은 래스터 오더의 전치(transpose)에서 처리된다. 웨이블릿 트리내의 2*2블록이 래스터 오더로 대신 처리되면 빠른 페이지 모드/확장 데이터 출력(EDO) DRAM을 지원하기 위하여 적은 입력/출력(I/O) 버퍼링이 요구될 수 있다.
도 6은 계수가 출력될 때의 타이밍 다이어그램이다. 다음의 타이밍은 각 화소에 대한 것이다. 화소마다 4개의 성분이 있다.
TT-변환
도 7A-7H는 TT-변환의 각 1차원 필터링 동작의 결과를 나타낸다. 사각은 현재 처리되는 입력 화소에 해당하는 싱글 웨이블릿 트리의 계수를 나타내고 빗금친 부분은 이전 트리로부터 저장된 계수를 나타낸다. "B"로 표기된 값은 저장된 중간값이다(그리고 인접하는 샘플사이는 다르다). TT-변환은 TS-변환과 유사하지만 더 많은 저장을 요구한다.
도 8은 10 탭 정/역 필터 유니트의 블록 다이어그램이다. 배선된 쉬프트와 라운딩 오프셋은 본 발명을 불명료하게 하는 것을 피하기 위하여 도시하지 않는다. 도 8의 먹스 806은 또한 변환 경계에서 미러링(mirroring)을 위하여 사용될 수 있다. 미러링을 구현하기 위하여, "d"입력을 제로화하고 중첩 유니트의 s(n+2) 입력을 다중화하는 것이 또한 필요하다.
도 8에 의하면, 가산기 801과 802는 필터 유니트의 정 패스동안 2 n 비트 입력을수신하도록 연결된다. 가산기 801은 2 n비트 입력을 가산하고 먹스 803의 입력에 연결된 값을 출력한다. 가산기 802는 한 입력을 다른 입력에서 감산하여 출력을 먹스 804의 한 입력에 발생시킨다. 먹스 803과 804는 또한 필터 유니트의 역 모드 동작을 위하여 각각 s와 d입력을 수신하도록 연결된다. 먹스 803의 출력은 s(n+2)와 같은 n비트 입력이고 반면에 먹스 804의 출력은 정방 패스에 대하여 p(n+2)이고 역 패스에 대하여 d(n+2)인 n+l비트 입력이다.
먹스 803과 804의 두 출력은 메모리 805의 입력에 연결된다. 또한, 먹스 806의 출력 806A와 806D-F도 메모리 805의 입력에 연결된다. 한 실시예에서, 메모리 805는 2 뱅크와 각 뱅크마다 1 포트를 갖고 핑퐁 패션으로 동작되는 레지스터 화일 또는 SRAM을 포함한다. 메모리의 입력에 어드레스가 연결되어 먹스 806으로 발생되는 출력을 제어한다. 한 실시예에서, 어드레스는 성분마다 16 또는 28위치를 저장한다.
메모리 805의 출력은 심 버퍼 인 820으로부터 수신된 외부 버퍼 데이터와 함께 먹스 806의 입력에 연결된다. 먹스 806의 출력 806A는 먹스 803에서 출력되는 s(n+2)가 한번 지연된 버전인 s(n+1)를 포함한다. 먹스 806의 출력 806B는 정 패스에 대하여 먹스 803의 출력이 두번 지연된 버전인 s(n)를 포함한다. 먹스 806의 출력 806C는 정 패스에 대하여 먹스 806의 출력이 두번 지연된 버전인 p(n)를 포함하고 역 패스에 대하여 먹스 804의 출력이 두번 지연된 버전인 d(n)를 포함한다. 출력 806D는 먹스 803의 출력이 네번 지연된 버전인 s(n-2)를 포함한다. 먹스 806의 출력 806E는 먹스 803의 출력이 세번 지연된 버전인 s(n-1)를 포함한다. 마지막으로 출력 806F는 정 패스에 대하여 먹스 804의 출력이 한번 지연된 버전인 p(n+1)를 포함하고, 역 패스에 대하여 먹스 804의 출력이 한번 지연된 버전인 d(n+1)를 포함한다.
중첩 유니트 807은 먹스 806의 출력 806A, D, E와 함께 먹스 803의 출력을 수신하도록 연결된다. 이러한 입력에 응답하여, 중첩 유니트 807은 t(n)를 생성한다. 중첩 유니트의 한 실시예는 도 9에 나타낸다.
중첩 유니트 807의 출력 t(n)는 가산기 808과 809의 입력에 연결된다. 가산기 808은 t(n)를 먹스 806의 출력 806C에 가산하여 필터 유니트의 D출력을 생성한다. 가산기 809는 먹스 806의 출력 806C를 t(n)에서 감산한다. 가산기 809의 출력은 가산기 810과 811의 각 입력에 연결된다. 가산기 810은 가산기 809의 출력을 먹스 806의 출력 806B에 가산하여 역 필터 유니트로 동작할 때 필터의 n비트 출력의 하나를 생성한다. 가산기 811은 가산기 809의 출력을 먹스 806의 출력 806B에서 감산하여 역 필터 유니트로 동작할 때 필터 유니트의 다른 출력을 생성한다.
도 9는 도 8의 정/역 필터에 대한 중첩 유니트의 한 실시예의 블록 다이어그램이다. 도 9에 의하면, 중첩 유니트는 가산기 901-906, 멀티플렉서 907-909, 분할기 910을 포함한다. 멀티플렉서와 분할은 하드와이어 쉬프트(hardwire shift)될 수 있다.
도 9의 중첩 유니트는 위에서 설명한 TT 변환을 위한 t(n)를 계산한다. 도 9에 의하면, 가산기 901은 s(n+2) 입력을 수신하도록 연결되어 그것을 s(n-2) 입력에서 감산하여 가산기 903의 한 입력에 연결되는 출력을 발생한다. 가산기 902는 s(n-1) 입력을 수신하도록 연결되어 그것에서 s(n+1) 입력을 감산한다. 가산기 902의 출력은 곱셈기 907과 곱셈기 908의 입력에 연결된다. 곱셈기 907은 그것의 입력을 2를 곱한다. 한 실시예에서, 곱셈은 입력 비트를 왼쪽으로 1 위치 쉬프트하므로써 수행된다. 곱셈기 907의 출력은 가산기 903의 다른 입력에 연결된다.
곱셈기 908은 가산기 902의 출력에 16을 곱한다. 한 실시예에서, 곱셈은 가산기 902에서 출력되는 비트를 왼쪽으로 4비트 위치 쉬프트하므로써 수행된다. 곱셈기 908의 출력은 가산기 905의 한 입력에 연결된다. 가산기 903의 출력은 가산기 904의 한 입력에 연결되고 또한 곱셈기 909의 입력에 연결된다.
곱셈기 909는 가산기 903의 출력에 2를 곱한다. 한 실시예에서, 이 곱셈은 가산기 903에서 출력되는 비트를 왼쪽으로 1비트 위치 쉬프트하므로써 수행된다. 곱셈기 909의 출력은 가산기 904의 다른 입력에 연결된다. 가산기 904의 출력은 가산기 905의 다른 입력에 연결된다. 가산기 905의 출력은 가산기 906의 입력에 연결되고 가산기 906은 배선된 입력 32를 그것에 가산한다. 가산기 906의 출력은 분할 기 910의 입력에 연결된다. 분할기 910은 입력을 64로 나눈다. 한 실시예에서, 이 분할은 입력 비트를 오른쪽으로 6비트 위치 쉬프트하므로써 수행된다. 분할기 910의 출력은 t(n) 출력을 포함한다. 도 9는 또한 각 출력의 현재의 값을 라인에 나타낸다.
S-변환과 같이 가역 TS-변환과 TT-변환 모두에서 저역통과 필터는 입력신호 x(n)의 범위가 출력신호 s(n)와 같도록 구현된다. 즉, 부드러운 출력에서 성장은 없다. 입력신호가 b비트의 깊이이면 부드러운 출력 또한 b비트이다. 예를들면, 신호가 8비트 화상이면, 저역통과 필터의 출력 또한 8비트이다. 이것은 피라미드식 시스템의중요한 성질로서 여기서 부드러운 출력은 예를들면, 저역통과 필터를 연속적으로 적용하므로써 또한 복원된다. 종래기술의 시스템에서, 출력 신호의 범위는 입력신호의 범위보다 커서 필터를 연속적으로 적용하는 것이 어렵다. 또한, 변환의 정수 구현에서 라운딩으로 인한 시스템 에러가 없으므로, 유손실 시스템의 모든 에러는 양자화에 의하여 제어될 수 있다. 또한, 저역-통과 필터는 단지 2탭만을 가지므로 비중첩 필터가 된다. 이 성질은 하드웨어 구현에 중요하다.
임베디드 오더링
본 발명에서, 웨이블릿 분해의 결과로서 생성된 계수는 엔트로피 코딩된다. 본 발명에서, 계수는 초기에 임베디드 오더링을 거치고 여기서 계수는 가시적으로 중요한 순서로 배열되거나 또는 더 일반적으로, 어떤 에러 매트릭스(예를들면, 왜곡 매트릭스)에 대하여 배열된다. 에러 또는 왜곡 매트릭스는 예를들면, 피크 에러와 MSE(mean square error)를 포함한다. 또한, 오더링은 비트-중요도 공간 위치의 선택, 데이터베이스 조회에 대한 관계, 방향성(수직, 수평, 대각, 등)을 주도록 수행될 수 있다.
데이터의 오더링은 코드스트림의 임베디드 양자화를 생성하기 위하여 수행된다. 본 발명에서, 2 오더링 시스템이 사용된다. 첫째는 계수를 오더링하기 위한 것이고, 두 번째는 계수내에서 2진 값을 오더링하기 위한 것이다. 본 발명의 오더링은 이후에 2진 엔트로피 코더와 부호화되는 비트스트림을 생성한다.
비트-중요도 표현
원래의 성분이 부호가 붙지 않은 경우(적어도 하나의 상세 필터에서 출력되는 계수는 부호가 붙는다)에도 대부분의 변환 계수는 부호가 붙은 수이다. 한 실시예에서, 계수내의 2진값에 사용되는 임베디드 오더는 비트평면에 의한다. 계수는 코딩전에 비트-중요도 표현으로 나타낸다. 비트-중요도는 부호-크기 표현으로 여기서 부호 비트(sign bit)는 최고 중요 비트(MSB)이기보다는 첫 번째 0이 아닌 크기 비트와 부호화된다. 즉, 부호 비트는 모든 크기 비트를 진행하기보다는 첫 번째 0이 아닌 크기 비트를 따른다. 또한 부호 비트는 가장 중요한 0이 아닌 크기 비트와 같은 비트평면에 있는 것으로 간주된다.
비트-중요도 포맷은 헤드, 테일(tail), 부호의 3개의 비트 세트를 사용하여 숫자를 나타낸다. 헤드 비트는 첫 번째 0이 아닌 크기 비트를 포함하여 MSB에서 첫 번째 0이 아닌 크기 비트까지의 모든 제로 비트이다. 첫 번째 0이 아닌 크기 비트가 발생하는 비트-평면은 계수의 중요도를 정의한다. 테일 비트 세트는 첫 번째 0이 아닌 크기 비트이후로부터 LSB까지 크기 비트를 포함한다. 부호 비트는 단지 부호를 나타내는데, 여기서 0은 양의 부호를 나타내고 1은 음의 부호를 나타낸다. ±2n과 같이 MSB로서 0이 아닌 비트를 갖는 수는 단지 1개의 헤드 비트를 가진다. 0 계수는 테일과 부호 비트를 갖지 않는다. 표 3은 -7에서 8까지 범위의 비트 계수의 모든 가능한 값을 나타낸다.
4 비트 값의 비트 중요도 표현
십진 2의 보수 부호 크기 비트-중요도
-8-7-6-5-4-3-2-101234567 10001001 1111 11 1 11010 1110 11 1 01011 1101 11 0 11100 1100 11 0 01101 1011 0 11 11110 1010 0 11 01111 1001 0 0 110000 0000 0 0 00001 0001 0 0 100010 0010 0 10 00011 0011 0 10 10100 0100 10 0 00101 0101 10 0 10110 0110 10 1 00111 0111 10 1 1
표 3에서, 각 열에 도시한 비트 중요도 표현은 1 또는 2 비트를 포함한다. 2 비트인 경우, 첫 번째 비트는 첫 번째 1 비트이고 부호 비트가 따라 온다.
화소의 농도에 대하여 발생하는 것과 같이 값이 음이 아닌 정수인 경우 사용되는 오더는 비트평면 오더(예를들면, 가장 중요한 비트평면에서 가장 중요하지 않는 비트평면으로)이다. 2의 보수의 음의 정수가 또한 허용되는 실시예에서, 부호 비트의 임베디드 오더는 정수의 절대값의 첫 번째 0이 아닌 비트와 같다. 그리하여 부호 비트는 0이 아닌 비트가 부호화될 때까지 고려되지 않는다. 예를들면, 부호 크기 표현을 사용하여 16 비트 수 -7은
1000000000000111
이다. 비트-평면에 기초하여, 첫 번째 12 디시전(decision)은 "중요하지 안거나" 또는 제로이다. 첫 번째 1-비트는 13번째 디시전에서 발생한다. 다음, 부호 비트("음")가 부호화된다. 부호 비트가 부호화된 후, 테일 비트가 처리된다. 15번째와 16번째 디시전은 모두 "1"이다.
계수는 최상위 비트평면에서 최하위 비트평면으로 부호화되므로, 데이터에서 비트평면의 수는 결정되어져야 한다. 본 발명에서 이것은 데이터로부터 계산되거나 또는 화상의 깊이와 필터의 계수에서 도출되는 계수값의 크기의 상위 경계(upper bound)를 찾음으로서 성취된다. 예를들면, 상위 경계가 149이면, 8비트의 중요도 또는 8비트평면이 있다. 소프트웨어의 속도를 위하여, 비트평면 코딩은 사용하지 않는다. 다른 실시예에서, 비트평면은 계수가 2진수로서 중요하게 될 때에만 부호화된다.
계수 정렬
본 발명은 비트-평면 코딩전에 서로에 대하여 계수를 정렬한다. 이것은 다른 주파수 서브대역의 계수가 FFT 또는 DCT와 유사한 다른 주파수를 나타내기 때문이다. 계수를 정렬하므로써, 본 발명은 양자화를 제어한다. 덜 무겁게 양자화된 계수는 더 이른 비트-평면(예를들면, 왼쪽으로 쉬프트)으로 정렬된다. 그리하여, 스트림이 잘려지면(truncated), 이들 계수는 더 무겁게 양자화된 계수보다 그들을 정의하는 더 많은 비트를 갖게 된다.
한 실시예에서, 계수는 SNR 또는 MSE의 관점에서 가장 좋은 속도-왜곡(rate-distortion) 수행을 위하여 정렬된다. MSE와 같은 통계 에러 매트릭스의 관점에서 최적에 가까운 것을 포함하여 많은 가능한 정렬이 있다. 대신에, 정렬은 계수 데이터의 피스코비쥬얼(physchovisyal) 양자화를 허용한다. 정렬은 화상 질의 발전에(또는 다르게 표현하면 속도-왜곡 곡선에) 중요한 영향을 주지만, 무손실 시스템의 최종 압축 비율에는 무시할 만한 영향을 준다. 다른 정렬들은 구체적 계수 양자화,관심 영역(Region of Interest) 충실도 코딩, 또는 해상도 진행 정렬에 해당할 수 있다.
정렬은 압축된 데이터의 헤더에서 신호를 받거나 또는 특정 응용을 위하여 고정될 수 있다(즉, 시스템은 단지 한 정렬을 갖는다). 다른 크기의 계수의 정렬은 코더 또는 디코더에게 모두 알려져 있고 엔트로피 코더 효율에는 영향을 주지 않는다.
화소마다 b비트를 갖는 입력 화상의 2-레벨 TT-변환과 TS-변환 분해에서 다양한 계수의 비트 깊이는 도 11에 도시되어 있다. 도 12는 본 발명에서 계수 정렬에 사용되는 주파수 대역의 곱셈기의 한 실시예이다. 계수를 정렬하기 위하여, 1-DD 계수 크기는 기준으로 사용되고, 이 크기에 대하여 쉬프트된다. n 쉬프트는 2n을 곱하는 것이다.
한 실시예에서, 화상의 모든 계수의 정렬을 발생하기 위하여 가장 큰 계수의 크기에 대하여 계수를 쉬프트한다. 정렬된 계수는 중요도 레벨이라고 하는 비트-평면에서 최상위 중요도 레벨로부터 최하위 중요도 레벨로 처리된다. 부호는 각 계수의 마지막 헤드 비트와 함께 부호화된다. 부호 비트는 마지막 헤드 비트가 있는 어떠한 중요도 레벨에도 있다. 정렬은 단지 비트가 엔트로피 코더로 보내지는 오더를 제어한다는 것에 주의하는 것은 중요하다. 여분의 제로 비트의 실제적인 패딩(padding), 쉬프트, 저장, 또는 코딩은 수행되지 않는다.
표 4는 계수를 정렬하기 위한 정렬 수의 한 실시예를 설명한다.
계수 정렬
1-DD기준 1-DS,1-SD 2-DD 2-DS,2-SD 3-DD 3-DS,3-SD 4-DD 4-DS,4-SD왼쪽1 왼쪽1 왼쪽2 왼쪽2 왼쪽3 왼쪽3 왼쪽4
다른 크기의 계수의 정렬은 코더와 디코더에 알려져 있고 엔트로피 코더 효율에 영향을 주지 않는다.
같은 데이터 세트의 코딩 유니트는 다른 정렬을 가질 수 있다.
코드스트림과 컨텍스트 모델의 오더링(ordering)
도 10은 코드스트림의 오더링과 코딩유니트내의 오더링을 설명한다. 도 10에 의하면, 헤더 1001다음으로 코딩 유니트 1002가 톱 대역으로부터 바닥으로의 순서로 따라온다. (헤더 1001은 단일 화상 형태를 위하여 성게된 응용례에서 옵션이다.) 각 코딩 유니트는 최상 중요 데이터 1003, 중요 데이터 1004, 최하 중요 데이터 1005를 포함한다.
컨텍스트 모델은 데이터가 부호화되는 순서와 데이터의 특정 비트에 사용되는 조건을 모두 결정한다. 오더링이 먼저 고려된다. 데이터의 최고 레벨 오더링은 이미 앞에서 설명하였다. 데이터는 "최상 중요 데이터"와 "중요 데이터"로 나누어지고 전자는 여기서 MIC(most important chunk)라고 하며 변환 오더에서 손실없이 부호화되고, 후자는 여기서 LIC(least important chunk)라고 하며 임베디드되고 일체화된 무손실/유손실 방식으로 부호화된다.
각 비트-평면 동안에 계수가 처리되는 순서는 저 해상도로부터 고 해상도이다(저 주파수로부터 고 주파수로). 각 비트-평면내 계수 서브대역 코더는 하이 레벨(저 해상도, 저 주파수)로부터 로레벨(고 해상도, 고 주파수)로이다. 각 주파수 서브대역내에서, 코딩은 정의된 순서로 된다. 한 실시예에서, 오더는 래스터 오더, 2*2블록 오더, S자 오더, 피노(Peano) 스캔 오더등이 될 수 있다.
도 3의 코드스트림을 사용하는 4 레벨 분해의 경우, 오더는 다음과 같다.
4-SS,4-DS,4-SD,4-DD,3-DS,3-SD,3-DD,2-DS,2-SD,2-DD,1-DS,1-SD,1-DD
본 발명에서 사용되는 컨텍스트 모델의 일 실시예를 다음에 설명한다. 이 모델은 계수의 공간적 스펙트럼의 의존도에 기초하여 코딩유니트내의 비트를 사용한다. 이웃하는 계수와 부모(parent) 계수의 입수 가능한 2진값이 컨텍스트를 생성하기 위하여 사용된다. 그러나 컨텍스트는 디코딩 능력의 원인이 되고 효율적인 적용을 위하여 적은 수이다.
본 발명은 2진 엔트로피 코더의 임베디드 비트-중요도 오더의 계수에 의하여 생성되는 비트스트림을 모델링하기 위하여 컨텍스트 모델을 제공한다.
도 37은 코딩 유니트의 모든 계수의 이웃하는 계수를 도시한 것이다. 도 37에 의하면, 이웃하는 계수는 명확한 위치 표시로 명기된다.(예를들면, N=north, NE=northeast, 등) 도 37에서 P와 같은 계수와 현재의 비트-평면이 주어지면, 컨텍스트 모델은 주어진 비트-평면 이전의 모든 코딩 유니트로부터 어떠한 정보도 사용할 수 있다. 현재의 계수의 부모(parent) 계수도 또한 이 컨텍스트 모델에 사용된다.
헤드 비트는 가장 압축할 수 있는 데이터이다. 따라서, 많은 양의 컨텍스트 또는 조건이 압축을 증진시키도록 사용된다. 현재 계수의 현재 비트에 대한 컨텍스트를 결정하기 위하여 이웃하는 또는 부 계수를 사용하기 보다, 정보는 도 13A와 관련하여 설명되는 2 신호 비트로 감소된다. 이 정보는 메모리에 저장될 수 있고 또는 이웃하는 계수 또는 부모(parent) 계수로부터 계산될 수 있다.
디스크에 저장하는 임베딩 구현
본 발명의 임베디드 구조의 일 실시예는 데이터 부호화를 시작할 때 모든 대역 버퍼 메모리가 데이터로 가득 차서 동작공간 메모리로서 사용할 여분의 공간을 대역에서 얻을 수 없다는 사실에 기초한다. 본 발명은 덜 중요한 데이터의 일부를 나중에 임베디드되도록 메모리에 기록한다. 본 발명에서, 임베디드되는 데이터는 메모리에 저장되고 이것은 덜 중요한 데이터이다. 더 중요한 데이터는 직접 부호화된다. 가장 중요하지 않는 데이터는 최하위 비트의 수를 포함한다.
한 실시예에서, 각 계수의 일부분이 나중에 부호화하기 위하여 메모리에 다시 기록되면, 적절한 부호화를 위하여 부호 비트가 알려진 것만큼 헤드와 테일 비트도 잘 알려져야 한다. 한 실시예에서, 둘 또는 그 이상의 신호 비트(예를들면, 3,4,5, 등)가 헤드, 테일, 부호 비트 정보를 나타내기 위하여 사용된다.
8-비트 메모리 위치가 사용되는 한 실시예에서, 2 신호 비트는 헤드, 테일, 부호 비트 정보를 나타낸다. 2 신호 비트의 사용으로 가장 중요하지 않는 6 중요도 레벨이 2 신호 비트와 함께 메모리에 다시 기록될 수 있다. 1 신호 비트는 6 중요도 레벨의 최상위 비트가 헤드 또는 테일 비트인지를 나타낸다. 첫 번째 신호 비트가 헤드 비트를 헤드 비트임을 나타내면, 두 번째 신호 비트는 계수의 부호이다. 반면에 첫 번째 신호 비트가 메모리에 다시 기록된 데이터의 최상위 비트가 테일 비트임을 나타내면, 두 번째 신호 비트는 프리 신호 비트이며 이것은 예를들면, 최상위 테일 비트가 첫 번째 테일 비트인지 또는 나중의 테일 비트인지와 같은 부가적인 테일정보를 나타낼 수 있다.
도 13A는 MIC라고 하는 가장 중요한 데이터 1301과 LIC라고 하는 덜 중요한 데이터 1302로 나누어진 계수를 도시한 것이다. 한 실시예에서, MIC는 각 계수의 6 상위 오더 비트를 포함하고, 반면에 LIC는 6 하위 오더 비트를 포함한다. 가장 중요한 데이터 1301은 컨텍스트 모델로 보내어져 계수 오더에서 즉각 부호화된다. 이 데이터를 위하여 외부 메모리에서 버퍼링할 필요는 없다. 덜 중요한 데이터 1302는 메모리(예를들면, RAM)에 기록되고 나중에 부호화되며 오더에 의하여 임베디드된다. 또한, 데이터의 2 신호 비트도 메모리에 기록된다. 신호 비트 1303은 메모리에 기록된 최상위 비트가 헤드 비트인지를 나타낸다. 신호 비트 1304는 계수의 부호를 나타내고 또는 첫 번째 테일 비트가 데이터에 포함되어 있는지 아닌지를 나타낸다. 신호 비트는 덜 중요한 데이터 1302와 연결되는 식으로 저장될 수 있고 또는 덜 중요한 데이터 1302를 저장하는 메모리와 결합되는 다른 메모리 또는 메모리 위치에 저장될 수 있으므로 계수의 각 부분과 결합된 신호 비트는 식별될 수 있다.
표 5의 예는 2 신호 비트의 사용을 나타낸 것이다. 표 5의 열은 도 13A의 데이터 형태로 라인업(line up)된다. 부호 비트는 "S"로 표기되고 테일 비트는 "T"로 표기되며 관계없는 비트는 "x"로 표기하고 테일-온 비트의 값은 "h" 또는 "t"로 표기한다. 표 5에서, 신호 비트에 대하여 h=0이고 t=1이다. 다른 실시예에서, 규칙은 반대로 될 수 있다. 한 실시예에서, 표 5에서 0의 부호 비트는 양의 부호를 나타내고 반면에 표 5에서 1의 부호 비트는 음의 부호를 나타낸다. 반대의 할당도 사용될 수 있다. 부호 비트는 항상 첫 번째 "온"비트로 유지되므로 그것은 임베딩과 같은 때부호화될 수 있다.
크기 가장 중요 덜 중요 신호 비트(무손실) (비트 평면 내장)
1xxxx1xxxxx1xxxxxx1xxxxxxx1xxxxxxxx1xxxxxxxxx x 0000000 01TTTT h sx 0000000 1TTTTT h sS 0000001 TTTTTT t 0S 000001T TTTTTT t 1S 00001TT TTTTTT t 1S 0001TTT TTTTTT t 1
위의 표 5에서, "T"는 계수의 해당 비트를 나타내며 0 또는 1이 될 수 있다.
한 실시예에서, 디코딩중, 가장 중요한 데이터가 복호화될 때, 그것은 메모리에 기록되고, 그리고 동시에, 적절한 2 신호 비트가 메모리에 기록되어 덜 중요한 데이터를 저장하도록 메모리를 초기화한다. (계수의 정렬에 따라, 가장 중요한 데이터의 일부는 두 번째 바이트에 또한 저장될 수 있다.) 이러한 초기화로, 1 비트평면의 덜 중요한 데이터를 디코딩하는 것은 계수당 1 바이트(또는 어떤 실시예에서 더 적은)를 읽고 기록하는 것을 필요로 한다. 계수를 읽고 역변환에 입력하면 그들은 정상적인 숫자 형태(예를들면, 2의 보수 형태)로 변환된다.
"가장 중요한 데이터"와 "덜 중요한 데이터"를 갖는 것 외에 엔코딩 중에 버려지거나 또는 양자화되는 데이터가 또한 있다. 계수는 양자화 배율인자(scale factor) 2Q-1에 의하여 분할된다. (계수의 양자화는 JPEG 표준에 설명되어 있다.) 본 발명에서, 비트평면을 버림으로써 분할이 이루어지므로 양자화는 2의 거듭제곱이다. 예를들면, Q=1은 1에 의한 분할을 나타내고 따라서 계수는 변하지 않는다. 반면에 Q=2는 2에 의한 분할을 나타내고 이것은 1 비트평면이 버려지는 것을 의미한다. 이러한 분할은 쉬프트를 사용하여 이루어질 수 있다. (예를들면, Q=2에 대하여 1 비트 위치만큼 쉬프트). 도 13B와 도 13C는 다른 서브대역의 양자화와 계수 정렬을 고려할 때 가장 중요한 그리고 덜 중요한 데이터의 포맷을 설명한 것이다.
도 13B는 무손실의 경우를 도시한 것으로 여기서 데이터는 버려지지 않는다. JPEG의 규약에 따르면, 실제 계수가 1에 의하여 분할되므로(무손실) 이것은 양자화 Q=1이라고 한다. 가장 중요한 데이터는 빗금치지 않고 나타내고 반면에 가장 중요하지 않는 데이터는 빗금친 것이다.
도 13C는 데이터의 1 비트평면이 버려진 경우(즉, Q=2)로 비트평면을 버리는 것이 2에 의하여 분할되는 것과 같기 때문이다. 이 버려진 비트평면은 까맣게 나타낸다.
도 13B와 13C에 도시한 것 외에, 가장 중요한 데이터는 또한 SS 계수를 포함한다. 계수는 비록 8-비트 데이터로 나타나지만 가역 색공간(color space)의 사용은 9-비트 데이터를 필요로 하여 색 계수의 크기를 1 비트만큼 증가시킨다.
본 발명에서, 부호 비트 컨텍스트 모델은 마지막 헤드 비트 후에 부호를 엔코딩하는 것을 포함한다. N 계수가 양인지 음인지 또는 부호가 아직 부호화되지 않은 것에 따라 부호에 대한 3개의 컨텍스트가 있다. 대신에, 하나의 컨텍스트는 부호에 사용될 수 있고 또는 부호는 항상 50%로 부호화될 수 있다.
웨이블릿 계수의 코딩 오더
웨이블릿 계수를 위한 코딩의 오더링의 일 실시예는 다음의 의사-코드에서 요약된다.
가장 중요한 데이터가 부호화되면, 모두 제로 헤드 비트로 구성되어 있지 않은 덜 중요한 데이터의 첫 번째 비트평면이 각 계수에 대하여 결정된다. 이것으로 엔코더와 디코더가 덜 중요한 데이터의 전체 비트평면을 미리 볼 수 있다. 이것은 특히 모든 정보가 K계수에 있고 CMY계수는 모두 0인 흑과 백 데이터의 코딩 유니트에 유용하다. 특히, R2(7)가 가능한 가장 긴 런 길이 코드이면, 비트평면을 개별적으로 코딩하지 않는 것은 압축 비율에 도움을 준다. ("R2"코드의 설명에 대하여 미국특허 번호 5,381,145와 5,583,500에 있다.) 그러나 4 병렬 코딩 코어가 성분에 동기되어 동작하면, 처리 속도는 부호화할 가장 많은 비트평면을 갖는 성분에 의하여 결정된다. 부호화되지 않은 비트평면중 다른 성분에 할당된 코어는 아이들(idle)이다.
위 의사 코드의 동작의 일 실시예를 설명하는 플로우차트는 도 14에 도시된다. 도 14에 의하면, 컨텍스트 모델은 MIC(most important chunk)를 부호화하므로써 시작한다(처리 블록 1401). MIC를 부호화한 후, 처리 로직은 첫 번째 LIC 비트평면의 위치를 데이터로 부호화한다(처리 블록 1402). 이것은 전체 코딩 유니트를 위한 것이다. LIC에 6 비트평면이 있으면, 0,1,2,3,4,5 또는 6 비트평면중 어느 하나는 데이터를 보유할 것이다. 그러면 처리 로직은 현재 LIC 비트평면 변수를 데이터를 갖는 첫 번째 LIC 비트평면으로 설정한다(처리 블록 1403).
다음으로, 테스트는 데이터를 갖는 모든 LIC 비트평면이 부호화되었는지를 결정한다(처리 블록 1404). 그렇다면, 처리는 끝나고 그렇지 않다면, 처리로직은 LIC 비트평면을 부호화하고(처리 블록 1405) 현재의 LIC 비트평면 변수를 다음 LIC 비트평면으로 설정한다(처리 블록 1406). 그런 다음, 처리 루프는 처리 블록 1404로 다시 되돌아간다.
가장 중요한 데이터의 코딩 오더
가장 중요한 데이터의 코딩 오더의 한 실시예는 다음과 같다.
가장 중요한 데이터는 한 번에 1 웨이블릿 트리로 처리된다. 반복하기 위하여, 임베디드되지 않는다. MIC 미리보기(look-ahead)는 웨이블릿 트리에서 모든 논(non)-SS 계수에 대하여 모두 제로 헤드 비트인 비트평면을 결정한다. 한 실시예에서, 개별적으로 부호화하기 위하여 첫 번째 비트평면을 식별하는데 4-비트 수가 충분하다. 도 15에서 도시한 다른 실시예에서, 두 번째 분해(빗금친 영역)의 모든 논-SS 계수 1501이 0임을 나타내는데 1 비트가 사용되고 첫 번째 분해의 모든 논-SS 계수 1503이 0임을 나타내는데 다른 비트가 사용된다. 이들 2 비트는 첫 번째 비트평면을 특정하는데 사용되는 4 비트에 부가하여 사용된다.
다른 실시예에서, 트리 미리보기는 SS 계수가 부호화된 후 모든 트리에 대하여 논-제로 헤드 비트를 갖는 첫 번째 비트평면이 부화되는 곳에 사용된다.
컨텍스트 재방문 지연을 설명하기 위하여 SS와 첫 번째 비트평면 코딩에 대하여 조절이 사용되면 SS 계수의 비트(가역 색공간이 사용되면 9비트이다)의 실제 코딩/디코딩과 미리 본 값이 교대로 일어날 수 있다. 조건이 사용되지 않으면, 교대로 일어날 필요가 없다.
앞에서 논의된 바와 같이, 본 발명의 컨텍스트 모델은 미리보기를 사용한다. 미리보기의 한 실시예는 가장 중요한 데이터, 즉 MIC(most important chunk)에 채용된다. 한 실시예에서, 도 15에 도시한 바와 같이, 각 트리에 대하여 6 비트가 사용된다. 4개는 최대 비트평면에, 1개는 모두 제로인 레벨 0에, 1개는 모두 제로인 레벨 1에 사용된다. 최대 비트평면이 0이면, 두 여분의 비트는 불필요하고, 그러나 이것은 중요하지 않다. 그렇지 않으면 하나의 적응적 코딩 디시전(decision)이 "(고립된)제로/논-제로"를 결정하기 위하여 사용된다. 논-제로 계수에 대하여 그들은 다음에 의하여 더 구체화된다.
.계수의 값과 부호를 결정하기 위한 하나의 M-ary 동작(전체:계수마다 2 사이클)
. 하나의 적응적 코딩 디시전(decision)이 "±1/비±1"를 결정하기 위하여 사용된다. 두 번째 사이클은 크기가 1인 부호와 크기가 1보다 큰 부호와 값을 얻기 위하여 사용된다.(전체:계수마다 3 사이클)
. 유사하게, 계수당 전체 4 사이클에 대하여 "±1/비±1", "±2,3/비±2,3" 등으로 할 수 있다.
.다음과정
1 비트 또는 여러 비트를 "specify"하는 것은 적응적으로 코딩하고 50%의 확률로 코딩하며 또는 단지 비트를 부호화된 데이터 스트림으로 카피(copy)하는 것일 수 있다.
비트평면의 모두 또는 대부분이 개별적으로 부호화되면 변환의 어떤 레벨은 정렬로 인하여 사용되지 않는 비트평면을 가질 수 있다. 사용되지 않는 비트평면은 부호화되지 않는다. 비트를 헤드와 테일 비트의 컨텍스트 지연으로 취급하는데 많은 옵션이 있다. 한 방법은 세 계수:DD, SD, DS를 교대시키는 것이다. 논-제로 계수의 부호 비트는 계수의 끝에서 부호화된다- 가장 중요한 데이터 모두는 항상 손실이 없으므로 첫 번째 "온"비트를 정확하게 추종할 필요는 없다.
MIC를 부호화하는 의사 코드를 설명하는 플로우차트의 일 실시예는 도 16에 도시된다. 도 16에 의하면, 프로세스는 현재 트리를 첫 번째 트리로 설정하는 처리 로직으로 시작된다(처리 블록 1601). 이후, 처리로직은 SS 계수를 부호화한다(처리 블록 1602).계수를 부호화한 후, 처리 로직은 첫 번째 비트평면의 위치를 트리의 MIC의 데이터로 부호화하거나(처리 블록 1603) MIC 미리보기를 수행한다.
이어서, 처리 로직은 전체 트리의 MIC가 0인지의 여부를 테스트한다(처리 블록 1604). 전체 트리의 MIC가 0이면, 처리는 처리 블록 1614에서 계속되고, 그렇지 않으면, 처리는 처리 블록 1605로 이동하여 처리 로직은 현재 계수를 트리의 첫 번째 논-SS 계수로 설정한다.
현재 계수를 트리의 첫 번째 논-SS 계수로 설정한 후, 처리 로직은 현재 비트평면을 데이터를 갖는 첫 번째 비트평면으로 설정한다(처리 블록 1606). 그후, 처리 로직은 현재 비트평면의 현재 계수의 비트를 부호화한다(처리 블록 1607). 그 후에, 처리 로직은 모든 비트평면이 부호화되었는지의 여부를 테스트한다(처리 블록 1608). 모든 비트평면이 부호화되지 않았으면, 처리 로직은 현재 비트평면을 다음 비트평면으로 설정하고(처리 블록 1609) 처리 블록 1607로 이동한다. 모든 비트평면이 부호화되었으면, 처리 로직은 현재 계수가 0인지의 여부를 테스트한다(처리 블록 1610). 현재 계수가 0이 아니면, 처리 로직은 부호 비트를 부호화하고(처리 블록 1611) 처리는 처리블록 1613으로 이동한다. 현재 계수가 0이면, 처리 로직은 처리블록 1613으로 이동한다.
처리 블록 1613에서, 처리 로직은 트리의 모든 계수가 부호화되었는지의 여부를 테스트한다. 트리의 모든 계수가 부호화되지 않았으면, 처리 로직은 현재 계수를 트리의 다음 계수로 설정하고(처리 블록 1612) 처리는 처리 블록 1606으로 이동한다. 트리의 모든 계수가 부호화되었으면, 처리 로직은 모든 트리가 부호화되었는지의 여부를 테스트한다(처리 블록 1614). 모든 트리가 부호화되었으면, 처리는 종료되고 그렇지 않으면 처리는 처리블록 1615로 이동하여 처리 로직은 현재 트리를 다음트리로 설정하고 처리는 처리블록 1602로 이동한다.
도 17은 가장 중요한 데이터의 코딩 패스동안 사용되는 포맷팅 유니트와 컨텍스트 모델의 일 실시예의 블록 다이어그램이다. 도 1에 의하면, 배럴(barrel) 쉬프터 1701은 계수의 크기와 부호화중 가장 중요한 데이터가 최대 디스크 대역폭을 초과하는 것을 방지하기 위하여 사용된 양자화 레벨을 수신하도록 연결되어 무손실 복원을 보장한다. 그리하여, 양자화 레벨은 배럴 쉬프터 1701을 제어한다. 한 실시예에서, 배럴 쉬프터 1701은 1,2,4 또는 8의 양자화를 지원하기 위하여 크기 비트를 0,1,2 또는 3만큼 쉬프트한다. 다른 실시예에서, 단지 두 개의 양자화와 같이 더 낮은 또는 더 높은 수의 양자화가 지원된다.
배럴 쉬프트 1701의 출력은 덜 중요한 데이터인 낮은 오더의 6 비트평면과 가장 중요한 데이터인 높은 오더 비트의 나머지를 포함한다. 다른 실시예에서, 이들 두 출력을 생성하기 위하여 간단한 분리 메카니즘이 사용된다.
베럴 쉬프터 1701의 두 출력은 첫 번째 비트평면 유니트 1702에 입력되어 어느 비트평면이 데이터를 갖는지 결정한다. 첫 번째 비트평면 유니트 1702는 덜 중요한 데이터를 처리할 때 사용하기 위하여 전체 코딩 유니트(도 10)에 대하여 첫 번째 "온" 비트를 갖는 비트평면을 찾는데 사용된다. 다른 비트평면 유니트 1706 또한 배럴 쉬프터 1701에서 출력되는 가장 중요한 데이터를 수신하도록 연결된다. 첫 번째 비트평면 유니트 1706은 더 중요한 데이터를 처리할 때 각 트리에 대하여 사용된다. 첫 번째 비트평면의 일 실시예는 도 18을 참조하여 다음에 설명한다.
배럴 쉬프터 1701은 또한 비교 유니트 1703과 1704에 연결되어, 덜 중요한 데이터에 대한 2 비트 신호 정보를 발생하기 위하여 가장 중요한 데이터에 대한 2가지의 비교기능을 수행한다. 비교 유니트 1703은 가장 중요한 데이터가 0과 같은 지의 여부를 결정하고, 그것에 의하여 테일 비트가 이미 발생되었는지의 여부를 나타낸다(즉, 아직 테일에서 코딩하는지 여부). 비교 유니트 1703의 출력은 테일-온 비트이다. 비교 유니트 1704는 가장 중요한 데이터가 1과 같은 지의 여부를 결정한다. 가장 중요한 데이터가 1과 같으면, 위의 표 5로부터 출력은 0이다. 비교 유니트 1704의 출력은 먹스 1705의 한 입력에 연결된다. 먹스 1705의 다른 입력은 부호 비트를 수신하도록 연결된다. 먹스 1705의 선택 입력은 비교 유니트 1703의 출력에 의하여 제어되어 비교 유니트 1703의 출력이 비트가 테일 비트임을 나타내면 먹스 1705의 출력은 "첫 번째 테일" 비트이다. 그러나 비교 유니트 1703의 출력이 비트가 헤드 비트임을 나타내면 먹스 1705는 부호를 출력하도록 제어된다.
한 실시예에서, 비교 유니트 1703과 1704는 단순한 비트 비교기를 사용하여 구현될 수 있다.
메모리 1707은 부호 비트, 배럴 쉬프터 1701의 가장 중요한 데이터 출력, 비트평면 유니트 1706의 출력을 수신하도록 연결된다. 메모리 1707은 계수를 지연시키는데 사용되어 부모(parent)와 이웃 정보를 조건에 대하여 얻을 수 있다. 메모리 1707의 조직은 이하에서 논의한다.
컨텍스트 모델(CM) 1710-1712는 부호, 헤드, 테일 그리고 다른 비트의 조건을 제공한다. 이들 컨텍스트 모델의 각각은 다음에서 설명한다.
도 18은 첫 번째 비트평면의 일 실시예를 설명한다. 도 18에 의하면, 첫 번째 비트평면 유니트 1800은 계수와 레지스터 1802 출력의 피이드백을 수신하도록 연결된 오아(OR) 게이트를 포함한다. 오아(OR) 게이트 1801의 출력은 레지스터 1802의 입력에 연결된다. 레지스터 1802는 트리/코딩 유니트의 스타트 표시에 의하여 제어된다. 레지스터 1802의 출력은 우선순위 엔코더 1803에 연결된다. 우선순위 엔코더 1803의 출력은 첫 번째 비트평면 유니트 1800의 출력이다.
스타트에서, 레지스터 1802는 클리어된다. 레지스터 1802의 각 비트는 오아 게이트 1801을 사용하여 계수의 각 비트와 오아(OR)된다. 0인 계수의 각 비트에 대하여, 레지스터 1802의 값은 그것의 현재 값을 유지하여 우선순위 엔코더로 출력한다. 1(예를들면, 첫 번째 1)인 계수의 각 비트에 대하여, 오아 게이트 1801로부터 레지스터 1802로의 출력은 1이고, 그것은 우선순위 엔코더 1803으로 출력한다. 우선순위 엔코더 1803은 첫 번째 1을 위치시키고 그것은 1을 갖는 계수의 첫 번째 비트평면이다.
덜 중요한 데이터의 처리 오더
LID(least important data)에 대한 각 비트평면은 다음과 같이 처리된다.
*****P74*****
LIC 비트평면을 코딩하는 일 실시예는 도 19의 플로우차트에 도시된다. LIC 비트평면의 코딩은 현재 트리는 첫 번째 트리로 설정하는 처리 로직으로 시작한다(처리 블록 1901). 이후, 처리로직은 현재 계수를 트리의 첫 번째 논-SS 계수로 설정한다(처리 블록 1902). 현재 계수를 트리의 첫 번째 논-SS 계수로 설정한 후, 처리로직은 코딩이 미리보기 구간의 스타트에 있는지의 여부를 테스트한다(처리 블록 1903). 코딩처리가 미리보기 구간의 스타트에 있으면, 처리 로직은 미리보기를 수행하고(처리 블록 1904) 처리 블록 1905에서 계속한다. 코딩처리가 미리보기 구간의 스타트에 있지 않으면, 처리 로직은 바로 처리 블록 1905로 이동하고 미리보기가 액티브한지를 결정한다.
미리보기가 액티브하면, 처리는 처리블록 1909에서 계속되어 처리 로직은 트리의 모든 계수가 부호화되었는지의 여부를 결정한다. 트리의 모든 계수가 부호화되었으면, 처리는 처리블록 1913에서 계속되고 그렇지 않으면, 처리 로직은 미리보기 구간후 현재 계수를 트리의 다음 계수로 설정하고(처리 블록 1910)처리블록 1903으로 이동한다.
미리보기가 액티브하지 않으면, 처리 로직은 헤드 또는 테일 비트를 부호화한 후(처리블록 1906), 첫 번째 논-제로 비트가 수신되었는지의 여부를 테스트한다(처리 블록 1907). 첫 번째 논-제로 비트가 수신되지 않았으면, 처리는 처리블록 1911에서 계속된다. 첫 번째 논-제로 비트가 수신되었으면 처리는 처리 블록 1908에서 계속되고 여기에서 처리 로직은 부호 비트를 부호화한 후 처리 블록 1911로 이동한다.
처리블록 1911에서, 처리 로직은 트리의 모든 계수가 부호화되었는지의 여부를 결정한다. 트리의 모든 계수가 부호화되지 않았으면, 처리 로직은 현재 계수를 트리의 다음 계수로 설정하고(처리 블록 1912) 처리 블록 1903으로 이동한다. 트리의 모든 계수가 부호화되었으면 처리 블록 1913으로 이동하고 여기에서 처리로직은 모든 트리가 부호화되었는지의 여부를 테스트한다. 모든 트리가 부호화되지 않았으면, 처리 로직은 현재 트리를 다음 트리로 설정하고(처리 블록 1914) 처리블록 1902에서 계속된다. 모든 트리가 부호화되었으면 처리는 끝난다.
한 번에 웨이블릿 트리를 처리하는 것은 중요하지 않을 수 있으나, 변환으로 인하여 데이터를 그러한 오더로 읽고 쓸 수 있으므로 편리하다. 데이터가 웨이블릿 트리에 의하여 처리되면 컨텍스트 지연까지의 비트는 DD, SD, DS 계수간을 교대시킴(서브트리사이를 교대함)으로써 수용될 수 있다. 그렇지 않으면 한 번에 하나의 서브 대역이 부호화될 수 있다. 선택된 오더에 관계없이 다른 서브대역의 정렬로 인한 사용되지 않은 헤드/테일 비트는 부호화되지 않고 아이들(idle) 사이클을 필요로 하지 않는다.
도 20은 미리보기와 덜 중요한 데이터의 컨텍스트 모델의 일 실시예의 블록 다이어그램이다. 한 실시예에서, 가장 중요한 데이터와 덜 중요한 데이터는 부호, 헤드, 테일 비트의 조절을 제공하는 같은 컨텍스트 모델(CM)을 사용한다.
도 20을 참고하면, 컨텍스트 모델 2001-1003은 입력 데이터에 연결된다. 부호 컨텍스트 모델 2001은 테일-온 비트, 부호/첫번째 테일 비트 신호, 데이터를 수신하도록 연결된다. 헤드 비트 컨텍스트 모델 2002는 테일-온 비트, 데이터를 수신하도록 연결된다. 테일 비트 컨텍스트 모델 2003은 테일-온 비트, 부호/첫번째 테일 비트 신호, 데이터를 수신하도록 연결된다. 그들의 입력에 응답하여, 각 컨텍스트 모델 2001-2003은 컨텍스트를 발생한다.
컨텍스트 모델 2001-2003에 의하여 발생된 컨텍스트는 먹스 2004의 입력에 연결된다. 먹스 2004는 이전의 비트와 비트 중요도 표현 자체에 의하여 제어된다. 헤드컨텍스트 모델 2002는 데이터 입력에 1 비트가 보일 때까지 사용된다. 부호 컨텍스트 모델 2001은 마지막 비트가 헤드의 첫 번째 1 비트일 때까지 사용된다. 그런 다음, 테일 컨텍스트 모델 2003이 사용된다.
먹스 2004의 출력이 "=헤드?" 유니트 2005와 FIFO(first-in/first-out) 버퍼 2006에 연결된다. "=헤드?" 유니트 2005는 현재 컨텍스트가 이웃과 부모(parent)에 0 헤드 비트를 갖는 헤드 비트 컨텍스트인지의 여부를 테스트한다. 모든 컨텍스트가 헤드에 있으면, "=헤드?" 유니트 2005의 신호는 FIFO 2006을 삭제한다.
컨텍스트와 결과는 FIFO 2006 또는 미리보기 구간의 다른 메모리에서 버퍼링된다. 구간의 끝에서, 필요하면 미리보기 디시전(decision) 그리고/또는 개개의 디시전이 부호화된다. 계수가 한 번에 1 웨이블릿 트리로 처리되면, 미리보기의 FIFO는 모든 서브대역에 사용되는 단일 FIFO일 수 있으며 또는 각 서브대역에 하나씩 사용되는 다중 FIFOs가 사용될 수 있다.
멀티플렉싱을 줄이는 것이 편리하면 가장 중요한 데이터는 미리보기를 또한 사용할 수 있다. 그러나, 각 트리에 미리보기와 첫 번째 비트평면을 모두 사용하는 것은 다소 불필요할 수 있다.
하나의 성분에 할당된 코어가 부호 비트를 부호화하면, 같은 비트평면에서 부호 비트를 부호화하지 않는 다른 성분에 할당된 코어는 아이들(idle)하다. 그리하여, 각 코어가 다른 비트평면의 부호 비트를 부호화하면 부호 비트에 4 클럭 사이클까지 사용될 수 있다. 한 실시예에서, 계수당 6 헤드 또는 테일 비트까지 있다.
하나의 가능한 타이밍 문제는 MIC가 충분히 압축되어 그 데이터 부분을 디코딩하는동안 디스크는 아이들(idle)이다. 대역 버퍼에 충분한 메모리 대역폭이 있으면 미리보기는 가장 중요한 데이터를 더 빠르게 처리하도록 사용될 수 있다. 이후, 덜 중요한 데이터는 헤드 스타트를 가질 수 있다. 또한 디스크가 최대 유지 속도보다 더 높은 버스트 전송 속도를 갖는다면 좋다. 하드디스크는 보통 중요 버퍼를 갖고 이 버퍼로 미리 읽는 것이 아이들 시간을 제거한다.
컨텍스트 모델의 일부 조절
컨텍스트 모델에 사용되는 조절은 하드웨어 비용대 압축의 트레이드-오프(trade-off)에 의존한다. 그리하여 다음 섹션에서, 설계자가 고려할 조절을 위한 많은 옵션이 제공된다.
SS 계수의 컨텍스트 모델
컨텍스트 모델의 한 실시예에서, SS 계수는 부호화되지 않는다. 그들은 단지 원래 데이터의 1/256을 구성하기 때문에 그들을 코딩할 게인이 거의 없다. 그들을 코딩할 필요가 있으면, 그들은 그레이(Gray) 코딩, 동일 계수의 이전 비트에 대한, 그리고/또는 이전 계수의 해당 비트에 대한 조절에 의하여 취급될 수 있다.
첫 번째 비트평면 정보의 컨텍스트 모델
각 웨이블릿 트리의 가장 중요한 데이터에 대한 첫 번째 비트평면 정보의 4 비트는 SS 계수에서도 유사하게 다룰 수 있다. 이것은 원래 데이터의 크기를 단지 1/512만큼 증가시킨다. 한 실시예에서, 원래의 데이터와 비교하여 그들의 작은 크기로 인하여 그들은 부호화되지 않을 수 있으며 또는 그레이 코딩과 조절을 수행할 수 있다.
유사하게, 도 15에 따라 6 비트가 사용되면 SS 계수와 같이 다룰 수 있다.
헤드 비트의 컨텍스트 모델
도 21은 헤드 비트에 대한 조절을 제공하는 컨텍스트 모델의 일 실시예의 블록 다이어그램이다. 도 21에 의하면, 컨텍스트 모델 2100은 비트평면 컨텍스트 모델에 있는 것과 같은 쉬프트 레지스터를 포함한다. 중요한 차이점은 현재의 비트평면으로부터 이전의 계수를 사용하는 대신에 모든 이전 비트평면과 현재의 비트평면에서 이전에 부호화된 정보를 사용하는 테일-온 정보에 기초하여 조절되는 것이다. 또한, 어떤 비트는 중요도 레벨과 서브대역 버킷팅(bucketing)에 의하여 발생된 비트평면 부호화 비율 또는 비트평면 그룹의 부호화 비율 또는 서브대역 또는 서브대역 그룹의 부호화 비율을 식별한다.
도 21에 의하면, 컨텍스트 모델은 현재 중요도 레벨 2110과 메모리로부터의 계수 2111의 두 입력을 포함한다. 현재 중요도 레벨 2110은 테일-온 정보/비트 발생기 블록 2101과 중요도 레벨과 서브대역 버킷팅 블록의 입력에 연결된다. 메모리로부터의 계수는 또한 블록 2101과 레지스터 2103-2106에 연결된다.
블록 2101은 계수를 취하여 1 비트가 있는지의 여부를 결정한다. 한 실시예에서, 2101은 또한 어디에 1 비트가 있는지 결정한다. 블록 2101의 출력은 테일-온 정보에 기초하여 1 또는 2 비트이다. 한 실시예에서, 테일-정보는 첫 번째 논-제로 크기의 비트가 관측되었는지(예를들면, 첫 번째 "온-비트"가 관측되었는지)의 여부와 관계되고, 그렇다면, 얼마나 많은 비트평면 이전에 대하여 관계한다. 표 6은 테일-정보 비트를 설명한다.
테일 정보의 정의
테일 정의
0123 온-비트가 관측되지 않음첫 번째 온-비트가 마지막 비트평면에 있음첫 번째 온-비트가 2 또는 3 비트평면전에 있음첫 번째 온-비트가 3 이상의 비트평면전에 있음
2-비트 테일 정보로부터, 1-비트 "테일-온"값은 테일 정보가 0인지 여부를 나타내도록 합성된다. 한 실시예에서, 테일-정보와 테일-온 비트는 계수가 부호화된 후 바로 업데이트(update)된다. 다른 실시예에서, 업데이팅은 나중에 발생하여 병렬 컨텍스트 발생을 가능하도록 한다.
또한, 2 비트는 부호화되고 있는 중요도 레벨을 나타내는데 사용될 수 있다. 첫 번째 2 비트평면은 값 0을, 두 번째 2 비트평면은 값 1을, 세 번째 2 비트평면은 값 2를, 나머지 비트평면은 3을 사용한다. 또한, 모두 제로 헤드 비트인 비트의 런-길이 엔코딩이 있다.
헤드 비트의 컨텍스트 10 비트는 각각 부모(parent)와 서쪽 계수로부터의 2비트 정보, 각각 북쪽, 동쪽, 남서쪽, 남쪽 계수로부터 1비트 정보, 2비트의 중요도 레벨 정보를 포함한다.
한 실시예에서, 테일 정보는 어떤 또는 모든 주파수 대역에 대하여 사용되지 않는다. 이것으로 주파수 대역이 미리 그것의 부모(parent)를 디코딩하지 않고도 디코딩될 수 있다.
다른 실시예에서, 각 주파수 대역의 비트평면을 중요도 레벨에 할당하는데 하나의 정렬을 사용한다. 부모(parent)의 테일-온 정보를 결정하는데 두 번째 정렬을 사용하며 이것은 실질적으로 부호화되는 것 보다 적은 부모(Parent)의 비트평면을 사용한다. 이것으로 주파수 대역의 어떤 비트평면은 같은 중요도 레벨의 부의 해당 비트평면을 디코딩하지 않고 복호화될 수 있다(도 38). 예를들면, 화상은 피라미드 정렬로 부호화될 수 있다. 그러나 MSE 정렬에 기초한 부모 테일-온 정보로 부호화된다(도 39). 이것으로 디코더는 피라미드 정렬로 복호화하고, MSE 정렬을 시뮬레이션하며, 또는 피라미드와 MSE사이의 어떤 정렬도 시뮬레이션할 수 있다.
도 21에 의하면, 블록 2101의 출력은 레지스터 2103-2106의 입력에 연결된다. 레지스터 2103-2106은 이웃 데이터를 축적한다. 예를들면, 상/좌 쉬프트 레지스터는 위의 현재 계수인 라인동안 비트를 유지한다. 현재 쉬프트 레지스터는 계수의 현재 라인의 비트를 포함하고, 반면에 하/우 쉬프트 레지스터 2105는 쉬프트 레지스터 바로 밑 라인부터의 라인을 포함한다. 마지막으로, 부모(parent) 레지스터 2106은 부모(parent) 데이터를 유지한다. 쉬프트 레지스터의 출력은 컨텍스트를 구성한다.
중요도 레벨과 버킷팅 블록 2102의 출력은 또한 컨텍스트를 위하여 사용될 수 있다. 서브대역과 다른 레벨이 같은 컨텍스트로 부호화되는 경우 컨텍스트의 일부가 된다. 그러한 경우, 블록 2102의 출력은 레지스터 2103-2106의 출력과 결합하여 컨텍스트를 형성한다. 그렇지 않은 경우, 컨텍스트는 단지 레지스터 2103-2106의 출력만 포함한다.
또한 컨텍스트 모델 2100의 출력은 비트이다.
코딩은 DD, SD, DS 계수간을 교대함으로써 이루어 질 수 있고 현재의 비트평면의 데이터를 사용하기 위하여 컨텍스트 지연까지의 비트를 허용한다(서브트리간을 교대함).
조절을 위하여 필요한 계수를 저장하는데 메모리가 필요하다(도 17). 모든 이웃과 부모(parent)에 대한 조절을 갖는 컨텍스트 모델의 한 실시예에 대한 메모리의 사용은 도 22에 도시된다. 짧은 심 변환 오더를 가정한다. (긴 심 변환 오더를 지원하기 위하여 외부 메모리를 사용할 수 있다. 이것은 부가 메모리 저장과 대역폭을 필요로 한다).
상위 레벨 부모(parent)에 대한 조절은 특히 비용이 많이 든다. 주어진 트리의 레벨 4 DD 계수는 그 트리의 대부분의 레벨 1 DD 계수보다 16 트리 다음까지 계산되지 않는다. 또한 나중에 부호화되는 전체 계수(도 22에서 빗금치지 않은 부분)를 저장하는 것은 나중에 조절에서의 사용을 위하여 테일-온 정보(도 22에서 그물친 부분)를 단지 저장하는 것보다 비용이 많이 든다. 동일 트리에 있는 "서쪽" 정보와 "서쪽" 트리로부터 데이터없이 발생되는 부모(parent)에 대하여 조절하는 것은 필요한 메모리의 양을 줄여준다. 부모 또는 서쪽 정보를 얻을 수 없는 경우는 북쪽 또는 동쪽의 정보를 복사하는 것이 유용하다.
부호 비트의 컨텍스트 모델
부호 비트에 대한 조절을 제공하는 컨텍스트 모델은 간단하다. 위의 화소의 부호를 알면 조절을 위하여 사용할 수 있다. 위의 화소의 부호를 알지 못하면 비트는 부호화되지 않는다.(R2(0)가 사용된다. 다른 방법으로, 모든 부호 비트에 대하여 노 코딩(no coding)(R2(0))이 사용될 수 있다)
도 23은 부호 비트에 대한 컨텍스트 모델의 한 실시예를 도시한 블록 다이어그램이다. 도 23에 의하면 먹스 2301은 북쪽 부호 비트 2303과 0 비트 2304(배선됨)를 수신하고 북쪽 테일 온 비트 2302에 의하여 제어되어 북쪽 테일 온 비트 2302가 1이면 북쪽 부호 비트 2303을 출력하고 그렇지 않으면 0을 출력한다. 그리하여 북쪽 화소는 북쪽 테일 온 비트 2302와 북쪽 부호 비트 2303을 공급하고 북쪽 화소의 남쪽 화소에 대한 컨텍스트를 제공한다.
테일 비트의 컨텍스트 모델
테일 비트에는 조절이 사용되지 않는다. 한 실시예에서, 고정 확률 상태가 사용되고, 확률 갱신은 사용되지 않는다. 표 7은 테일 비트에 사용되는 코드의 3가지 옵션을 나타낸다. R2(1)와 R2(0)를 사용하는 두 번째 옵션은 좋은 선택이다.
테일 비트에 사용되는 확률 상태(코드)
테일의 비트 1 2,3 4,...
옵션 1옵션 2옵션 3 R2(1) 황금비 코드 R2(0)R2(1) R2(0) R2(0)R2(0) R2(0) R2(0)
한 실시예에서, M≒60% L≒40%의 확률에 좋은 황금비 코드는:
입력 코드워드
MMM 00
MML 110
ML 01
LM 10
SS 111
컨텍스트 빈 요약
시스템에서 사용될 수 있는 컨텍스트 빈의 최소수는 다음과 같다. SS, 각 트리의 첫 번째 비트평면, 부호와 테일 비트는 모두 부호화되지 않는다(코드는 R2(0)가 사용됨). 비록 PEM 상태 또는 MPS(most probable symbol) 비트가 저장될 필요가 없더라고 R2(0) 코드를 선택하는 로직은 있어야 한다. 그리하여 어떻게 이것이 카운트되는가에 따라 하드웨어 비용은 제로 또는 1 컨텍스트 빈이다. 헤드 비트에는 적응 코딩을 사용하여야 한다. 덜 중요한 데이터에 대하여, 한 번에 하나의 비트평면이 부호화되므로 비트평면에 대한 조절은 중요하지 않다. 가장 중요한 데이터에 대하여, 각 웨이블릿 트리의 첫 번째 비트평면은 비트평면 수를 충분히 줄여서 비트평면에 대한 조절은 중요하지 않다. 서브대역에 대한 조절의 유용성이 무엇인지는 덜 명확하지만, 이 또한 여기의 최소 컨텍스트 예에서는 무시할 것이다. 3 이웃과 1 부모(parent)의 테일-온 비트가 전체 4 비트(16 컨텍스트 빈)에 사용될 수 있다. 하나의 부가 컨텍스트 빈은 미리보기에 사용될 수 있다. (2 헤드 컨텍스트 빈을 함께 매핑하여 미리보기에 대한 여유를 만드는 것이 더 편리할 수 있다. 메모리 크기는 여전히 2의 거듭제곱이다.)
4 코어(컨텍스트를 4번 복제하는 것을 요구함), 코어당 2 컨텍스트 메모리 뱅크를 가지고, 사용할 컨텍스트 빈의 최소수는 "부호화되지 않은" 컨텍스트를 어떻게 카운트하고 2 헤드 컨텍스트가 함께 매핑되었는지의 여부에 따라 128과 144의 사이이다.
풍부한 양의 조절을 갖는 시스템은 다음과 같다.
. SS(9-비트)와 첫 번째 비트평면(4 비트)에 대하여, 비트당 4 컨텍스트 빈을 사용하여 전체 52 컨텍스트 빈을 사용함.(이들은 뱅크로 분할될 수 있고 그들은 복제될 필요는 없다)
. 테일 비트는 부호화되지 않지만, R2(0)와 R2(1) 모두 사용된다. 어떻게 이것이 카운트되는가에 따라 이것은 0,1,2 컨텍스트 빈이 든다.
. 2개의 적응 컨텍스트와 1개의 "노 코드(no code)" 컨텍스트가 부호 비트에 사용된다.
.헤드 비트는 이웃/부모로부터 8비트와 서브대역/비트평면 정보를 위한 2비트를 사용할 수 있다.(1024 컨텍스트 빈)
. 1 컨텍스트가 미리보기에 사용된다.
컨텍스트 모델의 다른 실시예는, 입력 계수를 부호/크기 포맷으로 변환하는 부호/크기 유니트의 실시예를 포함하여, 1995년 6월 30일에 출원된 "Method and Apparatus for Compression Using Reversible Wavelet Transform and an Embedded Codestream"의 제목인 미국특허 출원번호 08/498,695와 1995년 6월 30일에 출원된 "Reversible Wavelet Transform and Embedded Codestream Manipulation"의 제목인 미국특허 출원번호 08/498,036과 1996년 5월 3일에 출원된 "Compression and Decompression with Wavelet Style and Binary Style Including Quantization by Device-Dependent Parsar"의 제목인 미국특허 출원번호 08/642,518과 1996년 5월 3일에 출원된 "Compression/Decompression Using Reversible Embedded Wavelets"의 제목인 미국특허 출원번호 08/643,268에 설명되어 있다.
컨텍스트 모델은 데이터의 엔트로피 코딩에 컨텍스트를 제공한다. 한 실시예에서 본 발명에 의하여 수행되는 모든 엔트로피 코딩은 2진 엔트로피 코더에 의하여 수행된다. 단일 출력 코드스트림을 생성하기 위하여 단일 코더를 사용할 수 있다. 다른 방법으로, 다중(물리적 또는 가상적) 데이터 스트림을 생성하기 위하여 다중(물리적 또는 가상적) 코더를 채용할 수 있다.
LIC의 M-ary 코딩
도 24는 LIC에 대한 M-ary 코딩의 사용을 설명한다. 감소된 코딩을 위한 M-ary는 미리보기로서 동작한다. 처음에, 다음의 8 계수의 상태를 조사한다. 헤드에 무엇인가 있으면, 엔트로피 코딩이 헤드 비트에 대하여 수행되고 8에 있는 모든 비트가 부호화될 때까지 사이클당 하나씩 엔트로피의 모든 헤드 비트가 부호화된다. 도 24에 의하면, 1인 헤드 비트는 첫 번째와 세 번째 사이클에서 부호화되고 반면에 0인 헤드 비트는 두 번째와 네 번째 사이클에서 부호화된다. 일단 헤드 비트 모두가 엔트로피 부호화되면, 부호와 테일 비트는 같은 사이클에서 부호화하다. 예를들면, 도 24에서1인 헤드 비트를 따라온 부호와 테일 비트는 다섯 번째 사이클에서 부호화하다. 이 방식으로, 전 사이클의 수가 감소된다.
본 발명의 프린팅 시스템 응용례
도 25는 프린터 전단의 한 실시예의 블록 다이어그램이다. 도 25에 의하면, 렌더러(renderer) 2501은 데이터를 페이지 표현 언어 또는 표시 리스트의 형태로 수신한다. 렌더러 2501은 래스터 화상 처리를 포함할 수 있다. 각 위치에 대하여(예를들면, 점), 렌더러 2501은 그 색을 결정한다(예를들면, 응용례에 따라 흑/백,8-비트-RBG 값, 8 비트 CMYK 값). 렌더러 2501의 출력은 대역에 포맷되어 밴드 버퍼(메모리) 2503에 저장된 화소 세트이다.
다른 실시예에서, Adobe Postscript 또는 Microsoft Window GDI와 같은 페이지 표현 언어(PDL)는 표시 리스트에 주어진다. 표시 리스트는 화소의 대역을 발생하는데 사용된다. 이 실시예에서, 화소는 연속-톤 값을 나타내고 프린트 엔진에 의하여 요구되는 하프토닝(halftoning)과 디더링(dithering)은 복원 후에 수행된다.
본 발명에서, 대역 버퍼 2503에 사용되는 메모리는 또한 압축의 동작공간으로 사용된다(필요한 메모리의 증가없이). 이 양쪽 사용에 대하여 아래에서 더 상세하게 설명한다.
압축기 2504는 화소의 각 대역을 압축한다. 압축기 2504의 입력이 하프톤 또는 떨리는 화소이면 압축기 2504는 계속 동작하지만 이루어진 압축은 웨이블릿 처리에 만족스럽지 못할 것이다. 하프톤 또는 떨리는 화상에는 2진 컨텍스트 모델을 사용할 수 있다. 압축기 2504는 압축된 데이터를 디스크 2505에 기록한다. 디스크 2505는 하드디스크일 수 있다. 다른 실시예에서, 디스크는 RAM(random access memory), 플래쉬 메모리, 광 디스크, 테이프, 어떤 형태의 저장 수단, 어떤 형태의 통신 채널이 될 수 있다.
도 26은 프린터 후단의 일 실시예의 블록 다이어그램이다. 도 26에 의하면, 프린터 2500의 후단은 디스크 2505에 연결되는 복원기 2602, 대역 버퍼(메모리) 2603, 프린트 엔진 2604를 포함한다. 복원기 2602는 하드디스크 2505로부터 압축된 데이터를 읽어 복원한다. 복원된 데이터는 대역 버퍼(메모리) 2603에 화소의 형태로 저장된다. 대역 버퍼 2603은 압축기 2504의 동작공간으로서 동작하는 대역 버퍼 2503과 동일한 메모리이다. 복원기 2602는 대역 버퍼 2603을 충분히 채워서 화소가 프린트 엔진 2604에 실시간으로 전송될 수 있도록 한다.
도 27은 옵션을 포함하는 다른 실시예이다. 도 27에 의하면, 복원기 2602로부터의 화소는 증진 블록 2705를 경유하여 대역 버퍼 2603으로 가는 반면에 화소가 아닌 정보(부분적 계수)인 다른 정보는 대역 버퍼 2603으로 직접 보내진다. 증진 블록 2705는 보간(interpolation), 평활(smooth), 에러 분포, 하프토닝(halftoning), 디더링(dithering)과 같은 기능을 수행한다.
복원기 2602와 대역 버퍼 2603의 사이에 필요한 대역폭은 복원기 2602가 변환 계수를 대역 버퍼 2603에 기록할 수 있도록 하고 어떤 계수를 얻기 위하여 대역 버퍼 2603에 억세스할 수 있도록 하며 그러한 계수에 역변환을 수행할 수 있도록 한 후, 다시 대역 버퍼 2603에 그들을 기록할 수 있도록 한다. 동작 공간 메모리로서 대역 버퍼 2603은 작다. 예를들면, 전 페이지 화상이 64 메가바이트이고 대역 버퍼 2603이 16메가바이트이면, 작은 동작 공간 메모리로 간주될 수 있다.
한 실시예에서, 32비트/화소(4개의 8-비트 성분, CMYK)를 갖는 400dpi에서 약 8페이지/분의 A4화상은 대역 버퍼 2603에서 프린트 엔진 2604로 대략 8Mbytes/s의 데이터 속도를 필요로 한다. 예시적인 하드디스크의 전송 속도는 초당 2Mbytes 정도(예를들면, 1.7-3.5Mbytes/s)이다. 그리하여 디스크 2601의 대역폭을 프린터의 대역폭에 매칭하기 위하여 약 4:1의 전형적인 압축 비율이 요구된다. 한 실시예에서, 도 25의 압축기 2504와 도 26 또는 27의 복원기 2602는 단일 집적 회로 칩에 포함된다.
도 28은 프린터 압축/복원을 포함하는 집적 회로(IC) 칩의 한 실시예의 블록 다이어그램이다. 도 28에 의하면, 화소 데이터 인터페이스 2801화소 데이터를 대역 버퍼로부터 읽고 대역 버퍼에 기록하기 위한 어드레스를 발생한다. 옵션인 가역 색공간2802는 가역 색공간 변환을 수행하기 위하여 포함될 수 있다. 계수 데이터 인터페이스 2804는 계수를 읽고 기록하기 위한 어드레스를 발생하고 2 바이트 계수를 적절히 조합한다. 화소 데이터 인터페이스 2801과 함께 계수 데이터 인터페이스 2804는 외부 메모리에 있는 어떤 라인 버퍼링 또는 계수 버퍼링도 취급한다. 계수 데이터 인터페이스 2804와 가역 색공간의 사용에 대하여 아래에서 더 상세하게 설명한다.
더블 화살표는 데이터가 둘중 어느 한쪽 방향으로 흐를 수 있음을 나타낸다. 예를들면, 데이터를 압축할 때, 데이터는 왼쪽에서 오른쪽으로 IC 칩의 다른 성분을 통과하여 흐른다. 반면에, 데이터를 복원할 때, 데이터는 일반적으로 오른쪽에서 왼쪽으로 흐른다.
데이터를 코딩할 때, 화소 데이터 인터페이스 2801 또는 가역 색공간 2802(포함되면)로부터의 화소 데이터는 화소 데이터에 대하여 웨이블릿 변환을 수행하는 웨이블릿 변환 블록 2803에 의하여 수신된다. 한 실시예에서, 웨이블릿 변환 블록 2803에 의하여 수행되는 변환은 중첩 웨이블릿 변환이다. 그것은 무손실 그리고 유손실 화상 압축에 대하여 에너지 응축을 제공한다. 유손실 압축에 대하여, JPEG를 괴롭히는 블록 경계 가공물(block boundary artifacts)은 피하였다. 적절하게 정렬되면필터 계수는 표준화되어 스케일(scale) 양자화는 좋은 유손실 압축 결과를 제공한다. 한 실시예에서, 웨이블릿 변환 블록 2803은 2,6 변환을 수행한다. 다른 실시예에서, 웨이블릿 변환 블록 2803은 2,10 변환을 수행한다. 웨이블릿 변환 블록 2803은 다른 잘 알려진 변환을 수행한다. 웨이블릿 변환 블록 2803의 다양한 구현에 대하여 아래에서 더 상세하게 논의한다.
웨이블릿 변환 블록 2803의 계수 출력은 나중 코딩을 위하여 계수 데이터 인터페이스 2804를 경유하여 메모리(예를들면, 대역 버퍼)에 다시 기록된다. 한 실시예에서, 메모리에 다시 기록된 데이터는 덜 중요한 데이터이고 아래에서 상세히 설명한다. 그러한 데이터는 나중에 IC 칩에 다시 읽혀지고 부호화된다.
웨이블릿 변환 블록 2803으로부터의, 또는 계수 데이터 인터페이스를 경유하여 수신된 계수 출력은 컨텍스트 모델 2805에 제공된다. 컨텍스트 모델 2805는 엔코더/디코더 2806을 사용하여 데이터를 엔코딩(디코딩)하기 위한 컨텍스트를 제공한다. 한 실시예에서, 컨텍스트 모델 2805는 데이터를 바로 코딩으로 보내도록 지원한다. 이런 식으로, 컨텍스트 모델 2805는 가장 중요한 컨텍스트 모델로서 동작한다. 다양한 컨텍스트 모델을 구현하기 위한 아키텍쳐는 위에서 설명되었다.
한 실시예에서, 엔코더/디코더 2806은 고속 병렬 코더를 포함한다. 고속 병렬 코더는 여러 비트를 병렬로 취급한다. 한 실시예에서, 고속 병렬 코더는 압축 수행을 희생하지 않고 VLSI 하드웨어 또는 다중-프로세서 컴퓨터에 구현된다. 본 발명에서 사용되는 고속 병렬 코더의 한 실시예는 1995년 1월 10일에 등록된 "Method and Apparatus for Parallel Decoding and Encoding of data"의 제목인 미국특허 번호5,381,145에 설명된다.
다른 실시예에서, 2진 엔트로피 코더는 Q-코더, QM-코더, 유한 상태 기계 코더, 등에서 하나를 포함한다. Q와 QM-코더는 잘 알려져 있고 효율적인 2진 엔트로피 코더이다. 유한 상태 기계(FSM) 코더는 확률로부터 압축된 비트 스트림으로 출력하는 간단한 변환을 제공한다. 한 실시예에서, 유한 상태 기계 코더는 디코더와 엔코더 모두를 위한 테이블 룩-업(look-up)을 사용하여 구현된다. 다양한 확률 예측 방법은 그러한 유한 상태 기계 코더와 함께 사용될 수 있다. 한 실시예에서, 본 발명의 유한 상태 기계 코더는 1993년 12월 21일 등록된 "Method and Apparatus for Entropy Coding"의 제목인 미국특허 번호 5,272,478에서 정의된 B-코더를 포함한다.
엔코더/디코더 2806의 출력은 디스크 또는 다른 저장 매체 또는 다른 채널에 인터페이스를 제공하는 부호화 데이터 인터페이스 2807에 연결된다.
부호화 데이터 인터페이스 2807은 디스크로부터 부호화된 데이터를 수신하고 송신한다. 한 실시예에서, SCSI 제어기가 침에 포함되면, 그것은 이러한 점에서 구현될 수 있다. 다른 실시예에서 부호화 데이터 인터페이스 2807은 외부의 SCSI 제어기와 통신한다. 논-SCSI 저장 또는 통신이 사용된다.
복원중에, 부호화된 데이터는 부호화 데이터 인터페이스 2807을 경유하여 디스크(또는 다른 메모리 저장 또는 채널)로부터 엔코더/디코더 2806에 의하여 수신되고 컨텍스트 모델 2805의 컨텍스트에 의하여 그곳에서 복원된다. 복원의 결과로 생긴 계수는 웨이블릿 변환 블록 2803에 의하여 역 변환된다. (웨이블릿 변환 블록 2803이 한 실시예에서 정 역변환 모두를 수행하지만, 다른 실시예에서, 두 변환은 분리된 블록에 의하여 수행될 수 있다.) 변환 블록 2803의 출력은 어떤 색공간 변환을 거쳐 화소 데이터 인터페이스 2801을 경유하여 대역 버퍼에 출력되는 화소를 포함한다.
프린팅 동안 시스템의 기본적이 타이밍은 도 29에 도시된다. 도 29에 의하면, 각 코딩 유니트의 부호화된 데이터는 디스크로부터 읽는다. 가능한 많은 데이터를 읽고 짧은 지연후, 계수는 복호화된다. 복호화가 끝난 후, 역 웨이블릿 변환이 계산된다. 변환이 끝난 후, 화소는 프린트 엔진으로 송신된다. 도 29의 그물친 부분은 구체적인 코딩 유니트에 대하여 다른 동작이 생길 때를 나타낸다.
디스크 저장을 위한 계수의 임베딩
도 10은 본 발명의 부호화된 데이터의 조직을 나타낸다. 도 10에 의하면, 가장 중요한 데이터 1003은 변환된 후 즉시 계수 오더로 부호화된다(임베디드되지 않음). 그리하여 이 데이터는 버퍼링될 필요가 없다. 한 실시예에서, 가장 중요한 데이터 1003의 양은 항상 디스크로부터 읽을 수 있도록 제한된다.
버퍼링되고, 임베디드되고, 기록되는 덜 중요한 데이터의 양은 전송 시간으로 결정된다. 즉, 시스템은 디스크로부터의 전송 시간이 만료될 때까지 데이터를 읽는다. 디스크의 전송 속도는 얼마나 많은 데이터를 보유하는지를 결정한다. 이 속도는 알려져 있고 특정 전송의 물리적 특성에 의존한다.
화상을 압축하기 어려우므로 어떤 데이터는 부호화 시간동안 버려질 수 있다. 데이터는 가장 중요하지 않은 데이터 1005로서 나타낸다. 최상의 디스크 전송속도가 주어지더라고 가장 중요하지 않는 데이터를 읽을 수 있는 확률이 없는 경우 그 데이터를 디스크에 저장할 이유가 없다. 많은 화상 그리고 아마 대부분의 화상에 대하여 데이터는 버려지지 않는다.
부호화된 데이터의 오더링과 어떻게 그것을 성취하는지는 위에서 더 상세하게 설명된다.
다음에서는, 압축과 복원중의 대역 버퍼 관리를 논의하고 이어서 부호화된 데이터의 임베디드 구조를 설명한다. 변환, 컨텍스트 모델, 엔코더/디코더의 병렬화의 하드웨어 구현을 또한 설명한다.
화소와 계수 인터페이스
도 30은 화소 데이터가 어떻게 조직되는지를 나타내는 일 실시예이다. 도 30에 의하면, 페이지(화상) 3000은 대역 3001-3004로 분할된다. 일 실시예에서, 페이지 3000은 각 대역의 화소를 발생하는데 사용되는 페이지 표현 언어(page description language) 혹은 페이지의 디스플레이 리스트 표현(display list description)을 포함할 수 있다. 일 실시예에서, 대역 3001-3004는 각각 디스플레이 리스트 기술을 사용하여 래스터(raster)화된다. 각 대역 3001-3004는 또한 코딩 유니트로 분할된다(예를들면, 3001A-D).
대역당 다중 코딩 유니트를 사용하는 장점은 (핑퐁버퍼링(ping-pong buffering)에 유사하게) 대역 버퍼의 일부가 복원시 동작공간(workspace)으로서 로테이션(rotation)에 사용될 수 있다는 점이다. 다시 말해서, 화소의 한 영역은 복원되어 대역버퍼에 저장된 후 프린터에 전송될 수 있는 반면에, 대역 버퍼의 두번째 영역은 디코딩시 계수를 저장하기 위해 동작공간으로서 사용되고 세 번째 영역은 계수에 해당하는 화소를 저장하는데 사용될 수 있다.
도 31은 페이지 3100의 대역 버퍼 3101을 나타낸다. 대역 버퍼 3101은 코딩유니트 3101A-D로 구성된다. 코딩 유니트 3101A와 3101B는 계수를 저장함으로써 복원기의 동작공간으로서 작동한다. 코딩유니트 3101C는 프린터(혹은 채널)로 출력되는 화소를 저장하며 코딩 유니트 3101D는 다음 화소를 저장함으로써 복원기용 동작공간으로서 작용한다.
대역 버퍼 3101의 일부는 전체 페이지 3100이 프린트됨에 따라 로테이션(rotation)에 사용된다. 예를들면, 다음 차례의 코딩 유니트의 경우, 코딩 유니트 3101D의 화소는 프린터에 출력되는 화소이다. 이러한 현상이 발생할 때, 코딩 유니트 3101B와 3101C는 계수를 저장하기 위한 복원기용 동작공간으로서 사용된다. 또한, 이때 코딩 유니트 3101A는 프린터로 출력되는 다음 화소를 저장하기 위한 복원기용 동작공간으로도 사용될 수 있다.
본 발명에서, 계수는 화소보다 크다. 따라서, 두 배의 메모리가 동작공간 메모리에 할당된다. 다른 실시예에서, 대역은 코딩 유니트보다 많게 혹은 적게 분할될 수 있다. 일 실시예에서, 예를들면 대역은 각각 8 코딩 유니트로 분할된다.
메모리 대역폭
화소 데이터 인터페이스와 계수 데이터 인터페이스는 대역 버퍼 메모리를 효과적으로 관리한다. 고속 페이지 모드 DRAM, EDO(Extended Data Out) DRAM 혹은 연속적인 억세스를 촉진하는 다른 메모리가 사용되면, 이들 인터페이스는 연속적인 억세스로부터 데이터를 충분한 길이의 버스트로 전송하여 메모리의 잠재적인 대역폭을 효과적으로 사용할 수 있게 한다. 몇몇 소형의 버퍼들은 연속적인 어드레스에 버스트 억세스를 지원하기 위해 사용될 수 있다.
도 32는 병행 메모리 억세스의 필요조건을 나타내는 엔코딩의 타이밍 다이어그램을 나타낸다. 도 32에 의하면, 디코딩에 요구되는 대역폭은 다음과 같다. 전에 언급한 실시예에서, 2MHz의 화소클럭, 8MHz의 성분클럭(component-clock) 및 32MHz의 디코딩클럭(decoding clock)이 사용되고 프린트 엔진은 1바이트/성분클럭을 필요로 하며, 변환(transform)은 계수당 2바이트를 읽고 성분당 1바이트를 기록한다. 변환이 1/2의 코딩 유니트 시간에 실행되면 6바이트/성분클럭을 요구한다. 변환의 속도는 계산시간이 아니라 메모리의 대역폭에 의해 제한된다. 24바이트/성분클럭의 대역폭이 사용되면, 변환은 1/8의 코딩유니트시간에 계산될 것이다. 변환은 외부메모리가 심(seams)으로 사용되는 경우 부가적인 대역폭을 필요로 한다. 일 실시예에서, 계수의 디코딩은 코딩된 데이터의 가장 중요한 부분에 대해 성분클럭당 2바이트의 기록을 필요로 한다. 디코딩은 코딩된 데이터보다 덜 중요한 부분의 각 비트평면에 대해 성분클럭당 1바이트의 읽기와 기록을 요구한다. 이것은 다른 실시예에서 더 적을 수도 있다. 두 동작이 코딩유니트시간의 반 동안에 이루어진다면, 성분클럭당 4바이트의 대역폭과 24바이트의 대역폭이 각각 요구된다. 외부메모리가 컨텍스트 심(context seam) 정보용으로 사용되면, 부가적인 대역폭을 필요로 할 것이다.
일 실시예에서, 최대 버스트 모드 전송비는 성분클럭당 4메모리억세스(코드클럭당 1억세스)이다. 그러므로, 32비트 데이터버스의 경우 최대 전송비는 16바이트/성분클럭 보다 약간 작다. 64비트 데이터버스의 경우 최대 전송비는 32바이트/성분클럭보다 약간 작다.
LIC 메모리 대역폭 요구의 감소
LIC의 각 계수의 각각의 비트는 디코딩시 외부 메모리의 읽기 및 기록을 요구한다(엔코딩은 단지 읽기만을 한다). 이들 메모리 억세스는 요구되는 대다수의 메모리 대역폭을 설명한다. 일 실시예에서, LIC계수를 8비트로 저장하는 대신에 대역폭의 요구를 감소하는 것이 가능할 때 본 발명은 8비트 보다 작은 비트를 사용하는 계수를 저장한다.
표 8은 디코딩시 LIC 계수를 저장하는데 요구되는 비트를 나타내는 것으로, 각 비트평면의 디코딩에 대해 LIC 계수를 저장하기 위해 얼마나 많은 메모리가 필요한지를 나타낸다. 표 8에 의하면, MIC를 실행할 때, 계수당 1비트의 테일 온 비트(tail-on bit)가 기록된다. 비트평면 5에 기록된 것은 다시 비트평면 4에서 판독된다. 즉, 테일 온 비트, 비트 5의 값, 비트 5가 1인 경우 부호 비트(sign bit)를 포함하는 2-3비트를 기록하고 판독한다. 비율은 계수의 비율이 포함된 각 비트평면에 대한 것이다. 이것은 도 13B에 의해 더욱 명백해진다. 도 13B에 의하면, DD1부터 DS4 및 SD4 서브대역(subband)까지의 모든 계수가 비트평면 5에서 데이터를 가지기 때문에(음영으로 표시), 비트평면 5는 포함되는 모든 서브대역으로부터 계수를 보유한다. 비트평면 0은 단지 DD1의 서브대역으로부터 계수를 보유한다. 표 8에 나타낸 바와 같이, 각 비트평면 4 및 5는 모든 서브대역으로부터 계수를 보유하여 퍼센트가 100%인 반면에 비트평면 0은 단지 계수의 25%만을 보유한다(DD1 서브대역). 디코딩이 더욱 진행됨에 따라, 몇몇 비트평면은 비트평면 0에 도달하기 전에 종료한다.
디코딩동안 LIC 계수를 저장하는데 필요한 비트
MSE정렬에서의비트평면 계수의 비율기록 판독 비트/계수 컨텍스트 (기록/판독)-* 5 1 테일 온 -/100%5 4 2-3 테일 온, 비트 5,사인? 100%/100%4 3 3-4 테일 온, 비트 4…5, 사인? 100%/99%3 2 4-5 테일 온, 비트 3…5, 사인? 99%/96%2 1 5-6 테일 온, 비트 2…5, 사인? 96%/82%1 0 6-7 테일 온, 비트 1…5, 사인? 82%/25%0 -+ 7-8 테일 온, 비트 0…5, 사인? 25%/-
여기서, *는 MIC(Most Important Chunck)처리중의 기록을 나타내고 †는 역변환시의 판독을 나타낸다.
표 8에서, 디코딩의 시작시 비트평면의 디코딩이 발생하지 않는다. 그러므로, 모든 계수당 1비트(비트/계수)만이 판독되어 헤드인지 테일인지 결정된다. 디코딩이 계속됨에 따라, 계수당 비트의 수는 증가한다.
도 33은 판독된 데이터보다 큰 기록되는 데이터를 순환 어드레싱이 어떻게 취급하는지를 나타낸다. 이것은 처리의 결과가 기록을 위해 일반적으로 판독되는 비트보다 더 많은 비트를 생성하기 때문에 발생한다. 도 33에 의하면, 처리는 메모리 공간의 1/8인 계수당 1비트를 기록하는 것에 의해 시작한다. 이어서, 계수당 1비트가 판독되고 계수당 2-3비트가 기록된 후, 계수당 2-3비트가 판독되고 계수당 3-4비트가 기록된다. 이러한 처리는 모든 데이터가 처리될 때까지 계속된다.
하드웨어 장치를 간단하게 하기 위한 몇가지 선택이 있다. 최소의 비트를 항상 사용하는 대신에 일정 크기 때문에 소모되는 1비트의 원인이 되는 1,2,4,6 혹은 8 정도의 비트가 사용될 수 있다. 부호 비트가 LIC에서 코딩되지 않거나 잘 알려지지 않은 경우에도 부호 비트에 대한 공간은 항상 사용될 수 있다.
메모리 대역폭을 더욱 감소시키는 선택은 테일 온 비트가 필요하지 않은 경우 이를 저장하지 않는 것이다. 예를들면, 비트평면 0을 기록할 때, 헤드 혹은 테일 비트가 되는 6개의 비트가 존재한다. 이들 비트중 0이 아닌 비트가 존재하면, 테일 온은 참(true)이 되어 테일 온 값을 저장할 필요가 없게 되어 부호 비트는 7번째 비트로서 저장된다.
MIC의 메모리 대역폭은 또한 가변 길이 저장 방법에 의해 감소될 수 있다. 계수당 8비트를 항시 사용하는 대신에 비트의 최소값을 사용하는 것은 절약의 원인이 된다. 제로 계수 비트 대신에 6비트 미리보기 값(도 15에 도시됨)을 저장하는 것은 더욱 효율적인 메모리의 사용을 가능하게 한다.
가역 색공간
본 발명은 2 색공간 사이의 전환을 가능하게 하는 가역 색공간의 전환을 선택적으로 실행함으로서 정수연산시 완전하게 가역 실행된다. 즉, 전환되는 색공간 데이터가 역전되어 라운딩이나 절단이 순방향 전환 처리시에 발생함에도 불구하고 존재하는 모든 데이터를 얻는다. 가역 색공간은 본 발명의 양수인에게 양도된, 1995년 5월 8일 출원된 "Method and Apparatus for Reversible Color Conversion"의 제목인 미국특허 출원번호 08/436,662에 개시되어 있다.
색공간 전환은 무손실 결과를 제공하는 능력의 손실없이 대립하는 색공간의 장점을 제공한다. 무손실의 경우 대립하는 색공간은 압축을 향상시키는 무상관성을 제공한다. 유손실(lossy) 코드에 대하여, 대립하는 색공간은 색정보 보다 작게 양자화되는 휘도정보를 제공하여, 고화질을 가능하게 한다. 가역 색공간이 본 발명의 변환에 사용될 때, 휘도 및 색계수는 유손실 압축에 대한 서브샘플링(subsampling) 보다 우수해서 무손실 압축을 계속 가능하게 한다.
가역 색공간이 사용되면, 계수를 정렬하여 8비트 휘도성분과 9비트 색성분의 가장 중요한 비트가 동일한 정렬을 갖는다. 유손실 압축에서, 이러한 정렬은 휘도데이터 보다 2배 크게 양자화되는 색데이터의 원인이 되며, 휘도에 대한 무손실 압축과 색에 대한 유손실(단, 고질) 압축을 가능하게 한다. 이러한 결과들은 휴먼 비주얼 시스템(Human Visual System)의 특성을 향상시킨다.
다른 화소작용
프린터는 가끔 대부분 혹은 전체적으로 비연속적인 문서를 포함한다. 예를들면, 흑색과 흰색을 갖는 텍스트 화상(값이 단지 0 및 255인)이 일반적이다.
일 실시예에서, 대역폭의 막대 그래프는 완성된다. 예를들면, 0,255 흑/백 화상(K성분)은 0,1 화상에 맵핑된다. 유사한 단축이 스폿 색화상(spot color image)용으로 만들어질 수 있다. 단축이 사용되면, 압축은 무손실 압축이 되어야만 한다. 그러나, 실행된 무손실 압축은 실질적으로 단축이 실행될 때 향상된다.
또한, 여기서 표현된 중첩된 웨이블릿 변환을 사용하는 대신, 2진 및 스폿 색화상이 비트평면에 기초하고 손실이 없으며 JBIG과 같은 컨텍스트 모델에 의해 조정될수 있다.
다른 실시예에서, 시스템은 2진 모델을 포함하도록 설계될 수 있다. 도 35는 JBIG식 컨텍스트 템플릿(template)과 유사한 2진 컨텍스트 모델의 일 실시예를 나타낸다. 도 35에서, 쉬프트 레지스터 3501-3503은 JBIG 표준당 복수의 비트를 제공한다. 쉬프트 레지스터 3501과 3502는 라인버퍼 3500로부터 두 번째 및 첫 번째 상위 라인을 수신한다. 상위 라인은 도 37에 나타낸 바와 같이 템플릿의 북서(NW), 북(N) 및 북동(NE)의 화소에 해당하는 비트를 제공한다. 쉬프트 레지스터 3501과 3502의 출력은 컨텍스트 모델에 직접 제공된다. 쉬프트 레지스터 3503의 출력은 JBIG 표준의 적절한 템플릿을 실행할 수 있는 옵션 먹스(optional mux) 3504를 제공한다. 컨텍스트 모델 3505는 확률 예측 기계(PEM : Probability Estimation Machine) 3506에 결합되어 결국 비트 발생기(BG : Bit Generator) 3507에 결합된다. 컨텍스트 모델 3505, PEM 3506 및 BG 3507은 잘 알려진 방식으로 작동한다.
쉬프트 레지스터 3501과 3502의 출력과 결합되는 먹스 3504의 출력 및 BG로부터의 피이드백은 컨텍스트 메모리를 어드레싱하기 위해 사용되는 컨텍스트 빈 어드레스(context bin address)를 형성한다. 일 실시예에서, 컨텍스트 메모리 3505는 각각의 확률 상태를 나타내기 위해 6비트를 가진 컨텍스트 1024개를 포함한다. 이것은 1024×6비트의 컨텍스트 메모리를 필요로 한다.
BG는 현재의 라인으로부터 디코딩 비트를 컨텍스트 어드레스의 일부분으로 제공하기 때문에, 컨텍스트 메모리에 대한 억세스 시간을 포함하는 큰 "컨텍스트로의 비트(bit to context)" 지연이 존재한다.
도 36은 현재 라인의 디코딩된 비트를 이용하여 쉬프트 레지스터 3501과 3502의 출력과 멀티플렉서 3504의 출력을 수신하는 동일 어드레스 블럭 3601과 결합된 PEM을 엑세스하는 다른 실시예를 나타낸다. PEM 3506은 이전 비트를 수신하고 이것을 이용하여 사용된 컨텍스트의 쌍으로부터 적절한 컨텍스트를 선택한다. 선택된 컨텍스트는 갱신되어 두 컨텍스트가 다시 메모리에 기록된다. 동일 어드레스 블록 3601은 데이터가 PEM에 위치하도록 이미 판독된 어드레스를 검출한다. 또한, 동일 어드레스 블록 3801은 메모리의 스테일(stale)정보 대신에 PEM에 이미 존재하는 데이터(갱신된 데이터)를 사용하여 신호를 전송한다.
일 실시예에서, 디코더는 6비트를 가진 컨텍스트 빈 1024개를 포함하여 각 확률 상태를 표현한다. 이것은 512×12비트의 컨텍스트 메모리를 필요로 한다. 쉬프트 레지스터 3501과 3502의 출력은 멀티플렉서 3504의 출력과 함께 이전 비트가 사용되지 않은 부분적인 컨텍스트 빈을 제공한다. 이것은 컨텍스트 메모리 3505로부터 한쌍의 컨텍스트빈 중 하나를 선택하는 원인이 된다. 컨텍스트빈의 1비트 보다 많은 비트가 부분적인 컨텍스트로부터 제외될 수 있다. 각 메모리 위치는 2n(n은 제외된 비트의 수)의 확률 상태를 포함한다.
"컨텍스트로의 비트"지연이 감소한다. 컨텍스트 메모리 억세스는 이전 비트가 디코딩되기 전에 발생한다. 한 쌍의 두 상태에 대한 PEM상태의 처리는 이전 비트가 디코딩되기 전에 병행하기 시작하여 고속 작동이 이루어진다.
엔코딩 비율 제어
데이터를 양자화하는 능력에 부가해서, 양자화를 결정하기 위해 엔코더에서의 실행비율 제어(performing rate control)는 비율의 측정을 요구한다. 비율이 좋지 않은 압축을 나타내면(즉, 원하는 레벨이 아니면) 양자화가 증가하며, 비율이 너무 놓은 압축을 나타내면 양자화가 감소한다. 비율제어결정은 엔코더와 디코더에서 동등하게 진행되어야만 한다.
엔코더와 디코더가 동일한 결정을 하는 것을 확인하는 한가지 방법은 시그널링(signaling)을 사용하는 것이다. 엔코더는 설정된 간격으로 비율을 측정하고 다음 간격에서의 사용을 위해 메모리에 양자화(Q)를 저장한다. 디코더는 각 간격 동안 메모리로부터 양자화를 용이하게 재현한다. 이것은 또 다른 메모리를 필요로 할 것이다. 예를들면, 2비트(+2,+1,0,-1에 의한 Q의 변화를 나타내거나 1,2,3,4로 Q를 저장하기 위한)의 로케이션 256개를 갖는 SRAM칩은 4096라인 화상의 매 16라인에 대해 양자화(Q)를 충분히 변화시킨다.
비율측정에는 많은 옵션이 있다. 도 34는 엔코더 및 디코더의 쌍을 나타낸다. 도 34에 나타낸 바와 같이, 엔코더/디코더의 쌍은 컨텍스트 모델(CM), 확률 예측 모델/기계(PEM:Probability Estimation Models/Machines), BG, 런카운트 리오더유니트(run count reorder unit), 인터리브된 워드 리오더유니트 및 쉬프터를 포함한다. 이것은 이미 잘 알려져 있는 것으로, 본 발명의 양수인에게 양도된 미국특허 5,381,145 및 5,583,500에 개시되어 있다.
비율측정은 디코더가 동일한 위치에서 측정하지 않는 경우 명백하게 되어야만 한다. 예를들면, 비율측정은 압축된 코드스트림의 한 부분으로서 디코더에 공급된다.
작은 원(도 34의 위치 2)으로 도시된 비율관리에 대한 다른 옵션이 엔코더에서 인터리브된 워드의 시작을 카운트한다. 또 다른 실시예에서, 이것은 비트발생단계(도 34의 위치 4) 후에 실행된다. 엔코더와 디코더가 동시에 부호어를 시작하기 때문에, 비율의 명백한 시그널링이 사용된다. 카운팅은 레지스터 및 부호어 길이들을 합하여 평균 부호어 길이를 결정하는 덧셈기로 이루어진 카운팅 하드웨어에 의해 실행된다. 비트의 평균 숫자의 카운팅과 결정을 실행하는 하드웨어는 이미 잘 알려져 있으며, 이를 도 34에 블록 3401로 표시하였다. 이 블록은 시스템에서 다른 위치(즉, 엔코더와 디코더에서의 위치 1,2,3,4)에서의 유사한 측정을 실행하는데 유용하다.
다른 옵션은 인터리브된 워드 리오더유니트(도 34의 위치 3)전, BG후에 종료된 부호어의 크기를 카운트하거나 디스크(도 34의 위치 1)에 실제적으로 기록되는 데이터의 양을 결정한다.
비율측정은 명백하게 될 수 있다. 엔코더와 디코더는 동일한 비율결정계산을 실행한다. 예를들면, 엔코더와 디코더는 새로운 부호어가 시작될 때마다 부호어의 평균 크기를 누적할 수 있다. 이것은 도 34의 위치 4로 표시되어 있다.(엔코더가 부호어의 종료까지 크기를 알 수 없기 때문에, 실제적인 크기는 사용될 수 없다.) 코드로 사용되는 R-코드의 크기가 R2(0)에서 R2(7)를 거쳐 변할 때, 평균 부호어 크기는 1에서 4.5비트로 변한다. 확률시험이 잘 이루어지면, 평균의 사용은 매우 정확하게 된다. 다른 경우에서, 최소 및 최대 부호어 길이의 차이 대 평균은 그리 크게 되지 않아서, 시험이 매우 유용하게 된다. Rz(k)의 평균크기는 k/2 + 1비트이다.
대부분의 경우에 있어서, 가장 중요한 데이터는 잘 압축되어 양자화(Q=1)가 필요없게 된다. 단지 "병리학적" 화상만이 양자화(Q〉1)를 요구할 것이다. 그러나, 양자화특성의 포함은 시스템이 병리학적 화상에 의해 파손되지 않는다는 이점이 있다.
엔코더비율제어의 다른 장점은 최대 대역폭이 초과될 때 덜 중요한 데이터의 엔코딩이 정지될 수 있다는 점이다. 이것은 엔코딩의 속도를 증가시키고 데이터를 출력시키는 전체 시간(즉, 프린트에 소요되는 전체 시간)을 감소시킨다.
양자화 효과의 트랙(track)을 유지하는 것은 매우 중요하다. 예를들면, 계수군에서의 가장 큰 계수의 한정은 양자화가 변할 때 항상 일관성을 유지해야만 한다. 또한, 양자화된 계수의 재구축(비트평면이 폐기될 때)은 가장 좋은 결과를 위해 폐기된 비트평면의 수를 고려할 필요가 있다.
고속 병렬 엔코딩 및 컨텍스트 모델
본 발명의 엔트로피 코딩부(entropy coding portion)는 2부분으로 구성된다. 첫째, 병렬로 작동하는 고속 코딩 코아(coding core)는 확률시험과 비트 발생을 제공한다. 둘째, 컨텍스트 모델은 코딩에 사용되는 컨텍스트를 제공한다.
원하는 속도를 얻기 위해 요구되는 코아의 수는 응용에 따라 달라진다.
엔트로피 코딩 시스템의 다른 부분은 본 발명의 계수용 컨텍스트 모델이다. 컨텍스트 모델의 실행시 가능한 교환의 수는 무수히 많다. 일 실시예에서, 본 발명은 저비용 하드웨어를 가지며, 본 발명의 고속 병렬 코더의 사용을 지원하는 병렬성을 제공하는 컨텍스트 모델을 제공한다. 컨텍스터 모델의 실시예는 상술하였다.
상기에서 웨이블릿 계수에 대한 컨텍스트 모델만 설명되어 있지만, 본 발명은 웨이블릿 계수를 제공하는 컨텍스트 모델에만 한정되는 것은 아니다. 예를들면, 비트평면 코딩모드가 2진 혹은 스폿 화상에 유용하다면, 1996년 5월 3일 출원된 "Compression and Decompression with Wavelet Style and Binary Style Including Quantization by Device Dependent Parser"의 제목인 미국특허 출원번호 08/642,518 및 1996년 5월 3일 출원된 "Compression/Decompression Using Reversible Embedded Wavelets"의 제목인 미국특허 출원번호 08/643,268에 개시된 것과 같은 부가적인 컨텍스트 모델이 사용될 수 있다.
병렬성
일 실시예에서, 4개의 고속 코딩코아는 계수당 8비트를 엔코딩/디코딩하는데 사용되는데, 여기서 계수의 범위는 8-12비트이다(가역 색공간이 사용되는 경우에는 13비트). 일 실시예에서, 코어는 4성분의 각각에 할당되어 병렬성과 데이터 흐름을 용이하게 한다. 각 계수는 엔코딩/디코딩 비트(미리 보기 등을 포함하는)에 대해 16사이클까지 사용될 수 있다.
본 발명은 코아가 성공적인 미리보기에 의해 무익하게 되거나 다른 코어가 첫 번째 "온"비트 후에 부호 비트(sign bit)를 취급하는 경우에도, 각 성분에 대해 코아를 동시성으로 유지한다. 컨텍스트 모델이 가동하는 전체 시간은 데이터, 특히 미리보기의 효과 및 더 좁은 범위로는 첫 번째 "온"비트에 따라 변하게 된다.
본 발명은 버퍼, 웨이블릿 변환 유니트, 코더를 갖는 시스템으로 압축 그리고/또는 복원을 수행함에 있어서 웨이블릿 변환 유니트는 버퍼에 저장된 화소에 대하여 웨이블릿 변환을 수행하고 코더는 변환된 화소를 부호화하므로써 빠른 유손실/무손실압축을 제공할 수 있는 효과가 있다.
본 발명은 비싼 RAM대신 값싼 하드디스크 기술을 사용할 수 있는 시스템을 구현하여 경제성 있는 시스템을 제공할 수 있는 효과가 있다.
또한 본 발명은 하드디스크에 비율을 매칭시키고 프린트 엔진과 같은 시스템을 구현하는 다른 부분의 대역폭에 하드디스크를 매칭시킬 수 있는 효과가 있다.
본 발명은 또한 압축 그리고 복원시간이 RAM 속도보다 많이 늦지 않도록 RAM을 사용하여 RAM에 비율 매칭을 수행할 수 있는 효과가 있다.

Claims (78)

  1. 버퍼;
    버퍼에 연결되는 입력을 갖고 버퍼에 저장된 화소에 대하여 웨이블릿 변환을 수행하며 출력에 계수를 발생하는 웨이블릿 변환 유니트;
    웨이블릿 변환 유니트에 연결되어 웨이블릿 변환 유니트의 웨이블릿 변환된 화소의 비트평면과 버퍼로부터 수신된 웨이블릿 변환된 화소의 저장된 비트평면을 코딩하는 코더를 포함하여 구성되는 것을 특징으로 하는 데이터 압축장치.
  2. 제1항에 있어서 버퍼는,
    적어도 하나의 화소 대역을 저장하는 대역 버퍼를 포함하여 구성되는 것을 특징으로 하는 장치.
  3. 제 1항에 있어서 코더는,
    컨텍스트 모델;
    병렬 엔트로피 코더 엔코더를 포함하여 구성되며,
    가장 중요한 데이터는 임베디드(embedded)되지 않고, 버퍼링 없이 계수 오더로 부호화되고, 상기 가장 중요한 데이터 보다 덜 중요한 데이터의 부분은 버퍼링되고 임베디드되며 중요도의 오더로 메모리에 기록되는 것을 특징으로 하는 장치.
  4. 제1항에 있어서, 엔코더는 고속 병렬 코더를 포함하여 구성되는 것을 특징으로 하는 장치.
  5. 제1항에 있어서, 엔코더는 QM-코더를 포함하여 구성되는 것을 특징으로 하는 장치.
  6. 제1항에 있어서, 엔코더는 유한 상태 기계 코더를 포함하여 구성되는 것을 특징으로 하는 장치.
  7. 제1항에 있어서, 부호화 데이터 인터페이스를 추가로 포함하는 것을 특징으로 하는 장치.
  8. 버퍼로부터 수신된 화소 정보를 웨이블릿 변환하고, 적어도 하나의 계수 비트평면이 가역 웨이블릿 변환 화소를 나타내는 단계;
    버퍼의 화소를 부호화된 비트평면으로 대체하는 단계; 및
    버퍼에 저장된 비트평면을 부호화하는 단계를 포함하여 구성된 정보를 압축하는 방법.
  9. 대역버퍼;
    계수가 역변환 동작을 거치는 다수의 코딩 유니트;
    출력 장치에 출력되는 화소를 저장하는 적어도 하나의 코딩 유니트;
    이전에 역 변환된 계수에 해당하는 화소가 출력 장치에 송신되는 적어도 하나의 코딩 유니트; 및
    버퍼에 연결된 복원기를 포함하여 구성되며,
    복원기는 압축된 데이터를 변환된 계수로 복원하고, 변환된 계수를 대역 버퍼에 기록하며, 변환된 계수를 대역 버퍼로부터 다시 읽고, 화소값을 발생하기 위하여 대역 버퍼로부터 다시 읽어낸 변환된 계수에 대하여 역변환을 수행하며, 화소값을 대역버퍼에 기록하는 것을 특징으로 하는 데이터 복원장치.
  10. 제9항에 있어서, 복원기는 저장영역으로부터 압축된 데이터를 읽는 것을 특징으로 하는 장치.
  11. 제10항에 있어서, 저장영역은 하드디스크를 포함하여 구성되는 것을 특징으로 하는 장치.
  12. 제9항에 있어서, 대역 버퍼에 연결된 프린트 엔진을 추가로 포함하는 것을 특징으로 하는 장치.
  13. 계수를 가장 중요한 데이터와 상기 가장 중요한 데이터 보다 덜 중요한 데이터로 분할하는 단계;
    상기 가장 중요한 데이터를 컨텍스트 모델로 송신하여 즉시 계수 오더로 코딩하는단계;
    상기 덜 중요한 데이터와 다수의 신호 비트를 메모리에 저장하는 단계; 및
    계수 세트에 있는 모든 계수의 가장 중요한 데이터를 코딩한 후, 덜 중요한 데이터를 코딩하고 다수의 신호 비트에 부분적으로 기초하여 오더에 의하여 임베딩하는 단계를 포함하여 구성되는 것을 특징으로 하는 데이터 압축방법.
  14. 제13항에 있어서, 신호 비트는 첫 번째 비트와 두 번째 비트를 포함하여 구성되는 것을 특징으로 하는 방법.
  15. 제13항에 있어서, 신호 비트의 첫 번째는 계수의 덜 중요한 데이터의 첫 번째 비트가 헤드 비트 또는 테일 비트인지를 나타내고, 신호 비트의 첫 번째가 계수의 덜 중요한 데이터의 첫 번째 비트가 헤드 비트임을 나타내면 신호 비트의 두 번째는 부호 비트를 나타내는 것을 특징으로 하는 방법.
  16. 제13항에 있어서, 신호 비트는 상기 덜 중요한 데이터에 인접하여 저장되는 것을 특징으로 하는 방법.
  17. 입력 데이터를 수신하도록 연결된 입력과 짝수와 홀수 샘플을 전송하는 첫 번째와 두 번째 출력을 갖는 입력 버퍼;
    짝수와 홀수 샘플을 수신하도록 연결되어 계수를 발생하는 첫 번째 레벨 변환 유니트-수평 저역통과 계수와 수직 고역 통과 계수는 정 변환의 출력임-;
    첫 번째 레벨 변환 유니트에 의하여 발생된 ss 계수를 수신하도록 연결된 첫 번째 입력과 상위 레벨 변환 필터링으로부터 ss 계수를 수신하는 두 번째 입력을 갖는 메모리;
    메모리에 연결되는 첫 번째 입력을 갖고 상위 레벨 필터링을 위하여 ss 계수를 오더링하는 오더 유니트;
    오더 유니트에 연결되어 다수의 변환 레벨을 적용하며, 오더 유니트로부터 수신된 ss 계수의 상위 레벨 변환을 수행하고, 메모리의 두 번째 입력과 오더 유니트의 두 번째 입력에 다시 인가되는 ss 계수값을 발생하는 첫 번째 필터 유니트을 포함하여 구성되는 것을 특징으로 하는 정변환장치.
  18. 제17항에 있어서, 첫 번째 레벨 변환은 입력 데이터의 2*2블록에 대하여 동작하는 것을 특징으로 하는 장치.
  19. 제17항에 있어서, 첫 번째 레벨 변환은,
    첫 번째 레벨 수평 변환을 수행하며 첫 번째 출력과 두 번째 출력을 보유하는 두 번째 필터 유니트;
    두 번째 필터의 첫 번째 출력에 연결되는 첫 번째 단일 지연;
    두 번째 필터의 두 번째 출력에 연결되는 두 번째 단일 지연;
    두 번째 필터의 두 번째 출력에 연결되는 더블 지연;
    첫 번째 단일 지연과 더블 지연의 출력을 수신하도록 연결되는 첫 번째 멀티플렉서(MUX);
    첫 번째 필터 유니트의 출력과 두 번째 단일 지연의 출력을 수신하도록 연결되는 두 번째 MUX; 및
    첫 번째와 두 번째 MUX의 출력을 수신하도록 연결되어 첫 번째 레벨 수직 변환을 수행하는 세 번째 필터를 포함하여 구성되는 것을 특징으로 하는 장치.
  20. 압축기; 및
    압축기에 연결된 동작공간 메모리로 구성되며,
    동작공간 메모리는 화상과 같은 크기이고 압축기는 화상의 화소보다 큰 계수를 사용하여 화상을 엔코딩하는 공간 메모리를 사용하는 것을 특징으로 하는 화상압축장치.
  21. 가장 중요한 데이터와 상기 가장 중요한 데이터보다 덜 중요한 데이터를 포함하는 정보를 코딩하는 방법에 있어서,
    상기 가장 중요한 데이터를 코딩하는 단계;
    제로 헤드 비트로 모두 구성되지 않은 각 계수에 대하여 가장 중요한 데이터보다 덜 중요한 데이터의 첫 번째 비트평면의 위치를 코딩하는 단계; 및
    제로 헤드 비트로 모두 구성되지 않은 상기 덜 중요한 데이터의 각 비트평면을 코딩하는 단계를 포함하여 구성된 정보를 코딩하는 방법.
  22. 제21항에 있어서, 정보는 웨이블릿 계수를 포함하여 구성되는 것을 특징으로 하는 방법.
  23. 제21항에 있어서, 첫 번째 덜 중요한 비트평면의 위치를 코딩하는 단계는 덜 중요한 데이터의 전체 비트평면에 대한 미리보기를 수행하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.
  24. 제21항에 있어서, 상기 가장 중요한 데이터를 코딩하는 단계는,
    각 트리에 대하여, ss 계수를 코딩한 후 가장 중요한 데이터에 대하여 미리보기를 수행하는 단계; 및
    각 논-SS 계수에 대하여, 데이터를 갖는 각 비트평면의 헤드 비트 또는 테일 비트를 코딩한 후 계수가 제로가 아니면 부호 비트를 코딩하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.
  25. 제24항에 있어서, 미리보기는 트리 미리보기를 포함하며, 미리보기를 수행하는 단계는 ss-계수를 코딩하는 단계와 전체 트리에 대하여 논-제로 헤드 비트를 갖는 첫 번째 제로 비트평면을 코딩하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.
  26. 제24항에 있어서, 가장 중요한 데이터는 한 번에 하나의 웨이블릿 트리로 처리되는 것을 특징으로 하는 방법.
  27. 제21항에 있어서, 미리보기는 웨이블릿 트리의 모든 논-ss 계수에 대하여 모두 제로 헤드 비트를 포함하는 비트평면을 결정하는 것을 특징으로 하는 방법.
  28. 제27항에 있어서, 개별적으로 부호화할 첫 번째 비트평면을 식별하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  29. 제28항에 있어서, 개별적으로 부호화할 첫 번째 비트평면을 식별하는 단계는 첫 번째 비트를 사용하여 두 번째 분해의 모든 논-ss 계수는 제로임을 나타내는 단계와 두 번째 비트를 사용하여 첫 번째 분해의 모든 논-ss 계수가 제로임을 나타내는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.
  30. 제21항에 있어서, 상기 가장 중요한 데이터를 코딩하는 단계는,
    각 트리에 대하여, ss 계수를 코딩한 후 상기 각 트리의 모든 논-ss 계수에 대하여 모두 제로 헤드 비트인 비트평면을 결정하는 미리보기를 수행하고 이어서 전체 트리의 가장 중요한 데이터가 제로인지의 여부를 결정하는 단계;
    전체 트리의 가장 중요한 데이터가 제로가 아닌 경우 트리의 모든 계수에 관하여, 모든 비트평면에 대해 트리의 첫 번째 논-ss 계수이고 데이터를 보유하는 첫 번째비트평면으로 시작하는 현재 계수의 비트를 코딩하는 단계; 및
    현재 계수가 제로가 아니면 부호 비트를 코딩하는 단계로 이루어진 것을 특징으로 하는 방법.
  31. 제21항에 있어서, 상기 덜 중요한 데이터를 코딩하는 단계는 각 트리의 각 계수에 대하여,
    미리보기 구간의 스타트에 있으면 미리보기를 수행하는 단계;
    미리보기가 액티브하지 않으면 헤드 비트 또는 테일 비트를 코딩하는 단계; 및
    첫 번째 온 비트가 발생하고 미리보기가 액티브하지 않으면 부호 비트를 코딩하는 단계로 이루어진 것을 특징으로 하는 방법.
  32. 가장 중요한 데이터와 상기 가장 중요한 데이터 보다 덜 중요한 데이터를 포함하는 정보를 코딩하는 장치에 있어서,
    상기 가장 중요한 데이터를 코딩하는 수단;
    제로 헤드 비트로 모두 구성되지 않은 각 계수에 대하여 가장 중요한 데이터 보다 덜 중요한 데이터에서 첫 번째 비트평면의 위치를 코딩하는 수단; 및
    제로 헤드 비트로 모두 구성되지 않은 상기 덜 중요한 데이터의 각 비트평면을 코딩하는 수단을 포함하여 구성되는 것을 특징으로 하는 정보를 코딩하는 장치.
  33. 제32항에 있어서, 정보는 웨이블릿 계수를 포함하여 구성되는 것을 특징으로 하는장치.
  34. 제32항에 있어서, 첫 번째 덜 중요한 비트평면의 위치를 코딩하는 수단은 덜 중요한 데이터의 전체 비트평면에 대한 미리보기를 수행하는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.
  35. 제32항에 있어서, 상기 가장 중요한 데이터를 코딩하는 수단은,
    각 트리에 대하여 ss 계수를 코딩하는 수단;
    각 트리에 대하여 가장 중요한 데이터의 미리보기를 수행하는 수단;
    각 트리의 각 논-제로 계수에 대하여 데이터를 갖는 각 비트평면에 대한 헤드 비트 또는 테일 비트를 코딩하는 수단;
    각 트리의 각 논-제로 계수에 대하여 계수가 제로가 아니면 부호 비트를 코딩하는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.
  36. 제35항에 있어서,
    미리보기는 트리 미리보기를 포함하고,
    미리보기를 수행하는 수단은 SS-계수를 코딩하는 수단과 전체 트리에 대하여 논-제로 헤드 비트를 갖는 첫 번째 제로 비트평면을 코딩하는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.
  37. 제35항에 있어서, 가장 중요한 데이터는 한 번에 하나의 웨이블릿 트리로 처리되는 것을 특징으로 하는 장치.
  38. 제32항에 있어서, 미리보기를 수행하는 수단은 웨이블릿 트리에서 모든 논-ss 계수에 대하여 모든 제로 헤드 비트를 포함하는 비트평면을 결정하는 것을 특징으로 하는 장치.
  39. 제38항에 있어서, 개별적으로 부호화할 첫 번째 비트평면을 식별하는 수단을 추가로 포함하는 것을 특징으로 하는 장치.
  40. 제39항에 있어서, 개별적으로 부호화할 첫 번째 비트평면을 식별하는 수단은 첫 번째 비트를 사용하여 두 번째 분해의 모든 논-ss 계수가 제로임을 나타내는 수단과 두 번째 비트를 사용하여 첫 번째 분해의 모든 논-ss 계수가 제로임을 나타내는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.
  41. 제32항에 있어서, 상기 가장 중요한 데이터를 코딩하는 수단은,
    각 트리에 대하여 ss 계수를 코딩하는 수단;
    상기 각 트리에서 모든 논-SS 계수에 대하여 모두 제로 헤드 비트인 비트평면을 결정하는 미리보기를 수행하는 수단;
    각 트리에 대하여 전체 트리의 가장 중요한 데이터가 제로인지의 여부를 결정하는수단;
    전체 트리의 가장 중요한 데이터가 제로가 아니면 트리의 모든 계수에 관하여, 비트평면에 대해 트리에서 첫 번째 논-ss 계수이고 데이터를 보유하는 첫 번째 비트평면으로 시작하는 현재 계수의 비트를 코딩하는 수단; 및
    전체 트리의 가장 중요한 데이터가 제로가 아니면 트리의 모든 계수에 대하여 현재 계수가 제로가 아니면 부호 비트를 코딩하는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.
  42. 제32항에 있어서, 상기 덜 중요한 데이터를 코딩하는 수단은,
    미리보기 구간의 스타트에 있으면 각 트리의 각 계수에 대하여 미리보기를 수행하는 수단;
    미리보기가 액티브하지 않으면 각 트리의 각 계수에 대하여, 헤드 비트 또는 테일 비트를 코딩하는 수단;
    첫 번째 온 비트가 발생하고 미리보기가 액티브하지 않으면 각 트리에 대하여 각 계수의 부호 비트를 코딩하는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.
  43. 소정수의 계수를 조사하는 단계;
    소정수의 계수에서 모든 헤드 비트가 부호화될 때까지 사이클마다 하나씩 모든 헤드 비트를 엔트로피 코딩하는 단계; 및
    동일 사이클에서 소정수의 계수의 부호 비트와 테일 비트를 코딩하는 단계로 구성된 정보를 m-ary 코딩하는 방법.
  44. IC 칩과 메모리 사이에 화소 데이터를 전송하는 화소 데이터 인터페이스;
    화소 데이터 인터페이스에 연결되어 화소 데이터 인터페이스를 경유하여 메모리로 그리고 메모리로부터 정보를 전송하는 가역 웨이블릿 변환;
    가역 웨이블릿 변환에 연결되어 그곳으로부터 제공되는 데이터를 코딩하기 위한 컨텍스트를 제공하는 컨텍스트 모델; 및
    컨텍스트 모델에 의하여 제공되는 컨텍스트에 기초하여 가역 웨이블릿 변환에 의하여 발생되는 계수를 부호화하는 엔코더로 구성되며,
    상기 화소데이터 인터페이스, 가역웨이블릿변환, 컨텍스트모델 및 엔코더는 한 개의 집적회로칩으로 이루어진 것을 특징으로 하는 데이터압축장치.
  45. 제44항에 있어서, 코딩없이 변환으로부터 메모리로 계수를 전송하도록 연결되는 계수 데이터 인터페이스를 추가로 포함하는 것을 특징으로 하는 장치.
  46. 제44항에 있어서, 계수 데이터 인터페이스는 엔코딩을 위하여 계수를 메모리로부터 컨텍스트 모델로 전송하는 것을 특징으로 하는 장치.
  47. 제44항에 있어서, 엔트로피 부호화 데이터를 메모리에 제공하는 부호화 데이터 인터페이스를 추가로 포함하는 것을 특징으로 하는 장치.
  48. 제47항에 있어서, 부호화된 데이터를 복호화하는 디코더를 추가로 포함하는 것을 특징으로 하는 장치.
  49. 제46항에 있어서, 디코더에 디코딩을 위한 엔트로피 부호화된 데이터를 제공하는 부호화 데이터 인터페이스를 추가로 포함하는 것을 특징으로 하는 장치.
  50. 제44항에 있어서, 화소 데이터 인터페이스와 가역 웨이블릿 변환 사이에 연결되어 가역 색공간 변환을 수행하는 가역 색공간 변환기를 추가로 포함하는 것을 특징으로 하는 장치.
  51. 부호화된 데이터를 수신하도록 연결되고 확률 예측에 기초하여 부호화된 데이터를 복호화하며 현재 라인으로부터 복호화된 비트를 발생하는 적어도 하나의 비트 발생기;
    상기 적어도 하나의 비트 발생기에 연결되어 현재 라인으로부터의 복호화된 비트에 기초하여 확률 예측을 제공하는 확률 예측 기계; 및
    복호화된 비트에 기초하여 다수의 컨텍스트중에서 선택되는 상기 확률 예측 기계에 연결되어 부분적인 컨텍스트 어드레스에 기초하여 다수의 컨텍스트를 확률 예측 기계에 제공하는 컨텍스트 모델을 포함하여 구성된 부호화된 데이터를 디코딩하는 디코더.
  52. 제51항에 있어서, 확률 예측 기계에 연결되어 데이터는 이미 확률 예측 기계에서 얻을 수 있음을 나타내는 이미 독취된 어드레스를 검출하며 어드레싱된 부분적인 컨텍스트에 기초하여 데이터가 이미 확률 예측 기계에 있음을 나타내는 표시를 확률 예측 기계에 발생시키는 동일 어드레스 표시기를 추가로 포함하는 것을 특징으로 하는 디코더.
  53. 제51항에 있어서, 컨텍스트 모델에 연결되어 부분적인 컨텍스트 어드레스를 제공하는 다수의 쉬프트 레지스터를 추가로 포함하는 것을 특징으로 하는 디코더.
  54. 제51항에 있어서, 다수의 상기 라인을 제공하도록 연결된 라인 버퍼를 추가로 포함하는 것을 특징으로 하는 디코더.
  55. 가장 중요한 데이터와 상기 가장 중요한 데이터 보다 덜 중요한 데이터를 수신하도록 연결되어 어떤 비트평면이 데이터를 갖는지를 결정하며, 상기 덜 중요한 데이터를 처리할 때 전체 코딩 유니트가 사용하는 첫 번째 온 비트로 비트평면을 표시하는 첫 번째 비트평면 유니트;
    상기 덜 중요한 데이터와 가장 중요한 데이터를 수신하도록 연결되어 상기 덜 중요한 데이터의 신호 정보를 발생하는 비교 메카니즘;
    부호 비트, 가장 중요한 데이터, 데이터를 갖는 첫 번째 비트평면의 표시를 수신하도록 연결되어 조절정보를 제공하기 위해 계수를 지연시키는 메모리;
    메모리에 연결되어 부호 비트의 컨텍스트를 제공하는 첫 번째 컨텍스트 모델;
    메모리와 상기 가장 중요한 데이터에 연결되어 헤드 비트의 컨텍스트를 제공하는 두 번째 컨텍스트 모델; 및
    메모리와 상기 가장 중요한 데이터에 연결되어 테일 비트의 컨텍스트를 제공하는 세 번째 컨텍스트 모델로 구성된 컨텍스트 모델.
  56. 제55항에 있어서, 입력 데이터를 더 중요한 데이터와 덜 중요한 데이터로 분리하는 분리 메카니즘을 추가로 포함하는 것을 특징으로 하는 컨텍스트 모델.
  57. 제56항에 있어서, 상기 분리 메카니즘은 배럴 쉬프터로 이루어진 것을 특징으로 하는 컨텍스트 모델.
  58. 제57항에 있어서, 배럴 쉬프터는 양자화 레벨에 기초하여 데이터를 쉬프트하는 것을 특징으로 하는 컨텍스트 모델.
  59. 제55항에 있어서, 비교 메카니즘은,
    상기 가장 중요한 데이터가 제로와 같은 지의 여부를 결정하여 테일 비트가 이미 발생되었음을 나타내며, 출력이 테일 온 비트인 첫 번째 비교 유니트;
    상기 가장 중요한 데이터가 1과 같은 지의 여부를 결정하며, 상기 가장 중요한 데이터가 1과 같은 경우 제로를 출력하는 두 번째 비교 유니트; 및
    두 번째 비교 유니트의 출력과 부호 비트를 수신하도록 연결되고 선택입력이 첫 번째 상태에 있으면 첫 번째 테일 비트를 출력하고 선택입력이 두 번째 상태에 있으면 부호를 출력하는 멀티플렉서로 이루어진 것을 특징으로 하는 컨텍스트 모델.
  60. 제58항에 있어서, 선택입력은 첫 번째 비교 유니트의 테일 온 출력을 포함하여 구성되는 것을 특징으로 하는 컨텍스트 모델.
  61. 제58항에 있어서, 첫 번째와 두 번째 비교 유니트중 적어도 하나는 비트 비교기를 포함하여 구성되는 것을 특징으로 하는 컨텍스트 모델.
  62. 제55항에 있어서, 첫 번째 비트평면 유니트는,
    계수와 피이드백을 수신하도록 연결되는 오아(OR)게이트;
    오아게이트의 출력을 수신하도록 연결되는 레지스터; 및
    레지스터의 출력을 수신하도록 연결되어 1을 갖는 계수의 첫 번째 비트평면을 기록하는 우선순위 엔코더로 이루어진 것을 특징으로 하는 컨텍스트 모델.
  63. 제62항에 있어서, 레지스터는 코딩 유니트의 시작시 레지스터의 내용을 리세트하는 리세트 입력을 포함하여 구성되는 것을 특징으로 하는 컨텍스트 모델.
  64. 제62항에 있어서, 리세트 입력은 각 트리의 시작시 레지스터의 내용을 또한 리세트하는 것을 특징으로 하는 컨텍스트 모델.
  65. 압축을 수행하는 방법에 있어서,
    엔코딩 속도를 식별하기 위하여 코드워드의 평균길이를 결정하는 단계; 및
    희망하는 압축량에 기초하여 압축 속도를 조정하는 단계로 구성된 압축을 실행하는 방법.
  66. 제65항에 있어서,
    엔코딩 속도가 압축이 첫 번째 희망 레벨의 이하임을 나타내면 양자화 레벨의 양을 증가시키는 단계; 및
    엔코딩 속도가 압축이 두 번째 희망 레벨의 이상임을 나타내면 양자화 레벨의 양을 감소시키는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  67. 제66항에 있어서, 첫 번째 희망 레벨과 두 번째 희망 레벨이 동일하지 않은 것을 특징으로 하는 방법.
  68. 제65항에 있어서, 코드워드의 평균길이를 결정하는 단계는 비트 발생이후에 수행되는 것을 특징으로 하는 방법.
  69. 제65항에 있어서, 디코더에 새로운 압축 속도의 신호를 인가하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  70. 제69항에 있어서, 신호를 인가하는 것이 명시적인 것을 특징으로 하는 방법.
  71. 제69항에 있어서, 신호를 인가하는 것이 묵시적인 것을 특징으로 하는 방법.
  72. 컨텍스트 모델;
    컨텍스트 모델에 연결되는 확률 예측 기계;
    확률 예측 기계에 연결되는 비트 발생기; 및
    비트 발생기의 출력에 연결되어 평균 코드워드 길이를 결정하므로써 엔코딩 비율을 제어하는 엔코더 비율 제어로 구성된 데이터압축장치.
  73. 제72항에 있어서, 엔코더 비율 제어는 양자화를 조정하는 것을 특징으로 하는 장치.
  74. 제72항에 있어서, 새로운 양자화 레벨에 대하여 디코더에 신호를 인가하는 신호 블록을 추가로 포함하는 것을 특징으로 하는 장치.
  75. 제72항에 있어서, 압축된 비트 스트림에 연결된 엔코더의 압축된 데이터 스트림 출력에 대한 헤더 데이터를 발생하고 디코더에 새로운 양자화 레벨을 표시하는 신호 블록을 추가로 포함하는 것을 특징으로 하는 장치.
  76. 제72항에 있어서, 엔코더 비율 제어는 디코더에 의한 계속 사용에 필요한 양자화 레벨의 표시를 저장하는 것을 특징으로 하는 장치.
  77. 메모리로부터 데이터의 첫 번째 부분을 읽는 단계;
    변환된 계수 세트의 하위 오더 비트평면에 있는 적은 데이터로 변환된 비트평면을 보상하기 위하여 첫 번째 양의 데이터를 읽는 동안 첫 번째보다 많은 두 번째 양의 데이터를 메모리에 기록하는 단계로 이루어진 변환된 계수 세트에 대한 가장 중요치 않은 부분의 데이터 비트평면을 처리하는 방법
  78. 제 77항에 있어서, 가장 중요치 않은 청크(chunk) 계수를 저장하는데 필요한 비트는 비트평면수가 감소함에 따라 증가하는 것을 특징으로 하는 방법.
KR1019980015709A 1997-05-01 1998-04-30 가역임베디드웨이블릿을이용한데이터압축/복원장치및방법 KR100317792B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US84707497A 1997-05-01 1997-05-01
US8/847,074 1997-05-01
US08/847,074 1997-05-01

Publications (2)

Publication Number Publication Date
KR19980086694A KR19980086694A (ko) 1998-12-05
KR100317792B1 true KR100317792B1 (ko) 2002-02-19

Family

ID=25299688

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980015709A KR100317792B1 (ko) 1997-05-01 1998-04-30 가역임베디드웨이블릿을이용한데이터압축/복원장치및방법

Country Status (6)

Country Link
JP (2) JP4148429B2 (ko)
KR (1) KR100317792B1 (ko)
DE (1) DE19819405B4 (ko)
FR (1) FR2763766B1 (ko)
GB (1) GB2325584B (ko)
HK (1) HK1023470A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101129655B1 (ko) * 2002-09-17 2012-03-28 블라디미르 세페르코빅 압축비가 높고 최소의 자원을 필요로 하는 고속 코덱

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141446A (en) * 1994-09-21 2000-10-31 Ricoh Company, Ltd. Compression and decompression system with reversible wavelets and lossy reconstruction
US6201897B1 (en) * 1998-11-09 2001-03-13 Earth Resource Mapping Transformation and selective inverse transformation of large digital images
DE10008055A1 (de) * 2000-02-22 2001-08-30 Infineon Technologies Ag Verfahren zur Kompression von Daten
US6633688B1 (en) 2000-04-28 2003-10-14 Earth Resource Mapping, Inc. Method system and apparatus for providing image data in client/server systems
KR20030021009A (ko) * 2001-09-05 2003-03-12 김효준 블록 기반 제로트리와 사진나무구조를 이용한 영상 압축방법
KR100451584B1 (ko) * 2001-12-20 2004-10-08 엘지전자 주식회사 웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 및복호화 장치
US7460722B2 (en) 2002-01-11 2008-12-02 Canon Kabushiki Kaisha Encoding of digital data with determination of sample path
FR2834832B1 (fr) * 2002-01-11 2005-05-20 Canon Kk Codage de donnees numeriques avec calcul d'histogramme
RU2486245C2 (ru) 2007-10-15 2013-06-27 Чугаи Сейяку Кабусики Кайся Способ получения клетки, способной продуцировать гетеропротеины с высоким выходом
CN101981592B (zh) * 2007-11-30 2013-02-06 三菱电机株式会社 图像和视频的内容感知大小调整
KR101681059B1 (ko) * 2009-09-22 2016-12-01 삼성전자주식회사 밝기 신호와 색차 신호간의 크로스토크를 최소화하는 비디오 신호 생성 장치 및 방법
JP5298381B2 (ja) * 2011-12-20 2013-09-25 株式会社アクセル 画像処理装置及び画像処理方法
US9813718B2 (en) * 2013-10-03 2017-11-07 Samsung Display Co., Ltd. Apparatus and method for compact bit-plane data compression

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3639753A1 (de) * 1986-11-21 1988-06-01 Inst Rundfunktechnik Gmbh Verfahren zum uebertragen digitalisierter tonsignale
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding
US5638498A (en) * 1992-11-10 1997-06-10 Adobe Systems Incorporated Method and apparatus for reducing storage requirements for display data
US5583500A (en) * 1993-02-10 1996-12-10 Ricoh Corporation Method and apparatus for parallel encoding and decoding of data
US5381145A (en) * 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
DE19549491C2 (de) * 1994-02-23 2003-08-07 Ricoh Kk Entropie-Codierer
US5748786A (en) * 1994-09-21 1998-05-05 Ricoh Company, Ltd. Apparatus for compression using reversible embedded wavelets
GB2293734B (en) * 1994-09-20 1997-04-09 Ricoh Kk Method for compression using reversible embedded wavelets
GB2302245B (en) * 1994-09-20 1997-10-22 Ricoh Kk Wavelet transform filter
JP3302229B2 (ja) * 1994-09-20 2002-07-15 株式会社リコー 符号化方法、符号化/復号方法及び復号方法
US5966465A (en) * 1994-09-21 1999-10-12 Ricoh Corporation Compression/decompression using reversible embedded wavelets
US5867602A (en) * 1994-09-21 1999-02-02 Ricoh Corporation Reversible wavelet transform and embedded codestream manipulation
US6195465B1 (en) * 1994-09-21 2001-02-27 Ricoh Company, Ltd. Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
US5881176A (en) * 1994-09-21 1999-03-09 Ricoh Corporation Compression and decompression with wavelet style and binary style including quantization by device-dependent parser
US5731988A (en) * 1995-05-08 1998-03-24 Richo Company, Ltd. Method and apparatus for reversible color conversion

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101129655B1 (ko) * 2002-09-17 2012-03-28 블라디미르 세페르코빅 압축비가 높고 최소의 자원을 필요로 하는 고속 코덱

Also Published As

Publication number Publication date
FR2763766B1 (fr) 2002-10-25
GB9808412D0 (en) 1998-06-17
JPH10304368A (ja) 1998-11-13
KR19980086694A (ko) 1998-12-05
GB2325584B (en) 2000-03-29
GB2325584A (en) 1998-11-25
DE19819405A1 (de) 1998-11-26
HK1023470A1 (en) 2000-09-08
JP2007267384A (ja) 2007-10-11
DE19819405B4 (de) 2006-06-29
FR2763766A1 (fr) 1998-11-27
JP4148429B2 (ja) 2008-09-10

Similar Documents

Publication Publication Date Title
US6549666B1 (en) Reversible embedded wavelet system implementation
US6229927B1 (en) Reversible embedded wavelet system implementation
US5881176A (en) Compression and decompression with wavelet style and binary style including quantization by device-dependent parser
US5966465A (en) Compression/decompression using reversible embedded wavelets
US6757437B1 (en) Compression/decompression using reversible embedded wavelets
JP3693988B2 (ja) 通信管理システム及び通信管理方法
JP4025847B2 (ja) 符号化装置
JP2007267384A (ja) 圧縮装置及び圧縮方法
US6049330A (en) Method and apparatus for optimizing storage of compressed images in memory
JP2005218124A (ja) データ圧縮システム
GB2341034A (en) Reversible wavelet system implementation
AU2004218686B2 (en) A Combined Spatial and Transform Domain Method for Compressing Image Data into a Fixed Size Buffer
Mandal Digital image compression techniques
Shum et al. Image Compression Techniques

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

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20131121

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee