JP3854849B2 - データ伸長処理方法およびデータ伸長処理装置 - Google Patents
データ伸長処理方法およびデータ伸長処理装置 Download PDFInfo
- Publication number
- JP3854849B2 JP3854849B2 JP2001341724A JP2001341724A JP3854849B2 JP 3854849 B2 JP3854849 B2 JP 3854849B2 JP 2001341724 A JP2001341724 A JP 2001341724A JP 2001341724 A JP2001341724 A JP 2001341724A JP 3854849 B2 JP3854849 B2 JP 3854849B2
- Authority
- JP
- Japan
- Prior art keywords
- bit
- data
- pixel
- change pixel
- line
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/41—Bandwidth or redundancy reduction
- H04N1/411—Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
- H04N1/413—Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
- H04N1/417—Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information using predictive or differential encoding
- H04N1/4175—Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information using predictive or differential encoding involving the encoding of tone transitions with respect to tone transitions in a reference line
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【発明の属する技術分野】
本発明は、MMR〔Modified Modified READ(Relative Element Address Designate)〕符号化方式により符号化して得られた圧縮データを、復号化して伸長するための技術に関する。
【0002】
【従来の技術】
現在、ファクシミリで取り扱うような文書などの静止画像は、基本的には白か黒の2レベルで表現された画像であり、二値化された画像データで構成されている。そして、ファクシミリで取り扱うような二値文書画像では、白画素あるいは黒画素がある程度連続して出現することが多い。
【0003】
そこで、通常、この大量の二値化された画像データについて、MMR符号化方式を用いて連続する白または黒が、それぞれ黒または白に変化する箇所を符号化することによってデータ圧縮処理を行なっている。
図27は、このようなデータ圧縮処理を実行する、一般的なデータ圧縮処理装置の構成を示すブロック図である。
【0004】
図27に示すように、データ圧縮処理装置1の入力側には、圧縮前データ記憶部2が、そして、出力側には、圧縮後データ記憶部3が接続されている。
データ圧縮処理装置1は、入力バッファ4,圧縮処理部5,出力バッファ6および参照テーブル保持部7によって構成されている。
圧縮前データ記憶部2には、例えば、文書をファクシミリ送信するために読み込まれた二値化画像データ(圧縮前データ)が格納される。また、圧縮後データ記憶部3には、データ圧縮処理装置1で符号化された画像データ(圧縮後データ)が逐次格納される。
【0005】
データ圧縮処理装置1内での圧縮処理は、まず、入力バッファ4に、例えば1mm当たり8ビットでサンプリングした二値化画像データを読み込み、これを圧縮処理部5に送る。圧縮処理部5では、参照テーブル保持部7に格納されているMH(Modified Huffman)符号表やMR〔Modified READ(Relative Element Address Designate)〕符号表を参照して、読み込まれた画像データを符号化する。符号化されたデータ(圧縮後データ)は、出力バッファ6に送られ、さらに、圧縮後データ記憶部3に格納されていく。
【0006】
ここで、二値化画像データを符号化して圧縮する処理の概要について、図28〜図31および下記表1(二次元符号表)を参照しながら説明する。なお、表1は、参照テーブル保持部7にMR符号表として格納されるものである。
【0007】
【表1】
【0008】
図28〜図31では、圧縮前データ記憶部2から入力バッファ4に読み込まれた二値化画像データのビット配列を模式的に表わし、四角枠の一つが1ビット分の画素を示している。そして、細線枠は白画素を表わし、また、網掛けを施された太線枠は黒画素を表わしている。さらに、上段の行は、参照ラインであり、下段の行が符号化対象ラインである。参照ラインの画像データは、直前に符号化された伝送済みの画像データの行が用いられ、符号化対象ラインの画像データは、圧縮前データ記憶物2から入力バッファ4に新たに読み込まれたものである。
【0009】
MMR符号化方式では、符号化対象ラインにおいて、画素の白/黒の変化を図28〜図31中の右方向へ向かって判断し、白画素から黒画素に変化した時のその黒画素(変化画素)の位置、もしくは、黒画素から白画素に変化した時のその白画素(変化画素)の位置を符号化し、その位置と参照ラインにおける変化画素の位置との距離を符号化する。従って、符号化対象ラインについては変化画素a0,a1およびa2の位置を検出し、参照ラインについては変化画素b1およびb2の位置を検出する必要がある。なお、変化画素とは、その画素の色(白または黒)が同一走査線上の直前(左隣)の画素の色と異なる画素をいう。
【0010】
ここで、符号化対象ラインにおいて、a0は起点変化画素として指定された画素であり、a1は起点変化画素a0よりも右側の最初の変化画素であり、a2は変化画素a1よりも右側の最初の変化画素である。符号化対象ラインの先頭においては、最初の画素の直前に置かれる仮想白画素を起点変化画素a0とする。また、参照ラインにおいて、b0は起点変化画素a0の真上に位置する画素(起点変化画素)であり、b1は参照ライン上の変化画素のうち起点変化画素a0よりも右側で起点変化画素と反対の色をもつ最初の変化画素であり、b2は変化画素b1よりも右側の最初の変化画素である。
【0011】
次に、参照ラインに基づいて行なわれる符号化対象ラインの符号化の手法を説明する。その符号化は、起点変化画素a0と参照変化画素a1,a2,b1およびb2との位置関係に応じて、パスモード,垂直モード,水平モードに分けて行なわれる。
パスモードは、変化画素b2が変化画素a1よりも左側にある場合に選択されるモードである。このパスモードでは、起点変化画素a0の位置を変化画素b2の真下に移す。この場合の符号化は、表1に示すように、記号コードP(符号コード0001)として行なわれる。
【0012】
図28では、直前の符号化をパスモードで行ない起点変化画素a0の位置を前回の符号化時の変化画素b2の位置に移した直後の状態が示されている。また、パスモードによる符号化の具体例を図29に示す。この図29に示す例では、今回の符号化開始時点で変化画素b2が変化画素a1よりも左側にあるので、今回の符号化(変化画素b1,b2を対象とする符号化)がパスモードで行なわれる。つまり、パスモードの符号コード0001を出力バッファ6に伝送する。この後、変化画素b2の真下の画素を次回の符号化時の起点変化画素a0として設定する。
【0013】
垂直モードは、変化画素b2が変化画素a1と同じ位置もしくは変化画素a1よりも右側にあり、且つ、変化画素a1と変化画素b1との相対距離|a1b1|が3画素以下である場合に選択されるモードである。このとき、相対距離|a1b1|を、表1に示すごとく、7つの記号コードV(0),Vr(1),Vr(2),Vr(3),Vl(1),Vl(2),Vl(3)で表わされる7つの値(符号コード“1”,“011”,“000011”,“0000011”,“010”,“000010”,“0000010”)のいずれか一つに対応させるようにして、変化画素a1を対象とした符号化が行なわれ、符号化後、次回の符号化時の起点変化画素a0は、今回の符号化時の変化画素a1の位置に設定される。なお、記号コードにおける文字“r”は変化画素a1が変化画素b1の右側にあることを示し、記号コードにおける文字“l”は変化画素a1が変化画素b1の左側にあることを示し、()内の数字は距離の値(画素数)を示している。
【0014】
図28に示す例では、変化画素b2が変化画素a1よりも右側にあり且つ変化画素a1が変化画素b1の左側にあり且つ相対距離|a1b1|が1画素であるので、垂直モードで符号化が行なわれ、記号コードVl(1)に対応する符号コード010が出力バッファ6に伝送される。この後、今回の符号化時の変化画素a1が次回の符号化時の起点変化画素a0として設定されるほか、今回の符号化時の変化画素a2,b2がそれぞれ次回の符号化時の変化画素a1,b1として設定される。このように変化画素a0,a1,b1を設定すると、図31に示すように、変化画素b2が変化画素a1よりも右側にあり相対距離|a1b1|が0となるので、次回の符号化でも垂直モードで符号化が行なわれ、記号コードV(0)に対応する符号コード1が出力バッファ6に伝送される。
【0015】
垂直モードによる符号化の他の具体例を図30に示す。この図30に示す例では、変化画素b2が変化画素a1よりも右側にあり且つ変化画素a1が変化画素b1の右側にあり且つ相対距離|a1b1|が2画素であるので、垂直モードで符号化が行なわれ、記号コードVr(2)に対応する符号コード000011が出力バッファ6に伝送される。
【0016】
一方、水平モードは、例えば図31に示すごとく、変化画素b2が変化画素a1と同じ位置もしくは変化画素a1よりも右側にあり、且つ、変化画素a1と変化画素b1との相対距離|a1b1|が3画素よりも大きい場合(図31では4画素)に選択されるモードである。このとき、表1に示すごとく、変化画素a0から変化画素a1までの距離a0a1と、変化画素a1から変化画素a2までの距離a1a2とを得た後、これらの距離a0a1および距離a1a2に応じた値M(a0a1)およびM(a1a2)をそれぞれ参照テーブル保持部7のMH符号表から読み出し、符号コード001+M(a0a1)+M(a1a2)によって、変化画素a0,a1,a2を対象とした符号化が行なわれる。このときの記号コードはHとなっている。符号化後、次回の符号化時の起点変化画素a0は、今回の符号化時の変化画素a2の位置に設定される。
【0017】
水平モードによる符号化の具体例を図31に示す。この図31に示す例では、変化画素b2が変化画素a1よりも右側にあり且つ相対距離|a1b1|が4画素であるので、水平モードで符号化が行なわれる。つまり、a0a1=8,a1a2=4であるので、記号コードHに対応する符号コード001+M(8)+M(4)が出力バッファ6に伝送され、変化画素a2が次回の起点起点変化画素a0となる。
【0018】
このようにして、図28に示される画像データは、“…00010101…”のように符号化される。つまり、符号化対象ライン上の画素の位置と参照ライン上の画素の位置および距離とを関係付けて、画像データの符号化が行なわれる。
【0019】
上述のような符号化の手順(圧縮処理部5の動作)を、図32に示すフローチャート(ステップS11〜S28)に従ってまとめて説明すると、符号化処理の開始時には、参照ラインとして、全てが白画素のライン(白ライン)を想定し(ステップS11)、最初の符号化対象ラインをセットするとともに(ステップS12)、起点変化画素a0を最初の画素の直前に仮想白画素として置く(ステップS13)。
【0020】
この後、変化画素a1,b1およびb2を検出してから(ステップS14〜S16)、変化画素b2が変化画素a1の左側にあるか否かを判断する(ステップS17)。左側にある場合(ステップS17のYESルート)、上述したパスモード符号化を行ない(ステップS18)、変化画素b2の真下の画素を次回の起点変化画素a0として設定する(ステップS19)。
【0021】
また、変化画素b2が変化画素a1と同じ位置もしくは変化画素a1よりも右側にある場合(ステップS17のNOルート)、相対距離|a1b1|が3画素以下か否かを判断する(ステップS20)。
相対距離|a1b1|が3画素以下である場合(ステップS20のYESルート)、上述した垂直モード符号化を行ない(ステップS21)、今回の符号化時の変化画素a1を次回の起点変化画素a0として設定する(ステップS22)。
【0022】
一方、相対距離|a1b1|が4画素以上である場合(ステップS20のNOルート)、変化画素a2を検出してから(ステップS23)、上述した水平モード符号化を行ない(ステップS24)、今回の符号化時の変化画素a2を次回の起点変化画素a0として設定する(ステップS25)。
そして、符号化対象ラインの最後まで符号化処理を実行したか否か、つまり符号化対象位置がEOL(End Of Line)に達したか否かが判断され(ステップS26)、EOLに達していなければ(ステップS26のNOルート)、ステップS14に戻り、上述したステップS14〜S26の処理を繰り返し実行する。
【0023】
EOLに達した場合(ステップS26のYESルート)、符号化対象の画像データにおける最後まで符号化処理を実行したか否か、つまり符号化対象位置がEOD(End Of Data)に達したか否かが判断され(ステップS27)、EODに達していなければ(ステップS27のNOルート)、ステップS12に戻り、上述したステップS12〜S27の処理を繰り返し実行する。このとき、ステップS12では、次の符号化対象ラインを抽出するとともに、前回の符号化対象ラインをそのまま参照ラインとして設定する。また、EODに達した場合(ステップS27のYESルート)、処理を終了する。
【0024】
上述のように圧縮された画像データを伸長する際には、各ライン(復号化対象ライン)の符号化データが順次先頭から読み出され、モードを認識しながらそのモードに応じた復号化処理が実行される。
図33は、このような復号化処理を実行する、一般的なデータ伸長処理装置の構成を示すブロック図である。
【0025】
図33に示すように、データ伸長処理装置11の入力側には、伸長前データ記憶部12が、そして、出力側には、伸長後データ記憶部13が接続されている。データ伸長処理装置11は、入力バッファ14,伸長処理部15,出力バッファ16および参照テーブル保持部17によって構成されている。
伸長前データ記憶部12には、上述のようなデータ圧縮処理装置1によって符号化された画像データ(圧縮後データ、つまり伸長前データ)が格納される。また、伸長後データ記憶部13には、データ伸長処理装置11で復号化された画像データ(伸長後データ)が逐次格納される。
【0026】
データ伸長処理装置11内での伸長処理は、まず、入力バッファ14に、伸長前データを読み込み、これを伸長処理部15に送る。伸長処理部15では、読み込まれたデータの符号コードによりモードを認識し、参照テーブル保持部17に格納されているMH符号表やMR符号表(表1の二次元符号表参照)を参照し、認識されたモードに従って、読み込まれたデータを復号化する。復号化されたデータ(伸長後データ)は、出力バッファ16に送られ、さらに、伸長後データ記憶物13に格納されていく。
【0027】
ここで、伸長処理部15での復号化の手順を図34に示すフローチャート(ステップS31〜S47)に従って説明すると、復号化処理の開始時には、参照ラインとして、全てが白画素のライン(白ライン)を想定し(ステップS31)、最初の復号化対象ラインをセットするとともに(ステップS32)、起点変化画素a0,b0を最初の画素の直前に仮想白画素として置く(ステップS33)。
【0028】
復号化対象ラインの符号化データが順次先頭から読み出され、読み出された符号化データ中の符号コードと参照テーブル保持部17に格納された二次元符号表(表1参照)とによりモードが認識される(ステップS34)。
【0029】
ステップS34において、モードとして、符号コード0001のパスモードが認識された場合(“パス”ルート)、まず、参照ライン上において起点変化画素b0に対する変化画素b2を検出する(ステップS35)。変化画素b2が検出されると、復号化対象ライン上において、起点変化画素a0の色を変化画素b2の位置までセットすることにより、パスモードに応じた復号化処理が実行される(ステップS36)。この後、復号化対象ライン上で、変化画素b2の真下の位置における画素を次回の起点変化画素a0として設定する(ステップS37)。そして、次回の起点変化画素a0の色を、変化画素b2の色に設定する(ステップS38)。
【0030】
ステップS34において、モードとして、符号コード001の水平モードが認識された場合(“水平”ルート)、符号コード001に後続するM(a0a1)+M(a1a2)と参照テーブル保持部17に格納されたMH符号表とにより一次元の復号化処理が実行される(ステップS39)。この後、復号化対象ライン上で、変化画素a2を検出し、その変化画素a2を次回の起点変化画素a0として設定する(ステップS40)。そして、次回の起点変化画素a0の色として、前回の起点変化画素a0をそのまま用いる(ステップS41)。
【0031】
ステップS34において、モードとして垂直モードが認識された場合(“垂直”ルート)、まず、参照ライン上において起点変化画素b0に対する変化画素b1を検出する(ステップS42)。変化画素b1が検出されると、符号コードに応じた復号化処理が実行される(ステップS43)。つまり、符号コードが1である場合〔記号コードV(0)〕、起点変化画素a0の色を、変化画素b1の直前位置の画素までセットする。また、符号コードが記号コードVx(n)(x=r,l;n=1,2,3)に対応するものである場合、起点変化画素a0の色を、変化画素b1のx側(x=rの場合、右側;x=lの場合、左側)のn個目の画素の直前位置の画素までセットする。この後、復号化対象ライン上で、変化画素a1を次回の起点変化画素a0として設定する(ステップS44)。そして、次回の起点変化画素a0の色として、前回の起点変化画素a0の色を反転したものを用いる(ステップS45)。
【0032】
ステップS38,S41もしくはS45の処理を終了すると、復号化対象ライン(このラインに対応する復号化データ)の最後まで復号化処理を実行したか否か、つまり復号化対象位置がEOL(End Of Line)に達したか否かが判断され(ステップS46)、EOLに達していなければ(ステップS46のNOルート)、ステップS34に戻り、上述したステップS34〜S46の処理を繰り返し実行する。
【0033】
EOLに達した場合(ステップS46のYESルート)、復号化対象の画像データにおける最後まで復号化処理を実行したか否か、つまり復号化対象位置がEOD(End Of Data)に達したか否かが判断され(ステップS47)、EODに達しいなければ(ステップS47のNOルート)、ステップS32に戻り、上述したステップS32〜S47の処理を繰り返し実行する。このとき、ステップS32では、次の復号化対象ラインを設定し、そのラインに対応する符号化データを読み出すとともに、前回の復号化対象ラインをそのまま参照ラインとして設定する。また、EODに達した場合(ステップS47のYESルート)、処理を終了する。
【0034】
【発明が解決しようとする課題】
本発明の解決しようとする課題は、特に、上述のようなMMR符号化方式により符号化して得られた圧縮データを、図34により説明した手順で復号化して伸長する場合に着目した時に生じるものである。
画像データが高解像度のものになると、例えば、図35に示されるように、参照ライン上の起点変化画素b0から変化画素b1までの距離(あるいは変化画素b1から変化画素b2までの距離)が長く、これらの変化画素b0,b1,b2間のビット数が多大なものとなる。
【0035】
従来のデータ伸長処理手法では、起点変化画素b0の位置から次の変化画素b1が検出されるまで、CPU等の処理部が、1ビットずつシフトさせて画素の色を判断し、変化画素b1が検出されると、この変化画素b1が検出されるまでのシフト回数を、起点変化画素a0から変化画素b1までの距離として求めている(図34のステップS42参照)。
この処理手順について、図35を参照しながら具体的に説明する。なお、この図35においても、細線枠は白画素を表わし、網掛けを施された太線枠は黒画素を表わしている。
【0036】
まず、起点変化画素b0が位置するビットを取り出し、その色を判断する。図35に示す例では、白画素と判断される。次に、処理部は、参照すべき画素位置を1ビット右にシフトさせ、その位置のビットを取り出し、その位置における画素の色を判断する。このような処理が、黒画素が検出されるまで繰り返し実行される。そして、黒画素が検出された位置の画素が変化画素b1となる。図35に示す例では、変化画素b1の位置を検出するまでのシフト回数(画素数)は20回であり、この回数20が起点変化画素b0と変化画素b1との距離となる。
【0037】
変化画素b1を検出する際だけでなく、変化画素b2を検出する場合(図34のステップS35参照)や、復号化後に起点変化画素a0の位置から変化画素a1やa2を検出する場合(図34のステップS44やS40参照)にも、上述のごとく1ビットずつシフトしながら変化画素b2,a1,a2を検出することになる。
【0038】
従って、静止画像の高解像度化に伴い、特に、参照ラインにおける変化画素b0,b1,b2間の距離(画素数)や、水平モードで復号化されたラインにおけるa0,a1,a2間の距離(画素数)がかなり大きくなるため、上述のようなビットシフト回数が増大し、復号化処理(伸長処理)に要する時間が多大なものとなっている。
【0039】
また、図34のステップS34において、圧縮データ(符号化データ)中の符号コードから、符号化モードを認識する際にも、圧縮データのビットデータ中における、連続して存在する0(白画素)の数を検出する必要がある。例えば、0が3個連続する場合には、符号化モードがパスモードであると認識される。0が2個連続する場合には、符号化モードが水平モードであると認識される。0が1個連続する場合や4個連続する場合や5個連続する場合には、符号化モードが垂直モードであると認識される。このように符号化モードを認識する際に、従来、変化画素を検出する場合と同様、1ビットずつシフトしながら0の数を検出している。従って、符号化モード(符号コード)を認識する処理に時間を要し、復号化処理(伸長処理)に要する時間の増大を招いている。
【0040】
本発明は、このような課題に鑑み創案されたもので、参照ライン上や復号化対象ライン上の変化画素を効率よく検出できるようにするとともに、符号化モード(符号コード)を効率良く認識できるようにして、MMR方式によって圧縮された二値データの伸長処理の高速化を実現することを目的とする。
【0041】
【課題を解決するための手段】
上記目的を達成するために、本発明のデータ伸長処理方法は、MMR符号化方式により、画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのものであって、所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを予め準備しておき、該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り出し、該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求め、求められた該参照ラインにおける変化画素の位置に基づいて前記圧縮データを復号化することを特徴としている。
【0042】
このとき、前記圧縮データがMMR符号化方式によって圧縮され、前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出し、該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する0の数を検出し、検出された0の数に応じて該符号化ビットデータを符号コードに分離し、分離された符号コードに従って、符号化モードを認識し、認識された該符号化モードに従って前記圧縮データの復号化を行なう。
【0043】
また、前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いる。
【0044】
さらに、前記圧縮データを復号化して得られる復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出し、該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求め、求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いてもよい。
【0045】
そして、本発明のデータ伸長処理装置は、MMR符号化方式により、画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのものであって、所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを格納する参照テーブル保持部と、該参照ラインを成すビット列を保持する参照ライン保持部と、前記圧縮データを成すビット列を保持する圧縮データ保持部と、該参照ライン保持部における該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り込むとともに、該圧縮データ保持部から前記圧縮データを成すビット列を取り込み、前記圧縮データを復号化する伸長処理部と、該伸長処理部により前記圧縮データを復号化して得られる復号化対象ラインを成すビット列を保持する復号化対象ライン保持部とをそなえ、該伸長処理部が、該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該参照テーブル保持部における該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求める一方、前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出し、該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する0の数を検出し、検出された0の数に応じて該符号化ビットデータを符号コードに分離し、分離された符号コードに従って、符号化モードを認識し、求められた該参照ラインにおける変化画素の位置、および、認識された該符号化モードに従って前記圧縮データを復号化して該復号化対象ライン保持部に格納するとともに、前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴としている。
このとき、該伸長処理部が、該復号化対象ライン保持部における該復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出し、該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該参照テーブル保持部における該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求め、求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いてもよい。
【0046】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
〔1〕本発明の一実施形態の説明
図1は本発明の第一実施形態としてのデータ伸長処理装置の構成を示すブロック図であり、この図1に示すように、本実施形態のデータ伸長処理装置21も、図33に示した一般的なデータ伸長処理装置11とほぼ同様に構成されている。このデータ伸長処理装置21の入力側には、図33に示す伸長前データ記憶部12と同様の伸長前データ記憶部22が接続されるとともに、出力側には、図33に示す伸長後データ記憶部13と同様の伸長後データ記憶部23が接続されている。
【0047】
そして、伸長前データ記憶部22には、図33に示す伸長前データ記憶部12と同様に、MMR符号化方式によって符号化された画像データ(圧縮後データ、つまり伸長前データ)が格納される。また、伸長後データ記憶部23には、データ伸長処理装置21で復号化された画像データ(伸長後データ)が逐次格納される。
【0048】
データ伸長処理装置21は、画像から取得された複数のラインからなる二値データを、ライン毎に、そのラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データ(具体的に本実施形態ではMMR符号化方式で圧縮されたデータ)を伸長するためのものであって、入力バッファ24,伸長処理部25,出力バッファ26および参照テーブル保持部27をそなえて構成されている。
【0049】
入力バッファ24は、図33に示す入力バッファ14に対応するもので、伸長前データ記憶部22から読み出された伸長前データ(圧縮データ)を成すビット列を一時的に保持する圧縮データ保持部として機能するものである。
出力バッファ26は、図33に示す出力バッファ16に対応するもので、伸長処理部25により圧縮データを復号化して得られる復号化対象ラインを成すビット列を一時的に保持する復号化対象ライン保持部として機能するものである。この出力バッファ26に保持されたデータは、伸長後データとして伸長後データ記憶部23に格納されるようになっている。また、出力バッファ26は、復号化対象ラインの一つ上のライン(隣接するライン)の復号結果を、参照ラインのビット列として保持する参照ライン保持部としての機能も果たしている。
【0050】
参照テーブル保持部27は、図33に示す参照テーブル保持部17に対応するものであるが、本実施形態では、上述と同様のMR符号化表(表1に示す二次元符号化表)やMH符号化表を保持するほか、図2〜図5を参照しながら後述するような5種類のテーブル(第1〜第5テーブル)も保持している。特に、第1テーブルおよび第2テーブルは、所定ビット数(本実施形態では1バイト、8ビット分)のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルである。
【0051】
伸長処理部25は、図33に示す伸長処理部15に対応するものであるが、本実施形態では、出力バッファ26における参照ラインを成すビット列から、順次、参照ビットデータを所定ビット数(1バイト、8ビット分)ずつ取り込むとともに、入力バッファ24から圧縮データを成すビット列から、順次、符号化ビットデータを所定ビット数(1バイト、8ビット分)ずつ取り込み、その圧縮データを復号化するものである。
【0052】
そして、本実施形態の伸長処理部25は、参照ビットデータとこの参照ビットデータ中の注目ビット(変化画素b0もしくはb1)の位置とを用いて、参照テーブル保持部27における第1〜第5テーブルをサーチすることにより、上記注目ビットよりも右側に連続して存在する、この注目ビットと同じ色のビットの数を検出し、この注目ビットから、右側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、参照ラインにおける変化画素b1もしくはb2として求め、求められた変化画素b1,b2の位置に基づいて圧縮データを復号化して出力バッファ26に格納するものである。
【0053】
このとき、伸長処理部25は、圧縮データに含まれる符号コードに従って符号化モードを認識し、認識された符号化モード(パスモード,水平モード,垂直モードのいずれか)に従って圧縮データの復号化を行なう。より具体的に、本実施形態の伸長処理部25は、圧縮データを成すビット列から、順次、符号化ビットデータを1バイト(8ビット)ずつ取り出し、取り出された符号化ビットデータとその符号化ビットデータ中の注目ビットの位置とを用いて、参照テーブル保持27における第1テーブルをサーチすることにより、上記注目ビットよりも右側に連続して存在する0の数を検出し、検出された0の数に応じた符号コードに従って、符号化モードを認識している。
【0054】
また、伸長処理部25は、圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素a0のビット位置に対応した、参照ラインから取り出した参照ビットデータ中におけるビット位置(つまり参照ライン上の起点変化画素b0の位置)を、前記注目ビットの位置として用いる。
【0055】
さらに、伸長処理部25は、出力バッファ26における復号化対象ラインを成すビット列から、順次、復号ビットデータを所定ビット数(1バイト、8ビット分)ずつ取り出し、取り出された復号ビットデータとこの復号ビットデータ中の注目ビット(変化画素a0もしくはa1)の位置とを用いて、参照テーブル保持部27における第1〜第5テーブルをサーチすることにより、上記注目ビットよりも右側に連続して存在する、この注目ビットと同じ色のビットの数を検出し、この注目ビットから、右側に、検出されたビット数に1を加算したビット数だけ離れた位置の画素を、復号化対象ラインにおける変化画素a2として求め、求められた変化画素a2を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素a0として用いる。
【0056】
上述した伸長処理部25は、専用ソフトウェア(データ伸長処理プログラム)によって実現される。
このデータ伸長処理プログラムは、例えばフレキシブルディスク,CD−ROM等のコンピュータ読取可能な記録媒体に記録された形態で提供される。本実施形態においては、データ伸長処理装置21の一部を成すROM(Read Only Memory;図示省略)等に予めデータ伸長処理プログラムを格納しておき、このデータ伸長処理プログラムを、やはりデータ伸長処理装置21の一部を成すCPU(図示省略;コンピュータ)によって読み出し実行することで、上述した伸長処理部25としての機能が実現される。
【0057】
このとき、データ伸長処理プログラムに、後述する第1〜第5テーブルをそなえておき、これらの第1〜第5テーブルをデータ伸長処理プログラムから参照テーブル保持部27に読み出して使用するようにする。
なお、コンテンツ配信プログラムは、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供されてもよい。
また、上述した入力バッファ24,出力バッファ26および参照テーブル保持部27は、データ伸長処理装置21の一部を成すRAM(Random Access Memory;図示省略)やハードディスクなどの記憶装置(あるいは外付けの記憶装置)によって実現される。
【0058】
従来のデータ伸長処理手法では、図35を参照しながら前述した通り、変化画素a1,a2,b1,b2の位置を検出するに際しては、復号化対象ライン上や参照ライン上を1ビットずつシフトしながら変化画素a1,a2,b1,b2の探索を行なっていた。
【0059】
これに対し、本実施形態のデータ伸長処理手法では、変化画素a1,a2,b1,b2の探索を1ビット毎に行なうのではなく、白(0)または黒(1)からなる画素のライン(復号化対象ラインもしくは参照ライン)を1バイト毎に区切って取り出し、1バイトのビットデータにおける白と黒のパターンつまりビットパターンを検出し、検出されたビットパターンで、参照テーブル保持部27に用意されたビットパターンのテーブル(第1〜第5テーブル)をサーチすることにより、変化画素a1,a2,b1,b2の探索をバイト単位で行なうようにしている。
【0060】
1バイトを8ビットとして、画素のラインを1バイト毎に区切った時、8画素による白または黒の配列パターンを得ることができる。このとき、白または黒による配列パターンとしては256通りのパターンが存在する。例えば、1画素を1ビットとし、白画素を0、黒画素を1とすると、0と1からなる8ビットのビットパターンを、256通り作成することができる。
【0061】
本実施形態では、変化画素の位置を求めるために、以下のような5種類のテーブル(第1〜第5テーブル)を用意している。
その5種類のテーブルとは、
(a)1バイトのビット列中でxビット目の画素(注目ビット)よりも右側に連続して存在する白画素の数をビットパターン毎に与える第1テーブルW[8][256]、
(b)1バイトのビット列中でxビット目の画素(注目ビット)よりも右側に連続して存在する黒画素の数をビットパターン毎に与える第2テーブルB[8][256]、
(c)1バイトのビット列中で左側から見て最初に現われる白画素の位置をビットパターン毎に与える第3テーブルLW[256]、
(d)1バイトのビット列中で左側から見て最初に現われる黒画素の位置をビットパターン毎に与える第4テーブルLB[256]、および、
(e)1バイトのビット列中でxビット目の画素の色(白か黒か)をビットパターン毎に与える第5テーブルCLR[8][256]である。
【0062】
図2は、第1テーブルW[8][256]の一部を示すものである。8ビットの0と1の配列パターンは、全部で256通りあるので、第1テーブルW[8][256]では、図2に示すように、256通りのビットパターンが縦方向に配置されている。第1テーブルW[8][256]の横方向には、xビット目の画素よりも右側に連続して存在する白画素の数がビットパターンに対応して記述されている。
【0063】
なお、第1テーブルW[8][256]のNO.の欄には、2進数であるビットパターンを10進数で表わした数値0〜255が記述されている。
また、第1テーブルW[8][256]では、各ビットパターンにおける8個のビットの位置を、それぞれ左から0,1,2,3,4,5,6,7として示している。つまり、あるビットパターンにおいて、左側から見て第1番目(最初)のビットは0ビット目(x=0)として指定され、第8番目(最後)のビットは7ビット目(x=7)として指定される。
【0064】
第1テーブルW[8][256]中の白画素の数には、xビット目の画素が含まれていない。例えば、NO.0のビットパターンについて見ると、0ビット目の画素よりも右側に連続して存在する白画素の数は7(=W[0][0])となり、3ビット目の画素よりも右側に連続して存在する白画素の数は4(=W[3][0])となる。また、NO.4のビットパターンについて見ると、4ビット目の画素よりも右側に続く白画素が無いので、このときの白画素の数は0(=W[4][4])となり、5ビット目の画素は黒であるが、この画素よりも右側に存在する白画素が一つ存在するので、このときの白画素の数は1(=W[5][4])となる。
【0065】
図3は、第2テーブルB[8][256]の一部を示すものである。この第2テーブルB[8][256]も、第1テーブルW[8][256]と同様な手法により作成されているが、第2テーブルB[8][256]の横方向には、xビット目の画素よりも右側に連続して存在する黒画素の数がビットパターンに対応して記述されている。この第2テーブルB[8][256]の見方は、第1テーブルW[8][256]と同様であるので、その詳細な説明は省略する。
【0066】
図4は、第3テーブルLW[256]の一部と、第4テーブルLB[256]の一部とを示すものである。ここで、第3テーブルLW[256]は、1バイトのビット列中で左側から見て最初に現われる白画素の位置をビットパターン毎に与えるものであり、第4テーブルLB[256]は、1バイトのビット列中で左側から見て最初に現われる黒画素の位置をビットパターン毎に与えるものである。これらのテーブルLW[256]およびLB[256]の縦方向には、第1テーブルW[8][256]や第2テーブルB[8][256]と同様、256通りのビットパターンが配置されている。
【0067】
ただし、第3テーブルLW[256]および第4テーブルLB[256]では、第1テーブルW[8][256]や第2テーブルB[8][256]とは異なり、各ビットパターンにおける8個のビットの位置は、それぞれ左から1,2,3,4,5,6,7,8として表わされている。つまり、第3テーブルLW[256]や第4テーブルLB[256]において、最初の白画素もしくは黒画素の位置が1として与えられた場合、その画素は、ビットパターンにおいて、左側から見て第1番目(最初)のビットに位置することになり、位置が8として与えられた場合、その画素は第8番目(最後)のビットに位置することになる。
【0068】
例えば、NO.0のビットパターンについて見ると、8ビットの全てが白画素であり、第1番目のビットが白画素であるので、NO.0のビットパターンに対応する第3テーブルLW[256]の値は1(=LW[0])となる一方、NO.0のビットパターンに対応する第4テーブルBW[256]の値は、黒画素が存在しないため、0(=BW[0])となる。さらに、NO.4のビットパターンについて見ると、5ビット目(左から6番目)の画素のみが黒であるので、NO.4のビットパターンに対応する第3テーブルLW[256]の値は1(=LW[4])となる一方、NO.4のビットパターンに対応する第4テーブルLB[256]の値は6(=BW[4])となる。
【0069】
図5は、第5テーブルCLR[8][256]の一部を示すものである。第5テーブルCLR[8][256]では、図5に示すように、256通りのビットパターンが縦方向に配置されるとともに、横方向には、1バイトのビット列中でxビット目の画素の色が白(0)と黒(1)のいずれであるかが、ビットパターンに対応して記述されている。
【0070】
例えば、NO.0のビットパターンについて見ると、8ビットの全てが白画素であるので、NO.0のビットパターンに対応する第5テーブルCLR[8][256]の値は、全てのビットで白つまり0(=CLR[x][0])となっている。また、NO.4のビットパターンについて見ると、5ビット目の画素のみが黒であるので、NO.4のビットパターンに対応する第5テーブルCLR[8][256]の値は、5ビット目(x=5)で1(=CLR[5][4])となり、その他のビット(x=0,1,2,3,4,6,7)で0となる。
【0071】
本実施形態では、上述のような第1〜第5テーブルを参照テーブル保持部27に予め格納しておき、伸長処理部25において、変化画素a1,a2,b1,b2の位置を検出すべく、注目ビット(注目画素)が白か黒かに応じて各テーブルを使い分ける。
【0072】
ここで、本実施形態による変化画素の検出手法の具体的な例を、図28や図35を参照しながら説明する。
ます、図28に示す参照ライン上のb1を検出する場合について説明する。この参照ライン上では、最初の1バイト中にb0とb1との両方が存在している。この1バイトのビットデータを見ると、そのビットパターンは10000011であり、起点変化画素a0,b0がともに白画素(0)である。
【0073】
そこで、第1テーブルW[8][256]でビットパターン10000011をサーチする。このビットパターン10000011は、十進数で131であるので、第1テーブルW[8][256]のNO.131を参照する。そして、図28において起点変化画素b0は1ビット目に存在しているので、第1テーブルW[8][256]のNO.131の行で1ビット目の欄を参照すると、起点変化画素b0が存在する1バイト中での位置から右に連続する白画素の数として、4(=W[1][131])が得られる(図11のステップS131参照)。
【0074】
起点変化画素b0の1バイト中での位置は左から2番目のビットであるから、この位置と第1テーブルW[8][256]から得られた連続白数とを加算すると、2+4=6となり、変化画素b1はこの1バイト中に存在することが分かる(図11のステップS132のNOルート参照)。この1バイト中の左から6+1=7番目の画素が、白から黒に変化する変化画素b1である。つまり、1バイト中で起点変化画素b0の位置と連続白数とを足した位置の次の画素を変化画素b1の位置とする(図11のステップS135参照)。
なお、起点変化画素a0,b0がともに黒画素(1)である場合には、第1テーブルW[8][256]ではなく、第2テーブルB[8][256]が参照されることになる。
【0075】
ついで、図35に示すように、変化画素b0とb1とが異なるバイトに存在する時に、変化画素b1の位置を求める場合について説明する。このとき、起点変化画素a0,b0がともに白画素(0)であるものとし、起点変化画素b0の位置は、最初の1バイト中の左から2番目、つまり1ビット目であるものとする。この場合、まず、最初の1バイト中の起点変化画素b0よりも右側に連続して存在する白画素の数を、第1テーブルW[8][256]を用いて求める。最初の1バイトは、8ビットの全てが白であることから、NO.0のビットパターンであることが分かり、第1テーブルW[8][256]のNO.0の行で1ビット目の欄を参照すると、起点変化画素b0が存在する1バイト中での位置から右に連続する白画素の数として、6(=W[1][0])が得られる(図11のステップS131参照)。
【0076】
起点変化画素b0の1バイト中での位置は左から2番目のビットであるから、この位置と第1テーブルW[8][256]から得られた連続白数とを加算すると、2+6=8となり、変化画素b1はこの1バイト中に存在しないことが分かる(図11のステップS133のYESルート参照)。
この後、次の1バイトについて、第4テーブルLB[256]をサーチする。ところが、次の1バイトも8ビットの全てが白であることから、NO.0のビットパターンであることが分かり、第4テーブルLB[256]のNO.0の行の欄を参照すると、0(=LB[0])が得られ、この1バイト中に黒画素つまり変化画素が存在しないことが分かる。
【0077】
そこで、さらに次の1バイトについて、第4テーブルLB[256]をサーチすると、今度は、その1バイトのビットパターンが00000111であり、NO.7のビットパターンであることが分かり、第4テーブルLB[256]のNO.7の行の欄を参照すると、6(=LB[7])が得られ、この1バイト中の第6番目(5ビット目)に黒画素つまり変化画素が存在していることが分かる(図11のステップS133,S134参照)。
【0078】
このようにして、白画素が連続した後に最初に黒画素が検出されるまで、参照ラインから1バイトずつビットデータが切り出され、第1テーブルW[8][256]および第4テーブルLB[256]を用いたサーチが行なわれる。黒画素が検出されると、最初の黒画素を変化画素b1とするので、この変化画素b1の位置(アドレス)は、起点変化画素b0の存在するバイトよりも2つ先の1バイト中の先頭から6番目となる。つまり、起点変化画素b0の右側から連続する白画素の数は6+8+(6−1)=19であり、変化画素b1の位置は、起点変化画素b0の右側から20番目の画素となる。本実施形態では、第4テーブルLB[256]で1バイト中で最初の黒画素の位置6が得られるので、起点変化画素b0に対する変化画素b1の位置が、6+8+6=20として得られることになる。
【0079】
なお、ここでも、起点変化画素a0,b0がともに白画素(0)である場合について説明したが、起点変化画素a0,b0がともに黒画素(1)である場合には、第1テーブルW[8][256]や第4テーブルLB[256]ではなく、第2テーブルB[8][256]および第3テーブルLW[256]が参照されることになる。
上述したように、本実施形態では、1バイト毎にビットパターンに従って各テーブルを参照することによって、変化画素a1,a2,b1,b2の位置を検出するので、従来のごとく1ビット毎に変化画素の検出を行なう場合に比較して、大幅に処理時間を短縮することができる。
【0080】
次に、本実施形態のデータ伸長処理装置21における伸長処理部25による復号化手順(伸長処理手順)を、図6に示すフローチャート(ステップS51〜S67)に従って説明する。本実施形態における復号化手順も、基本的には、図34に示した伸長処理部15での復号化手順と同様に行なわれるものであり、図6におけるステップS51〜S67は、それぞれ図34におけるステップS31〜S47に対応している。
【0081】
符号化処理の開始時には、参照ラインとして、全てが白画素のライン(白ライン)を想定し(ステップS51)、最初の復号化対象ラインをセットするとともに(ステップS52)、起点変化画素a0およびb0を最初の画素の直前に仮想白画素として置く(ステップS53)。
復号化対象ラインの符号化データ(圧縮データ)が、順次、先頭から1バイトずつ読み出され、読み出された符号化ビットデータ中の符号コードと参照テーブル保持部27に格納された二次元符号表(表1参照)とに従って符号化モードが認識・選択される(ステップS54)。
【0082】
このとき、図22〜図25を参照しながら後述するごとく、符号化ビットデータと符号化ビットデータ中の注目ビットの位置とを用いて、第1テーブルW[8][256]および第5テーブルCLR[8][256]をサーチすることにより、注目ビットよりも右側に連続して存在する0の数が検出され、検出された0の数に応じた符号コードに従って、符号化モードが認識される。
【0083】
例えば、注目ビットが0であることが第5テーブルCLR[8][256]によって認識され、この注目ビットよりも右側に連続して存在する0の数が0である場合には、注目ビットの位置から連続する0の数は1であると判断され、符号化モードは、記号コードVr(1)またはVl(1)のいずれか一方に対応する垂直モードであると認識される。そして、0に続く2つビットが11であるか10であるかを、第5テーブルCLR[8][256]によって認識することで、符号化モードは、記号コードVr(1)またはVl(1)のいずれか一方に特定され、今回認識された符号コード011または010の次のビットが次回の注目ビットとして設定される。
【0084】
また、注目ビットが0であることが第5テーブルCLR[8][256]によって認識され、この注目ビットよりも右側に連続して存在する0の数が3である場合には、注目ビットの位置から連続する0の数は4であると判断され、符号化モードは、記号コードVr(2)またはVl(2)のいずれか一方に対応する垂直モードであると認識される。そして、0に続く2つビットが11であるか10であるかを、第5テーブルCLR[8][256]によって認識することで、符号化モードは、記号コードVr(2)またはVl(2)のいずれか一方に特定され、今回認識された符号コード000011または000010の次のビットが次回の注目ビットとして設定される。
【0085】
同様に、注目ビットが0であることが第5テーブルCLR[8][256]によって認識され、この注目ビットよりも右側に連続して存在する0の数が4である場合には、注目ビットの位置から連続する0の数は5であると判断され、符号化モードは、記号コードVr(3)またはVl(3)のいずれか一方に対応する垂直モードであると認識される。そして、0に続く2つビットが11であるか10であるかを、第5テーブルCLR[8][256]によって認識することで、符号化モードは、記号コードVr(3)またはVl(3)のいずれか一方に特定され、今回認識された符号コード0000011または0000010の次のビットが次回の注目ビットとして設定される。
【0086】
注目ビットが0であることが第5テーブルCLR[8][256]によって認識され、この注目ビットよりも右側に連続して存在する0の数が2である場合には、注目ビットの位置から連続する0の数は3であると判断され、符号化モードはパスモードであると認識される。そして、今回認識された符号コード0001の次のビットが次回の注目ビットとして設定される。
【0087】
注目ビットが0であることが第5テーブルCLR[8][256]によって認識され、この注目ビットよりも右側に連続して存在する0の数が1である場合には、注目ビットの位置から連続する0の数は2であると判断され、符号化モードは水平モードであると認識される。そして、今回認識された符号コード001+M(a0a1)+M(a1a2)の次のビットが次回の注目ビットとして設定される。
【0088】
注目ビットが1であることが第5テーブルCLR[8][256]によって認識された場合には、符号化モードは、記号コードV(0)に対応する垂直モードであると認識される。そして、今回認識された符号コード1の次のビットが次回の注目ビットとして設定される。
なお、上述のような符号化モードの具体的な認識・選択手順については、図26を参照しながら後述する。
【0089】
ステップS54において、符号化モードが符号コード0001のパスモードであると認識された場合(“パス”ルート)、まず、参照ライン上において起点変化画素b0に対する変化画素b2を検出する(ステップS55)。このステップS55での変化画素b2の検出手順については、図8〜図16を参照しながら後述する。変化画素b2が検出されると、復号化対象ライン上において、起点変化画素a0の色を変化画素b2の位置までセットすることにより、パスモードに応じた復号化処理が実行される(ステップS56)。この後、復号化対象ライン上で、変化画素b2の真下の位置における画素を次回の起点変化画素a0として設定する(ステップS57)。そして、次回の起点変化画素a0の色を、変化画素b2の色に設定する(ステップS58)。
【0090】
ステップS54において、符号化モードが符号コード001の水平モードであると認識された場合(“水平”ルート)、符号コード001に後続するM(a0a1)+M(a1a2)と参照テーブル保持部27に格納されたMH符号表とにより一次元の復号化処理が実行される(ステップS59)。この後、復号化対象ライン上で、変化画素a2を検出し、その変化画素a2を次回の起点変化画素a0として設定する(ステップS60)。なお、ステップS60での変化画素a2の検出手順については、図17〜図21を参照しながら後述する。そして、次回の起点変化画素a0の色として、前回の起点変化画素a0をそのまま用いる(ステップS61)。
【0091】
ステップS54において、符号化モードが垂直モードであると認識された場合(“垂直”ルート)、まず、参照ライン上において起点変化画素b0に対する変化画素b1を検出する(ステップS62)。このステップS62での変化画素b1の検出手順については、図7および図9〜図16を参照しながら後述する。変化画素b1が検出されると、符号コードに応じた復号化処理が実行される(ステップS63)。つまり、符号コードが1である場合〔記号コードV(0)〕、起点変化画素a0の色を、変化画素b1の直前位置の画素までセットする。また、符号コードが記号コードVx(n)(x=r,l;n=1,2,3)に対応するものである場合、起点変化画素a0の色を、変化画素b1のx側(x=rの場合、右側;x=lの場合、左側)のn個目の画素の直前位置の画素までセットする。この後、復号化対象ライン上で、変化画素a1を次回の起点変化画素a0として設定する(ステップS64)。そして、次回の起点変化画素a0の色として、前回の起点変化画素a0の色を反転したものを用いる(ステップS65)。
【0092】
ステップS58,S61もしくはS65の処理を終了すると、復号化対象ライン(このラインに対応する復号化データ)の最後まで復号化処理を実行したか否か、つまり復号化対象位置がEOL(End Of Line)に達したか否かが判断され(ステップS66)、EOLに達していなければ(ステップS66のNOルート)、ステップS54に戻り、上述したステップS54〜S66の処理を繰り返し実行する。
【0093】
EOLに達した場合(ステップS66のYESルート)、復号化対象の画像データにおける最後まで復号化処理を実行したか否か、つまり復号化対象位置がEOD(End Of Data)に達したか否かが判断され(ステップS67)、EODに達しいなければ(ステップS67のNOルート)、ステップS52に戻り、上述したステップS52〜S67の処理を繰り返し実行する。このとき、ステップS52では、次の復号化対象ラインを設定し、そのラインに対応する符号化データを読み出すとともに、前回の復号化対象ラインをそのまま参照ラインとして設定する。また、EODに達した場合(ステップS67のYESルート)、処理を終了する。
【0094】
ここで、本実施形態によるデータ伸長処理手順の具体的な例について、図22〜図25を参照しながら説明する。なお、図22〜図25は本実施形態による復号化(伸長処理)を説明すべく画素列の具体例を示す図である。これらの図22〜図25では、各図の上段に示すような参照データを用いて、例えば000101010001…という圧縮データ(符号化データ)を復号化する際の状況が順次示されている。圧縮データ000101010001…は、パスモード0001+垂直モード010(記号コードVl(1))+垂直モード1(記号コードV(0))+パスモード0001という4つの符号コードに分離される。
【0095】
このとき、本実施形態において圧縮データは1バイトずつ取り込まれる。つまり、まず、圧縮データ00010101が伸長処理部25に取り込まれる。そして、先頭のビットが注目ビットとして設定され、前述したように、図6のステップS54で各符号コードに対応する符号化モードが認識される。
【0096】
圧縮データ00010101のビットパターンは、NO.21に対応するものであり、現在の注目ビットの位置は0ビット目であるので、第5テーブルCLR[8][256]のNO.21の行で0ビット目の欄(CLR[0][21])を参照すると、この0ビット目の色として白(0)が得られる。この後、第1テーブルW[8][256]のNO.21の行で0ビット目の欄(W[0][21])を参照することにより、今回の注目ビット(白)よりも右側に連続して存在する0の数2が求められる。従って、注目ビットの位置から0が3個連続すると判断され、符号化モードはパスモードであると認識される。そして、今回認識された符号コード0001の次のビット、つまり左から5番目(4ビット目)のビットが次回の注目ビットとして設定される。
【0097】
次に設定された注目ビットの位置は4ビット目であるので、第5テーブルCLR[8][256]のNO.21の行で4ビット目の欄(CLR[4][21])を参照すると、この4ビット目の色として白(0)が得られる。この後、第1テーブルW[8][256]のNO.21の行で4ビット目の欄(W[4][21])を参照することにより、今回の注目ビット(白)よりも右側に連続して存在する0の数1が求められる。従って、注目ビットの位置の次のビットは1であり、0の数は注目ビットの位置の一つだけであると判断され、符号化モードは、記号コードVr(1)またはVl(1)のいずれか一方に対応する垂直モードであると認識される。そして、この注目ビットよりも2つ目のビット(6ビット目)が0であるか1であるかを、第5テーブルCLR[8][256]によって判断する。つまり、第5テーブルCLR[8][256]のNO.21の行で6ビット目の欄(CLR[6][21])を参照すると、この6ビット目の色として白(0)が得られるので、最終的に、符号化モードは、記号コードVl(1)に対応する垂直モードであると認識される。そして、今回認識された符号コード010の次のビット、つまり左から8番目(7ビット目)のビットが次回の注目ビットとして設定される。
【0098】
次に設定された注目ビットの位置は7ビット目であるので、第5テーブルCLR[8][256]のNO.21の行で7ビット目の欄(CLR[7][21])を参照すると、この7ビット目の色として黒(1)が得られる。従って、符号化モードは、記号コードV(0)に対応する垂直モードであると認識される。そして、今回認識された符号コード1の次のビットが次回の注目ビットとして設定される。ここでは、この時点で1バイト分の圧縮データに対する認識処理を完了しているので、次の1バイト分の圧縮データ0001…が読み込まれ、その1バイト分の先頭ビットが注目ビットとして設定される。そして、前述とほぼ同様にして、符号化モードがパスモードであると認識される。
【0099】
図22に示すように、上段の参照ラインと下段の復号化対象ラインとに対し、最初の起点変化画素b0,a0を、それぞれ、最初の画素の直前に仮想白画素として置く。最初の符号コードが0001であるので、符号化モードがパスモードであることが認識される。そして、図22に示すように、起点変化画素b0,a0がいずれも白画素であることから、図8のステップS75およびS80(つまり図11および図15に示すフローチャート)によって、参照ラインの第1バイトB1中の変化画素b2の位置(第1バイトB1の左から5番目のビット)が検出され、起点変化画素a0の色(白)が変化画素b2の位置までセットされる。この後、復号化対象ライン上で、変化画素b2の真下の位置における画素が次回の起点変化画素a0として設定され、その起点変化画素a0の色が、変化画素b2の色(白)に設定される。
【0100】
2番目の符号コードは010であるので、符号化モードが記号コードVl(1)の垂直モードであると認識される。そして、図23に示すように、今回の起点変化画素b0,a0がいずれも白画素であることから、図7のステップS75(つまり図11に示すフローチャート)によって、参照ラインの第2バイトB2中の変化画素b1の位置(第2バイトB2の左から2番目のビット)が検出され、起点変化画素a0の色(白)が、変化画素b1の左側(x=l)の1個目の画素の直前位置(第1バイトB1の一番右側のビット)の画素までセットされる。この後、復号化対象ライン上で、変化画素a1(第2バイトB2の一番左側の画素)が次回の起点変化画素a0として設定されるとともに、その起点変化画素a0の色が、前回の起点変化画素a0の色(白)を反転した色、つまり黒に設定される。
【0101】
3番目の符号コードは1であるので、符号化モードが記号コードV(0)の垂直モードであると認識される。そして、図24に示すように、今回の起点変化画素b0,a0がそれぞれ白画素および黒画素であることから、図7のステップS77およびS78(つまり図12および図13に示すフローチャート)によって、参照ラインの第2バイトB2中の変化画素b1の位置(第2バイトB2の左から5番目のビット)が検出され、起点変化画素a0の色(黒)が、変化画素b1の直前位置(第2バイトB2の左から4番目のビット)の画素までセットされる。この後、復号化対象ライン上で、変化画素a1(第2バイトB2の左から5番目の画素)が次回の起点変化画素a0として設定されるとともに、その起点変化画素a0の色が、前回の起点変化画素a0の色(黒)を反転した色、つまり白に設定される。
【0102】
4番目の符号コードは0001であるので、符号化モードがパスモードであることが認識される。そして、図25に示すように、起点変化画素b0,a0がいずれも白画素であることから、図8のステップS75およびS80(つまり図11および図15に示すフローチャート)によって、参照ラインの第4バイトB4中の変化画素b2の位置(第4バイトB4の左から3番目のビット)が検出され、起点変化画素a0の色(白)が変化画素b2の位置までセットされる。この後、復号化対象ライン上で、変化画素b2の真下の位置における画素が次回の起点変化画素a0として設定され、その起点変化画素a0の色が、変化画素b2の色(白)に設定される。
【0103】
さて次に、図6のステップS62での変化画素b1の検出手順について、図7に示すフローチャート(ステップS71〜S79)に従って説明する。
変化画素b1を検出する場合、まず、復号化対象ライン上の起点変化画素a0の色が白か否かを判断し(ステップS71)、起点変化画素a0の色が白である場合(ステップS71のYESルート)、参照ライン上の起点変化画素b0の色が黒か否かを判断する(ステップS72)。
【0104】
起点変化画素b0の色が黒である場合(ステップS72のYESルート)、図9を参照しながら後述する手順で、起点変化画素b0から右側で最初に現われる白画素の位置を求めてから(ステップS73)、ステップS73で求められた白画素の位置に基づき、図10を参照しながら後述する手順で、変化画素(黒画素)b1の位置を求める(ステップS74)。また、起点変化画素b0の色が白である場合(ステップS72のNOルート)、図11を参照しながら後述する手順で、変化画素(黒画素)b1の位置を求める(ステップS75)。
【0105】
起点変化画素a0の色が黒である場合(ステップS71のNOルート)、参照ライン上の起点変化画素b0の色が白か否かを判断する(ステップS76)。
起点変化画素b0の色が白である場合(ステップS76のYESルート)、図12を参照しながら後述する手順で、起点変化画素b0から右側で最初に現われる黒画素の位置を求めてから(ステップS77)、ステップS77で求められた黒画素の位置に基づき、図13を参照しながら後述する手順で、変化画素(白画素)b1の位置を求める(ステップS78)。また、起点変化画素b0の色が黒である場合(ステップS76のNOルート)、図14を参照しながら後述する手順で、変化画素(白画素)b1の位置を求める(ステップS79)。
【0106】
図6のステップS55での変化画素b2の検出手順について、図8に示すフローチャート(ステップS71〜S81)に従って説明する。この場合、図7によって説明した手順で変化画素b1を検出した後、その変化画素b1を用いて、変化画素b2を検出する。従って、図8に示すフローチャートでは、図7に示すフローチャートにステップS80およびS81が追加されているだけである。
【0107】
つまり、ステップS74またはステップS75によって変化画素(黒画素)b1が検出された場合には、図15を参照しながら後述する手順で、変化画素(白画素)b2を求める(ステップS80)。また、ステップS78またはステップS79によって変化画素(白画素)b1が検出された場合には、図16を参照しながら後述する手順で、変化画素(黒画素)b2を求める(ステップS81)。なお、図7および図8のステップS71,S72,S76での色判定に際しては、第5テーブルCLR[8][256]が使用される。
【0108】
図7および図8のステップS73での詳細処理手順について、図9に示すフローチャート(ステップS111〜S115)に従って説明すると、まず、起点変化画素b0が存在する1バイト中でのb0の位置から右側に、いくつ黒(1)が連続しているかを、第2テーブルB[8][256]を使用して求める(ステップS111)。この後、その1バイト中でのb0の位置とステップS111で求められた連続黒数とを加算した値が8か否かを判断し(ステップS112)、8である場合(ステップS112のYESルート)、起点変化画素b0の存在するバイトよりも右側で白画素が見つかるか、1ラインの最後に到達するまで、参照ラインを1バイトずつ取り出してサーチを行なう(ステップS113)。そして、参照ラインが終わっても白画素が検出されない場合には、白画素の位置を次のラインの先頭に設定する一方、白画素が検出された場合、第3テーブルLW[256]を使用して、その1バイト中で左側から見て最初に現われる白画素の位置、つまり、起点変化画素b0から右側で最初に現われる白画素の位置を求める(ステップS114)。また、ステップS112で8ではないと判断された場合(NOルート)、1バイト中でのb0の位置とステップS111で求められた連続黒数とを加算した値に対応する位置の次を、起点変化画素b0から右側で最初に現われる白画素の位置として求める(ステップS115)。
【0109】
図7および図8のステップS74での詳細処理手順について、図10に示すフローチャート(ステップS121〜S127)に従って説明すると、まず、ステップS73(つまり図9に示すフローチャート)によって求められた白画素の位置が、次のラインの先頭であるか否かを判断し(ステップS121)、先頭である場合(ステップS121のYESルート)、ステップS73で求められた白画素の位置を変化画素b1の位置とする(ステップS122)。一方、先頭でない場合(ステップS121のNOルート)、上記白画素が存在する1バイト中でのその白画素の位置から右側に、いくつ白(0)が連続しているかを、第1テーブルW[8][256]を使用して求める(ステップS123)。この後、その1バイト中での上記白画素の位置とステップS123で求められた連続白数とを加算した値が8か否かを判断し(ステップS124)、8である場合(ステップS124のYESルート)、上記白画素の存在するバイトよりも右側で黒画素が見つかるか、1ラインの最後に到達するまで、参照ラインを1バイトずつ取り出してサーチを行なう(ステップS125)。そして、参照ラインが終わっても黒画素が検出されない場合には、変化画素b1の位置を次のラインの先頭に設定する一方、黒画素が検出された場合、第4テーブルLB[256]を使用して、その1バイト中で左側から見て最初に現われる黒画素の位置を変化画素b1の位置として求める(ステップS126)。また、ステップS124で8ではないと判断された場合(NOルート)、1バイト中での上記白画素の位置とステップS123で求められた連続白数とを加算した値に対応する位置の次を、変化画素b1の位置として求める(ステップS127)。
【0110】
図7および図8のステップS75での詳細処理手順について、図11に示すフローチャート(ステップS131〜S135)に従って説明すると、まず、起点変化画素b0が存在する1バイト中でのb0の位置から右側に、いくつ白(0)が連続しているかを、第1テーブルW[8][256]を使用して求める(ステップS131)。この後、その1バイト中でのb0の位置とステップS131で求められた連続白数とを加算した値が8か否かを判断し(ステップS132)、8である場合(ステップS132のYESルート)、起点変化画素b0の存在するバイトよりも右側で黒画素が見つかるか、1ラインの最後に到達するまで、参照ラインを1バイトずつ取り出してサーチを行なう(ステップS133)。そして、参照ラインが終わっても黒画素が検出されない場合には、変化画素b1の位置を次のラインの先頭に設定する一方、黒画素が検出された場合、第4テーブルLB[256]を使用して、その1バイト中で左側から見て最初に現われる黒画素の位置を変化画素b1の位置として求める(ステップS134)。また、ステップS132で8ではないと判断された場合(NOルート)、1バイト中でのb0の位置とステップS123で求められた連続白数とを加算した値に対応する位置の次を、変化画素b1の位置として求める(ステップS135)。
【0111】
図7および図8のステップS77での詳細処理手順について、図12に示すフローチャート(ステップS111´〜S115´)に従って説明すると、まず、起点変化画素b0が存在する1バイト中でのb0の位置から右側に、いくつ白(0)が連続しているかを、第1テーブルW[8][256]を使用して求める(ステップS111´)。この後、その1バイト中でのb0の位置とステップS111´で求められた連続白数とを加算した値が8か否かを判断し(ステップS112´)、8である場合(ステップS112´のYESルート)、起点変化画素b0の存在するバイトよりも右側で黒画素が見つかるか、1ラインの最後に到達するまで、参照ラインを1バイトずつ取り出してサーチを行なう(ステップS113´)。そして、参照ラインが終わっても黒画素が検出されない場合には、黒画素の位置を次のラインの先頭に設定する一方、黒画素が検出された場合、第4テーブルLB[256]を使用して、その1バイト中で左側から見て最初に現われる黒画素の位置、つまり、起点変化画素b0から右側で最初に現われる黒画素の位置を求める(ステップS114´)。また、ステップS112´で8ではないと判断された場合(NOルート)、1バイト中でのb0の位置とステップS111´で求められた連続白数とを加算した値に対応する位置の次を、起点変化画素b0から右側で最初に現われる黒画素の位置として求める(ステップS115´)。
【0112】
図7および図8のステップS78での詳細処理手順について、図13に示すフローチャート(ステップS121´〜S127´)に従って説明すると、まず、ステップS77(つまり図12に示すフローチャート)によって求められた黒画素の位置が、次のラインの先頭であるか否かを判断し(ステップS121´)、先頭である場合(ステップS121´のYESルート)、ステップS77で求められた黒画素の位置を変化画素b1の位置とする(ステップS122´)。一方、先頭でない場合(ステップS121´のNOルート)、上記黒画素が存在する1バイト中でのその黒画素の位置から右側に、いくつ黒(1)が連続しているかを、第2テーブルB[8][256]を使用して求める(ステップS123´)。この後、その1バイト中での上記黒画素の位置とステップS123´で求められた連続黒数とを加算した値が8か否かを判断し(ステップS124´)、8である場合(ステップS124´のYESルート)、上記黒画素の存在するバイトよりも右側で白画素が見つかるか、1ラインの最後に到達するまで、参照ラインを1バイトずつ取り出してサーチを行なう(ステップS125´)。そして、参照ラインが終わっても白画素が検出されない場合には、変化画素b1の位置を次のラインの先頭に設定する一方、白画素が検出された場合、第3テーブルLW[256]を使用して、その1バイト中で左側から見て最初に現われる白画素の位置を変化画素b1の位置として求める(ステップS126´)。また、ステップS124´で8ではないと判断された場合(NOルート)、1バイト中での上記黒画素の位置とステップS123´で求められた連続黒数とを加算した値に対応する位置の次を、変化画素b1の位置として求める(ステップS127´)。
【0113】
図7および図8のステップS79での詳細処理手順について、図14に示すフローチャート(ステップS131´〜S135´)に従って説明すると、まず、起点変化画素b0が存在する1バイト中でのb0の位置から右側に、いくつ黒(1)が連続しているかを、第2テーブルB[8][256]を使用して求める(ステップS131´)。この後、その1バイト中でのb0の位置とステップS131´で求められた連続黒数とを加算した値が8か否かを判断し(ステップS132´)、8である場合(ステップS132´のYESルート)、起点変化画素b0の存在するバイトよりも右側で白画素が見つかるか、1ラインの最後に到達するまで、参照ラインを1バイトずつ取り出してサーチを行なう(ステップS133´)。そして、参照ラインが終わっても白画素が検出されない場合には、変化画素b1の位置を次のラインの先頭に設定する一方、白画素が検出された場合、第3テーブルLW[256]を使用して、その1バイト中で左側から見て最初に現われる白画素の位置を変化画素b1の位置として求める(ステップS134´)。また、ステップS132´で8ではないと判断された場合(NOルート)、1バイト中での起点変化画素b0の位置とステップS123´で求められた連続黒数とを加算した値に対応する位置の次を、変化画素b1の位置として求める(ステップS135´)。
【0114】
図8のステップS80での詳細処理手順について、図15に示すフローチャート(ステップS141〜S147)に従って説明すると、まず、ステップS74またはステップS75(つまり図10または図11に示すフローチャート)によって求められた変化画素b1の位置が、次のラインの先頭であるか否かを判断し(ステップS141)、先頭である場合(ステップS141のYESルート)、ステップS74またはS75で求められた変化画素b1の位置を変化画素b2の位置とする(ステップS142)。一方、先頭でない場合(ステップS141のNOルート)、変化画素b1が存在する1バイト中でのb1の位置から右側に、いくつ黒(1)が連続しているかを、第2テーブルB[8][256]を使用して求める(ステップS143)。この後、その1バイト中でのb1の位置とステップS143で求められた連続黒数とを加算した値が8か否かを判断し(ステップS144)、8である場合(ステップS144のYESルート)、変化画素b1の存在するバイトよりも右側で白画素が見つかるか、1ラインの最後に到達するまで、参照ラインを1バイトずつ取り出してサーチを行なう(ステップS145)。そして、参照ラインが終わっても白画素が検出されない場合には、変化画素b2の位置を次のラインの先頭に設定する一方、白画素が検出された場合、第3テーブルLW[256]を使用して、その1バイト中で左側から見て最初に現われる白画素の位置を変化画素b2の位置として求める(ステップS146)。また、ステップS144で8ではないと判断された場合(NOルート)、1バイト中でのb1の位置とステップS143で求められた連続黒数とを加算した値に対応する位置の次を、変化画素b2の位置として求める(ステップS147)。
【0115】
図8のステップS81での詳細処理手順について、図16に示すフローチャート(ステップS141´〜S147´)に従って説明すると、まず、ステップS78またはステップS79(つまり図13または図14に示すフローチャート)によって求められた変化画素b1の位置が、次のラインの先頭であるか否かを判断し(ステップS141´)、先頭である場合(ステップS141´のYESルート)、ステップS78またはS79で求められた変化画素b1の位置を変化画素b2の位置とする(ステップS142´)。一方、先頭でない場合(ステップS141´のNOルート)、変化画素b1が存在する1バイト中でのb1の位置から右側に、いくつ白(0)が連続しているかを、第1テーブルW[8][256]を使用して求める(ステップS143´)。この後、その1バイト中でのb1の位置とステップS143´で求められた連続白数とを加算した値が8か否かを判断し(ステップS144´)、8である場合(ステップS144´のYESルート)、変化画素b1の存在するバイトよりも右側で黒画素が見つかるか、1ラインの最後に到達するまで、参照ラインを1バイトずつ取り出してサーチを行なう(ステップS145´)。そして、参照ラインが終わっても黒画素が検出されない場合には、変化画素b2の位置を次のラインの先頭に設定する一方、黒画素が検出された場合、第4テーブルLB[256]を使用して、その1バイト中で左側から見て最初に現われる黒画素の位置を変化画素b2の位置として求める(ステップS146´)。また、ステップS144´で8ではないと判断された場合(NOルート)、1バイト中でのb1の位置とステップS143´で求められた連続白数とを加算した値に対応する位置の次を、変化画素b2の位置として求める(ステップS147´)。
【0116】
次に、図6のステップS60での変化画素a2の検出手順について、図17に示すフローチャート(ステップS91〜S95)に従って説明する。
変化画素a1を検出する場合、まず、復号化対象ライン上の起点変化画素a0の色が白か否かを判断し(ステップS91)、起点変化画素a0の色が白である場合(ステップS91のYESルート)、図18を参照しながら後述する手順で、変化画素(黒画素)a1の位置を求めてから(ステップS92)、図19を参照しながら後述する手順で、変化画素(白画素)a2の位置を求める(ステップS93)。一方、起点変化画素a0の色が黒である場合(ステップS91のNOルート)、図20を参照しながら後述する手順で、変化画素(白画素)a1の位置を求めてから(ステップS94)、図21を参照しながら後述する手順で、変化画素(黒画素)a2の位置を求める(ステップS95)。
なお、図17のステップS91での色判定に際しては、第5テーブルCLR[8][256]が使用される。
【0117】
図17のステップS92での詳細処理手順について、図18に示すフローチャート(ステップS151〜S155)に従って説明すると、まず、起点変化画素a0が存在する1バイト中でのa0の位置から右側に、いくつ白(0)が連続しているかを、第1テーブルW[8][256]を使用して求める(ステップS151)。この後、その1バイト中でのa0の位置とステップS151で求められた連続白数とを加算した値が8か否かを判断し(ステップS152)、8である場合(ステップS152のYESルート)、起点変化画素a0の存在するバイトよりも右側で黒画素が見つかるか、1ラインの最後に到達するまで、復号化対象ラインを1バイトずつ取り出してサーチを行なう(ステップS153)。そして、復号化対象ラインが終わっても黒画素が検出されない場合には、変化画素a1の位置を次のラインの先頭に設定する一方、黒画素が検出された場合、第4テーブルLB[256]を使用して、その1バイト中で左側から見て最初に現われる黒画素の位置を変化画素a1の位置として求める(ステップS154)。また、ステップS152で8ではないと判断された場合(NOルート)、1バイト中でのa0の位置とステップS153で求められた連続白数とを加算した値に対応する位置の次を、変化画素a1の位置として求める(ステップS155)。
【0118】
図17のステップS93での詳細処理手順について、図19に示すフローチャート(ステップS161〜S165)に従って説明すると、まず、ステップS92(つまり図18に示すフローチャート)によって求められた変化画素a1が存在する1バイトに着目し、そのバイト中でのa1の位置から右側にいくつ黒(1)が連続しているかを、第2テーブルB[8][256]を使用して求める(ステップS161)。この後、その1バイト中でのa1の位置とステップS161で求められた連続黒数とを加算した値が8か否かを判断し(ステップS162)、8である場合(ステップS162のYESルート)、変化画素a1の存在するバイトよりも右側で白画素が見つかるか、1ラインの最後に到達するまで、復号化対象ラインを1バイトずつ取り出してサーチを行なう(ステップS163)。そして、復号化対象ラインが終わっても白画素が検出されない場合には、変化画素a2の位置を次のラインの先頭に設定する一方、白画素が検出された場合、第3テーブルLW[256]を使用して、その1バイト中で左側から見て最初に現われる白画素の位置を変化画素a2の位置として求める(ステップS164)。また、ステップS162で8ではないと判断された場合(NOルート)、1バイト中でのa1の位置とステップS163で求められた連続黒数とを加算した値に対応する位置の次を、変化画素a2の位置として求める(ステップS165)。
【0119】
図17のステップS94での詳細処理手順について、図20に示すフローチャート(ステップS151´〜S155´)に従って説明すると、まず、起点変化画素a0が存在する1バイト中でのa0の位置から右側に、いくつ黒(1)が連続しているかを、第2テーブルB[8][256]を使用して求める(ステップS151´)。この後、その1バイト中でのa0の位置とステップS151´で求められた連続黒数とを加算した値が8か否かを判断し(ステップS152´)、8である場合(ステップS152´のYESルート)、起点変化画素a0の存在するバイトよりも右側で白画素が見つかるか、1ラインの最後に到達するまで、復号化対象ラインを1バイトずつ取り出してサーチを行なう(ステップS153´)。そして、復号化対象ラインが終わっても白画素が検出されない場合には、変化画素a1の位置を次のラインの先頭に設定する一方、白画素が検出された場合、第3テーブルLW[256]を使用して、その1バイト中で左側から見て最初に現われる白画素の位置を変化画素a1の位置として求める(ステップS154´)。また、ステップS152´で8ではないと判断された場合(NOルート)、1バイト中でのa0の位置とステップS153´で求められた連続黒数とを加算した値に対応する位置の次を、変化画素a1の位置として求める(ステップS155´)。
【0120】
図17のステップS95での詳細処理手順について、図21に示すフローチャート(ステップS161´〜S165´)に従って説明すると、まず、ステップS94(つまり図20に示すフローチャート)によって求められた変化画素a1が存在する1バイトに着目し、そのバイト中でのa1の位置から右側にいくつ白(0)が連続しているかを、第1テーブルW[8][256]を使用して求める(ステップS161´)。この後、その1バイト中でのa1の位置とステップS161´で求められた連続白数とを加算した値が8か否かを判断し(ステップS162´)、8である場合(ステップS162´のYESルート)、変化画素a1の存在するバイトよりも右側で黒画素が見つかるか、1ラインの最後に到達するまで、復号化対象ラインを1バイトずつ取り出してサーチを行なう(ステップS163´)。そして、復号化対象ラインが終わっても黒画素が検出されない場合には、変化画素a2の位置を次のラインの先頭に設定する一方、黒画素が検出された場合、第4テーブルLB[256]を使用して、その1バイト中で左側から見て最初に現われる黒画素の位置を変化画素a2の位置として求める(ステップS164´)。また、ステップS162´で8ではないと判断された場合(NOルート)、1バイト中でのa1の位置とステップS163´で求められた連続白数とを加算した値に対応する位置の次を、変化画素a2の位置として求める(ステップS165´)。
【0121】
最後に、伸長処理部25による、図6のステップS54での符号化モードの具体的な認識・選択手順について、図26に示すフローチャート(ステップS201〜S229)に従って説明する。
まず、1バイト(8ビット)分の圧縮データ(符号化ビットデータ)を取り込み(ステップS201)、その符号化ビットデータの先頭ビットを注目ビットとして設定する(ステップS202)。そして、第5テーブルCLR[8][256]を使用して注目ビットが0か1かを判断する(ステップS203)。
【0122】
注目ビットが1である場合(ステップS203のNOルート)、符号化モードは、記号コードV(0)に対応する垂直モードであると認識され(ステップS204)、注目ビットは、今回取り込まれた1バイトの最終ビットであるか否かを判断する(ステップS205)。最終ビットでない場合(ステップS205のNOルート)、今回認識された符号コード1の次のビットを次回の注目ビットとして設定してから(ステップS206)、ステップS203に戻る。
【0123】
また、最終ビットである場合(ステップS205のYESルート)、圧縮データを全て取り込んだか否かを判断し(ステップS229)、未処理の圧縮データが残っている場合(ステップS229のNOルート)、ステップS201に戻って次の1バイト分の圧縮データを取り込む一方、全ての圧縮データに対する処理を終了した場合(ステップS229のYESルート)、処理を終了する。
【0124】
ステップS203で注目ビットが0であると判断された場合(YESルート)、注目ビットが存在する1バイト中での、この注目ビットの位置から右側に、いくつ白(0)が連続しているかを、第1テーブルW[8][256]を使用して求める(ステップS207)。この後、その1バイト中での注目ビットの位置とステップS207で求められた連続白数とを加算した値が8か否かを判断し(ステップS208)、8ではないと場合(ステップS208のNOルート)、ステップS208で求められた連続白数に1を加算した値を、注目ビットの位置から連続する0の数として求め、その数に応じて符号化モードを以下のように認識する(ステップS209)。
【0125】
連続0数が2である場合(ステップS209の“2”ルート)、符号化モードは水平モードであると認識される(ステップS210)。
連続0数が3である場合(ステップS209の“3”ルート)、符号化モードはパスモードであると認識される(ステップS211)。
【0126】
連続0数が1である場合(ステップS209の“1”ルート)、第5テーブルCLR[8][256]を使用して、0の後に続く2ビットが10か11かを判断し(ステップS212)、その2ビットが10である場合(ステップS212のYESルート)、符号化モードは、記号コードVl(1)に対応する垂直モードであると認識される(ステップS213)。また、その2ビットが11である場合(ステップS212のNOルート)、符号化モードは、記号コードVr(1)に対応する垂直モードであると認識される(ステップS214)。
【0127】
連続0数が4である場合(ステップS209の“4”ルート)、第5テーブルCLR[8][256]を使用して、0の後に続く2ビットが10か11かを判断し(ステップS215)、その2ビットが10である場合(ステップS215のYESルート)、符号化モードは、記号コードVl(2)に対応する垂直モードであると認識される(ステップS216)。また、その2ビットが11である場合(ステップS215のNOルート)、符号化モードは、記号コードVr(2)に対応する垂直モードであると認識される(ステップS217)。
【0128】
連続0数が5である場合(ステップS209の“5”ルート)、第5テーブルCLR[8][256]を使用して、0の後に続く2ビットが10か11かを判断し(ステップS218)、その2ビットが10である場合(ステップS218のYESルート)、符号化モードは、記号コードVl(3)に対応する垂直モードであると認識される(ステップS219)。また、その2ビットが11である場合(ステップS218のNOルート)、符号化モードは、記号コードVr(3)に対応する垂直モードであると認識される(ステップS220)。
【0129】
一方、ステップS208で8であると判断された場合(YESルート)、次の1バイト分の圧縮データ(符号化ビットデータ)を取り込み(ステップS221)、その符号化ビットデータの先頭ビットを注目ビットとして設定する(ステップS222)。そして、第5テーブルCLR[8][256]を使用して注目ビットが0か1かを判断する(ステップS223)。
【0130】
注目ビットが1である場合(ステップS223のNOルート)、ステップS207で求められた連続白数に1を加算した値に応じて、ステップS210〜S220と同様の手順により符号化モードを認識する(ステップS224)。
また、注目ビットが0である場合(ステップS223のYESルート)、その注目ビットが存在する1バイト中での、この注目ビットの位置から右側に、いくつ白(0)が連続しているかを、第1テーブルW[8][256]を使用して求める(ステップS225)。
【0131】
そして、ステップS207で求められた連続白数とステップS225で求められた連続白数とを加算した値にさらに2を加算した値に応じ、ステップS210〜S220と同様の手順により符号化モードを認識する(ステップS226)。上述のようにして、ステップS210,S211,S213,S214,S216,S217,S219,S220,S224,S226において符号化モードを認識した後、今回認識された符号コードの最終ビットが、今回取り込まれた1バイトの最終ビットであるか否かを判断する(ステップS227)。最終ビットでない場合(ステップS227のNOルート)、今回認識された符号コードの次のビットを次回の注目ビットとして設定してから(ステップS228)、ステップS203に戻る。
【0132】
また、最終ビットである場合(ステップS227のYESルート)、圧縮データを全て取り込んだか否かを判断し(ステップS229)、未処理の圧縮データが残っている場合(ステップS229のNOルート)、ステップS201に戻って次の1バイト分の圧縮データを取り込む一方、全ての圧縮データに対する処理を終了した場合(ステップS229のYESルート)、処理を終了する。
【0133】
このように、本発明の一実施形態によれば、MMR符号化方式によって圧縮された二値データを伸長する際に、参照ライン上や復号化対象ライン上における変化画素b1,b2,a1,a2の検出処理が、第1〜第5テーブルを用いてバイト(8ビット)単位で行なわれるので、変化画素b1,b2,a1,a2を効率よく検出できるようになる。
また、圧縮データに含まれる符号コードの認識処理つまり符号化モードの認識処理が、第1テーブルおよび第5テーブルを用いてバイト(8ビット)単位で行なわれるので、その符号化モードを効率良く認識できるようになる。
【0134】
従って、変化画素の位置や符号化コードの認識処理を1ビット毎に行なっていた従来手法に比べて、本実施形態では、圧縮された二値データの伸長処理を大幅に高速化し、その伸長処理に要する時間を大幅に短縮することができる。特に、画像データが高解像度であり変化画素の間隔が大きい場合に用いると極めて有効であり、データ伸長処理時間を大幅に短縮することができる。
【0135】
〔2〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態では、参照ラインや圧縮データや復号化対象ラインを、1バイト(8ビット)で区切る場合について説明したが、本発明はこれに限定されるものではない。
【0136】
また、上述した実施形態では、MMR符号化方式により圧縮されたデータを伸長する場合について説明しているが、本発明は、MMR符号化方式に限定されるものではなく、他の符号化方式(例えばMH符号化方式)によって圧縮されたデータを伸長する場合にも同様に適用され、上述した実施形態と同様の作用効果を得ることができる。
【0137】
〔3〕付記
(付記1) 画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのデータ伸長処理方法であって、
所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを予め準備しておき、
該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り出し、
該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求め、
求められた該参照ラインにおける変化画素の位置に基づいて前記圧縮データを復号化することを特徴とする、データ伸長処理方法。
【0138】
(付記2) 前記圧縮データがMMR符号化方式によって圧縮され、
前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出し、
該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する0の数を検出し、
検出された0の数に応じた符号コードに従って、符号化モードを認識し、
認識された該符号化モードに従って前記圧縮データの復号化を行なうことを特徴とする、付記1記載のデータ伸長処理方法。
【0139】
(付記3) 前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴とする、付記2記載のデータ伸長処理方法。
【0140】
(付記4) 前記圧縮データを復号化して得られる復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出し、
該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求め、
求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いることを特徴とする、付記3記載のデータ伸長処理方法。
【0141】
(付記5) 画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのデータ伸長処理装置であって、
所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを格納する参照テーブル保持部と、
該参照ラインを成すビット列を保持する参照ライン保持部と、
前記圧縮データを成すビット列を保持する圧縮データ保持部と、
該参照ライン保持部における該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り込むとともに、該圧縮データ保持部から前記圧縮データを成すビット列を取り込み、前記圧縮データを復号化する伸長処理部と、
該伸長処理部により前記圧縮データを復号化して得られる復号化対象ラインを成すビット列を保持する復号化対象ライン保持部とをそなえ、
該伸長処理部が、
該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該参照テーブル保持部における該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求め、
求められた該参照ラインにおける変化画素の位置に基づいて前記圧縮データを復号化して該復号化対象ライン保持部に格納することを特徴とする、データ伸長処理装置。
【0142】
(付記6) 前記圧縮データがMMR符号化方式によって圧縮されたものであり、
該伸長処理部が、
前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出し、
該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する0の数を検出し、
検出された0の数に応じた符号コードに従って、符号化モードを認識し、
認識された該符号化モードに従って前記圧縮データの復号化を行なうことを特徴とする、付記5記載のデータ伸長処理装置。
【0143】
(付記7) 該伸長処理部が、前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴とする、付記6記載のデータ伸長処理装置。
【0144】
(付記8) 該伸長処理部が、
該復号化対象ライン保持部における該復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出し、
該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該参照テーブル保持部における該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求め、
求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いることを特徴とする、付記7記載のデータ伸長処理装置。
【0145】
(付記9) 画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのデータ伸長処理装置として、コンピュータを機能させるデータ伸長処理プログラムであって、
所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを有するとともに、
該コンピュータに、
該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り出させ、
該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出させ、
該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求めさせ、
求められた該参照ラインにおける変化画素の位置に基づいて前記圧縮データを復号化させることを特徴とする、データ伸長処理プログラム。
【0146】
(付記10) 前記圧縮データがMMR符号化方式によって圧縮されたものであり、
該コンピュータに、
前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出させ、
該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する0の数を検出させ、
検出された0の数に応じた符号コードに従って、符号化モードを認識させ、
認識された該符号化モードに従って前記圧縮データを復号化させることを特徴とする、付記9記載のデータ伸長処理プログラム。
【0147】
(付記11) 前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴とする、付記10記載のデータ伸長処理プログラム。
【0148】
(付記12) 該コンピュータに、
該復号化対象ライン保持部における該復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出させ、
該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出させ、
該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求めさせ、
求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いることを特徴とする、付記11記載のデータ伸長処理プログラム。
【0149】
(付記13) 画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのデータ伸長処理装置として、コンピュータを機能させるデータ伸長処理プログラムを格納したコンピュータ読取可能な記録媒体であって、
該データ伸長処理プログラムが、
所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを有するとともに、
該コンピュータに、
該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り出させ、
該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出させ、
該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求めさせ、
求められた該参照ラインにおける変化画素の位置に基づいて前記圧縮データを復号化させることを特徴とする、データ伸長処理プログラムを格納したコンピュータ読取可能な記録媒体。
【0150】
(付記14) 前記圧縮データがMMR符号化方式によって圧縮されたものであり、
該データ伸長処理プログラムが、該コンピュータに、
前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出させ、
該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する0の数を検出させ、
検出された0の数に応じた符号コードに従って、符号化モードを認識させ、
認識された該符号化モードに従って前記圧縮データを復号化させることを特徴とする、付記13記載のデータ伸長処理プログラムを格納したコンピュータ読取可能な記録媒体。
【0151】
(付記15) 該データ伸長処理プログラムが、前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴とする、付記14記載のデータ伸長処理プログラムを格納したコンピュータ読取可能な記録媒体。
【0152】
(付記16) 該データ伸長処理プログラムが、該コンピュータに、
該復号化対象ライン保持部における該復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出させ、
該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出させ、
該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求めさせ、
求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いることを特徴とする、付記15記載のデータ伸長処理プログラムを格納したコンピュータ読取可能な記録媒体。
【0153】
【発明の効果】
以上詳述したように、本発明によれば、MMR符号化方式によって圧縮された二値データを伸長する際に、参照ライン上や復号化対象ライン上における変化画素の検出処理が、テーブルを用いて所定ビット数(例えば1バイトつまり8ビット)単位で行なわれるので、変化画素を効率よく検出できるようになる。また、符号化モード(符号コード)の認識処理が、テーブルを用いて所定ビット数(例えば1バイトつまり8ビット)単位で行なわれるので、その符号化モードを効率良く認識できるようになる。
【0154】
従って、圧縮された二値データの伸長処理を大幅に高速化し、その伸長処理に要する時間を大幅に短縮することができる。特に、本発明は、画像データが高解像度であり変化画素の間隔が大きい場合に用いると極めて有効であり、データ伸長処理時間を大幅に短縮することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態としてのデータ伸長処理装置の構成を示すブロック図である。
【図2】1バイトのビット列中でxビット目の画素よりも右側に連続して存在する白画素の数をビットパターン毎に与える第1テーブルの一部を示す図である。
【図3】1バイトのビット列中でxビット目の画素よりも右側に連続して存在する黒画素の数をビットパターン毎に与える第2テーブルの一部を示す図である。
【図4】1バイトのビット列中で左側から見て最初に現われる白画素の位置をビットパターン毎に与える第3テーブルの一部と、1バイトのビット列中で左側から見て最初に現われる黒画素の位置をビットパターン毎に与える第4テーブルの一部とを示す図である。
【図5】1バイトのビット列中でxビット目の画素の色をビットパターン毎に与える第5テーブルの一部を示す図である。
【図6】図1に示す装置による復号化手順(伸長処理手順)を説明するためのフローチャートである。
【図7】図6のステップS62での変化画素b1の検出手順を説明するためのフローチャートである。
【図8】図6のステップS55での変化画素b2の検出手順を説明するためのフローチャートである。
【図9】図7および図8のステップS73での詳細処理手順を説明するためのフローチャートである。
【図10】図7および図8のステップS74での詳細処理手順を説明するためのフローチャートである。
【図11】図7および図8のステップS75での詳細処理手順を説明するためのフローチャートである。
【図12】図7および図8のステップS77での詳細処理手順を説明するためのフローチャートである。
【図13】図7および図8のステップS78での詳細処理手順を説明するためのフローチャートである。
【図14】図7および図8のステップS79での詳細処理手順を説明するためのフローチャートである。
【図15】図8のステップS80での詳細処理手順を説明するためのフローチャートである。
【図16】図8のステップS81での詳細処理手順を説明するためのフローチャートである。
【図17】図6のステップS60での変化画素a2の検出手順を説明するためのフローチャートである。
【図18】図17のステップS92での詳細処理手順を説明するためのフローチャートである。
【図19】図17のステップS93での詳細処理手順を説明するためのフローチャートである。
【図20】図17のステップS94での詳細処理手順を説明するためのフローチャートである。
【図21】図17のステップS95での詳細処理手順を説明するためのフローチャートである。
【図22】本実施形態による復号化(伸長処理)を説明すべく画素列の具体例を示す図である。
【図23】本実施形態による復号化(伸長処理)を説明すべく画素列の具体例を示す図である。
【図24】本実施形態による復号化(伸長処理)を説明すべく画素列の具体例を示す図である。
【図25】本実施形態による復号化(伸長処理)を説明すべく画素列の具体例を示す図である。
【図26】図6のステップS54での符号化モードの認識・選択手順を説明するためのフローチャートである。
【図27】MMR符号化方式によるデータ圧縮処理を実行する、一般的なデータ圧縮処理装置の構成を示すブロック図である。
【図28】一般的なMMR符号化を説明すべく画素列の具体例を示す図である。
【図29】一般的なMMR符号化(パスモード)を説明すべく画素列の具体例を示す図である。
【図30】一般的なMMR符号化(垂直モード)を説明すべく画素列の具体例を示す図である。
【図31】一般的なMMR符号化(水平モード)を説明すべく画素列の具体例を示す図である。
【図32】図27に示す装置によるMMR符号化手順(圧縮処理手順)を説明するためのフローチャートである。
【図33】MMR符号化方式によって圧縮されたデータの伸長処理(復号化処理)を実行する、一般的なデータ伸長処理装置の構成を示すブロック図である。
【図34】図33に示す装置による復号化手順(伸長処理手順)を説明するためのフローチャートである。
【図35】画像データが高解像度である場合における参照ラインの画素列の具体例を示す図である。
【符号の説明】
21 データ伸長処理装置
22 伸長前データ記憶部
23 伸長後データ記憶部
24 入力バッファ(圧縮データ保持部)
25 伸長処理部
26 出力バッファ(参照ライン保持部,復号化対象ライン保持部)
27 参照テーブル保持部
Claims (4)
- MMR〔 Modified Modified READ (Relative Element Address Designate) 〕符号化方式により、画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのデータ伸長処理方法であって、
所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを予め準備しておき、
該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り出し、
該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求める一方、
前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出し、
該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する0の数を検出し、検出された0の数に応じて該符号化ビットデータを符号コードに分離し、
分離された符号コードに従って、符号化モードを認識し、
求められた該参照ラインにおける変化画素の位置、および、認識された該符号化モードに従って前記圧縮データを復号化するとともに、
前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴とする、データ伸長処理方法。 - 前記圧縮データを復号化して得られる復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出し、
該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求め、
求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いることを特徴とする、請求項1記載のデータ伸長処理方法。 - MMR〔 Modified Modified READ (Relative Element Address Designate) 〕符号化方式により、画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのデータ伸長処理装置であって、
所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを格納する参照テーブル保持部と、
該参照ラインを成すビット列を保持する参照ライン保持部と、
前記圧縮データを成すビット列を保持する圧縮データ保持部と、
該参照ライン保持部における該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り込むとともに、該圧縮データ保持部から前記圧縮データを成すビット列を取り込み、前記圧縮データを復号化する伸長処理部と、
該伸長処理部により前記圧縮データを復号化して得られる復号化対象ラインを成すビット列を保持する復号化対象ライン保持部とをそなえ、
該伸長処理部が、
該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求める一方、
前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出し、
該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する0の数を検出し、検出された0の数に応じて該符号化ビットデータを符号コードに分離し、
分離された符号コードに従って、符号化モードを認識し、
求められた該参照ラインにおける変化画素の位置、および、認識された該符号化モードに従って前記圧縮データを復号化して該復号化対象ライン保持部に格納するとともに、
前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴とする、データ伸長処理装置。 - 該伸長処理部が、
該復号化対象ライン保持部における該復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出し、
該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該参照テーブル保持部における該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に1を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求め、
求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いることを特徴とする、請求項3記載のデータ伸長処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001341724A JP3854849B2 (ja) | 2001-11-07 | 2001-11-07 | データ伸長処理方法およびデータ伸長処理装置 |
US10/105,208 US6912320B2 (en) | 2001-11-07 | 2002-03-26 | Data decompressing method, data decompressing unit, and computer-readable storage medium storing data decompressing program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001341724A JP3854849B2 (ja) | 2001-11-07 | 2001-11-07 | データ伸長処理方法およびデータ伸長処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003143416A JP2003143416A (ja) | 2003-05-16 |
JP3854849B2 true JP3854849B2 (ja) | 2006-12-06 |
Family
ID=19155703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001341724A Expired - Fee Related JP3854849B2 (ja) | 2001-11-07 | 2001-11-07 | データ伸長処理方法およびデータ伸長処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6912320B2 (ja) |
JP (1) | JP3854849B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100524076B1 (ko) * | 2003-11-13 | 2005-10-26 | 삼성전자주식회사 | 데이터 압축 및 복원 장치 |
KR100648258B1 (ko) * | 2004-08-02 | 2006-11-23 | 삼성전자주식회사 | 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더 |
JP6021498B2 (ja) * | 2012-08-01 | 2016-11-09 | 任天堂株式会社 | データ圧縮装置、データ圧縮プログラム、データ圧縮システム、データ圧縮方法、データ伸張装置、データ圧縮伸張システム、および圧縮データのデータ構造 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US31080A (en) * | 1861-01-08 | Improvement in stopping and starting cars | ||
US3737852A (en) * | 1971-03-08 | 1973-06-05 | Ibm | Pattern recognition systems using associative memories |
US4811407A (en) * | 1986-01-22 | 1989-03-07 | Cablesoft, Inc. | Method and apparatus for converting analog video character signals into computer recognizable binary data |
JP3453452B2 (ja) | 1995-05-19 | 2003-10-06 | キヤノン株式会社 | 復号化装置 |
JP3904370B2 (ja) | 2000-04-12 | 2007-04-11 | 富士通株式会社 | データ圧縮処理方法及びその装置 |
-
2001
- 2001-11-07 JP JP2001341724A patent/JP3854849B2/ja not_active Expired - Fee Related
-
2002
- 2002-03-26 US US10/105,208 patent/US6912320B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6912320B2 (en) | 2005-06-28 |
JP2003143416A (ja) | 2003-05-16 |
US20030086125A1 (en) | 2003-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1388814B1 (en) | Clustering of a document image | |
AU632333B2 (en) | Method and apparatus for processing digital data | |
US6879727B2 (en) | Decoding bit-plane-encoded data using different image quality for display | |
US8411955B2 (en) | Image processing apparatus, image processing method and computer-readable medium | |
JP4689545B2 (ja) | データ圧縮装置およびデータ圧縮プログラム | |
US6327383B2 (en) | Multi-color image encoding apparatus and method, multi-color image decoding apparatus and method | |
JP3872217B2 (ja) | ディザ画像の2値表現処理方法、ディザ画像の圧縮2値表現圧縮解除方法、及びディザ画像の圧縮及び圧縮解除システム | |
KR20020058238A (ko) | 하드 카피 장치용 데이타 압축 및 복원 방법들 및 장치들 | |
JP3854849B2 (ja) | データ伸長処理方法およびデータ伸長処理装置 | |
US5264942A (en) | Image processing system using run-length encoding of filtered data and its repetition count | |
JP3901514B2 (ja) | 画像圧縮方法、その復元方法及びそのプログラム | |
JP2003189109A (ja) | 画像処理装置及び方法、並びにコンピュータ・プログラム | |
US20060045341A1 (en) | Apparatus and method for high-speed character recognition | |
JP3866568B2 (ja) | 画像圧縮方法 | |
US6339659B1 (en) | Fractal coding/decoding of picture data using memory capacity information | |
US6219445B1 (en) | Multi-color image encoding and/or decoding apparatus containing color order table and the method thereof | |
JP4328363B2 (ja) | 画像圧縮装置、画像圧縮プログラムおよび画像伸張装置 | |
JP2005252531A (ja) | データ圧縮装置およびデータ圧縮プログラム | |
US20010031080A1 (en) | Data compression processing method and apparatus | |
WO2006022741A1 (en) | Image compression usable with animated images | |
JPH0965147A (ja) | 画像信号圧縮方法及び装置,画像信号復元方法及び装置,画像信号圧縮・復元方法及び装置,並びにプリンタ装置 | |
JP2008199249A (ja) | 画像処理装置、画像符号化装置、画像処理プログラム及び画像符号化プログラム | |
Shamim et al. | Asymmetric binary tree coding for contour images | |
JPH0541805A (ja) | 画像データ圧縮方法およびその装置 | |
JPS63132573A (ja) | 中間調画像符号化回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040524 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060327 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060404 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060605 |
|
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: 20060905 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060911 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3854849 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090915 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100915 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100915 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110915 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120915 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120915 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130915 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |