JP3753580B2 - データ符号化方法、データ復号化方法、およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 - Google Patents
データ符号化方法、データ復号化方法、およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 Download PDFInfo
- Publication number
- JP3753580B2 JP3753580B2 JP2000007194A JP2000007194A JP3753580B2 JP 3753580 B2 JP3753580 B2 JP 3753580B2 JP 2000007194 A JP2000007194 A JP 2000007194A JP 2000007194 A JP2000007194 A JP 2000007194A JP 3753580 B2 JP3753580 B2 JP 3753580B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- code
- state
- event
- numerical
- 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
Links
Images
Landscapes
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【発明の属する技術分野】
この発明は、データを走査して得られるランレングス数値列を0のビット連続数と1のビット連続数との組を入力単位として順次入力し、所定の符号列に変換して出力するデータ符号化方法、符号列データを走査して得られる符号列を入力し、0のビット連続数Xと1のビット連続数Yとの組を単位とするランレングス数値列に復元して出力するデータ復号化方法、およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【0002】
【従来の技術】
従来、レーザープリンタなどの印刷装置では、印刷対象となる画像データを圧縮(符号化)して一時的にメモリに蓄積し、このメモリに蓄積した圧縮データを伸張(復号)しながら実際の印刷をおこなうことにより、画像データを記憶するためのメモリのメモリ容量を低減する省メモリ技術が知られている。
【0003】
かかる省メモリ技術の本来の目的は、画像データを記憶するメモリのメモリ容量を低減してコストダウンを図ることにあるので、画像データを圧縮又は伸張するための複雑な専用ハードウエアを設けるのは妥当ではなく、印刷装置のマイクロプロセッサにこれらの処理をソフトウエア的におこなわせる必要がある。
【0004】
ここで、二次元静止画像の符号化技術としては、副走査方向のデータ相関を考慮してデータ圧縮をおこなう二次元圧縮技術や算術符号を用いて予測符号化をおこなう予想符号化技術が高い圧縮率を得ることができる技術として知られている。
【0005】
しかし、印刷装置のマイクロプロセッサを用いてこれらの符号化技術をソフトウエア的に実現しようとすると、処理遅延が生じてしまうので、印刷解像度や印刷速度が日々向上する昨今では、これらの符号化技術を用いることは効率的ではない。このため、マイクロプロセッサに圧縮伸張をおこなわせる場合には、一次元圧縮と呼ばれる比較的単純な圧縮技術が広く用いられている。
【0006】
従来の一次元圧縮技術としては、ランレングス処理やファクシミリ装置などで採用されているMH(Modified Haffman)符号が広く知られているが、疑似中間調画像のような色(白黒)が短い周期で頻繁に変化する画像データの場合には、効率良く圧縮することができない。特に、パーソナルコンピュータやネットワークの進展によってイメージデータを印刷する機会が増加してきたため、このMH符号を省メモリ機構として採用するのは効率的ではない。
【0007】
このため、色が短い周期で頻繁に変化する画像データの圧縮率を改善するために、画像データやランレングスの繰り返し性を検出する符号化技術が知られている。たとえば、特許第2683506号公報(従来技術1)には、白ワードの長さと黒ワードの長さを両方記述可能な制御ワードを使用することにより、白ワードと黒ワードが比較的短い周期で規則的に現れるイメージデータを効率的に圧縮するデータ圧縮(伸張)方法及び装置が開示されている。
【0008】
具体的には、この従来技術1では、あるワード長(バイト)を規定し、すべてが白であるデータ単位を白ワードとし、すべてが白でないものを黒ワードとして取り扱い、それらの繰り返し出現数、黒ワードの内容、制御語などをワード長単位で符号化しているので、符号化および復号化に際して特別な符号テーブルを必要とせず、また、ワード長単位で処理できるのでマイクロプロセッサで処理しても十分な処理性能を期待することができる。
【0009】
また、特開平9−65147号公報(従来技術2)には、白および黒の各々のランレングスを記憶し、ある色のランレングス値が同色の直前のランレングス値と一致する場合に、所定の反復符号を生成することにより、圧縮率および処理速度を改善する画像信号圧縮(復元)方法および装置が開示されている。
【0010】
【発明が解決しようとする課題】
しかしながら、上記従来技術1では、ワード列単位で繰り返し性を検出しているので、対象となる画像データに含まれる繰り返しの周期とワード長とが一致するかまたは倍数となる場合にのみ高い圧縮率が得られるにすぎず、一般的な画像データについて十分な圧縮が得られないという問題がある。
【0011】
また、上記従来技術2では、ラン長の一致が発生したときに生成される反復符号が一致しなかった場合に符号化される符号語に比べて十分に少ないデータ量である場合にのみ圧縮率が向上するものにすぎないという問題がある。すなわち、より短い符号語を反復符号に割り当てることは、相対的に一致しないラン長の符号語を長くするので、色が短い周期で頻繁に変化するような画像データに対しては十分な圧縮率を持つ符号セットを得ることが困難になる。
【0012】
具体的には、この従来技術2の実施の形態では、符号セットはMH符号に類似するものであり、マイクロプロセッサによる処理ではランレングス符号技術のような高速性を期待することができない。また、ランレングス値を記憶するための記憶部が色に対応して設けられているので、ランレングス値の比較や格納に際して、色に応じて参照・格納先を選択する処理が必要となり、マイクロプロセッサによる高速処理の妨げになるという問題もある。
【0013】
なお、上記二次元圧縮技術、予測符号化技術およびMH符号化などにおいては、ラインバッファ、確率テーブル、符号テーブルといった比較的大きな容量のメモリが必要になるという問題がある。たとえば、1200dpi(ドット/インチ)の解像度、25ppm(ページ/分)の印刷速度であれば、画素周波数は100MHzを超えるのが一般的である。このような周波数で上記メモリを含む符号化/復号化のハードウエア回路を動作させることは極めて困難であり、また、たとえ回路を並列化して低周波数で動作させるとしても、テーブルをも含めて並列化する必要があるので大規模な回路となり、コストアップにつながる結果となる。
【0014】
また、特願平11−12479号には、ランレングス値が同色の直前のランレングス値と一致する事象が連続する場合に、その連続数を符号化することにより、符号数を削減するよう構成することにより、疑似中間調画像データに対しても高い圧縮率と高い処理速度とを両立できるようにしたデータ符号化および復号化方法が記載されているが、誤差拡散処理を施した疑似中間調画像を含むような画像データの場合には、十分な圧縮率が得られない。
【0015】
この発明は、上述した従来技術による問題点を解消するため、誤差拡散処理により生成された疑似中間調画像データについても効率良く圧縮することができ、マイクロプロセッサによるソフトウエア処理に適合するデータ符号化方法、データ復号化方法、およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体を提供することを目的とする。
【0016】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するため、請求項1の発明に係るデータ符号化方法は、データを走査して得られるランレングス値列を0のビット連続数と1のビット連続数との組を入力単位として順次入力し、所定の符号列に変換して出力するデータ符号化方法であって、前記入力単位のデータに対応する状態値の算定として、前記0のビットの連続数X、前記1のビットの連続数Y、直前の0のビットの連続数Aおよび直前の1のビットの連続数Bが、X≠A且つY≠Bの関係にある場合に状態S0の値を状態値Sとし、X=A且つY≠Bの関係にある場合に状態S1の値を状態値Sとし、X≠A且つY=Bの関係にある場合に状態S2の値を状態値Sとし、X=A且つY=Bの関係にある場合に状態S3の値を状態値Sとして算定する算定工程と、直前の状態値Tが状態S3であり、かつ、前記状態値Sと直前の状態値Tとが等しい一致事象となった場合にこれを反復事象とみなして、該反復事象が連続して発生する反復数Nを算出する反復数算定工程と、前記反復事象の発生後に、前記状態値Sと直前の状態値Tとが異なる不一致事象または入力完了となった場合に回帰事象と判定する回帰事象判定工程と、前記不一致事象が発生した場合に前記状態値Sの値を示す状態符号を生成する状態符号生成工程と、前記状態符号生成工程による状態符号の生成が終了するかまたは前記一致事象が発生した際に、前記0のビットの連続数Xまたは前記1のビットの連続数Yの値を示す数値符号を生成する第1の数値符号生成工程と、前記回帰事象が発生した場合に、前記状態符号生成工程による状態符号の生成に先だって、前記反復数算定工程によって算定された反復数Nの値を示す数値符号を生成する第2の数値符号生成工程と、を含んで前記入力単位のデータに対応する状態符号および数値符号の生成する生成工程と、を含んだことを特徴とする。
【0017】
この請求項1の発明によれば、入力単位のデータに対応する状態値の算定で、0のビットの連続数X、1のビットの連続数Y、直前の0のビットの連続数Aおよび直前の1のビットの連続数Bが、X≠A且つY≠Bの関係にある場合に状態S0の値を状態値Sとし、X=A且つY≠Bの関係にある場合に状態S1の値を状態値Sとし、X≠A且つY=Bの関係にある場合に状態S2の値を状態値Sとし、X=A且つY=Bの関係にある場合に状態S3の値を状態値Sとして算定して、直前の状態値Tが状態S3であり、かつ、状態値Sと直前の状態値Tとが等しい一致事象となった場合にこれを反復事象とみなして、該反復事象が連続して発生する反復数Nを算出し、反復事象の発生後に、状態値Sと直前の状態値Tとが異なる不一致事象または入力完了となった場合に回帰事象と判定し、不一致事象が発生した場合に状態値Sの値を示す状態符号を生成し、この状態符号の生成が終了するかまたは一致事象が発生した際に、0のビットの連続数Xまたは1のビットの連続数Yの値を示す数値符号を生成し、回帰事象が発生した場合に、状態符号の生成に先だって反復数Nの値を示す数値符号を生成することとしたので、一致事象、不一致事象、反復事象、回帰事象の概念を利用して、誤差拡散処理により生成された疑似中間調画像データについても効率良くデータを圧縮することができる。
【0022】
また、請求項2の発明に係るデータ符号化方法は、請求項1の発明において、前記算定工程は、符号化を開始する際に、T、A、Bおよび反復数Nにそれぞれ所定の初期値を格納する初期化工程と、前記XおよびYに前記ランレングス値を入力する入力工程と、前記入力工程による入力後に、前記状態値Sを生成する状態値生成工程とを含み、前記生成工程は、前記状態値生成工程により生成された状態値Sに対応して前記一致事象または不一致事象の発生を判定する一致事象判定工程と、前記一致事象の発生に応答して前記反復事象の発生の有無を判定する反復事象判定工程と、前記反復事象の発生に応答して前記反復数を加算する反復数加算工程と、前記不一致事象の発生または符号化対象データの終了に応答して前記回帰事象の発生の有無を判定する回帰事象判定工程と、前記回帰事象の発生に応答して前記反復数Nの値を示す反復数数値符号を生成する反復数数値符号生成工程と、前記反復数数値符号の生成後に前記反復数Nを所定の初期値に戻す回帰工程と、前記不一致事象の発生または前記回帰工程による反復数Nの初期化に応答して前記状態値Sの値を表現する状態符号を生成する状態符号生成工程と、前記状態符号生成工程による状態符号の生成または前記反復事象判定工程による反復事象の発生の判定後に、前記XがAと一致しない場合に該Xに対応する数値符号を生成し、前記YがBと一致しない場合に該Yに対応する数値符号を生成する数値符号生成工程と、前記数値符号生成工程による数値符号の生成または前記反復数加算工程による反復数Nの加算後に、前記Aの内容をXに更新し、前記Bの内容をYに更新し、前記Tの内容をSに更新する直前値更新工程とを含んだことを特徴とする。
【0023】
この請求項2の発明によれば、符号化を開始する際に、T、A、Bおよび反復数Nにそれぞれ所定の初期値を格納し、XおよびYにランレングス値を入力し、この入力後に状態値Sを生成し、生成された状態値Sに対応して一致事象または不一致事象の発生を判定し、一致事象の発生に応答して反復事象の発生の有無を判定し、反復事象の発生に応答して反復数を加算するし、不一致事象の発生または符号化対象データの終了に応答して回帰事象の発生の有無を判定し、回帰事象の発生に応答して反復数Nの値を示す反復数数値符号を生成し、反復数数値符号の生成後に反復数Nを所定の初期値に戻し、不一致事象の発生または反復数Nの初期化に応答して状態値Sの値を表現する状態符号を生成し、状態符号の生成または反復事象の発生の判定後に、XがAと一致しない場合に該Xに対応する数値符号を生成し、YがBと一致しない場合に該Yに対応する数値符号を生成し、数値符号の生成または反復数Nの加算後に、Aの内容をXに更新し、Bの内容をYに更新し、Tの内容をSに更新することとしたので、マイクロプロセッサによるソフトウエア処理に適合したデータの圧縮をおこなうことができる。
【0024】
また、請求項3の発明に係るデータ復号化方法は、符号列データを走査して得られる符号列を入力し、0のビット連続数Xと1のビット連続数Yとの組を単位とするランレングス値列に復元して出力するデータ復号化方法であって、復号化を開始する際に、復元される状態値を記憶する記憶部S、復元されるランレングス値のうち前記Xに相当する値を記憶する記憶部Cおよび復元されるランレングス値のうち前記Yに相当する値を記憶する記憶部Dに所定の初期値を代入して初期化する初期化工程と、所定の符号単位を入力して該符号が数値符号Pであるか状態符号Qであるかを判定する入力符号種判定工程と、前記入力符号種判定工程により数値符号と判定された場合に、該符号を数値に復元して記憶部Lに記憶する数値符号復元工程と、前記入力符号種判定工程により状態符号と判定された場合に、該符号を前記状態値に復元して前記Sに記憶する状態符号復元工程と、前記Lに復元数値が格納された時点での状態値Sの値が、X≠A且つY≠Bの関係にある状態S0、X=A且つY≠Bの関係にある状態S1、X≠A且つY=Bの関係にある状態S2若しくはX=A且つY=Bの関係にある状態S3(ただし、Aを直前の0のビットの連続数とし、Bを直前の1のビットの連続数とする)のいずれであるかを識別する識別工程と、前記Sに新たな状態値が格納された時点で、該Sの値が前記S3と一致するか否かを判定するS3状態判定工程と、前記識別工程により前記Sの値が前記S0であると識別された場合に、前記Lの値を前記Cに格納した後に、次の数値符号を入力および復元して、前記Dに格納する第1のラン値更新工程と、前記識別工程により前記Sの値が前記S1であると識別された場合に、前記Lの値を前記Dに格納する第2のラン値更新工程と、前記識別工程により前記Sの値が前記S2であると識別された場合に、前記Lの値を前記Cに格納する第3のラン値更新工程と、前記第1、第2または第3のラン値更新工程による更新が終了した時点または前記S3状態判定工程により前記Sの値が状態値S3と一致すると判定された時点で、前記CおよびDの値を一組のランレングス値として出力する第1の出力工程と、前記識別工程により前記S値の値が前記S3であると識別された場合に、前記CおよびDの値を一組のランレングス値として前記Lの値に対応する回数分出力する第2の出力工程と、を含んだことを特徴とする。
【0025】
この請求項3の発明によれば、復号化を開始する際に、復元される状態値を記憶する記憶部S、復元されるランレングス値のうち前記Xに相当する値を記憶する記憶部Cおよび復元されるランレングス値のうち前記Yに相当する値を記憶する記憶部Dに所定の初期値を代入して初期化し、所定の符号単位を入力して該符号が数値符号Pであるか状態符号Qであるかを判定し、数値符号と判定された場合に、該符号を数値に復元して記憶部Lに記憶し、状態符号と判定された場合に、該符号を状態値に復元してSに記憶し、Lに復元数値が格納された時点での状態値Sの値が、X≠A且つY≠Bの関係にある状態S0、X=A且つY≠Bの関係にある状態S1、X≠A且つY=Bの関係にある状態S2若しくはX=A且つY=Bの関係にある状態S3のいずれであるかを識別し、Sに新たな状態値が格納された時点で、該Sの値がS3と一致するか否かを判定し、Sの値がS0であると識別された場合に、Lの値をCに格納した後に次の数値符号を入力および復元してDに格納し、Sの値がS1であると識別された場合に、Lの値をDに格納し、Sの値がS2であると識別された場合に、Lの値をCに格納し、更新が終了した時点またはSの値が状態値S3と一致すると判定された時点で、CおよびDの値を一組のランレングス値として出力し、S値の値がS3であると識別された場合に、CおよびDの値を一組のランレングス値としてLの値に対応する回数分出力することとしたので、誤差拡散処理により生成された疑似中間調画像データを圧縮したものを効率良く復元することができる。
【0026】
また、請求項4の発明に係る記録媒体は、請求項1〜3のいずれか一つに記載された方法をコンピュータに実行させるプログラムを記録したことで、そのプログラムを機械読み取り可能となり、これによって、請求項1〜3のいずれか一つの動作をコンピュータによって実現することができる。
【0027】
【発明の実施の形態】
以下に添付図面を参照して、この発明に係るデータ符号化方法、データ復号化方法、およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体の好適な実施の形態を詳細に説明する。なお、本実施の形態では、誤差拡散処理により生成された疑似中間調画像データをデータ符号化または復号化する場合を示すこととする。
【0028】
まず最初に、本実施の形態に係るデータ符号化方法およびデータ復号化方法の概念について説明する。図1は、本実施の形態に係るデータ符号化方法およびデータ復号化方法の概念を説明するための説明図である。
【0029】
同図においては、データを走査して得られるランレングス数値列について、値が’0’であるビットの連続数(以下「X」と言う)と、値が’1’であるビットの連続数(以下「Y」と言う)との一組を入力単位として順次入力し、所定の符号列に変換して出力するデータ符号化をおこなう。
【0030】
具体的には、このXの直前の値を「A」、Yの直前の値を「B」とし、
X≠A 且つ Y≠B
の状態をS0とし、
X=A 且つ Y≠B
の状態をS1とし、
X≠A 且つ Y=B
の状態をS2とし、
X=A 且つ Y=B
の状態をS3とする。
【0031】
また、この状態に応じてS0〜S3のいずれかの値を持つ状態値を「S」とし、このSの直前の値を「T」とする。そして、S=Tとなる事象を「一般事象」とし、S≠Tとなる事象を「不一致事象」とし、このTがS3であるときに一致事象が発生すれば「反復事象」とし、この反復事象が連続して発生する数を「反復数N」とする。
【0032】
さらに、この反復事象が発生した後に、不一致事象が発生するかまたは入力が完了すれば「回帰事象」とし、不一致事象が発生した場合には状態値Sの値を示す状態符号Qを生成し、符号生成を終了した時点または一致事象が発生した時点において、X≠Aである場合にはXの値を示す数値符号Pを生成し、Y≠Bである場合にはYの値を示す数値符号Pを生成し、回帰事象が発生した場合には状態符号の生成に先立って反復数Nの値を示す数値符号Pを生成する。
【0033】
図1においては、圧縮対象となるデータが3ビットの’0’で始まり、4ビットの’1’、3ビットの’0’へと続く場合を示している。ランレングスの計測を’0’から始める場合には、データを走査して得られるXおよびYの数値列は、それぞれ’0’の連続数および’1’の連続数となるので、この一組の値が符号化部に順次入力されることになる。
【0034】
同図では、各入力値についての各数値、事象および生成される符号を図示しているが、各事象に関しては、事象がある場合には’○’を記載し、事象がない場合には空欄としている。また、各符号に関しては、符号出力がある場合には’○’を記載し、符号が出力されない場合には空欄としている。
【0035】
なおここでは、状態符号と数値符号の2つの属性を持つが、数値符号についてはどの数値に対応するものであるかを把握できるように3種類に分けて図示している。また厳密に言うと、データの最初のX、YおよびSには直前の値(A、BおよびT)が存在しないことになるが、ここではA、BおよびSの初期値はすべて’0’とする。
【0036】
このように、本実施の形態では、ランレングス値が同一計測対象値の直前のランレングス値と一致する事象が連続する場合に、その連続数を符号化することで符号数を削減するという従来技術の特徴を、S3が複数回連続する場合に反復数Nに対応する数値符号Pを生成することで承継することにより効率的に符号数を削減している。加えて、XまたはYのいずれか一方が直前の値と一致する反面他方が一致しない場合すなわちS1またはS2の状態が連続する場合にも効率的に符号数を削減している。
【0037】
特に、誤差拡散された画像データにおいては、S1およびS2の状態が連続する確率が高いので、この実施の形態による符号数削減の効果は大きい。たとえば、同図では、12組すなわち24個のランレングス値が入力されているが、出力される符号数は11個に削減され、符号数が削減されていることが分かる。
【0038】
次に、本実施の形態で用いる符号化手順について説明する。図2は、本実施の形態で用いる符号化手順を示すフローチャートであり、図3は、図2のステップS209およびS219に示す未出力N符号化手順を示すフローチャートである。
【0039】
図2に示すように、まず最初に、A、BおよびTに所定の定数Cを設定し、Nに0を設定する初期化処理をおこなう(ステップS201)。なお、ここでは説明の便宜上、A、BおよびTに同じ定数Cを設定することとするが、異なる値を設定することもできる。ただし、Tの初期値はS0に示す値であることが符号数を削減するうえで望ましい。その理由は、最初のXおよびYの入力に対して状態値SがS0となる場合が最も高い確率で発生するため、無意味な不一致事象の発生による状態符号の生成を抑制できるからである。また、AおよびBの初期値は、ランレングスの測定を開始する際の値と異なる値を設定することが符号数を削減するうえで望ましい。
【0040】
そして、かかる初期化処理を終えたならば、XおよびYに一組のランレングス値を入力して格納する入力処理をおこない(ステップS202)、この入力に対応して所定の状態Sを生成する状態作成処理をおこなう(ステップS203〜S207)。
【0041】
具体的には、まずS値に0を代入してを初期化した後に(ステップS203)、X値とA値を比較して(ステップS204)、両者が一致する場合には(ステップS204肯定)このSに’1’を加算し(ステップS205)、一致しない場合には(ステップS204否定)そのままステップS206に移行する。さらに、Y値をB値と比較して(ステップS206)、両者が一致する場合には(ステップS206肯定)Sに’2’を加算する(ステップS207)。したがって、S0を表す数値は0、S1を表す数値は1、S2を表す数値は2、S3を表す数値は3となる。
【0042】
その後、生成された状態値Sの値がTと一致するか否かを判断する一致事象判定処理をおこない(ステップS208)、一致する場合(ステップS208肯定)には一致事象であると判断し、一致しない場合(ステップS208否定)には不一致事象であると判断する。
【0043】
具体的には、一致事象が発生した場合には(ステップS208肯定)、S値が3であるか否かを判断し(ステップS211)、このS値が3すなわちS3と一致する場合に(ステップS211肯定)反復事象があるものと判定し、反復数Nの値をインクリメントして(ステップS212)、ステップS217に移行する。
【0044】
これに対して、不一致事象が発生した場合には(ステップS208否定)、反復事象が発生しないものと判定して、未出力N符号化をおこなう(ステップS209)。具体的には、図3に示すように、反復数Nの値が0よりも大きいか否かを判断し(ステップS301)、0よりも大きい場合には(ステップS301肯定)、回帰事象が発生したものと判定し、数値符号化(N)をおこなって数値符号を出力した後(ステップS302)、Nに0を代入して初期化する(ステップS303)。一方、反復数Nの値が0のままである場合には(ステップS301否定)、回帰事象が発生していないものと判断する。
【0045】
そして、この未出力N符号化を終えたならば、状態Sの値を表現する状態符号を生成し出力する状態符号化(S)をおこない(ステップS210)、ラン数値符号出力処理をおこなう(ステップS213〜S216)。
【0046】
具体的には、まずX値とA値を比較し(ステップS213)、両者が一致しない場合には(ステップS213否定)、Xの値を表現する状態符号を生成し出力する数値符号化(X)をおこなう(ステップS214)。また、Y値とB値を比較し(ステップS215)、両者が一致しない場合には(ステップS215否定)、Yの値を表現する状態符号を生成し出力する数値符号化(Y)をおこなう(ステップS216)。
【0047】
その後、AをX値で更新し、BをY値で更新し、TをS値で更新する直前値の更新をおこない(ステップS217)、符号化対象データがあるならば(ステップS218否定)ステップS202に移行して上記処理を繰り返す。なお符号化対象データがなくなった場合には(ステップS218肯定)、すでに説明した未出力N符号化をおこなって(ステップS219)処理を終了する。
【0048】
上記一連の処理をおこなうことにより、不一致事象が発生した場合には状態値Sの値を示す状態符号Qを生成し、符号生成を終了した時点または一致事象が発生した時点で、X≠Aである場合にはXの値を示す数値符号Pを生成し、Y≠Bである場合にはYの値を示す数値符号Pを生成し、回帰事象が発生した場合には、状態符号の生成に先立って反復数Nの値を示す数値符号Pを生成して符号化することができる。
【0049】
なお、上記処理手順をソフトウエアで実現する場合には、X,Y,A,B,S,TおよびNには適切なメモリを割り当てれば良いが、マイクロプロセッサの汎用レジスタを用いることが処理性能を向上するうえで望ましい。また、定数Cと各制御については、プログラムすなわち命令コードとして記述することで実現できる。
【0050】
また、上記一連の説明では説明の便宜上、ランレングス測定入力(ステップS202)およびこれに関連するデータ終了判定(ステップS218)および符号生成(ステップS210、S214、S216、S302)についての詳細な説明を省略した。
【0051】
次に、本実施の形態に係るデータ復号手順について説明する。図4は、本実施の形態に係るデータ復号手順を示すフローチャートである。同図に示すように、復号処理を開始する際に、復元される状態値を記憶するSと、復元されるランレングス値のうちXに相当する値を記憶するAと、Yに相当する値を記憶するBとに、それぞれ定数Cを代入して初期化する(ステップS401)。なお、復号が正しくおこなわれるためには、A、BおよびSに代入される初期値は、符号化時の初期化処理(図2のステップS201)時に、A、BおよびSに代入した値と同じ値を代入する必要がある。
【0052】
そして、この初期化処理を終えたならば、符号入力をKに代入し(ステップS402)、このKが数値符号Pであるか状態符号Qであるかを判断する入力符号判定処理(ステップS403)をおこなう。その結果、数値符号であると判断された場合には(ステップS403肯定)、このKに格納された符号を数値に復元してLに記憶する数値復元処理(ステップS404)をおこない、状態識別処理(ステップS405〜407)に移行する。
【0053】
具体的には、状態値Sが0であるか否かを確認し(ステップS405)、状態値Sが0である場合には(ステップS405肯定)、S0に対応する処理すなわちAに復元されたランレングス値であるLの値を格納し(ステップS408)、次の符号単位を入力してKに格納し(ステップS409)、Kに格納された符号を数値に復元してLに格納し(ステップS410)、Lの値をBに格納する(ステップS411)処理をおこない、Aを出力XとしBを出力Yとした一組のランレングス値として出力する(ステップS414)。
【0054】
また、状態値Sが0でない場合には(ステップS405否定)、状態値Sが1であるか否かを確認し(ステップS406)、状態値Sが1である場合には(ステップS406肯定)、S1に対応する処理すなわちL値をBに格納する処理をおこない(ステップS412)、Aを出力XとしBを出力Yとした一組のランレングス値として出力する(ステップS414)。
【0055】
さらに、状態値Sが1でない場合には(ステップS406否定)、状態値Sが2であるか否かを確認し(ステップS407)、状態値Sが2である場合には(ステップS407肯定)、S2に対応する処理すなわちL値をAに格納する処理をおこない(ステップS413)、Aを出力XとしBを出力Yとした一組のランレングス値として出力する(ステップS414)。
【0056】
また、状態値Sが2でない場合には(ステップS407否定)、S3に対応する処理をおこなう。具体的には、Lの値を初期値としてNに格納した後(ステップS417)、Aを出力XとしBを出力Yとした一組のランレングス値として出力し(ステップS418)、Nをデクリメントした後(ステップS419)、このNの値が0でなければ(ステップS420否定)、ステップS418に移行して処理を繰り返す。そして、Nの値が0になった時点で(ステップS420肯定)、終了判定をおこない(ステップS421)、終了しない場合には(ステップS421否定)、上記ステップS402に移行する。
【0057】
また、上記ステップS403で数値符号であると判断された場合には(ステップS403否定)、Kに格納された符号を状態値に復元してSに格納し(ステップS415)、このSが3であるか否かを確認する(ステップS416)。その結果、このSが3である場合には(ステップS416肯定)、ステップS414に移行し、Sが3でなければ(ステップS416否定)ステップS421に移行する。
【0058】
上記一連の処理をおこなうことにより、状態符号を入力して所定の状態値Sに復元した時点で、このSがS3の状態である場合には一組のランレングス値が省略されているので、数値符号の入力を待つことなくその時点でAおよびBに記憶した一組のランレングス値の出力をおこなうことができる。
【0059】
また、数値符号を入力し所定の数値に復元してLに記憶した時点で、このS値がS0である場合には、一組のランレングス値が一組の数値符号に符号化されているので、このLに記憶した値と次の数値符号を復号して得られる値とを用いて一組のランレングス値の出力をおこなう。
【0060】
また、このS値がS1である場合には、0の連続数に対する数値符号が省略されているので、Aに記憶した値と復元した数値Lとを用いて一組のランレングス値の出力をおこない、このS値がS2である場合には、1の連続数に対する数値符号が省略されているので、Bに記憶した値と復元した数値Lとを用いて一組のランレングス値の出力をおこなう。
【0061】
さらに、このS値がS3である場合には、復元された数値は反復数Nであり、N組のランレングス値が省略されているので、その時点でAおよびBに記憶された値を用いて一組のランレングス値の出力動作を数値の回数分繰り返す。このため、図2に示したデータ符号化手順で生成した符号列データから元のランレングス列を復号することができる。
【0062】
なお、上記処理手順をソフトウエアで実現する場合には、X,Y,A,B,S,T,K,LおよびNには適切なメモリを割り当てれば良いが、マイクロプロセッサの汎用レジスタを用いることが処理性能を向上するうえで望ましい。また、定数Cと各制御については、プログラムすなわち命令コードとして記述することで実現できる。
【0063】
また、上記一連の処理のいくつかは省略することができ、たとえば、反復数を計数記憶するためのNと、復元された数値を記憶するLとを兼用して一方を省略することもできる。出力ランレングス値を記憶するXおよびYの一方で他方を代用することもできる。
【0064】
さらに、上記一連の説明では説明の便宜上、ランレングス数値出力(ステップS414およびS418)およびこれに関連するデータ終了判定(ステップS421)についての詳細な説明を省略した。
【0065】
次に、図2および図4に示したデータ符号化処理およびデータ復号化処理に用いる符号セットについて説明する。図5は、図2および図4に示したデータ符号化処理およびデータ復号化処理に用いる符号セットの一例を示す説明図である。
【0066】
同図に示すように、本実施の形態で用いる符号セットは第1〜第6の6種類の符号単位で構成され、具体的には、第1の符号形式P1〜第3の符号形式P3は数値を示す数値符号Pであり、第4の符号形式Q1〜第6の符号形式Q3は、状態値を示す状態符号Qである。
【0067】
ここで、第1の符号形式P1は、4ビット幅を有し、該4ビットの数値が”10”未満であることを利用して識別されるものであり、該数値に1を加算した値が数値Lに対応する。第2の符号形式P2は、8ビット幅を有し、符号列において先行する上位4ビットの値が”11”または”12”であることにより識別されるものであり、下位ビットの値に”11”を加算した値が数値Lに対応する。
【0068】
第3の符号形式P3は、少なくとも8ビット幅で4の倍数となるビット幅を有し、符号列において先行する上位4ビットの値が”12”であることにより識別される。この4ビットについては、’8’以上の数値が検出されるまで各4ビットの下位3ビットを上位に向かって連接した(つなぎ合わせた)数値に”43”を加算した値が数値Lに対応する。
【0069】
第4の符号形式Q1は、4ビット幅を有し、該4ビットの数値が”13”であることにより識別され、直前の状態値に’1’を加算した値の下位2ビットが新たな状態値に対応する。第5の符号形式Q2は、4ビット幅を有し、該4ビットの数値が”14”であることにより識別され、直前の状態値に’2’を加算した値の下位2ビットが新たな状態値に対応する。第6の符号形式Q3は、4ビット幅を有し、該4ビットの数値が”15”であることにより識別され、直前の状態値に’3’を加算した値の下位2ビットが新たな状態値に対応する。
【0070】
なお、状態値の値としては4つの値を取り得るが、状態符号は状態値に変化が生じた場合にのみ生成される。ある状態値から他の状態値への移行対象は3つしかないので、状態符号の数は3つに削減されている。
【0071】
また、数値符号Pにおいて、値が’0’となる符号を明示していないが、後述する変換手順を用いて’0’を表現することが望ましい。ただし、この符号形式は、表現可能な値域を原理的に制約するものではなく、第3の符号形式P3を用いる場合には任意の整数を表現することができる点に留意する必要がある。なぜなら、数値を復元する処理に用いられる一時記憶は有限のビット幅を持つものであるが、P3符号の長さには制約がないので、連接と加算による処理結果が桁上がりによる’0’や負数となる符号を生成できるからである。
【0072】
次に、図5に示した符号セットを用いた場合の入力符号種判定、状態符号化制御、状態復元処理、数値符号化処理および数値復元処理について説明する。まず、入力符号種の判定(図4のステップS403に対応する)においては、符号の先行する上位4ビットの値が”12”以下の値であれば数値符号であると判断し、それ以外の場合には状態符号であると判断することができる。
【0073】
図6は、図5に示した符号セットを用いた場合の状態符号化制御手順を示すフローチャートであり、図7は、図5に示した符号セットを用いた場合の状態復号化制御手順を示すフローチャートである。なお、図中に示す「K(n)←数値」は、右辺の数値の下位nビットを符号として出力することを意味し、「W」は、演算に使用する作業メモリである。
【0074】
図6に示すように、状態符号化をおこなう場合には、状態値Sから直前の状態値Tを減じた値と’3’とをビットごとに論理和し、これに”12”を加算した値を作業メモリWに格納し(ステップS601)、この作業メモリWの下位4ビットを4ビットの符号Kとして出力する(ステップS602)ことになる。
【0075】
図7に示すように、状態復号化をおこなう場合には、Q1〜Q3のいずれかの符号の発生に対応して、符号の値から”12”を減じた値をそれまでの状態値Sに加算し、その結果の値と定数値’3’とのビットごとの論理積をとってこれを新たな状態値として状態値Sに格納する(ステップS701)ことになる。
【0076】
上記図6および図7に示す制御をおこなうことにより、所定の状態符号の生成および該状態符号を用いた状態値の復元が可能となる。たとえば、符号化の直前の状態値Tが’0’で新たな状態値Sが’3’である場合には、「S−T」は’3’となるため、この値と定数値’3’のビットごとの論理積は’3’となる。そして、この値に”12”を加えた”15”すなわちQ3符号が生成される。一方、状態符号を復元する際には、「K−12」は”3”となり、この値にそれまでの状態値’0’を加えた値’3’と定数値’3’のビットごとの論理積をとると、’3’が新たな状態値Sとなり、正しく復元されていることが分かる。
【0077】
また、符号化の直前の状態値Tが’3’で新たな状態値Sが’0’である場合には、「S−T」は’−3’となり、この値と定数値’3’のビットごとの論理積は’1’となるので、この値に”12”を加えた”13”すなわちQ1符号が生成される。一方、状態符号を復元する際には、「K−12」は”1”となり、この値にそれまでの状態値’3’を加えた値’4’と定数値’3’のビットごとの論理積をとると、’0’が新たな状態値Sとなり、正しく復元されていることが分かる。
【0078】
図8は、図5に示した符号セットを用いた場合の数値符号化制御手順を示すフローチャートであり、図9は、図5に示した符号セットを用いた場合の数値復号化制御手順を示すフローチャートである。なお、図中に示す「K(n)←数値」は、右辺の数値の下位nビットを符号として出力することを意味し、「W」は、演算に使用する作業メモリである。
【0079】
図8に示すように、ここでは符号化対象である数値「V」をP1〜P3のいずれかの符号に変換して出力する。すでに言及したように、この数値符号Pには値が’0’となる符号が定義されていないので、ここでは「V=0」である場合にはこれを「Z」という定数値に変換する0値変換処理をおこなっている。すなわち、V=0となる頻度が非常に低いため、これを比較的に長い符号語に割り当てることにより圧縮率の改善を図っている。具体的には、下記に示すステップS801〜S804がこの0値変換処理に相当し、ステップS805以降が数値から符号語を生成する処理に相当する。
【0080】
同図に示すように、まず最初に、符号化対象値Vが定数値Z以上であるか否かを判断し(ステップS801)、Z以上である場合には(ステップS801肯定)Vの値をインクリメントする(ステップS802)。また、Z以上でない場合には(ステップS801否定)Vが0であるか否かを判断し(ステップS803)、Zが0であれば(ステップS803肯定)Vに定数値Zを格納する(ステップS804)。
【0081】
そして、この0値変換処理を終えたならば、その時点での符号化対象値Vが”10”以下であるか否かを判断し(ステップS805)、”10”以下である場合には(ステップS805肯定)、Vから’1’を減じた値の下位4ビットを符号として出力して(ステップS806)、数値符号化を終了する。
【0082】
一方、Vが”10”以下でない場合には(ステップS805否定)、このVが”42”以下であるか否かを判断し(ステップS807)、”42”以下である場合には(ステップS807肯定)このVに”149”を加えた値の下位8ビットを符号として出力し(ステップS808)、数値符号化を終了する。P2符号の定義から、「K(8)←160+(V−11)」すなわち「K(8)←V+149」となるので、ここで生成される符号がP2符号にほかならない。なお、この”160”を2進数表現すると「10100000」となるので、上位3ビットが符号固有の定数となる。
【0083】
また、上記ステップS807において、Vが”42”以下でないと判断された場合には(ステップS807否定)、まずP3符号の開始識別符号として”12”の値を持つ4ビットの符号を出力する(ステップS809)。その後、このVから”43”を減じた値を作業メモリWに格納し(ステップS810)、このWの値が’8’未満であるか否かを調べる(ステップS811)。
【0084】
その結果、’8’以上である場合には(ステップS811否定)、W値の下位3ビットの値を4ビットの符号として出力するとともに(ステップS812)、このW値を3ビット分右にシフトして符号出力した部分を切り捨てた後に(ステップS813)、上記ステップS811に戻る。
【0085】
これに対して、’8’未満である場合には(ステップS811肯定)、W値に’8’を加えた値を4ビットの符号として出力して(ステップS814)、数値符号化を終了する。なお、定数’7’を2進数表現すると「0111」となるので、ステップS812で生成される符号は常に’8’以上の数値となり、この符号が数値部の最後のものであることを明示でき、この符号がP3符号に他ならないことが分かる。
【0086】
図9に示すように、数値復元をおこなう場合には、P1〜P3のいずれかの符号形式で符号化された符号列を順次4ビット単位で読み出し、作業メモリWに数値を復元することになる。なお、「K←符号入力」なる標記は、Kに4ビットの符号を数値として入力することを意味する。また、ここでは図8に示した0値変換処理の逆変換である「0値逆変換処理」をおこなっている。下記に示すステップS901〜S911が数値復元処理に相当し、ステップS912以降が0値逆変換処理に相当する。
【0087】
同図に示すように、数値復元処理をおこなう場合には、まず符号の最初の4ビットをKに入力し(ステップS901)、このK値が”10”未満であるか否かを判断する(ステップS902)。そして、K値が”10”未満である場合には(ステップS902肯定)、このK値に’1’を加えた値を復元数値としてWに格納し(ステップS903)、後述する0値逆変換処理に移行する。なお、最初の4ビットが”10”未満である符号はP1符号に他ならないので、このK値に’1’を加えることで数値に復元できる。
【0088】
これに対して、K値が”10”未満でない場合には(ステップS902否定)、このK値が”12”であるか否かを判断し(ステップS904)、”12”でない場合には(ステップS904否定)、K値を4ビット左シフトした値をWに記憶し、このKに符号の次の4ビットを入力して、Wと新たなK値とを加えた値から”149”を減じた値を復元数値としてWに格納した後(ステップS905)、後述する0値逆変換処理に移行する。
【0089】
一方、K値が”12”である場合には(ステップS904肯定)、符号が8ビット長を持つP2符号に他ならないので、Wの値を’0’に初期化した後(ステップS906)、符号の次の4ビットをKに入力し(ステップS907)、WにこのK値を加算し(ステップS908)、該K値が’8’未満であるか否かを判断する(ステップS909)。
【0090】
その結果、K値が’8’未満である場合には(ステップS909肯定)、以降に数値部の符号が続くので、Wの値を3ビット左にシフトした後に(ステップS910)、上記ステップS907に移行する。
【0091】
これに対して、K値が’8’未満でない場合には(ステップS909否定)、それまでのWに”35”を加算した値をあらためてWに格納し(ステップS911)、0値逆変換処理に移行する。P3符号では、その4ビットとして’8’以上の値が検出されるまで各4ビットの下位3ビットを上位に向かって連接した(つなぎ合わせた)数値に”43”を加算した値が復元数値に対応する。そして、’8’以上の数値が検出されたときのKの値には、数値部分の終了を示す’8’が余分に加算されているので、ここでは「43−8」である”35”を加算している。
【0092】
その後、0値変換処理を復元する0値逆変換処理をおこなう。具体的には、復元された数値Wが定数Zよりも大きな値であるか否かを確認し(ステップS912)、Zよりも大きな値である場合には(ステップS912肯定)、Wから’1’を減じた値をWに格納して(ステップS913)数値復元処理を終了する。
【0093】
これに対して、数値WがZ以下である場合には(ステップS912否定)、復元された数値Wが定数Zと一致するか否かを確認し(ステップS914)、一致する場合には(ステップS914肯定)、このWに’0’を代入して(ステップS915)数値復元処理を終了する。
【0094】
上述してきたように、本実施の形態では、0ビットの連続数X、1ビットの連続数Y、Xの直前の値A、Yの直前の値Bに基づいて、状態S0〜S3のいずれかの値を状態値をSとし、このSの直前の値をTとし、不一致事象が発生した場合には状態値Sの値を示す状態符号Qを生成し、符号生成を終了した時点または一致事象が発生した時点において、X≠Aである場合にはXの値を示す数値符号Pを生成し、Y≠Bである場合にはYの値を示す数値符号Pを生成し、回帰事象が発生した場合には状態符号の生成に先立って反復数Nの値を示す数値符号Pを生成するよう構成したので、マイクロプロセッサによるソフトウエア処理で、誤差拡散処理により生成された疑似中間調画像データについても効率良く圧縮することができる。
【0095】
【発明の効果】
以上説明したように、請求項1の発明によれば、入力単位のデータに対応する状態値の算定で、0のビットの連続数X、1のビットの連続数Y、直前の0のビットの連続数Aおよび直前の1のビットの連続数Bが、X≠A且つY≠Bの関係にある場合に状態S0の値を状態値Sとし、X=A且つY≠Bの関係にある場合に状態S1の値を状態値Sとし、X≠A且つY=Bの関係にある場合に状態S2の値を状態値Sとし、X=A且つY=Bの関係にある場合に状態S3の値を状態値Sとして算定して、直前の状態値Tが状態S3であり、かつ、状態値Sと直前の状態値Tとが等しい一致事象となった場合にこれを反復事象とみなして、該反復事象が連続して発生する反復数Nを算出し、反復事象の発生後に、状態値Sと直前の状態値Tとが異なる不一致事象または入力完了となった場合に回帰事象と判定し、不一致事象が発生した場合に状態値Sの値を示す状態符号を生成し、この状態符号の生成が終了するかまたは一致事象が発生した際に、0のビットの連続数Xまたは1のビットの連続数Yの値を示す数値符号を生成し、回帰事象が発生した場合に、状態符号の生成に先だって反復数Nの値を示す数値符号を生成することとしたので、一致事象、不一致事象、反復事象、回帰事象の概念を利用して、誤差拡散処理により生成された疑似中間調画像データについても効率良くデータを圧縮することが可能なデータ符号化方法が得られるという効果を奏する。
【0098】
また、請求項2の発明によれば、符号化を開始する際に、T、A、Bおよび反復数Nにそれぞれ所定の初期値を格納し、XおよびYにランレングス値を入力し、この入力後に状態値Sを生成し、生成された状態値Sに対応して一致事象または不一致事象の発生を判定し、一致事象の発生に応答して反復事象の発生の有無を判定し、反復事象の発生に応答して反復数を加算するし、不一致事象の発生または符号化対象データの終了に応答して回帰事象の発生の有無を判定し、回帰事象の発生に応答して反復数Nの値を示す反復数数値符号を生成し、反復数数値符号の生成後に反復数Nを所定の初期値に戻し、不一致事象の発生または反復数Nの初期化に応答して状態値Sの値を表現する状態符号を生成し、状態符号の生成または反復事象の発生の判定後に、XがAと一致しない場合に該Xに対応する数値符号を生成し、YがBと一致しない場合に該Yに対応する数値符号を生成し、数値符号の生成または反復数Nの加算後に、Aの内容をXに更新し、Bの内容をYに更新し、Tの内容をSに更新するよう構成したので、マイクロプロセッサによるソフトウエア処理に適合したデータの圧縮をおこなうことが可能なデータ符号化方法が得られるという効果を奏する。
【0099】
また、請求項3の発明によれば、復号化を開始する際に、復元される状態値を記憶する記憶部S、復元されるランレングス値のうち前記Xに相当する値を記憶する記憶部Cおよび復元されるランレングス値のうち前記Yに相当する値を記憶する記憶部Dに所定の初期値を代入して初期化し、所定の符号単位を入力して該符号が数値符号Pであるか状態符号Qであるかを判定し、数値符号と判定された場合に、該符号を数値に復元して記憶部Lに記憶し、状態符号と判定された場合に、該符号を状態値に復元してSに記憶し、Lに復元数値が格納された時点での状態値Sの値が、X≠A且つY≠Bの関係にある状態S0、X=A且つY≠Bの関係にある状態S1、X≠A且つY=Bの関係にある状態S2若しくはX=A且つY=Bの関係にある状態S3のいずれであるかを識別し、Sに新たな状態値が格納された時点で、該Sの値がS3と一致するか否かを判定し、Sの値がS0であると識別された場合に、Lの値をCに格納した後に次の数値符号を入力および復元してDに格納し、Sの値がS1であると識別された場合に、Lの値をDに格納し、Sの値がS2であると識別された場合に、Lの値をCに格納し、更新が終了した時点またはSの値が状態値S3と一致すると判定された時点で、CおよびDの値を一組のランレングス値として出力し、S値の値がS3であると識別された場合に、CおよびDの値を一組のランレングス値としてLの値に対応する回数分出力するよう構成したので、誤差拡散処理により生成された疑似中間調画像データを圧縮したものを効率良く復元することが可能なデータ復号化方法が得られるという効果を奏する。
【0100】
また、請求項4の発明によれば、請求項1〜3のいずれか一つに記載された方法をコンピュータに実行させるプログラムを記録したことで、そのプログラムを機械読み取り可能となり、これによって、請求項1〜3のいずれか一つの動作をコンピュータによって実現することが可能な記録媒体が得られるという効果を奏する。
【図面の簡単な説明】
【図1】この発明の実施の形態に係るデータ符号化方法およびデータ復号化方法の概念を説明するための説明図である。
【図2】本実施の形態で用いる符号化手順を示すフローチャートである。
【図3】図2のステップS209およびS219に示す未出力N符号化手順を示すフローチャートである。
【図4】本実施の形態に係るデータ復号手順を示すフローチャートである。
【図5】図2および図4に示したデータ符号化処理およびデータ復号化処理に用いる符号セットの一例を示す説明図である。
【図6】図5に示した符号セットを用いた場合の状態符号化制御手順を示すフローチャートである。
【図7】図5に示した符号セットを用いた場合の状態復号化制御手順を示すフローチャートである。
【図8】図5に示した符号セットを用いた場合の数値符号化制御手順を示すフローチャートである。
【図9】図5に示した符号セットを用いた場合の数値復号化制御手順を示すフローチャートである。
【符号の説明】
X 0の連続数
Y 1の連続数
A 直前のX値
B 直前のY値
S 状態値
T 直前のS値
N,P,P1,P2,P3 数値符号
Q、Q1,Q2,Q3 状態符号
Claims (4)
- データを走査して得られるランレングス値列を0のビット連続数と1のビット連続数との組を入力単位として順次入力し、所定の符号列に変換して出力するデータ符号化方法であって、
前記入力単位のデータに対応する状態値の算定として、前記0のビットの連続数X、前記1のビットの連続数Y、直前の0のビットの連続数Aおよび直前の1のビットの連続数Bが、X≠A且つY≠Bの関係にある場合に状態S0の値を状態値Sとし、X=A且つY≠Bの関係にある場合に状態S1の値を状態値Sとし、X≠A且つY=Bの関係にある場合に状態S2の値を状態値Sとし、X=A且つY=Bの関係にある場合に状態S3の値を状態値Sとして算定する算定工程と、
直前の状態値Tが状態S3であり、かつ、前記状態値Sと直前の状態値Tとが等しい一致事象となった場合にこれを反復事象とみなして、該反復事象が連続して発生する反復数Nを算出する反復数算定工程と、前記反復事象の発生後に、前記状態値Sと直前の状態値Tとが異なる不一致事象または入力完了となった場合に回帰事象と判定する回帰事象判定工程と、前記不一致事象が発生した場合に前記状態値Sの値を示す状態符号を生成する状態符号生成工程と、前記状態符号生成工程による状態符号の生成が終了するかまたは前記一致事象が発生した際に、前記0のビットの連続数Xまたは前記1のビットの連続数Yの値を示す数値符号を生成する第1の数値符号生成工程と、前記回帰事象が発生した場合に、前記状態符号生成工程による状態符号の生成に先だって、前記反復数算定工程によって算定された反復数Nの値を示す数値符号を生成する第2の数値符号生成工程と、を含んで前記入力単位のデータに対応する状態符号および数値符号の生成する生成工程と、
を含んだことを特徴とするデータ符号化方法。 - 前記算定工程は、符号化を開始する際に、T、A、Bおよび反復数Nにそれぞれ所定の初期値を格納する初期化工程と、前記XおよびYに前記ランレングス値を入力する入力工程と、前記入力工程による入力後に、前記状態値Sを生成する状態値生成工程とを含み、
前記生成工程は、前記状態値生成工程により生成された状態値Sに対応して前記一致事象または不一致事象の発生を判定する一致事象判定工程と、前記一致事象の発生に応答して前記反復事象の発生の有無を判定する反復事象判定工程と、前記反復事象の発生に応答して前記反復数を加算する反復数加算工程と、前記不一致事象の発生または符号化対象データの終了に応答して前記回帰事象の発生の有無を判定する回帰事象判定工程と、前記回帰事象の発生に応答して前記反復数Nの値を示す反復数数値符号を生成する反復数数値符号生成工程と、前記反復数数値符号の生成後に前記反復数Nを所定の初期値に戻す回帰工程と、前記不一致事象の発生または前記回帰工程による反復数Nの初期化に応答して前記状態値Sの値を表現する状態符号を生成する状態符号生成工程と、前記状態符号生成工程による状態符号の生成または前記反復事象判定工程による反復事象の発生の判定後に、前記XがAと一致しない場合に該Xに対応する数値符号を生成し、前記YがBと一致しない場合に該Yに対応する数値符号を生成する数値符号生成工程と、前記数値符号生成工程による数値符号の生成または前記反復数加算工程による反復数Nの加算後に、前記Aの内容をXに更新し、前記Bの内容をYに更新し、前記Tの内容をSに更新する直前値更新工程とを含んだ
ことを特徴とする請求項1に記載のデータ符号化方法。 - 符号列データを走査して得られる符号列を入力し、0のビット連続数Xと1のビット連続数Yとの組を単位とするランレングス値列に復元して出力するデータ復号化方法であって、
復号化を開始する際に、復元される状態値を記憶する記憶部S、復元されるランレングス値のうち前記Xに相当する値を記憶する記憶部Cおよび復元されるランレングス値のうち前記Yに相当する値を記憶する記憶部Dに所定の初期値を代入して初期化する初期化工程と、
所定の符号単位を入力して該符号が数値符号Pであるか状態符号Qであるかを判定する入力符号種判定工程と、
前記入力符号種判定工程により数値符号と判定された場合に、該符号を数値に復元して記憶部Lに記憶する数値符号復元工程と、
前記入力符号種判定工程により状態符号と判定された場合に、該符号を前記状態値に復元して前記Sに記憶する状態符号復元工程と、
前記Lに復元数値が格納された時点での状態値Sの値が、X≠A且つY≠Bの関係にある状態S0、X=A且つY≠Bの関係にある状態S1、X≠A且つY=Bの関係にある状態S2若しくはX=A且つY=Bの関係にある状態S3(ただし、Aを直前の0のビットの連続数とし、Bを直前の1のビットの連続数とする)のいずれであるかを識別する識別工程と、
前記Sに新たな状態値が格納された時点で、該Sの値が前記S3と一致するか否かを判定するS3状態判定工程と、
前記識別工程により前記Sの値が前記S0であると識別された場合に、前記Lの値を前記Cに格納した後に、次の数値符号を入力および復元して、前記Dに格納する第1のラン値更新工程と、
前記識別工程により前記Sの値が前記S1であると識別された場合に、前記Lの値を前記Dに格納する第2のラン値更新工程と、
前記識別工程により前記Sの値が前記S2であると識別された場合に、前記Lの値を前記Cに格納する第3のラン値更新工程と、
前記第1、第2または第3のラン値更新工程による更新が終了した時点または前記S3状態判定工程により前記Sの値が状態値S3と一致すると判定された時点で、前記CおよびDの値を一組のランレングス値として出力する第1の出力工程と、
前記識別工程により前記S値の値が前記S3であると識別された場合に、前記CおよびDの値を一組のランレングス値として前記Lの値に対応する回数分出力する第2の出力工程と、
を含んだことを特徴とするデータ復号化方法。 - 前記請求項1〜3のいずれか一つに記載された方法をコンピュータに実行させるプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000007194A JP3753580B2 (ja) | 2000-01-14 | 2000-01-14 | データ符号化方法、データ復号化方法、およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000007194A JP3753580B2 (ja) | 2000-01-14 | 2000-01-14 | データ符号化方法、データ復号化方法、およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2001196937A JP2001196937A (ja) | 2001-07-19 |
| JP3753580B2 true JP3753580B2 (ja) | 2006-03-08 |
Family
ID=18535608
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000007194A Expired - Fee Related JP3753580B2 (ja) | 2000-01-14 | 2000-01-14 | データ符号化方法、データ復号化方法、およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3753580B2 (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2019107149A1 (ja) * | 2017-12-01 | 2019-06-06 | 日本電信電話株式会社 | ビットアサイン推定装置、ビットアサイン推定方法、プログラム |
| CN117155405B (zh) * | 2023-08-09 | 2024-07-12 | 海飞科(珠海)信息技术有限公司 | 一种基于梯度下降的tANS编码、解码转换表快速建立方法 |
-
2000
- 2000-01-14 JP JP2000007194A patent/JP3753580B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2001196937A (ja) | 2001-07-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5363099A (en) | Method and apparatus for entropy coding | |
| US5045852A (en) | Dynamic model selection during data compression | |
| RU2125765C1 (ru) | Способ и устройство сжатия символов, стохастический кодер (варианты) | |
| JP2766302B2 (ja) | 可変長符号並列解読方法および装置 | |
| US6351569B1 (en) | Coding method, decoding method, coding device and decoding device | |
| US7365658B2 (en) | Method and apparatus for lossless run-length data encoding | |
| JPH0366227A (ja) | 圧縮符号化方法及びシステム並びに復号方法 | |
| JP2000115783A (ja) | 復号化装置及び方法 | |
| JP3684128B2 (ja) | 算術符号化/復号化方法ならびに算術符号化/復号化装置 | |
| JPH114170A (ja) | 2進データのダブル・ランレングス符号化の方法および装置 | |
| JPH05241777A (ja) | データ圧縮方式 | |
| JP3872217B2 (ja) | ディザ画像の2値表現処理方法、ディザ画像の圧縮2値表現圧縮解除方法、及びディザ画像の圧縮及び圧縮解除システム | |
| JP3753580B2 (ja) | データ符号化方法、データ復号化方法、およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
| JP3842914B2 (ja) | データ符号化方法/復号方法、データ符号化装置/復号装置、及び、そのデータ符号化方法/復号方法を用いた画像データ記録システム | |
| JP3676078B2 (ja) | ランレングス符号化方法及び圧縮装置 | |
| JP3124887B2 (ja) | データ圧縮・復号方式 | |
| JPH05151349A (ja) | 画像データ圧縮方法および符号化回路 | |
| CN119625087B (zh) | 一种jbig算术编码和解码方法及系统 | |
| JP2612343B2 (ja) | データ圧縮方式 | |
| JPH0723238A (ja) | 画像データ圧縮及び復元装置 | |
| JP3083329B2 (ja) | データ圧縮復元方式 | |
| JPH0629861A (ja) | データ圧縮方法 | |
| Cena et al. | A Q-Coder algorithm with carry free addition | |
| JP2615215B2 (ja) | 画像データ圧縮方式 | |
| JP3132836B2 (ja) | 画像データ圧縮復元方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040513 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050913 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050920 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051117 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20051206 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051213 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3753580 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081222 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091222 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101222 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101222 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111222 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111222 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121222 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131222 Year of fee payment: 8 |
|
| LAPS | Cancellation because of no payment of annual fees |