KR19980086694A - Reversible Embedded Wavelet System - Google Patents

Reversible Embedded Wavelet System Download PDF

Info

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

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/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/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/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

Abstract

압축 그리고/또는 복원을 수행하는 방법과 장치를 설명한다. 한 실시예에서, 본 발명은 버퍼, 웨이블릿 변환 유니트, 코더를 갖는 시스템을 포함한다. 웨이블릿 변환 유니트는 버퍼에 연결되는 입력을 갖고 버퍼에 저장된 화소에 대하여 웨이블릿 변환을 수행하며 출력에 계수를 발생한다. 코더는 웨이블릿 변환 유니트에 연결되어 버퍼로부터 수신된 변환된 화소를 부호화한다.Compression, and / or restoration of an image. In one embodiment, the present invention includes a system having a buffer, a wavelet transform unit, and a coder. The wavelet transform unit has an input connected to the buffer, performs wavelet transform on the pixels stored in the buffer, and generates coefficients on the output. The coder is connected to the wavelet transform unit to encode the transformed pixel received from the buffer.

Description

가역 임베디드 웨이블릿 시스템Reversible Embedded Wavelet System

본 발명은 데이터의 압축과 복원 시스템에 관한 것으로, 특히 압축/복원 시스템에서 무손실 그리고 유손실 데이터의 부호화와 복호화 장치 및 방법에 관한 것이다.The present invention relates to a data compression and decompression system, and more particularly, to an apparatus and method for encoding and decoding lossless and lossy data in a compression / decompression system.

이 출원은 1996년 5월 3일에 출원된 Compression/Decompression Using Reversible Embedded Wavelet의 제목인 출원번호 08/643,268의 CIP(continuation-in-part)이고, 이것은 1995년 6월 30일에 출원된 Reversible Wavelet Transform and Embedded Codestream Manipulation의 제목인 출원번호 08/498,036의 CIP이며, 이것은 1994년 9월 20일에 출원된 Apparatus for Compression Using Reversible Embedded Wavelets의 제목인 출원번호 08/310,146의 CIP이다.This application is a continuation-in-part (CIP) application number 08 / 643,268, entitled Compression / Decompression Using Reversible Embedded Wavelet, filed May 3, 1996, which is incorporated herein by reference in its entirety for Reversible Wavelet No. 08 / 498,036, entitled Transform and Embedded Codestream Manipulation, which is the CIP of Application No. 08 / 310,146, entitled Apparatus for Compression Using Reversible Embedded Wavelets, filed September 20, 1994.

데이터 압축은 많은 양의 데이터를 저장하고 전송하는데 매우 유용한 툴(tool)이다. 예를들면, 원고의 팩시밀리 전송과 같은 화상 전송에 요구되는 시간은 압축을 사용하여 화상을 재생하는데 요구되는 비트(bit)의 수를 줄이면 급격히 감소한다.Data compression is a very useful tool for storing and transmitting large amounts of data. For example, the time required for image transmission such as facsimile transmission of manuscripts decreases sharply when the number of bits required to reproduce an image is reduced using compression.

많은 데이터 압축기술이 종래에도 있었다. 압축기술은 크게 두 개의 범주로 분리될 수 있는데 무손실 부호화와 유손실 부호화가 그것이다. 유손실 부호화는 정보의 손실이 있는 부호화에 관계되며 따라서 원래 데이터를 완전하게 재구성하는 것을 보장하지 못한다. 유손실 부호화의 목적은 원래 데이터로의 변환이 거절되지 않고 알아볼 수 있을 정도로 이루어지는 것이다. 손실이 없는 부호화에서, 모든 정보를 보유하고 데이터는 완전하게 재구성될 수 있도록 압축된다.There have been many data compression techniques in the past. Compression techniques can be divided into two categories: lossless coding and lossy coding. Lossy coding is concerned with lossy coding and thus does not guarantee complete reconstruction of the original data. The purpose of lossy coding is to convert the original data so that it can be recognized without being rejected. In lossless coding, all information is retained and the data is compressed so that it can be completely reconstructed.

무손실 부호화에서, 입력 심볼 또는 농도 데이터는 출력 코드워드(cordwords)로 변환된다. 입력은 화상, 음성, 1차원(예를들면, 공간적으로 또는 시간적으로 변화하는 데이터), 2차원(예를들면, 두 공간적 방향(한 공간방향과 한 시간방향)으로 변화하는 데이터), 또는 다차원/다중-스펙트럴 데이터를 포함할 수 있다. 압축이 잘 되면 코드워드는 부호화되지 않은 입력 심볼(또는 농도 데이터)에 요구되는 비트의 수보다 적은 비트로 표현된다. 손실없는 부호화 방법은 사전적 코딩방법(예를들면, Lempel-Ziv), 런 길이 코딩, 열거(enumerative) 코딩, 엔트로피 코딩을 포함한다. 손실없는 화상 압축에서, 압축은 예측 또는 전후관계와 코딩에 기초한다. 팩시밀리 압축(ISO/IEC 11544)을 위한 JBIG 표준과 연속-톤 화상을 위한 DPCM(differential pulse code modulation-JPEG 표준(ISO/IEC 10918)의 옵션)는 화상의 무손실 압축의 예이다. 유손실 압축에서, 입력 심볼 또는 농도 데이터는 출력 코드워드로 변환되기 전에 양자화된다. 양자화는 중요하지 않은 특성을 제거하는 반면에 데이터의 의미있는 특성은 보존하도록 한다. 양자화 전에, 유손실 압축 시스템은 가끔 에너지를 밀집시키기 위한 변환을 사용한다. JPEG는 화상 데이터의 유손실 코딩 방법의 예이다.In lossless coding, the input symbols or density data are converted into output code words (cordwords). The input may be an image, a voice, a one-dimensional (e.g., spatially or temporally varying) data, a two-dimensional (e.g. data that changes in two spatial directions (one spatial direction and one time direction) / Multi-spectral data. If the compression is successful, the codeword is represented by bits less than the number of bits required for the unencoded input symbol (or density data). The lossless coding method includes a dictionary coding method (e.g., Lempel-Ziv), run-length coding, enumerative coding, and entropy coding. In lossless image compression, compression is based on prediction or context and coding. The JBIG standard for facsimile compression (ISO / IEC 11544) and the DPCM for continuous-tone images (option of the differential pulse code modulation-JPEG standard (ISO / IEC 10918)) are examples of lossless compression of images. In lossy compression, the input symbol or density data is quantized before being converted to an output code word. Quantization removes non-critical characteristics while preserving meaningful characteristics of the data. Before quantization, lossy compression systems sometimes use transforms to densify energy. JPEG is an example of a lossy coding method of image data.

화상신호처리의 최근의 발달은 효율적이고 정확한 형태의 데이터 압축 코딩의 필요성에 주의가 집중되고 있다. 다중 해상도 피라미드식 처리와 웨이블릿 피라미드 처리를 포함한 다양한 형태의 변환 또는 피라미드 모양의 신호처리가 제안되었다. 이러한 형태는 또한 서브밴드 처리와 계층적 처리라고도 한다. 화상 데이터의 웨이블릿 피라미드식 처리는 원래 화상의 서브밴드 분해를 생성하는 직각 미러 필터(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에 있다.Recent developments in image signal processing have focused attention on the need for efficient and accurate forms of data compression coding. Various types of transformation or pyramidal signal processing have been proposed, including multi-resolution pyramid processing and wavelet pyramid processing. This form is also referred to as subband processing and hierarchical processing. The wavelet pyramid processing of image data is a specific form of a multi-resolution pyramidal process using quadrature mirror filters (QMFs) that produce subband decomposition of the original image. There are other types of non-QMF wavelets. For more information on wavelet processing, see 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. For information on reversible transforms, see 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.

압축은 가끔 많은 시간을 소비하며 메모리를 필요로 한다. 가능하면 적은 메모리를 가지고 그리고/또는 빠른 압축을 수행하는 것이 바람직하다. 몇몇 응용예에서는 질을 보장할 수 없고 압축 비율이 충분히 높지 않거나 데이터 비율을 제어할 수 없기 때문에 압축을 사용하지 않는다. 그러나 전송 그리고/저장할 정보의 양을 줄이기 위하여 압축을 사용하는 것이 바람직하다.Compression is sometimes time consuming and requires memory. It is desirable to have as little memory as possible and / or to perform fast compression. In some applications, compression is not used because quality can not be guaranteed and the compression ratio is not sufficiently high or the data rate can not be controlled. However, it is desirable to use compression to reduce the amount of information to be transmitted and / or stored.

디지틀 복사기, 프린터, 스캐너, 다기능 기계는 프레임 스토어로 매우 진보하였다. 압축된 프레임 스토어는 메모리를 감소시키고 이러한 제품의 프레임 스토어에 요구되는 비용을 감소시킨다. 그러나 많은 프레임 스토어는 램(RAMs)으로 구현된다. 램은 빠르지만 대개 비싸다. 하드 디스크를 메모리로 사용할 수 있으며 일반적으로 싸다(또는 RAM보다는 일반적으로 덜 비싸다)고 여겨진다. 그리하여 시스템 제조업자는 프레임 스토어와 같은 목적을 위하여 RAM대신 하드 디스크를 사용하여 덜 비싼 시스템을 생산할 수 있는 잇점이 있다.Digital copiers, printers, scanners, and multifunction machines have made great strides in frame stores. Compressed frame stores reduce memory and reduce the cost of the product's frame store. However, many frame stores are implemented as RAMs. Ram is fast, but usually expensive. Hard disks can be used as memory and are generally considered cheap (or generally less expensive than RAM). Thus, system manufacturers have the advantage that they can produce less expensive systems using hard disks instead of RAM for purposes such as frame stores.

시간에 민감한 응용례에서 하드 디스크를 사용함에 있어서의 문제점은 같은 정보를 RAM으로부터 억세스할 수 있는 만큼 빠르게 하드 디스크로부터 정보를 억세스하기 어렵다는 것이다. 또한, 많은 하드 디스크는 디스크상에 저장되는 정보의 양을 증가시키기 위하여 디스크상에 정보를 저장할 때 압축을 사용한다. 압축을 수행하는데 필요한 시간은 또한 시간에 민감한 응용례에서 하드 디스크를 사용하는데 방해가 된다. 하드 디스크의 사용에 있어서 낮은 속도와 압축의 사용은 시간에 민감한 응용례에서 하드 디스크를 사용하는 것을 구현하기 어렵게 만든다.The problem with using a hard disk in time sensitive applications is that it is difficult to access information from the hard disk as quickly as the same information can be accessed from the RAM. In addition, many hard disks use compression when storing information on a disk to increase the amount of information stored on the disk. The time required to perform the compression also hinders the use of the hard disk in time sensitive applications. The use of low speed and compression in the use of hard disks makes it difficult to implement hard disk usage in time sensitive applications.

본 발명은 빠른 유손실/무손실 압축을 제공한다. 본 발명은 비싼 RAM대신 값싼 하드디스크 기술을 사용할 수 있는 시스템을 구현한다. 또한 본 발명은 하드 디스크에 비율을 매칭시키고 프린트 엔진과 같은 시스템을 구현하는 다른 부분의 대역폭에 하드 디스크를 매칭시키기 위한 것이다. 본 발명은 또한 압축 그리고 복원시간이 RAM 속도보다 많이 늦지 않도록 RAM을 사용하기 위한 것이다. 이러한 방법으로 본 발명은 RAM에 비율 매칭을 수행한다.The present invention provides fast lossy / lossless compression. The present invention implements a system that can use cheap hard disk technology instead of expensive RAM. The present invention is also intended to match a hard disk to a bandwidth and to bandwidth of another part that implements a system such as a print engine. The present invention is also intended to use RAM so that the compression and decompression times are not much slower than the RAM speed. In this way, the present invention performs ratio matching to RAM.

도 1은 컨텍스트에 의존하는 관계를 도시한다. 자녀(children)는 부모(parent)로 조절된다.Figure 1 shows a context-dependent relationship. Children are controlled by their parents.

도 2a는 래스터 오더와 유사한 오더를 설명한다.2A illustrates an order similar to a raster order.

도 2b는 오더의 다른 실시예를 설명하고, 여기에서 쇼트 심 오더(short seam order)라고 한다.Figure 2b illustrates another embodiment of the order, herein referred to as a short seam order.

도 2c는 다른 쇼트 심 오더를 설명한다.Fig. 2C illustrates another shot shim order.

도 3a 내지 3h는 본 발명의 웨이블릿 트리에 대한 4 레벨 변환을 위한 TS-변환의 각 적용 결과를 도시한 것이다.Figs. 3A to 3H show results of application of TS-conversion for 4-level conversion to the wavelet tree of the present invention.

도 4의 (A)는 1차원 필터를 구현하는데 사용하기 위한 정/역 필터 유니트의 일 실시예의 블록 다이어그램이다.Figure 4 (A) is a block diagram of one embodiment of a forward / inverse filter unit for use in implementing a one-dimensional filter.

도 4의 (B)는 본 발명에 따른 첫 번째 레벨 정 변환의 한 실시예의 블록 다이어그램이다.FIG. 4B is a block diagram of one embodiment of a first level positive transform according to the present invention.

도 5는 본 발명에 따른 완전 정 변환의 한 실시예의 블록 다이어그램이다.Figure 5 is a block diagram of one embodiment of a full-scale transform according to the present invention.

도 6은 계수를 출력할 때의 타이밍 다이어그램이다.6 is a timing diagram for outputting the coefficient.

도 7a 내지 7h는 TT-변환의 각 1차원 필터링 동작의 결과(출력)를 나타낸다.Figures 7A-7H show the results (output) of each one-dimensional filtering operation of the TT-transform.

도 8은 10 탭 정/역 필터 유니트의 블록 다이어그램이다.8 is a block diagram of a 10-tap forward / reverse filter unit.

도 9는 도 8의 정/역 필터를 위한 중첩 유니트의 한 실시예의 블록 다이어그램이다.9 is a block diagram of one embodiment of an overlay unit for the forward / inverse filter of FIG.

도 10은 코드스트림의 오더링과 코딩 유니트내의 오더링을 설명한다.Figure 10 illustrates the ordering of a code stream and the ordering in a coding unit.

도 11은 화소마다 b비트를 갖는 입력 화상의 2-레벨 TT-변환과 TS-변환 분해에서 다양한 계수의 비트 깊이를 설명한다.Fig. 11 illustrates the bit depths of various coefficients in two-level TT-transform and TS-transform decomposition of an input image having b bits per pixel.

도 12는 본 발명에서 계수 정렬에 사용되는 주파수 대역의 곱셈기의 한 실시예이다.12 is an embodiment of a frequency band multiplier used in coefficient alignment in the present invention.

도 13a는 가장 중요한 데이터와 덜 중요한 데이터로 분할된 계수를 나타낸다.13A shows the coefficients partitioned into the most important data and the less important data.

도 13b는 데이터가 버려지지 않는 무손실의 경우를 나타낸다.13B shows a case of lossless data in which data is not discarded.

도 13c는 데이터의 1 비트평면이 버려진 경우(즉, Q=2)를 나타낸 것으로 비트평면을 버리는 것이 2에 의하여 분할되는 것과 같기 때문이다.Fig. 13C shows the case where a 1-bit plane of data is discarded (i.e., Q = 2), as discarding the bit plane is like dividing by 2.

도 14는 압축/복원 시스템의 동작의 일 실시예를 설명하는 플로우차트이다.14 is a flowchart illustrating one embodiment of the operation of the compression / decompression system.

도 15에서 각 트리에 6 비트가 사용되는 일 실시예를 나타낸다.15 shows an embodiment in which 6 bits are used in each tree.

도 16은 가장 중요한 청크(chunk)를 코딩하는 플로우차트이다.16 is a flowchart for coding the most important chunks.

도 17은 가장 중요한 데이터의 코딩 패스동안 사용되는 포맷팅 유니트와 컨텍스트 모델의 일 실시예의 블록 다이어그램이다.Figure 17 is a block diagram of one embodiment of a formatting unit and context model used during the coding pass of the most important data.

도 18은 첫 번째 비트평면의 일 실시예를 설명한다.Figure 18 illustrates one embodiment of the first bit plane.

도 19는 LIC 비트평면을 코딩하는 프로세스의 일실시예를 설명하는 플로우차트이다19 is a flowchart illustrating one embodiment of a process for coding an LIC bit plane

도 20은 덜 중요한 데이터에 대한 미리보기와 콘텍스트 모델의 일 실시예의 블록 다이어그램이다.Figure 20 is a block diagram of one embodiment of a preview and context model for less important data.

도 21은 헤드 비트에 대한 조절을 제공하는 컨텍스트 모델의 일 실시예의 블록 다이어그램이다.Figure 21 is a block diagram of one embodiment of a context model that provides adjustment for head bits.

도 22는 모든 이웃과 부모(parent)에 대한 조절을 갖는 컨텍스트 모델의 한 실시예에 대한 메모리 사용을 설명한다.Figure 22 illustrates memory usage for one embodiment of a context model with adjustments to all neighbors and parents.

도 23은 부호 비트에 대한 컨텍스트 모델의 한 실시예의 블록 다이어그램이다.23 is a block diagram of one embodiment of a context model for sign bits.

도 24는 LIC에 대한 병렬 코딩의 일 실시예를 설명한다.Figure 24 illustrates one embodiment of parallel coding for an LIC.

도 25는 프린터 전단의 일 실시예의 블록 다이어그램이다.25 is a block diagram of an embodiment of the printer front end.

도 26은 프린터 후단의 일 실시예의 블록 다이어그램이다.26 is a block diagram of an embodiment of the printer rear end.

도 27은 프린터 후단의 다른 실시예의 블록 다이어그램이다.27 is a block diagram of another embodiment of the printer rear end.

도 28은 프린터 압축/복원을 포함하는 집적 회로(IC) 칩의 일 실시예의 블록 다이어그램이다.28 is a block diagram of one embodiment of an integrated circuit (IC) chip including printer compression / decompression.

도 29는 프린팅 동안 시스템의 기본적이 타이밍을 설명한다.Figure 29 illustrates the basic timing of the system during printing.

도 30은 페이지의 대역 버퍼를 설명한다.30 illustrates a page buffer of a page.

도 31은 페이지의 대역 버퍼를 나타낸다31 shows the bandwidth buffer of the page

도 32는 병행 메모리 억세스의 필요조건을 설명하는 엔코딩의 타이밍 다이어그램을 나타낸다.Figure 32 shows a timing diagram of the encoding describing the requirements of concurrent memory access.

도 33은 판독된 데이터보다 큰 기록 데이터를 취급하기 위하여 순환 어드레싱이 어떻게 사용될 수 있는지를 나타낸다.Figure 33 shows how circular addressing can be used to handle write data larger than the read data.

도 34는 엔코더 및 디코더의 쌍을 나타낸다.Figure 34 shows a pair of encoder and decoder.

도 35는 2진 컨텍스트 모델의 일 실시예를 나타낸다.35 shows an embodiment of a binary context model.

도 36은 2진 컨텍스트 모델의 다른 실시예를 나타낸다.36 shows another embodiment of the binary context model.

도 37은 코딩 유니트의 모든 계수의 이웃하는 계수를 도시한 것이다.Figure 37 shows neighboring coefficients of all coefficients of a coding unit.

도 38은 MSE 정렬에 기초한 피라미드 정렬을 나타낸다.Figure 38 shows a pyramid alignment based on MSE alignment.

도 39는 웨이블릿 계수의 MSE 정렬을 나타낸다.Figure 39 shows the MSE alignment of the wavelet coefficients.

* 도면의 주요부분에 대한 부호의 설명DESCRIPTION OF THE REFERENCE NUMERALS

4001, 4002, 4007, 4008, 4009, 4010, 4011 : 가산기4001, 4002, 4007, 4008, 4009, 4010, 4011:

4003, 4004, 4006 : 먹스4003, 4004, 4006: Mux

4005 : 레지스터 파일4005: Register file

401, 402 : 필터 유니트401, 402: filter unit

403, 404, 405, 406 : 레지스터403, 404, 405, 406:

407, 408 : 먹스407, 408: Mux

본 발명은 압축 그리고/또는 복원을 수행하는 방법과 장치를 개시한다. 한 실시예에, 본 발명은 버퍼, 웨이블릿 변환 유니트, 코더를 갖는 시스템을 포함한다. 웨이블릿 변환 유니트는 버퍼에 저장된 화소에 대하여 웨이블릿 변환을 수행하고 출력에 계수를 발생하기 위하여 버퍼에 연결되는 입력을 갖는다. 코더는 웨이블릿 변환 유니트에 연결되어 버퍼로부터 수신된 변환된 화소를 부호화한다.The present invention discloses a method and apparatus for performing compression and / or reconstruction. In one embodiment, the invention includes a system having a buffer, a wavelet transform unit, and a coder. The wavelet transform unit has an input coupled to the buffer for performing wavelet transform on the pixels stored in the buffer and for generating coefficients on the output. The coder is connected to the wavelet transform unit to encode the transformed pixel received from the buffer.

압축과 복원을 위한 방법과 장치를 설명한다. 다음의 설명에서, 지연의 형태, 비트 레이트, 필터의 형태등과 같은 여러 가지 상세한 것에 대하여 개시한다. 그러나 당업자에게 본 발명은 이러한 구체적인 설명이 없이도 실시할 수 있는 것은 명백하다. 다른 예에서, 본 발명을 불명료하도록 하는 것을 피하기 위하여 공지의 구조와 장치를 상세하게 도시하기보다는 블록 다이어그램 형태로 도시한다.Methods and apparatus for compression and reconstruction are described. In the following description, various details such as the type of delay, the bit rate, the form of the filter, and the like will be described. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form rather than in detail in order to avoid obscuring the invention.

다음의 상세한 설명의 일부분은 컴퓨터 메모리내에서 데이터 비트상의 동작을 알고리즘과 부호적 표현의 관점에서 제공된다. 이러한 알고리즘적 설명과 표현은 데이터 처리기술의 분야에서 당업자가 다른 당업자에게 그들의 일의 본질을 가장 효과적으로 전달하는데 사용하는 수단이다. 여기서 알고리즘은 일반적으로 원하는 결과로 이끄는 단계의 일관된 시퀀스로 생각된다. 단계들은 물리량을 물리적으로 처리하는 것을 요구한다. 보통 필연적은 아닐지라도 이러한 양은 저장되고 전송되고 결합되고 비교되고 그리고 달리 처리될 수 있는 전기적 또는 자기적 신호의 형태를 취한다. 주로 보편적 사용의 이유에서 이러한 신호들은 때때로 비트, 값, 요소, 심볼, 문자, 용어, 수등으로 부르는 것이 편리하다.Portions of the following detailed description are provided in terms of algorithms and code representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means by which one of ordinary skill in the art of data processing techniques will best convey to others skilled in the art the nature of their work. Where the algorithm is generally thought of as a consistent sequence of steps leading to the desired result. The steps require physically treating the physical quantity. Although not usually inevitable, these quantities take the form of electrical or magnetic signals that can be stored, transmitted, combined, compared, and otherwise processed. Primarily for reasons of universal use, these signals are sometimes referred to as bits, values, elements, symbols, letters, terms, and numbers.

그러나 이러한 용어 그리고 유사한 용어는 적절한 물리량과 관계가 있으며 단지 이들 양에 적용되는 편리한 라벨인 것을 명심해야 한다. 다음의 논의에서 명백하게 달리 구체적으로 언급하지 않는 한 본 발명을 통하여 처리, 계산, 계산, 또는 결정 또는 표시와 같은 용어를 사용하는 논의는, 컴퓨터 시스템의 레지스터와 메모리내에서 물리(전자)양으로 표현되는 데이터를 컴퓨터 시스템의 메모리 또는 레지스터 또는 다른 정보저장, 전송, 표시장치내에서 물리량으로 유사하게 표현되는 다른 데이터로 처리하고 변환하는 메모리내컴퓨터 시스템 또는 유사한 전자계산장치의 작동과 처리에 관련되는 것으로 인식된다.However, it should be borne in mind that these terms and similar terms relate to appropriate physical quantities and are merely convenient labels applied to these quantities. The discussion using terms such as processing, computing, computing, or determining or indicating through the present invention, unless explicitly stated otherwise specifically in the following discussion, Related to the operation and processing of an in-memory computer system or similar electronic computing device that processes and transforms the data being processed into other data similarly represented in physical quantities within the memory or registers of the computer system or other information storage, .

본 발명은 또한 여기의 동작을 수행하는 장치와 관련된다. 이 장치는 요구되는 목적을 위하여 구체적으로 구성되고, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의하여 선택적으로 동작되고 재구성되는 일반적 목적의 컴퓨터를 포함한다. 그러한 컴퓨터 프로그램은 제한되지는 않지만 플로피 디스크, 광 디스크, CD-ROMs, 자기-광 디스크, ROMs(read-only memories), RAMs(random access memories), EPROMs, EEPROMs, 자기 또는 광 카드, 전자적 명령을 저장하는데 적합한 어떤 형태의 매체와 같은 읽기 가능한 컴퓨터 저장매체에 저장되고, 각각은 컴퓨터 시스템 버스에 연결된다. 여기에서 제공되는 알고리즘과 표시는 원래부터 어떤 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 많은 일반 목적의 기계는 여기에서 개시한 바에 따라 프로그램으로 사용할 수 있고 또는 요구되는 방법의 단계를 수행하는 더 구체적인 장치를 편리하게 구성할 수 있다. 많은 이러한 기계에 요구되는 구조는 아래의 설명으로부터 나타난다. 또한, 본 발명은 어떤 특정 프로그램 언어에 대하여 기술하지 않는다. 많은 프로그램 언어가 여기에서 설명하는 본 발명을 구현하기 위하여 사용될 수 있다.The invention also relates to an apparatus for performing the operations herein. The apparatus includes a general purpose computer specifically configured for the required purpose or selectively operated and reconfigured by a computer program stored in the computer. Such computer programs include, but are not limited to, floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, Stored in readable computer storage media, such as any type of media suitable for storage, each coupled to a computer system bus. The algorithms and indications provided herein are not inherently related to any particular computer or other device. Many general purpose machines can be used as a program as disclosed herein, or more conveniently configured to perform the steps of a required method. The structures required for many such machines come from the following description. In addition, the present invention does not describe any particular programming language. Many programming languages may be used to implement the invention described herein.

다음의 용어들이 다음에 설명에서 사용된다. 이러한 여러 가지 용어에 대한 정의가 포함된다. 그러나 제공되는 정의는 용어들이 기술분야에서 알려진 범위에 제한되지 않는다. 이들 정의는 본 발명을 이해하는데 도움을 주기 위하여 제공된다.The following terms are used in the following description. Definitions of these various terms are included. However, the definitions provided are not limited in scope to what is known in the art. These definitions are provided to aid in understanding the present invention.

ABS 코딩 : 비트 발생을 위한 간단한 코드(예를들면, 실행코드)와 사용된 코드워드에 기초한 확률 예측(예를들면, 확률예측 표)을 사용하는 병렬 엔트로피 코딩방법. 일 실시예에서, ABS 코딩은 또한 몇 개의 코더로부터의 스트림을 멀티플렉싱과 디멀티플렉싱하기 위한 방법을 포함한다.ABS coding: A parallel entropy coding method that uses simple code (e.g., executable code) for bit generation and probability prediction (e.g., probability prediction table) based on the codeword used. In one embodiment, the ABS coding also includes a method for multiplexing and demultiplexing streams from several coders.

정렬(alignment) : 나머지 주파수 대역에 대하여 하나의 주파수 대역의 변환 계수의 쉬프팅 정도.Alignment: The degree of shifting of the transform coefficients of one frequency band for the remaining frequency bands.

산술코딩 : 한정된 정확성의, 반드시는 아니지만 2진 코더를 갖는 새넌(Shannon)/엘리어스(Elias) 코딩.Arithmetic coding: Shannon / Elias coding with limited precision, but not necessarily binary coder.

B-코딩 : 압축을 위한 유한 상태 머신을 사용하는 2진 엔트로피 부호화기. 호퍼만 코딩과 달리, 유한 상태머신을 사용하여 2진 심볼을 잘 처리해 내며, 그리고 입력확률의 범위를 위해 유용하다.B-Coding: Binary entropy coder using finite state machine for compression. Unlike Hopper only coding, finite state machines are used to handle binary symbols well, and are useful for a range of input probabilities.

2진 엔트로피 코더: 간혹 가장 확률이 높은 심볼(mps)과 가장 확률이 낮은 심볼(lps)로 표현되며, 2진(예/아니오)결정을 수행하는 무잡음 코더.Binary entropy coder: A noise-free coder that is sometimes represented by the most probable symbol (mps) and the least likely symbol (lps), and performs a binary (yes / no) decision.

2진-형태(style) : 특정 컨텍스트 모델과 화소에 대해 에지-필(edge-fill) 그레이 엔코딩을 갖는 코딩형태.Binary-style: A coding form with edge-fill gray encoding for a particular context model and pixel.

2진-형태 컨텍스트 모델 : 2-레벨과 제한된-레벨의 화상 데이타를 위한 컨텍스트 모델.Binary-type Context Model: Context model for 2-level and limited-level image data.

비트-중요도(bit-significance) : 부호 크기와 유사하고, 헤드 비트를 포함하며, 만일 있으면, 부호 비트가 후속하고, 테일(tail) 비트가 후속하는 수의 표현.Bit-significance: A representation of a number, similar to a code size, comprising a head bit, if any, followed by a sign bit, followed by a tail bit.

자녀-기초 순서(child-based order) : 2차원 화상에 대한 스캔 순서. 이는 2*2블럭에 대한 스캔작업을 제외한 래스터 순서와 유사하다. 래스터 순서에서 부모(parent) 주파수 대역에 대한 스캐닝을 고려하라. 각 계수는 4개 자녀(children)를 포함할 것이다. 이들 자녀(children)는 최상좌측(top-left), 최상우측(top-right), 최하좌측(bottom-left), 최하우측(bottom-right)에서부터 그 다음 부모(parent)와 그 다음 4개 자녀(children) 세트 등이 후속하여 라인의 끝까지 순서화된다. 이후 처리는 그 다음의 두 라인으로 리턴하여 결국 우측(right) 아래 코너에서 종료된다. 라인은 스킵되지 않는다. 자녀-기초 순서는 또한 2*2블럭 순서라고도 한다.Child-based order: scan order for two-dimensional images. This is similar to the raster order except for scanning for 2 * 2 blocks. Consider scanning for the parent frequency band in the raster sequence. Each coefficient will include four children. These children can be from top-left, top-right, bottom-left, bottom-right to the next parent and the next four children (children) set, and so forth, are ordered to the end of the line. The process then returns to the next two lines and ends at the bottom right corner. The line is not skipped. The child-based order is also referred to as the 2 * 2 block order.

계수 : 변환후 성분Coefficient: Component after conversion

성분(components) : 화상의 구성부분. 이 성분은 화소를 구성한다. 예를들면, 레드(red), 그린(green), 그리고 블루(blue) 대역은 대역의 성분 대역이다. 각 개별 화소는 레드, 그린, 및 블루 성분으로 이루어진다. 성분과 성분 대역은 화상에 대한 공간 매핑을 갖는 어떤 형태의 정보를 포함할 수 있다.Components: Parts of a picture. This component constitutes a pixel. For example, the red, green, and blue bands are band components. Each individual pixel consists of red, green, and blue components. The component and component bands may contain some form of information with a spatial mapping to the image.

컨텍스트 모델(context model) : 현재 비트에 대하여 시계열적으로-학습된 정보를 제공하는 코딩될 현재 비트에 관한 인과적으로 취할 수 있는 정보로, 엔트로피 코딩을 위한 조건적 확률 예측을 가능하게 한다. 2진 화상에서, 화소를 위해 가능한 컨텍스트는 동일행내 앞의 2개 화소와 그 앞의 행에서부터 3개 화소이다.Context model: Conditionally probable information for entropy coding, enabling causal information about the current bit to be coded that provides time-thermally-learned information about the current bit. In a binary image, the possible context for a pixel is two pixels from the first two pixels in the same row and three pixels from the preceding row.

분해 레벨 : 웨이블릿 분해 피라미드에 위치됨. 이는 직접적으로 해상도에 관련된다.Disassembly level: Located in wavelet decomposition pyramid. This is directly related to resolution.

효율적인 변환 : 그 계수들을 표현하기 위해서 비트의 최고 적은 숫자를 사용하면서 계수내로 최고의 에너지 응축(compaction)을 달성하는 변환.Efficient conversion: A transform that achieves the best energy compaction into a coefficient, using the smallest number of bits to represent the coefficients.

임베디드 컨텍스트 모델(embedded context model) : 더 중요한 값이 유지될 경우에 효과적인 유손실 압축이 획득되는 방법으로 컨텍스트 빈(bins)을 분리시키고 중요도의 레벨을 발생시키는 컨텍스트 모델.Embedded context model: A context model that separates context bins and generates levels of importance in a way that effective lossy compression is obtained when more important values are maintained.

오더링으로 임베디드(embedded with ordering) : 중요도에 대한 명확한 라벨링없이, 앞에 가장 중요한 데이타로 압축 데이터를 순서화하는 임베디드 컨텍스트 모델에 대한 특별 케이스.Embedded with ordering: A special case for an embedded context model that orders compressed data with the most important data, without explicit labeling of importance.

임베디드 양자화 : 코드스트림에 의해 함축되는 양자화. 예를들어, 만약 중요한 레벨이, 가장 중요한 것부터 가장 덜 중요한 것까지, 순서적으로 위치되면, 그후 양자화는 코드스트림의 간단한 절단에 의해 수행된다. 동일한 기능은 태그(tags), 마커(markers), 포인터(pointers), 또는 다른 신호를 가지고 취할 수 있다. 다중 양자화는 디코드시간에 화상에 대해 수행될 수 있으나 단지 하나의 임베디드된 양자화가 엔코드 시간에 수행될 수 있다.Embedded Quantization: Quantization implied by a code stream. For example, if an important level is placed in order, from the most important to the least important, then the quantization is performed by a simple truncation of the code stream. The same function can be taken with tags, markers, pointers, or other signals. Multiple quantization may be performed on the picture at the decoding time, but only one embedded quantization may be performed at the encoding time.

엔트로피 코더 : 확률예측에 기초하여 현재 비트를 엔코딩하고 디코딩하는 장치. 엔트로피 코더를 또한 여기에선 멀티-컨텍스트 2진 엔트로피 코더라고 말할 수 있다. 현재 비트의 컨텍스트는 인접(nearby) 비트에서 선택된 몇 개의 구성(configuration)이고 현재 비트(또는 멀티 비트)의 최적 표현을 위해 확률예측을 허용한다. 일 실시예에 있어서, 엔트로피 코더는 2진 코더, 병렬 실행-길이 코더 또는 호퍼만 코더를 포함할 수 있다.Entropy Coder: An apparatus for encoding and decoding a current bit based on a probability estimate. An entropy coder can also be referred to as a multi-context binary entropy coder here. The context of the current bit is several configurations selected from the nearby bits and allows probability prediction for optimal representation of the current bit (or multi-bit). In one embodiment, the entropy coder may include a binary coder, a parallel run-length coder, or a hopper only coder.

엔트로피 포인트 : 알려진 코딩 상태로 시작하는 코딩된 데이타의 포인트. 디코더는 이전의 데이타를 디코딩하지 않고서 이 포인트에서 디코딩을 시작할 수 있다. 대부분의 경우에 있어서, 이는 컨텍스트와 2진 엔트로피 코더가 초기 상태로 리세트되는 것을 필요로 한다. 각 코딩 유니트를 위한 코딩된 데이타는 엔트로피 포인트에서 시작한다.Entropy point: A point in the coded data that begins with a known coding state. The decoder can begin decoding at this point without decoding the previous data. In most cases, this requires the context and the binary entropy coder to be reset to the initial state. The coded data for each coding unit starts at an entropy point.

고정-길이 : 데이타의 특정 블럭을 압축된 데이타의 특정 블럭으로 변환시키는 장치, 예를들면, 블록절단코딩(BTC:block truncation coding)과 벡터 양자화(VQ)의 몇가지 형태. 고정-길이 코드들은 고정-비율과 고정-크기의 응용(applications)을 제공하지만, 비율-왜곡 수행이 가변-비율 시스템과 비교해서 좋지 않다.Fixed-Length: A device that transforms a specific block of data into a specific block of compressed data, for example, block truncation coding (BTC) and some form of vector quantization (VQ). Fixed-length codes provide fixed-rate and fixed-size applications, but ratio-distortion performance is not as good as a variable-rate system.

고정-비율 : 어떤 화소 비율을 유지시키면서 제한된 대역폭의 채널을 갖는 응용 또는 시스템. 일 실시예에 있어서, 이 목적을 달성하기 위해, 전체 평균 압축보다도 오히려 국부적 평균 압축이 이루어진다. 예를들어, MPEG는 고정-비율을 필요로 한다.Fixed-Rate: An application or system with a channel of limited bandwidth while maintaining a certain pixel ratio. In one embodiment, to achieve this goal, local average compression is performed rather than overall average compression. For example, MPEG requires a fixed-ratio.

고정-크기 : 제한된 크기의 버퍼를 갖는 응용 또는 시스템. 일 실시예에서, 이 목적을 달성하기 위해, 전체 평균 압축이 달성된다. 예를들면, 프린트 버퍼이다. (응용은 고정비율, 고정크기, 또는 둘 모두로 될 수 있다.)Fixed-size: An application or system with a buffer of limited size. In one embodiment, to achieve this objective, an overall average compression is achieved. For example, it is a print buffer. (Applications can be fixed rate, fixed size, or both.)

주파수 대역 : 각 주파수 대역은 필터링 동작의 동일한 시퀀스로부터 발생하는 일군의 계수들을 기술한다.Frequency band: Each frequency band describes a set of coefficients originating from the same sequence of filtering operations.

헤드 비트 : 비트-중요도 표현에서, 헤드 비트는 가장 중요한 비트에서 첫 번째 논-제로 비트(non-zero bit)까지(첫 번째 논-제로 비트(non-zero bit)를 포함)의 크기 비트이다.Head bit: In the bit-importance representation, the head bit is the size bit of the most significant bit to the first non-zero bit (including the first non-zero bit).

호퍼만 코더 : 일반적으로, 각 심볼을 위한 정수 비트를 생산하는 고정 길이코드.Hopper only coder: A fixed-length code that typically produces an integer bit for each symbol.

중요도 레벨 : 압축전, 임베디드된 데이타의 전체 비트평면(bit-plane)에 해당하는 코딩된 데이타의 유니트. 중요도 레벨은 다른 계수 주파수 대역으로부터의 적절한 모든 비트평면을 포함한다.Priority level: A unit of coded data corresponding to the full bit-plane of the embedded data before compression. The importance level includes all the appropriate bit planes from the different coefficient frequency bands.

가장 확률이 낮은 심볼(LPS:least probable symbol) : 50% 보다 낮은 확률을 갖는 2진 결정에서의 결과. 2개의 결과가 확률이 동일할 때, 엔코더와 디코더가 동일하게 지시하는 한 어떤 것이 mps 또는 lps로 지시되는가는 중요하지 않다.Least probable symbol (LPS): the result of a binary decision with a probability of less than 50%. When the two results are equal, it does not matter which one is indicated as mps or lps, as long as the encoder and decoder indicate the same.

무손실/무잡음/가역 코딩 : 원래 데이타의 완벽한 재구성을 허용하는 방법으로 데이터를 압축.Lossless / Noise / Reversible Coding: Compress data in a way that allows for complete reconstruction of the original data.

유손실 코딩 : 원본 데이타의 완벽한 재구성을 보장하지 못하는 데이타의 코딩. 원래 데이타로의 변화는 가시적으로 부정하거나 검출하지 못하는 방법으로 수행될 수 있다. 간혹 고정 비율은 가능하다.Lossy coding: coding of data that does not guarantee complete reconstruction of the original data. Changes to the original data may be performed in a manner that is either invisible or undetectable. Sometimes a fixed ratio is possible.

가장 확률이 높은 심볼(MPS:most probable symbol) : 50%이상의 확률을 갖는 2진 결정의 결과.Most probable symbol (MPS): The result of a binary decision with a probability of more than 50%.

중첩 변환 : 단일 소스 샘플 포인트가 동일 주파수의 다중 계수에 기여하는 변환. 샘플들은 다수의 웨이블릿(wavelets)과 중첩된 직교변환(Lapped Orthogonal Transform)을 포함한다.Nested transformations: Transforms where a single source sample point contributes to multiple coefficients at the same frequency. The samples include multiple wavelets and a Lapped Orthogonal Transform.

부모 계수(parent coefficient) : 현재계수 또는 화소와 동일종류의 화상 공간을 커버하는 다음의 보다 높은 피라미드 레벨내의 계수 또는 화소. 예를들면, 1SD 계수의 부모(parent)는 도 1의 3SD의 부모인 2SD계수이다.Parent coefficient: a coefficient or pixel in the next higher pyramid level that covers the current coefficient or a picture space of the same kind as a pixel. For example, the parent of one SD coefficient is the 2SD coefficient which is the parent of 3SD in Fig.

확률예측 머신/모듈(probability estimation machine/module) : 컨텍스트내의 확률을 추종하는 코딩 시스템의 부분.Probability estimation machine / module: part of a coding system that follows probability in context.

진행하는 화소 깊이(progressive pixel depth);전체 화상 해상도에서 데이타의 비트-평면을 깊게하여 순서화되는 코드스트림.Progressive pixel depth A code stream that is ordered by deepening the bit-planes of the data at full image resolution.

진행하는 피라미달 (progressive pyramidal) : 보다 낮은 각 해상도가 각 차원(영역에서의 4개의 팩터)내에서 2개의 선형 팩터로 되는 연속 해상도.Progressive pyramidal: A continuous resolution in which a lower angular resolution becomes two linear factors within each dimension (four factors in the region).

Q-코더; 이산값으로 제한된 승산을 대신하여 가산(additions)을 이용할 수 있고 비트가 출력될 때 이산값으로 제한된 확률과 확률예측이 갱신되는 2진 산술 코더.Q-coder; A binary arithmetic coder that can use additions instead of multiplications limited to discrete values and update the probabilities and probabilities limited to discrete values as the bits are output.

래스터 오더(raster order); 2차원 화상 전체에 대한 스캔 순서. 상부 좌측 코너에서 시작하고, 좌측에서 우측으로 이동하며, 이후 그 다음 라인의 좌측으로 복귀한후, 마지막에는 하부 우측 코너에서 종료된다. 라인은 스킵되지 않는다.Raster order; The scan order for the entire two-dimensional image. Starting from the upper left corner, moving from left to right, then returning to the left of the next line, and finally ending at the lower right corner. The line is not skipped.

가역 변환 : 일 실시예에 있어서, 가변변환은 정수 산술의 압축 결과가 원본으로 재구성될 수 있는 정수 산술로 이루어진 효율적인 변환이다.Reversible Transformation: In one embodiment, the variable transformation is an efficient transformation consisting of integer arithmetic in which the compression result of integer arithmetic can be reconstructed as an original.

테일-비트(tail-bits) 또는 테일 : 비트-중요도 표현에 있어서, 테일 비트는 가장 중요한 논-제로 비트보다 덜 중요도를 갖는 크기 비트이다.For tail-bits or tail: bit-significance representation, tail bits are size bits that are less significant than the most significant non-zero bits.

타일 데이타 세그먼트(tile data segment) : 하나의 코딩 유니트를 충분히 설명하는 코드스트림의 부분.Tile data segment: A portion of the code stream that fully describes one coding unit.

TS-변환 : 2-6 변환, 2-탭 저역통과 분석 필터와 6-탭 고역통과 분석 필터를 갖춘 특정 가역 웨이블릿 필터쌍. 합성필터는 분석필터의 구적미러이다.TS-conversion: a specific reversible wavelet filter pair with 2-6 conversions, a two-tap low-pass analysis filter and a six-tap high-pass analysis filter. The synthesis filter is a quadratic mirror of the analysis filter.

TT-변환 : 2-10 변환, 2-탭 저역통과 분석 필터과 10-탭 고역통과 분석필터를 갖춘 특정 가역 웨이블릿 필터쌍. 합성필터는 분석필터의 구적미러이다.TT-Conversion: A specific reversible wavelet filter pair with 2-10 conversions, a two-tap low pass analysis filter and a 10-tap high pass analysis filter. The synthesis filter is a quadratic mirror of the analysis filter.

통합된 무손실/유손실 : 동일한 압축 시스템은 무손실 또는 유손실 재구성이 가능한 코드스트림을 제공한다. 본 발명의 일 실시예에서, 이 코드스트림은 엔코더에 셋팅이나 명령없이 둘다 가능하다.Integrated lossless / lossy: The same compression system provides a lossless or lossy reconfigurable code stream. In one embodiment of the present invention, this code stream is both possible with or without an encoder.

웨이블릿 필터(wavelet filter) : 웨이블릿 변환으로 사용된 고역과 저역 통과 합성 및 분해필터.Wavelet filter: High and low pass synthesis and decomposition filters used in wavelet transform.

웨이블릿 변환 : 주파수영역과 시간(또는 공간)영역의 제약 두가지 모두를 갖는 변환. 일 실시예에 있어서, 고역통과필터와 저역통과필터를 구비하는 변환이다. 결과계수는 두가지에 의해 추출되며(엄밀하게는 필터되며) 그리고 필터는 저역통과계수에 적용된다.Wavelet transform: A transform that has both a frequency domain and a time (or space) domain constraint. In one embodiment, it is a transform with a high pass filter and a low pass filter. The resulting coefficients are extracted (strictly filtered) by two factors and the filter is applied to the low-pass coefficients.

웨이블릿 트리(wavelet trees) : 최고 높은 레벨분해의 SS섹션내 단일 계수에 관련되는 계수, 및 화소. 계수 숫자는 레벨 숫자의 기능이다. 도 1은 웨이블릿 트리내에 포함된 계수를 도시하고 있다. 웨이블릿의 길이는 분해레벨의 숫자에 의존한다. 예를들어, 하나의 분해레벨을 가지고는, 웨이블릿 트리가 4개 화소에 미치고, 두 개의 분해레벨을 가지고는, 16개 화소에 미친다. 아래 테이블1은 다른 레벨을 위한 웨이블릿에 의해 영향받는 화소의 숫자를 보이고 있다. 2차원에 있어서, 각 웨이블릿 트리는 SD, DD 및 DS라고 명명된 서브트리를 형성한다.Wavelet trees: coefficients associated with a single coefficient in the SS section of the highest-level decomposition, and pixel. The coefficient number is a function of the level number. Figure 1 shows the coefficients included in the wavelet tree. The length of the wavelet depends on the number of decomposition levels. For example, with one decomposition level, the wavelet tree spans four pixels, with two decomposition levels, to sixteen pixels. Table 1 below shows the number of pixels affected by wavelets for different levels. For two dimensions, each wavelet tree forms a subtree named SD, DD, and DS.

다른 레벨의 분해에 대한 웨이블릿 트리의 스팬(span)The span of the wavelet tree for different levels of decomposition. 폭 높이 합계Width Height Total 1 레벨2 레벨3 레벨4 레벨5 레벨6 레벨Level 1 Level 2 Level 3 Level 4 Level 5 Level 6 Level 2 2 44 4 168 8 6416 16 25632 32 102464 64 40962 2 44 4 168 8 6416 16 25632 32 102464 64 4096

[본 발명의 개요][Outline of the present invention]

본 발명은 엔코딩부와 디코딩부를 갖는 압축/복원시스템을 제공한다. 엔코딩부는 입력 데이터를 엔코딩하여 압축 데이터를 생성하고 반면에 디코딩부는 먼저 엔코딩된 데이터를 디코딩하여 원래의 입력 데이터를 재구성한다. 입력 데이터는 화상(또는 비디오), 오디오 등의 다양한 형태의 데이터를 포함한다. 한 실시예에서, 데이터는 디지틀 신호 데이터이지만, 디지틀화된 아날로그 데이터, 텍스트 데이터 포맷 그리고 다른 포맷도 가능하다. 데이터의 소스는 엔코딩부 그리고/또는 디코딩부의 메모리 또는 채널이 될 수 있다.The present invention provides a compression / decompression system having an encoding unit and a decoding unit. The encoding unit encodes the input data to generate compressed data, while the decoding unit first decodes the encoded data to reconstruct the original input data. The input data includes various types of data such as an image (or video), audio, and the like. In one embodiment, the data is digital signal data, but digitized analog data, text data format, and other formats are possible. The source of the data may be a memory or channel of the encoding and / or decoding unit.

본 발명에서, 엔코딩부 그리고/또는 디코딩부의 요소는 컴퓨터 시스템상에서 사용되는 하드웨어 또는 소프트웨어로 구현될 수 있다. 본 발명은 무손실 압축/복원 시스템을 제공한다. 본 발명은 또한 유손실 압축/복원을 수행하도록 구성할 수 있다.In the present invention, elements of the encoding unit and / or decoding unit may be implemented in hardware or software used on a computer system. The present invention provides a lossless compression / decompression system. The present invention can also be configured to perform lossy compression / decompression.

본 발명의 시스템은 다음에서 더 자세하게 설명되는 가역 웨이블릿에 의하여 빠른 유손실/무손실 압축을 채용한다. 시스템은 예를들면 레이저 프린터와 같은 프린터를 포함한다. 한 실시예에서, 프린터는 한 페이지를 저장하는 값싼 하드 디스크를 사용하여 비싼 RAM의 필요양을 줄인다. 압축은 하드 디스크 또는 다른 저장장치의 제한된 대역폭을 프린트 엔진이 요구하는 더 큰 대역폭에 매칭시킨다. 본 발명의 코딩 기술은 프린터의 고속, 실시간의 요구를 만족시키고 본 발명은 화상의 특성과 하드 디스크의 버스트 성질(bursty nature)이 요구하는 대로 뛰어난 무손실 또는 유손실 압축을 제공한다.The system of the present invention employs fast lossy / lossless compression by a reversible wavelet described in more detail below. The system includes a printer, such as, for example, a laser printer. In one embodiment, the printer uses an inexpensive hard disk that stores a page, thereby reducing the amount of expensive RAM required. Compression matches the limited bandwidth of the hard disk or other storage device to the larger bandwidth required by the print engine. The coding technique of the present invention satisfies the high-speed, real-time requirements of printers and the present invention provides superior lossless or lossy compression as required by image characteristics and bursty nature of the hard disk.

다음의 상세한 설명은 가역 웨이블릿, 압축된 프레임 스토어 응용, 컬러 레이저 프린터, 프린터 칩의 실시에 의하여 압축의 일반적인 개요를 나타낸다. 프린터의 렌더링(rendering) 엔진은 저장을 위하여 하드 디스크를 사용한다. 하드 디스크는 프린트 엔진보다 늦기 때문에 압축은 비율 매칭을 제공하기 위하여 사용된다. 표시 리스트 기술 또한 렌더링시 요구되는 메모리를 줄이기 위하여 사용된다. 표시-리스트에 기초하는 렌더링 엔진은 압축 시스템이 화상의 대역을 독립적으로 다룰수 있도록 한다. 본 발명이 프린트 시스템의 관점에서 설명되지만 본 발명은 압축 그리고/또는 복원이 그 일부분으로 포함되는 다른 시스템에 적용가능하다.The following detailed description shows a general overview of compression by the implementation of reversible wavelets, compressed frame store applications, color laser printers, and printer chips. The printer's rendering engine uses a hard disk for storage. Since the hard disk is later than the print engine, compression is used to provide rate matching. The display list description is also used to reduce the memory required for rendering. The rendering engine based on the display-list allows the compression system to handle the bandwidth of the picture independently. Although the present invention is described in terms of a printing system, the present invention is applicable to other systems in which compression and / or restoration are included as a part.

또한 여기에서 임베디드 유니필드 무손실/유손실 압축 시스템에 대하여 논의한다. 시스템의 임베디드 특성은 질이 디스크의 전송 비율에 의하여 결정되도록 한다. 쉽게 압축된 화상(예를들면, 텍스트 그리고/또는 선으로 된 대부분의 원고)에 대하여, 무손실 압축이 된다. 압축하기 힘든 화상(예를들면, 노이즈가 있는 자연화상 그리고/또는 하프톤을 갖는 원고)에 대하여 높은 질의 유손실 압축이 된다.We also discuss the embedded uni-lossless / lossy compression system. The embedded nature of the system allows the quality to be determined by the transfer rate of the disk. For lossless compression, for an easily compressed image (e.g., most of the original in text and / or lines). A high-quality oil-loss compression is performed for an image that is hard to compress (for example, a natural image with noise and / or a halftone original).

컬러 화상의 무손실 압축과 높은 질의 유손실 압축을 위한 시스템에 대한 설명은 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에 있다.A description of a system for lossless compression of color images and high quality lossy compression is provided in U.S. Patent Application Serial No. 08 / 642,518, filed May 3, 1996, entitled Compression and decompression with Wavelet Style and Binary Style Including Quantization by the Device-Dependent Parser And U.S. Patent Application Number Method and Apparatus for Reversible Color Conversion, filed on May 8, 1995.

[가역 웨이블릿][Reversible wavelet]

본 발명은 가역 웨이블릿에 의한 압축을 채용한다.The present invention employs compression by reversible wavelets.

웨이블릿 분해Wavelet decomposition

본 발명은 초기에 가역 웨이블릿을 사용하여 화상(화상 데이터의 형태) 또는 다른 데이터 신호를 분해한다. 본 발명에서, 가역 웨이블릿 변환은 정수 계수의 신호가 손실없이 재생되는 정수 산술의 정확한 재구성 시스템을 구현하는 것을 포함한다. 계수 가역 변환은 변환 행렬의 행렬식이 1(또는 거의 1)인 것이다.The present invention decomposes an image (in the form of image data) or other data signals initially using a reversible wavelet. In the present invention, the reversible wavelet transform involves implementing an accurate reconstruction system of integer arithmetic in which the signal of integer coefficients is reproduced without loss. The coefficient reversible transformation is that the determinant of the transformation matrix is 1 (or almost 1).

가역 웨이블릿을 사용하여, 본 발명은 무손실 압축에 유한 정도(precision)의 산술을 제공할 수 있다. 가역 웨이블릿 변환을 화상 데이터에 적용하여 발생되는 결과는 계수의 열이다.Using reversible wavelets, the present invention can provide finite precision arithmetic for lossless compression. The result generated by applying the reversible wavelet transform to the image data is a row of coefficients.

본 발명의 가역 웨이블릿 변환은 필터 세트를 사용하여 구현할 수 있다. 한 실시예에서, 필터는 2-탭 저역-통과 필터와 6-탭 고역-통과 필터로서 여기에서 TS변환 또는 2,6변환이라고 하는 변환을 구현한다. 다른 실시예에서, 필터는 2-탭 저역-통과 필터와 10-탭 고역-통과 필터로서 여기에서 TT변환 또는 2,10변환이라고 하는 변환을 구현한다. 이들 필터는 가산 그리고 감산 동작(플러스 하드와이어 비트 쉬프트)만을 사용하여 구현할 수 있다.The reversible wavelet transform of the present invention can be implemented using a set of filters. In one embodiment, the filter implements a transform, referred to herein as a TS transform or a 2, 6 transform, as a two-tap lowpass filter and a six-tap highpass filter. In another embodiment, the filter implements a transform, referred to herein as a TT transform or a 2, 10 transform, as a two-tap low pass filter and a 10-tap high pass filter. These filters can be implemented using only add and subtract operations (plus hard wire bit shift).

TT-변환은 TS변환에 대하여 적어도 하나의 잇점과 적어도 하나의 결점을 갖는다. 하나의 잇점은 TS변환보다 좋은 압축을 제공하는 것이다. TT변환의 결점은 더 긴 10-탭 필터는 더 높은 하드웨어 비용을 요구하는 것이다.The TT-transform has at least one advantage and at least one drawback to the TS transform. One advantage is that it provides better compression than TS conversion. The drawback of TT conversion is that longer 10-tap filters require higher hardware costs.

2차원 웨이블릿 분해2D wavelet decomposition

본 발명의 저역-통과 필터와 고역-통과 필터를 사용하여, 다중 해상도 분해가 수행된다. 구성 레벨의 수는 다양하며 어떤 수도 될 수 있다. 그러나 현재 분해 레벨의 수는 2에서 8레벨이다. 레벨의 최대수는 입력의 길이 또는 폭의 최대값의 log2이다.Using the low-pass filter and the high-pass filter of the present invention, multi-resolution decomposition is performed. The number of configuration levels may vary and may be any number. However, the number of current decomposition levels is 2 to 8. The maximum number of levels is the log 2 of the maximum value of the length or width of the input.

화상과 같은 2차원 데이터에 변환을 수행하는 가장 일반적인 방법은 1차원 필터를 분리하여, 즉 행을 따라 그리고나서 열을 따라 적용하는 것이다. 분해의 첫 번째 레벨은 여기에서 SS, DS, SD, DD라고 하는 4개의 다른 계수 대역이 된다. 문자는 위에서 정의된 smooth(S)와 detail(D) 필터를 가리키고, 이들은 각각은 low(L)와 high(H) 통과 필터에 해당한다. 따라서, SS 대역은 행과 열 방향의 S 필터의 계수로 구성된다.The most common way to perform a transformation on two-dimensional data, such as an image, is to separate the one-dimensional filter, that is, along the rows and then along the rows. The first level of decomposition is here the four different coefficient bands SS, DS, SD, and DD. The letters indicate the smooth (S) and detail (D) filters defined above, which correspond to the low (L) and high (H) pass filters, respectively. Thus, the SS band consists of the coefficients of the S filter in the row and column directions.

웨이블릿 분해의 각 주파수 서브 대역은 더 분해될 수 있다. 가장 일반적인 것은 단지 SS 주파수 서브 대역을 더 분해하는 것이고 각각 발생되는 분해 레벨에서 SS 주파수 서브대역의 분해를 더 포함한다. 그러한 다중 분해는 피라미드식 분해라고 한다. SS, SD, DS, DD와 분해 레벨 수는 각 분해를 나타낸다.Each frequency subband of wavelet decomposition can be further decomposed. The most common is to further decompose only the SS frequency subbands and further include decomposition of the SS frequency subbands at each generated decomposition level. Such multiple decomposition is called pyramidal decomposition. SS, SD, DS, DD and the number of decomposition levels indicate each decomposition.

본 발명의 TS 또는 TT 변환으로, 피라미드식 분해는 계수 크기를 증가시키지 않는다.With the TS or TT transform of the present invention, pyramidal decomposition does not increase the coefficient magnitude.

가역 웨이블릿 변환이 회귀적으로 화상에 적용되면, 분해의 첫 번째 레벨은 가장 미세한 정도 또는 해상도로 동작한다. 첫 번째 레벨에서, 화상은 4개의 서브-화상(예를들면, 서브대역)으로 분해된다. 각 서브대역은 공간 주파수 대역을 나타낸다. 첫 번째 레벨 서브대역은 1SS, 1SD, 1DS, 1DD로 표시한다. 원래 화상을 분해하는 과정은 수평과 수직 방향의 두 개에 의한 서브샘플링과 관련된다. 첫 번째 레벨 서브대역 1SS, 1SD, 1DS, 1DD 각각은 입력이 갖는 화상의 화소(또는 계수)의 1/4의 계수를 갖는다.When a reversible wavelet transform is applied to an image recursively, the first level of decomposition operates at the finest degree or resolution. At the first level, the picture is decomposed into four sub-pictures (e.g., sub-bands). Each subband represents a spatial frequency band. The first level subband is denoted as 1SS, 1SD, 1DS, 1DD. The process of decomposing the original image involves subsampling by two of the horizontal and vertical directions. Each of the first-level sub-bands 1SS, 1SD, 1DS, 1DD has a coefficient of 1/4 of the pixel (or coefficient) of the picture of the input.

서브대역 1SS는 저 주파수 수평 정보와 저주파수 수직 정보를 동시에 포함한다. 전형적으로 화상 에너지의 많은 부분이 이 서브대역에 집중되어 있다. 서브대역 1SD는 저 주파수 수평 정보와 고 주파수 수직 정보(예를들면, 수평 가장자리 정보)를 포함한다. 서브대역 1DS는 고 주파수 수평 정보와 저 주파수 수직 정보(예를들면, 수직 가장자리 정보)를 포함한다. 서브대역 1DD는 고 주파수 수평 정보와 고 주파수 수직 정보(예를들면, 텍스처 또는 대각 가장자리 정보)를 포함한다.The subband 1SS simultaneously includes low frequency horizontal information and low frequency vertical information. Typically, much of the image energy is concentrated in this subband. The subband 1SD includes low frequency horizontal information and high frequency vertical information (e.g., horizontal edge information). The subband 1DS includes high frequency horizontal information and low frequency vertical information (e.g., vertical edge information). The subband 1DD includes high frequency horizontal information and high frequency vertical information (e.g., texture or diagonal edge information).

계속되는 두 번째, 세 번째, 네 번째 하위 분해 레벨의 각각은 진행되는 레벨의 저 주파수 SS 서브대역을 분해하여 생성된다. 이 첫 번째 레벨의 서브대역 1SS는 적절한 상세 두 번째 레벨의 서브대역 2SS, 2SD, 2DS, 2DD를 생성하도록 분해된다. 유사하게, 서브대역 2SS는 세 번째 레벨의 개략적인 상세 레벨 3SS, 3SD, 3DS, 3DD를 생성하도록 분해된다. 또한 서브대역 SS2는 세 번째 레벨의 더 개략적인 상세 레벨 4SS, 4SD, 4DS, 4DD를 생성하도록 분해된다. 두 서브샘플링으로 인하여, 각 두 번째 레벨 서브대역은 원래의 화상의 1/16 크기가 된다. 이 레벨에서 각 샘플(예를들면, 화소)은 같은 장소의 원래의 화상에서 적절한 상세를 나타낸다. 유사하게, 각 세 번째 레벨 서브대역은 원래의 화상의 1/64 크기가 된다. 이 레벨에서 각 화소는 같은 장소의 원래의 화상에서 비교적 개략적인 상세에 해당한다. 또한 각 세 번째 레벨 서브대역은 원래의 화상의 1/256 크기가 된다.Each of the subsequent second, third, and fourth sub-decomposition levels is generated by decomposing the low-frequency SS sub-band of the proceeding level. This first level subband 1SS is decomposed to produce the appropriate detailed second level subband 2SS, 2SD, 2DS, 2DD. Similarly, the subband 2SS is decomposed to generate the third level of detailed detailed levels 3SS, 3SD, 3DS, 3DD. The subband SS 2 is also decomposed to produce the more detailed level 4SS, 4SD, 4DS, 4DD of the third level. Due to the two subsampling, each second level subband is 1/16 the size of the original image. At this level, each sample (e.g., pixel) shows the appropriate detail in the original image of the same location. Similarly, each third level subband is 1/64 the size of the original picture. At this level, each pixel corresponds to relatively detailed detail in the original image of the same place. And each third level subband is 1/256 of the original image.

분해된 화상은 샘플링으로 인하여 원래의 화상보다 물리적으로 작아지므로, 원래의 화상을 저장하기 위하여 사용되는 같은 메모리는 모든 분해된 서브대역을 저장하는데 사용될 수 있다. 달리 말하면, 원래의 화상과 분해된 서브대역 1SS와 2SS는 버려지고 3 레벨 분해에 저장되지 않는다.The decomposed image is physically smaller than the original image due to sampling, so the same memory used to store the original image can be used to store all decomposed subbands. In other words, the original picture and the decomposed sub-bands 1SS and 2SS are discarded and not stored in the three-level decomposition.

단지 4 서브대역 분해 레벨을 설명하지만, 특정 시스템의 요구에 따라 추가적인 레벨을 개발할 수 있다. 또한, DCT 또는 선형적으로 배치된 서브대역과 같은 다른 변환으로 다른 부-자(parent-child) 관계를 정의할 수 있다.Although only four subband decomposition levels are described, additional levels may be developed depending on the needs of a particular system. Other transforms, such as DCT or linearly arranged subbands, may also define different parent-child relationships.

피라미드식 분해는 본 발명의 웨이블릿 필터로 계수 크기를 증가시키지 않는다.Pyramidal decomposition does not increase the coefficient magnitude with the wavelet filter of the present invention.

다른 실시예에서 SS 이외에 다른 서브대역이 또한 분해될 수 있다.In other embodiments, other subbands other than SS may also be decomposed.

웨이블릿의 구조Structure of wavelet

피라미드 분해의 웨이블릿 계수에 자연스럽고 유용한 트리 구조가 있다. 서브대역의 분해 결과는 분해의 마지막 레벨에 해당하는 단일 SS 주파수 서브대역이다. 반면에 레벨의 수만큼 많은 SD, DS, DD 대역이 있다. 트리 구조는 주파수 대역의 계수의 부모(parent)를 낮은 해상도의 동일 주파수 대역에 있고 동일 공간 위치와 관계되는 계수로 정의한다.There is a natural and useful tree structure for the wavelet coefficients of the pyramidal decomposition. The decomposition result of the subband is a single SS frequency subband corresponding to the last level of decomposition. On the other hand, there are as many SD, DS, and DD bands as there are levels. The tree structure defines the parent of the coefficient of the frequency band as a coefficient related to the same spatial position in the same frequency band of lower resolution.

본 발명에서, 각 트리는 SS 계수와 3개의 서브트리, 즉 DS, SD, DD 서브트리를 포함한다. 본 발명의 처리는 전형적으로 3개의 서브트리에 수행된다. 각 트리의 루트(root)는 매우 부드러운(smooth) 계수이다. 화상과 같은 2차원 신호에 대하여, 3개의 서브트리가 있고 각각은 4개의 자(children)를 갖는다. 트리는 계층적으로 2차원 신호에 제한되지 않는다. 예를들면, 1차원 신호에 대하여, 각 서브트리는 하나의 자(child)를 갖는다. 더 높은 차원은 1차원과 2차원으로부터 따라온다.In the present invention, each tree includes SS coefficients and three subtrees: DS, SD, and DD subtrees. The processing of the present invention is typically performed on three subtrees. The root of each tree is a very smooth coefficient. For a two-dimensional signal such as an image, there are three subtrees, each with four children. The tree is not limited to a two-dimensional signal hierarchically. For example, for a one-dimensional signal, each subtree has one child. The higher dimension follows from the first dimension and the second dimension.

다중 해상도 분해의 처리는 필터링 시스템을 사용하여 수행된다. 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에 있다.The processing of the multi-resolution decomposition is performed using a filtering system. An example of a two-dimensional, two-level transformation implemented using a typical one-dimensional filter is disclosed in US patent application Ser. No. 08 / / RTI > and U.S. Patent Application Serial No. 08 / 498,036 entitled Reversible Wavelet Transform and an Embedded Codestream Manipulation, filed June 30,

정 웨이블릿 변환의 수행Performing a constant wavelet transform

본 발명에서, 웨이블릿 변환은 2개의 1-D 동작, 수평후 수직으로 수행된다. 한 실시예에서, 수평과 수직방향으로 TT 변환을 사용하여 4 레벨 분해가 수행된다. 다른 실시예에서, 대신에 TS 변환을 사용하여 4 레벨 분해가 수행된다.In the present invention, the wavelet transform is performed in two 1-D operations, horizontal and vertical. In one embodiment, four level decomposition is performed using TT transforms in the horizontal and vertical directions. In another embodiment, four level decomposition is performed using TS transforms instead.

본 발명의 변환은 계산상 매우 효율적이다. 한 실시예에서, 본 발명은 온-칩과 오프-칩 메모리와 요구되는 대역폭의 양을 줄이기 위하여 변환에 의하여 수행되는 계산을 지시한다.The transformation of the present invention is computationally very efficient. In one embodiment, the invention directs on-chip and off-chip memory and computation performed by the transform to reduce the amount of bandwidth required.

계산 순서와 변환의 데이터 흐름Calculation sequence and data flow of the transformation

본 발명에서 위에 논의된 바와 같이, 변환을 계산하는 기본적인 유니트는 웨이블릿 트리이다. 4 레벨 변환을 가정하면, 각 웨이블릿 트리는 16*16 화소블록이다. 16*16 화소블록(모든 CMYK 화상의 4 성분)은 본 발명의 변환의 입력이고 계수를 발생하기 위한 모든 가능한 계산이 수행된다. (역도 유사하다. 각 성분에 대한 계수의 16*16 블록은 입력이고 모든 가능한 계산이 수행된다). 본 발명은 중첩된 변환을 채용하므로, 이웃하는 트리는 저장되고 계산에 사용된다. 현재의 웨이블릿 트리와 이전의 이웃하는 정보와의 경계는 여기에서 심(seam)이라고 한다. 본 발명의 변환을 수행하기 위하여 심을 가로질러 존재하는 정보는 이하에서 상세하게 설명한다.As discussed above in the present invention, the basic unit for calculating transforms is a wavelet tree. Assuming a four level translation, each wavelet tree is a 16 * 16 pixel block. The 16 * 16 pixel block (the four components of all CMYK pictures) is the input of the transform of the present invention and all possible calculations for generating coefficients are performed. (The inverse is similar. A 16 * 16 block of coefficients for each component is an input and all possible calculations are performed). Since the present invention employs nested transforms, neighboring trees are stored and used for computation. The boundary between the current wavelet tree and the previous neighboring information is called a seam here. The information that exists across the shim to perform the transform of the present invention is described in detail below.

웨이블릿 트리의 오더링Ordering the wavelet tree

어떤 응용례(예를들면, 프린팅)에서, 본 발명의 코딩 유니트는 큰 폭과 작은 높이를 갖기 때문에 변환을 계산하기 위한 웨이블릿 트리의 오더링은 중요하다. 한 실시예에서, 각 코딩 유니트는 4096*256 화소를 포함한다.In some applications (e.g., printing), since the coding unit of the present invention has a large width and a small height, the ordering of the wavelet tree for calculating the transform is important. In one embodiment, each coding unit includes 4096 * 256 pixels.

다음의 논의에서 각 코딩 유니트는 4096*256 화소를 포함한다. 그러나, 이하에서 설명되는 오더링은 다른 사이즈의 코딩에도 적용할 수 있다. 도 2A는 래스터 오더와 유사한 오더를 설명한다. 여기에서 이 오더는 롱 심 변환 오더(long seam transfer order)라고 한다. 도 2A에 의하면, 두꺼운 선은 심을 가로질러 존재하는 데이터의 양을 나타내고, 변환을 계산하는데 얼마나 많은 저장이 필요한지를 나타낸다. 이 데이터는 수평 변환을 위한 하나의 웨이블릿 트리에 비례하지만 수직 변환을 위한 화상의 폭(이 예에서 4096)에는 비례하지 않는다. 이 데이터를 저장하는데 요구 메모리의 사용이 필요하다. 그러나 래스터 오더에 가깝기 때문에, 역 변환 동안, 웨이블릿 트리의 수평 행이 화소로 변환되자마자 데이터는 변환으로부터 (예를들면, 프린터 응용례에서 프린터로) 출력될 수 있다.In the following discussion, each coding unit includes 4096 * 256 pixels. However, the ordering described below can be applied to other sizes of coding. 2A illustrates an order similar to a raster order. Here, this order is called the long seam transfer order. According to FIG. 2A, the thick line represents the amount of data that exists across the shim and shows how much storage is needed to calculate the transform. This data is proportional to one wavelet tree for horizontal conversion, but not to the width of the image for vertical conversion (4096 in this example). The use of demand memory is required to store this data. However, since it is close to the raster order, during the inverse transformation, as soon as the horizontal row of the wavelet tree is converted to a pixel, the data can be output from the transform (e.g., from the printer application to the printer).

도 2B는 여기에서 쇼트 심 오더(short seam order)라고 하는 오더의 다른 실시예를 설명한다. 심의 저장은 수평 변환을 위한 코딩 유니트의 높이(이 예에서 256)와 수직 변환을 위한 하나의 웨이블릿 트리에 비례한다. 이것은 필요 메모리의 양을 매우 감소시키고 온-칩 저장을 실현할 수 있도록 한다.Figure 2B illustrates another embodiment of an order referred to herein as a short seam order. Sim storage is proportional to the height of the coding unit for horizontal transform (256 in this example) and one wavelet tree for vertical transform. This greatly reduces the amount of memory required and allows on-chip storage to be realized.

도 2C는 다른 쇼트 심 오더를 설명한다. 하나 이상의 웨이블릿 트리에 비례하는 저장 비용으로, 래스터 오더에서 처리되는 연속하는 화소의 수는 증가한다. 이 예 또는 유사한 예는 심 메모리에서 거의 여분의 비용없이 밴드 버퍼의 확장 데이터 출력(EDO) RAM과 빠른 페이지 모드(fast page mode)를 효율적으로 사용할 수 있도록 한다. 효율은 대부분의 메모리가 이웃하는 메모리 위치에 억세스하도록 최적화되어 있다는 사실에 의하여 얻어진다. 그리하여 심 오더로 인하여 이웃하는 메모리 억세스의 사용에서 어떠한 증가는 더 효율적인 메모리 사용의 결과가 된다.FIG. 2C illustrates another shot order. With a storage cost proportional to one or more wavelet trees, the number of consecutive pixels processed in the raster order increases. This or a similar example allows efficient use of the EDO RAM and fast page mode of the band buffer at little or no extra cost in the sim memory. Efficiency is obtained by the fact that most memory is optimized to access neighboring memory locations. Thus, any increase in the use of neighboring memory access due to the SIMOORD results in more efficient memory usage.

1 웨이블 트리의 계산Calculation of 1 Wavelet

다음의 식은 TS-변환과 TT-변환을 정의한다. x(n) 입력에 대하여, 저역통과 필터의 출력, 부드러운 신호 s(n), 고역통과필터, 상세 신호 d(n)는 수학식 1에서 나타낸 바와 같이 계산된다.The following equations define TS-transform and TT-transform. For the x (n) input, the output of the low pass filter, the smooth signal s (n), the high pass filter, and the detail signal d (n) are calculated as shown in equation (1).

역 변환은 아래의 수학식 2에 나타낸다.The inverse transformation is shown in Equation (2) below.

여기서 p(n)는에 의하여 계산된다.Where p (n) is Lt; / RTI >

TS-변환과 TT-변환은 t(n)의 정의에 있어서 다르다.The TS-transform and the TT-transform are different in the definition of t (n).

TS-변환에 대하여About TS-conversion

으로 정의되고, Lt; / RTI >

TT-변환에 대하여About TT-Conversion

으로 정의된다. .

다음의 논의에서 [.]의 표시는 끝수를 버리는 것을 의미하고 때때로 바닥 함수(floor function)라고 한다.In the following discussion, the notation [.] Means to discard the finite number and is sometimes called the floor function.

TS-변환TS-conversion

짝수(even) 위치에서 6탭 필터와 2탭 필터를 사용하는 효과는 3 조각(piece)의 정보가 저장되어야 한다는 것이다. 6탭 필터는 2 지연을 필요로 한다. 2탭 필터는 1 지연을 필요로 하므로 그 결과는 6탭 필터의 결과에 대하여 중심에 둘 수 있다. 구체적으로, 2 s(·) 값과 1 d(·) 값 또는 d(·) 계산의 부분적인 결과는 저장되어야 한다. 이들 값의 저장은 특정 필터링 동작이 심 또는 그 이외를 가로지르든지 아니든지 관계없이 동일하다.The effect of using a 6-tap filter and a 2-tap filter at even positions is that 3 pieces of information should be stored. The 6-tap filter requires 2 delays. The two-tap filter requires one delay, so the results can be centered on the result of the six-tap filter. Specifically, the partial results of 2 s (·) and 1 d (·) values or d (·) calculations should be stored. The storage of these values is the same regardless of whether the particular filtering operation is shim or not.

도 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값은 이전의 웨이블릿 트리로 계산되고 현재의 웨이블릿 트리에서 사용되도록 저장된다.3A to 3H show the results of applying the TS conversion to the four-level conversion of the wavelet tree of the present invention, respectively. In these figures, the output of the low-pass filter is denoted by s (smooth). The output of the high-pass filter is denoted by d (detail). B represents the median value used to calculate d, which is the value of x (2n) -x (2n + 1). The B value is used during the constant transformation. For inverse transforms, the d value that is not used in any computation is stored in that location. sd indicates that the coefficient is first the result of a horizontal low-pass filter followed by a vertical high-pass filter. The meanings of ds, dd, ss, dB, sB are similar. The thick square corresponds to 256 input pixels. The shaded s, ds, ss values are calculated as the previous wavelet tree and stored for use in the current wavelet tree.

정 변환에 대하여, 변환의 레벨 2, 3, 4의 입력은 이전 레벨의 ss 계수이다. sd, ds, dd 계수는 끝나고, 따라서 그들은 계산되면 출력될 수 있다. 역변환은 레벨(먼저 네번째 레벨, 다음으로 3,2, 그리고 마지막으로 1), 그리고 수직(첫번째)과 수평(두번째)에 대하여 역순으로 모든 계산을 한다. 변환의 동안에는 정과 역의 데이터의 흐름은 동일하고 단지 계산이 다르다.For the positive conversion, the inputs of the levels 2, 3 and 4 of the conversion are the ss coefficients of the previous level. The sd, ds, and dd coefficients are over, so they can be output when calculated. The inverse transform performs all calculations in the reverse order for the level (first level, then 3, 2, and finally 1), and for vertical (first) and horizontal (second). During the conversion, the flow of data in the positive and negative directions is the same and only the calculations are different.

TS-변환 하드웨어TS-conversion hardware

도 4A는 1차원 필터를 구현하는데 사용되는 정/역 필터 유니트의 일 실시예의 블록 다이어그램이다. 단지 메모리와 계산 유니트를 도시하고 하드와이어 쉬프트는 도시하지 않는다. 도 4A에 의하면, 필터 유니트 400은 정과 역 변환을 모두 처리한다. 다른 실시예는 정과 역 변환을 위하여 분리된 유니트를 사용할 수 있다. 정 변환에 대하여, 크기 n 입력이 사용되고, s와 d 출력이 발생된다. 역 변환에 대하여, s와 d 입력이 사용되고, 다른 출력이 발생된다.4A is a block diagram of one embodiment of a forward / inverse filter unit used to implement a one-dimensional filter. It only shows the memory and the calculation unit and hardwired shift is not shown. According to Fig. 4A, the filter unit 400 processes both positive and inverse transforms. Other embodiments may use separate units for positive and inverse transformation. For the constant conversion, the magnitude n input is used and the s and d outputs are generated. For the inverse transform, the s and d inputs are used and another output is generated.

가산기 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비트보다 크다.An adder 4001 is coupled to receive an n-bit input and adds it to produce an output of x (2n + 2) + x (2n + 3). The adder 4002 subtracts one n-bit input from the other n-bit inputs and outputs the amount of x (2n + 2) -x (2n + 3). The outputs of adders 4001 and 4002 are connected to one input of multiplexers 4003 and 4004, respectively. The other inputs of mux 4003 and 4004 are connected to receive s and d inputs, respectively. In one embodiment, the s input is n bits, while the d input is greater than n bits.

먹스 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) 형식의 전후 억세스에 사용된다.The outputs of MUX 4003 and 4004 are controlled by a forward / reverse control signal indicating whether the filter is in the forward or reverse mode. In positive or inverse mode, the output of Mux 4003 is equal to s (n + 1). On the other hand, the output of the Mux 4004 is equal to p (n + 1) in the normal mode and d (n + 1) in the inverse mode. The outputs of muxes 4003 and 4004 are coupled to the input of register file 4005 along with the feedback of s (n) output at mux 4006. The register file 4005 contains an entry for each component of the length of one wavelet tree. The data typically passes through the register file 4005. Based on the spatial position, the input of register file 4005 is delayed until output. The address input controls the output of the register file 4005. In one embodiment, the register file 4005 includes two memory banks, has one port per bank, and is used for back-and-forth access in a ping-pong format between two memory banks.

먹스 4003의 출력은 또한 필터 유니트의 s 출력이다.The output of the MUX 4003 is also the s output of the filter unit.

레지스터 화일 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에서 버퍼링되는 심 데이터를 제공하도록 제어된다.The output of the register file 4005 is coupled to the input of the MUX 4006 along with the data of the external seam buffer in 4020. Output 4006A includes s (n-1) where the output of mux 4003 is delayed twice. Output 4006B includes s (n) delayed by s (n + 1). Output 4006C includes p (n) for positive mode and d (n) for inverse mode. The Mux 4006 is also controlled to provide the seam buffered 4021 buffer data that is buffered.

출력 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)에 가산하도록 연결된다.Output 4006C is connected to one input of adders 4008 and 4009. The other inputs of the adders 4008 and 4009 are the outputs of the MUX 4015. Mux 4015 handles boundary conditions. At the boundary, MUX 4015 outputs 0 wired to one input of it. Wired zeros may be converted to use different values in other embodiments. (N + 1) of one input by subtracting s (n-1) from s (n + 1) To be added to s (n-1) of the input.

가산기 4008은 먹스 4006의 출력 4006C를 먹스 4015의 출력에 가산하여 필터 유니트의 d출력을 발생한다.The adder 4008 adds the output 4006C of the mux 4006 to the output of the mux 4015 to generate the d output of the filter unit.

가산기 4009는 먹스 4006의 출력 4006C를 먹스 4015의 출력에서 감산한다. 가산기 4009의 출력은 가산기 4010에 의하여 먹스 4006의 출력 4006B상의 s(n)에 가산되어 필터 유니트의 n비트 출력을 생성한다. 가산기 4009의 출력은 또한 가산기 4011에 의하여 먹스 4006의 출력 4006B의 s(n)으로부터 감산되어, 역 방향으로 필터 유니트의 다른 n비트 출력을 출력한다.The adder 4009 subtracts the output 4006C of the mux 4006 from the output of the mux 4015. [ The output of adder 4009 is added to s (n) on output 4006B of mux 4006 by adder 4010 to produce an n-bit output of the filter unit. The output of the adder 4009 is also subtracted from s (n) of the output 4006B of the mux 4006 by the adder 4011 to output another n-bit output of the filter unit in the reverse direction.

1 웨이블릿 트리보다 긴 심에 대하여, 심 데이터는 레지스터 화일 4005 대신에 온-칩 SRAM(static RAM) 또는 외부 메모리에 저장된다. 먹스 4006은 이 부가적인 메모리로 그리고 메모리로부터의 억세스를 제공한다.For a shim longer than one wavelet tree, the shim data is stored in the on-chip SRAM (static RAM) or external memory instead of the register file 4005. The Mux 4006 provides access to and from this additional memory.

필터 유니트 4000의 대부분의 하드웨어 비용은 레지스터 화일 4005에 기인한다. 필요로 하는 메모리의 전체 양은 필터링 유니트의 수에 의존한다. 한 실시예에서 세가지 값(s,s,d 또는 ss,ss,sd)을 저장하는 전체 60 위치가 요구된다. 더 많은 필터 유니트가 요구되면 각각에 필요한 메모리는 적어진다. 그리하여 다중 필터 유니트를 사용하는 하드웨어 비용은 낮다.Most of the hardware cost of the filter unit 4000 is due to the register file 4005. The total amount of memory required depends on the number of filtering units. In one embodiment, a total of 60 positions are required to store three values (s, s, d or ss, ss, sd). When more filter units are required, less memory is required for each. Thus, the hardware cost of using multiple filter units is low.

빠른 역 변환은 디코딩의 끝과 프린팅과 같은 데이터 출력 동작의 시작사이의 잠재시간을 줄여준다. 이것은 복원에 필요한 동작공간 메모리를 줄여주고 큰 코딩 유니트를 가능하도록 한다. 빠른 정 변환은 더 큰 대역폭이 가능할 때 필터로 하여금 데이터의 버스트(burst)를 취급할 수 있도록 하고, 미리-보기(look-ahead)로 컨텍스트 모델이 데이터를 신속하게 처리할 때 변환 컨텍스트 모델에 더 많은 데이터를 제공할 수 있도록 한다. 정 변환이 부호화중에 컨텍스트 모델과 보조를 맞출 수 없으면 부호화중의 디스크 대역폭은 낭비하게 되며, 프린팅을 시작하는 시간을 지연시키게 된다. 또한 제어와 데이터 흐름은 다중 필터를 가지므로써 간단하게 된다.Fast inverse conversions reduce latency between the end of decoding and the start of data output operations such as printing. This reduces the amount of space memory required for reconstruction and enables large coding units. Quick Conversion allows the filter to handle bursts of data when greater bandwidth is available and allows the conversion context model to be updated more quickly when the context model expedites data with look- Provide a lot of data. If the regular transform can not keep up with the context model during encoding, the disk bandwidth being coded will be wasted and the time to start printing will be delayed. Control and data flow are simplified by having multiple filters.

도 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의 입력을 선택한다.4B is a block diagram of one embodiment of a first level correct transform according to the present invention. According to FIG. 4B, two filter units 401 and 402 as shown in FIG. 4A perform the first level of translation. The filter unit 401 performs a level 1 horizontal conversion, while the filter unit 402 performs a level 1 vertical conversion. In one embodiment, the first level of translation operates on 2 * 2 blocks of input. 4 registers 403-406 operate as a delay unit for delaying the output of the filter unit 401. [ This is called a child-based order. Register 403 receives the S output of filter unit 401, while registers 404 and 405 receive the d output. The output of register 404 is connected to the input of register 406. The outputs of registers 403 and 406 are connected to the inputs of mux 407, while the s output of filter unit 401 and the output of register 405 are connected to the inputs of mux 408. The two muxes 407 and 408 select the input of the filter unit 402 from the delayed coefficient outputs of the filter unit 401.

필터 유니트 401은 수직으로 인접하는 두 입력쌍에 대하여 연속적으로 동작한다. 이것은 각 성분에 대하여 레지스터 403-406에 의하여 제공되는 적절한 지연을 갖고 필터 유니트 402에 입력되는 계수를 생성한다. 4개의 결과중 3개는 바로 출력되고 ss출력은 더 처리된다.The filter unit 401 operates continuously for two vertically adjacent input pairs. This produces the coefficients input to filter unit 402 with the appropriate delays provided by registers 403-406 for each component. Three of the four results are output immediately, and the ss output is further processed.

첫 번째 레벨 정 전송은 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 화소를 처리한다.The first level positive transmission operates on a group of four pixels that are 2 * 2 grouped. For discussion, the first row contains pixels a and b, while the second row contains pixels c and d. The operation of the first level 4 conversion of FIG. 4B is as follows. During the first cycle, the horizontal transform is applied to the a and b pixels processed by the filter unit 401. The filter unit 401 generates S ab stored in the register 403 and D ab stored in the registers 404 and 405. In the next cycle, pixels c and d are processed by filter unit 401 to perform the horizontal conversion. The result of applying the filter unit is to generate S cd stored in the register 403 and D cd stored in the registers 404 and 405. In this cycle, S cd in register 403 and D cd in register 405 are processed by a filter unit 402 that performs a vertical pass of the transform and generates SS and SD. Further, during the second cycle, the value of D ab shifts from register 404 to register 406. In the next cycle, the D ab value of the register 406 and the D cd value of the register 405 are processed by the filter unit 402 and generate the DS and DD outputs. In the same cycle, the filter unit 401 processes the a and b pixels of the next 2 * 2 block.

도 5는 본 발명에 따른 정 변환의 한 실시예의 블록 다이어그램이다. 도 5에 의하면, 레벨 1 변환 502는 레벨 1 변환을 수행한다. 한 실시예에서, 레벨 1 변환은 도 4B의 레벨 1 변환을 수행한다. 필터 유니트 505는 변환의 2, 3, 4 레벨을 처리한다. 메모리 503은 변환을 수행하기 위한 충분한 계수가 얻어질 때까지 ss 계수를 저장한다. 저장될 필요가 있는 계수의 수는 아래의 표 2에 도시한다.(각 위치는 각 성부의 계수를 저장한다).5 is a block diagram of one embodiment of a constant transform according to the present invention. According to Fig. 5, level 1 conversion 502 performs level 1 conversion. In one embodiment, the level 1 conversion performs the level 1 conversion of FIG. 4B. The filter unit 505 processes the 2, 3, and 4 levels of the conversion. The memory 503 stores the ss coefficient until a sufficient coefficient is obtained to perform the conversion. The number of coefficients that need to be stored is shown in Table 2 below (each location stores the coefficients of each part).

ss 지연 메모리ss delay memory 레벨간Between levels 필요 메모리Required memory 1과 22와 33과 41 and 22 and 33 and 4 9 위치8 위치4 위치9 position 8 position 4 position

오더 유니트 504는 적절한 입력을 필터 유니트 505에 다중화(multiplexing)한다. 입력 버퍼 501과 출력 버퍼 506은 변환에 의하여 요구되는 전송 오더와 대역 버퍼 또는 컨텍스트 모델에 의하여 요구되는 오더사이를 매칭하는 것이 요구된다.The order unit 504 multiplexes appropriate inputs to the filter unit 505. The input buffer 501 and the output buffer 506 are required to match between the transmission order required by the conversion and the order required by the bandwidth buffer or context model.

역 변환에 대하여, 데이터의 흐름은 역전되어 레벨 4 역 변환이 수행되고 레벨 3, 레벨 2, 레벨 1 변환의 순서로 수행된다. 레벨 2 변환의 출력은 레벨 1 변환 502의 첫번째 레벨 변환 하드웨어로 인가된다. 또한 수직 필터링이 수평 필터링전에 수행된다. 수평과 수직 필터링은 한 방향이 심의 부가 메모리에 억세스하는 것을 요구하는 것을 제외하고는 동일하므로, 데이터 흐름을 역전시키는 것은 적은 양의 다중화(multiplexing)로 수행될 수 있다. 역 변환전에, 2 바이트 계수는 두 신호 비트를 갖는 임베디드 형태에서 일반적인 2의 보수(complement numbers)로 변환될 필요가 있다.For the inverse transform, the flow of data is reversed so that a level 4 inverse transform is performed and performed in the order of level 3, level 2, and level 1 transform. The output of the level 2 transform is applied to the first level translating hardware of level 1 transform 502. Vertical filtering is also performed before horizontal filtering. Since the horizontal and vertical filtering is the same except that one direction needs access to the shim side memory, reversing the data flow can be done with a small amount of multiplexing. Before the inverse transform, the two-byte coefficient needs to be converted to the usual two's complement numbers in the embedded form with two signal bits.

도 4B와 5에 도시한 요소는 TT-변환에 또한 사용될 수 있다.The elements shown in Figures 4B and 5 can also be used for TT-transform.

변환 타이밍Conversion timing

도 5의 정 변환의 변환 타이밍은 개개의 필터 유니트의 타이밍에 기초한다. 첫 번째 필터 유니트, 필터 유니트 401은 수평 레벨 1 변환을 계산하고, 반면에 두 번째 필터 유니트, 필터 유니트 402는 수직 레벨 1 변환을 계산한다. 세 번째 필터 유니트, 필터 유니트 505는 레벨 2 내지 4의 변환을 계산하거나 아이들(idle)이다.The conversion timing of the constant conversion in Fig. 5 is based on the timing of the individual filter units. The first filter unit, filter unit 401, calculates a horizontal level 1 conversion, while the second filter unit, filter unit 402, calculates a vertical level 1 conversion. The third filter unit, filter unit 505, computes or is idle in conversions of levels 2 to 4.

한 실시예에서, 세 번째 필터 유니트(505)는 아이들이지 않을 때 짝수 클럭 사이클동안 수평 변환을 계산하고 홀수 클럭 사이클동안 수직 변환을 계산한다. 역 변환의 타이밍도 유사하다(그러나 역전된다).In one embodiment, the third filter unit 505 computes the horizontal shift for even clock cycles when no idle and calculates the vertical shift for odd clock cycles. The timing of the inverse transform is similar (but reversed).

다음의 예에서, 웨이블릿 트리내의 2*2블록은 래스터 오더의 전치(transpose)에서 처리된다. 웨이블릿 트리내의 2*2블록이 래스터 오더로 대신 처리되면 빠른 페이지 모드/확장 데이터 출력(EDO) DRAM을 지원하기 위하여 적은 입력/출력(I/O) 버퍼링이 요구될 수 있다.In the following example, 2 * 2 blocks in the wavelet tree are processed in the raster order transpose. If 2 * 2 blocks in the wavelet tree are processed as raster orders, less input / output (I / O) buffering may be required to support fast page mode / extended data output (EDO) DRAM.

도 6은 계수가 출력될 때의 타이밍 다이어그램이다. 다음의 타이밍은 각 화소에 대한 것이다. 화소마다 4개의 성분이 있다.6 is a timing diagram when coefficients are output. The next timing is for each pixel. There are four components for each pixel.

TT-변환TT-conversion

도 7A-7H는 TT-변환의 각 1차원 필터링 동작의 결과를 나타낸다. 사각은 현재 처리되는 입력 화소에 해당하는 싱글 웨이블릿 트리의 계수를 나타내고 빗금친 부분은 이전 트리로부터 저장된 계수를 나타낸다. B로 표기된 값은 저장된 중간값이다(그리고 인접하는 샘플사이는 다르다). TT-변환은 TS-변환과 유사하지만 더 많은 저장을 요구한다.Figures 7A-7H show the results of each one-dimensional filtering operation of the TT-transform. The square represents the coefficient of the single wavelet tree corresponding to the currently processed input pixel and the shaded portion represents the stored coefficient from the previous tree. The value marked B is the stored intermediate value (and is different between adjacent samples). TT-conversion is similar to TS-conversion but requires more storage.

도 8은 10 탭 정/역 필터 유니트의 블록 다이어그램이다. 배선된 쉬프트와 라운딩 오프셋은 본 발명을 불명료하게 하는 것을 피하기 위하여 도시하지 않는다. 도 8의 먹스 806은 또한 변환 경계에서 미러링(mirroring)을 위하여 사용될 수 있다. 미러링을 구현하기 위하여, d입력을 제로화하고 중첩 유니트의 s(n+2) 입력을 다중화하는 것이 또한 필요하다.8 is a block diagram of a 10-tap forward / reverse filter unit. Wired shifts and rounding offsets are not shown to avoid obscuring the present invention. The Mux 806 of FIG. 8 may also be used for mirroring at the transformation boundary. To implement mirroring, it is also necessary to zero the d input and multiplex the s (n + 2) inputs of the overlapping units.

도 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비트 입력이다.According to FIG. 8, adders 801 and 802 are connected to receive 2 n bit inputs during a full pass of the filter unit. The adder 801 adds the 2 n bit input and outputs the value connected to the input of the Mux 803. An adder 802 subtracts one input from the other and generates an output at one input of the multiplexer 804. Muxes 803 and 804 are also coupled to receive the s and d inputs, respectively, for inverse mode operation of the filter unit. The output of mux 803 is an n-bit input such as s (n + 2) while the output of mux 804 is n + 1 bits for p (n + 2) Input.

먹스 803과 804의 두 출력은 메모리 805의 입력에 연결된다. 또한, 먹스 806의 출력 806A와 806D-F도 메모리 805의 입력에 연결된다. 한 실시예에서, 메모리 805는 2 뱅크와 각 뱅크마다 1 포트를 갖고 핑퐁 패션으로 동작되는 레지스터 화일 또는 SRAM을 포함한다. 메모리의 입력에 어드레스가 연결되어 먹스 806으로 발생되는 출력을 제어한다. 한 실시예에서, 어드레스는 성분마다 16 또는 28위치를 저장한다.The two outputs of MUX 803 and 804 are connected to the input of memory 805. Outputs 806A and 806D-F of mux 806 are also connected to inputs of memory 805. [ In one embodiment, the memory 805 includes a register file or SRAM operating in a ping-pong fashion with two banks and one port per bank. An address is coupled to the input of the memory to control the output generated by the MUX 806. In one embodiment, the address stores 16 or 28 positions per component.

메모리 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)를 포함한다.The output of memory 805 is coupled to the input of mux 806 along with the external buffer data received from shim buffer 820. The output 806A of the mux 806 includes s (n + 1) which is a delayed version of s (n + 2) output from the mux 803. Output 806B of the Mux 806 includes s (n), which is a delayed version of the output of the Mux 803 twice for the positive pass. The output 806C of the Mux 806 includes p (n), which is a delayed version of the output of the Mux 806 twice for a positive pass, and d (n), which is a delayed version of the output of the Mux 804 for the reverse pass. Output 806D includes s (n-2), which is the four-delayed version of the output of the Mux 803. Output 806E of mux 806 includes s (n-1) which is a delayed version of mux 803 output three times. Finally, output 806F contains a delayed version of p (n + 1) for the output of the mux 804 for the forward pass and d (n + 1) of the delayed version of the output of the mux 804 for the reverse pass .

중첩 유니트 807은 먹스 806의 출력 806A, D, E와 함께 먹스 803의 출력을 수신하도록 연결된다. 이러한 입력에 응답하여, 중첩 유니트 807은 t(n)를 생성한다. 중첩 유니트의 한 실시예는 도 9에 나타낸다.The overlap unit 807 is coupled to receive the output of the multiplexer 803 along with the outputs 806A, D, and E of the multiplexer 806. [ In response to this input, the superposition unit 807 generates t (n). One embodiment of the overlapping unit is shown in Fig.

중첩 유니트 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에서 감산하여 역 필터 유니트로 동작할 때 필터 유니트의 다른 출력을 생성한다.The output t (n) of the superposition unit 807 is connected to the inputs of the adders 808 and 809. An adder 808 adds t (n) to the output 806C of the multiplexer 806 to generate the D output of the filter unit. The adder 809 subtracts the output 806C of the mux 806 from t (n). The output of the adder 809 is connected to the respective inputs of the adders 810 and 811. The adder 810 adds the output of the adder 809 to the output 806B of the mux 806 to produce one of the n-bit outputs of the filter when operating as an inverse filter unit. An adder 811 subtracts the output of the adder 809 from the output 806B of the mux 806 to produce another output of the filter unit when operating as an inverse filter unit.

도 9는 도 8의 정/역 필터에 대한 중첩 유니트의 한 실시예의 블록 다이어그램이다. 도 9에 의하면, 중첩 유니트는 가산기 901-906, 멀티플렉서 907-909, 분할기 910을 포함한다. 멀티플렉서와 분할은 하드와이어 쉬프트(hardwire shift)될 수 있다.Figure 9 is a block diagram of one embodiment of an overlay unit for the forward / inverse filter of Figure 8; 9, the overlapping unit includes adders 901-906, multiplexers 907-909, and a divider 910. [ Multiplexers and partitions can be hardwired shifted.

도 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의 다른 입력에 연결된다.The overlap unit of FIG. 9 calculates t (n) for the TT transformation described above. 9, adder 901 is coupled to receive an input of s (n + 2) and subtracts it from the input of s (n-2) to generate an output coupled to one input of adder 903. An adder 902 is connected to receive the s (n-1) input and subtracts the s (n + 1) input therefrom. The output of the adder 902 is connected to the inputs of a multiplier 907 and a multiplier 908. The multiplier 907 multiplies its input by two. In one embodiment, the multiplication is performed by shifting the input bits one position to the left. The output of the multiplier 907 is connected to the other input of the adder 903.

곱셈기 908은 가산기 902의 출력에 16을 곱한다. 한 실시예에서, 곱셈은 가산기 902에서 출력되는 비트를 왼쪽으로 4비트 위치 쉬프트하므로써 수행된다. 곱셈기 908의 출력은 가산기 905의 한 입력에 연결된다. 가산기 903의 출력은 가산기 904의 한 입력에 연결되고 또한 곱셈기 909의 입력에 연결된다.The multiplier 908 multiplies the output of the adder 902 by 16. In one embodiment, the multiplication is performed by shifting the bits outputted from the adder 902 to the left by 4 bits. The output of multiplier 908 is connected to one input of adder 905. The output of adder 903 is coupled to one input of adder 904 and to the input of multiplier 909.

곱셈기 909는 가산기 903의 출력에 2를 곱한다. 한 실시예에서, 이 곱셈은 가산기 903에서 출력되는 비트를 왼쪽으로 1비트 위치 쉬프트하므로써 수행된다. 곱셈기 909의 출력은 가산기 904의 다른 입력에 연결된다. 가산기 904의 출력은 가산기 905의 다른 입력에 연결된다. 가산기 905의 출력은 가산기 906의 입력에 연결되고 가산기 906은 배선된 입력 32를 그것에 가산한다. 가산기 906의 출력은 분할 기 910의 입력에 연결된다. 분할기 910은 입력을 64로 나눈다. 한 실시예에서, 이 분할은 입력 비트를 오른쪽으로 6비트 위치 쉬프트하므로써 수행된다. 분할기 910의 출력은 t(n) 출력을 포함한다. 도 9는 또한 각 출력의 현재의 값을 라인에 나타낸다.The multiplier 909 multiplies the output of the adder 903 by 2. In one embodiment, this multiplication is performed by shifting the bits output from the adder 903 by one bit to the left. The output of multiplier 909 is coupled to another input of adder 904. The output of adder 904 is coupled to another input of adder 905. The output of the adder 905 is connected to the input of the adder 906 and the adder 906 adds the wired input 32 thereto. The output of adder 906 is connected to the input of divider 910. Divider 910 divides the input by 64. In one embodiment, this division is performed by shifting the input bits to the right by 6 bits. The output of divider 910 includes a t (n) output. Figure 9 also shows the current value of each output on the line.

S-변환과 같이 가역 TS-변환과 TT-변환 모두에서 저역통과 필터는 입력신호 x(n)의 범위가 출력신호 s(n)와 같도록 구현된다. 즉, 부드러운 출력에서 성장은 없다. 입력신호가 b비트의 깊이이면 부드러운 출력 또한 b비트이다. 예를들면, 신호가 8비트 화상이면, 저역통과 필터의 출력 또한 8비트이다. 이것은 피라미드식 시스템의 중요한 성질로서 여기서 부드러운 출력은 예를들면, 저역통과 필터를 연속적으로 적용하므로써 또한 복원된다. 종래기술의 시스템에서, 출력 신호의 범위는 입력신호의 범위보다 커서 필터를 연속적으로 적용하는 것이 어렵다. 또한, 변환의 정수 구현에서 라운딩으로 인한 시스템 에러가 없으므로, 유손실 시스템의 모든 에러는 양자화에 의하여 제어될 수 있다. 또한, 저역-통과 필터는 단지 2탭만을 가지므로 비중첩 필터가 된다. 이 성질은 하드웨어 구현에 중요하다.In both the reversible TS-transform and the TT-transform, as in the S-transform, the low-pass filter is implemented such that the range of the input signal x (n) is equal to the output signal s (n). That is, there is no growth in the soft output. If the input signal is b bits deep, the soft output is also b bits. For example, if the signal is an 8-bit image, the output of the low-pass filter is also 8 bits. This is an important property of pyramidal systems in which the soft output is also restored by, for example, continuously applying a low-pass filter. In prior art systems, the range of the output signal is greater than the range of the input signal, making it difficult to apply the filter successively. Also, since there is no system error due to rounding in the integer implementation of the transformation, all errors in the lossy system can be controlled by quantization. In addition, the low-pass filter has only two taps and therefore becomes a non-overlapping filter. This property is important for hardware implementation.

[임베디드 오더링][Embedded Ordering]

본 발명에서, 웨이블릿 분해의 결과로서 생성된 계수는 엔트로피 코딩된다. 본 발명에서, 계수는 초기에 임베디드 오더링을 거치고 여기서 계수는 가시적으로 중요한 순서로 배열되거나 또는 더 일반적으로, 어떤 에러 메트릭스(예를들면, 왜곡 메트릭스)에 대하여 배열된다. 에러 또는 왜곡 메트릭스는 예를들면, 피크 에러와 MSE(mean square error)를 포함한다. 또한, 오더링은 비트-중요도 공간 위치의 선택, 데이터베이스 조회에 대한 관계, 방향성(수직, 수평, 대각, 등)을 주도록 수행될 수 있다.In the present invention, coefficients generated as a result of wavelet decomposition are entropy-coded. In the present invention, the coefficients are initially subjected to embedded ordering, where the coefficients are arranged in a visually important order or, more generally, are arranged for certain error metrics (e.g., distortion metrics). The error or distortion metrics include, for example, peak error and mean square error (MSE). In addition, the ordering can be performed to give a choice of bit-significance spatial locations, relationships to database queries, directionality (vertical, horizontal, diagonal, etc.).

데이터의 오더링은 코드스트림의 임베디드 양자화를 생성하기 위하여 수행된다. 본 발명에서, 2 오더링 시스템이 사용된다. 첫째는 계수를 오더링하기 위한 것이고, 두 번째는 계수내에서 2진 값을 오더링하기 위한 것이다. 본 발명의 오더링은 이후에 2진 엔트로피 코더와 부호화되는 비트스트림을 생성한다.Ordering of the data is performed to generate an embedded quantization of the code stream. In the present invention, a two ordering system is used. The first is for ordering the coefficients, and the second is for ordering the binary values in the coefficients. The ordering of the present invention then generates a bitstream to be encoded with a binary entropy coder.

비트-중요도 표현Bit-importance representation

원래의 성분이 부호가 붙지 않은 경우(적어도 하나의 상세 필터에서 출력되는 계수는 부호가 붙는다)에도 대부분의 변환 계수는 부호가 붙은 수이다. 한 실시예에서, 계수내의 2진값에 사용되는 임베디드 오더는 비트평면에 의한다. 계수는 코딩전에 비트-중요도 표현으로 나타낸다. 비트-중요도는 부호-크기 표현으로 여기서 부호 비트(sign bit)는 최고 중요 비트(MSB)이기보다는 첫 번째 0이아닌 크기 비트와 부호화된다. 즉, 부호 비트는 모든 크기 비트를 진행하기보다는 첫 번째 0이 아닌 크기 비트를 따른다. 또한 부호 비트는 가장 중요한 0이 아닌 크기 비트와 같은 비트평면에 있는 것으로 간주된다.If the original component is unsigned (the coefficients output from at least one detail filter are signed), most transform coefficients are signed numbers. In one embodiment, the embedded order used for the binary value in the coefficients depends on the bit plane. The coefficients are expressed in bit-importance expressions before coding. The bit-significance is a sign-magnitude representation in which the sign bit is encoded with the first non-zero size bit rather than the most significant bit (MSB). That is, the sign bit follows the first non-zero size bit rather than proceeding through all size bits. The sign bit is also considered to be in the same bit plane as the most significant non-zero size bit.

비트-중요도 포맷은 헤드, 테일(tail), 부호의 3개의 비트 세트를 사용하여 숫자를 나타낸다. 헤드 비트는 첫 번째 0이 아닌 크기 비트를 포함하여 MSB에서 첫 번째 0이 아닌 크기 비트까지의 모든 제로 비트이다. 첫 번째 0이 아닌 크기 비트가 발생하는 비트-평면은 계수의 중요도를 정의한다. 테일 비트 세트는 첫 번째 0이 아닌 크기 비트이후로부터 LSB까지 크기 비트를 포함한다. 부호 비트는 단지 부호를 나타내는데, 여기서 0은 양의 부호를 나타내고 1은 음의 부호를 나타낸다. ±2n과 같이 MSB로서 0이 아닌 비트를 갖는 수는 단지 1개의 헤드 비트를 가진다. 0 계수는 테일과 부호 비트를 갖지 않는다. 표 3은 -7에서 8까지 범위의 비트 계수의 모든 가능한 값을 나타낸다.The bit-significance format represents a number using three sets of bits: head, tail, and sign. The head bits are all zero bits from the MSB to the first non-zero size bits, including the first non-zero size bits. The bit-plane where the first nonzero magnitude bit occurs defines the significance of the coefficient. The tail bit set includes size bits from after the first non-zero size bit to the LSB. The sign bit only represents a sign, where 0 represents a positive sign and 1 represents a negative sign. A number with non-zero bits as MSB, such as +/- 2 n , has only one head bit. The zero coefficient has no tail and no sign bit. Table 3 shows all possible values of the bit coefficients ranging from -7 to 8. [

4 비트 값의 비트 중요도 표현Bitwise significance representation of 4-bit values 십진Decimal 2의 보수 부호 크기 비트-중요도2's complement sign size bit-significance -8-7-6-5-4-3-2-101234567-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 110001001 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 비트이고 부호 비트가 따라 온다.In Table 3, the bit significance representation shown in each column includes 1 or 2 bits. In the case of two bits, the first bit is the first one bit followed by the sign bit.

화소의 농도에 대하여 발생하는 것과 같이 값이 음이 아닌 정수인 경우 사용되는오더는 비트평면 오더(예를들면, 가장 중요한 비트평면에서 가장 중요하지 않는 비트평면으로)이다. 2의 보수의 음의 정수가 또한 허용되는 실시예에서, 부호 비트의 임베디드 오더는 정수의 절대값의 첫 번째 0이 아닌 비트와 같다. 그리하여 부호 비트는 0이 아닌 비트가 부호화될 때까지 고려되지 않는다. 예를들면, 부호 크기 표현을 사용하여 16 비트 수 -7은The order used when the value is a non-negative integer, such as occurs for a pixel density, is a bit plane order (e.g., from the most significant bit plane to the least significant bit plane). In embodiments where a negative integer of two's complement is also allowed, the embedded order of the sign bit is equal to the non-first non-zero bit of the absolute value of the integer. The sign bit is thus not considered until a non-zero bit is encoded. For example, using the sign size representation, a 16-bit number-7

10000000000001111000000000000111

이다. 비트-평면에 기초하여, 첫 번째 12 디시전(decision)은 중요하지 안거나 또는 제로이다. 첫 번째 1-비트는 13번째 디시전에서 발생한다. 다음, 부호 비트(음)가 부호화된다. 부호 비트가 부호화된 후, 테일 비트가 처리된다. 15번째와 16번째 디시전은 모두 1이다.to be. Based on the bit-plane, the first 12 decision is non-critical or zero. The first 1-bit occurs at the 13th decision. Next, the sign bit (negative) is encoded. After the sign bit is encoded, the tail bit is processed. The 15th and 16th decisions are all 1s.

계수는 최상위 비트평면에서 최하위 비트평면으로 부호화되므로, 데이터에서 비트평면의 수는 결정되어져야 한다. 본 발명에서 이것은 데이터로부터 계산되거나 또는 화상의 깊이와 필터의 계수에서 도출되는 계수값의 크기의 상위 경계(upper bound)를 찾음으로서 성취된다. 예를들면, 상위 경계가 149이면, 8비트의 중요도 또는 8비트평면이 있다. 소프트웨어의 속도를 위하여, 비트평면 코딩은 사용하지 않는다. 다른 실시예에서, 비트평면은 계수가 2진수로서 중요하게 될 때에만 부호화된다.Since the coefficients are encoded in the most significant bit plane to the least significant bit plane, the number of bit planes in the data must be determined. In the present invention, this is accomplished by calculating the upper bound of the magnitude of the coefficient value that is calculated from the data or derived from the depth of the image and the coefficients of the filter. For example, if the upper boundary is 149, there is an 8-bit significance or 8-bit plane. For the speed of the software, bit plane coding is not used. In another embodiment, the bit planes are encoded only when the coefficients become significant as a binary number.

계수 정렬Counting order

본 발명은 비트-평면 코딩전에 서로에 대하여 계수를 정렬한다. 이것은 다른 주파수 서브대역의 계수가 FFT 또는 DCT와 유사한 다른 주파수를 나타내기 때문이다. 계수를 정렬하므로써, 본 발명은 양자화를 제어한다. 덜 무겁게 양자화된 계수는 더 이른 비트-평면(예를들면, 왼쪽으로 쉬프트)으로 정렬된다. 그리하여, 스트림이 잘려지면(truncated), 이들 계수는 더 무겁게 양자화된 계수보다 그들을 정의하는 더 많은 비트를 갖게 된다.The present invention aligns the coefficients relative to each other before bit-plane coding. This is because the coefficients of the other frequency subbands represent different frequencies similar to FFT or DCT. By sorting the coefficients, the present invention controls quantization. The less heavily quantized coefficients are sorted into earlier bit-planes (e.g., shifted left). Thus, if the stream is truncated, these coefficients have more bits that define them than heavier quantized coefficients.

한 실시예에서, 계수는 SNR 또는 MSE의 관점에서 가장 좋은 속도-왜곡(rate-distortion) 수행을 위하여 정렬된다. MSE와 같은 통계 에러 메트릭스의 관점에서 최적에 가까운 것을 포함하여 많은 가능한 정렬이 있다. 대신에, 정렬은 계수 데이터의 피스코비쥬얼(physchovisyal) 양자화를 허용한다. 정렬은 화상 질의 발전에(또는 다르게 표현하면 속도-왜곡 곡선에) 중요한 영향을 주지만, 무손실 시스템의 최종 압축 비율에는 무시할 만한 영향을 준다. 다른 정렬들은 구체적 계수 양자화, 관심 영역(Region of Interest) 충실도 코딩, 또는 해상도 진행 정렬에 해당할 수 있다.In one embodiment, the coefficients are aligned for best rate-distortion performance in terms of SNR or MSE. There are many possible alignments, including those that are near optimal in terms of statistical error metrics such as MSE. Instead, the alignment allows for physiscovial quantization of the coefficient data. Alignment has a significant impact on the evolution of image quality (or, in other words, the rate-distortion curve), but negatively impacts the final compression ratio of a lossless system. Other arrangements may correspond to specific coefficient quantization, region of interest fidelity coding, or resolution progression alignment.

정렬은 압축된 데이터의 헤더에서 신호를 받거나 또는 특정 응용을 위하여 고정될 수 있다(즉, 시스템은 단지 한 정렬을 갖는다). 다른 크기의 계수의 정렬은 코더 또는 디코더에게 모두 알려져 있고 엔트로피 코더 효율에는 영향을 주지 않는다.Alignment can be signaled at the header of the compressed data or fixed for a particular application (i.e., the system has only one alignment). Alignment of coefficients of different sizes is known to the coder or decoder and does not affect entropy coder efficiency.

화소마다 b비트를 갖는 입력 화상의 2-레벨 TT-변환과 TS-변환 분해에서 다양한 계수의 비트 깊이는 도 11에 도시되어 있다. 도 12는 본 발명에서 계수 정렬에 사용되는 주파수 대역의 곱셈기의 한 실시예이다. 계수를 정렬하기 위하여, 1-DD 계수 크기는 기준으로 사용되고, 이 크기에 대하여 쉬프트된다. n 쉬프트는 2n을 곱하는 것이다.The bit depths of various coefficients in two-level TT-transform and TS-transform decomposition of an input image having b bits per pixel are shown in Fig. 12 is an embodiment of a frequency band multiplier used in coefficient alignment in the present invention. To align the coefficients, the 1-DD coefficient magnitude is used as a reference and is shifted over this magnitude. The n shift is to multiply by 2 n .

한 실시예에서, 화상의 모든 계수의 정렬을 발생하기 위하여 가장 큰 계수의 크기에 대하여 계수를 쉬프트한다. 정렬된 계수는 중요도 레벨이라고 하는 비트-평면에서 최상위 중요도 레벨로부터 최하위 중요도 레벨로 처리된다. 부호는 각 계수의 마지막 헤드 비트와 함께 부호화된다. 부호 비트는 마지막 헤드 비트가 있는 어떠한 중요도 레벨에도 있다. 정렬은 단지 비트가 엔트로피 코더로 보내지는 오더를 제어한다는 것에 주의하는 것은 중요하다. 여분의 제로 비트의 실제적인 패딩(padding), 쉬프트, 저장, 또는 코딩은 수행되지 않는다.In one embodiment, coefficients are shifted for the largest magnitude of coefficients to produce an alignment of all coefficients of the image. The sorted coefficients are processed from the highest significance level to the lowest significance level in the bit-plane called the importance level. The sign is encoded along with the last head bit of each coefficient. The sign bit is at any significance level with the last head bit. It is important to note that alignment only controls the order in which the bits are sent to the entropy coder. The actual padding, shift, store, or coding of the extra zero bits is not performed.

표 4는 계수를 정렬하기 위한 정렬 수의 한 실시예를 설명한다.Table 4 illustrates one embodiment of the number of sorts for sorting the coefficients.

계수 정렬Counting order 1-DD기준1-DD criteria 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 왼쪽41 left, 1 left, 2 left, 2 left, 3 left, 3 left, 1 left, 1 left, 1 left, 2 left, 4

다른 크기의 계수의 정렬은 코더와 디코더에 알려져 있고 엔트로피 코더 효율에 영향을 주지 않는다.Alignment of coefficients of different sizes is known to the coder and decoder and does not affect the entropy coder efficiency.

같은 데이터 세트의 코딩 유니트는 다른 정렬을 가질 수 있다.Coding units in the same data set may have different alignment.

코드스트림과 컨텍스트 모델의 오더링(ordering)Ordering code streams and context models

도 10은 코드스트림의 오더링과 코딩유니트내의 오더링을 설명한다. 도 10에 의하면, 헤더 1001다음으로 코딩 유니트 1002가 톱 대역으로부터 바닥으로의 순서로 따라온다. (헤더 1001은 단일 화상 형태를 위하여 성게된 응용례에서 옵션이다.) 각 코딩 유니트는 최상 중요 데이터 1003, 중요 데이터 1004, 최하 중요 데이터 1005를 포함한다.Figure 10 illustrates the ordering of a code stream and the ordering in a coding unit. Referring to FIG. 10, following the header 1001, the coding unit 1002 comes in order from the top band to the bottom. (The header 1001 is optional in applications coded for a single picture type.) Each coding unit includes a topmost data 1003, an important data 1004, and a least significant data 1005.

컨텍스트 모델은 데이터가 부호화되는 순서와 데이터의 특정 비트에 사용되는 조건을 모두 결정한다. 오더링이 먼저 고려된다. 데이터의 최고 레벨 오더링은이미 앞에서 설명하였다. 데이터는 최상 중요 데이터와 중요 데이터로 나누어지고 전자는 여기서 MIC(most important chunk)라고 하며 변환 오더에서 손실없이 부호화되고, 후자는 여기서 LIC(least important chunk)라고 하며 임베디드되고 일체화된 무손실/유손실 방식으로 부호화된다.The context model determines both the order in which the data is encoded and the conditions used for a particular bit of data. Ordering is considered first. The highest level of data ordering has already been described above. The data is divided into the most important data and the important data. The former is called the most important chunk (MIC) and is encoded without loss in the conversion order. The latter is referred to here as the least important chunk (LIC) and is an embedded and integrated lossless / .

각 비트-평면 동안에 계수가 처리되는 순서는 저 해상도로부터 고 해상도이다(저 주파수로부터 고 주파수로). 각 비트-평면내 계수 서브대역 코더는 하이 레벨(저 해상도, 저 주파수)로부터 로 레벨(고 해상도, 고 주파수)로이다. 각 주파수 서브대역내에서, 코딩은 정의된 순서로 된다. 한 실시예에서, 오더는 래스터 오더, 2*2블록 오더, S자 오더, 피노(Peano) 스캔 오더등이 될 수 있다.The order in which the coefficients are processed during each bit-plane is from low resolution to high resolution (from low frequency to high frequency). Each in-plane coefficient subband coder is from a high level (low resolution, low frequency) to a low level (high resolution, high frequency). Within each frequency subband, the coding is in the defined order. In one embodiment, the order may be a raster order, a 2 * 2 block order, an S-order, a Peano scan order, or the like.

도 3의 코드스트림을 사용하는 4 레벨 분해의 경우, 오더는 다음과 같다.In the case of 4-level decomposition using the code stream of FIG. 3, the order is as follows.

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-DD4-SS, 4-DS, 4-SD, 4-DD, 3 -DS, 3 -SD, 3 -DD, DD

본 발명에서 사용되는 컨텍스트 모델의 일 실시예를 다음에 설명한다. 이 모델은 계수의 공간적 스펙트럼의 의존도에 기초하여 코딩유니트내의 비트를 사용한다. 이웃하는 계수와 부모(parent) 계수의 입수가능한 2진값이 컨텍스트를 생성하기 위하여 사용된다. 그러나 컨텍스트는 디코딩 능력의 원인이 되고 효율적인 적용을 위하여 적은 수이다.One embodiment of the context model used in the present invention will be described next. This model uses the bits in the coding unit based on the dependence of the spatial spectrum of the coefficients. The available binary values of the neighboring coefficients and the parent coefficients are used to generate the context. However, the context is the cause of the decoding capability and a small number for efficient application.

본 발명은 2진 엔트로피 코더의 임베디드 비트-중요도 오더의 계수에 의하여 생성되는 비트스트림을 모델링하기 위하여 컨텍스트 모델을 제공한다.The present invention provides a context model for modeling a bit stream generated by a coefficient of an embedded bit-importance order of a binary entropy coder.

도 37은 코딩 유니트의 모든 계수의 이웃하는 계수를 도시한 것이다. 도 37에 의하면, 이웃하는 계수는 명확한 위치 표시로 명기된다.(예를들면, N=north, NE=northeast, 등) 도 37에서 P와 같은 계수와 현재의 비트-평면이 주어지면, 컨텍스트 모델은 주어진 비트-평면 이전의 모든 코딩 유니트로부터 어떠한 정보도 사용할 수 있다. 현재의 계수의 부모(parent) 계수도 또한 이 컨텍스트 모델에 사용된다.Figure 37 shows neighboring coefficients of all coefficients of a coding unit. 37, neighboring coefficients are specified by a clear location mark (e.g., N = north, NE = northeast, etc.). Given a coefficient and current bit- Can use any information from any coding unit prior to a given bit-plane. The parent coefficient of the current coefficient is also used in this context model.

헤드 비트는 가장 압축할 수 있는 데이터이다. 따라서, 많은 양의 컨텍스트 또는 조건이 압축을 증진시키도록 사용된다.현재 계수의 현재 비트에 대한 컨텍스트를 결정하기 위하여 이웃하는 또는 부 계수를 사용하기 보다, 정보는 도 13A와 관련하여 설명되는 2 신호 비트로 감소된다. 이 정보는 메모리에 저장될 수 있고 또는 이웃하는 계수 또는 부모(parent) 계수로부터 계산될 수 있다.The head bit is the most compressible data. Thus, rather than using neighboring or sub-coefficients to determine the context for the current bit of the current coefficient, the information may be used to enhance the compression of the two signals < RTI ID = 0.0 > Bit. This information can be stored in memory or can be calculated from neighboring coefficients or parent coefficients.

디스크에 저장하는 임베딩 구현Implement embedding to save to disk

본 발명의 임베디드 구조의 일 실시예는 데이터 부호화를 시작할 때 모든 대역 버퍼 메모리가 데이터로 가득 차서 동작공간 메모리로서 사용할 여분의 공간을 대역에서 얻을 수 없다는 사실에 기초한다. 본 발명은 덜 중요한 데이터의 일부를 나중에 임베디드되도록 메모리에 기록한다. 본 발명에서, 임베디드되는 데이터는 메모리에 저장되고 이것은 덜 중요한 데이터이다. 더 중요한 데이터는 직접 부호화된다. 가장 중요하지 않는 데이터는 최하위 비트의 수를 포함한다.One embodiment of the embedded architecture of the present invention is based on the fact that at the start of data coding, all the band buffer memories are filled with data, so that no extra space is available in the band to use as the motion spatial memory. The present invention records some of the less important data into memory for later embeddedness. In the present invention, the data to be embedded is stored in memory and this is less important data. More important data is directly encoded. The least significant data includes the number of least significant bits.

한 실시예에서, 각 계수의 일부분이 나중에 부호화하기 위하여 메모리에 다시 기록되면, 적절한 부호화를 위하여 부호 비트가 알려진 것만큼 헤드와 테일 비트도 잘 알려져야 한다. 한 실시예에서, 둘 또는 그 이상의 신호 비트(예를들면, 3,4,5, 등)가 헤드, 테일, 부호 비트 정보를 나타내기 위하여 사용된다.In one embodiment, if a portion of each coefficient is written back into memory for later encoding, the head and tail bits must be known as well as the code bits for proper coding. In one embodiment, two or more signal bits (e.g., 3, 4, 5, etc.) are used to indicate head, tail, and sign bit information.

8-비트 메모리 위치가 사용되는 한 실시예에서, 2 신호 비트는 헤드, 테일, 부호 비트 정보를 나타낸다. 2 신호 비트의 사용으로 가장 중요하지 않는 6 중요도 레벨이 2 신호 비트와 함께 메모리에 다시 기록될 수 있다. 1 신호 비트는 6 중요도 레벨의 최상위 비트가 헤드 또는 테일 비트인지를 나타낸다. 첫 번째 신호 비트가 헤드 비트를 헤드 비트임을 나타내면, 두 번째 신호 비트는 계수의 부호이다. 반면에 첫 번째 신호 비트가 메모리에 다시 기록된 데이터의 최상위 비트가 테일 비트임을 나타내면, 두 번째 신호 비트는 프리 신호 비트이며 이것은 예를들면, 최상위 테일 비트가 첫 번째 테일 비트인지 또는 나중의 테일 비트인지와 같은 부가적인 테일 정보를 나타낼 수 있다.In one embodiment where 8-bit memory locations are used, the two signal bits represent head, tail, and sign bit information. With the use of two signal bits, the least significant six priority levels can be written back into memory with two signal bits. 1 signal bit indicates whether the most significant bit of the 6 significance level is the head or the tail bit. If the first signal bit indicates that the head bit is a head bit, then the second signal bit is the sign of the coefficient. If, on the other hand, the first signal bit indicates that the most significant bit of data rewritten in memory is a tail bit, the second signal bit is a free signal bit, for example if the most significant tail bit is the first tail bit, Additional tail information, such as < RTI ID = 0.0 > a < / RTI >

도 13A는 MIC라고 하는 가장 중요한 데이터 1301과 LIC라고 하는 덜 중요한 데이터 1302로 나누어진 계수를 도시한 것이다. 한 실시예에서, MIC는 각 계수의 6 상위 오더 비트를 포함하고, 반면에 LIC는 6 하위 오더 비트를 포함한다. 가장 중요한 데이터 1301은 컨텍스트 모델로 보내어져 계수 오더에서 즉각 부호화된다. 이 데이터를 위하여 외부 메모리에서 버퍼링할 필요는 없다. 덜 중요한 데이터 1302는 메모리(예를들면, RAM)에 기록되고 나중에 부호화되며 오더에 의하여 임베디드된다. 또한, 데이터의 2 신호 비트도 메모리에 기록된다. 신호 비트 1303은 메모리에 기록된 최상위 비트가 헤드 비트인지를 나타낸다. 신호 비트 1304는 계수의 부호를 나타내고 또는 첫 번째 테일 비트가 데이터에 포함되어 있는지 아닌지를 나타낸다. 신호 비트는 덜 중요한 데이터 1302와 연결되는 식으로 저장될 수 있고 또는 덜 중요한 데이터 1302를 저장하는 메모리와 결합되는 다른 메모리 또는 메모리 위치에 저장될 수 있으므로 계수의 각 부분과 결합된 신호 비트는 식별될 수 있다.13A shows the coefficients divided by the most important data 1301 called the MIC and the less important data 1302 called the LIC. In one embodiment, the MIC contains the six higher order bits of each coefficient, while the LIC contains six lower order bits. The most important data 1301 is sent in the context model and is immediately encoded in the count order. It is not necessary to buffer in this external memory for this data. The less important data 1302 is written to a memory (e.g., RAM) and later encoded and embedded by an order. In addition, two signal bits of data are also recorded in the memory. The signal bit 1303 indicates whether the most significant bit recorded in the memory is a head bit. The signal bit 1304 indicates the sign of the coefficient or indicates whether or not the first tail bit is included in the data. The signal bits may be stored in conjunction with less significant data 1302 or may be stored in memory or other memory locations associated with memory storing less critical data 1302 so that the signal bits associated with each portion of the coefficients are identified .

표 5의 예는 2 신호 비트의 사용을 나타낸 것이다. 표 5의 열은 도 13A의 데이터 형태로 라인업(line up)된다. 부호 비트는 S로 표기되고 테일 비트는 T로 표기되며 관계없는 비트는 x로 표기하고 테일-온 비트의 값은 h 또는 t로 표기한다. 표 5에서, 신호 비트에 대하여 h=0이고 t=1이다. 다른 실시예에서, 규칙은 반대로 될 수 있다. 한 실시예에서, 표 5에서 0의 부호 비트는 양의 부호를 나타내고 반면에 표 5에서 1의 부호 비트는 음의 부호를 나타낸다. 반대의 할당도 사용될 수 있다. 부호 비트는 항상 첫 번째 온비트로 유지되므로 그것은 임베딩과 같은 때 부호화될 수 있다.The example in Table 5 shows the use of two signal bits. The columns of Table 5 line up in the data form of Figure 13A. The sign bit is denoted by S, the tail bit is denoted by T, the unrelated bit is denoted by x, and the tail-on bit value is denoted by h or t. In Table 5, h = 0 and t = 1 for the signal bits. In another embodiment, the rules may be reversed. In one embodiment, the sign bit of 0 in Table 5 represents a positive sign whereas the sign bit of 1 in Table 5 represents a negative sign. The opposite assignment can also be used. Since the sign bit is always kept as the first on bit, it can be encoded at the same time as the embedding.

크기size 가장 중요 덜 중요 신호 비트(무손실) (비트 평면 내장)Most Significant Less Significant Signal Bits (Lossless) (Bit Plane Built-In) 1xxxx1xxxxx1xxxxxx1xxxxxxx1xxxxxxxx1xxxxxxxxx1xxxx1xxxxx1xxxxxx1xxxxxxx1xxxxxxxx1xxxxxxxxx x 0000000 01TTTT h sx 0000000 1TTTTT h sS 0000001 TTTTTT t 0S 000001T TTTTTT t 1S 00001TT TTTTTT t 1S 0001TTT TTTTTT t 1x 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이 될 수 있다.In Table 5 above, T represents the corresponding bit of the coefficient and may be 0 or 1.

한 실시예에서, 디코딩중, 가장 중요한 데이터가 복호화될 때, 그것은 메모리에 기록되고, 그리고 동시에, 적절한 2 신호 비트가 메모리에 기록되어 덜 중요한 데이터를 저장하도록 메모리를 초기화한다. (계수의 정렬에 따라, 가장 중요한 데이터의 일부는 두 번째 바이트에 또한 저장될 수 있다.) 이러한 초기화로, 1 비트평면의 덜 중요한 데이터를 디코딩하는 것은 계수당 1 바이트(또는 어떤 실시예에서 더 적은)를 읽고 기록하는 것을 필요로 한다. 계수를 읽고 역변환에 입력하면 그들은 정상적인 숫자 형태(예를들면, 2의 보수 형태)로 변환된다.In one embodiment, during decoding, when the most important data is decoded, it is written to memory and at the same time the appropriate two signal bits are written to the memory to initialize the memory to store the less important data. (Depending on the alignment of the coefficients, some of the most important data may also be stored in the second byte.) With this initialization, decoding less important data in a 1-bit plane requires one byte per coefficient Less) to read and write. When coefficients are read and entered in the inverse transform, they are transformed into a normal number form (eg, a two's complement form).

가장 중요한 데이터와 덜 중요한 데이터를 갖는 것외에 엔코딩중에 버려지거나 또는 양자화되는 데이터가 또한 있다. 계수는 양자화 배율인자(scale factor) 2Q-1에 의하여 분할된다. (계수의 양자화는 JPEG 표준에 설명되어 있다.) 본 발명에서, 비트평면을 버림으로써 분할이 이루어지므로 양자화는 2의 거듭제곱이다. 예를들면, Q=1은 1에 의한 분할을 나타내고 따라서 계수는 변하지 않는다. 반면에 Q=2는 2에 의한 분할을 나타내고 이것은 1 비트평면이 버려지는 것을 의미한다. 이러한 분할은 쉬프트를 사용하여 이루어질 수 있다. (예를들면, Q=2에 대하여 1 비트 위치만큼 쉬프트). 도 13B와 도 13C는 다른 서브대역의 양자화와 계수 정렬을 고려할 때 가장 중요한 그리고 덜 중요한 데이터의 포맷을 설명한 것이다.In addition to having the most important data and less important data, there is also data that is discarded or quantized during encoding. The coefficients are divided by the quantization scale factor 2 Q-1 . (The quantization of coefficients is described in the JPEG standard.) In the present invention, the quantization is a power of 2 since division is made by discarding the bit plane. For example, Q = 1 indicates division by 1 and thus the coefficients do not change. On the other hand, Q = 2 represents the division by 2, which means that the 1-bit plane is discarded. This partitioning can be accomplished using shifts. (For example, shifted by one bit position with respect to Q = 2). Figures 13B and 13C illustrate the most important and less important data formats when considering quantization and coefficient alignment of different subbands.

도 13B는 무손실의 경우를 도시한 것으로 여기서 데이터는 버려지지 않는다. JPEG의 규약에 따르면, 실제 계수가 1에 의하여 분할되므로(무손실) 이것은 양자화 Q=1이라고 한다. 가장 중요한 데이터는 빗금치지 않고 나타내고 반면에 가장 중요하지 않는 데이터는 빗금친 것이다.FIG. 13B shows a case of lossless data in which data is not discarded. According to the convention of JPEG, since the actual coefficient is divided by 1 (lossless), this is called quantization Q = 1. The most important data is shown without shading, while the least important data is shaded.

도 13C는 데이터의 1 비트평면이 버려진 경우(즉, Q=2)로 비트평면을 버리는 것이 2에 의하여 분할되는 것과 같기 때문이다. 이 버려진 비트평면은 까맣게 나타낸다.Fig. 13C is like discarding the bit plane by dividing by 2 when the 1-bit plane of data is discarded (i.e., Q = 2). This abandoned bit plane is black.

도 13B와 13C에 도시한 것외에, 가장 중요한 데이터는 또한 SS 계수를 포함한다. 계수는 비록 8-비트 데이터로 나타나지만 가역 색공간(color space)의 사용은 9-비트 데이터를 필요로 하여 색 계수의 크기를 1 비트만큼 증가시킨다.In addition to those shown in Figures 13B and 13C, the most important data also includes SS coefficients. Although the coefficients are represented by 8-bit data, the use of the reversible color space requires 9-bit data and increases the size of the color coefficient by one bit.

본 발명에서, 부호 비트 컨텍스트 모델은 마지막 헤드 비트후에 부호를 엔코딩하는 것을 포함한다. N 계수가 양인지 음인지 또는 부호가 아직 부호화되지 않은 것에 따라 부호에 대한 3개의 컨텍스트가 있다. 대신에, 하나의 컨텍스트는 부호에 사용될 수 있고 또는 부호는 항상 50%로 부호화될 수 있다.In the present invention, the sign bit context model includes encoding the sign after the last head bit. There are three contexts for the sign, depending on whether the N-factor is positive or negative or where the sign has not yet been encoded. Instead, a context can be used for the code or the code can always be encoded at 50%.

웨이블릿 계수의 코딩 오더Coding order of wavelet coefficients

웨이브릿 계수를 위한 코딩의 오더링의 일 실시예는 다음의 의사-코드에서 요약된다.One embodiment of the ordering of coding for wavelet coefficients is summarized in the following pseudo-code.

가장 중요한 데이터가 부호화되면, 모두 제로 헤드 비트로 구성되어 있지 않은 덜 중요한 데이터의 첫 번째 비트평면이 각 계수에 대하여 결정된다. 이것으로 엔코더와 디코더가 덜 중요한 데이터의 전체 비트평면을 미리 볼 수 있다. 이것은 특히 모든 정보가 K계수에 있고 CMY계수는 모두 0인 흑과 백 데이터의 코딩 유니트에 유용하다. 특히, R2(7)가 가능한 가장 긴 런 길이 코드이면, 비트평면을 개별적으로 코딩하지 않는 것은 압축 비율에 도움을 준다. (R2코드의 설명에 대하여 미국특허 번호 5,381,145와 5,583,500에 있다.) 그러나 4 병렬 코딩 코어가 성분에 동기되어 동작하면, 처리 속도는 부호화할 가장 많은 비트평면을 갖는 성분에 의하여 결정된다. 부호화되지 않은 비트평면중 다른 성분에 할당된 코어는 아이들(idle)이다.When the most important data is coded, the first bit plane of less important data, which is not all composed of zero head bits, is determined for each coefficient. This allows the encoder and decoder to preview the entire bit plane of less important data. This is particularly useful for coding units of black and white data where all information is in the K coefficient and CMY coefficients are all zero. In particular, if R2 (7) is the longest run length code possible, not coding the bit planes separately will aid the compression ratio. (In U.S. Patent Nos. 5,381,145 and 5,583,500 for a description of the R2 code.) However, if a 4 parallel coding core operates in synchronism with a component, the processing speed is determined by the component having the most bitplanes to be encoded. The core assigned to the other component of the uncoded bit plane is idle.

위 의사 코드의 동작의 일 실시예를 설명하는 플로우차트는 도 14에 도시된다. 도 14에 의하면, 컨텍스트 모델은 MIC(most important chunk)를 부호화하므로써 시작한다(처리 블록 1401). MIC를 부호화한 후, 처리 로직은 첫 번째 LIC 비트평면의 위치를 데이터로 부호화한다(처리 블록 1402). 이것은 전체 코딩 유니트를 위한 것이다. LIC에 6 비트평면이 있으면, 0,1,2,3,4,5 또는 6 비트평면중 어느 하나는 데이터를 보유할 것이다. 그러면 처리 로직은 현재 LIC 비트평면 변수를 데이터를 갖는 첫 번째 LIC 비트평면으로 설정한다(처리 블록 1403).A flowchart illustrating an embodiment of the operation of the above pseudo code is shown in Fig. Referring to FIG. 14, the context model begins by encoding the most significant chunk (MIC) (processing block 1401). After coding the MIC, the processing logic encodes the position of the first LIC bit plane into data (processing block 1402). This is for the entire coding unit. If the LIC has a 6 bit plane, either the 0,1,2,3,4,5 or 6 bit planes will hold the data. The processing logic then sets the current LIC bitplane variable to the first LIC bit plane with data (processing block 1403).

다음으로, 테스트는 데이터를 갖는 모든 LIC 비트평면이 부호화되었는지를 결정한다(처리 블록 1404). 그렇다면, 처리는 끝나고 그렇지 않다면, 처리로직은 LIC 비트평면을 부호화하고(처리 블록 1405) 현재의 LIC 비트평면 변수를 다음 LIC 비트평면으로 설정한다(처리 블록 1406). 그런 다음, 처리 루프는 처리 블록 1404로 다시 되돌아간다.Next, the test determines whether all LIC bit planes with data have been coded (processing block 1404). If so, processing ends and processing logic encodes the LIC bit plane (processing block 1405) and sets the current LIC bit plane variable to the next LIC bit plane (processing block 1406). The processing loop then returns to processing block 1404 again.

가장 중요한 데이터의 코딩 오더Coding order of the most important data

가장 중요한 데이터의 코딩 오더의 한 실시예는 다음과 같다.An embodiment of the coding order of the most important data is as follows.

가장 중요한 데이터는 한 번에 1 웨이블릿 트리로 처리된다. 반복하기 위하여, 임베디드되지 않는다. MIC 미리보기(look-ahead)는 웨이블릿 트리에서 모든 논(non)-SS 계수에 대하여 모두 제로 헤드 비트인 비트평면을 결정한다. 한 실시예에서, 개별적으로 부호화하기 위하여 첫 번째 비트평면을 식별하는데 4-비트 수가 충분하다. 도 15에서 도시한 다른 실시예에서, 두 번째 분해(빗금친 영역)의 모든 논-SS 계수 1501이 0임을 나타내는데 1 비트가 사용되고 첫 번째 분해의 모든 논-SS 계수 1503이 0임을 나타내는데 다른 비트가 사용된다. 이들 2 비트는 첫 번째 비트평면을 특정하는데 사용되는 4 비트에 부가하여 사용된다.The most important data is treated as one wavelet tree at a time. To be repeated, it is not embedded. MIC look-ahead determines the bit-plane, which is zero head bits for all non-SS coefficients in the wavelet tree. In one embodiment, a 4-bit number is sufficient to identify the first bit plane for individually encoding. In another embodiment shown in FIG. 15, one bit is used to indicate that all non-SS coefficients 1501 in the second decomposition (hatched region) are 0, and all non-SS coefficients 1503 in the first decomposition are zero, Is used. These two bits are used in addition to the four bits used to specify the first bit plane.

다른 실시예에서, 트리 미리보기는 SS 계수가 부호화되고 그리고나서 모든 트리에 대하여 논-제로 헤드 비트를 갖는 첫 번째 비트평면이 부화되는 곳에 사용된다.In another embodiment, the tree preview is used where the SS coefficients are encoded and then the first bit plane with non-zero head bits is hatched for all the trees.

컨텍스트 재방문 지연을 설명하기 위하여 SS와 첫 번째 비트평면 코딩에 대하여 조절이 사용되면 SS 계수의 비트(가역 색공간이 사용되면 9비트이다)의 실제 코딩/디코딩과 미리 본 값이 교대로 일어날 수 있다. 조건이 사용되지 않으면, 교대로 일어날 필요가 없다.If adjustment is used for the SS and first bit plane coding to account for the context re-visit delay, the actual coding / decoding of the bits of the SS coefficients (which is 9 bits if reversible color space is used) have. If the condition is not used, it does not need to happen alternately.

앞에서 논의된 바와 같이, 본 발명의 컨텍스트 모델은 미리보기를 사용한다. 미리보기의 한 실시예는 가장 중요한 데이터, 즉 MIC(most important chunk)에 채용된다. 한 실시예에서, 도 15에 도시한 바와 같이, 각 트리에 대하여 6 비트가 사용된다. 4개는 최대 비트평면에, 1개는 모두 제로인 레벨 0에, 1개는 모두 제로인 레벨 1에 사용된다. 최대 비트평면이 0이면, 두 여분의 비트는 불필요하고, 그러나 이것은 중요하지 않다. 그렇지 않으면 하나의 적응적 코딩 디시전(decision)이 (고립된)제로/논-제로를 결정하기 위하여 사용된다. 논-제로 계수에 대하여 그들은 다음에 의하여 더 구체화된다.As discussed above, the context model of the present invention uses a preview. One embodiment of the preview is employed in the most important data, the MIC (most important chunk). In one embodiment, 6 bits are used for each tree, as shown in Fig. Four are used for the maximum bit plane, one for level 0, one for all, and one for level 1, all zeros. If the maximum bit plane is zero, then two extra bits are unnecessary, but this is not important. Otherwise, one adaptive coding decision is used to determine (isolated) zero / non-zero. For non-zero coefficients, they are further specified by

.계수의 값과 부호를 결정하기 위한 하나의 M-ary 동작(전체:계수마다 2 사이클)One M-ary operation to determine the value and sign of the coefficients (overall: 2 cycles per coefficient)

. 하나의 적응적 코딩 디시전(decision)이 ±1/비±1를 결정하기 위하여 사용된다. 두 번째 사이클은 크기가 1인 부호와 크기가 1보다 큰 부호와 값을 얻기 위하여 사용된다.(전체:계수마다 3 사이클). One adaptive coding decision is used to determine ± 1 / ratio ± 1. The second cycle is used to obtain a sign with a magnitude of 1 and a sign with a magnitude greater than 1 (all: 3 cycles per coefficient).

. 유사하게, 계수당 전체 4 사이클에 대하여 ±1/비±1, ±2,3/비±2,3 등으로 할 수 있다.. Similarly, for all four cycles per coefficient, it can be ± 1 / ratio ± 1, ± 2,3 / ratio ± 2,3, and so on.

.다음과정Next Steps

1 비트 또는 여러 비트를 specify하는 것은 적응적으로 코딩하고 50%의 확률로 코딩하며 또는 단지 비트를 부호화된 데이터 스트림으로 카피(copy)하는 것일 수 있다.Specifying a bit or bits may be adaptive coding and coding with a 50% probability or simply copying the bits to the encoded data stream.

비트평면의 모두 또는 대부분이 개별적으로 부호화되면 변환의 어떤 레벨은 정렬로 인하여 사용되지 않는 비트평면을 가질 수 있다. 사용되지 않는 비트평면은 부호화되지 않는다. 비트를 헤드와 테일 비트의 컨텍스트 지연으로 취급하는데 많은 옵션이 있다. 한 방법은 세 계수:DD, SD, DS를 교대시키는 것이다. 논-제로 계수의 부호 비트는 계수의 끝에서 부호화된다- 가장 중요한 데이터 모두는 항상 손실이 없으므로 첫 번째 온비트를 정확하게 추종할 필요는 없다.If all or most of the bit planes are individually coded, some level of translation may have unused bit planes due to alignment. Unused bit planes are not encoded. There are many options for treating bits as the context delay of the head and tail bits. One method is to alternate the three coefficients: DD, SD, and DS. The sign bit of the non-zero coefficient is encoded at the end of the coefficient. Since all of the most important data is always lossless, it is not necessary to follow the first on bit exactly.

MIC를 부호화하는 의사 코드를 설명하는 플로우차트의 일 실시예는 도 16에 도시된다. 도 16에 의하면, 프로세스는 현재 트리를 첫 번째 트리로 설정하는 처리 로직으로 시작된다(처리 블록 1601). 그리고나서, 처리 로직은 SS 계수를 부호화한다(처리 블록 1602).계수를 부호화한 후, 처리 로직은 첫 번째 비트평면의 위치를 트리의 MIC의 데이터로 부호화하거나(처리 블록 1603) MIC 미리보기를 수행한다.One embodiment of a flowchart describing the pseudo code for encoding the MIC is shown in FIG. Referring to FIG. 16, the process begins with processing logic that sets the current tree to the first tree (processing block 1601). The processing logic then encodes the SS coefficients (processing block 1602). After encoding the coefficients, the processing logic either encodes the position of the first bit plane into data in the tree's MIC (processing block 1603) .

그리고나서, 처리 로직은 전체 트리의 MIC가 0인지의 여부를 테스트한다(처리 블록 1604). 전체 트리의 MIC가 0이면, 처리는 처리 블록 1614에서 계속되고, 그렇지 않으면, 처리는 처리 블록 1605로 이동하여 처리 로직은 현재 계수를 트리의 첫 번째 논-SS 계수로 설정한다.The processing logic then tests whether the MIC of the entire tree is zero (processing block 1604). If the MIC of the entire tree is zero, processing continues at processing block 1614; otherwise, processing moves to processing block 1605 where processing logic sets the current coefficient to the first non-SS coefficient of the tree.

현재 계수를 트리의 첫 번째 논-SS 계수로 설정한 후, 처리 로직은 현재 비트평면을 데이터를 갖는 첫 번째 비트평면으로 설정한다(처리 블록 1606). 그리고나서, 처리 로직은 현재 비트평면의 현재 계수의 비트를 부호화한다(처리 블록 1607). 그 후에, 처리 로직은 모든 비트평면이 부호화되었는지의 여부를 테스트한다(처리 블록 1608). 모든 비트평면이 부호화되지 않았으면, 처리 로직은 현재 비트평면을 다음 비트평면으로 설정하고(처리 블록 1609) 처리 블록 1607로 이동한다. 모든 비트평면이 부호화되었으면, 처리 로직은 현재 계수가 0인지의 여부를 테스트한다(처리 블록 1610). 현재 계수가 0이 아니면, 처리 로직은 부호 비트를 부호화하고(처리 블록 1611) 처리는 처리블록 1613으로 이동한다. 현재 계수가 0이면, 처리 로직은 처리블록 1613으로 이동한다.After setting the current coefficient to the first non-SS coefficient of the tree, processing logic sets the current bit plane to the first bit plane having data (processing block 1606). Processing logic then encodes the current coefficient bit of the current bit plane (processing block 1607). Thereafter, the processing logic tests whether all bit planes have been encoded (processing block 1608). If not all bit planes have been coded, processing logic sets the current bit plane to the next bit plane (processing block 1609) and moves to processing block 1607. If all bit planes have been encoded, the processing logic tests whether the current coefficient is zero (processing block 1610). If the current coefficient is not zero, the processing logic codes the sign bit (processing block 1611) and the processing moves to processing block 1613. If the current coefficient is zero, the processing logic moves to processing block 1613.

처리 블록 1613에서, 처리 로직은 트리의 모든 계수가 부호화되었는지의 여부를 테스트한다. 트리의 모든 계수가 부호화되지 않았으면, 처리 로직은 현재 계수를 트리의 다음 계수로 설정하고(처리 블록 1612) 처리는 처리 블록 1606으로 이동한다. 트리의 모든 계수가 부호화되었으면, 처리 로직은 모든 트리가 부호화되었는지의 여부를 테스트한다(처리 블록 1614). 모든 트리가 부호화되었으면, 처리는 종료되고 그렇지 않으면 처리는 처리블록 1615로 이동하여 처리 로직은 현재 트리를 다음 트리로 설정하고 처리는 처리블록 1602로 이동한다.At processing block 1613, the processing logic tests whether all coefficients of the tree have been encoded. If all the coefficients of the tree have not been coded, then processing logic sets the current coefficient to the next coefficient in the tree (processing block 1612) and processing moves to processing block 1606. If all the coefficients of the tree have been coded, the processing logic tests whether all of the trees have been coded (processing block 1614). If all the trees have been coded, the processing ends; otherwise, processing moves to processing block 1615 where processing logic sets the current tree to the next tree and processing moves to processing block 1602.

도 17은 가장 중요한 데이터의 코딩 패스동안 사용되는 포맷팅 유니트와 컨텍스트 모델의 일 실시예의 블록 다이어그램이다. 도 1에 의하면, 배럴(barrel) 쉬프터 1701은 계수의 크기와 부호화중 가장 중요한 데이터가 최대 디스크 대역폭을 초과하는 것을 방지하기 위하여 사용된 양자화 레벨을 수신하도록 연결되어 무손실 복원을 보장한다. 그리하여, 양자화 레벨은 배럴 쉬프터 1701을 제어한다. 한 실시예에서, 배럴 쉬프터 1701은 1,2,4 또는 8의 양자화를 지원하기 위하여 크기 비트를 0,1,2 또는 3만큼 쉬프트한다. 다른 실시예에서, 단지 두 개의 양자화와 같이 더 낮은 또는 더 높은 수의 양자화가 지원된다.Figure 17 is a block diagram of one embodiment of a formatting unit and context model used during the coding pass of the most important data. According to FIG. 1, the barrel shifter 1701 is connected to receive the quantization level used to prevent the size of the coefficient and the most important data during encoding from exceeding the maximum disk bandwidth, to ensure lossless reconstruction. Thus, the quantization level controls the barrel shifter 1701. In one embodiment, the barrel shifter 1701 shifts the magnitude bits by 0, 1, 2, or 3 to support 1, 2, 4, or 8 quantization. In another embodiment, a lower or higher number of quantisations such as only two quantisations are supported.

배럴 쉬프트 1701의 출력은 덜 중요한 데이터인 낮은 오더의 6 비트평면과 가장 중요한 데이터인 높은 오더 비트의 나머지를 포함한다. 다른 실시예에서, 이들 두 출력을 생성하기 위하여 간단한 분리 메카니즘이 사용된다.The output of the barrel shift 1701 includes the less significant 6-bit plane of order and the remainder of the higher order bits, which is the most important data. In another embodiment, a simple separation mechanism is used to generate these two outputs.

베럴 쉬프터 1701의 두 출력은 첫 번째 비트평면 유니트 1702에 입력되어 어느 비트평면이 데이터를 갖는지 결정한다. 첫 번째 비트평면 유니트 1702는 덜 중요한 데이터를 처리할 때 사용하기 위하여 전체 코딩 유니트(도 10)에 대하여 첫 번째 온 비트를 갖는 비트평면을 찾는데 사용된다. 다른 비트평면 유니트 1706 또한 배럴 쉬프터 1701에서 출력되는 가장 중요한 데이터를 수신하도록 연결된다. 첫 번째 비트평면 유니트 1706은 더 중요한 데이터를 처리할 때 각 트리에 대하여 사용된다. 첫 번째 비트평면의 일 실시예는 도 18을 참조하여 다음에 설명한다.The two outputs of the balrel shifter 1701 are input to a first bit plane unit 1702 to determine which bit plane has data. The first bit plane unit 1702 is used to find the bit plane with the first on-bit to the entire coding unit (FIG. 10) for use in processing less critical data. The other bit plane unit 1706 is also connected to receive the most significant data output from the barrel shifter 1701. The first bit plane unit 1706 is used for each tree when processing more important data. One embodiment of the first bit plane is described below with reference to FIG.

배럴 쉬프터 1701은 또한 비교 유니트 1703과 1704에 연결되어, 덜 중요한 데이터에 대한 2 비트 신호 정보를 발생하기 위하여 가장 중요한 데이터에 대한 2가지의 비교기능을 수행한다. 비교 유니트 1703은 가장 중요한 데이터가 0과 같은 지의 여부를 결정하고, 그것에 의하여 테일 비트가 이미 발생되었는지의 여부를 나타낸다(즉, 아직 테일에서 코딩하는지 여부). 비교 유니트 1703의 출력은 테일-온 비트이다. 비교 유니트 1704는 가장 중요한 데이터가 1과 같은 지의 여부를 결정한다. 가장 중요한 데이터가 1과 같으면, 위의 표 5로부터 출력은 0이다. 비교 유니트 1704의 출력은 먹스 1705의 한 입력에 연결된다. 먹스 1705의 다른 입력은 부호 비트를 수신하도록 연결된다. 먹스 1705의 선택 입력은 비교 유니트 1703의 출력에 의하여 제어되어 비교 유니트 1703의 출력이 비트가 테일 비트임을 나타내면 먹스 1705의 출력은 첫 번째 테일 비트이다. 그러나 비교 유니트 1703의 출력이 비트가 헤드 비트임을 나타내면 먹스 1705는 부호를 출력하도록 제어된다.The barrel shifter 1701 is also coupled to comparison units 1703 and 1704 to perform two comparison functions for the most important data in order to generate 2-bit signal information for less important data. The comparison unit 1703 determines whether the most significant data is equal to zero, thereby indicating whether the tail bit has already been generated (i.e., whether it is still coded in the tail). The output of comparison unit 1703 is a tail-on bit. The comparison unit 1704 determines whether the most important data is equal to one. If the most important data is equal to 1, the output from Table 5 above is zero. The output of the comparison unit 1704 is connected to one input of the multiplexer 1705. The other input of the multiplexer 1705 is coupled to receive the sign bit. The selection input of the multiplexer 1705 is controlled by the output of the comparison unit 1703 so that if the output of the comparison unit 1703 indicates that the bits are tail bits, the output of the multiplexer 1705 is the first tail bit. However, if the output of the comparison unit 1703 indicates that the bit is a head bit, then the MUX 1705 is controlled to output a sign.

한 실시예에서, 비교 유니트 1703과 1704는 단순한 비트 비교기를 사용하여 구현될 수 있다.In one embodiment, comparison units 1703 and 1704 may be implemented using a simple bit comparator.

메모리 1707은 부호 비트, 배럴 쉬프터 1701의 가장 중요한 데이터 출력, 비트평면 유니트 1706의 출력을 수신하도록 연결된다. 메모리 1707은 계수를 지연시키는데 사용되어 부모(parent)와 이웃 정보를 조건에 대하여 얻을 수 있다. 메모리 1707의 조직은 이하에서 논의한다.The memory 1707 is coupled to receive the sign bit, the most significant data output of the barrel shifter 1701, and the output of the bit plane unit 1706. Memory 1707 may be used to delay the coefficients to obtain the parent and neighbor information for the condition. The organization of memory 1707 is discussed below.

컨텍스트 모델(CM) 1710-1712는 부호, 헤드, 테일 그리고 다른 비트의 조건을 제공한다. 이들 컨텍스트 모델의 각각은 다음에서 설명한다.Context model (CM) 1710-1712 provides code, head, tail and other bit conditions. Each of these context models is described below.

도 18은 첫 번째 비트평면의 일 실시예를 설명한다. 도 18에 의하면, 첫 번째 비트평면 유니트 1800은 계수와 레지스터 1802 출력의 피이드백을 수신하도록 연결된 오아(OR) 게이트를 포함한다. 오아(OR) 게이트 1801의 출력은 레지스터 1802의 입력에 연결된다. 레지스터 1802는 트리/코딩 유니트의 스타트 표시에 의하여 제어된다. 레지스터 1802의 출력은 우선순위 엔코더 1803에 연결된다. 우선순위 엔코더 1803의 출력은 첫 번째 비트평면 유니트 1800의 출력이다.Figure 18 illustrates one embodiment of the first bit plane. According to FIG. 18, a first bit plane unit 1800 includes an OR gate coupled to receive a coefficient and a feedback of the output of the register 1802. The output of the OR gate 1801 is connected to the input of the register 1802. The register 1802 is controlled by the start indication of the tree / coding unit. The output of the register 1802 is connected to a priority encoder 1803. The output of the priority encoder 1803 is the output of the first bit plane unit 1800.

스타트에서, 레지스터 1802는 클리어된다. 레지스터 1802의 각 비트는 오아 게이트 1801을 사용하여 계수의 각 비트와 오아(OR)된다. 0인 계수의 각 비트에 대하여, 레지스터 1802의 값은 그것의 현재 값을 유지하여 우선순위 엔코더로 출력한다. 1(예를들면, 첫 번째 1)인 계수의 각 비트에 대하여, 오아 게이트 1801로부터 레지스터 1802로의 출력은 1이고, 그것은 우선순위 엔코더 1803으로 출력한다. 우선순위 엔코더 1803은 첫 번째 1을 위치시키고 그것은 1을 갖는 계수의 첫 번째 비트평면이다.At the start, the register 1802 is cleared. Each bit of the register 1802 is ORed with each bit of the coefficient using the gate 1801. For each bit of the coefficient of zero, the value of the register 1802 holds its current value and outputs it to the priority encoder. The output from the gate 1801 to the register 1802 is 1, and it is output to the priority encoder 1803. The priority encoder 1803 positions the first one and it is the first bit plane of the coefficient with one.

덜 중요한 데이터의 처리 오더Processing order of less important data

LID(least important data)에 대한 각 비트평면은 다음과 같이 처리된다.Each bit plane for LID (least important data) is processed as follows.

*****P74********** P74 *****

LIC 비트평면을 코딩하는 일 실시예는 도 19의 플로우차트에 도시된다. LIC 비트평면의 코딩은 현재 트리는 첫 번째 트리로 설정하는 처리 로직으로 시작한다(처리 블록 1901). 그리고나서, 처리로직은 현재 계수를 트리의 첫 번째 논-SS 계수로 설정한다(처리 블록 1902). 현재 계수를 트리의 첫 번째 논-SS 계수로 설정한 후, 처리로직은 코딩이 미리보기 구간의 스타트에 있는지의 여부를 테스트한다(처리 블록 1903). 코딩처리가 미리보기 구간의 스타트에 있으면, 처리 로직은 미리보기를 수행하고(처리 블록 1904) 처리 블록 1905에서 계속한다. 코딩처리가 미리보기 구간의 스타트에 있지 않으면, 처리 로직은 바로 처리 블록 1905로 이동하고 미리보기가 액티브한지를 결정한다.One embodiment for coding the LIC bit planes is shown in the flowchart of Fig. Coding of the LIC bit planes begins with the processing logic that sets the current tree to the first tree (processing block 1901). The processing logic then sets the current coefficient to the first non-SS coefficient of the tree (processing block 1902). After setting the current coefficient to the first non-SS coefficient in the tree, the processing logic tests whether the coding is in the start of the preview section (processing block 1903). If the coding process is at the start of the preview section, the processing logic performs a preview (processing block 1904) and continues at processing block 1905. If the coding process is not at the start of the preview section, the processing logic immediately goes to processing block 1905 and determines whether the preview is active.

미리보기가 액티브하면, 처리는 처리블록 1909에서 계속되어 처리 로직은 트리의 모든 계수가 부호화되었는지의 여부를 결정한다. 트리의 모든 계수가 부호화되었으면, 처리는 처리블록 1913에서 계속되고 그렇지 않으면, 처리 로직은 미리보기 구간후 현재 계수를 트리의 다음 계수로 설정하고(처리 블록 1910)처리블록 1903으로 이동한다.If the preview is active, processing continues at processing block 1909 where processing logic determines whether all coefficients of the tree have been coded. If all the coefficients of the tree have been coded, processing continues at processing block 1913; otherwise, processing logic sets the current coefficient to the next coefficient in the tree after the preview section (processing block 1910) and moves to processing block 1903.

미리보기가 액티브하지 않으면, 처리 로직은 헤드 또는 테일 비트를 부호화하고(처리블록 1906) 그리고나서 첫 번째 논-제로 비트가 수신되었는지의 여부를 테스트한다(처리 블록 1907). 첫 번째 논-제로 비트가 수신되지 않았으면, 처리는 처리블록 1911에서 계속된다. 첫 번째 논-제로 비트가 수신되었으면 처리는 처리 블록 1908에서 계속되고 여기에서 처리 로직은 부호 비트를 부호화하고 그리고나서 처리 블록 1911로 이동한다.If the preview is not active, the processing logic encodes the head or tail bit (processing block 1906) and then tests whether the first non-zero bit has been received (processing block 1907). If the first non-zero bit has not been received, processing continues at processing block 1911. If the first non-zero bit has been received, processing continues at processing block 1908 where the processing logic codes the sign bit and then proceeds to processing block 1911.

처리블록 1911에서, 처리 로직은 트리의 모든 계수가 부호화되었는지의 여부를 결정한다. 트리의 모든 계수가 부호화되지 않았으면, 처리 로직은 현재 계수를 트리의 다음 계수로 설정하고(처리 블록 1912) 처리 블록 1903으로 이동한다. 트리의 모든 계수가 부호화되었으면 처리 블록 1913으로 이동하고 여기에서 처리로직은 모든 트리가 부호화되었는지의 여부를 테스트한다. 모든 트리가 부호화되지 않았으면, 처리 로직은 현재 트리를 다음 트리로 설정하고(처리 블록 1914) 처리블록 1902에서 계속된다. 모든 트리가 부호화되었으면 처리는 끝난다.At processing block 1911, the processing logic determines whether all coefficients of the tree have been coded. If all the coefficients of the tree have not been coded, processing logic sets the current coefficient to the next coefficient in the tree (processing block 1912) and moves to processing block 1903. If all the coefficients of the tree have been coded, go to processing block 1913 where the processing logic tests whether all of the trees have been coded. If all the trees have not been coded, processing logic sets the current tree to the next tree (processing block 1914) and continues at processing block 1902. If all the trees are coded, the process ends.

한 번에 웨이블릿 트리를 처리하는 것은 중요하지 않을 수 있으나, 변환으로 인하여 데이터를 그러한 오더로 읽고 쓸 수 있으므로 편리하다. 데이터가 웨이블릿 트리에 의하여 처리되면 컨텍스트 지연까지의 비트는 DD, SD, DS 계수간을 교대시킴(서브트리사이를 교대함)으로써 수용될 수 있다. 그렇지 않으면 한 번에 하나의 서브 대역이 부호화될 수 있다. 선택된 오더에 관계없이 다른 서브대역의 정렬로 인한 사용되지 않은 헤드/테일 비트는 부호화되지 않고 아이들(idle) 사이클을 필요로 하지 않는다.Treating a wavelet tree at a time may not be important, but it is convenient because it allows data to be read and written with such orders. Once the data is processed by the wavelet tree, the bits up to the context delay can be accommodated by alternating between DD, SD, and DS coefficients (alternating between subtrees). Otherwise, one subband can be coded at a time. Regardless of the order selected, unused head / tail bits due to alignment of other subbands are not encoded and do not require an idle cycle.

도 20은 미리보기와 덜 중요한 데이터의 콘텍스트 모델의 일 실시예의 블록 다이어그램이다. 한 실시예에서, 가장 중요한 데이터와 덜 중요한 데이터는 부호, 헤드, 테일 비트의 조절을 제공하는 같은 컨텍스트 모델(CM)을 사용한다.Figure 20 is a block diagram of one embodiment of a context model of preview and less important data. In one embodiment, the most important data and less important data use the same context model (CM), which provides modulation of the sign, head, and tail bits.

도 20을 참고하면, 컨텍스트 모델 2001-1003은 입력 데이터에 연결된다. 부호 컨텍스트 모델 2001은 테일-온 비트, 부호/첫번째 테일 비트 신호, 데이터를 수신하도록 연결된다. 헤드 비트 컨텍스트 모델 2002는 테일-온 비트, 데이터를 수신하도록 연결된다. 테일 비트 컨텍스트 모델 2003은 테일-온 비트, 부호/첫번째 테일 비트 신호, 데이터를 수신하도록 연결된다. 그들의 입력에 응답하여, 각 컨텍스트 모델 2001-2003은 컨텍스트를 발생한다.Referring to FIG. 20, the context model 2001-1003 is connected to input data. The sign context model 2001 is coupled to receive a tail-on bit, a sign / first tail bit signal, and data. Head bit context model 2002 is coupled to receive tail-on bit data. The tail bit context model 2003 is coupled to receive a tail-on bit, a sign / first tail bit signal, and data. In response to their input, each context model 2001-2003 generates a context.

컨텍스트 모델 2001-2003에 의하여 발생된 컨텍스트는 먹스 2004의 입력에 연결된다. 먹스 2004는 이전의 비트와 비트 중요도 표현 자체에 의하여 제어된다. 헤드 컨텍스트 모델 2002는 데이터 입력에 1 비트가 보일 때까지 사용된다. 부호 컨텍스트 모델 2001은 마지막 비트가 헤드의 첫 번째 1 비트일 때까지 사용된다. 그런 다음, 테일 컨텍스트 모델 2003이 사용된다.Context generated by context model 2001-2003 is connected to input of mux 2004. Mux 2004 is controlled by the previous bits and the bit importance representation itself. The head context model 2002 is used until one bit is seen in the data input. The sign context model 2001 is used until the last bit is the first 1 bit of the head. Then, the tail context model 2003 is used.

먹스 2004의 출력이 =헤드? 유니트 2005와 FIFO(first-in/first-out) 버퍼 2006에 연결된다. =헤드? 유니트 2005는 현재 컨텍스트가 이웃과 부모(parent)에 0 헤드 비트를 갖는 헤드 비트 컨텍스트인지의 여부를 테스트한다. 모든 컨텍스트가 헤드에 있으면, =헤드? 유니트 2005의 신호는 FIFO 2006을 삭제한다.Mux 2004 output = head? Unit 2005 and a first-in / first-out (FIFO) buffer 2006. = Head? Unit 2005 tests whether the current context is a head bit context having 0 head bits for the neighbor and the parent. If all the contexts are in the head, = head? The signal of unit 2005 deletes the FIFO 2006.

컨텍스트와 결과는 FIFO 2006 또는 미리보기 구간의 다른 메모리에서 버퍼링된다. 구간의 끝에서, 필요하면 미리보기 디시전(decision) 그리고/또는 개개의 디시전이 부호화된다. 계수가 한 번에 1 웨이블릿 트리로 처리되면, 미리보기의 FIFO는 모든 서브대역에 사용되는 단일 FIFO일 수 있으며 또는 각 서브대역에 하나씩 사용되는 다중 FIFOs가 사용될 수 있다.Context and results are buffered in FIFO 2006 or other memory in the preview section. At the end of the interval, a preview decision and / or an individual decision are encoded if necessary. If the coefficients are processed as one wavelet tree at a time, the FIFO of the preview can be a single FIFO used for all subbands, or multiple FIFOs used for each subband can be used.

멀티플렉싱을 줄이는 것이 편리하면 가장 중요한 데이터는 미리보기를 또한 사용할 수 있다. 그러나, 각 트리에 미리보기와 첫 번째 비트평면을 모두 사용하는 것은 다소 불필요할 수 있다.If it is convenient to reduce multiplexing, the most important data can also be previewed. However, using both the preview and the first bit plane in each tree may be somewhat unnecessary.

하나의 성분에 할당된 코어가 부호 비트를 부호화하면, 같은 비트평면에서 부호 비트를 부호화하지 않는 다른 성분에 할당된 코어는 아이들(idle)하다. 그리하여, 각 코어가 다른 비트평면의 부호 비트를 부호화하면 부호 비트에 4 클럭 사이클까지 사용될 수 있다. 한 실시예에서, 계수당 6 헤드 또는 테일 비트까지 있다.When a core assigned to one component codes a sign bit, the core allocated to another component that does not code the sign bit in the same bit plane is idle. Thus, up to four clock cycles can be used for the sign bit if each core encodes the sign bit of the other bit plane. In one embodiment, there are up to six heads or tail bits per coefficient.

하나의 가능한 타이밍 문제는 MIC가 충분히 압축되어 그 데이터 부분을 디코딩하는 동안 디스크는 아이들(idle)이다. 대역 버퍼에 충분한 메모리 대역폭이 있으면 미리보기는 가장 중요한 데이터를 더 빠르게 처리하도록 사용될 수 있다. 그리고나서 덜 중요한 데이터는 헤드 스타트를 가질 수 있다. 또한 디스크가 최대 유지 속도보다 더 높은 버스트 전송 속도를 갖는다면 좋다. 하드 디스크는 보통 중요 버퍼를 갖고 이 버퍼로 미리 읽는 것이 아이들 시간을 제거한다.One possible timing problem is that the disk is idle while the MIC is sufficiently compressed to decode that data portion. If the bandwidth buffer has enough memory bandwidth, the preview can be used to process the most important data faster. Less critical data can then have a head start. It is also acceptable if the disk has a burst transfer rate higher than the maximum sustained rate. Hard disks usually have critical buffers and pre-reading them into this buffer removes idle time.

컨텍스트 모델의 일부 조절Partial adjustment of the context model

컨텍스트 모델에 사용되는 조절은 하드웨어 비용대 압축의 트레이드-오프(trade-off)에 의존한다. 그리하여 다음 섹션에서, 설계자가 고려할 조절을 위한 많은 옵션이 제공된다.The adjustments used in the context model depend on the hardware cost versus the trade-off of compression. Thus, in the next section, a number of options are provided for the designer to consider.

SS 계수의 컨텍스트 모델Context model of SS factor

컨텍스트 모델의 한 실시예에서, SS 계수는 부호화되지 않는다. 그들은 단지 원래 데이터의 1/256을 구성하기 때문에 그들을 코딩할 게인이 거의 없다. 그들을 코딩할 필요가 있으면, 그들은 그레이(Gray) 코딩, 동일 계수의 이전 비트에 대한, 그리고/또는 이전 계수의 해당 비트에 대한 조절에 의하여 취급될 수 있다.In one embodiment of the context model, the SS coefficients are not encoded. Since they only constitute 1/256 of the original data, there is little gain to code them. If they need to be coded, they can be handled by Gray coding, by adjusting for the previous bit of the same coefficient, and / or the corresponding bit of the previous coefficient.

첫 번째 비트평면 정보의 컨텍스트 모델The context model of the first bit plane information

각 웨이브릿 트리의 가장 중요한 데이터에 대한 첫 번째 비트평면 정보의 4 비트는 SS 계수에서도 유사하게 다룰 수 있다. 이것은 원래 데이터의 크기를 단지 1/512만큼 증가시킨다. 한 실시예에서, 원래의 데이터와 비교하여 그들의 작은 크기로 인하여 그들은 부호화되지 않을 수 있으며 또는 그레이 코딩과 조절을 수행할 수 있다.The 4 bits of the first bit plane information for the most important data of each wavelet tree can be handled similarly in the SS coefficients. This increases the original data size by only 1/512. In one embodiment, due to their small size compared to the original data, they may not be encoded or may perform gray coding and adjustment.

유사하게, 도 15에 따라 6 비트가 사용되면 SS 계수와 같이 다룰 수 있다.Similarly, if six bits are used according to FIG. 15, they can be handled like SS coefficients.

헤드 비트의 컨텍스트 모델Head bit's context model

도 21은 헤드 비트에 대한 조절을 제공하는 컨텍스트 모델의 일 실시예의 블록 다이어그램이다. 도 21에 의하면, 컨텍스트 모델 2100은 비트평면 컨텍스트 모델에 있는 것과 같은 쉬프트 레지스터를 포함한다. 중요한 차이점은 현재의 비트평면으로부터 이전의 계수를 사용하는 대신에 모든 이전 비트평면과 현재의 비트평면에서 이전에 부호화된 정보를 사용하는 테일-온 정보에 기초하여 조절되는 것이다. 또한, 어떤 비트는 중요도 레벨과 서브대역 버킷팅(bucketing)에 의하여 발생된 비트평면 부호화 비율 또는 비트평면 그룹의 부호화 비율 또는 서브대역 또는 서브대역 그룹의 부호화 비율을 식별한다.Figure 21 is a block diagram of one embodiment of a context model that provides adjustment for head bits. According to Fig. 21, the context model 2100 includes a shift register such as that in the bit plane context model. The important difference is that instead of using the previous coefficients from the current bit plane, it is adjusted based on tail-on information using previously encoded information in all previous bit planes and the current bit plane. Also, some bits identify the bit plane coding rate or bit plane group coding rate or the coding rate of the subband or subband group generated by the importance level and subband bucketing.

도 21에 의하면, 컨텍스트 모델은 현재 중요도 레벨 2110과 메모리로부터의 계수 2111의 두 입력을 포함한다. 현재 중요도 레벨 2110은 테일-온 정보/비트 발생기 블록 2101과 중요도 레벨과 서브대역 버킷팅 블록의 입력에 연결된다. 메모리로부터의 계수는 또한 블록 2101과 레지스터 2103-2106에 연결된다.21, the context model includes two inputs: a current importance level 2110 and a coefficient 2111 from memory. The current importance level 2110 is coupled to the tail-on information / bit generator block 2101 and the input of the importance level and subband bucketing block. The coefficients from memory are also coupled to block 2101 and registers 2103-2106.

블록 2101은 계수를 취하여 1 비트가 있는지의 여부를 결정한다. 한 실시예에서, 2101은 또한 어디에 1 비트가 있는지 결정한다. 블록 2101의 출력은 테일-온 정보에 기초하여 1 또는 2 비트이다. 한 실시예에서, 테일-정보는 첫 번째 논-제로 크기의 비트가 관측되었는지(예를들면, 첫 번째 온-비트가 관측되었는지)의 여부와 관계되고, 그렇다면, 얼마나 많은 비트평면 이전에 대하여 관계한다. 표 6은 테일-정보 비트를 설명한다.Block 2101 takes a coefficient and determines whether there is one bit. In one embodiment, 2101 also determines where one bit is present. The output of block 2101 is one or two bits based on the tail-on information. In one embodiment, the tail-information relates to whether a bit of the first non-zero size is observed (e.g., whether the first on-bit is observed) and if so, how many bit- do. Table 6 describes the tail-information bits.

테일 정보의 정의Definition of tail information 테일Tail 정의Justice 01230123 온-비트가 관측되지 않음첫 번째 온-비트가 마지막 비트평면에 있음첫 번째 온-비트가 2 또는 3 비트평면전에 있음첫 번째 온-비트가 3 이상의 비트평면전에 있음On-bit is not observed First on-bit is in last bit plane First on-bit is before 2 or 3 bit planes First on-bit is before 3 or more bit planes

2-비트 테일 정보로부터, 1-비트 테일-온값은 테일 정보가 0인지 여부를 나타내도록 합성된다. 한 실시예에서, 테일-정보와 테일-온 비트는 계수가 부호화된 후 바로 업데이트(update)된다. 다른 실시예에서, 업데이팅은 나중에 발생하여 병렬 컨텍스트 발생을 가능하도록 한다.From the 2-bit tail information, the 1-bit tail-on value is synthesized to indicate whether the tail information is zero. In one embodiment, the tail-information and tail-on bits are updated immediately after the coefficients are encoded. In another embodiment, updating may occur later to enable parallel context generation.

또한, 2 비트는 부호화되고 있는 중요도 레벨을 나타내는데 사용될 수 있다. 첫 번째 2 비트평면은 값 0을, 두 번째 2 비트평면은 값 1을, 세 번째 2 비트평면은 값 2를, 나머지 비트평면은 3을 사용한다. 또한, 모두 제로 헤드 비트인 비트의 런-길이 엔코딩이 있다.Also, two bits can be used to indicate the level of importance being encoded. The first 2-bit plane uses the value 0, the second 2-bit plane uses the value 1, the third 2-bit plane uses the value 2, and the remaining bit planes use 3. There is also run-length encoding of bits, which are all zero head bits.

헤드 비트의 컨텍스트 10 비트는 각각 부모(parent)와 서쪽 계수로부터의 2비트 정보, 각각 북쪽, 동쪽, 남서쪽, 남쪽 계수로부터 1비트 정보, 2비트의 중요도 레벨 정보를 포함한다.The context 10 bits of the head bit include two bits of information from the parent and the west coefficients, respectively, one bit information from the north, east, south west, and south coefficients, and two bits of importance level information.

한 실시예에서, 테일 정보는 어떤 또는 모든 주파수 대역에 대하여 사용되지 않는다. 이것으로 주파수 대역이 미리 그것의 부모(parent)를 디코딩하지 않고도 디코딩될 수 있다.In one embodiment, tail information is not used for any or all frequency bands. This allows the frequency band to be decoded without decoding its parent in advance.

다른 실시예에서, 각 주파수 대역의 비트평면을 중요도 레벨에 할당하는데 하나의 정렬을 사용한다. 부모(parent)의 테일-온 정보를 결정하는데 두 번째 정렬을 사용하며 이것은 실질적으로 부호화되는 것 보다 적은 부모(Parent)의 비트평면을 사용한다. 이것으로 주파수 대역의 어떤 비트평면은 같은 중요도 레벨의 부의 해당 비트평면을 디코딩하지 않고 복호화될 수 있다(도 38). 예를들면, 화상은 피라미드 정렬로 부호화될 수 있다. 그러나 MSE 정렬에 기초한 부모 테일-온 정보로 부호화된다(도 39). 이것으로 디코더는 피라미드 정렬로 복호화하고, MSE 정렬을 시뮬레이션하며, 또는 피라미드와 MSE사이의 어떤 정렬도 시뮬레이션할 수 있다.In another embodiment, one alignment is used to assign the bit planes of each frequency band to the importance level. It uses a second alignment to determine the parent's tail-on information, which uses fewer parent bits than is actually encoded. This allows certain bit planes of the frequency band to be decoded without decoding the corresponding bit planes of the same significance level (Fig. 38). For example, an image can be encoded in a pyramid alignment. But is encoded into parent tail-on information based on MSE alignment (Figure 39). This allows the decoder to decode with pyramid alignment, simulate MSE alignment, or simulate any alignment between the pyramid and the MSE.

도 21에 의하면, 블록 2101의 출력은 레지스터 2103-2106의 입력에 연결된다. 레지스터 2103-2106은 이웃 데이터를 축적한다. 예를들면, 상/좌 쉬프트 레지스터는 위의 현재 계수인 라인동안 비트를 유지한다. 현재 쉬프트 레지스터는 계수의 현재 라인의 비트를 포함하고, 반면에 하/우 쉬프트 레지스터 2105는 쉬프트 레지스터 바로 밑 라인부터의 라인을 포함한다. 마지막으로, 부모(parent) 레지스터 2106은 부모(parent) 데이터를 유지한다. 쉬프트 레지스터의 출력은 컨텍스트를 구성한다.According to Fig. 21, the output of block 2101 is connected to the inputs of registers 2103-2106. Registers 2103-2106 accumulate neighboring data. For example, the Up / Left shift register maintains a bit during the line, which is the current coefficient above. The current shift register contains the bits of the current line of the coefficient, while the lower / right shift register 2105 contains the line from the line immediately below the shift register. Finally, the parent register 2106 holds the parent data. The output of the shift register constitutes a context.

중요도 레벨과 버킷팅 블록 2102의 출력은 또한 컨텍스트를 위하여 사용될 수 있다. 서브대역과 다른 레벨이 같은 컨텍스트로 부호화되는 경우 컨텍스트의 일부가 된다. 그러한 경우, 블록 2102의 출력은 레지스터 2103-2106의 출력과 결합하여 컨텍스트를 형성한다. 그렇지 않은 경우, 컨텍스트는 단지 레지스터 2103-2106의 출력만 포함한다.The importance level and the output of bucketting block 2102 may also be used for context. When subbands and other levels are encoded in the same context, they become part of the context. In such a case, the output of block 2102 combines with the output of registers 2103-2106 to form a context. Otherwise, the context only includes the output of registers 2103-2106.

또한 컨텍스트 모델 2100의 출력은 비트이다.The output of the context model 2100 is also a bit.

코딩은 DD, SD, DS 계수간을 교대함으로써 이루어 질 수 있고 현재의 비트평면의 데이터를 사용하기 위하여 컨텍스트 지연까지의 비트를 허용한다(서브트리간을 교대함).Coding can be done by alternating between the DD, SD, and DS coefficients and allows bits up to the context delay (alternating between subtrees) to use the data in the current bit plane.

조절을 위하여 필요한 계수를 저장하는데 메모리가 필요하다(도 17). 모든 이웃과 부모(parent)에 대한 조절을 갖는 컨텍스트 모델의 한 실시예에 대한 메모리의 사용은 도 22에 도시된다. 짧은 심 변환 오더를 가정한다. (긴 심 변환 오더를 지원하기 위하여 외부 메모리를 사용할 수 있다. 이것은 부가 메모리 저장과 대역폭을 필요로 한다).Memory is needed to store the coefficients needed for adjustment (Figure 17). The use of memory for one embodiment of the context model with adjustments to all neighbors and parents is shown in FIG. Assume a short shorthand order. (You can use external memory to support long shorthand orders, which requires additional memory storage and bandwidth).

상위 레벨 부모(parent)에 대한 조절은 특히 비용이 많이 든다. 주어진 트리의 레벨 4 DD 계수는 그 트리의 대부분의 레벨 1 DD 계수보다 16 트리 다음까지 계산되지 않는다. 또한 나중에 부호화되는 전체 계수(도 22에서 빗금치지 않은 부분)를 저장하는 것은 나중에 조절에서의 사용을 위하여 테일-온 정보(도 22에서 그물친 부분)를 단지 저장하는 것보다 비용이 많이 든다. 동일 트리에 있는 서쪽 정보와 서쪽 트리로부터 데이터없이 발생되는 부모(parent)에 대하여 조절하는 것은 필요한 메모리의 양을 줄여준다. 부모 또는 서쪽 정보를 얻을 수 없는 경우는 북쪽 또는 동쪽의 정보를 복사하는 것이 유용하다.Adjustment to higher-level parents is particularly costly. The level 4 DD coefficients of a given tree are not calculated up to 16 trees after most level 1 DD coefficients of the tree. Also, storing the total coefficients that are later encoded (unhatched portions in FIG. 22) is more expensive than simply storing the tail-on information (netted portion in FIG. 22) for later use in adjustment. Adjusting for the west information in the same tree and the parent without data from the western tree reduces the amount of memory required. If you can not get parent or west information, it is useful to copy north or east information.

부호 비트의 컨텍스트 모델The context model of the sign bit

부호 비트에 대한 조절을 제공하는 컨텍스트 모델은 간단하다. 위의 화소의 부호를 알면 조절을 위하여 사용할 수 있다. 위의 화소의 부호를 알지 못하면 비트는 부호화되지 않는다.(R2(0)가 사용된다. 다른 방법으로, 모든 부호 비트에 대하여 노 코딩(no coding)(R2(0))이 사용될 수 있다)The context model that provides control over the sign bits is simple. Knowing the sign of the above pixel can be used for adjustment. (R2 (0) is used.) Alternatively, no coding (R2 (0) can be used for all sign bits) is not performed if the sign of the above pixel is not known

도 23은 부호 비트에 대한 컨텍스트 모델의 한 실시예를 도시한 블록 다이어그램이다. 도 23에 의하면 먹스 2301은 북쪽 부호 비트 2303과 0 비트 2304(배선됨)를 수신하고 북쪽 테일 온 비트 2302에 의하여 제어되어 북쪽 테일 온 비트 2302가 1이면 북쪽 부호 비트 2303을 출력하고 그렇지 않으면 0을 출력한다. 그리하여 북쪽 화소는 북쪽 테일 온 비트 2302와 북쪽 부호 비트 2303을 공급하고 북쪽 화소의 남쪽 화소에 대한 컨텍스트를 제공한다.23 is a block diagram illustrating an embodiment of a context model for sign bits. 23, the MUX 2301 receives the northern sign bit 2303 and the 0 bit 2304 (wired) and is controlled by the north tail on bit 2302 to output the north sign bit 2303 if the north tail on bit 2302 is 1, Output. Thus, the north pixel supplies the north tail-on bit 2302 and the north sign bit 2303 and provides the context for the south pixel of the north pixel.

테일 비트의 컨텍스트 모델Tailbit's Context Model

테일 비트에는 조절이 사용되지 않는다. 한 실시예에서, 고정 확률 상태가 사용되고, 확률 갱신은 사용되지 않는다. 표 7은 테일 비트에 사용되는 코드의 3가지 옵션을 나타낸다. R2(1)와 R2(0)를 사용하는 두 번째 옵션은 좋은 선택이다.No adjustments are used for tail bits. In one embodiment, a fixed probability state is used, and a probability update is not used. Table 7 shows three options of code used for tail bits. The second option using R2 (1) and R2 (0) is a good choice.

테일 비트에 사용되는 확률 상태(코드)Probability state (code) used for tail bits 테일의 비트Bit of tail 1 2,3 4,...1 2 3 4, ... 옵션 1옵션 2옵션 3Option 1 Option 2 Option 3 R2(1) 황금비 코드 R2(0)R2(1) R2(0) R2(0)R2(0) R2(0) R2(0)R2 (0) R2 (0) R2 (0) R2 (0) R2 (0) R2 (0)

한 실시예에서, M≒60% L≒40%의 확률에 좋은 황금비 코드는:In one embodiment, a good golden ratio code for a probability of M = 60% L = 40% is:

입력 코드워드Input codeword

MMM 00MMM 00

MML 110MML 110

ML 01ML 01

LM 10LM 10

SS 111SS 111

컨텍스트 빈 요약Context bean summary

시스템에서 사용될 수 있는 컨텍스트 빈의 최소수는 다음과 같다. SS, 각 트리의 첫 번째 비트평면, 부호와 테일 비트는 모두 부호화되지 않는다(코드는 R2(0)가 사용됨). 비록 PEM 상태 또는 MPS(most probable symbol) 비트가 저장될 필요가 없더라고 R2(0) 코드를 선택하는 로직은 있어야 한다. 그리하여 어떻게 이것이 카운트되는가에 따라 하드웨어 비용은 제로 또는 1 컨텍스트 빈이다. 헤드 비트에는 적응 코딩을 사용하여야 한다. 덜 중요한 데이터에 대하여, 한 번에 하나의 비트평면이 부호화되므로 비트평면에 대한 조절은 중요하지 않다. 가장 중요한 데이터에 대하여, 각 웨이블릿 트리의 첫 번째 비트평면은 비트평면 수를 충분히 줄여서 비트평면에 대한 조절은 중요하지 않다. 서브대역에 대한 조절의 유용성이 무엇인지는 덜 명확하지만, 이 또한 여기의 최소 컨텍스트 예에서는 무시할 것이다. 3 이웃과 1 부모(parent)의 테일-온 비트가 전체 4 비트(16 컨텍스트 빈)에 사용될 수 있다. 하나의 부가 컨텍스트 빈은 미리보기에 사용될 수 있다. (2 헤드 컨텍스트 빈을 함께 매핑하여 미리보기에 대한 여유를 만드는 것이 더 편리할 수 있다. 메모리 크기는 여전히 2의 거듭제곱이다.)The minimum number of context beans that can be used in the system is: SS, the first bit plane of each tree, and the sign and tail bits are not encoded (code R2 (0) is used). There must be logic to select the R2 (0) code even though the PEM state or most probable symbol (MPS) bits do not need to be stored. Thus, depending on how this is counted, the hardware cost is zero or one context bin. Adaptive coding should be used for head bits. For less important data, the adjustment to the bit plane is not important since one bit plane is encoded at a time. For the most important data, the first bit plane of each wavelet tree is sufficiently shortened by the number of bit planes so adjustment to the bit planes is not important. It is less clear what the usefulness of the control on subbands is, but this will also be ignored in the minimal context example here. The tail-on bits of 3 neighbors and one parent may be used for the entire 4 bits (16 context beans). One additional context bean can be used for previewing. (It may be more convenient to create a margin for the preview by mapping the two head context beans together. Memory size is still a power of 2.)

4 코어(컨텍스트를 4번 복제하는 것을 요구함), 코어당 2 컨텍스트 메모리 뱅크를 가지고, 사용할 컨텍스트 빈의 최소수는 부호화되지 않은 컨텍스트를 어떻게 카운트하고 2 헤드 컨텍스트가 함께 매핑되었는지의 여부에 따라 128과 144의 사이이다.With four cores (requiring four contexts to be replicated), two context memory banks per core, the minimum number of context beans to use is 128, depending on how the uncoded context is counted and whether the two head contexts are mapped together. Lt; / RTI >

풍부한 양의 조절을 갖는 시스템은 다음과 같다.A system with an abundant amount of control is as follows.

. SS(9-비트)와 첫 번째 비트평면(4 비트)에 대하여, 비트당 4 컨텍스트 빈을 사용하여 전체 52 컨텍스트 빈을 사용함.(이들은 뱅크로 분할될 수 있고 그들은 복제될 필요는 없다). For the SS (9-bit) and the first bit plane (4 bits), use a total of 52 context beans with 4 context beans per bit (they can be divided into banks and they do not need to be replicated)

. 테일 비트는 부호화되지 않지만, R2(0)와 R2(1) 모두 사용된다. 어떻게 이것이 카운트되는가에 따라 이것은 0,1,2 컨텍스트 빈이 든다.. The tail bits are not encoded, but both R2 (0) and R2 (1) are used. Depending on how this is counted, this is a 0, 1, 2 context bean.

. 2개의 적응 컨텍스트와 1개의 노 코드(no code) 컨텍스트가 부호 비트에 사용된다.. Two adaptation contexts and one no code context are used for sign bits.

.헤드 비트는 이웃/부모로부터 8비트와 서브대역/비트평면 정보를 위한 2비트를 사용할 수 있다.(1024 컨텍스트 빈)The head bit can use 8 bits from neighbor / parent and 2 bits for subband / bit plane information (1024 context beans).

. 1 컨텍스트가 미리보기에 사용된다.. 1 Context is used for preview.

컨텍스트 모델의 다른 실시예는, 입력 계수를 부호/크기 포맷으로 변환하는 부호/크기 유니트의 실시예를 포함하여, 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에 설명되어 있다.Another embodiment of the context model is disclosed in US patent application Ser. No. 09 / 954,856, filed June 30, 1995, which is incorporated by reference herein in its entirety, including embodiments of code / size units for transforming input coefficients into sign / U.S. Patent Application Serial No. 08 / 498,695 entitled Codestream and U.S. Patent Application Serial No. 08 / 498,036 entitled Reversible Wavelet Transform and Embedded Codestream Manipulation filed on June 30, 1995, and Compression and No. 08 / 642,518, titled Decompression with Wavelet Style and Binary Style, Including Quantization by Device-Dependent Parsar, and U.S. Patent Application No. 08 / 642,518, entitled Compression / Decompression Using Reversible Embedded Wavelets, filed May 3, 643,268.

컨텍스트 모델은 데이터의 엔트로피 코딩에 컨텍스트를 제공한다. 한 실시예에서 본 발명에 의하여 수행되는 모든 엔트로피 코딩은 2진 엔트로피 코더에 의하여 수행된다. 단일 출력 코드스트림을 생성하기 위하여 단일 코더를 사용할 수 있다. 다른 방법으로, 다중(물리적 또는 가상적) 데이터 스트림을 생성하기 위하여 다중(물리적 또는 가상적) 코더를 채용할 수 있다.The context model provides context for entropy coding of data. In one embodiment, all entropy coding performed by the present invention is performed by a binary entropy coder. A single coder can be used to generate a single output code stream. Alternatively, multiple (physical or virtual) coder may be employed to generate multiple (physical or virtual) data streams.

LIC의 M-ary 코딩M-ary coding of LIC

도 24는 LIC에 대한 M-ary 코딩의 사용을 설명한다. 감소된 코딩을 위한 M-ary는 미리보기로서 동작한다. 처음에, 다음의 8 계수의 상태를 조사한다. 헤드에 무엇인가 있으면, 엔트로피 코딩이 헤드 비트에 대하여 수행되고 8에 있는 모든 비트가 부호화될 때까지 사이클당 하나씩 엔트로피의 모든 헤드 비트가 부호화된다. 도 24에 의하면, 1인 헤드 비트는 첫 번째와 세 번째 사이클에서 부호화되고 반면에 0인 헤드 비트는 두 번째와 네 번째 사이클에서 부호화된다. 일단 헤드 비트 모두가 엔트로피 부호화되면, 부호와 테일 비트는 같은 사이클에서 부호화하다. 예를들면, 도 24에서1인 헤드 비트를 따라온 부호와 테일 비트는 다섯 번째 사이클에서 부호화하다. 이 방식으로, 전 사이클의 수가 감소된다.Figure 24 illustrates the use of M-ary coding for LIC. M-ary for reduced coding acts as a preview. First, examine the state of the next eight coefficients. If there is something in the head, entropy coding is performed on the head bit and all head bits of the entropy are encoded, one per cycle, until all the bits in 8 are encoded. Referring to FIG. 24, a head bit of 1 is encoded in the first and third cycles, while a head bit of 0 is encoded in the second and fourth cycles. Once all of the head bits are entropy encoded, the sign and tail bits are encoded in the same cycle. For example, in FIG. 24, a code followed by a head bit and a tail bit are encoded in the fifth cycle. In this way, the number of total cycles is reduced.

[본 발명의 프린팅 시스템 응용례][Application example of printing system of the present invention]

도 25는 프린터 전단의 한 실시예의 블록 다이어그램이다. 도 25에 의하면, 렌더러(renderer) 2501은 데이터를 페이지 표현 언어 또는 표시 리스트의 형태로 수신한다. 렌더러 2501은 래스터 화상 처리를 포함할 수 있다. 각 위치에 대하여(예를들면, 점), 렌더러 2501은 그 색을 결정한다(예를들면, 응용례에 따라 흑/백, 8-비트-RBG 값, 8 비트 CMYK 값). 렌더러 2501의 출력은 대역에 포맷되어 밴드 버퍼(메모리) 2503에 저장된 화소 세트이다.25 is a block diagram of one embodiment of the printer front end. Referring to FIG. 25, a renderer 2501 receives data in the form of a page rendering language or a display list. The renderer 2501 may include raster image processing. For each position (e.g., dots), the renderer 2501 determines its color (e.g., black / white, 8-bit-RBG values, 8-bit CMYK values in accordance with the application). The output of the renderer 2501 is a set of pixels that are formatted into bands and stored in a band buffer (memory) 2503.

다른 실시예에서, Adobe Postscript 또는 Microsoft Window GDI와 같은 페이지 표현 언어(PDL)는 표시 리스트에 주어진다. 표시 리스트는 화소의 대역을 발생하는데 사용된다. 이 실시예에서, 화소는 연속-톤 값을 나타내고 프린트 엔진에 의하여 요구되는 하프토닝(halftoning)과 디더링(dithering)은 복원 후에 수행된다.In another embodiment, a page presentation language (PDL), such as Adobe Postscript or Microsoft Window GDI, is presented in the display list. The display list is used to generate a band of pixels. In this embodiment, the pixel represents a continuous-tone value and the halftoning and dithering required by the print engine are performed after reconstruction.

본 발명에서, 대역 버퍼 2503에 사용되는 메모리는 또한 압축의 동작공간으로 사용된다(필요한 메모리의 증가없이). 이 양쪽 사용에 대하여 아래에서 더 상세하게 설명한다.In the present invention, the memory used in the band buffer 2503 is also used as a working space for compression (without increasing the required memory). Both of these uses will be described in more detail below.

압축기 2504는 화소의 각 대역을 압축한다. 압축기 2504의 입력이 하프톤 또는 떨리는 화소이면 압축기 2504는 계속 동작하지만 이루어진 압축은 웨이블릿 처리에 만족스럽지 못할 것이다. 하프톤 또는 떨리는 화상에는 2진 컨텍스트 모델을 사용할 수 있다. 압축기 2504는 압축된 데이터를 디스크 2505에 기록한다. 디스크 2505는 하드 디스크일 수 있다. 다른 실시예에서, 디스크는 RAM(random access memory), 플래쉬 메모리, 광 디스크, 테이프, 어떤 형태의 저장 수단, 어떤 형태의 통신 채널이 될 수 있다.A compressor 2504 compresses each band of pixels. If the input of the compressor 2504 is a halftone or trembling pixel, then the compressor 2504 will continue to operate, but the compression made will not be satisfactory for wavelet processing. A binary context model can be used for halftone or trembling images. The compressor 2504 records the compressed data on the disk 2505. The disk 2505 may be a hard disk. In another embodiment, the disc may be a random access memory (RAM), a flash memory, an optical disc, a tape, any form of storage, any type of communication channel.

도 26은 프린터 후단의 일 실시예의 블록 다이어그램이다. 도 26에 의하면, 프린터 2500의 후단은 디스크 2505에 연결되는 복원기 2602, 대역 버퍼(메모리) 2603, 프린트 엔진 2604를 포함한다. 복원기 2602는 하드 디스크 2505로부터 압축된 데이터를 읽어 복원한다. 복원된 데이터는 대역 버퍼(메모리) 2603에 화소의 형태로 저장된다. 대역 버퍼 2603은 압축기 2504의 동작공간으로서 동작하는 대역 버퍼 2503과 동일한 메모리이다. 복원기 2602는 대역 버퍼 2603을 충분히 채워서 화소가 프린트 엔진 2604에 실시간으로 전송될 수 있도록 한다.26 is a block diagram of an embodiment of the printer rear end. 26, the rear end of the printer 2500 includes a restorer 2602 connected to the disk 2505, a band buffer (memory) 2603, and a print engine 2604. The restoring unit 2602 reads and restores the compressed data from the hard disk 2505. The restored data is stored in the band buffer (memory) 2603 in the form of pixels. The band buffer 2603 is the same memory as the band buffer 2503 which operates as the operating space of the compressor 2504. The restorer 2602 sufficiently fills the band buffer 2603 so that the pixel can be transmitted to the print engine 2604 in real time.

도 27은 옵션을 포함하는 다른 실시예이다. 도 27에 의하면, 복원기 2602로부터의 화소는 증진 블록 2705를 경유하여 대역 버퍼 2603으로 가는 반면에 화소가 아닌 정보(부분적 계수)인 다른 정보는 대역 버퍼 2603으로 직접 보내진다. 증진 블록 2705는 보간(interpolation), 평활(smooth), 에러 분포, 하프토닝(halftoning), 디더링(dithering)과 같은 기능을 수행한다.Figure 27 is another embodiment that includes options. 27, the pixel from the reconstructor 2602 goes to the band buffer 2603 via the enhancement block 2705, while the other information, which is not the pixel (partial coefficient), is directly sent to the band buffer 2603. [ The enhancement block 2705 performs functions such as interpolation, smoothness, error distribution, halftoning, and dithering.

복원기 2602와 대역 버퍼 2603의 사이에 필요한 대역폭은 복원기 2602가 변환 계수를 대역 버퍼 2603에 기록할 수 있도록 하고 어떤 계수를 얻기 위하여 대역 버퍼 2603에 억세스할 수 있도록 하며 그러한 계수에 역 변환을 수행할 수 있도록 하고 그리고나서 다시 대역 버퍼 2603에 그들을 기록할 수 있도록 한다. 동작 공간 메모리로서 대역 버퍼 2603은 작다. 예를들면, 전 페이지 화상이 64 메가바이트이고 대역 버퍼 2603이 16메가바이트이면, 작은 동작 공간 메모리로 간주될 수 있다.The necessary bandwidth between the reconstructor 2602 and the band buffer 2603 allows the reconstructor 2602 to write the transform coefficients to the band buffer 2603 and to access the band buffer 2603 to obtain a certain coefficient, And then write them back to the band buffer 2603. As the operation space memory, the band buffer 2603 is small. For example, if the full page image is 64 megabytes and the bandwidth buffer 2603 is 16 megabytes, it can be regarded as a small working space memory.

한 실시예에서, 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는 단일 집적 회로 칩에 포함된다.In one embodiment, an A4 image at 400 dpi with 32 bits / pixel (four 8-bit components, CMYK) requires a data rate of approximately 8 Mbytes / s from the band buffer 2603 to the print engine 2604 do. The transfer speed of the exemplary hard disk is about 2 Mbytes per second (for example, 1.7 to 3.5 Mbytes / s). Thus, a typical compression ratio of about 4: 1 is required to match the bandwidth of the disk 2601 to the bandwidth of the printer. In one embodiment, compressor 2504 in Fig. 25 and reconstructor 2602 in Fig. 26 or 27 are included in a single integrated circuit chip.

도 28은 프린터 압축/복원을 포함하는 집적 회로(IC) 칩의 한 실시예의 블록 다이어그램이다. 도 28에 의하면, 화소 데이터 인터페이스 2801화소 데이터를 대역 버퍼로부터 읽고 대역 버퍼에 기록하기 위한 어드레스를 발생한다. 옵션인 가역 색공간2802는 가역 색공간 변환을 수행하기 위하여 포함될 수 있다. 계수 데이터 인터페이스 2804는 계수를 읽고 기록하기 위한 어드레스를 발생하고 2 바이트 계수를 적절히 조합한다. 화소 데이터 인터페이스 2801과 함께 계수 데이터 인터페이스 2804는 외부 메모리에 있는 어떤 라인 버퍼링 또는 계수 버퍼링도 취급한다. 계수 데이터 인터페이스 2804와 가역 색공간의 사용에 대하여 아래에서 더 상세하게 설명한다.28 is a block diagram of one embodiment of an integrated circuit (IC) chip including printer compression / decompression. According to Fig. 28, the pixel data interface 2801 generates an address for reading pixel data from the band buffer and writing it to the band buffer. An optional reversible color space 2802 can be included to perform the reversible color space conversion. The coefficient data interface 2804 generates an address for reading and writing coefficients and combines the 2-byte coefficients as appropriate. The coefficient data interface 2804 along with the pixel data interface 2801 handles any line buffering or coefficient buffering in external memory. The use of the coefficient data interface 2804 and the reversible color space will be described in more detail below.

더블 화살표는 데이터가 둘중 어느 한쪽 방향으로 흐를 수 있음을 나타낸다. 예를들면, 데이터를 압축할 때, 데이터는 왼쪽에서 오른쪽으로 IC 칩의 다른 성분을 통과하여 흐른다. 반면에, 데이터를 복원할 때, 데이터는 일반적으로 오른쪽에서 왼쪽으로 흐른다.A double arrow indicates that the data can flow in either direction. For example, when compressing data, data flows through the other components of the IC chip from left to right. On the other hand, when restoring data, the data generally flows from right to left.

데이터를 코딩할 때, 화소 데이터 인터페이스 2801 또는 가역 색공간 2802(포함되면)로부터의 화소 데이터는 화소 데이터에 대하여 웨이블릿 변환을 수행하는 웨이블릿 변환 블록 2803에 의하여 수신된다. 한 실시예에서, 웨이블릿 변환 블록 2803에 의하여 수행되는 변환은 중첩 웨이블릿 변환이다. 그것은 무손실 그리고 유손실 화상 압축에 대하여 에너지 응축을 제공한다. 유손실 압축에 대하여, JPEG를 괴롭히는 블록 경계 가공물(block boundary artifacts)은 피하였다. 적절하게 정렬되면 필터 계수는 표준화되어 스케일(scale) 양자화는 좋은 유손실 압축 결과를 제공한다. 한 실시예에서, 웨이블릿 변환 블록 2803은 2,6 변환을 수행한다. 다른 실시예에서, 웨이블릿 변환 블록 2803은 2,10 변환을 수행한다. 웨이블릿 변환 블록 2803은 다른 잘 알려진 변환을 수행한다. 웨이블릿 변환 블록 2803의 다양한 구현에 대하여 아래에서 더 상세하게 논의한다.When coding the data, the pixel data from the pixel data interface 2801 or reversible color space 2802 (if included) is received by the wavelet transform block 2803 which performs wavelet transform on the pixel data. In one embodiment, the transform performed by wavelet transform block 2803 is a nested wavelet transform. It provides energy condensation for lossless and lossy image compression. For lossy compression, block boundary artifacts that annoy JPEG were avoided. When properly aligned, the filter coefficients are normalized and scale quantization provides good lossy compression results. In one embodiment, the wavelet transform block 2803 performs a 2,6 transform. In another embodiment, the wavelet transform block 2803 performs a 2,10 transform. The wavelet transform block 2803 performs other well known transforms. Various implementations of the wavelet transform block 2803 are discussed in more detail below.

웨이블릿 변환 블록 2803의 계수 출력은 나중 코딩을 위하여 계수 데이터 인터페이스 2804를 경유하여 메모리(예를들면, 대역 버퍼)에 다시 기록된다. 한 실시예에서, 메모리에 다시 기록된 데이터는 덜 중요한 데이터이고 아래에서 상세히 설명한다. 그러한 데이터는 나중에 IC 칩에 다시 읽혀지고 부호화된다.The coefficient output of the wavelet transform block 2803 is written back to the memory (e.g., the band buffer) via the coefficient data interface 2804 for later coding. In one embodiment, the data written back into the memory is less important and is described in detail below. Such data is later re-read and encoded in the IC chip.

웨이블릿 변환 블록 2803으로부터의, 또는 계수 데이터 인터페이스를 경유하여 수신된 계수 출력은 컨텍스트 모델 2805에 제공된다. 컨텍스트 모델 2805는 엔코더/디코더 2806을 사용하여 데이터를 엔코딩(디코딩)하기 위한 컨텍스트를 제공한다. 한 실시예에서, 컨텍스트 모델 2805는 데이터를 바로 코딩으로 보내도록 지원한다. 이런 식으로, 컨텍스트 모델 2805는 가장 중요한 컨텍스트 모델로서 동작한다. 다양한 컨텍스트 모델을 구현하기 위한 아키텍쳐는 위에서 설명되었다.The coefficient output received from the wavelet transform block 2803 or via the coefficient data interface is provided to the context model 2805. The context model 2805 provides a context for encoding (decoding) data using an encoder / decoder 2806. In one embodiment, the context model 2805 supports sending data directly to the coding. In this way, the context model 2805 operates as the most important context model. The architecture for implementing various context models has been described above.

한 실시예에서, 엔코더/디코더 2806은 고속 병렬 코더를 포함한다. 고속 병렬 코더는 여러 비트를 병렬로 취급한다. 한 실시예에서, 고속 병렬 코더는 압축 수행을 희생하지 않고 VLSI 하드웨어 또는 다중-프로세서 컴퓨터에 구현된다. 본 발명에서 사용되는 고속 병렬 코더의 한 실시예는 1995년 1월 10일에 등록된 Method and Apparatus for Parallel Decoding and Encoding of data의 제목인 미국특허 번호 5,381,145에 설명된다.In one embodiment, the encoder / decoder 2806 includes a high-speed parallel coder. A fast parallel coder handles multiple bits in parallel. In one embodiment, a fast parallel coder is implemented in a VLSI hardware or a multi-processor computer without sacrificing compression performance. One embodiment of a high-speed parallel coder used in the present invention is described in U.S. Patent No. 5,381,145 entitled Method and Apparatus for Parallel Decoding and Encoding of Data, filed on January 10, 1995.

다른 실시예에서, 2진 엔트로피 코더는 Q-코더, QM-코더, 유한 상태 기계 코더, 등에서 하나를 포함한다. Q와 QM-코더는 잘 알려져 있고 효율적인 2진 엔트로피 코더이다. 유한 상태 기계(FSM) 코더는 확률로부터 압축된 비트 스트림으로 출력하는 간단한 변환을 제공한다. 한 실시예에서, 유한 상태 기계 코더는 디코더와 엔코더 모두를 위한 테이블 룩-업(look-up)을 사용하여 구현된다. 다양한 확률 예측 방법은 그러한 유한 상태 기계 코더와 함께 사용될 수 있다. 한 실시예에서, 본 발명의 유한 상태 기계 코더는 1993년 12월 21일 등록된 Method and Apparatus for Entropy Coding의 제목인 미국특허 번호 5,272,478에서 정의된 B-코더를 포함한다.In another embodiment, the binary entropy coder includes one in a Q-coder, a QM-coder, a finite state machine coder, and so on. Q and QM-coder are well-known and efficient binary entropy coders. A finite state machine (FSM) coder provides a simple conversion from a probability output to a compressed bitstream. In one embodiment, a finite state machine coder is implemented using a table look-up for both the decoder and the encoder. Various probability prediction methods can be used with such finite state machine coder. In one embodiment, the finite state machine coder of the present invention includes a B-coder as defined in U.S. Patent No. 5,272,478, entitled Method and Apparatus for Entropy Coding,

엔코더/디코더 2806의 출력은 디스크 또는 다른 저장 매체 또는 다른 채널에 인터페이스를 제공하는 부호화 데이터 인터페이스 2807에 연결된다.The output of the encoder / decoder 2806 is coupled to an encoded data interface 2807 that provides an interface to a disc or other storage medium or other channel.

부호화 데이터 인터페이스 2807은 디스크로부터 부호화된 데이터를 수신하고 송신한다. 한 실시예에서, SCSI 제어기가 침에 포함되면, 그것은 이러한 점에서 구현될 수 있다. 다른 실시예에서 부호화 데이터 인터페이스 2807은 외부의 SCSI 제어기와 통신한다. 논-SCSI 저장 또는 통신이 사용된다.The encoded data interface 2807 receives and transmits the encoded data from the disc. In one embodiment, if a SCSI controller is included in the needle, it can be implemented at this point. In another embodiment, the encoded data interface 2807 communicates with an external SCSI controller. Non-SCSI storage or communication is used.

복원중에, 부호화된 데이터는 부호화 데이터 인터페이스 2807을 경유하여 디스크(또는 다른 메모리 저장 또는 채널)로부터 엔코더/디코더 2806에 의하여 수신되고 컨텍스트 모델 2805의 컨텍스트에 의하여 그곳에서 복원된다. 복원의 결과로 생긴 계수는 웨이블릿 변환 블록 2803에 의하여 역 변환된다. (웨이블릿 변환 블록 2803이 한 실시예에서 정 역 변환 모두를 수행하지만, 다른 실시예에서, 두 변환은 분리된 블록에 의하여 수행될 수 있다.) 변환 블록 2803의 출력은 어떤 색공간 변환을 거쳐 화소 데이터 인터페이스 2801을 경유하여 대역 버퍼에 출력되는 화소를 포함한다.During reconstruction, the encoded data is received by the encoder / decoder 2806 from the disk (or other memory storage or channel) via the encoded data interface 2807 and reconstructed there by the context of the context model 2805. The coefficients resulting from the reconstruction are inversely transformed by the wavelet transform block 2803. (The wavelet transform block 2803 performs all of the inverse transform in one embodiment, but in another embodiment, the two transforms can be performed by separate blocks.) The output of the transform block 2803 is a transform And a pixel output through the data interface 2801 to the band buffer.

프린팅 동안 시스템의 기본적이 타이밍은 도 29에 도시된다. 도 29에 의하면, 각 코딩 유니트의 부호화된 데이터는 디스크로부터 읽는다. 가능한 많은 데이터를 읽고 짧은 지연후, 계수는 복호화된다. 복호화가 끝난후, 역 웨이블릿 변환이 계산된다. 변환이 끝난후, 화소는 프린트 엔진으로 송신된다. 도 29의 그물친 부분은 구체적인 코딩 유니트에 대하여 다른 동작이 생길 때를 나타낸다.The basic timing of the system during printing is shown in Fig. According to Fig. 29, the coded data of each coding unit is read from the disc. After reading as much data as possible and after a short delay, the coefficients are decoded. After decoding, an inverse wavelet transform is computed. After the conversion, the pixel is transmitted to the print engine. The netted portion of FIG. 29 shows when a different operation occurs for a specific coding unit.

디스크 저장을 위한 계수의 임베딩Embedding coefficients for disk storage

도 10은 본 발명의 부호화된 데이터의 조직을 나타낸다. 도 10에 의하면, 가장 중요한 데이터 1003은 변환된후 즉시 계수 오더로 부호화된다(임베디드되지 않음). 그리하여 이 데이터는 버퍼링될 필요가 없다. 한 실시예에서, 가장 중요한 데이터 1003의 양은 항상 디스크로부터 읽을 수 있도록 제한된다.Figure 10 shows the organization of the encoded data of the present invention. According to Fig. 10, the most important data 1003 is converted (not embedded) into a coefficient order immediately after being converted. Thus, this data need not be buffered. In one embodiment, the amount of the most important data 1003 is always limited to be readable from the disk.

버퍼링되고, 임베디드되고, 기록되는 덜 중요한 데이터의 양은 전송 시간으로 결정된다. 즉, 시스템은 디스크로부터의 전송 시간이 만료될 때까지 데이터를 읽는다. 디스크의 전송 속도는 얼마나 많은 데이터를 보유하는지를 결정한다. 이 속도는 알려져 있고 특정 전송의 물리적 특성에 의존한다.The amount of less important data that is buffered, embedded, and recorded is determined by the transmission time. That is, the system reads data until the transfer time from the disk expires. The transfer rate of the disk determines how much data it holds. This rate is known and depends on the physical characteristics of the particular transmission.

화상을 압축하기 어려우므로 어떤 데이터는 부호화 시간동안 버려질 수 있다. 데이터는 가장 중요하지 않은 데이터 1005로서 나타낸다. 최상의 디스크 전송속도가 주어지더라고 가장 중요하지 않는 데이터를 읽을 수 있는 확률이 없는 경우 그 데이터를 디스크에 저장할 이유가 없다. 많은 화상 그리고 아마 대부분의 화상에 대하여 데이터는 버려지지 않는다.Since it is difficult to compress the image, some data may be discarded during the encoding time. Data is represented as least significant data 1005. If there is no chance of reading the least important data even if the best disk transfer rate is given, there is no reason to store the data on disk. Data is not discarded for many pictures and perhaps most pictures.

부호화된 데이터의 오더링과 어떻게 그것을 성취하는지는 위에서 더 상세하게 설명된다.The ordering of the encoded data and how it accomplishes is explained in more detail above.

다음에서는, 압축과 복원중의 대역 버퍼 관리를 논의하고 이어서 부호화된 데이터의 임베디드 구조를 설명한다. 변환, 컨텍스트 모델, 엔코더/디코더의 병렬화의 하드웨어 구현을 또한 설명한다.In the following, we discuss bandwidth buffer management during compression and restoration, and then describe the embedded structure of the encoded data. The hardware implementation of the transformation, the context model, and the parallelization of the encoder / decoder is also described.

[화소와 계수 인터페이스][Pixel and counter interface]

도 30은 화소 데이터가 어떻게 조직되는지를 나타내는 일 실시예이다. 도 30에 의하면, 페이지(화상) 3000은 대역 3001-3004로 분할된다. 일 실시예에서, 페이지 3000은 각 대역의 화소를 발생하는데 사용되는 페이지 표현 언어(page description language) 혹은 페이지의 디스플레이 리스트 표현(display list description)을 포함할 수 있다. 일 실시예에서, 대역 3001-3004는 각각 디스플레이 리스트 기술을 사용하여 래스터(raster)화된다. 각 대역 3001-3004는 또한 코딩 유니트로 분할된다(예를들면, 3001A-D).30 is an embodiment showing how pixel data is organized. According to Fig. 30, the page (image) 3000 is divided into bands 3001-3004. In one embodiment, page 3000 may include a page description language or a display list description of a page used to generate pixels of each band. In one embodiment, bands 3001-3004 are rasterized using a display list technique, respectively. Each band 3001-3004 is also divided into coding units (e.g., 3001A-D).

대역당 다중 코딩 유니트를 사용하는 장점은 (핑퐁버퍼링(ping-pong buffering)에 유사하게) 대역 버퍼의 일부가 복원시 동작공간(workspace)으로서 로테이션(rotation)에 사용될 수 있다는 점이다. 다시 말해서, 화소의 한 영역은 복원되어 대역버퍼에 저장된 후 프린터에 전송될 수 있는 반면에, 대역 버퍼의 두 번째 영역은 디코딩시 계수를 저장하기 위해 동작공간으로서 사용되고 세 번째 영역은 계수에 해당하는 화소를 저장하는데 사용될 수 있다.The advantage of using multiple coding units per band is that a portion of the band buffer (similar to ping-pong buffering) can be used for rotation as a workspace at restoration. In other words, one area of the pixel can be restored and stored in the band buffer and then sent to the printer, while the second area of the band buffer is used as the operating space to store the coefficients upon decoding and the third area is used as the coefficient Can be used to store pixels.

도 31은 페이지 3100의 대역 버퍼 3101을 나타낸다. 대역 버퍼 3101은 코딩유니트 3101A-D로 구성된다. 코딩 유니트 3101A와 3101B는 계수를 저장함으로써 복원기의 동작공간으로서 작동한다. 코딩유니트 3101C는 프린터(혹은 채널)로 출력되는 화소를 저장하며 코딩 유니트 3101D는 다음 화소를 저장함으로써 복원기용 동작공간으로서 작용한다.31 shows the band buffer 3101 of the page 3100. Fig. The band buffer 3101 is composed of a coding unit 3101A-D. The coding units 3101A and 3101B operate as the operating space of the restorer by storing the coefficients. The coding unit 3101C stores pixels output to the printer (or channel), and the coding unit 3101D functions as an operation space for the reconstructor by storing the next pixel.

대역 버퍼 3101의 일부는 전체 페이지 3100이 프린트됨에 따라 로테이션(rotation)에 사용된다. 예를들면, 다음 차례의 코딩 유니트의 경우, 코딩 유니트 3101D의 화소는 프린터에 출력되는 화소이다. 이러한 현상이 발생할 때, 코딩 유니트 3101B와 3101C는 계수를 저장하기 위한 복원기용 동작공간으로서 사용된다. 또한, 이때 코딩 유니트 3101A는 프린터로 출력되는 다음 화소를 저장하기 위한 복원기용 동작공간으로도 사용될 수 있다.A portion of the band buffer 3101 is used for rotation as the entire page 3100 is printed. For example, in the case of the next coding unit, the pixel of the coding unit 3101D is a pixel output to the printer. When such a phenomenon occurs, the coding units 3101B and 3101C are used as an operation space for a reconstructor for storing coefficients. At this time, the coding unit 3101A can also be used as a restoration operation space for storing the next pixel outputted to the printer.

본 발명에서, 계수는 화소보다 크다. 따라서, 두 배의 메모리가 동작공간 메모리에 할당된다. 다른 실시예에서, 대역은 코딩 유니트보다 많게 혹은 적게 분할될 수 있다. 일 실시예에서, 예를들면 대역은 각각 8 코딩 유니트로 분할된다.In the present invention, the coefficient is larger than the pixel. Thus, twice as much memory is allocated to the motion space memory. In another embodiment, the band may be divided more or less than the coding unit. In one embodiment, for example, the bands are each divided into 8 coding units.

[메모리 대역폭][Memory bandwidth]

화소 데이터 인터페이스와 계수 데이터 인터페이스는 대역 버퍼 메모리를 효과적으로 관리한다. 고속 페이지 모드 DRAM, EDO(Extended Data Out) DRAM 혹은 연속적인 억세스를 촉진하는 다른 메모리가 사용되면, 이들 인터페이스는 연속적인 억세스로부터 데이터를 충분한 길이의 버스트로 전송하여 메모리의 잠재적인 대역폭을 효과적으로 사용할 수 있게 한다. 몇몇 소형의 버퍼들은 연속적인 어드레스에 버스트 억세스를 지원하기 위해 사용될 수 있다.The pixel data interface and the coefficient data interface effectively manage the band buffer memory. If high-speed page mode DRAM, Extended Data Out (EDO) DRAM, or other memory that facilitates continuous access is used, these interfaces transfer data from successive accesses to bursts of sufficient length to effectively use the potential bandwidth of memory Let's do it. Some small buffers may be used to support burst access to consecutive addresses.

도 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) 정보용으로 사용되면, 부각적인 대역폭을 필요로 할 것이다.32 shows a timing diagram of the encoding indicating the requirements of concurrent memory access. Referring to FIG. 32, the bandwidth required for decoding is as follows. In the previously mentioned embodiment, a pixel clock of 2 MHz, a component-clock of 8 MHz and a decoding clock of 32 MHz are used and the print engine requires 1 byte / component clock, Read 2 bytes per count and write 1 byte per fraction. If the conversion is performed at half the coding unit time, it requires 6 bytes / component clock. The speed of the conversion is limited by the bandwidth of the memory, not the computation time. If a bandwidth of 24 bytes / component clock is used, the conversion will be calculated in 1/8 coding unit time. The conversion requires additional bandwidth if the external memory is used as seams. In one embodiment, decoding of the coefficients requires writing of two bytes per component clock to the most significant part of the coded data. Decoding requires one byte of read and write per component clock for each bit plane of the less significant portion of the coded data. This may be less in other embodiments. If the two operations take place during half of the coding unit time, a bandwidth of 4 bytes and a bandwidth of 24 bytes are required per component clock, respectively. If external memory is used for context seam information, it will require significant bandwidth.

일 실시예에서, 최대 버스트 모드 전송비는 성분클럭당 4메모리억세스(코드클럭당 1억세스)이다. 그러므로, 32비트 데이터버스의 경우 최대 전송비는 16바이트/성분클럭 보다 약간 작다. 64비트 데이터버스의 경우 최대 전송비는 32바이트/성분클럭보다 약간 작다.In one embodiment, the maximum burst mode transmission ratio is four memory accesses per component clock (one access per code clock). Therefore, for a 32-bit data bus, the maximum transmission ratio is slightly less than 16 bytes / component clock. For a 64-bit data bus, the maximum transmission rate is slightly less than 32 bytes / component clock.

LIC 메모리 대역폭 요구의 감소Reduced LIC memory bandwidth requirements

LIC의 각 계수의 각각의 비트는 디코딩시 외부 메모리의 읽기 및 기록을 요구한다(엔코딩은 단지 읽기만을 한다). 이들 메모리 억세스는 요구되는 대다수의 메모리 대역폭을 설명한다. 일 실시예에서, LIC계수를 8비트로 저장하는 대신에 대역폭의 요구를 감소하는 것이 가능할 때 본 발명은 8비트 보다 작은 비트를 사용하는 계수를 저장한다.Each bit of each coefficient in the LIC requires reading and writing of the external memory during decoding (the encoding is read only). These memory accesses describe the majority of the required memory bandwidth. In one embodiment, the invention stores coefficients using less than 8 bits when it is possible to reduce the bandwidth requirement instead of storing the LIC coefficients in 8 bits.

표 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에 도달하기 전에 종료한다.Table 8 shows the bits required to store the LIC coefficients during decoding, and indicates how much memory is required to store the LIC coefficients for decoding each bit plane. According to Table 8, when the MIC is executed, 1 bit of tail-on bit per coefficient is recorded. Which is written in the bit plane 5 is again read out in the bit plane 4. That is, 2-3 bits including a tail on bit, a value of bit 5, and a sign bit when bit 5 is 1 are written and read. The ratio is for each bit plane that contains the ratio of the coefficients. This is further clarified by Fig. 13B. According to FIG. 13B, since all coefficients from DD1 to DS4 and the SD4 subband have data in bit plane 5 (indicated by shading), bit plane 5 holds coefficients from all included subbands. Bit plane zero only holds coefficients from the subband of DD1. As shown in Table 8, bit planes 4 and 5 hold coefficients from all subbands, with a percentage of 100%, while bit plane 0 only retains 25% of the coefficients (DD1 subband). As the decoding proceeds further, some bit planes end before reaching bit plane zero.

디코딩동안 LIC 계수를 저장하는데 필요한 비트The bits needed to store the LIC coefficients during decoding 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%/-Percentage of bit plane coefficients in MSE alignment Record Read Bits / Count Context (Write / Read) - * 5 1 Tail On - / 100% 5 4 2-3 Tail On, Bit 5, 100% / 100% 4 3 3-4 tail on, bit 4 ... 5, sign? 100% / 99% 3 2 4-5 tail on, bit 3 ... 5, sign? 99% / 96% 2 1 5-6 Tail On, Bit 2 ... 5, sign? 96% / 82% 1 0 6-7 Tail on, bit 1 ... 5, sign? 82% / 25% 0 - + 7-8 tail on, bit 0 ... 5, sign? 25% / -

여기서, *는 MIC(Most Important Chunck)처리중의 기록을 나타내고 †는 역변환시의 판독을 나타낸다.Here, * indicates recording during MIC (Most Important Chunck) processing and † indicates reading during inverse conversion.

표 8에서, 디코딩의 시작시 비트평면의 디코딩이 발생하지 않는다. 그러므로, 모든 계수당 1비트(비트/계수)만이 판독되어 헤드인지 테일인지 결정된다. 디코딩이 계속됨에 따라, 계수당 비트의 수는 증가한다.In Table 8, decoding of the bit planes does not occur at the beginning of decoding. Therefore, only one bit (bit / count) per coefficient is read out to determine whether it is head or tail. As the decoding continues, the number of bits per coefficient increases.

도 33은 판독된 데이터보다 큰 기록되는 데이터를 순환 어드레싱이 어떻게 취급하는지를 나타낸다. 이것은 처리의 결과가 기록을 위해 일반적으로 판독되는 비트보다 더 많은 비트를 생성하기 때문에 발생한다. 도 33에 의하면, 처리는 메모리 공간의 1/8인 계수당 1비트를 기록하는 것에 의해 시작한다. 이어서, 계수당 1비트가 판독되고 계수당 2-3비트가 기록된 후, 계수당 2-3비트가 판독되고 계수당 3-4비트가 기록된다. 이러한 처리는 모든 데이터가 처리될 때까지 계속된다.FIG. 33 shows how circular addressing treats recorded data that is larger than the read data. This occurs because the result of the processing produces more bits than are generally read for writing. According to Fig. 33, the process starts by writing 1 bit per coefficient, which is 1/8 of the memory space. Then, one bit per coefficient is read and 2-3 bits per coefficient are written, then 2-3 bits per coefficient are read and 3-4 bits per coefficient are written. This process continues until all the data has been processed.

하드웨어 장치를 간단하게 하기 위한 몇가지 선택이 있다. 최소의 비트를 항상 사용하는 대신에 일정 크기 때문에 소모되는 1비트의 원인이 되는 1,2,4,6 혹은 8 정도의 비트가 사용될 수 있다. 부호 비트가 LIC에서 코딩되지 않거나 잘 알려지지 않은 경우에도 부호 비트에 대한 공간은 항상 사용될 수 있다.There are several choices for simplifying hardware devices. Instead of always using the least bit, a bit of about 1, 2, 4, 6 or 8 can be used which causes a bit to be consumed because of a certain size. Even if the sign bit is not coded or poorly known in the LIC, the space for the sign bit can always be used.

메모리 대역폭을 더욱 감소시키는 선택은 테일 온 비트가 필요하지 않은 경우 이를 저장하지 않는 것이다. 예를들면, 비트평면 0을 기록할 때, 헤드 혹은 테일 비트가 되는 6개의 비트가 존재한다. 이들 비트중 0이 아닌 비트가 존재하면, 테일 온은 참(true)이 되어 테일 온 값을 저장할 필요가 없게 되어 부호 비트는 7번째 비트로서 저장된다.The choice to further reduce the memory bandwidth is to not store tail-on bits if they are not needed. For example, when writing bit plane 0, there are six bits that are head or tail bits. If there is a non-zero bit among these bits, the tail-on becomes true so that it is not necessary to store the tail-on value, and the sign bit is stored as the seventh bit.

MIC의 메모리 대역폭은 또한 가변 길이 저장 방법에 의해 감소될 수 있다. 계수당 8비트를 항시 사용하는 대신에 비트의 최소값을 사용하는 것은 절약의 원인이 된다. 제로 계수 비트 대신에 6비트 미리보기 값(도 15에 도시됨)을 저장하는 것은 더욱 효율적인 메모리의 사용을 가능하게 한다.The memory bandwidth of the MIC can also be reduced by a variable length storage method. Using the minimum value of the bits instead of always using 8 bits per coefficient causes savings. Storing the 6 bit preview value (shown in FIG. 15) instead of the zero coefficient bit enables the use of more efficient memory.

[가역 색공간][Reversible color space]

본 발명은 2 색공간 사이의 전환을 가능하게 하는 가역 색공간의 전환을 선택적으로 실행함으로서 정수연산시 완전하게 가역 실행된다. 즉, 전환되는 색공간 데이터가 역전되어 라운딩이나 절단이 순방향 전환 처리시에 발생함에도 불구하고 존재하는 모든 데이터를 얻는다. 가역 색공간은 본 발명의 양수인에게 양도된, 1995년 5월 8일 출원된 Method and Apparatus for Reversible Color Conversion의 제목인 미국특허 출원번호 08/436,662에 개시되어 있다.The present invention is completely reversible at the time of integer operation by selectively performing the switching of the reversible color space enabling the switching between the two color spaces. That is, the color space data to be converted is reversed to obtain all existing data even though rounding or truncation occurs during the forward conversion processing. The reversible color space is disclosed in U.S. Patent Application Serial No. 08 / 436,662, entitled Method and Apparatus for Reversible Color Conversion filed on May 8, 1995, assigned to the assignee of the present invention.

색공간 전환은 무손실 결과를 제공하는 능력의 손실없이 대립하는 색공간의 장점을 제공한다. 무손실의 경우 대립하는 색공간은 압축을 향상시키는 무상관성을 제공한다. 유손실(lossy) 코드에 대하여, 대립하는 색공간은 색정보보다 작게 양자화되는 휘도정보를 제공하여, 고화질을 가능하게 한다. 가역 색공간이 본 발명의 변환에 사용될 때, 휘도 및 색계수는 유손실 압축에 대한 서브샘플링(subsampling) 보다 우수해서 무손실 압축을 계속 가능하게 한다.Color space conversion provides the advantage of conflicting color space without loss of ability to provide lossless results. In the case of lossless, conflicting color spaces provide free inertia to improve compression. For a lossy code, contradictory color spaces provide luminance information that is quantized less than color information, enabling high quality. When a reversible color space is used in the transform of the present invention, the luminance and chrominance numbers are superior to subsampling for lossy compression, allowing lossless compression to continue.

가역 색공간이 사용되면, 계수를 정렬하여 8비트 휘도성분과 9비트 색성분의 가장 중요한 비트가 동일한 정렬을 갖는다. 유손실 압축에서, 이러한 정렬은 휘도데이터보다 2배 크게 양자화되는 색데이터의 원인이 되며, 휘도에 대한 무손실 압축과 색에 대한 유손실(단, 고질) 압축을 가능하게 한다. 이러한 결과들은 휴먼 비주얼 시스템(Human Visual System)의 특성을 향상시킨다.When the reversible color space is used, the most significant bits of the 8-bit luminance component and the 9-bit color component have the same alignment by arranging the coefficients. In oil-loss compression, such an alignment causes color data to be quantized twice as large as luminance data, and enables lossless compression on luminance and lossy (high quality) compression on color. These results improve the characteristics of the Human Visual System.

[다른 화소작용][Other pixel operation]

프린터는 가끔 대부분 혹은 전체적으로 비연속적인 문서를 포함한다. 예를들면, 흑색과 흰색을 갖는 텍스트 화상(값이 단지 0 및 255인)이 일반적이다.Printers sometimes contain discontinuous documents, most or all of them. For example, a text image with black and white (with values of only 0 and 255) is common.

일 실시예에서, 대역폭의 막대 그래프는 완성된다. 예를들면, 0,255 흑/백 화상(K성분)은 0,1 화상에 맵핑된다. 유사한 단축이 스폿 색화상(spot color image)용으로 만들어질 수 있다. 단축이 사용되면, 압축은 무손실 압축이 되어야만 한다. 그러나, 실행된 무손실 압축은 실질적으로 단축이 실행될 때 향상된다.In one embodiment, a bar graph of the bandwidth is completed. For example, 0,255 black / white image (K component) is mapped to 0,1 image. Similar shortening can be made for a spot color image. If shortening is used, compression must be lossless compression. However, the implemented lossless compression is substantially improved when the shortening is performed.

또한, 여기서 표현된 중첩된 웨이블릿 변환을 사용하는 대신, 2진 및 스폿 색화상이 비트평면에 기초하고 손실이 없으며 JBIG과 같은 컨텍스트 모델에 의해 조정될 수 있다.Also, instead of using the superimposed wavelet transform represented here, the binary and spot color images are bit-plane based and lossless and can be adjusted by a context model such as 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은 잘 알려진 방식으로 작동한다.In another embodiment, the system may be designed to include a binary model. Figure 35 illustrates one embodiment of a binary context model similar to the JBIG expression context template. 35, shift registers 3501-3503 provide a plurality of bits per JBIG standard. Shift registers 3501 and 3502 receive the second and first upper lines from line buffer 3500. The upper line provides bits corresponding to the North West (NW), North (N), and NE (NE) pixels of the template as shown in Fig. The outputs of shift registers 3501 and 3502 are provided directly to the context model. The output of shift register 3503 provides an optional mux 3504 that can execute the appropriate template of the JBIG standard. The context model 3505 is coupled to a Probability Estimation Machine (PEM) 3506 and eventually to a bit generator (BG) 3507. Context models 3505, PEM 3506, and BG 3507 operate in a well known manner.

쉬프트 레지스터 3501과 3502의 출력과 결합되는 먹스 3504의 출력 및 BG로부터의 피이드백은 컨텍스트 메모리를 어드레싱하기 위해 사용되는 컨텍스트 빈 어드레스(context bin address)를 형성한다. 일 실시예에서, 컨텍스트 메모리 3505는 각각의 확률 상태를 나타내기 위해 6비트를 가진 컨텍스트 1024개를 포함한다. 이것은 1024×6비트의 컨텍스트 메모리를 필요로 한다.The output of the MUX 3504 combined with the outputs of the shift registers 3501 and 3502 and the feedback from the BG form a context bin address that is used to address the context memory. In one embodiment, the context memory 3505 includes 1024 contexts with 6 bits to represent each probability state. This requires 1024 x 6 bits of context memory.

BG는 현재의 라인으로부터 디코딩 비트를 컨텍스트 어드레스의 일부분으로 제공하기 때문에, 컨텍스트 메모리에 대한 억세스 시간을 포함하는 큰 컨텍스트로의 비트(bit to context) 지연이 존재한다.Since BG provides the decode bits from the current line as part of the context address, there is a bit to context delay to the large context including the access time to the context memory.

도 36은 현재 라인의 디코딩된 비트를 이용하여 쉬프트 레지스터 3501과 3502의 출력과 멀티플렉서 3504의 출력을 수신하는 동일 어드레스 블럭 3601과 결합된 PEM을 억세스하는 다른 실시예를 나타낸다. PEM 3506은 이전 비트를 수신하고 이것을 이용하여 사용된 컨텍스트의 쌍으로부터 적절한 컨텍스트를 선택한다. 선택된 컨텍스트는 갱신되어 두 컨텍스트가 다시 메모리에 기록된다. 동일 어드레스 블록 3601은 데이터가 PEM에 위치하도록 이미 판독된 어드레스를 검출한다. 또한, 동일 어드레스 블록 3801은 메모리의 스테일(stale)정보 대신에 PEM에 이미 존재하는 데이터(갱신된 데이터)를 사용하여 신호를 전송한다.Figure 36 shows another embodiment of accessing the PEM combined with the same address block 3601 receiving the outputs of the shift registers 3501 and 3502 and the output of the multiplexer 3504 using the decoded bits of the current line. PEM 3506 receives the previous bit and uses it to select the appropriate context from the used pair of contexts. The selected context is updated and the two contexts are written back to memory. The same address block 3601 detects the address already read so that the data is located in the PEM. In addition, the same address block 3801 transmits a signal using data already present in the PEM (updated data) instead of the memory stale information.

일 실시예에서, 디코더는 6비트를 가진 컨텍스트 빈 1024개를 포함하여 각 확률 상태를 표현한다. 이것은 512×12비트의 컨텍스트 메모리를 필요로 한다. 쉬프트 레지스터 3501과 3502의 출력은 멀티플렉서 3504의 출력과 함께 이전 비트가 사용되지 않은 부분적인 컨텍스트 빈을 제공한다. 이것은 컨텍스트 메모리 3505로부터 한쌍의 컨텍스트빈 중 하나를 선택하는 원인이 된다. 컨텍스트빈의 1비트 보다 많은 비트가 부분적인 컨텍스트로부터 제외될 수 있다. 각 메모리 위치는 2n(n은 제외된 비트의 수)의 확률 상태를 포함한다.In one embodiment, the decoder includes 1024 context beans with 6 bits to represent each probability state. This requires 512 x 12 bits of context memory. The outputs of shift registers 3501 and 3502 together with the output of multiplexer 3504 provide a partial context bean in which the previous bits have not been used. This causes the context memory 3505 to select one of the pair of context beans. More than one bit of the context bean may be excluded from the partial context. Each memory location contains a probability state of 2 < n > (n is the number of bits excluded).

컨텍스트로의 비트지연이 감소한다. 컨텍스트 메모리 억세스는 이전 비트가 디코딩되기 전에 발생한다. 한 쌍의 두 상태에 대한 PEM상태의 처리는 이전 비트가 디코딩되기 전에 병행하기 시작하여 고속 작동이 이루어진다.The bit delay to the context decreases. The context memory access occurs before the previous bit is decoded. The processing of the PEM state for a pair of two states begins to run in parallel before the previous bit is decoded and high speed operation is achieved.

[엔코딩 비율 제어][Controlling the encoding ratio]

데이터를 양자화하는 능력에 부가해서, 양자화를 결정하기 위해 엔코더에서의 실행 비율 제어(performing rate control)는 비율의 측정을 요구한다. 비율이 좋지 않은 압축을 나타내면(즉, 원하는 레벨이 아니면) 양자화가 증가하며, 비율이 너무 놓은 압축을 나타내면 양자화가 감소한다. 비율제어결정은 엔코더와 디코더에서 동등하게 진행되어야만 한다.In addition to the ability to quantize data, a performing rate control in the encoder to determine the quantization requires a measure of the ratio. If the ratio indicates poor compression (ie not the desired level), the quantization increases, and if the ratio indicates too much compression, the quantization decreases. The rate control decision must proceed equally in the encoder and decoder.

엔코더와 디코더가 동일한 결정을 하는 것을 확인하는 한가지 방법은 시그널링(signaling)을 사용하는 것이다. 엔코더는 설정된 간격으로 비율을 측정하고 다음 간격에서의 사용을 위해 메모리에 양자화(Q)를 저장한다. 디코더는 각 간격 동안 메모리로부터 양자화를 용이하게 재현한다. 이것은 또 다른 메모리를 필요로 할 것이다. 예를들면, 2비트(+2,+1,0,-1에 의한 Q의 변화를 나타내거나 1,2,3,4로 Q를 저장하기 위한)의 로케이션 256개를 갖는 SRAM칩은 4096라인 화상의 매 16라인에 대해 양자화(Q)를 충분히 변화시킨다.One way to ensure that the encoder and decoder make the same decision is to use signaling. The encoder measures the ratio at a set interval and stores the quantization (Q) in memory for use in the next interval. The decoder easily reproduces the quantization from memory for each interval. This will require another memory. For example, an SRAM chip with 256 locations in 2 bits (to represent a change in Q by +2, +1, 0, -1, or to store Q by 1, 2, 3, 4) The quantization (Q) is changed sufficiently for every 16 lines of the image.

비율측정에는 많은 옵션이 있다. 도 34는 엔코더 및 디코더의 쌍을 나타낸다. 도 34에 나타낸 바와 같이, 엔코더/디코더의 쌍은 컨텍스트 모델(CM), 확률 예측 모델/기계(PEM:Probability Estimation Models/Machines), BG, 런카운트 리오더유니트(run count reorder unit), 인터리브된 워드 리오더 유니트 및 쉬프터를 포함한다. 이것은 이미 잘 알려져 있는 것으로, 본 발명의 양수인에게 양도된 미국특허 5,381,145 및 5,583,500에 개시되어 있다.There are many options for measuring the ratio. Figure 34 shows a pair of encoder and decoder. As shown in FIG. 34, the pair of encoders / decoders may include a context model (CM), a Probability Estimation Models / Machines (PEM), a BG, a run count reorder unit, A reorder unit and a shifter. This is well known and is disclosed in U.S. Patent Nos. 5,381,145 and 5,583,500, assigned to the assignee of the present invention.

비율측정은 디코더가 동일한 위치에서 측정하지 않는 경우 명백하게 되어야만 한다. 예를들면, 비율측정은 압축된 코드스트림의 한 부분으로서 디코더에 공급된다.The ratio measurement must be made clear when the decoder is not measuring at the same position. For example, the ratio measurement is supplied to the decoder as part of the compressed code stream.

작은 원(도 34의 위치 2)으로 도시된 비율관리에 대한 다른 옵션이 엔코더에서 인터리브된 워드의 시작을 카운트한다. 또 다른 실시예에서, 이것은 비트발생단계(도 34의 위치 4) 후에 실행된다. 엔코더와 디코더가 동시에 부호어를 시작하기 때문에, 비율의 명백한 시그널링이 사용된다. 카운팅은 레지스터 및 부호어 길이들을 합하여 평균 부호어 길이를 결정하는 덧셈기로 이루어진 카운팅 하드웨어에 의해 실행된다. 비트의 평균 숫자의 카운팅과 결정을 실행하는 하드웨어는 이미 잘 알려져 있으며, 이를 도 34에 블록 3401로 표시하였다. 이 블록은 시스템에서 다른 위치(즉, 엔코더와 디코더에서의 위치 1,2,3,4)에서의 유사한 측정을 실행하는데 유용하다.Another option for ratio management, shown as a small circle (position 2 in FIG. 34), counts the beginning of interleaved words in the encoder. In yet another embodiment, this is performed after the bit generation step (position 4 in Figure 34). Because the encoder and decoder start codewords at the same time, obvious signaling of the ratio is used. The counting is performed by a counting hardware consisting of an adder that determines the average codeword length by summing register and codeword lengths. The hardware to perform the counting and determination of the average number of bits is already well known and is shown in FIG. 34 as block 3401. This block is useful for performing similar measurements at different locations in the system (i. E., Positions 1, 2, 3, 4 in the encoder and decoder).

다른 옵션은 인터리브된 워드 리오더 유니트(도 34의 위치 3)전, BG후에 종료된 부호어의 크기를 카운트하거나 디스크(도 34의 위치 1)에 실제적으로 기록되는 데이터의 양을 결정한다.Another option is to count the size of the codeword ended after BG before the interleaved word reorder unit (position 3 in FIG. 34) or to determine the amount of data actually recorded in the disc (position 1 in FIG. 34).

비율측정은 명백하게 될 수 있다. 엔코더와 디코더는 동일한 비율결정계산을 실행한다. 예를들면, 엔코더와 디코더는 새로운 부호어가 시작될 때마다 부호어의 평균 크기를 누적할 수 있다. 이것은 도 34의 위치 4로 표시되어 있다.(엔코더가 부호어의 종료까지 크기를 알 수 없기 때문에, 실제적인 크기는 사용될 수 없다.) 코드로 사용되는 R-코드의 크기가 R2(0)에서 R2(7)를 거쳐 변할 때, 평균 부호어 크기는 1에서 4.5비트로 변한다. 확률시험이 잘 이루어지면, 평균의 사용은 매우 정확하게 된다. 다른 경우에서, 최소 및 최대 부호어 길이의 차이 대 평균은 그리 크게 되지 않아서, 시험이 매우 유용하게 된다. Rz(k)의 평균크기는 k/2 + 1비트이다.The ratio measurement can be made clear. The encoder and decoder perform the same ratio determination calculation. For example, the encoder and decoder can accumulate the average size of the codeword each time a new codeword is started. This is indicated by position 4 in Figure 34. (The actual size can not be used because the encoder can not know the size until the end of the codeword.) If the size of the R-code used in the code is R2 (0) When changing through R2 (7), the average codeword size changes from 1 to 4.5 bits. If the probability test is done well, the use of the average becomes very accurate. In other cases, the difference between the minimum and maximum codeword lengths versus the average is not so large, making the test very useful. The average size of Rz (k) is k / 2 + 1 bit.

대부분의 경우에 있어서, 가장 중요한 데이터는 잘 압축되어 양자화(Q=1)가 필요없게 된다. 단지 병리학적 화상만이 양자화(Q〉1)를 요구할 것이다. 그러나, 양자화특성의 포함은 시스템이 병리학적 화상에 의해 파손되지 않는다는 이점이 있다.In most cases, the most important data is well compressed so that quantization (Q = 1) is not necessary. Only pathological images will require quantization (Q> 1). However, the inclusion of quantization characteristics has the advantage that the system is not destroyed by pathological images.

엔코더비율제어의 다른 장점은 최대 대역폭이 초과될 때 덜 중요한 데이터의 엔코딩이 정지될 수 있다는 점이다. 이것은 엔코딩의 속도를 증가시키고 데이터를 출력시키는 전체 시간(즉, 프린트에 소요되는 전체 시간)을 감소시킨다.Another advantage of encoder rate control is that encoding of less important data can be stopped when the maximum bandwidth is exceeded. This increases the speed of encoding and reduces the total time to output the data (i. E., The total time taken to print).

양자화 효과의 트랙(track)을 유지하는 것은 매우 중요하다. 예를들면, 계수군에서의 가장 큰 계수의 한정은 양자화가 변할 때 항상 일관성을 유지해야만 한다. 또한, 양자화된 계수의 재구축(비트평면이 폐기될 때)은 가장 좋은 결과를 위해 폐기된 비트평면의 수를 고려할 필요가 있다.It is very important to maintain a track of the quantization effect. For example, the limitation of the largest coefficient in a coefficient group must always be consistent when the quantization changes. In addition, reconstruction of the quantized coefficients (when the bit planes are discarded) needs to take into account the number of discarded bit planes for best results.

[고속 병렬 엔코딩 및 컨텍스트 모델][High-speed Parallel Encoding and Context Model]

본 발명의 엔트로피 코딩부(entropy coding portion)는 2부분으로 구성된다. 첫째, 병렬로 작동하는 고속 코딩 코아(coding core)는 확률시험과 비트 발생을 제공한다. 둘째, 컨텍스트 모델은 코딩에 사용되는 컨텍스트를 제공한다.The entropy coding portion of the present invention consists of two parts. First, a high-speed coding core running in parallel provides probability tests and bit generation. Second, the context model provides the context used for coding.

원하는 속도를 얻기 위해 요구되는 코아의 수는 응용에 따라 달라진다.The number of cores required to achieve the desired speed depends on the application.

엔트로피 코딩 시스템의 다른 부분은 본 발명의 계수용 컨텍스트 모델이다. 컨텍스트 모델의 실행시 가능한 교환의 수는 무수히 많다. 일 실시예에서, 본 발명은 저비용 하드웨어를 가지며, 본 발명의 고속 병렬 코더의 사용을 지원하는 병렬성을 제공하는 컨텍스트 모델을 제공한다. 컨텍스터 모델의 실시예는 상술하였다.Another part of the entropy coding system is the contextual context model of the present invention. There are a myriad of possible exchanges in the execution of the context model. In one embodiment, the present invention provides a context model that has low-cost hardware and provides parallelism to support the use of the high-speed parallel coder of the present invention. An embodiment of the contextual model has been described above.

상기에서 웨이블릿 계수에 대한 컨텍스트 모델만 설명되어 있지만, 본 발명은 웨이블릿 계수를 제공하는 컨텍스트 모델에만 한정되는 것은 아니다. 예를들면, 비트평면 코딩모드가 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에 개시된 것과 같은 부가적인 컨텍스트 모델이 사용될 수 있다.Although only the context model for the wavelet coefficients is described above, the present invention is not limited to the context model for providing the wavelet coefficients. For example, if the bitplane coding mode is useful for binary or spot pictures, see U.S. Patent Application Serial No. 08/1994, entitled Compression and Decompression with Wavelet Style and Binary Style Including Quantization by Device Dependent Parser, filed May 3, Additional context models such as those disclosed in U.S. Patent Application Serial No. 08 / 643,268, entitled Compression / Decompression Using Reversible Embedded Wavelets, filed May 3, 1996, may be used.

병렬성Parallelism

일 실시예에서, 4개의 고속 코딩코아는 계수당 8비트를 엔코딩/디코딩하는데 사용되는데, 여기서 계수의 범위는 8-12비트이다(가역 색공간이 사용되는 경우에는 13비트). 일 실시예에서, 코어는 4성분의 각각에 할당되어 병렬성과 데이터 흐름을 용이하게 한다. 각 계수는 엔코딩/디코딩 비트(미리 보기 등을 포함하는)에 대해 16사이클까지 사용될 수 있다.In one embodiment, four fast coding cores are used to encode / decode 8 bits per coefficient, where the range of coefficients is 8-12 bits (13 bits if reversible color space is used). In one embodiment, the core is assigned to each of the four components to facilitate parallelism and data flow. Each coefficient can be used up to 16 cycles for encoding / decoding bits (including preview etc.).

본 발명은 코아가 성공적인 미리보기에 의해 무익하게 되거나 다른 코어가 첫 번째 온비트 후에 부호 비트(sign bit)를 취급하는 경우에도, 각 성분에 대해 코아를 동시성으로 유지한다. 컨텍스트 모델이 가동하는 전체 시간은 데이터, 특히 미리보기의 효과 및 더 좁은 범위로는 첫 번째 온비트에 따라 변하게 된다.The present invention keeps the core synchronized for each component, even if the core is lost by a successful preview or another core handles the sign bit after the first on-bit. The total time that the context model runs depends on the first on bit of data, especially the effect of the preview and the narrower range.

본 발명은 버퍼, 웨이블릿 변환 유니트, 코더를 갖는 시스템으로 압축 그리고/또는 복원을 수행함에 있어서 웨이블릿 변환 유니트는 버퍼에 저장된 화소에 대하여 웨이블릿 변환을 수행하고 코더는 변환된 화소를 부호화하므로써 빠른 유손실/무손실 압축을 제공할 수 있는 효과가 있다.In the present invention, in performing compression and / or restoration by a system having a buffer, a wavelet transform unit, and a coder, the wavelet transform unit performs wavelet transform on the pixels stored in the buffer, and the coder encodes the transformed pixels, There is an effect that lossless compression can be provided.

본 발명은 비싼 RAM대신 값싼 하드디스크 기술을 사용할 수 있는 시스템을 구현하여 경제성 있는 시스템을 제공할 수 있는 효과가 있다.The present invention can provide an economical system by implementing a system that can use cheap hard disk technology instead of expensive RAM.

또한 본 발명은 하드 디스크에 비율을 매칭시키고 프린트 엔진과 같은 시스템을 구현하는 다른 부분의 대역폭에 하드 디스크를 매칭시킬 수 있는 효과가 있다.The present invention also has the effect of matching the ratio to the hard disk and matching the hard disk to the bandwidth of the other part implementing the system such as the print engine.

본 발명은 또한 압축 그리고 복원시간이 RAM 속도보다 많이 늦지 않도록 RAM을 사용하여 RAM에 비율 매칭을 수행할 수 있는 효과가 있다.The present invention also has the effect of performing rate matching on RAM using RAM so that compression and restoration time are not much later than RAM speed.

Claims (78)

버퍼;buffer; 버퍼에 연결되는 입력을 갖고 버퍼에 저장된 화소에 대하여 웨이블릿 변환을 수행하며 출력에 계수를 발생하는 웨이블릿 변환 유니트, 웨이블릿 변환 유니트에 연결되어 웨이블릿 변환 유니트의 웨이블릿 변환된 화소의 비트평면과 버퍼로부터 수신된 웨이블릿 변환된 화소의 저장된 비트평면을 코딩하는 코더를 포함하여 구성되는 것을 특징으로 하는 장치.A wavelet transform unit having an input connected to a buffer and performing wavelet transform on pixels stored in a buffer and generating a coefficient on an output; a wavelet transform unit connected to the wavelet transform unit and receiving a bit plane of the wavelet transformed pixel of the wavelet transform unit, And a coder for coding the stored bit planes of the wavelet transformed pixels. 제1항에 있어서 버퍼는, 적어도 하나의 화소 대역을 저장하는 대역 버퍼를 포함하여 구성되는 것을 특징으로 하는 장치.2. The apparatus of claim 1, wherein the buffer comprises a band buffer for storing at least one pixel band. 제 1항에 있어서 코더는, 컨텍스트 모델, 병렬 엔트로피 코더 엔코더를 포함하여 구성되며, 가장 중요한 데이터는 임베디드(embedded)되지 않고, 버퍼링 없이 계수 오더로 부호화되고, 덜 중요한 데이터의 부분은 버퍼링되고 임베디드되며 중요도의 오더로 메모리에 기록되는 것을 특징으로 하는 장치.The method of claim 1, wherein the coder comprises a context model, a parallel entropy coder encoder, wherein the most important data is not embedded, encoded in counting order without buffering, and the portion of less important data is buffered and embedded Wherein the data is recorded in the memory in an order of importance. 제1항에 있어서 엔코더는, 고속 병렬 코더를 포함하여 구성되는 것을 특징으로 하는 장치.2. The apparatus of claim 1, wherein the encoder comprises a high speed parallel coder. 제1항에 있어서 엔코더는, QM-코더를 포함하여 구성되는 것을 특징으로 하는 장치.2. The apparatus of claim 1, wherein the encoder comprises a QM-coder. 제1항에 있어서 엔코더는, 유한 상태 기계 코더를 포함하여 구성되는 것을 특징으로 하는 장치.2. The apparatus of claim 1, wherein the encoder comprises a finite state machine coder. 제1항에 있어서, 부호화 데이터 인터페이스, 를 또한 포함하여 구성되는 것을 특징으로 하는 장치.The apparatus of claim 1, further comprising an encoded data interface. 정보를 압축하는 방법에 있어서, 버퍼로부터 수신된 화소 정보를 웨이블릿 변환하고, 적어도 하나의 계수 비트평면이 가역 웨이블릿 변환 화소를 나타내는 단계, 버퍼의 화소를 부호화된 비트평면으로 대체하는 단계, 버퍼에 저장된 비트평면을 부호화하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.A method of compressing information comprising the steps of: wavelet transforming pixel information received from a buffer, wherein at least one coefficient bit plane represents a reversible wavelet transform pixel; replacing pixels of the buffer with an encoded bit plane; And encoding the bit planes. 복원 장치에 있어서, 대역버퍼, 계수가 역 변환 동작을 거치는 다수의 코딩 유니트, 출력 장치에 출력되는 화소를 저장하는 적어도 하나의 코딩 유니트, 이전에 역 변환된 계수에 해당하는 화소가 출력 장치에 송신되는 적어도 하나의 코딩 유니트, 버퍼에 연결된 복원기;를 포함하여 구성되며, 복원기는 압축된 데이터를 변환된 계수로 복원하고, 변환된 계수를 대역 버퍼에 기록하며, 변환된 계수를 대역 버퍼로부터 다시 읽고, 화소값을 발생하기 위하여 대역 버퍼로부터 다시 읽어낸 변환된 계수에 대하여 역 변환을 수행하며, 화소값을 대역버퍼에 기록하는 것을 특징으로 하는 장치.A restoration apparatus comprising: a band buffer; a plurality of coding units for performing inverse transform operation of coefficients; at least one coding unit for storing pixels output to the output apparatus; And a reconstructor connected to the buffer, wherein the reconstructor restores the compressed data to the transformed coefficients, writes the transformed coefficients to the band buffer, and outputs the transformed coefficients again from the band buffer And performs inverse transformation on the transformed coefficient read back from the band buffer to generate the pixel value, and writes the pixel value to the band buffer. 제9항에 있어서 복원기는, 저장영역으로부터 압축된 데이터를 읽는 것을 특징으로 하는 장치.10. The apparatus of claim 9, wherein the reconstructor reads the compressed data from the storage area. 제10항에 있어서 저장영역은, 하드 디스크를 포함하여 구성되는 것을 특징으로 하는 장치.11. An apparatus according to claim 10, wherein the storage area comprises a hard disk. 제9항에 있어서, 대역 버퍼에 연결된 프린트 엔진을 또한 포함하여 구성되는 것을 특징으로 하는 장치.10. The apparatus of claim 9, further comprising a print engine coupled to the band buffer. 계수를 가장 중요한 데이터와 덜 중요한 데이터로 분할하는 단계, 가장 중요한 데이터를 컨텍스트 모델로 송신하여 즉시 계수 오더로 코딩하는 단계, 덜 중요한 데이터와 다수의 신호 비트를 메모리에 저장하는 단계, 계수 세트에 있는 모든 계수의 가장 중요한 데이터를 코딩한 후, 덜 중요한 데이터를 코딩하고 다수의 신호 비트에 부분적으로 기초하여 오더에 의하여 임베딩하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.Dividing the coefficients into the most important data and less important data, sending the most important data to the context model and coding them into immediate count orders, storing less important data and a plurality of signal bits in the memory, Coding the most significant data of all coefficients and then coding less important data and embedding by order based in part on a number of signal bits. 제13항에 있어서 신호 비트는, 첫 번째 비트와 두 번째 비트를 포함하여 구성되는 것을 특징으로 하는 방법.14. The method of claim 13, wherein the signal bits comprise a first bit and a second bit. 제13항에 있어서, 신호 비트의 첫 번째는 계수의 덜 중요한 데이터의 첫 번째 비트가 헤드 비트 또는 테일 비트인지를 나타내고, 신호 비트의 첫 번째가 계수의 덜 중요한 데이터의 첫 번째 비트가 헤드 비트임을 나타내면 신호 비트의 두 번째는 부호 비트를 나타내는 것을 특징으로 하는 방법.14. The method of claim 13, wherein the first of the signal bits indicates that the first bit of the less significant data of the coefficient is a head bit or a tail bit and the first bit of the signal bit is the head bit of the less significant data of the coefficient And the second of the signal bits represents a sign bit. 제13항에 있어서 신호 비트는, 덜 중요한 데이터에 인접하여 저장되는 것을 특징으로 하는 방법.14. The method of claim 13, wherein the signal bits are stored adjacent to less significant data. 정 변환 장치에 있어서, 입력 데이터를 수신하도록 연결된 입력과 짝수와 홀수 샘플을 전송하는 첫 번째와 두 번째 출력을 갖는 입력 버퍼, 짝수와 홀수 샘플을 수신하도록 연결되어 계수를 발생하는 첫 번째 레벨 변환 유니트-수평 저역 통과 계수와 수직 고역 통과 계수는 정 변환의 출력임-, 첫 번째 레벨 변환 유니트에 의하여 발생된 ss 계수를 수신하도록 연결된 첫 번째 입력과 상위 레벨 변환 필터링으로부터 ss 계수를 수신하는 두 번째 입력을 갖는 메모리, 메모리에 연결되는 첫 번째 입력을 갖고 상위 레벨 필터링을 위하여 ss 계수를 오더링하는 오더 유니트, 오더 유니트에 연결되어 다수의 변환 레벨을 적용하는 첫 번째 필터 유니트-필터 유니트는 오더 유니트로부터 수신된 ss 계수의 상위 레벨 변환을 수행하고, 필터 유니트는 메모리의 두 번째 입력과 오더 유니트의 두 번째 입력에 다시 인가되는 ss 계수값을 발생한다.-을 포함하여 구성되는 것을 특징으로 하는 장치.And a first level conversion unit coupled to receive the even and odd samples to generate a coefficient, the input buffer having an input connected to receive input data, a first and a second output for transmitting even and odd samples, The horizontal low pass coefficient and the vertical high pass coefficient are the outputs of the positive conversion; a first input coupled to receive the ss coefficients generated by the first level conversion unit and a second input receiving the ss coefficients from the high level translation filtering; An order unit having a first input connected to the memory and ordering an ss coefficient for high level filtering, a first filter unit connected to the order unit for applying a plurality of conversion levels, and a filter unit for receiving from the order unit Level conversion of the ss coefficient, and the filter unit performs a high-level translation of the ss coefficients twice It generates an input and two ss coefficient value is applied again to the second input unit of the order-device characterized in that comprising: a. 제17항에 있어서 첫 번째 레벨 변환은, 입력 데이터의 2*2블록에 대하여 동작하는 것을 특징으로 하는 장치.18. The apparatus of claim 17, wherein the first level translation operates on 2 * 2 blocks of input data. 제17항에 있어서 첫 번째 레벨 변환은, 첫 번째 레벨 수평 변환을 수행하는 두 번째 필터 유니트-두 번째 필터 유니트는 첫 번째 출력과 두 번째 출력을 갖는다-, 두 번째 필터의 첫 번째 출력에 연결되는 첫 번째 단일 지연, 두 번째 필터의 두 번째 출력에 연결되는 두 번째 단일 지연, 두 번째 필터의 두 번째 출력에 연결되는 더블 지연, 첫 번째 단일 지연과 더블 지연의 출력을 수신하도록 연결되는 첫 번째 멀티플렉서(MUX), 첫 번째 필터 유니트의 출력과 두 번째 단일 지연의 출력을 수신하도록 연결되는 두 번째 MUX, 첫 번째와 두 번째 MUX의 출력을 수신하도록 연결되어 첫 번째 레벨 수직 변환을 수행하는 세 번째 필터를 포함하여 구성되는 것을 특징으로 하는 장치.18. The apparatus of claim 17, wherein the first level translation comprises a second filter unit performing a first level horizontal conversion, the second filter unit having a first output and a second output, A first multiplexer coupled to receive outputs of a first single delay, a second single delay coupled to a second output of the second filter, a double delay coupled to a second output of the second filter, and outputs of a first single delay and a double delay, (MUX), a second MUX coupled to receive the output of the first filter unit and an output of a second single delay, a third filter coupled to receive outputs of the first and second MUX, ≪ / RTI > 화상을 압축하는 장치에 있어서, 압축기, 압축기에 연결된 동작공간 메모리-동작공간 메모리는 화상과 같은 크기이고 압축기는 화상의 화소보다 큰 계수를 사용하여 화상을 엔코딩하는 공간 메모리를 사용함-를 포함하여 구성되는 것을 특징으로 하는 장치.CLAIMS What is claimed is: 1. An apparatus for compressing an image, the apparatus comprising: a compressor; a motion memory coupled to the compressor; wherein the motion memory is the same size as the image and the compressor uses spatial memory to encode the image using a coefficient greater than a pixel of the image. . ≪ / RTI > 가장 중요한 데이터와 덜 중요한 데이터를 포함하는 정보를 코딩하는 방법에 있어서, 가장 중요한 데이터를 코딩하는 단계, 제로 헤드 비트로 모두 구성되지 않은 각 계수에 대한 덜 중요한 데이터의 첫 번째 비트평면의 위치를 코딩하는 단계, 제로 헤드 비트로 모두 구성되지 않은 덜 중요한 데이터의 각 비트평면을 코딩하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.CLAIMS What is claimed is: 1. A method of coding information comprising the most important data and less important data, comprising the steps of: coding the most important data; coding the position of the first bit plane of less important data for each coefficient not all configured with zero head bits And coding each bit plane of less significant data that is not all comprised of zero head bits. 제21항에 있어서, 정보는 웨이블릿 계수를 포함하여 구성되는 것을 특징으로 하는 방법.22. The method of claim 21, wherein the information comprises wavelet coefficients. 제21항에 있어서 첫 번째 덜 중요한 비트평면의 위치를 코딩하는 단계는, 덜 중요한 데이터의 전체 비트평면에 대한 미리보기를 수행하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.22. The method of claim 21, wherein coding the location of the first less significant bit plane comprises performing a preview of the entire bit plane of less significant data. 제21항에 있어서 가장 중요한 데이터를 코딩하는 단계는, 각 트리에 대하여 ss 계수를 코딩하는 단계, 가장 중요한 데이터에 대하여 미리보기를 수행하는 단계, 각 논-SS 계수에 대하여, 데이터를 갖는 각 비트평면의 헤드 비트 또는 테일 비트를 코딩하는 단계, 계수가 제로가 아니면 부호 비트를 코딩하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.22. The method of claim 21, wherein coding the most important data comprises: coding an ss coefficient for each tree; performing a preview on the most important data; for each non-SS coefficient, Coding the head bit or tail bit of the plane, and coding the sign bit if the coefficient is not zero. 제24항에 있어서 미리보기는 트리 미리보기를 포함하고, 미리보기를 수행하는 단계는 ss-계수를 코딩하는 단계와 전체 트리에 대하여 논-제로 헤드 비트를 갖는 첫 번째 제로 비트평면을 코딩하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.25. The method of claim 24, wherein the preview comprises a tree preview, the step of performing a preview comprises coding an ss-coefficient and coding a first zero bit plane with non-zero head bits for the entire tree ≪ / RTI > 제24항에 있어서, 가장 중요한 데이터는 한 번에 하나의 웨이블릿 트리로 처리되는 것을 특징으로 하는 방법.25. The method of claim 24, wherein the most important data is processed into one wavelet tree at a time. 제21항에 있어서, 미리보기는 웨이블릿 트리의 모든 논-ss 계수에 대하여 모두 제로 헤드 비트를 포함하는 비트평면을 결정하는 것을 특징으로 하는 방법.22. The method of claim 21, wherein the preview determines a bit plane that includes all zero head bits for all non -ss coefficients of the wavelet tree. 제27항에 있어서, 개별적으로 부호화할 첫 번째 비트평면을 식별하는 단계를 또한 포함하여 구성되는 것을 특징으로 하는 방법.28. The method of claim 27, further comprising identifying a first bit plane to be individually encoded. 제28항에 있어서 개별적으로 부호화할 첫 번째 비트평면을 식별하는 단계는, 첫 번째 비트를 사용하여 두 번째 분해의 모든 논-ss 계수는 제로임을 나타내는 단계와 두 번째 비트를 사용하여 첫 번째 분해의 모든 논-ss 계수가 제로임을 나타내는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.The method of claim 28, wherein identifying the first bitplane to be individually encoded comprises: using the first bit to indicate that all non-sss coefficients of the second decomposition are zero; ≪ / RTI > wherein all non-sss coefficients are zero. 제21항에 있어서 가장 중요한 데이터를 코딩하는 단계는, 각 트리에 대하여, ss 계수를 코딩하는 단계, 상기 각 트리의 모든 논-ss 계수에 대하여 모두 제로 헤드 비트인 비트평면을 결정하는 미리보기를 수행하는 단계, 전체 트리의 가장 중요한 데이터가 제로인지의 여부를 결정하는 단계, 전체 트리의 가장 중요한 데이터가 제로가 아니면, 트리의 모든 계수에 대하여, 모든 비트평면에 대하여 현재 계수의 비트를 코딩하는 단계-현재 계수는 트리의 첫 번째 논-ss 계수이고 데이터를 보유하는 첫 번째 비트평면으로 시작함-, 현재 계수가 제로가 아니면 부호 비트를 코딩하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.22. The method of claim 21, wherein coding the most important data comprises: for each tree, coding a ss coefficient; determining a bit plane that is a zero head bit for all non-ss coefficients of each tree; Determining whether the most important data of the entire tree is zero or not; if the most important data of the entire tree is not zero, for all coefficients of the tree, Wherein the current coefficient is the first non-sss coefficient of the tree and begins with a first bit plane holding data, and if the current coefficient is not zero, coding the sign bit. 제21항에 있어서 덜 중요한 데이터를 코딩하는 단계는, 각 트리에 대하여, 각 계수에 대하여, 미리보기 구간의 스타트에 있으면 미리보기를 수행하는 단계, 미리보기가 액티브하지 않으면 헤드 비트 또는 테일 비트를 코딩하는 단계, 첫 번째 온 비트가 발생하고 미리보기가 액티브하지 않으면 부호 비트를 코딩하는 단계를 포함하여 구성되는 것을 특징으로 하는 장치.22. The method of claim 21, wherein coding less important data comprises: for each tree, performing a preview if it is at the start of the preview section, for each coefficient; if the preview is not active, And coding the sign bit if the first on-bit occurs and the preview is not active. 가장 중요한 데이터와 덜 중요한 데이터를 포함하는 정보를 코딩하는 장치에 있어서, 가장 중요한 데이터를 코딩하는 수단, 제로 헤드 비트로 모두 구성되지 않은 각 계수에 대한 덜 중요한 데이터에서 첫 번째 비트평면의 위치를 코딩하는 수단, 제로 헤드 비트로 모두 구성되지 않은 덜 중요한 데이터의 각 비트평면을 코딩하는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.CLAIMS What is claimed is: 1. An apparatus for coding information comprising most important data and less important data, comprising: means for coding the most important data; means for coding the position of the first bit plane in less significant data for each coefficient not all configured with zero head bits; Means for coding each bit plane of less significant data not all comprised of zero head bits. 제32항에 있어서, 정보는 웨이블릿 계수를 포함하여 구성되는 것을 특징으로 하는 장치.33. The apparatus of claim 32, wherein the information comprises wavelet coefficients. 제32항에 있어서, 첫 번째 덜 중요한 비트평면의 위치를 코딩하는 수단은 덜 중요한 데이터의 전체 비트평면에 대한 미리보기를 수행하는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.33. The apparatus of claim 32, wherein the means for coding the position of the first less significant bit plane comprises means for performing a preview of the entire bit plane of less significant data. 제32항에 있어서 가장 중요한 데이터를 코딩하는 수단은, 각 트리에 대하여 ss 계수를 코딩하는 수단, 각 트리에 대하여 가장 중요한 데이터의 미리보기를 수행하는 수단, 각 트리의 각 논-제로 계수에 대하여 데이터를 갖는 각 비트평면에 대한 헤드 비트 또는 테일 비트를 코딩하는 수단, 각 트리의 각 논-제로 계수에 대하여 계수가 제로가 아니면 부호 비트를 코딩하는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.32. The apparatus of claim 32, wherein the means for coding the most important data comprises means for coding an ss coefficient for each tree, means for previewing the most important data for each tree, Means for coding a head bit or tail bit for each bit plane having data, means for coding a sign bit if the coefficient is not zero for each non-zero coefficient in each tree. 제35항에 있어서, 미리보기는 트리 미리보기를 포함하고, 미리보기를 수행하는 수단은 SS-계수를 코딩하는 수단과 전체 트리에 대하여 논-제로 헤드 비트를 갖는 첫 번째 제로 비트평면을 코딩하는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.36. The apparatus of claim 35, wherein the preview comprises a tree preview, the means for performing the preview comprises means for coding the SS-coefficients, and means for coding the first zero bit plane having non-zero head bits for the entire tree And means for determining whether the device is in use. 제35항에 있어서, 가장 중요한 데이터는 한 번에 하나의 웨이블릿 트리로 처리되는 것을 특징으로 하는 장치.36. The apparatus of claim 35, wherein the most important data is processed into one wavelet tree at a time. 제32항에 있어서, 미리보기를 수행하는 수단은 웨이블릿 트리에서 모든 논-ss 계수에 대하여 모든 제로 헤드 비트를 포함하는 비트평면을 결정하는 것을 특징으로 하는 장치.33. The apparatus of claim 32, wherein the means for performing a preview determines a bit plane comprising all zero head bits for all non-ss coefficients in a wavelet tree. 제38항에 있어서, 개별적으로 부호화할 첫 번째 비트평면을 식별하는 수단을 또한 포함하여 구성되는 것을 특징으로 하는 장치.39. The apparatus of claim 38, further comprising means for identifying a first bit plane to be individually encoded. 제39항에 있어서, 개별적으로 부호화할 첫 번째 비트평면을 식별하는 수단은, 첫 번째 비트를 사용하여 두 번째 분해의 모든 논-ss 계수가 제로임을 나타내는 수단과 두 번째 비트를 사용하여 첫 번째 분해의 모든 논-ss 계수가 제로임을 나타내는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.40. The apparatus of claim 39, wherein the means for identifying the first bitplane to be individually encoded comprises means for indicating that all non -ss coefficients of the second decomposition are zero using the first bit, And means for indicating that all the non-sss coefficients of the non-sss coefficients are zero. 제32항에 있어서 가장 중요한 데이터를 코딩하는 수단은, 각 트리에 대하여 ss 계수를 코딩하는 수단, 상기 각 트리에서 모든 논-SS 계수에 대하여 모두 제로 헤드 비트인 비트평면을 결정하는 미리보기를 수행하는 수단, 각 트리에 대하여 전체 트리의 가장 중요한 데이터가 제로인지의 여부를 결정하는 수단, 전체 트리의 가장 중요한 데이터가 제로가 아니면 트리의 모든 계수에 대하여 비트평면에 대한 현재 계수의 비트를 코딩하는 수단-현재 계수는 트리에서 첫 번째 논-ss 계수이고 데이터를 보유하는 첫 번째 비트평면으로 시작함-, 전체 트리의 가장 중요한 데이터가 제로가 아니면 트리의 모든 계수에 대하여 현재 계수가 제로가 아니면 부호 비트를 코딩하는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.32. The apparatus of claim 32, wherein the means for coding the most important data comprises means for coding an ss coefficient for each tree, a preview for determining bit planes that are all zero head bits for all non-SS coefficients in each tree Means for determining whether the most important data of the entire tree is zero for each tree, means for determining whether the most significant data of the entire tree is zero or not, Means that the current coefficient is the first non -ss coefficient in the tree and starts with the first bit plane holding the data; if the most significant data of the entire tree is not zero, then if the current coefficient is not zero for all coefficients of the tree, And means for coding the bits. 제32항에 있어서 덜 중요한 데이터를 코딩하는 수단은, 미리보기 구간의 스타트에 있으면 각 트리의 각 계수에 대하여 미리보기를 수행하는 수단, 미리보기가 액티브하지 않으면 각 트리의 각 계수에 대하여, 헤드 비트 또는 테일 비트를 코딩하는 수단, 첫 번째 온 비트가 발생하고 미리보기가 액티브하지 않으면 각 트리에 대하여 각 계수의 부호 비트를 코딩하는 수단을 포함하여 구성되는 것을 특징으로 하는 장치.32. The apparatus of claim 32, wherein the means for coding less important data comprises means for previewing each coefficient of each tree if it is at a start of a preview section, Means for coding a bit or tail bit, means for coding the sign bit of each coefficient for each tree if a first on bit occurs and a preview is not active. 정보를 m-ary 코딩하는 방법에 있어서, 소정수의 계수를 조사하는 단계, 소정수의 계수에서 모든 헤드 비트가 부호화될 때까지 사이클마다 하나씩 모든 헤드 비트를 엔트로피 코딩하는 단계, 동일 사이클에서 소정수의 계수의 부호 비트와 테일 비트를 코딩하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.A method of m-ary coding information, comprising the steps of: examining a predetermined number of coefficients; entropy coding all head bits, one for each cycle, until all head bits are encoded in a predetermined number of coefficients; ≪ / RTI > coding the sign bit and the tail bit of the coefficients of the first and second coefficients. IC 칩과 메모리 사이에 화소 데이터를 전송하는 화소 데이터 인터페이스, 화소 데이터 인터페이스에 연결되어 화소 데이터 인터페이스를 경유하여 메모리로 그리고 메모리로부터 정보를 전송하는 가역 웨이블릿 변환, 가역 웨이블릿 변환에 연결되어 그곳으로부터 제공되는 데이터를 코딩하기 위한 컨텍스트를 제공하는 컨텍스트 모델, 컨텍스트 모델에 의하여 제공되는 컨텍스트에 기초하여 가역 웨이블릿 변환에 의하여 발생되는 계수를 부호화하는 엔코더를 포함하여 구성되는 것을 특징으로 하는 집적회로(IC) 칩.A pixel data interface for transferring pixel data between the IC chip and the memory, a reversible wavelet transform connected to the pixel data interface for transferring information to and from the memory via the pixel data interface, A context model that provides a context for coding data; and an encoder that encodes coefficients generated by the reversible wavelet transform based on the context provided by the context model. 제44항에 있어서, 코딩없이 변환으로부터 메모리로 계수를 전송하도록 연결되는 계수 데이터 인터페이스를 또한 포함하여 구성되는 것을 특징으로 하는 집적회로(IC).45. The integrated circuit (IC) of claim 44, further comprising a coefficient data interface coupled to transfer coefficients from the conversion to the memory without coding. 제44항에 있어서 계수 데이터 인터페이스는, 엔코딩을 위하여 계수를 메모리로부터 컨텍스트 모델로 전송하는 것을 특징으로 하는 집적회로(IC).45. The integrated circuit (IC) of claim 44, wherein the coefficient data interface transfers coefficients from the memory to the context model for encoding. 제44항에 있어서, 엔트로피 부호화 데이터를 메모리에 제공하는 부호화 데이터 인터페이스를 또한 포함하여 구성되는 것을 특징으로 하는 집적회로(IC).The integrated circuit (IC) according to claim 44, further comprising an encoded data interface for providing entropy encoded data to a memory. 제47항에 있어서, 부호화된 데이터를 복호화하는 디코더를 또한 포함하여 구성되는 것을 특징으로 하는 집적회로(IC).The integrated circuit (IC) according to claim 47, further comprising a decoder for decoding the encoded data. 제46항에 있어서, 디코더에 디코딩을 위한 엔트로피 부호화된 데이터를 제공하는 부호화 데이터 인터페이스를 또한 포함하여 구성되는 것을 특징으로 하는 집적회로(IC).47. The integrated circuit (IC) of claim 46, further comprising an encoded data interface that provides entropy encoded data for decoding to a decoder. 제44항에 있어서, 화소 데이터 인터페이스와 가역 웨이블릿 변환 사이에 연결되어 가역 색공간 변환을 수행하는 가역 색공간 변환기를 또한 포함하여 구성되는 것을 특징으로 하는 집적회로(IC).45. The integrated circuit (IC) of claim 44, further comprising a reversible color space converter coupled between the pixel data interface and the reversible wavelet transform to perform reversible color space conversion. 부호화된 데이터를 디코딩하는 디코더에 있어서, 부호화된 데이터를 수신하도록 연결되고 확률 예측에 기초하여 부호화된 데이터를 복호화하는 적어도 하나의 비트 발생기-상기 적어도 하나의 비트 발생기는 현재 라인으로부터 복호화된 비트를 발생함-, 상기 적어도 하나의 비트 발생기에 연결되어 현재 라인으로부터의 복호화된 비트에 기초하여 확률 예측을 제공하는 확률 예측 기계확률 예측 기계에 연결되어 부분적인 컨텍스트 어드레스에 기초하여 다수의 컨텍스트를 확률 예측 기계에 제공하는 컨텍스트 모델-확률 예측 기계는 복호화된 비트에 기초하여 다수의 컨텍스트중에서 선택함-을 포함하여 구성되는 것을 특징으로 하는 디코더.A decoder for decoding encoded data, the decoder comprising: at least one bit generator coupled to receive encoded data and decoding encoded data based on a probability prediction, the at least one bit generator generating a decoded bit from a current line Coupled to the at least one bit generator and coupled to a probability prediction machine probability prediction machine that provides probability prediction based on the decoded bits from the current line to generate a plurality of contexts based on the partial context addresses, Wherein the context model-probability prediction machine is configured to select among a plurality of contexts based on decoded bits. 제51항에 있어서, 확률 예측 기계에 연결되어 데이터는 이미 확률 예측 기계에서 얻을 수 있음을 나타내는 이미 독취된 어드레스를 검출하는 동일 어드레스 표시기-동일 어드레스 표시기는 어드레싱된 부분적인 컨텍스트에 기초하여 데이터가 이미 확률 예측 기계에 있음을 나타내는 표시를 확률 예측 기계에 발생함-를 또한 포함하여 구성되는 것을 특징으로 하는 디코더.52. The apparatus of claim 51, further comprising: an identical address indicator coupled to the probability prediction machine for detecting an already-read address indicating that data is already available in the probability prediction machine; And generating an indication in the probability prediction machine indicating that it is in a probability prediction machine. 제51항에 있어서, 컨텍스트 모델에 연결되어 부분적인 컨텍스트 어드레스를 제공하는 다수의 쉬프트 레지스터를 또한 포함하여 구성되는 것을 특징으로 하는 디코더.52. The decoder of claim 51, further comprising a plurality of shift registers coupled to the context model to provide partial context addresses. 제51항에 있어서, 다수의 상기 라인을 제공하도록 연결된 라인 버퍼를 또한 포함하여 구성되는 것을 특징으로 하는 디코더.52. The decoder of claim 51, further comprising a line buffer coupled to provide a plurality of said lines. 덜 중요한 데이터와 가장 중요한 데이터를 수신하도록 연결되어 어떤 비트평면이 데이터를 갖는지를 결정하는 첫 번째 비트평면 유니트-첫 번째 비트평면 유니트는 덜 중요한 데이터를 처리할 때 전체 코딩 유니트가 사용하는 첫 번째 온 비트로 비트평면을 표시함-, 덜 중요한 데이터와 가장 중요한 데이터를 수신하도록 연결되어 덜 중요한 데이터의 신호 정보를 발생하는 비교 메카니즘, 부호 비트, 가장 중요한 데이터, 데이터를 갖는 첫 번째 비트평면의 표시를 수신하도록 연결되는 메모리-메모리는 조절 정보를 제공하기 위하여 계수를 지연시킴-, 메모리에 연결되어 부호 비트의 컨텍스트를 제공하는 첫 번째 컨텍스트 모델, 메모리와 가장 중요한 데이터에 연결되어 헤드 비트의 컨텍스트를 제공하는 두 번째 컨텍스트 모델, 메모리와 가장 중요한 데이터에 연결되어 테일 비트의 컨텍스트를 제공하는 세 번째 컨텍스트 모델을 포함하여 구성되는 것을 특징으로 하는 컨텍스트 모델.The first bit plane unit, which is connected to receive the less important data and the most important data, determines which bit plane has the data. The first bit plane unit is the first bit plane unit used by the entire coding unit A bit plane representation of the first bit plane having a comparison mechanism, a sign bit, a most significant data, data, connected to receive the less important data and the most important data to generate signal information of less important data A first contextual model coupled to the memory for providing a context of a sign bit, a memory coupled to the most significant data to provide a context of the head bit, Second context model, memory and most important Is connected to the data model context, it characterized in that the configuration including the third context models providing a context for the tail bits. 제55항에 있어서, 입력 데이터를 더 중요한 데이터와 덜 중요한 데이터로 분리하는 분리 메카니즘을 또한 포함하여 구성되는 것을 특징으로 하는 컨텍스트 모델.56. The context model of claim 55, further comprising a separation mechanism for separating input data into more important data and less important data. 제56항에 있어서 분리 메카니즘은, 배럴 쉬프터를 포함하여 구성되는 것을 특징으로 하는 컨텍스트 모델.The context model according to claim 56, wherein the separation mechanism comprises a barrel shifter. 제57항에 있어서 배럴 쉬프터는, 양자화 레벨에 기초하여 데이터를 쉬프트하는 것을 특징으로 하는 컨텍스트 모델.The context model according to claim 57, wherein the barrel shifter shifts data based on a quantization level. 제55항에 있어서 비교 메카니즘은, 가장 중요한 데이터가 제로와 같은지의 여부를 결정하여 테일 비트가 이미 발생되었음을 나타내는 첫 번째 비교 유니트-첫 번째 비교 유니트의 출력은 테일 온 비트임-, 가장 중요한 데이터가 1과 같은지의 여부를 결정하는 두 번째 비교 유니트-가장 중요한 데이터가 1과 같으면 두번째 비교 유니트의 출력은 제로임-, 두 번째 비교 유니트의 출력과 부호 비트를 수신하도록 연결되고 선택입력이 첫 번째 상태에 있으면 첫 번째 테일 비트를 출력하고 선택입력이 두 번째 상태에 있으면 부호를 출력하는 멀티플렉서를 포함하여 구성되는 것을 특징으로 하는 컨텍스트 모델.55. The method of claim 55, wherein the comparison mechanism determines whether the most significant data is equal to zero, the first comparison unit indicating that tail bits have already been generated, the output of the first comparison unit being a tail on bit, 1, if the most significant data is equal to 1, then the output of the second comparison unit is zero, connected to receive the output and sign bit of the second comparison unit, and the selection input is connected to the first state And outputting a sign if the selected input is in a second state, and a multiplexer for outputting a sign if the selected input is in a second state. 제58항에 있어서 선택입력은, 첫 번째 비교 유니트의 테일 온 출력을 포함하여 구성되는 것을 특징으로 하는 컨텍스트 모델.59. The context model of claim 58 wherein the selection input comprises tail-on output of the first comparison unit. 제58항에 있어서, 첫 번째와 두 번째 비교 유니트중 적어도 하나는 비트 비교기를 포함하여 구성되는 것을 특징으로 하는 컨텍스트 모델.The context model of claim 58, wherein at least one of the first and second comparison units comprises a bit comparator. 제55항에 있어서 첫 번째 비트평면 유니트는, 계수와 피이드백을 수신하도록 연결되는 오아(OR)게이트, 오아게이트의 출력을 수신하도록 연결되는 레지스터, 레지스터의 출력을 수신하도록 연결되어 1을 갖는 계수의 첫 번째 비트평면을 기록하는 우선순위 엔코더를 포함하여 구성되는 것을 특징으로 하는 컨텍스트 모델.56. The apparatus of claim 55, wherein the first bitplane unit comprises: an OR gate coupled to receive coefficients and feedback; a register coupled to receive an output of the gate; a coefficient coupled to receive an output of the register; And a priority encoder for recording the first bit plane of the context model. 제62항에 있어서 레지스터는, 코딩 유니트의 시작시 레지스터의 내용을 리세트하는 리세트 입력을 포함하여 구성되는 것을 특징으로 하는 컨텍스트 모델.63. The context model of claim 62, wherein the register comprises a reset input that resets the contents of the register at the start of the coding unit. 제62항에 있어서 리세트 입력은, 각 트리의 시작시 레지스터의 내용을 또한 리세트하는 것을 특징으로 하는 컨텍스트 모델.62. The context model of claim 62, wherein the reset input also resets the contents of the register at the beginning of each tree. 압축을 수행하는 방법에 있어서, 엔코딩 속도를 식별하기 위하여 코드워드의 평균길이를 결정하는 단계, 희망하는 압축량에 기초하여 압축 속도를 조정하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.CLAIMS What is claimed is: 1. A method of performing compression comprising: determining an average length of a codeword to identify an encoding rate; and adjusting a compression rate based on a desired amount of compression. 제65항에 있어서, 엔코딩 속도가 압축이 첫 번째 희망 레벨의 이하임을 나타내면 양자화 레벨의 양을 증가시키는 단계, 엔코딩 속도가 압축이 두 번째 희망 레벨의 이상임을 나타내면 양자화 레벨의 양을 감소시키는 단계를 또한 포함하여 구성되는 것을 특징으로 하는 방법.66. The method of claim 65, further comprising the step of increasing the amount of quantization level if the encoding rate indicates that compression is below a first desired level, and decreasing the amount of quantization level if the encoding rate indicates compression is above a second desired level ≪ / RTI > 제66항에 있어서, 첫 번째 희망 레벨과 두 번째 희망 레벨이 동일하지 않은 것을 특징으로 하는 방법.67. The method of claim 66, wherein the first desired level and the second desired level are not the same. 제65항에 있어서 코드워드의 평균길이를 결정하는 단계는, 비트 발생이후에 수행되는 것을 특징으로 하는 방법.65. The method of claim 65, wherein determining the average length of the codeword is performed after bit generation. 제65항에 있어서, 디코더에 새로운 압축 속도의 신호를 인가하는 단계;66. The method of claim 65, further comprising: applying a signal of a new compression rate to the decoder; 를 또한 포함하여 구성되는 것을 특징으로 하는 방법.≪ / RTI > 제69항에 있어서, 신호를 인가하는 것이 명시적인 것을 특징으로 하는 방법.70. The method of claim 69, wherein applying the signal is explicit. 제69항에 있어서, 신호를 인가하는 것이 묵시적인 것을 특징으로 하는 방법.70. The method of claim 69, wherein applying the signal is implicit. 컨텍스트 모델, 컨텍스트 모델에 연결되는 확률 예측 기계, 확률 예측 기계에 연결되는 비트 발생기, 비트 발생기의 출력에 연결되어 평균 코드워드 길이를 결정하므로써 엔코딩 비율을 제어하는 엔코더 비율 제어를 포함하여 구성되는 것을 특징으로 하는 장치.A context model, a probability prediction machine connected to the context model, a bit generator connected to the probability prediction machine, and an encoder ratio control for controlling the encoding rate by determining an average code word length connected to the output of the bit generator . 제72항에 있어서 엔코더 비율 제어는, 양자화를 조정하는 것을 특징으로 하는 장치.72. The apparatus of claim 72, wherein the encoder rate control adjusts the quantization. 제72항에 있어서, 새로운 양자화 레벨에 대하여 디코더에 신호를 인가하는 신호 블록;73. The apparatus of claim 72, further comprising: a signal block for applying a signal to the decoder for a new quantization level; 을 또한 포함하여 구성되는 것을 특징으로 하는 장치.≪ / RTI > 제72항에 있어서, 압축된 비트 스트림에 연결된 엔코더의 압축된 데이터 스트림 출력에 대한 헤더 데이터를 발생하고 디코더에 새로운 양자화 레벨을 표시하는 신호 블록;73. The apparatus of claim 72, further comprising: a signal block for generating header data for a compressed data stream output of an encoder coupled to the compressed bitstream and for indicating a new quantization level to the decoder; 을 또한 포함하여 구성되는 것을 특징으로 하는 장치.≪ / RTI > 제72항에 있어서, 엔코더 비율 제어는 디코더에 의한 계속 사용에 필요한 양자화 레벨의 표시를 저장하는 것을 특징으로 하는 장치.73. The apparatus of claim 72, wherein the encoder rate control stores an indication of the quantization level required for continued use by the decoder. 변환된 계수 세트에 대한 가장 중요치 않은 부분의 데이터 비트평면을 처리하는 방법에 있어서, 메모리로부터 데이터의 첫 번째 부분을 읽는 단계, 변환된 계수 세트의 하위 오더 비트평면에 있는 적은 데이터로 변환된 비트평면을 보상하기 위하여 첫 번째 양의 데이터를 읽는 동안 첫 번째보다 많은 두 번째 양의 데이터를 메모리에 기록하는 단계를 포함하여 구성되는 것을 특징으로 하는 방법.A method of processing a least significant portion of a data bitplane for a transformed set of coefficients, the method comprising: reading a first portion of data from a memory; And writing to the memory a second amount of data greater than a first amount while reading the first amount of data to compensate for the second amount of data. 제 77항에 있어서, 가장 중요치 않은 청크(chunk) 계수를 저장하는데 필요한 비트는 비트평면수가 감소함에 따라 증가하는 것을 특징으로 하는 방법.79. The method of claim 77, wherein the bits needed to store the least significant chunk coefficient increase as the number of bitplanes decreases.
KR1019980015709A 1997-05-01 1998-04-30 Data Compression/decompression apparatus using reversible embeded wavelet and method thereof KR100317792B1 (en)

Applications Claiming Priority (3)

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

Publications (2)

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

Family

ID=25299688

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980015709A KR100317792B1 (en) 1997-05-01 1998-04-30 Data Compression/decompression apparatus using reversible embeded wavelet and method thereof

Country Status (6)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030021009A (en) * 2001-09-05 2003-03-12 김효준 Image compression method using block-based zerotree and quadtree
KR100451584B1 (en) * 2001-12-20 2004-10-08 엘지전자 주식회사 Device for encoding and decoding a moving picture using of a wavelet transformation and a motion estimation

Families Citing this family (12)

* 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 (en) * 2000-02-22 2001-08-30 Infineon Technologies Ag Data compression method
US6633688B1 (en) 2000-04-28 2003-10-14 Earth Resource Mapping, Inc. Method system and apparatus for providing image data in client/server systems
US7460722B2 (en) 2002-01-11 2008-12-02 Canon Kabushiki Kaisha Encoding of digital data with determination of sample path
FR2834832B1 (en) * 2002-01-11 2005-05-20 Canon Kk CODING DIGITAL DATA WITH HISTOGRAM CALCULATION
CN100401778C (en) * 2002-09-17 2008-07-09 弗拉迪米尔·切佩尔科维奇 Fast CODEC with high compression ratio and minimum required resources
US9802993B2 (en) 2007-10-15 2017-10-31 Chugai Seiyaku Kabushiki Kaisha Method for producing a cell for protein production by treating a cell overexpressing a taurine transporter with methotrexate
EP2218056B1 (en) * 2007-11-30 2013-05-29 Mitsubishi Electric Corporation Content aware resizing of images and videos
KR101681059B1 (en) * 2009-09-22 2016-12-01 삼성전자주식회사 Video signal generation apparatus and method for minimizing crosstalk between luminace signal and color difference signal
JP5298381B2 (en) * 2011-12-20 2013-09-25 株式会社アクセル Image processing apparatus and image processing method
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 (en) * 1986-11-21 1988-06-01 Inst Rundfunktechnik Gmbh METHOD FOR TRANSMITTING DIGITALIZED SOUND SIGNALS
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
US5381145A (en) * 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
US5583500A (en) * 1993-02-10 1996-12-10 Ricoh Corporation Method and apparatus for parallel encoding and decoding of data
DE19549491C2 (en) * 1994-02-23 2003-08-07 Ricoh Kk Palletised image compression with entropy encoding
US5748786A (en) * 1994-09-21 1998-05-05 Ricoh Company, Ltd. Apparatus for compression using reversible embedded wavelets
GB2293733B (en) * 1994-09-20 1997-10-22 Ricoh Kk Encoder including an embedded coder for performing bit-significance encoding
GB2302245B (en) * 1994-09-20 1997-10-22 Ricoh Kk Wavelet transform filter
JP3302229B2 (en) * 1994-09-20 2002-07-15 株式会社リコー Encoding method, encoding / decoding method and decoding method
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
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
US6195465B1 (en) * 1994-09-21 2001-02-27 Ricoh Company, Ltd. Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
US5731988A (en) * 1995-05-08 1998-03-24 Richo Company, Ltd. Method and apparatus for reversible color conversion

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030021009A (en) * 2001-09-05 2003-03-12 김효준 Image compression method using block-based zerotree and quadtree
KR100451584B1 (en) * 2001-12-20 2004-10-08 엘지전자 주식회사 Device for encoding and decoding a moving picture using of a wavelet transformation and a motion estimation

Also Published As

Publication number Publication date
GB2325584B (en) 2000-03-29
KR100317792B1 (en) 2002-02-19
GB2325584A (en) 1998-11-25
DE19819405A1 (en) 1998-11-26
DE19819405B4 (en) 2006-06-29
HK1023470A1 (en) 2000-09-08
FR2763766A1 (en) 1998-11-27
GB9808412D0 (en) 1998-06-17
JP2007267384A (en) 2007-10-11
FR2763766B1 (en) 2002-10-25
JPH10304368A (en) 1998-11-13
JP4148429B2 (en) 2008-09-10

Similar Documents

Publication Publication Date Title
US6229927B1 (en) Reversible embedded wavelet system implementation
US6549666B1 (en) Reversible embedded wavelet system implementation
US5966465A (en) Compression/decompression using reversible embedded wavelets
US5881176A (en) Compression and decompression with wavelet style and binary style including quantization by device-dependent parser
US11470322B2 (en) Method and apparatus for image compression
JP3693988B2 (en) Communication management system and communication management method
US6757437B1 (en) Compression/decompression using reversible embedded wavelets
JP4025847B2 (en) Encoder
JP2007267384A (en) Compression apparatus and compression method
JP2005218124A (en) Data compression system
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
Taubman et al. Em0 bedded block coding in JPEG2333

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