JP4094081B2 - 2進データのダブル・ランレングス符号化の方法および装置 - Google Patents

2進データのダブル・ランレングス符号化の方法および装置 Download PDF

Info

Publication number
JP4094081B2
JP4094081B2 JP01008697A JP1008697A JP4094081B2 JP 4094081 B2 JP4094081 B2 JP 4094081B2 JP 01008697 A JP01008697 A JP 01008697A JP 1008697 A JP1008697 A JP 1008697A JP 4094081 B2 JP4094081 B2 JP 4094081B2
Authority
JP
Japan
Prior art keywords
run
code
pair
length
register
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
JP01008697A
Other languages
English (en)
Other versions
JPH114170A (ja
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 JPH114170A publication Critical patent/JPH114170A/ja
Application granted granted Critical
Publication of JP4094081B2 publication Critical patent/JP4094081B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • H04N1/4105Bandwidth or redundancy reduction for halftone screened pictures

Landscapes

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

Description

【0001】
【発明が属する技術分野】
本発明は、レーザ・プリンタまたはその他の連続ラスタ走査装置による印刷のために処理する際にグレースケール・データの圧縮に特に適用される本明細書でダブル・ランレングス符号化(DRLE)と呼ぶ2進データの無損失圧縮の方法に関する。
【0002】
【従来の技術】
従来知られている圧縮技術にランレングス符号化(RLE)がある。これはランを<パターン、反復回数>の形式の順序対として表す無損失圧縮方法であり、反復回数によってパターンの連続するオカレンス数が決まる。ランを適切な回数だけ繰り返されるパターンに伸長すると元の2進形式が再生されるため、RLEが実際に無損失変換であり、適合する大きさの反復パターンをきわめてよく圧縮する変換であることは容易に判断される。ここに、ランとは0又は1の連続した繰り返し生起するパターンである。
【0003】
反復数の値は、それを表すために使用されるビット数によって制限される。Wビットを使用して反復数を表した場合、1つのRLE順序対の長さは
L(<パターン、反復数>)=(L(パターン)+W)
となる。
(反復数*L(パターン))>>(L(パターン)+W)
または
1>>((1/反復数)+(W/(反復数*L(パターン))))
の場合、明らかにRLEは有効な無損失圧縮方式である。
したがって、RLEは反復回数の多いパターンを持つデータには最適である。
【0004】
【発明が解決しようとする課題】
本発明は、これを改良して更に効率のよい無損失圧縮技法を提供しようとするものである。
【0005】
【課題を解決するための手段】
レーザ・プリンタまたはその他の連続ラスタ走査装置による印刷のために処理する際にグレースケール・データの圧縮に特に適用される、本明細書でダブル・ランレングス符号化(DRLE)と呼ぶ2進データの無損失圧縮の方法を開示する。DRLE方法は、計算の複雑さがほとんどなしに1と0の反復パターンを効率的に記録する。従来のランレングス符号化(RLE)ではうまく圧縮することができないデータについて1桁以上高い圧縮比が得られる場合が多い。DRLEは0と1の可変長パターンを示す順序対の順次履歴を使用し、次にそれらのパターンを、反復されるに従って効率的かつ適応的に符号化する。
【0006】
DRLEは、ディジタル・プリンタで印刷するページの2進イメージに特有のグレースケール・データの場合に高い圧縮比を実現する。DRLEによって、従来のランレングス符号化(RLE)では通常はうまく圧縮されない多くのページを、計算効率のよい方法で表すことができると同時に、それらのページを保持するのに必要な記憶量を大幅に低減することができる。この計算効率はリアルタイム制約のあるソフトウェアとハードウェアの両方の実施にきわめて有用であると同時に、高圧縮比は一般に、今日の低コスト高解像度モノクロームおよびカラーのインクジェットおよびレーザ・プリンタにとって理想的である。
【0007】
DRLEの理論的基礎とグレースケールへのその応用に関する説明とを示す。グレースケール画像処理は一般に、1カラー・プレーン当たり1ビット/画素のディジタル・モノクロームまたはプレーナ・カラー・プリンタに適用される。
【0008】
【発明の実施の形態】
本発明によるダブル・ランレングス符号化(DRLE)には以下の3つの基本要素がある。
1.ダブル・ラン。
要素が、圧縮するデータ内の0のランと1のランとの連結を表す順序対。
2.リテラルおよびリピータの符号化。
DRLEの出力形式は、ダブル・ランを表すリテラルと、ダブル・ランの循環インスタンスのリピータを含む。
3.パターン・マッチング。
ダブル・ランの循環可変長パターンを検出する適応型の方法。
【0009】
上記の各要素について以下に詳述する。最初の2つの要素は、圧縮データを表すために使用するデータ構造体であり、DRLEの主要構成要素である。圧縮程度は、パターン・マッチング・アルゴリズムによって異なる。グレースケール・データの場合、DRLEは最新(MR)ダブル・ラン方式を採用する。その他の方式としては最新パターン変化(MRPC)と事前定義固定パターン(PFP)があり、パターン内に埋め込まれたパターンを含むデータ、またはDRLEを適用する前に特定のパターンが存在することがわかっているデータにそれぞれ適用可能である。これらのパターン・マッチング方式のそれぞれについては以下で説明する。
【0010】
以下では、無損失圧縮およびDRLEの形式モデルについて説明し、次にDRLEの例を示す。それによって、DRLEがアルゴリズム的にどのように機能するかを例示し、特定の条件で圧縮比が数学的にどのように変化するかを例示する。その後でグレースケール・データへのDRLEの応用について説明する。
【0011】
理論モデル
任意の2進データは、ゼロと1のランダムな順序とみなすことができる(図1の最上部を参照)。この説明では、RLEとDRLEを使用した無損失圧縮の形式を説明することが可能な表記と用語を採用する。
【0012】
2進データの最小要素はビット(すなわちゼロまたは1)である。合計ビット数をデータの長さと呼ぶ。2進データの無損失圧縮とは、変換が可逆的(すなわち無損失)であるように当該データに適用される変換であり、より長さの短いデータを生成する(すなわち圧縮する)。
【0013】
無損失圧縮
T(x)=y
は2進データxの変換Tを行って2進データyを生成することを表すものとする。
【0014】
変換T(x)は、すべてのxについて
-1(T(x))=x
になるT-1(y)が存在する場合のみ無損失である。
-1(y)をT(x)の逆変換と呼ぶ。無損失圧縮の用語では、T-1(y)を圧縮解除または伸長変換と呼ぶ。
2進データxの長さはxを構成するビットの数(またはカウント)である。
L(x)
はxの長さを示すものとする。
xの無損失変換T(x)は、
L(T(x))<L(x)
の場合にのみ圧縮される。
T(x)の圧縮比R(T(x))は、
R(T(x))=L(x)/L(T(x))
のように定義される。
T(x)の基本目標は、
R(T(x))>>1となる場合である。
【0015】
ランレングス符号化
ランとは介在データなしに繰り返し生起するパターンである。たとえば、「5個のゼロのラン」とは5個の連続したゼロのことを言う。
【0016】
ランレングス符号化(RLE)は、ランを<パターン、反復回数>の形式の順序対として表す公知の無損失圧縮方法であり、反復回数によってパターンの連続するオカレンス数が決まる。ランを適切な回数だけ繰り返されるパターンに伸長すると元の2進形式が再生されるため、RLEが実際に無損失変換であり、適合する大きさの反復パターンをきわめてよく圧縮する変換であることは容易に判断される。
【0017】
反復数の値は、それを表すために使用されるビット数によって制限される。Wビットを使用して反復数を表した場合、1つのRLE順序対の長さは
L(<パターン、反復数>)=(L(パターン)+W)
となる。
(反復数*L(パターン))>>(L(パターン)+W)
または
1>>((1/反復数)+(W/(反復数*L(パターン))))
の場合、明らかにRLEは有効な無損失圧縮方式である。
したがって、RLEは反復回数の多いパターンを持つデータには最適である。
【0018】
図1の中央に、図1の最上部にある2進データのRLEの例を示す。この例では、パターンの長さは1ビットであり、それによってゼロまたは1の2つの可能なパターンを示す。図1のランレングス符号化例の各順序対は、パターンの後にパターンの連続インスタンス数が付いたものを示している。図1に示す76ビットの2進データの特定のビット・パターンの場合、各順序対に4ビット(パターン0または1に1ビットと、0〜7の連続インスタンス数に3ビット)を要し、合計80ビットに20個の順序対を要するため、RLE圧縮では利点がない。また、符号化形式で現れたときパターンが少なくとも1回生起するため、RLEのソフトウェアまたはハードウェア実施態様は、反復カウントに使用されるビット数にもう1回の反復を計算に入れることができるように、オカレンス数ではなく隣接反復数を記録することができることに留意されたい。この例では1ビット幅のパターンのみを符号化するが、RLEの応用例では一般にバイトまたはバイトのシーケンスなどより大きなパターンが可能であり、可変長パターンさえも可能な場合があるが、これは計算上かなり難しく、より多くのコストがかかる。DRLEは基本的に可変長パターンを扱い、それを計算効率のよい方法で行うことに留意されたい。
【0019】
ダブル・ランレングス符号化
ダブル・ランレングス符号化(DRLE)は、グレースケール・データについて高い圧縮比を実現する無損失圧縮変換である。グレースケール・データは、1とゼロの反復パターンの反復によってグレーの様々な陰影が表される2進データである。1が多くゼロがあまり多くないパターンは一般に濃いグレーを表し、1が少なくゼロが多いパターンは一般に明るいグレーを表す。
【0020】
DRLEのソフトウェアまたはハードウェア実施態様は、グレースケール・パターンを検出し、それらのパターンを圧縮形式で固有かつ効率的に符号化する。これは、ダブル・ランと呼ぶ、ゼロと1(グレースケールではそれぞれ白と黒の画素)の隣接ランを示す順序対の一時的履歴を記録し、それらのダブル・ランをリテラルとして符号化し、次にそれらのダブル・ランの隣接オカレンスをリピータとして符号化することによって行う。最もコンパクトな符号化を実現するように、リピータは最小のビット数を使用する。圧縮形式の長さは元の2進データよりも大幅に短くなる場合が多い。
【0021】
ダブル・ラン、リテラル、およびリピータの概念に加えて、DRLEは、小さなランを効率的に符号化することができるようにし、いくつかのパターンを同時に符号化できるようにすることによって、RLEを特有に拡張する。各ダブル・ランはゼロのランの後に1のランが続いたものを表し、履歴はダブル・ランの一時的シーケンスを表す。リピータによって、わずか2ビットで履歴の最新のサブシーケンスを効率的に符号化することができる。
【0022】
図1ないし図5の例で、DRLEのために以下の表記を使用したダブル・ランを示す。
{L0,L1
上記で、L0はダブル・ラン内のゼロの数であり、L1はダブル・ラン内の1の数である。
【0023】
符号化形式
DRLEを使用して生成された2進データは、リテラルとリピータの2つの基本データ項目を使用する。以下はこれらのデータ項目の物理形式の説明である。リテラルまたはリピータの先頭ビットは、データ項目のタイプを決定するタグであり、リテラルの場合はゼロ、リピータの場合は1である。形式の残りの部分は、要素がリテラルであるかリピータであるかによって決まる。
【0024】
リテラルの形式は、以下の形式の三つ組である。
{0,L0,L1
最初の要素はタグ・ビットであり、0の場合はそのデータ項目がリテラルであることを示す。2番目の要素であるL0はパターン内の連続するゼロの数である。3番目の要素はゼロの直後の連続する1の数である。たとえば、「{0,4,3}」というリテラルは、「0000111」というパターンを表す。
【0025】
リピータの形式は次の通りである。
{1,n}
最初の要素はタグ・ビットであり、1の場合はデータ項目がリピータであることを示す。2番目の要素であるnはパターン内のダブル・ランの数を示す。
【0026】
リピータの2番目の要素は、ダブル・ランの一時履歴に関係する。DRLEの一実施態様は、ダブル・ランのシーケンスを順序付けされた先入れ先出しリストの形で維持してパターン・マッチングに使用する。このシーケンスを維持する方法は様々あり、このような3通りの方法について以下に説明する。このリスト内のダブル・ランの実際の数は、後述するようにDRLEのサイジング・パラメータであり、圧縮比に影響を与える可能性がある。リピータの値nはこのリストへの相対オフセットである。パターンはその相対オフセットから始まる現行リスト内のダブル・ランの最新のサブシーケンスである。たとえば、最新ダブル・ランのリピータは「{1,0}」であるのに対して、2つの最新ダブル・ランのリピータは「{1,1}」である。一般には、n個の最新ダブル・ランのリピータは「{1,n−1}」である。
【0027】
サイジング・パラメータ
リテラルとリピータのサイジング(すなわち、そのそれぞれが必要とするビット数)を制御するパラメータは以下の2つである。
W:ゼロのランまたは1のランの長さを表すために使用するビット数。
N:履歴内のダブル・ランの最大数。
【0028】
値Wは、リテラル内のゼロのランと1のランの長さがそれぞれゼロから2W−1までの範囲であることが可能であることを意味する。Wによってランのサイズが決まるため、リテラルのサイズもWによって制御される。
【0029】
値Nは、リピータの2番目の要素(リテラル・オフセット)に必要なビット数を決定する。言い換えると、これによって履歴内で維持されるダブル・ランの数が決まる。これらのパラメータを使用すると、リテラルおよびリピータの固定長はそれぞれ、
L(リテラル)=1+(2*W)
および
L(リピータ)=1+最高限界(log2(N))
となり、上式で関数最高限界(r)によって実数r以上の最小整数が得られる。
【0030】
これらのパラメータの効果を図2に示す。この図は、図1に示す例の要素の一部を強調したものであり、以下で「例1」として詳述する。
【0031】
DRLE圧縮方法
概念的には、DRLEの実施態様は一般に2進データを左から右に走査して、一度に1つのダブル・ランを引き出す。記録機構を使用してダブル・ランの履歴を維持する。この履歴内の要素数は最大N個である。
【0032】
ダブル・ランの履歴を維持する機構は様々ある。たとえば、次の3つの方法を使用することができる。
1.最新(most recent, MR)
2.最新パターン変化(most recent pattern change, MRPC)
3.事前定義固定パターン(predefined fixed pattern, PFP)
【0033】
MR機構は2進データ内で遭遇したサイズNのダブル・ランの現行リストを維持する。新しいランを入手するとそれがリストの前または先頭に追加される。これは図2に示す手法であり、グレースケール・データに最も適した手法である。
【0034】
MRPC機構は、MR機構の変更版であり、パターン不一致が生起した場合のみ履歴を変更する。図3に、N=2の場合のこの手法を示す。この手法は、パターンがより大きなパターン内に埋め込まれているデータに適している。
【0035】
PFP機構は、サイズNの事前定義ダブル・ラン・パターンを使用し、このパターンのインスタンスまたはそのサブパターンのインスタンスのみを探す。履歴は変化しない。この例を図4に示す。この方式は、当該データについて事前の知識がある場合に適切である。一般には、PFPは、NおよびWが良好な圧縮を実現するのに十分な大きさの有限のシーケンスが、完全な形または部分的な形で生起することがわかっているデータに適する。
【0036】
DRLEの結果は、ダブル・ランの履歴を維持するために使用した機構によって異なる場合があるため、この方法は圧縮解除方法への入力でもなければならない。したがって、理論的には変換DRLE(x)およびDRLE-1(y)があるが、アルゴリズム的にはこれらのそれぞれが追加パラメータを有する。
【0037】
履歴に加えて、DRLE実施態様は、リテラルもリピータも出されていない最新ダブル・ランの先読みバッファを維持する。最新履歴のサブシーケンスの完全一致がある場合、リピータが出される。そうでない場合は先読みバッファ内のダブル・ランのリテラルが最初の不一致まで出される。いずれの場合も、作用を受けたダブル・ランは先読みバッファから廃棄される。
【0038】
初期状態
ダブル・ラン履歴の初期状態の適切な選定によって、圧縮比を向上させることができる。PFPの場合は間違いなく初期状態は事前定義固定パターンである。グレースケール・データの場合は、印刷するページは通常白い空間から始まり、大部分白い空間から成るため、履歴内の各リテラルについて「すべて白、黒なし」の初期状態が推奨される。より形式的には、グレースケール・データの場合、履歴内の各ダブル・ランの初期値は以下の通りでなければならない。
{2W-1,0}
【0039】

最初の例では図2について説明する。図2および図3に、DRLEのいくつかの境界条件、すなわちゼロのみの2進データ(空白ページ)と、1つの反復パターンから成る2進データを示す。
【0040】
例1
図2に、MRを使用したW=5およびN=2の場合のDRLEを例示する。この場合、リテラルの長さは11ビットで、リピータの長さは2である。この例の結果は、4個のリテラルと4個のリピータで合計52ビットの長さになり、圧縮比は76/52である。
【0041】
Wの効果を示すために、リテラルの長さ要素の値を2進形式で示す。たとえば、「00111」および「00110」がそれぞれ7および6に相当する5ビットの2進数であるため、最初のダブル・ラン{7,6}の結果はリテラル{0,00111,00110}になる。
【0042】
左から右に進むと、{4,3}の最初のインスタンスの結果はリテラルになる。しかし、{4,3}の2番目のインスタンスは2要素から成る履歴の先頭と一致し、したがって、値{1,0}のリピータになる。
【0043】
続けて、{4,3}の3番目のインスタンスの結果はリピータになり、{2,5}の最初のインスタンスの結果はリテラルになる。
【0044】
この時点で、次の2つのダブル・ランである{4,3}と{2,5}は一時履歴の最初の2つ(しかもただ2つ)の要素と一致する。したがって、結果は値{1,1}のリピータになる。これと同じパターンがもう1回繰り返され、したがって再び値{1,1}のリピータになる。
【0045】
最後は、ダブル・ラン{5,2}のリテラルの結果になる。
【0046】
例2
「すべて白、黒なし」のダブル・ラン(たとえば{2W−1,0})が入っている履歴の初期状態を有する、まったくゼロだけから成る長さL(S)の2進データSを考えてみる。このSの形は完全レンダリングされた黒ページと似ている

【0047】
この場合、連続した「すべて白、黒なし」ダブル・ランの各N個のオカレンスは、{1,N−1}の形のリピータに置き換えられる。
【0048】
S内の「すべて白、黒なし」ダブル・ランの数をMとする。MはNで割り切れない場合がある。言い換えると、次のようになる場合がある。
(M mod N)>0
上記で、「M mod N」は整数Nで割った場合の整数Mの整数剰余を示す。
K=(M mod N)とする。
DRLE(S)は{1,N−1}の形式のいくつかの数のリピータ、すなわち
(M−K)/N
から成る。Kがゼロでない場合、これらのリピータの後には{1,K−1}の形のリピータが続く。さらに、Sは長さが
R=L(S) mod(2W−1)
のいくつかの残余ビットを有する場合があり、したがってRがゼロでない場合、DRLE(S)は{1,R,0}の形のリテラルで終わることになる。
これらを使用すると、
L(DRLE(S))=((M−K)/N*L(リピータ)+残余+R
となり、上式でKがゼロの場合、残余は0であり、ゼロでない場合はL(リピータ)である。
【0049】
典型的なディジタル印刷の場合、L(S)は大きいためL(DRLE(S))に対する影響は以下によって十分に概算される。
(M/N)*L(リピータ)
N=2の場合、上式は以下のようになり、
(M/2)*2=M
圧縮比は以下のようになる。
R(DRLE(S))=L(S)/M
L(S)は
M*(2W−1)
であり、したがってN=2の場合は
R(DRLE(S))=M*(2W−1)/M=2W−1
となることに留意されたい。W=5の場合、R(DRLE(S))は31である。
【0050】
この計算は、Sがすべてゼロの2進値であることに基づいていることに留意されたい。また、長さが2W−1のダブル・ランの反復パターンの総合的結果によって、同じ圧縮比2W−1が得られることにも留意されたい。したがって、Wの選定はきわめて重要である。
【0051】
例3
例2を概括すると、N=2が2W−1の場合の長さ2W−1ビットの単一の反復ダブル・ランの可能な最善の圧縮比がわかる。この例では、N個のダブル・ランを有する反復パターンの最高の圧縮比を計算する。この場合も、L(S)は2進データのシーケンスSの長さを示すものとし、Sは、S全体を通じてパターンとしてM回繰り返されるn個のダブル・ランL1、L2、...、Lnを含むようになっているものとする。言い換えると、
S=L1 L2 ...Ln L1 L2 ...Ln ...L1 L2 ...Ln 剰余
となる。例として、図2に3回生起する反復パターン{4,3}{2,5}を示す。
【0052】
L(DRLE(S))は、リテラル、リピータ、および剰余のパターンの1つのインスタンスの累積長である。L(S)が大きい場合は重要ではないため説明を簡単にするために剰余はないものとする。
【0053】
パターンの1インスタンスのリテラルの長さは、パターン内の各リテラルの長さの合計である。これは、
L(すべてのリテラル)=n*(1+2*W)
となる。
【0054】
パターンの残り(M−1)個のインスタンスはリピータによって表される。リピータの長さは以下のようになる。
L(すべてのリピータ)=(M−1)*(1+最高限度(log2 N))
したがって、以下のようになる。
L(DRLE(S))=n*(1+2*W)+((M−1)*(1+最高限度(log2 N))
W=5およびN=2の場合、上式は以下のようになる。
L(DRLE(S))=11*n+2*(M−1)
【0055】
Mが大きくnが小さい(たとえば2)の場合、これは2*(M−1)に収束する。この結果は、ダブル・ランの長さに対して変化しないことに留意されたい。したがって、圧縮比は反復パターン内のダブル・ランが最大長の場合に最大化され、その逆の場合(すなわち各ダブル・ランが「01」というパターンを表す場合)は最小化される。
【0056】
任意のWおよびNのダブル・ランの最大長反復パターンは以下の形になる。
{2W−1,2W−1}{2W−1,2W−1}.....{2W−1,2W−1}
上記で、このパターン内のダブル・ランの数は合計N個になる。
【0057】
このパターンの長さは
N*2*(2W−1)
である。これを大きなMとN=2に当てはめると、以下の圧縮比が得られる。
R(DRLE(S))=(M*4*(2W−1))/(2*(M−1))
Mが大きい場合、(M−1)をMに置き換えることができ、以下の概算結果が得られる。
2*(2W−1)=2W+1−2
これは、予測通り例2の結果の正確に2倍である。
【0058】
したがって、W=5の場合、N=2について得られる最高の圧縮比は約62である。
【0059】
グレースケール・データへの適用
以下の説明では、以上の説明の結果をグレースケール・データに適用する。グレースケール・データは、一般にはインク・ジェット・プリンタまたはレーザ・プリンタで印刷される、モノクローム・ディジタル・イメージ、または1プレーン当たり1ビット/画素の複数プレーナ・ディジタル・カラー・イメージの単一プレーンを表す2進データである。
【0060】
ディジタル・イメージでは、データの各ビットを画素と呼ぶ。画素の値1は一般にその画素が(たとえば黒色のインクまたはトナーで)「印刷」されることを意味し、値ゼロはその画素が印刷されない(すなわち白または印刷媒体の色)であることを意味する。
【0061】
テキストとグラフィックスを混在させる典型的なソフトウェア・システムでは、ユーザはグレーの様々な陰影を使用することができる。たとえば、図の一部に25%のグレーを使用し、別の部分に50%のグレーを使用することができる。その他の部分にはグレーがなく、ある部分は完全に黒とすることができる(それぞれ0%および100%のグレー)。
【0062】
グレーの陰影が最終的に2進データにされると、グレーのパーセンテージはグレー領域上の印刷画素の割合によって概算され、その領域の上にそれらの印刷画素が分散される。分散プロセスでは一般にグレーを概算すると同時に、不快な可視パターン(すなわちモアレ・パターン)が生じる可能性を最小限にするように試みる。
【0063】
分散は通常、ハーフトーンと呼ばれるパターンで表される。ハーフトーンは一般に、グレーの値を表し、ハーフトーン・セルと呼ばれる画素から成る小さい矩形である。セル内の合計画素数に対する印刷画素数によって、セルが表すグレーのパーセンテージが決まる。たとえば、4×4セルによって最大17のグレーの陰影を表すことができる。
【0064】
ハーフトーン・セルのサイズが通常小さいことは価値がない。16×16セルが一般的であり、それによって最大257個のグレー値を表すことができ、これはほとんどの用途で必要な数より多い。
【0065】
図5(a)に、ディジタル・イメージの一部にあるハーフトーンの例を示す。このカットには12本の走査線がある。走査線とはディジタル・イメージ内の画素から成る1本の線である。データのこの部分内には25%のグレーを表すハーフトーン・パターンがある。この例では、最長のランでも7画素しかなく、最小は1画素である。1ビット・パターンの場合、RLEではこれを十分に扱えないことは明らかである。
【0066】
図5(b)に、各走査線にMRを個別に適用したDRLEを示す。全体的な圧縮に関して最大の柔軟性をもたせるように、一般には一度に1本の走査線に圧縮が適用される(グレースケール・データと写真画像が含まれているページを考えてみると、イメージ・データを有する走査線はDRLEではそれほど良好に圧縮することができず、他の何らかの形の圧縮を必要とすることがある)。この結果、合計長が以下の通りの32個のリテラルと48個のリピータになる。
(32*11)+(48*2)=448ビット
【0067】
この例では、走査線カットの幅は83画素に過ぎず、そのような線が12本ある。したがって、行イメージ・サイズは
(12*83)=996ビット
となる。
【0068】
したがって、この例の圧縮比は
996/448=2.22
となる。
【0069】
300ドット/インチ(dpi)のイメージでは、83ビットの走査線は0.28インチ(0.71cm)に過ぎず、600dpiでは0.14(0.36cm)インチに過ぎない。これらのdpiレベルは今日のディジタル・プリンタに典型的なものである。したがって、現実には典型的な8 1/2×11インチの用紙上の走査線は一般に300dpiで2550画素、600dpiで5100画素である。反復パターンを含むグレースケール・データの典型的なカットは、0.28インチ(0.71cm)または0.14インチ(0.36cm)を超えつつある。したがって現実の例では、リピータの圧縮比に与える効果はこの例よりも大きな影響を持ち、圧縮比はこれより高くなる。
【0070】
ハーフトーン・セルのサイズが小さいため、ハーフトーンのグレースケール・データは従来のRLEでは十分に役立たない。これは、ランのサイズが小さく、ランの長さフィールドの長さがラン自体の長さとそれほど違わないため、圧縮比が小さくなるためである。または、RLEではそのデータをまったく圧縮することができず、実際にはそれを伸張する可能性がある。
【0071】
DRLEは、各パターンが小さい、1とゼロの可変長パターンを含むデータのクラスの場合、きわめて良好な圧縮を実現する適応型無損失圧縮方式である。DRLEは、コンピュータで作成され、1プレーン当たり1ビット/画素のカラー・プリンタまたはモノクローム・プリンタを対象とする、テキストとグラフィックスを含む文書のディジタル表現では典型的なタイプのデータである、ハーフトーン化されたグレースケール・データに特に適切である。したがって、このタイプの文書を保持するのに必要な記憶容量が大幅に低減される。
【0072】
圧縮による記憶量低減は、低コストの高解像度ディジタル画像処理システム、すなわち、インク・ジェット・プリンタおよびレーザ・プリンタの必須要素である。これは記憶装置が高価な機構であるために必要である。記憶量をなくしたり減らしたりすることは、コスト競争力のある製品を開発する有効な方法である。
【0073】
レーザ・プリンタ内で、所与のページの用紙がプリンタを通過して移動し始めた後は、その用紙は連続的に移動する。この期間中、ソフトウェアとハードウェアはリアルタイム制約の下でレーザに走査線を送る必要がある。したがって、圧縮解除方式の計算効率が高いことが重要である。DRLEの圧縮解除方式はきわめて単純であることは明白であろう。さらに、N=2および最新履歴(MR)の場合、DRLEの圧縮圧縮アルゴリズムも簡単である。したがって、DRLEは、高い圧縮比を実現するだけでなく、実施がきわめて容易であり、リアルタイム環境におけるソフトウェアとハードウェアの両方の実施態様にとって効率上有用である。
【0074】
ソフトウェア実施態様
DRLEのソフトウェア実施態様の例を、本明細書に付属文書Iとして添付されており、これはC言語ソース・コードである。このプログラムの動作は以下のハードウェア実施態様の説明を読めば容易に明らかになろう。
【0075】
ハードウェア実施態様
図6に、2進データのストリームを圧縮するのに必要なデータ経路と処理段階に焦点を絞ったDRLEのハードウェア実施態様を図示する。データの流れは左から右の方向である。システム・メモリ(たとえばDRAM)から非圧縮ソース・データが読み取られ、入力FIFO 101を経由して圧縮器に入る。入力FIFOは任意選択であるが、これによってメモリからソース・データをバーストで読み取ることができ、全体的なシステム・パフォーマンスを最適化することができる。後述するいくつかの処理段階103の後、圧縮されたデータ・ワードが出力FIFO 105に書き込まれる。出力FIFOも任意選択であるが、この場合もこれによって圧縮データをメモリにバーストで書き込むことができる。
【0076】
入力FIFO 101
入力FIFOはDMA読取りFIFOとして実施することができる。このFIFOはシステム・メモリから読み取る要求と、システム・メモリから読み取ったデータをFIFOバッファに格納する要求を生成する論理回路を含む。
【0077】
ダブル・ラン・エンコーダ 109
ダブル・ラン・エンコーダは、入力FIFOからワードをアンロードする要求を出すエンコーダである。本明細書に記載の実施例では、データ・ワードのサイズは32ビットである。しかし、異なるサイズのバッファとカウンタを使用してその他のサイズのデータ・ワードも扱うことができ、その特定の詳細は当業者なら容易にわかるであろう。ダブル・ラン・エンコーダの処理によって、32ビットのデータ・ワードが5ビットのランレングス符号化に変換される。データは、ダブル・ラン・エンコーダに32ビット・ワードとして入るかその他のサイズのワードとして入るかに関係なく、2進データの直列ストリームとみなされる。従来技術のランレングス・エンコーダ109aを使用してこの直列ストリームを読み取り、5ビット・カウンタで連続ビットの数をカウントする。内部状態機械109bが、ランレングス・エンコーダの動作を制御し、最初にゼロ・ビットをカウントするように指示する。1に到達すると、ランレングス・エンコーダのゼロのカウントが、ダブル・ランFIFO 111内のレジスタH2の上位半分にロードされる。ただし、H2は後述するように10ビットのレジスタである。内部状態機械109bは次にランレングス・エンコーダ109aに対して連続する1のビットをカウントするように指示する。ゼロに到達すると、ランレングス・エンコーダの1のカウントがレジスタH2の下位半分にロードされる。この時点で、レジスタH2には有効なダブル・ラン符号化が入れられ、ダブル・ラン・エンコーダの状態機械はこの事象を後述するDRLE状態機械に通知する。
【0078】
ダブル・ラン・エンコーダはこのストリームの処理中に2つの問題を処理しなければならない。第1に、ゼロのランまたは1のランがワード境界を越すことがある。ランレングス・エンコーダがワード内の最後のビットに到達すると、ダブル・ラン・エンコーダは入力FIFOから別のワードを要求しなければならない。入力FIFOが次のワードを供給すると、ランレングス・エンコーダ109aは現行ランのカウントを再開する。
【0079】
第2に、ソース・ストリームに、ランレングス・エンコーダの5ビット・カウンタが保持することができる最大値である31ビットより大きいゼロのランまたは1のランが入っている場合がある。これが発生した場合、ダブル・ラン・エンコーダはそのランを2つ以上のダブル・ラン符号化に分割しなければならない。この特殊な事態はRLE状態機械109bが処理する。ランレングス・エンコーダは、1つのラン内の32番目のビットに到達するとその事象をRLE状態機械に通知し、RLE状態機械はDRLE状態機械115に対してレジスタH2内の値が完結していることを通知する。レジスタH2内の値は、ゼロのランのカウント中に最大カウントに達した場合は{31,0}であり、1のランのカウント中に最大カウントに達した場合は{n,31}である。ただし、nは直前のランでカウントされたゼロの数である。H2内の値が受け入れられると、RLE状態機械109bはランレングス・エンコーダを再始動させ、ランレングス・エンコーダは前に中断したところからビットのカウントを再開する。
【0080】
RLE状態機械は、当業者に周知の技法による順序論理回路を使用して実施することができる。状態機械の機能も、論理ゲートを使用して個別論理回路として実施することができる。その具体的な詳細は本発明を理解するのに重要ではなく、当業者には周知である。
【0081】
ダブル・ランFIFO 111
ダブル・ランFIFOは、ダブル・ラン・エンコーダ109によって生成された最後の3つの結果を保持するFIFOとして構成された3個の10ビット・レジスタに過ぎない。図7で、この3個のレジスタにはH2、H1、およびH0と符号が付けられている。圧縮開始時には、H2がゼロ・クリアされ、H1とH0はそれぞれ{31,0}に初期設定される。この初期設定値によって、ゼロ・ランで始まるデータ・ストリームの圧縮度が向上する。ダブル・ラン・エンコーダがその最初の結果を生成すると、それらがH2にロードされる。H2、H1、およびH0内の値は履歴比較器113によって検査され、履歴比較器は後述するようにDRLE状態機械にデータを供給する。DRLE状態機械が履歴比較器の結果に基づいて動作すると、レジスタH2およびH1内の値がそれぞれレジスタH1およびH0にシフト・ダウンされ、レジスタH2は再びゼロ・クリアされる。その後、レジスタH2を使用して次のダブル・ラン値を形成することができる。
【0082】
履歴比較器113
履歴比較器は、2つの比較を行い、その結果はDRLE状態機械が圧縮コードの生成を制御するために使用する。履歴比較器は、2つの10ビット等価比較器を含む。第1の等価比較器はレジスタH2をレジスタH1と比較し、第2の等価比較器はレジスタH2とレジスタH0を比較する。これらの比較結果は、DRLE状態機械に供給され、コード・エミッタ117を制御する。
【0083】
DRLE状態機械115
DRLE状態機械は、履歴比較器から結果を受け取り、その結果に基づいてコード・エミッタが生成するコードのタイプ、すなわち後述のようにYかZかを選択する。
【0084】
DRLE状態機械は、3ステート有限状態機械(FSM)として実施することができる。初期状態は、状態0であり、現行ダブル・ランについて検討中の前のダブル・ランがない状態である(前にA≠C、A≠B)。この場合、現行ダブル・ランは、リテラルとして出されるか(履歴内のいずれとも一致しない場合、A≠C、A≠B)、履歴内の最新項目とのみ一致する場合(A≠C、A=B)はリピータとして出され、現行ダブル・ランが最も古いものと一致する場合(A=C、A≠B)(状態1)または履歴内の両方のダブル・ランと一致する場合(A=C、A=B)(状態2)は、状態を変化させる。
【0085】
状態1は、前のダブル・ランが現行ランだったときに履歴比較機内の最も古いものと一致したが、最も新しいものとは一致しなかった場合(前にA=C、A≠B)に発生する。この場合、現行ダブル・ランが現行の最も古いものと一致する場合(A=C)、2要素リピータを出すことができる。そうでない場合は、前のリテラルを出さなければならず、現行のものはリテラル(A≠B)または単一要素リピータ(A=B)として出される。
【0086】
状態2は、前のダブル・ランが現行ダブル・ランだったときに履歴比較器内の両方の要素と一致した場合(前にA=C、A=B)に発生する。この場合、現行ダブル・ランが現行の最も古いものと一致しする場合(A=C)、2要素リピータを出すことができる。そうでない場合(A≠C)、前の単一リピータを出さなければならず、現行のものはリテラルとして出される。
【0087】
DRLE状態機械は、付属文書1のソース・コードで表されるものとして前述したソフトウェア実施態様で説明している状態機械のコードを実施する状態機械である。
【0088】
コード・エミッタ117
コード・エミッタはYとZの2つの出力を発生する。Yには、完全な11ビットのリテラル・コードか、2ビットの単一反復コードか、または2ビットのダブル反復コードが入る。Zには、Yのコードのサイズ、すなわち2または11が入る。コード・エミッタは、履歴比較器の結果に基づいてDRLE状態機械115によって制御される。H2から10ビットの値を取り出し、ADD0論理回路114によって最上位ビットとして0を前に付加し、11ビットの結果をY上に駆動することによって、リテラル・コードが生成される。それと並行して、値11(2進数1011)がZに駆動される。2進数10をYの最下位ビットに駆動し、値2(2進0010)をZに駆動するだけで単一反復コードが生成される。同様に、2進数11をYの最下位ビットに駆動し、Zに値2(2進0010)を駆動することによって、ダブル反復コードが生成される。DRLE状態機械115からの出力信号は、コード・エミッタ117への3つの入力のうちの1つを選択し、前述のようにコード・エミッタはそれをZ上の11または2と共にYに入れる。
【0089】
ワード・パッカ119
ワード・パッカは、コード・エミッタ117からnビットのコードを受け取り、それらを32ビット・ワードにパックする。ワード・パッカはコード・エミッタから、コードすなわちYからの値と、コードのサイズすなわちZからの値の2つの値を受け取る。コード・エミッタは2ビットと11ビットの2つのコード・サイズしか出力しない。コード・サイズに応じて、ワード・パッカは現行2ビット・コード値または11ビット・コード値を、前に受け取った値と結合し、32ビット・ワードを形成する。ワード・パッカは、ワード境界を越えるコードを適切に扱わなければならない。完全な32ビット・ワードを形成するのに十分なコードが結合されると、ワード・パッカはその結果を出力FIFOに渡す。ワード・パッカ119の機能を実施する回路は当業者なら容易にわかるであろう。図7は、ワード・パッカ・ブロック119のデータ経路の作用を示す、適合する一実施態様のブロック図である。ワード・パッカはコード・エミッタ117から一続きのnビット・コードを受け取り、それらを一緒にパックして32ビット・ワードにする。ワード・パッカはコード・エミッタから、コードすなわちYからの値と、コードのサイズすなわちZからの値の2つの値を受け取る。
【0090】
図7のワード・パッカは、そのコアにある32ビットのバレル・シフタ131を使用する。32ビット・バレル・シフタは、Yで送られたコード値を回転させて適切な位置に入れ、32ビット・レジスタ135に連結された前のコード値と結合することができるようにする。32ビット幅の2:1マルチプレクサ137が、現行コード値を、前の連結コード・データのストリングと結合し、新しい連結を32ビット・レジスタ135に保管する。32ビット・レジスタが一杯になるかオーバーフローすると、ワード・パッカはその結果を出力FIFO 105に渡す。
【0091】
Z上の4ビット値は、Y上のコードのサイズを示す。Zの値は5ビットのレジスタ141に累積され、このレジスタのPakShという符号が付けてある出力がバレル・シフタの動作を直接制御し、32個の個別に制御可能な2:1マルチプレクサを含む32ビット幅の2:1マルチプレクサ137の動作を間接的に制御する。PakSh値は、マスク生成器145によって単純な5ビットの2進値から32ビットのマスクに変換される。PakSh値0x00、0x01、0x02、...、0x1Fによって、それぞれ32ビットのマスク値0x00000000、0x80000000、0xC0000000、...、0xFFFFFFFFが生成される。次にこの32ビット・マスクからのビット値によって、32個の2:1マルチプレクサのそれぞれが直接、個別に制御されて、現行コード・データまたは前のコード・データが選択される。このようにして、32ビット幅の2:1マルチプレクサ137は現行コード値をその直前のコード値のストリングと結合し、その新しい結合を32ビット・レジスタ135にロードすることができるようにする。
【0092】
上記で示していない小さい状態機械が、5ビットおよび32ビットのレジスタ141および135のロードと、マスク生成器145のイネーブルとを制御する。また、これはALU 131からの合計および桁上げ出力(図示せず)のモニタも行い、現行コードによって32ビットが一杯になるかまたはオーバーフローするかどうかを判断する。この2つのいずれの場合も、32ビット・レジスタ135にロードされた後、その結果を出力FIFO 105に渡さなければならない。後者の場合、次のコード値を結合する前に、現行回転コードのオーバーフロー部分を32ビット・レジスタの開始ビット部分にロードしなければならない。この状態機械はこの順序付けを扱う。
【0093】
出力FIFO 105
出力FIFOはDMA書込みFIFOとして実施することができる。このFIFOは、ワード・パッカ117から受け取った32ビット・ワードを格納し、そのワードをメモリに書き戻す。メモリに格納されている圧縮データはデコーダに渡され、デコーダの出力は元の入力ファイルと同じである。
【0094】
デコーダは上述の処理を逆にたどる。適合するデコーダの実施態様の詳細は、当業者なら容易にわかるであろう。
【0095】
以上、ダブル・ランレングス・エンコーダの特定の実施態様について説明したが、異なるワード・サイズを使用したり、3個のレジスタH1〜H2より多くのレジスタを設けたり、履歴比較による比較を3つより多くしたり、DRLE状態機械の状態を3つより多くしたり、0と1の代わりに1と0の対にして、リテラルを示す接頭コードとして0の代わりに1を使用し、1の代わりに0を使用してリピータを示したりするなど、特許請求の範囲に記載の本発明の精神および範囲から逸脱することなく多くの変更を加えることができる。
【図面の簡単な説明】
【図1】 2進データの様々な表現を示す図である。
【図2】 最新(MR)履歴を使用したダブル・ランレングス符号化の例を示す図である。
【図3】 最新パターン変化(MRPC)を使用したダブル・ランレングス符号化の例を示す図である。
【図4】 事前定義固定パターン(PFP)を使用したDRLEの例を示す図である。
【図5】 グレースケール・データのダブル・ランレングス符号化を示す図である。
【図6】 本発明のダブル・ランレングス符号化技法のハードウェア実施態様を示すブロック図である。
【図7】 本発明と共に使用するのに適したワード・パッカを示すブロック図である。
【符号の説明】
101 入力FIFO
103 処理段階
105 出力FIFO
109 ダブル・ラン・エンコーダ
109a ランレングス・エンコーダ
109b 内部状態機械
111 ダブル・ランFIFO
113 履歴比較器
115 DRLE状態機械
117 コード・エミッタ
119 ワード・パッカ
131 バレル・シフタ
137 マルチプレクサ
145 マスク生成器

Claims (12)

  1. 2進データの無損失圧縮を行うシステムであって、a)各符号化対が0のランと1のランを表す、2進データのストリームを前記符号化対としてランレングス符号化する手段と、b)前記符号化対の履歴を記憶する手段と、c)現行符号化対を前記履歴内の少なくとも第1および第2の前の符号化対と比較する手段と、d)i)第1の接頭コードが付加された前記現行符号化対と、第1のコードと第2のコードはそこに付加された第2の接頭コードを有し、前記現行符号化対が前記第2の前の符号化対と一致し、前記第1の前の符号化対と一致しなかったことを示す前記第1のコードと前記現行符号化対が前記第2の前の符号化対および前記第1の前の符号化対と一致したことを示す前記第2のコードとのうちの1つと、のいずれか一方を選択する手段、ii)前記選択された一方と前記選択された一方の長さとを出力として生成する手段と、e)前記出力を所定の長さを有するワードにパックする手段とを備えるシステム。
  2. 前記ランレングス符号化手段が、ランレングス・エンコーダに入力源からデータを要求させて前記データを対に変換させるように動作するランレングス状態機械に結合されたランレングス・エンコーダを備え、各対の第1の要素が入力源から受け取った連続する0の数を示す数値であり、各対の第2の要素が入力源から受け取った連続する1の数を示す数値であり、前記ランレングス状態機械が各連続する0と連続する1との対の組合せの終わりを示す信号を発生するようにさらに動作することを特徴とする請求項1に記載のシステム。
  3. 前記履歴格納手段が、第2のレジスタに結合された第1のレジスタと第2のレジスタに結合された第3のレジスタとを有するFIFOを備え、前記レジスタのそれぞれが2つの半分を有し、その一方に前記ランレングス・エンコーダ手段によって生成された連続する0が格納されその他方に前記ランレングス・エンコーダ手段によって生成された連続する1が格納されることを特徴とする請求項1に記載のシステム。
  4. 前記比較器手段が、前記第1のレジスタの内容を前記第2のレジスタおよび前記第3のレジスタと比較し、前記比較の結果を示す対応する第1おび第2の比較信号を発生する比較器を備えることを特徴とする請求項3に記載のシステム。
  5. a)前記第1の接頭コードを前記現行符号化対の前に付加する接頭コード手段と、b)前記第1および第2のコードを生成する反復コード手段とをさらに備える、請求項1に記載のシステム。
  6. 前記選択手段が、a)前記比較器手段と前記履歴手段と前記ランレングス符号化手段とに結合されたダブル・ランレングス状態機械と、b)前記第1の接頭コード手段と前記反復コード手段と前記ダブル・ランレングス状態機械とに結合され、前記ダブル・ランレングス状態機械から受け取った信号に基づいて、接頭コードを有する前記現行符号化対と、前記第2の接頭コードを伴った前記第1のコードと前記第2のコードとのうちの1つをその出力として選択するコード・エミッタ・マルチプレクサと、c)前記マルチプレクサに結合され、前記選択された1つの出力の長さを生成する論理回路とを備えることを特徴とする請求項5に記載のシステム。
  7. 前記パッキング手段が、a)前記論理回路に結合され、前記選択された1つの生成された長さを1つの入力として受け取り、合計および桁上げ出力を生成するアキュムレータと、b)前記アキュムレータに結合され、前記アキュムレータの合計出力をその入力として受け取り、その内容を前記アキュムレータに第2の入力として供給するレジスタと、c)前記コード・エミッタ・マルチプレクサに結合され、前記コード・エミッタ・マルチプレクサからの選択された出力をそのデータ入力として受け取るバレル・シフタと、d)前記レジスタに結合され、前記レジスタの内容に基づいてマスク出力を生成するマスク生成器と、e)前記バレル・シフタと前記マスク生成期手段とに結合され、それぞれが前記バレル・シフタの出力のうちの対応する1つを1つの入力として有する1組の2:1マルチプレクサと、f)前記1組の2:1マルチプレクサに結合され、前記1組の2:1マルチプレクサへの対応する第2の入力として結合された出力を有する第2のレジスタとを備えることを特徴とする請求項6に記載のシステム。
  8. 2進データの無損失圧縮を行う方法であって、a)各符号化対が0のランと1のランを表す2進データのストリームを符号化対としてランレングス符号化するステップと、b)前記符号化対の履歴を記憶するステップと、c)現行符号化対を前記履歴内の少なくとも第1および第2の前の符号化対と比較するステップと、d)第1の接頭コードが付加されている前記現行符号化対と、第1のコードと第2のコードはそこに付加された第2の接頭コードを有し、前記現行符号化対が前記第2の前の符号化対と一致し、前記第1の前の符号化対と一致しなかったことを示す前記第1のコード前記現行符号化対が前記2の前の符号化対および前記第1の前の符号化対と一致したことを示す前記第2のコードとのうちの1つと、の一方を選択するステップと、e)前記選択された一方と前記選択された一方の長さとを出力として生成するステップと、f)前記出力を所定の長さを有するワードにパックするステップとを含む方法。
  9. 前記ランレングス符号化ステップが、入力源からデータを要求して前記データを、各対の第1の要素が入力源から受信した連続する0の数を示す数値であり、各対の第2の要素が入力源から受け取った連続する1の数を示す数値である対に変換し、各連続する0と連続する1との対の組合せの終わりを示す信号を発生するステップを含むことを特徴とする請求項8に記載の方法。
  10. 前記履歴記憶ステップが、前記ランレングス・エンコーダ・ステップによって生成された前記連続する0および1を、第2のレジスタに結合された第1のレジスタと、前記第2のレジスタに結合された第3のレジスタとを有するFIFOに格納するステップを含み、前記レジスタのそれぞれが2つの半分を有し、そのうちの一方に連続する0が格納され、他方に連続する1が格納されることを特徴とする請求項9に記載の方法。
  11. 前記比較ステップが、前記第1のレジスタの内容を前記第2のレジスタおよび前記第3のレジスタと比較し、前記比較の結果を示す対応する第1および第2の比較信号を発生するステップを含むことを特徴とする請求項10に記載のシステム。
  12. a)前記第1の接頭コードを前記現行符号化対の前に付加するステップと、b)前記第1および第2のコードを生成するステップとをさらに含む、請求項8に記載の方法。
JP01008697A 1996-01-02 1997-01-06 2進データのダブル・ランレングス符号化の方法および装置 Expired - Fee Related JP4094081B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/582,150 US5710561A (en) 1996-01-02 1996-01-02 Method and apparatus for double run-length encoding of binary data
US08/582150 1996-01-02

Publications (2)

Publication Number Publication Date
JPH114170A JPH114170A (ja) 1999-01-06
JP4094081B2 true JP4094081B2 (ja) 2008-06-04

Family

ID=24328045

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01008697A Expired - Fee Related JP4094081B2 (ja) 1996-01-02 1997-01-06 2進データのダブル・ランレングス符号化の方法および装置

Country Status (4)

Country Link
US (1) US5710561A (ja)
EP (1) EP0783208B1 (ja)
JP (1) JP4094081B2 (ja)
DE (1) DE69624670T2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5841379A (en) * 1997-01-24 1998-11-24 Texas Instruments Incorporated Method and apparatus for selectively counting consecutive bits
US6332152B1 (en) * 1997-12-02 2001-12-18 Matsushita Electric Industrial Co., Ltd. Arithmetic unit and data processing unit
EP0957586A1 (en) * 1998-05-15 1999-11-17 Algorithmic Research BV. Method for data compression
US6215424B1 (en) * 1998-12-16 2001-04-10 Thomson Licensing S.A. System for variable length codeword processing suitable for video and other applications
US6416410B1 (en) 1999-12-03 2002-07-09 Nintendo Co., Ltd. Data compression/decompression based on pattern and symbol run length encoding for use in a portable handheld video game system
US6445314B1 (en) * 2000-03-01 2002-09-03 Cisco Technology Inc. System and method for the decoding of variable length codes
JP2002142118A (ja) 2000-10-31 2002-05-17 Ricoh Co Ltd 符号化装置、復号化装置、画像形成装置、符号化方法および復号化方法
US7164369B2 (en) * 2001-06-19 2007-01-16 Sharp Laboratories Of America, Inc. System for improving storage efficiency of digital files
US7532358B2 (en) * 2002-02-27 2009-05-12 Hewlett-Packard Development Company, L.P. Hardware implemented loss-less page data compressor/decompressor
GB0217604D0 (en) * 2002-07-30 2002-09-11 Vodafone Ltd Data processing systems and methods
US20070162643A1 (en) * 2005-12-19 2007-07-12 Ivo Tousek Fixed offset scatter/gather dma controller and method thereof
US7486211B2 (en) * 2007-04-13 2009-02-03 Apple Inc. Method and system for entropy coding
US8144037B2 (en) * 2007-07-12 2012-03-27 Intellectual Ventures Fund 44 Llc Blocking for combinatorial coding/decoding for electrical computers and digital data processing systems
US8055085B2 (en) * 2007-07-12 2011-11-08 Intellectual Ventures Fund 44 Llc Blocking for combinatorial coding/decoding for electrical computers and digital data processing systems
US7990289B2 (en) * 2007-07-12 2011-08-02 Intellectual Ventures Fund 44 Llc Combinatorial coding/decoding for electrical computers and digital data processing systems
US8111380B2 (en) * 2007-09-14 2012-02-07 Luminescent Technologies, Inc. Write-pattern determination for maskless lithography
US7834783B2 (en) * 2008-08-26 2010-11-16 International Business Machines Corporation Converting a mask constraint into a bitset constraint
US7804428B2 (en) * 2008-11-10 2010-09-28 Apple Inc. System and method for compressing a stream of integer-valued data
US8514107B2 (en) * 2009-04-09 2013-08-20 Thomson Licensing Method and device for encoding and decoding of symbol sequences wherein each symbol may have one out of three or more possible symbol values
US20150302279A1 (en) * 2009-12-22 2015-10-22 Ricoh Company, Ltd. Run Length Compression Mechanism
US8653454B2 (en) 2011-07-13 2014-02-18 Luminescent Technologies, Inc. Electron-beam image reconstruction
GB2511493B (en) * 2013-03-01 2017-04-05 Gurulogic Microsystems Oy Entropy modifier and method

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5634266A (en) * 1979-08-29 1981-04-06 Hitachi Ltd Double run length encoding system
US4316222A (en) * 1979-12-07 1982-02-16 Ncr Canada Ltd. - Ncr Canada Ltee Method and apparatus for compression and decompression of digital image data
US4679094A (en) * 1986-10-14 1987-07-07 The Associated Press Method for compression and transmission of video information
US4971407A (en) * 1989-08-09 1990-11-20 Unisys Corp. Two stage run and string data compressor providing doubly compressed output
US4988998A (en) * 1989-09-05 1991-01-29 Storage Technology Corporation Data compression system for successively applying at least two data compression methods to an input data stream
JPH0629861A (ja) * 1990-12-31 1994-02-04 Internatl Business Mach Corp <Ibm> データ圧縮方法
US5627534A (en) * 1995-03-23 1997-05-06 International Business Machines Corporation Dual stage compression of bit mapped image data using refined run length and LZ compression
US5689255A (en) * 1995-08-22 1997-11-18 Hewlett-Packard Company Method and apparatus for compressing and decompressing image data

Also Published As

Publication number Publication date
DE69624670D1 (de) 2002-12-12
EP0783208A3 (en) 1998-11-25
US5710561A (en) 1998-01-20
DE69624670T2 (de) 2003-07-17
JPH114170A (ja) 1999-01-06
EP0783208A2 (en) 1997-07-09
EP0783208B1 (en) 2002-11-06

Similar Documents

Publication Publication Date Title
JP4094081B2 (ja) 2進データのダブル・ランレングス符号化の方法および装置
US5857035A (en) Arithmetic coding compressor for encoding multiple bit values
US5745608A (en) Storing data compressed with arithmetic coding in non-contiguous memory
JP3007496B2 (ja) 可変長復号化器
JPH08275000A (ja) デジタル画像データの圧縮装置及び方法
US5886655A (en) Arithmetic coding context model that accelerates adaptation for small amounts of data
Ono et al. JBIG2-the ultimate bi-level image coding standard
JP2831888B2 (ja) Hdtv復号化器
US5694125A (en) Sliding window with big gap data compression system
JP4063487B2 (ja) ラスタデータの圧縮方法
US5901251A (en) Arithmetic coding compressor using a context model that is adaptive to variable length patterns in bi-level image data
US4972497A (en) Image coding system
JPH09121170A (ja) デジタル画像信号の圧縮・復元を行う方法及び装置
EP0797348A2 (en) A one dimensional context model for entropy encoding digital halftone images with arithmetic coding
US5880688A (en) Arithmetic coding context model that adapts to the amount of data
US5949909A (en) Apparatus for decompressing multiple codes in a single clock cycle
US5960115A (en) Method for decompressing multiple codes in a single clock cycle
EP0834832B1 (en) Arithmetic image coding
JP3085118B2 (ja) データ圧縮装置
JP2001217722A (ja) 情報符号化装置及び情報符号化方法及びコンピュータ読み取り可能な記憶媒体
EP0660587B1 (en) Reversible video compression method
JPH05193200A (ja) 印字装置
EP0753830A2 (en) High-speed decompressor
JPH09200536A (ja) 符号化装置および復号化装置
JPH10108026A (ja) 非可逆データ圧縮方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050614

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050914

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20051004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080305

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110314

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110314

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120314

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130314

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130314

Year of fee payment: 5

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130314

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130314

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees