(57)【特許請求の範囲】
【請求項１】
ＭＭＲ〔Modified Modified READ (Relative Element Address Designate)〕符号化方式により、画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのデータ伸長処理方法であって、
所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを予め準備しておき、
該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り出し、
該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求める一方、
前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出し、
該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する０の数を検出し、検出された０の数に応じて該符号化ビットデータを符号コードに分離し、
分離された符号コードに従って、符号化モードを認識し、
求められた該参照ラインにおける変化画素の位置、および、認識された該符号化モードに従って前記圧縮データを復号化するとともに、
前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴とする、データ伸長処理方法。
【請求項２】
前記圧縮データを復号化して得られる復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出し、
該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求め、
求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いることを特徴とする、請求項１記載のデータ伸長処理方法。
【請求項３】
ＭＭＲ〔Modified Modified READ (Relative Element Address Designate)〕符号化方式により、画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのデータ伸長処理装置であって、
所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを格納する参照テーブル保持部と、
該参照ラインを成すビット列を保持する参照ライン保持部と、
前記圧縮データを成すビット列を保持する圧縮データ保持部と、
該参照ライン保持部における該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り込むとともに、該圧縮データ保持部から前記圧縮データを成すビット列を取り込み、前記圧縮データを復号化する伸長処理部と、
該伸長処理部により前記圧縮データを復号化して得られる復号化対象ラインを成すビット列を保持する復号化対象ライン保持部とをそなえ、
該伸長処理部が、
該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求める一方、
前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出し、
該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する０の数を検出し、検出された０の数に応じて該符号化ビットデータを符号コードに分離し、
分離された符号コードに従って、符号化モードを認識し、
求められた該参照ラインにおける変化画素の位置、および、認識された該符号化モードに従って前記圧縮データを復号化して該復号化対象ライン保持部に格納するとともに、
前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴とする、データ伸長処理装置。
【請求項４】
該伸長処理部が、
該復号化対象ライン保持部における該復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出し、
該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該参照テーブル保持部における該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求め、
求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いることを特徴とする、請求項３記載のデータ伸長処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＭＭＲ〔Modified Modified READ(Relative Element Address Designate)〕符号化方式により符号化して得られた圧縮データを、復号化して伸長するための技術に関する。
【０００２】
【従来の技術】
現在、ファクシミリで取り扱うような文書などの静止画像は、基本的には白か黒の２レベルで表現された画像であり、二値化された画像データで構成されている。そして、ファクシミリで取り扱うような二値文書画像では、白画素あるいは黒画素がある程度連続して出現することが多い。
【０００３】
そこで、通常、この大量の二値化された画像データについて、ＭＭＲ符号化方式を用いて連続する白または黒が、それぞれ黒または白に変化する箇所を符号化することによってデータ圧縮処理を行なっている。
図２７は、このようなデータ圧縮処理を実行する、一般的なデータ圧縮処理装置の構成を示すブロック図である。
【０００４】
図２７に示すように、データ圧縮処理装置１の入力側には、圧縮前データ記憶部２が、そして、出力側には、圧縮後データ記憶部３が接続されている。
データ圧縮処理装置１は、入力バッファ４，圧縮処理部５，出力バッファ６および参照テーブル保持部７によって構成されている。
圧縮前データ記憶部２には、例えば、文書をファクシミリ送信するために読み込まれた二値化画像データ（圧縮前データ）が格納される。また、圧縮後データ記憶部３には、データ圧縮処理装置１で符号化された画像データ（圧縮後データ）が逐次格納される。
【０００５】
データ圧縮処理装置１内での圧縮処理は、まず、入力バッファ４に、例えば１mm当たり８ビットでサンプリングした二値化画像データを読み込み、これを圧縮処理部５に送る。圧縮処理部５では、参照テーブル保持部７に格納されているＭＨ（Modified Huffman）符号表やＭＲ〔Modified READ(Relative Element Address Designate)〕符号表を参照して、読み込まれた画像データを符号化する。符号化されたデータ（圧縮後データ）は、出力バッファ６に送られ、さらに、圧縮後データ記憶部３に格納されていく。
【０００６】
ここで、二値化画像データを符号化して圧縮する処理の概要について、図２８〜図３１および下記表１（二次元符号表）を参照しながら説明する。なお、表１は、参照テーブル保持部７にＭＲ符号表として格納されるものである。
【０００７】
【表１】
0003854849.tif 000002
【０００８】
図２８〜図３１では、圧縮前データ記憶部２から入力バッファ４に読み込まれた二値化画像データのビット配列を模式的に表わし、四角枠の一つが１ビット分の画素を示している。そして、細線枠は白画素を表わし、また、網掛けを施された太線枠は黒画素を表わしている。さらに、上段の行は、参照ラインであり、下段の行が符号化対象ラインである。参照ラインの画像データは、直前に符号化された伝送済みの画像データの行が用いられ、符号化対象ラインの画像データは、圧縮前データ記憶物２から入力バッファ４に新たに読み込まれたものである。
【０００９】
ＭＭＲ符号化方式では、符号化対象ラインにおいて、画素の白／黒の変化を図２８〜図３１中の右方向へ向かって判断し、白画素から黒画素に変化した時のその黒画素（変化画素）の位置、もしくは、黒画素から白画素に変化した時のその白画素（変化画素）の位置を符号化し、その位置と参照ラインにおける変化画素の位置との距離を符号化する。従って、符号化対象ラインについては変化画素ａ０，ａ１およびａ２の位置を検出し、参照ラインについては変化画素ｂ１およびｂ２の位置を検出する必要がある。なお、変化画素とは、その画素の色（白または黒）が同一走査線上の直前（左隣）の画素の色と異なる画素をいう。
【００１０】
ここで、符号化対象ラインにおいて、ａ０は起点変化画素として指定された画素であり、ａ１は起点変化画素ａ０よりも右側の最初の変化画素であり、ａ２は変化画素ａ１よりも右側の最初の変化画素である。符号化対象ラインの先頭においては、最初の画素の直前に置かれる仮想白画素を起点変化画素ａ０とする。また、参照ラインにおいて、ｂ０は起点変化画素ａ０の真上に位置する画素（起点変化画素）であり、ｂ１は参照ライン上の変化画素のうち起点変化画素ａ０よりも右側で起点変化画素と反対の色をもつ最初の変化画素であり、ｂ２は変化画素ｂ１よりも右側の最初の変化画素である。
【００１１】
次に、参照ラインに基づいて行なわれる符号化対象ラインの符号化の手法を説明する。その符号化は、起点変化画素ａ０と参照変化画素ａ１，ａ２，ｂ１およびｂ２との位置関係に応じて、パスモード，垂直モード，水平モードに分けて行なわれる。
パスモードは、変化画素ｂ２が変化画素ａ１よりも左側にある場合に選択されるモードである。このパスモードでは、起点変化画素ａ０の位置を変化画素ｂ２の真下に移す。この場合の符号化は、表１に示すように、記号コードＰ（符号コード０００１）として行なわれる。
【００１２】
図２８では、直前の符号化をパスモードで行ない起点変化画素ａ０の位置を前回の符号化時の変化画素ｂ２の位置に移した直後の状態が示されている。また、パスモードによる符号化の具体例を図２９に示す。この図２９に示す例では、今回の符号化開始時点で変化画素ｂ２が変化画素ａ１よりも左側にあるので、今回の符号化（変化画素ｂ１，ｂ２を対象とする符号化）がパスモードで行なわれる。つまり、パスモードの符号コード０００１を出力バッファ６に伝送する。この後、変化画素ｂ２の真下の画素を次回の符号化時の起点変化画素ａ０として設定する。
【００１３】
垂直モードは、変化画素ｂ２が変化画素ａ１と同じ位置もしくは変化画素ａ１よりも右側にあり、且つ、変化画素ａ１と変化画素ｂ１との相対距離｜ａ１ｂ１｜が３画素以下である場合に選択されるモードである。このとき、相対距離｜ａ１ｂ１｜を、表１に示すごとく、７つの記号コードＶ(0)，Ｖr(1)，Ｖr(2)，Ｖr(3)，Ｖl(1)，Ｖl(2)，Ｖl(3)で表わされる７つの値（符号コード“１”，“０１１”，“００００１１”，“０００００１１”，“０１０”，“００００１０”，“０００００１０”）のいずれか一つに対応させるようにして、変化画素ａ１を対象とした符号化が行なわれ、符号化後、次回の符号化時の起点変化画素ａ０は、今回の符号化時の変化画素ａ１の位置に設定される。なお、記号コードにおける文字“ｒ”は変化画素ａ１が変化画素ｂ１の右側にあることを示し、記号コードにおける文字“ｌ”は変化画素ａ１が変化画素ｂ１の左側にあることを示し、()内の数字は距離の値（画素数）を示している。
【００１４】
図２８に示す例では、変化画素ｂ２が変化画素ａ１よりも右側にあり且つ変化画素ａ１が変化画素ｂ１の左側にあり且つ相対距離｜ａ１ｂ１｜が１画素であるので、垂直モードで符号化が行なわれ、記号コードＶl(1)に対応する符号コード０１０が出力バッファ６に伝送される。この後、今回の符号化時の変化画素ａ１が次回の符号化時の起点変化画素ａ０として設定されるほか、今回の符号化時の変化画素ａ２，ｂ２がそれぞれ次回の符号化時の変化画素ａ１，ｂ１として設定される。このように変化画素ａ０，ａ１，ｂ１を設定すると、図３１に示すように、変化画素ｂ２が変化画素ａ１よりも右側にあり相対距離｜ａ１ｂ１｜が０となるので、次回の符号化でも垂直モードで符号化が行なわれ、記号コードＶ(0)に対応する符号コード１が出力バッファ６に伝送される。
【００１５】
垂直モードによる符号化の他の具体例を図３０に示す。この図３０に示す例では、変化画素ｂ２が変化画素ａ１よりも右側にあり且つ変化画素ａ１が変化画素ｂ１の右側にあり且つ相対距離｜ａ１ｂ１｜が２画素であるので、垂直モードで符号化が行なわれ、記号コードＶr(2)に対応する符号コード００００１１が出力バッファ６に伝送される。
【００１６】
一方、水平モードは、例えば図３１に示すごとく、変化画素ｂ２が変化画素ａ１と同じ位置もしくは変化画素ａ１よりも右側にあり、且つ、変化画素ａ１と変化画素ｂ１との相対距離｜ａ１ｂ１｜が３画素よりも大きい場合（図３１では４画素）に選択されるモードである。このとき、表１に示すごとく、変化画素ａ０から変化画素ａ１までの距離ａ０ａ１と、変化画素ａ１から変化画素ａ２までの距離ａ１ａ２とを得た後、これらの距離ａ０ａ１および距離ａ１ａ２に応じた値Ｍ（ａ０ａ１）およびＭ（ａ１ａ２）をそれぞれ参照テーブル保持部７のＭＨ符号表から読み出し、符号コード００１＋Ｍ（ａ０ａ１）＋Ｍ（ａ１ａ２）によって、変化画素ａ０，ａ１，ａ２を対象とした符号化が行なわれる。このときの記号コードはＨとなっている。符号化後、次回の符号化時の起点変化画素ａ０は、今回の符号化時の変化画素ａ２の位置に設定される。
【００１７】
水平モードによる符号化の具体例を図３１に示す。この図３１に示す例では、変化画素ｂ２が変化画素ａ１よりも右側にあり且つ相対距離｜ａ１ｂ１｜が４画素であるので、水平モードで符号化が行なわれる。つまり、ａ０ａ１＝８，ａ１ａ２＝４であるので、記号コードＨに対応する符号コード００１＋Ｍ（８）＋Ｍ（４）が出力バッファ６に伝送され、変化画素ａ２が次回の起点起点変化画素ａ０となる。
【００１８】
このようにして、図２８に示される画像データは、“…０００１０１０１…”のように符号化される。つまり、符号化対象ライン上の画素の位置と参照ライン上の画素の位置および距離とを関係付けて、画像データの符号化が行なわれる。
【００１９】
上述のような符号化の手順（圧縮処理部５の動作）を、図３２に示すフローチャート（ステップＳ１１〜Ｓ２８）に従ってまとめて説明すると、符号化処理の開始時には、参照ラインとして、全てが白画素のライン（白ライン）を想定し（ステップＳ１１）、最初の符号化対象ラインをセットするとともに（ステップＳ１２）、起点変化画素ａ０を最初の画素の直前に仮想白画素として置く（ステップＳ１３）。
【００２０】
この後、変化画素ａ１，ｂ１およびｂ２を検出してから（ステップＳ１４〜Ｓ１６）、変化画素ｂ２が変化画素ａ１の左側にあるか否かを判断する（ステップＳ１７）。左側にある場合（ステップＳ１７のＹＥＳルート）、上述したパスモード符号化を行ない（ステップＳ１８）、変化画素ｂ２の真下の画素を次回の起点変化画素ａ０として設定する（ステップＳ１９）。
【００２１】
また、変化画素ｂ２が変化画素ａ１と同じ位置もしくは変化画素ａ１よりも右側にある場合（ステップＳ１７のＮＯルート）、相対距離｜ａ１ｂ１｜が３画素以下か否かを判断する（ステップＳ２０）。
相対距離｜ａ１ｂ１｜が３画素以下である場合（ステップＳ２０のＹＥＳルート）、上述した垂直モード符号化を行ない（ステップＳ２１）、今回の符号化時の変化画素ａ１を次回の起点変化画素ａ０として設定する（ステップＳ２２）。
【００２２】
一方、相対距離｜ａ１ｂ１｜が４画素以上である場合（ステップＳ２０のＮＯルート）、変化画素ａ２を検出してから（ステップＳ２３）、上述した水平モード符号化を行ない（ステップＳ２４）、今回の符号化時の変化画素ａ２を次回の起点変化画素ａ０として設定する（ステップＳ２５）。
そして、符号化対象ラインの最後まで符号化処理を実行したか否か、つまり符号化対象位置がＥＯＬ（End Of Line）に達したか否かが判断され（ステップＳ２６）、ＥＯＬに達していなければ（ステップＳ２６のＮＯルート）、ステップＳ１４に戻り、上述したステップＳ１４〜Ｓ２６の処理を繰り返し実行する。
【００２３】
ＥＯＬに達した場合（ステップＳ２６のＹＥＳルート）、符号化対象の画像データにおける最後まで符号化処理を実行したか否か、つまり符号化対象位置がＥＯＤ（End Of Data）に達したか否かが判断され（ステップＳ２７）、ＥＯＤに達していなければ（ステップＳ２７のＮＯルート）、ステップＳ１２に戻り、上述したステップＳ１２〜Ｓ２７の処理を繰り返し実行する。このとき、ステップＳ１２では、次の符号化対象ラインを抽出するとともに、前回の符号化対象ラインをそのまま参照ラインとして設定する。また、ＥＯＤに達した場合（ステップＳ２７のＹＥＳルート）、処理を終了する。
【００２４】
上述のように圧縮された画像データを伸長する際には、各ライン（復号化対象ライン）の符号化データが順次先頭から読み出され、モードを認識しながらそのモードに応じた復号化処理が実行される。
図３３は、このような復号化処理を実行する、一般的なデータ伸長処理装置の構成を示すブロック図である。
【００２５】
図３３に示すように、データ伸長処理装置１１の入力側には、伸長前データ記憶部１２が、そして、出力側には、伸長後データ記憶部１３が接続されている。データ伸長処理装置１１は、入力バッファ１４，伸長処理部１５，出力バッファ１６および参照テーブル保持部１７によって構成されている。
伸長前データ記憶部１２には、上述のようなデータ圧縮処理装置１によって符号化された画像データ（圧縮後データ、つまり伸長前データ）が格納される。また、伸長後データ記憶部１３には、データ伸長処理装置１１で復号化された画像データ（伸長後データ）が逐次格納される。
【００２６】
データ伸長処理装置１１内での伸長処理は、まず、入力バッファ１４に、伸長前データを読み込み、これを伸長処理部１５に送る。伸長処理部１５では、読み込まれたデータの符号コードによりモードを認識し、参照テーブル保持部１７に格納されているＭＨ符号表やＭＲ符号表（表１の二次元符号表参照）を参照し、認識されたモードに従って、読み込まれたデータを復号化する。復号化されたデータ（伸長後データ）は、出力バッファ１６に送られ、さらに、伸長後データ記憶物１３に格納されていく。
【００２７】
ここで、伸長処理部１５での復号化の手順を図３４に示すフローチャート（ステップＳ３１〜Ｓ４７）に従って説明すると、復号化処理の開始時には、参照ラインとして、全てが白画素のライン（白ライン）を想定し（ステップＳ３１）、最初の復号化対象ラインをセットするとともに（ステップＳ３２）、起点変化画素ａ０，ｂ０を最初の画素の直前に仮想白画素として置く（ステップＳ３３）。
【００２８】
復号化対象ラインの符号化データが順次先頭から読み出され、読み出された符号化データ中の符号コードと参照テーブル保持部１７に格納された二次元符号表（表１参照）とによりモードが認識される（ステップＳ３４）。
【００２９】
ステップＳ３４において、モードとして、符号コード０００１のパスモードが認識された場合（“パス”ルート）、まず、参照ライン上において起点変化画素ｂ０に対する変化画素ｂ２を検出する（ステップＳ３５）。変化画素ｂ２が検出されると、復号化対象ライン上において、起点変化画素ａ０の色を変化画素ｂ２の位置までセットすることにより、パスモードに応じた復号化処理が実行される（ステップＳ３６）。この後、復号化対象ライン上で、変化画素ｂ２の真下の位置における画素を次回の起点変化画素ａ０として設定する（ステップＳ３７）。そして、次回の起点変化画素ａ０の色を、変化画素ｂ２の色に設定する（ステップＳ３８）。
【００３０】
ステップＳ３４において、モードとして、符号コード００１の水平モードが認識された場合（“水平”ルート）、符号コード００１に後続するＭ（ａ０ａ１）＋Ｍ（ａ１ａ２）と参照テーブル保持部１７に格納されたＭＨ符号表とにより一次元の復号化処理が実行される（ステップＳ３９）。この後、復号化対象ライン上で、変化画素ａ２を検出し、その変化画素ａ２を次回の起点変化画素ａ０として設定する（ステップＳ４０）。そして、次回の起点変化画素ａ０の色として、前回の起点変化画素ａ０をそのまま用いる（ステップＳ４１）。
【００３１】
ステップＳ３４において、モードとして垂直モードが認識された場合（“垂直”ルート）、まず、参照ライン上において起点変化画素ｂ０に対する変化画素ｂ１を検出する（ステップＳ４２）。変化画素ｂ１が検出されると、符号コードに応じた復号化処理が実行される（ステップＳ４３）。つまり、符号コードが１である場合〔記号コードＶ(0)〕、起点変化画素ａ０の色を、変化画素ｂ１の直前位置の画素までセットする。また、符号コードが記号コードＶx(n)（ｘ＝ｒ，ｌ；ｎ＝１，２，３）に対応するものである場合、起点変化画素ａ０の色を、変化画素ｂ１のｘ側（ｘ＝ｒの場合、右側；ｘ＝ｌの場合、左側）のｎ個目の画素の直前位置の画素までセットする。この後、復号化対象ライン上で、変化画素ａ１を次回の起点変化画素ａ０として設定する（ステップＳ４４）。そして、次回の起点変化画素ａ０の色として、前回の起点変化画素ａ０の色を反転したものを用いる（ステップＳ４５）。
【００３２】
ステップＳ３８，Ｓ４１もしくはＳ４５の処理を終了すると、復号化対象ライン（このラインに対応する復号化データ）の最後まで復号化処理を実行したか否か、つまり復号化対象位置がＥＯＬ（End Of Line）に達したか否かが判断され（ステップＳ４６）、ＥＯＬに達していなければ（ステップＳ４６のＮＯルート）、ステップＳ３４に戻り、上述したステップＳ３４〜Ｓ４６の処理を繰り返し実行する。
【００３３】
ＥＯＬに達した場合（ステップＳ４６のＹＥＳルート）、復号化対象の画像データにおける最後まで復号化処理を実行したか否か、つまり復号化対象位置がＥＯＤ（End Of Data）に達したか否かが判断され（ステップＳ４７）、ＥＯＤに達しいなければ（ステップＳ４７のＮＯルート）、ステップＳ３２に戻り、上述したステップＳ３２〜Ｓ４７の処理を繰り返し実行する。このとき、ステップＳ３２では、次の復号化対象ラインを設定し、そのラインに対応する符号化データを読み出すとともに、前回の復号化対象ラインをそのまま参照ラインとして設定する。また、ＥＯＤに達した場合（ステップＳ４７のＹＥＳルート）、処理を終了する。
【００３４】
【発明が解決しようとする課題】
本発明の解決しようとする課題は、特に、上述のようなＭＭＲ符号化方式により符号化して得られた圧縮データを、図３４により説明した手順で復号化して伸長する場合に着目した時に生じるものである。
画像データが高解像度のものになると、例えば、図３５に示されるように、参照ライン上の起点変化画素ｂ０から変化画素ｂ１までの距離（あるいは変化画素ｂ１から変化画素ｂ２までの距離）が長く、これらの変化画素ｂ０，ｂ１，ｂ２間のビット数が多大なものとなる。
【００３５】
従来のデータ伸長処理手法では、起点変化画素ｂ０の位置から次の変化画素ｂ１が検出されるまで、ＣＰＵ等の処理部が、１ビットずつシフトさせて画素の色を判断し、変化画素ｂ１が検出されると、この変化画素ｂ１が検出されるまでのシフト回数を、起点変化画素ａ０から変化画素ｂ１までの距離として求めている（図３４のステップＳ４２参照）。
この処理手順について、図３５を参照しながら具体的に説明する。なお、この図３５においても、細線枠は白画素を表わし、網掛けを施された太線枠は黒画素を表わしている。
【００３６】
まず、起点変化画素ｂ０が位置するビットを取り出し、その色を判断する。図３５に示す例では、白画素と判断される。次に、処理部は、参照すべき画素位置を１ビット右にシフトさせ、その位置のビットを取り出し、その位置における画素の色を判断する。このような処理が、黒画素が検出されるまで繰り返し実行される。そして、黒画素が検出された位置の画素が変化画素ｂ１となる。図３５に示す例では、変化画素ｂ１の位置を検出するまでのシフト回数（画素数）は２０回であり、この回数２０が起点変化画素ｂ０と変化画素ｂ１との距離となる。
【００３７】
変化画素ｂ１を検出する際だけでなく、変化画素ｂ２を検出する場合（図３４のステップＳ３５参照）や、復号化後に起点変化画素ａ０の位置から変化画素ａ１やａ２を検出する場合（図３４のステップＳ４４やＳ４０参照）にも、上述のごとく１ビットずつシフトしながら変化画素ｂ２，ａ１，ａ２を検出することになる。
【００３８】
従って、静止画像の高解像度化に伴い、特に、参照ラインにおける変化画素ｂ０，ｂ１，ｂ２間の距離（画素数）や、水平モードで復号化されたラインにおけるａ０，ａ１，ａ２間の距離（画素数）がかなり大きくなるため、上述のようなビットシフト回数が増大し、復号化処理（伸長処理）に要する時間が多大なものとなっている。
【００３９】
また、図３４のステップＳ３４において、圧縮データ（符号化データ）中の符号コードから、符号化モードを認識する際にも、圧縮データのビットデータ中における、連続して存在する０（白画素）の数を検出する必要がある。例えば、０が３個連続する場合には、符号化モードがパスモードであると認識される。０が２個連続する場合には、符号化モードが水平モードであると認識される。０が１個連続する場合や４個連続する場合や５個連続する場合には、符号化モードが垂直モードであると認識される。このように符号化モードを認識する際に、従来、変化画素を検出する場合と同様、１ビットずつシフトしながら０の数を検出している。従って、符号化モード（符号コード）を認識する処理に時間を要し、復号化処理（伸長処理）に要する時間の増大を招いている。
【００４０】
本発明は、このような課題に鑑み創案されたもので、参照ライン上や復号化対象ライン上の変化画素を効率よく検出できるようにするとともに、符号化モード（符号コード）を効率良く認識できるようにして、ＭＭＲ方式によって圧縮された二値データの伸長処理の高速化を実現することを目的とする。
【００４１】
【課題を解決するための手段】
上記目的を達成するために、本発明のデータ伸長処理方法は、ＭＭＲ符号化方式により、画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのものであって、所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを予め準備しておき、該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り出し、該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求め、求められた該参照ラインにおける変化画素の位置に基づいて前記圧縮データを復号化することを特徴としている。
【００４２】
このとき、前記圧縮データがＭＭＲ符号化方式によって圧縮され、前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出し、該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する０の数を検出し、検出された０の数に応じて該符号化ビットデータを符号コードに分離し、分離された符号コードに従って、符号化モードを認識し、認識された該符号化モードに従って前記圧縮データの復号化を行なう。
【００４３】
また、前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いる。
【００４４】
さらに、前記圧縮データを復号化して得られる復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出し、該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求め、求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いてもよい。
【００４５】
そして、本発明のデータ伸長処理装置は、ＭＭＲ符号化方式により、画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのものであって、所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを格納する参照テーブル保持部と、該参照ラインを成すビット列を保持する参照ライン保持部と、前記圧縮データを成すビット列を保持する圧縮データ保持部と、該参照ライン保持部における該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り込むとともに、該圧縮データ保持部から前記圧縮データを成すビット列を取り込み、前記圧縮データを復号化する伸長処理部と、該伸長処理部により前記圧縮データを復号化して得られる復号化対象ラインを成すビット列を保持する復号化対象ライン保持部とをそなえ、該伸長処理部が、該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該参照テーブル保持部における該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求める一方、前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出し、該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する０の数を検出し、検出された０の数に応じて該符号化ビットデータを符号コードに分離し、分離された符号コードに従って、符号化モードを認識し、求められた該参照ラインにおける変化画素の位置、および、認識された該符号化モードに従って前記圧縮データを復号化して該復号化対象ライン保持部に格納するとともに、前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴としている。
このとき、該伸長処理部が、該復号化対象ライン保持部における該復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出し、該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該参照テーブル保持部における該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求め、求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いてもよい。
【００４６】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
〔１〕本発明の一実施形態の説明
図１は本発明の第一実施形態としてのデータ伸長処理装置の構成を示すブロック図であり、この図１に示すように、本実施形態のデータ伸長処理装置２１も、図３３に示した一般的なデータ伸長処理装置１１とほぼ同様に構成されている。このデータ伸長処理装置２１の入力側には、図３３に示す伸長前データ記憶部１２と同様の伸長前データ記憶部２２が接続されるとともに、出力側には、図３３に示す伸長後データ記憶部１３と同様の伸長後データ記憶部２３が接続されている。
【００４７】
そして、伸長前データ記憶部２２には、図３３に示す伸長前データ記憶部１２と同様に、ＭＭＲ符号化方式によって符号化された画像データ（圧縮後データ、つまり伸長前データ）が格納される。また、伸長後データ記憶部２３には、データ伸長処理装置２１で復号化された画像データ（伸長後データ）が逐次格納される。
【００４８】
データ伸長処理装置２１は、画像から取得された複数のラインからなる二値データを、ライン毎に、そのラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データ（具体的に本実施形態ではＭＭＲ符号化方式で圧縮されたデータ）を伸長するためのものであって、入力バッファ２４，伸長処理部２５，出力バッファ２６および参照テーブル保持部２７をそなえて構成されている。
【００４９】
入力バッファ２４は、図３３に示す入力バッファ１４に対応するもので、伸長前データ記憶部２２から読み出された伸長前データ（圧縮データ）を成すビット列を一時的に保持する圧縮データ保持部として機能するものである。
出力バッファ２６は、図３３に示す出力バッファ１６に対応するもので、伸長処理部２５により圧縮データを復号化して得られる復号化対象ラインを成すビット列を一時的に保持する復号化対象ライン保持部として機能するものである。この出力バッファ２６に保持されたデータは、伸長後データとして伸長後データ記憶部２３に格納されるようになっている。また、出力バッファ２６は、復号化対象ラインの一つ上のライン（隣接するライン）の復号結果を、参照ラインのビット列として保持する参照ライン保持部としての機能も果たしている。
【００５０】
参照テーブル保持部２７は、図３３に示す参照テーブル保持部１７に対応するものであるが、本実施形態では、上述と同様のＭＲ符号化表（表１に示す二次元符号化表）やＭＨ符号化表を保持するほか、図２〜図５を参照しながら後述するような５種類のテーブル（第１〜第５テーブル）も保持している。特に、第１テーブルおよび第２テーブルは、所定ビット数（本実施形態では１バイト、８ビット分）のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルである。
【００５１】
伸長処理部２５は、図３３に示す伸長処理部１５に対応するものであるが、本実施形態では、出力バッファ２６における参照ラインを成すビット列から、順次、参照ビットデータを所定ビット数（１バイト、８ビット分）ずつ取り込むとともに、入力バッファ２４から圧縮データを成すビット列から、順次、符号化ビットデータを所定ビット数（１バイト、８ビット分）ずつ取り込み、その圧縮データを復号化するものである。
【００５２】
そして、本実施形態の伸長処理部２５は、参照ビットデータとこの参照ビットデータ中の注目ビット（変化画素ｂ０もしくはｂ１）の位置とを用いて、参照テーブル保持部２７における第１〜第５テーブルをサーチすることにより、上記注目ビットよりも右側に連続して存在する、この注目ビットと同じ色のビットの数を検出し、この注目ビットから、右側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、参照ラインにおける変化画素ｂ１もしくはｂ２として求め、求められた変化画素ｂ１，ｂ２の位置に基づいて圧縮データを復号化して出力バッファ２６に格納するものである。
【００５３】
このとき、伸長処理部２５は、圧縮データに含まれる符号コードに従って符号化モードを認識し、認識された符号化モード（パスモード，水平モード，垂直モードのいずれか）に従って圧縮データの復号化を行なう。より具体的に、本実施形態の伸長処理部２５は、圧縮データを成すビット列から、順次、符号化ビットデータを１バイト（８ビット）ずつ取り出し、取り出された符号化ビットデータとその符号化ビットデータ中の注目ビットの位置とを用いて、参照テーブル保持２７における第１テーブルをサーチすることにより、上記注目ビットよりも右側に連続して存在する０の数を検出し、検出された０の数に応じた符号コードに従って、符号化モードを認識している。
【００５４】
また、伸長処理部２５は、圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素ａ０のビット位置に対応した、参照ラインから取り出した参照ビットデータ中におけるビット位置（つまり参照ライン上の起点変化画素ｂ０の位置）を、前記注目ビットの位置として用いる。
【００５５】
さらに、伸長処理部２５は、出力バッファ２６における復号化対象ラインを成すビット列から、順次、復号ビットデータを所定ビット数（１バイト、８ビット分）ずつ取り出し、取り出された復号ビットデータとこの復号ビットデータ中の注目ビット（変化画素ａ０もしくはａ１）の位置とを用いて、参照テーブル保持部２７における第１〜第５テーブルをサーチすることにより、上記注目ビットよりも右側に連続して存在する、この注目ビットと同じ色のビットの数を検出し、この注目ビットから、右側に、検出されたビット数に１を加算したビット数だけ離れた位置の画素を、復号化対象ラインにおける変化画素ａ２として求め、求められた変化画素ａ２を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素ａ０として用いる。
【００５６】
上述した伸長処理部２５は、専用ソフトウェア（データ伸長処理プログラム）によって実現される。
このデータ伸長処理プログラムは、例えばフレキシブルディスク，ＣＤ−ＲＯＭ等のコンピュータ読取可能な記録媒体に記録された形態で提供される。本実施形態においては、データ伸長処理装置２１の一部を成すＲＯＭ（Read Only Memory；図示省略）等に予めデータ伸長処理プログラムを格納しておき、このデータ伸長処理プログラムを、やはりデータ伸長処理装置２１の一部を成すＣＰＵ（図示省略；コンピュータ）によって読み出し実行することで、上述した伸長処理部２５としての機能が実現される。
【００５７】
このとき、データ伸長処理プログラムに、後述する第１〜第５テーブルをそなえておき、これらの第１〜第５テーブルをデータ伸長処理プログラムから参照テーブル保持部２７に読み出して使用するようにする。
なお、コンテンツ配信プログラムは、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供されてもよい。
また、上述した入力バッファ２４，出力バッファ２６および参照テーブル保持部２７は、データ伸長処理装置２１の一部を成すＲＡＭ（Random Access Memory；図示省略）やハードディスクなどの記憶装置（あるいは外付けの記憶装置）によって実現される。
【００５８】
従来のデータ伸長処理手法では、図３５を参照しながら前述した通り、変化画素ａ１，ａ２，ｂ１，ｂ２の位置を検出するに際しては、復号化対象ライン上や参照ライン上を１ビットずつシフトしながら変化画素ａ１，ａ２，ｂ１，ｂ２の探索を行なっていた。
【００５９】
これに対し、本実施形態のデータ伸長処理手法では、変化画素ａ１，ａ２，ｂ１，ｂ２の探索を１ビット毎に行なうのではなく、白（０）または黒（１）からなる画素のライン（復号化対象ラインもしくは参照ライン）を１バイト毎に区切って取り出し、１バイトのビットデータにおける白と黒のパターンつまりビットパターンを検出し、検出されたビットパターンで、参照テーブル保持部２７に用意されたビットパターンのテーブル（第１〜第５テーブル）をサーチすることにより、変化画素ａ１，ａ２，ｂ１，ｂ２の探索をバイト単位で行なうようにしている。
【００６０】
１バイトを８ビットとして、画素のラインを１バイト毎に区切った時、８画素による白または黒の配列パターンを得ることができる。このとき、白または黒による配列パターンとしては２５６通りのパターンが存在する。例えば、１画素を１ビットとし、白画素を０、黒画素を１とすると、０と１からなる８ビットのビットパターンを、２５６通り作成することができる。
【００６１】
本実施形態では、変化画素の位置を求めるために、以下のような５種類のテーブル（第１〜第５テーブル）を用意している。
その５種類のテーブルとは、
（ａ）１バイトのビット列中でｘビット目の画素（注目ビット）よりも右側に連続して存在する白画素の数をビットパターン毎に与える第１テーブルＷ[8][256]、
（ｂ）１バイトのビット列中でｘビット目の画素（注目ビット）よりも右側に連続して存在する黒画素の数をビットパターン毎に与える第２テーブルＢ[8][256]、
（ｃ）１バイトのビット列中で左側から見て最初に現われる白画素の位置をビットパターン毎に与える第３テーブルＬＷ[256]、
（ｄ）１バイトのビット列中で左側から見て最初に現われる黒画素の位置をビットパターン毎に与える第４テーブルＬＢ[256]、および、
（ｅ）１バイトのビット列中でｘビット目の画素の色（白か黒か）をビットパターン毎に与える第５テーブルＣＬＲ[8][256]である。
【００６２】
図２は、第１テーブルＷ[8][256]の一部を示すものである。８ビットの０と１の配列パターンは、全部で２５６通りあるので、第１テーブルＷ[8][256]では、図２に示すように、２５６通りのビットパターンが縦方向に配置されている。第１テーブルＷ[8][256]の横方向には、ｘビット目の画素よりも右側に連続して存在する白画素の数がビットパターンに対応して記述されている。
【００６３】
なお、第１テーブルＷ[8][256]のＮＯ．の欄には、２進数であるビットパターンを１０進数で表わした数値０〜２５５が記述されている。
また、第１テーブルＷ[8][256]では、各ビットパターンにおける８個のビットの位置を、それぞれ左から０，１，２，３，４，５，６，７として示している。つまり、あるビットパターンにおいて、左側から見て第１番目（最初）のビットは０ビット目（ｘ＝０）として指定され、第８番目（最後）のビットは７ビット目（ｘ＝７）として指定される。
【００６４】
第１テーブルＷ[8][256]中の白画素の数には、ｘビット目の画素が含まれていない。例えば、ＮＯ．０のビットパターンについて見ると、０ビット目の画素よりも右側に連続して存在する白画素の数は７（＝Ｗ[0][0]）となり、３ビット目の画素よりも右側に連続して存在する白画素の数は４（＝Ｗ[3][0]）となる。また、ＮＯ．４のビットパターンについて見ると、４ビット目の画素よりも右側に続く白画素が無いので、このときの白画素の数は０（＝Ｗ[4][4]）となり、５ビット目の画素は黒であるが、この画素よりも右側に存在する白画素が一つ存在するので、このときの白画素の数は１（＝Ｗ[5][4]）となる。
【００６５】
図３は、第２テーブルＢ[8][256]の一部を示すものである。この第２テーブルＢ[8][256]も、第１テーブルＷ[8][256]と同様な手法により作成されているが、第２テーブルＢ[8][256]の横方向には、ｘビット目の画素よりも右側に連続して存在する黒画素の数がビットパターンに対応して記述されている。この第２テーブルＢ[8][256]の見方は、第１テーブルＷ[8][256]と同様であるので、その詳細な説明は省略する。
【００６６】
図４は、第３テーブルＬＷ[256]の一部と、第４テーブルＬＢ[256]の一部とを示すものである。ここで、第３テーブルＬＷ[256]は、１バイトのビット列中で左側から見て最初に現われる白画素の位置をビットパターン毎に与えるものであり、第４テーブルＬＢ[256]は、１バイトのビット列中で左側から見て最初に現われる黒画素の位置をビットパターン毎に与えるものである。これらのテーブルＬＷ[256]およびＬＢ[256]の縦方向には、第１テーブルＷ[8][256]や第２テーブルＢ[8][256]と同様、２５６通りのビットパターンが配置されている。
【００６７】
ただし、第３テーブルＬＷ[256]および第４テーブルＬＢ[256]では、第１テーブルＷ[8][256]や第２テーブルＢ[8][256]とは異なり、各ビットパターンにおける８個のビットの位置は、それぞれ左から１，２，３，４，５，６，７，８として表わされている。つまり、第３テーブルＬＷ[256]や第４テーブルＬＢ[256]において、最初の白画素もしくは黒画素の位置が１として与えられた場合、その画素は、ビットパターンにおいて、左側から見て第１番目（最初）のビットに位置することになり、位置が８として与えられた場合、その画素は第８番目（最後）のビットに位置することになる。
【００６８】
例えば、ＮＯ．０のビットパターンについて見ると、８ビットの全てが白画素であり、第１番目のビットが白画素であるので、ＮＯ．０のビットパターンに対応する第３テーブルＬＷ[256]の値は１（＝ＬＷ[0]）となる一方、ＮＯ．０のビットパターンに対応する第４テーブルＢＷ[256]の値は、黒画素が存在しないため、０（＝ＢＷ[0]）となる。さらに、ＮＯ．４のビットパターンについて見ると、５ビット目（左から６番目）の画素のみが黒であるので、ＮＯ．４のビットパターンに対応する第３テーブルＬＷ[256]の値は１（＝ＬＷ[4]）となる一方、ＮＯ．４のビットパターンに対応する第４テーブルＬＢ[256]の値は６（＝ＢＷ[4]）となる。
【００６９】
図５は、第５テーブルＣＬＲ[8][256]の一部を示すものである。第５テーブルＣＬＲ[8][256]では、図５に示すように、２５６通りのビットパターンが縦方向に配置されるとともに、横方向には、１バイトのビット列中でｘビット目の画素の色が白（０）と黒（１）のいずれであるかが、ビットパターンに対応して記述されている。
【００７０】
例えば、ＮＯ．０のビットパターンについて見ると、８ビットの全てが白画素であるので、ＮＯ．０のビットパターンに対応する第５テーブルＣＬＲ[8][256]の値は、全てのビットで白つまり０（＝ＣＬＲ[ｘ][0]）となっている。また、ＮＯ．４のビットパターンについて見ると、５ビット目の画素のみが黒であるので、ＮＯ．４のビットパターンに対応する第５テーブルＣＬＲ[8][256]の値は、５ビット目（ｘ＝５）で１（＝ＣＬＲ[5][4]）となり、その他のビット（ｘ＝０，１，２，３，４，６，７）で０となる。
【００７１】
本実施形態では、上述のような第１〜第５テーブルを参照テーブル保持部２７に予め格納しておき、伸長処理部２５において、変化画素ａ１，ａ２，ｂ１，ｂ２の位置を検出すべく、注目ビット（注目画素）が白か黒かに応じて各テーブルを使い分ける。
【００７２】
ここで、本実施形態による変化画素の検出手法の具体的な例を、図２８や図３５を参照しながら説明する。
ます、図２８に示す参照ライン上のｂ１を検出する場合について説明する。この参照ライン上では、最初の１バイト中にｂ０とｂ１との両方が存在している。この１バイトのビットデータを見ると、そのビットパターンは１０００００１１であり、起点変化画素ａ０，ｂ０がともに白画素（０）である。
【００７３】
そこで、第１テーブルＷ[8][256]でビットパターン１０００００１１をサーチする。このビットパターン１０００００１１は、十進数で１３１であるので、第１テーブルＷ[8][256]のＮＯ．１３１を参照する。そして、図２８において起点変化画素ｂ０は１ビット目に存在しているので、第１テーブルＷ[8][256]のＮＯ．１３１の行で１ビット目の欄を参照すると、起点変化画素ｂ０が存在する１バイト中での位置から右に連続する白画素の数として、４（＝Ｗ[1][131]）が得られる（図１１のステップＳ１３１参照）。
【００７４】
起点変化画素ｂ０の１バイト中での位置は左から２番目のビットであるから、この位置と第１テーブルＷ[8][256]から得られた連続白数とを加算すると、２＋４＝６となり、変化画素ｂ１はこの１バイト中に存在することが分かる（図１１のステップＳ１３２のＮＯルート参照）。この１バイト中の左から６＋１＝７番目の画素が、白から黒に変化する変化画素ｂ１である。つまり、１バイト中で起点変化画素ｂ０の位置と連続白数とを足した位置の次の画素を変化画素ｂ１の位置とする（図１１のステップＳ１３５参照）。
なお、起点変化画素ａ０，ｂ０がともに黒画素（１）である場合には、第１テーブルＷ[8][256]ではなく、第２テーブルＢ[8][256]が参照されることになる。
【００７５】
ついで、図３５に示すように、変化画素ｂ０とｂ１とが異なるバイトに存在する時に、変化画素ｂ１の位置を求める場合について説明する。このとき、起点変化画素ａ０，ｂ０がともに白画素（０）であるものとし、起点変化画素ｂ０の位置は、最初の１バイト中の左から２番目、つまり１ビット目であるものとする。この場合、まず、最初の１バイト中の起点変化画素ｂ０よりも右側に連続して存在する白画素の数を、第１テーブルＷ[8][256]を用いて求める。最初の１バイトは、８ビットの全てが白であることから、ＮＯ．０のビットパターンであることが分かり、第１テーブルＷ[8][256]のＮＯ．０の行で１ビット目の欄を参照すると、起点変化画素ｂ０が存在する１バイト中での位置から右に連続する白画素の数として、６（＝Ｗ[1][0]）が得られる（図１１のステップＳ１３１参照）。
【００７６】
起点変化画素ｂ０の１バイト中での位置は左から２番目のビットであるから、この位置と第１テーブルＷ[8][256]から得られた連続白数とを加算すると、２＋６＝８となり、変化画素ｂ１はこの１バイト中に存在しないことが分かる（図１１のステップＳ１３３のＹＥＳルート参照）。
この後、次の１バイトについて、第４テーブルＬＢ[256]をサーチする。ところが、次の１バイトも８ビットの全てが白であることから、ＮＯ．０のビットパターンであることが分かり、第４テーブルＬＢ[256]のＮＯ．０の行の欄を参照すると、０（＝ＬＢ[0]）が得られ、この１バイト中に黒画素つまり変化画素が存在しないことが分かる。
【００７７】
そこで、さらに次の１バイトについて、第４テーブルＬＢ[256]をサーチすると、今度は、その１バイトのビットパターンが０００００１１１であり、ＮＯ．７のビットパターンであることが分かり、第４テーブルＬＢ[256]のＮＯ．７の行の欄を参照すると、６（＝ＬＢ[7]）が得られ、この１バイト中の第６番目（５ビット目）に黒画素つまり変化画素が存在していることが分かる（図１１のステップＳ１３３，Ｓ１３４参照）。
【００７８】
このようにして、白画素が連続した後に最初に黒画素が検出されるまで、参照ラインから１バイトずつビットデータが切り出され、第１テーブルＷ[8][256]および第４テーブルＬＢ[256]を用いたサーチが行なわれる。黒画素が検出されると、最初の黒画素を変化画素ｂ１とするので、この変化画素ｂ１の位置（アドレス）は、起点変化画素ｂ０の存在するバイトよりも２つ先の１バイト中の先頭から６番目となる。つまり、起点変化画素ｂ０の右側から連続する白画素の数は６＋８＋（６−１）＝１９であり、変化画素ｂ１の位置は、起点変化画素ｂ０の右側から２０番目の画素となる。本実施形態では、第４テーブルＬＢ[256]で１バイト中で最初の黒画素の位置６が得られるので、起点変化画素ｂ０に対する変化画素ｂ１の位置が、６＋８＋６＝２０として得られることになる。
【００７９】
なお、ここでも、起点変化画素ａ０，ｂ０がともに白画素（０）である場合について説明したが、起点変化画素ａ０，ｂ０がともに黒画素（１）である場合には、第１テーブルＷ[8][256]や第４テーブルＬＢ[256]ではなく、第２テーブルＢ[8][256]および第３テーブルＬＷ[256]が参照されることになる。
上述したように、本実施形態では、１バイト毎にビットパターンに従って各テーブルを参照することによって、変化画素ａ１，ａ２，ｂ１，ｂ２の位置を検出するので、従来のごとく１ビット毎に変化画素の検出を行なう場合に比較して、大幅に処理時間を短縮することができる。
【００８０】
次に、本実施形態のデータ伸長処理装置２１における伸長処理部２５による復号化手順（伸長処理手順）を、図６に示すフローチャート（ステップＳ５１〜Ｓ６７）に従って説明する。本実施形態における復号化手順も、基本的には、図３４に示した伸長処理部１５での復号化手順と同様に行なわれるものであり、図６におけるステップＳ５１〜Ｓ６７は、それぞれ図３４におけるステップＳ３１〜Ｓ４７に対応している。
【００８１】
符号化処理の開始時には、参照ラインとして、全てが白画素のライン（白ライン）を想定し（ステップＳ５１）、最初の復号化対象ラインをセットするとともに（ステップＳ５２）、起点変化画素ａ０およびｂ０を最初の画素の直前に仮想白画素として置く（ステップＳ５３）。
復号化対象ラインの符号化データ（圧縮データ）が、順次、先頭から１バイトずつ読み出され、読み出された符号化ビットデータ中の符号コードと参照テーブル保持部２７に格納された二次元符号表（表１参照）とに従って符号化モードが認識・選択される（ステップＳ５４）。
【００８２】
このとき、図２２〜図２５を参照しながら後述するごとく、符号化ビットデータと符号化ビットデータ中の注目ビットの位置とを用いて、第１テーブルＷ[8][256]および第５テーブルＣＬＲ[8][256]をサーチすることにより、注目ビットよりも右側に連続して存在する０の数が検出され、検出された０の数に応じた符号コードに従って、符号化モードが認識される。
【００８３】
例えば、注目ビットが０であることが第５テーブルＣＬＲ[8][256]によって認識され、この注目ビットよりも右側に連続して存在する０の数が０である場合には、注目ビットの位置から連続する０の数は１であると判断され、符号化モードは、記号コードＶr(1)またはＶl(1)のいずれか一方に対応する垂直モードであると認識される。そして、０に続く２つビットが１１であるか１０であるかを、第５テーブルＣＬＲ[8][256]によって認識することで、符号化モードは、記号コードＶr(1)またはＶl(1)のいずれか一方に特定され、今回認識された符号コード０１１または０１０の次のビットが次回の注目ビットとして設定される。
【００８４】
また、注目ビットが０であることが第５テーブルＣＬＲ[8][256]によって認識され、この注目ビットよりも右側に連続して存在する０の数が３である場合には、注目ビットの位置から連続する０の数は４であると判断され、符号化モードは、記号コードＶr(2)またはＶl(2)のいずれか一方に対応する垂直モードであると認識される。そして、０に続く２つビットが１１であるか１０であるかを、第５テーブルＣＬＲ[8][256]によって認識することで、符号化モードは、記号コードＶr(2)またはＶl(2)のいずれか一方に特定され、今回認識された符号コード００００１１または００００１０の次のビットが次回の注目ビットとして設定される。
【００８５】
同様に、注目ビットが０であることが第５テーブルＣＬＲ[8][256]によって認識され、この注目ビットよりも右側に連続して存在する０の数が４である場合には、注目ビットの位置から連続する０の数は５であると判断され、符号化モードは、記号コードＶr(3)またはＶl(3)のいずれか一方に対応する垂直モードであると認識される。そして、０に続く２つビットが１１であるか１０であるかを、第５テーブルＣＬＲ[8][256]によって認識することで、符号化モードは、記号コードＶr(3)またはＶl(3)のいずれか一方に特定され、今回認識された符号コード０００００１１または０００００１０の次のビットが次回の注目ビットとして設定される。
【００８６】
注目ビットが０であることが第５テーブルＣＬＲ[8][256]によって認識され、この注目ビットよりも右側に連続して存在する０の数が２である場合には、注目ビットの位置から連続する０の数は３であると判断され、符号化モードはパスモードであると認識される。そして、今回認識された符号コード０００１の次のビットが次回の注目ビットとして設定される。
【００８７】
注目ビットが０であることが第５テーブルＣＬＲ[8][256]によって認識され、この注目ビットよりも右側に連続して存在する０の数が１である場合には、注目ビットの位置から連続する０の数は２であると判断され、符号化モードは水平モードであると認識される。そして、今回認識された符号コード００１＋Ｍ（ａ０ａ１）＋Ｍ（ａ１ａ２）の次のビットが次回の注目ビットとして設定される。
【００８８】
注目ビットが１であることが第５テーブルＣＬＲ[8][256]によって認識された場合には、符号化モードは、記号コードＶ(0)に対応する垂直モードであると認識される。そして、今回認識された符号コード１の次のビットが次回の注目ビットとして設定される。
なお、上述のような符号化モードの具体的な認識・選択手順については、図２６を参照しながら後述する。
【００８９】
ステップＳ５４において、符号化モードが符号コード０００１のパスモードであると認識された場合（“パス”ルート）、まず、参照ライン上において起点変化画素ｂ０に対する変化画素ｂ２を検出する（ステップＳ５５）。このステップＳ５５での変化画素ｂ２の検出手順については、図８〜図１６を参照しながら後述する。変化画素ｂ２が検出されると、復号化対象ライン上において、起点変化画素ａ０の色を変化画素ｂ２の位置までセットすることにより、パスモードに応じた復号化処理が実行される（ステップＳ５６）。この後、復号化対象ライン上で、変化画素ｂ２の真下の位置における画素を次回の起点変化画素ａ０として設定する（ステップＳ５７）。そして、次回の起点変化画素ａ０の色を、変化画素ｂ２の色に設定する（ステップＳ５８）。
【００９０】
ステップＳ５４において、符号化モードが符号コード００１の水平モードであると認識された場合（“水平”ルート）、符号コード００１に後続するＭ（ａ０ａ１）＋Ｍ（ａ１ａ２）と参照テーブル保持部２７に格納されたＭＨ符号表とにより一次元の復号化処理が実行される（ステップＳ５９）。この後、復号化対象ライン上で、変化画素ａ２を検出し、その変化画素ａ２を次回の起点変化画素ａ０として設定する（ステップＳ６０）。なお、ステップＳ６０での変化画素ａ２の検出手順については、図１７〜図２１を参照しながら後述する。そして、次回の起点変化画素ａ０の色として、前回の起点変化画素ａ０をそのまま用いる（ステップＳ６１）。
【００９１】
ステップＳ５４において、符号化モードが垂直モードであると認識された場合（“垂直”ルート）、まず、参照ライン上において起点変化画素ｂ０に対する変化画素ｂ１を検出する（ステップＳ６２）。このステップＳ６２での変化画素ｂ１の検出手順については、図７および図９〜図１６を参照しながら後述する。変化画素ｂ１が検出されると、符号コードに応じた復号化処理が実行される（ステップＳ６３）。つまり、符号コードが１である場合〔記号コードＶ(0)〕、起点変化画素ａ０の色を、変化画素ｂ１の直前位置の画素までセットする。また、符号コードが記号コードＶx(n)（ｘ＝ｒ，ｌ；ｎ＝１，２，３）に対応するものである場合、起点変化画素ａ０の色を、変化画素ｂ１のｘ側（ｘ＝ｒの場合、右側；ｘ＝ｌの場合、左側）のｎ個目の画素の直前位置の画素までセットする。この後、復号化対象ライン上で、変化画素ａ１を次回の起点変化画素ａ０として設定する（ステップＳ６４）。そして、次回の起点変化画素ａ０の色として、前回の起点変化画素ａ０の色を反転したものを用いる（ステップＳ６５）。
【００９２】
ステップＳ５８，Ｓ６１もしくはＳ６５の処理を終了すると、復号化対象ライン（このラインに対応する復号化データ）の最後まで復号化処理を実行したか否か、つまり復号化対象位置がＥＯＬ（End Of Line）に達したか否かが判断され（ステップＳ６６）、ＥＯＬに達していなければ（ステップＳ６６のＮＯルート）、ステップＳ５４に戻り、上述したステップＳ５４〜Ｓ６６の処理を繰り返し実行する。
【００９３】
ＥＯＬに達した場合（ステップＳ６６のＹＥＳルート）、復号化対象の画像データにおける最後まで復号化処理を実行したか否か、つまり復号化対象位置がＥＯＤ（End Of Data）に達したか否かが判断され（ステップＳ６７）、ＥＯＤに達しいなければ（ステップＳ６７のＮＯルート）、ステップＳ５２に戻り、上述したステップＳ５２〜Ｓ６７の処理を繰り返し実行する。このとき、ステップＳ５２では、次の復号化対象ラインを設定し、そのラインに対応する符号化データを読み出すとともに、前回の復号化対象ラインをそのまま参照ラインとして設定する。また、ＥＯＤに達した場合（ステップＳ６７のＹＥＳルート）、処理を終了する。
【００９４】
ここで、本実施形態によるデータ伸長処理手順の具体的な例について、図２２〜図２５を参照しながら説明する。なお、図２２〜図２５は本実施形態による復号化（伸長処理）を説明すべく画素列の具体例を示す図である。これらの図２２〜図２５では、各図の上段に示すような参照データを用いて、例えば０００１０１０１０００１…という圧縮データ（符号化データ）を復号化する際の状況が順次示されている。圧縮データ０００１０１０１０００１…は、パスモード０００１＋垂直モード０１０（記号コードＶl(1)）＋垂直モード１（記号コードＶ(0)）＋パスモード０００１という４つの符号コードに分離される。
【００９５】
このとき、本実施形態において圧縮データは１バイトずつ取り込まれる。つまり、まず、圧縮データ０００１０１０１が伸長処理部２５に取り込まれる。そして、先頭のビットが注目ビットとして設定され、前述したように、図６のステップＳ５４で各符号コードに対応する符号化モードが認識される。
【００９６】
圧縮データ０００１０１０１のビットパターンは、ＮＯ．２１に対応するものであり、現在の注目ビットの位置は０ビット目であるので、第５テーブルＣＬＲ[8][256]のＮＯ．２１の行で０ビット目の欄（ＣＬＲ[0][21]）を参照すると、この０ビット目の色として白（０）が得られる。この後、第１テーブルＷ[8][256]のＮＯ．２１の行で０ビット目の欄（Ｗ[0][21]）を参照することにより、今回の注目ビット（白）よりも右側に連続して存在する０の数２が求められる。従って、注目ビットの位置から０が３個連続すると判断され、符号化モードはパスモードであると認識される。そして、今回認識された符号コード０００１の次のビット、つまり左から５番目（４ビット目）のビットが次回の注目ビットとして設定される。
【００９７】
次に設定された注目ビットの位置は４ビット目であるので、第５テーブルＣＬＲ[8][256]のＮＯ．２１の行で４ビット目の欄（ＣＬＲ[4][21]）を参照すると、この４ビット目の色として白（０）が得られる。この後、第１テーブルＷ[8][256]のＮＯ．２１の行で４ビット目の欄（Ｗ[4][21]）を参照することにより、今回の注目ビット（白）よりも右側に連続して存在する０の数１が求められる。従って、注目ビットの位置の次のビットは１であり、０の数は注目ビットの位置の一つだけであると判断され、符号化モードは、記号コードＶr(1)またはＶl(1)のいずれか一方に対応する垂直モードであると認識される。そして、この注目ビットよりも２つ目のビット（６ビット目）が０であるか１であるかを、第５テーブルＣＬＲ[8][256]によって判断する。つまり、第５テーブルＣＬＲ[8][256]のＮＯ．２１の行で６ビット目の欄（ＣＬＲ[6][21]）を参照すると、この６ビット目の色として白（０）が得られるので、最終的に、符号化モードは、記号コードＶl(1)に対応する垂直モードであると認識される。そして、今回認識された符号コード０１０の次のビット、つまり左から８番目（７ビット目）のビットが次回の注目ビットとして設定される。
【００９８】
次に設定された注目ビットの位置は７ビット目であるので、第５テーブルＣＬＲ[8][256]のＮＯ．２１の行で７ビット目の欄（ＣＬＲ[7][21]）を参照すると、この７ビット目の色として黒（１）が得られる。従って、符号化モードは、記号コードＶ(0)に対応する垂直モードであると認識される。そして、今回認識された符号コード１の次のビットが次回の注目ビットとして設定される。ここでは、この時点で１バイト分の圧縮データに対する認識処理を完了しているので、次の１バイト分の圧縮データ０００１…が読み込まれ、その１バイト分の先頭ビットが注目ビットとして設定される。そして、前述とほぼ同様にして、符号化モードがパスモードであると認識される。
【００９９】
図２２に示すように、上段の参照ラインと下段の復号化対象ラインとに対し、最初の起点変化画素ｂ０，ａ０を、それぞれ、最初の画素の直前に仮想白画素として置く。最初の符号コードが０００１であるので、符号化モードがパスモードであることが認識される。そして、図２２に示すように、起点変化画素ｂ０，ａ０がいずれも白画素であることから、図８のステップＳ７５およびＳ８０（つまり図１１および図１５に示すフローチャート）によって、参照ラインの第１バイトＢ１中の変化画素ｂ２の位置（第１バイトＢ１の左から５番目のビット）が検出され、起点変化画素ａ０の色（白）が変化画素ｂ２の位置までセットされる。この後、復号化対象ライン上で、変化画素ｂ２の真下の位置における画素が次回の起点変化画素ａ０として設定され、その起点変化画素ａ０の色が、変化画素ｂ２の色（白）に設定される。
【０１００】
２番目の符号コードは０１０であるので、符号化モードが記号コードＶl(1)の垂直モードであると認識される。そして、図２３に示すように、今回の起点変化画素ｂ０，ａ０がいずれも白画素であることから、図７のステップＳ７５（つまり図１１に示すフローチャート）によって、参照ラインの第２バイトＢ２中の変化画素ｂ１の位置（第２バイトＢ２の左から２番目のビット）が検出され、起点変化画素ａ０の色（白）が、変化画素ｂ１の左側（ｘ＝ｌ）の１個目の画素の直前位置（第１バイトＢ１の一番右側のビット）の画素までセットされる。この後、復号化対象ライン上で、変化画素ａ１（第２バイトＢ２の一番左側の画素）が次回の起点変化画素ａ０として設定されるとともに、その起点変化画素ａ０の色が、前回の起点変化画素ａ０の色（白）を反転した色、つまり黒に設定される。
【０１０１】
３番目の符号コードは１であるので、符号化モードが記号コードＶ(0)の垂直モードであると認識される。そして、図２４に示すように、今回の起点変化画素ｂ０，ａ０がそれぞれ白画素および黒画素であることから、図７のステップＳ７７およびＳ７８（つまり図１２および図１３に示すフローチャート）によって、参照ラインの第２バイトＢ２中の変化画素ｂ１の位置（第２バイトＢ２の左から５番目のビット）が検出され、起点変化画素ａ０の色（黒）が、変化画素ｂ１の直前位置（第２バイトＢ２の左から４番目のビット）の画素までセットされる。この後、復号化対象ライン上で、変化画素ａ１（第２バイトＢ２の左から５番目の画素）が次回の起点変化画素ａ０として設定されるとともに、その起点変化画素ａ０の色が、前回の起点変化画素ａ０の色（黒）を反転した色、つまり白に設定される。
【０１０２】
４番目の符号コードは０００１であるので、符号化モードがパスモードであることが認識される。そして、図２５に示すように、起点変化画素ｂ０，ａ０がいずれも白画素であることから、図８のステップＳ７５およびＳ８０（つまり図１１および図１５に示すフローチャート）によって、参照ラインの第４バイトＢ４中の変化画素ｂ２の位置（第４バイトＢ４の左から３番目のビット）が検出され、起点変化画素ａ０の色（白）が変化画素ｂ２の位置までセットされる。この後、復号化対象ライン上で、変化画素ｂ２の真下の位置における画素が次回の起点変化画素ａ０として設定され、その起点変化画素ａ０の色が、変化画素ｂ２の色（白）に設定される。
【０１０３】
さて次に、図６のステップＳ６２での変化画素ｂ１の検出手順について、図７に示すフローチャート（ステップＳ７１〜Ｓ７９）に従って説明する。
変化画素ｂ１を検出する場合、まず、復号化対象ライン上の起点変化画素ａ０の色が白か否かを判断し（ステップＳ７１）、起点変化画素ａ０の色が白である場合（ステップＳ７１のＹＥＳルート）、参照ライン上の起点変化画素ｂ０の色が黒か否かを判断する（ステップＳ７２）。
【０１０４】
起点変化画素ｂ０の色が黒である場合（ステップＳ７２のＹＥＳルート）、図９を参照しながら後述する手順で、起点変化画素ｂ０から右側で最初に現われる白画素の位置を求めてから（ステップＳ７３）、ステップＳ７３で求められた白画素の位置に基づき、図１０を参照しながら後述する手順で、変化画素（黒画素）ｂ１の位置を求める（ステップＳ７４）。また、起点変化画素ｂ０の色が白である場合（ステップＳ７２のＮＯルート）、図１１を参照しながら後述する手順で、変化画素（黒画素）ｂ１の位置を求める（ステップＳ７５）。
【０１０５】
起点変化画素ａ０の色が黒である場合（ステップＳ７１のＮＯルート）、参照ライン上の起点変化画素ｂ０の色が白か否かを判断する（ステップＳ７６）。
起点変化画素ｂ０の色が白である場合（ステップＳ７６のＹＥＳルート）、図１２を参照しながら後述する手順で、起点変化画素ｂ０から右側で最初に現われる黒画素の位置を求めてから（ステップＳ７７）、ステップＳ７７で求められた黒画素の位置に基づき、図１３を参照しながら後述する手順で、変化画素（白画素）ｂ１の位置を求める（ステップＳ７８）。また、起点変化画素ｂ０の色が黒である場合（ステップＳ７６のＮＯルート）、図１４を参照しながら後述する手順で、変化画素（白画素）ｂ１の位置を求める（ステップＳ７９）。
【０１０６】
図６のステップＳ５５での変化画素ｂ２の検出手順について、図８に示すフローチャート（ステップＳ７１〜Ｓ８１）に従って説明する。この場合、図７によって説明した手順で変化画素ｂ１を検出した後、その変化画素ｂ１を用いて、変化画素ｂ２を検出する。従って、図８に示すフローチャートでは、図７に示すフローチャートにステップＳ８０およびＳ８１が追加されているだけである。
【０１０７】
つまり、ステップＳ７４またはステップＳ７５によって変化画素（黒画素）ｂ１が検出された場合には、図１５を参照しながら後述する手順で、変化画素（白画素）ｂ２を求める（ステップＳ８０）。また、ステップＳ７８またはステップＳ７９によって変化画素（白画素）ｂ１が検出された場合には、図１６を参照しながら後述する手順で、変化画素（黒画素）ｂ２を求める（ステップＳ８１）。なお、図７および図８のステップＳ７１，Ｓ７２，Ｓ７６での色判定に際しては、第５テーブルＣＬＲ[8][256]が使用される。
【０１０８】
図７および図８のステップＳ７３での詳細処理手順について、図９に示すフローチャート（ステップＳ１１１〜Ｓ１１５）に従って説明すると、まず、起点変化画素ｂ０が存在する１バイト中でのｂ０の位置から右側に、いくつ黒（１）が連続しているかを、第２テーブルＢ[8][256]を使用して求める（ステップＳ１１１）。この後、その１バイト中でのｂ０の位置とステップＳ１１１で求められた連続黒数とを加算した値が８か否かを判断し（ステップＳ１１２）、８である場合（ステップＳ１１２のＹＥＳルート）、起点変化画素ｂ０の存在するバイトよりも右側で白画素が見つかるか、１ラインの最後に到達するまで、参照ラインを１バイトずつ取り出してサーチを行なう（ステップＳ１１３）。そして、参照ラインが終わっても白画素が検出されない場合には、白画素の位置を次のラインの先頭に設定する一方、白画素が検出された場合、第３テーブルＬＷ[256]を使用して、その１バイト中で左側から見て最初に現われる白画素の位置、つまり、起点変化画素ｂ０から右側で最初に現われる白画素の位置を求める（ステップＳ１１４）。また、ステップＳ１１２で８ではないと判断された場合（ＮＯルート）、１バイト中でのｂ０の位置とステップＳ１１１で求められた連続黒数とを加算した値に対応する位置の次を、起点変化画素ｂ０から右側で最初に現われる白画素の位置として求める（ステップＳ１１５）。
【０１０９】
図７および図８のステップＳ７４での詳細処理手順について、図１０に示すフローチャート（ステップＳ１２１〜Ｓ１２７）に従って説明すると、まず、ステップＳ７３（つまり図９に示すフローチャート）によって求められた白画素の位置が、次のラインの先頭であるか否かを判断し（ステップＳ１２１）、先頭である場合（ステップＳ１２１のＹＥＳルート）、ステップＳ７３で求められた白画素の位置を変化画素ｂ１の位置とする（ステップＳ１２２）。一方、先頭でない場合（ステップＳ１２１のＮＯルート）、上記白画素が存在する１バイト中でのその白画素の位置から右側に、いくつ白（０）が連続しているかを、第１テーブルＷ[8][256]を使用して求める（ステップＳ１２３）。この後、その１バイト中での上記白画素の位置とステップＳ１２３で求められた連続白数とを加算した値が８か否かを判断し（ステップＳ１２４）、８である場合（ステップＳ１２４のＹＥＳルート）、上記白画素の存在するバイトよりも右側で黒画素が見つかるか、１ラインの最後に到達するまで、参照ラインを１バイトずつ取り出してサーチを行なう（ステップＳ１２５）。そして、参照ラインが終わっても黒画素が検出されない場合には、変化画素ｂ１の位置を次のラインの先頭に設定する一方、黒画素が検出された場合、第４テーブルＬＢ[256]を使用して、その１バイト中で左側から見て最初に現われる黒画素の位置を変化画素ｂ１の位置として求める（ステップＳ１２６）。また、ステップＳ１２４で８ではないと判断された場合（ＮＯルート）、１バイト中での上記白画素の位置とステップＳ１２３で求められた連続白数とを加算した値に対応する位置の次を、変化画素ｂ１の位置として求める（ステップＳ１２７）。
【０１１０】
図７および図８のステップＳ７５での詳細処理手順について、図１１に示すフローチャート（ステップＳ１３１〜Ｓ１３５）に従って説明すると、まず、起点変化画素ｂ０が存在する１バイト中でのｂ０の位置から右側に、いくつ白（０）が連続しているかを、第１テーブルＷ[8][256]を使用して求める（ステップＳ１３１）。この後、その１バイト中でのｂ０の位置とステップＳ１３１で求められた連続白数とを加算した値が８か否かを判断し（ステップＳ１３２）、８である場合（ステップＳ１３２のＹＥＳルート）、起点変化画素ｂ０の存在するバイトよりも右側で黒画素が見つかるか、１ラインの最後に到達するまで、参照ラインを１バイトずつ取り出してサーチを行なう（ステップＳ１３３）。そして、参照ラインが終わっても黒画素が検出されない場合には、変化画素ｂ１の位置を次のラインの先頭に設定する一方、黒画素が検出された場合、第４テーブルＬＢ[256]を使用して、その１バイト中で左側から見て最初に現われる黒画素の位置を変化画素ｂ１の位置として求める（ステップＳ１３４）。また、ステップＳ１３２で８ではないと判断された場合（ＮＯルート）、１バイト中でのｂ０の位置とステップＳ１２３で求められた連続白数とを加算した値に対応する位置の次を、変化画素ｂ１の位置として求める（ステップＳ１３５）。
【０１１１】
図７および図８のステップＳ７７での詳細処理手順について、図１２に示すフローチャート（ステップＳ１１１´〜Ｓ１１５´）に従って説明すると、まず、起点変化画素ｂ０が存在する１バイト中でのｂ０の位置から右側に、いくつ白（０）が連続しているかを、第１テーブルＷ[8][256]を使用して求める（ステップＳ１１１´）。この後、その１バイト中でのｂ０の位置とステップＳ１１１´で求められた連続白数とを加算した値が８か否かを判断し（ステップＳ１１２´）、８である場合（ステップＳ１１２´のＹＥＳルート）、起点変化画素ｂ０の存在するバイトよりも右側で黒画素が見つかるか、１ラインの最後に到達するまで、参照ラインを１バイトずつ取り出してサーチを行なう（ステップＳ１１３´）。そして、参照ラインが終わっても黒画素が検出されない場合には、黒画素の位置を次のラインの先頭に設定する一方、黒画素が検出された場合、第４テーブルＬＢ[256]を使用して、その１バイト中で左側から見て最初に現われる黒画素の位置、つまり、起点変化画素ｂ０から右側で最初に現われる黒画素の位置を求める（ステップＳ１１４´）。また、ステップＳ１１２´で８ではないと判断された場合（ＮＯルート）、１バイト中でのｂ０の位置とステップＳ１１１´で求められた連続白数とを加算した値に対応する位置の次を、起点変化画素ｂ０から右側で最初に現われる黒画素の位置として求める（ステップＳ１１５´）。
【０１１２】
図７および図８のステップＳ７８での詳細処理手順について、図１３に示すフローチャート（ステップＳ１２１´〜Ｓ１２７´）に従って説明すると、まず、ステップＳ７７（つまり図１２に示すフローチャート）によって求められた黒画素の位置が、次のラインの先頭であるか否かを判断し（ステップＳ１２１´）、先頭である場合（ステップＳ１２１´のＹＥＳルート）、ステップＳ７７で求められた黒画素の位置を変化画素ｂ１の位置とする（ステップＳ１２２´）。一方、先頭でない場合（ステップＳ１２１´のＮＯルート）、上記黒画素が存在する１バイト中でのその黒画素の位置から右側に、いくつ黒（１）が連続しているかを、第２テーブルＢ[8][256]を使用して求める（ステップＳ１２３´）。この後、その１バイト中での上記黒画素の位置とステップＳ１２３´で求められた連続黒数とを加算した値が８か否かを判断し（ステップＳ１２４´）、８である場合（ステップＳ１２４´のＹＥＳルート）、上記黒画素の存在するバイトよりも右側で白画素が見つかるか、１ラインの最後に到達するまで、参照ラインを１バイトずつ取り出してサーチを行なう（ステップＳ１２５´）。そして、参照ラインが終わっても白画素が検出されない場合には、変化画素ｂ１の位置を次のラインの先頭に設定する一方、白画素が検出された場合、第３テーブルＬＷ[256]を使用して、その１バイト中で左側から見て最初に現われる白画素の位置を変化画素ｂ１の位置として求める（ステップＳ１２６´）。また、ステップＳ１２４´で８ではないと判断された場合（ＮＯルート）、１バイト中での上記黒画素の位置とステップＳ１２３´で求められた連続黒数とを加算した値に対応する位置の次を、変化画素ｂ１の位置として求める（ステップＳ１２７´）。
【０１１３】
図７および図８のステップＳ７９での詳細処理手順について、図１４に示すフローチャート（ステップＳ１３１´〜Ｓ１３５´）に従って説明すると、まず、起点変化画素ｂ０が存在する１バイト中でのｂ０の位置から右側に、いくつ黒（１）が連続しているかを、第２テーブルＢ[8][256]を使用して求める（ステップＳ１３１´）。この後、その１バイト中でのｂ０の位置とステップＳ１３１´で求められた連続黒数とを加算した値が８か否かを判断し（ステップＳ１３２´）、８である場合（ステップＳ１３２´のＹＥＳルート）、起点変化画素ｂ０の存在するバイトよりも右側で白画素が見つかるか、１ラインの最後に到達するまで、参照ラインを１バイトずつ取り出してサーチを行なう（ステップＳ１３３´）。そして、参照ラインが終わっても白画素が検出されない場合には、変化画素ｂ１の位置を次のラインの先頭に設定する一方、白画素が検出された場合、第３テーブルＬＷ[256]を使用して、その１バイト中で左側から見て最初に現われる白画素の位置を変化画素ｂ１の位置として求める（ステップＳ１３４´）。また、ステップＳ１３２´で８ではないと判断された場合（ＮＯルート）、１バイト中での起点変化画素ｂ０の位置とステップＳ１２３´で求められた連続黒数とを加算した値に対応する位置の次を、変化画素ｂ１の位置として求める（ステップＳ１３５´）。
【０１１４】
図８のステップＳ８０での詳細処理手順について、図１５に示すフローチャート（ステップＳ１４１〜Ｓ１４７）に従って説明すると、まず、ステップＳ７４またはステップＳ７５（つまり図１０または図１１に示すフローチャート）によって求められた変化画素ｂ１の位置が、次のラインの先頭であるか否かを判断し（ステップＳ１４１）、先頭である場合（ステップＳ１４１のＹＥＳルート）、ステップＳ７４またはＳ７５で求められた変化画素ｂ１の位置を変化画素ｂ２の位置とする（ステップＳ１４２）。一方、先頭でない場合（ステップＳ１４１のＮＯルート）、変化画素ｂ１が存在する１バイト中でのｂ１の位置から右側に、いくつ黒（１）が連続しているかを、第２テーブルＢ[8][256]を使用して求める（ステップＳ１４３）。この後、その１バイト中でのｂ１の位置とステップＳ１４３で求められた連続黒数とを加算した値が８か否かを判断し（ステップＳ１４４）、８である場合（ステップＳ１４４のＹＥＳルート）、変化画素ｂ１の存在するバイトよりも右側で白画素が見つかるか、１ラインの最後に到達するまで、参照ラインを１バイトずつ取り出してサーチを行なう（ステップＳ１４５）。そして、参照ラインが終わっても白画素が検出されない場合には、変化画素ｂ２の位置を次のラインの先頭に設定する一方、白画素が検出された場合、第３テーブルＬＷ[256]を使用して、その１バイト中で左側から見て最初に現われる白画素の位置を変化画素ｂ２の位置として求める（ステップＳ１４６）。また、ステップＳ１４４で８ではないと判断された場合（ＮＯルート）、１バイト中でのｂ１の位置とステップＳ１４３で求められた連続黒数とを加算した値に対応する位置の次を、変化画素ｂ２の位置として求める（ステップＳ１４７）。
【０１１５】
図８のステップＳ８１での詳細処理手順について、図１６に示すフローチャート（ステップＳ１４１´〜Ｓ１４７´）に従って説明すると、まず、ステップＳ７８またはステップＳ７９（つまり図１３または図１４に示すフローチャート）によって求められた変化画素ｂ１の位置が、次のラインの先頭であるか否かを判断し（ステップＳ１４１´）、先頭である場合（ステップＳ１４１´のＹＥＳルート）、ステップＳ７８またはＳ７９で求められた変化画素ｂ１の位置を変化画素ｂ２の位置とする（ステップＳ１４２´）。一方、先頭でない場合（ステップＳ１４１´のＮＯルート）、変化画素ｂ１が存在する１バイト中でのｂ１の位置から右側に、いくつ白（０）が連続しているかを、第１テーブルＷ[8][256]を使用して求める（ステップＳ１４３´）。この後、その１バイト中でのｂ１の位置とステップＳ１４３´で求められた連続白数とを加算した値が８か否かを判断し（ステップＳ１４４´）、８である場合（ステップＳ１４４´のＹＥＳルート）、変化画素ｂ１の存在するバイトよりも右側で黒画素が見つかるか、１ラインの最後に到達するまで、参照ラインを１バイトずつ取り出してサーチを行なう（ステップＳ１４５´）。そして、参照ラインが終わっても黒画素が検出されない場合には、変化画素ｂ２の位置を次のラインの先頭に設定する一方、黒画素が検出された場合、第４テーブルＬＢ[256]を使用して、その１バイト中で左側から見て最初に現われる黒画素の位置を変化画素ｂ２の位置として求める（ステップＳ１４６´）。また、ステップＳ１４４´で８ではないと判断された場合（ＮＯルート）、１バイト中でのｂ１の位置とステップＳ１４３´で求められた連続白数とを加算した値に対応する位置の次を、変化画素ｂ２の位置として求める（ステップＳ１４７´）。
【０１１６】
次に、図６のステップＳ６０での変化画素ａ２の検出手順について、図１７に示すフローチャート（ステップＳ９１〜Ｓ９５）に従って説明する。
変化画素ａ１を検出する場合、まず、復号化対象ライン上の起点変化画素ａ０の色が白か否かを判断し（ステップＳ９１）、起点変化画素ａ０の色が白である場合（ステップＳ９１のＹＥＳルート）、図１８を参照しながら後述する手順で、変化画素（黒画素）ａ１の位置を求めてから（ステップＳ９２）、図１９を参照しながら後述する手順で、変化画素（白画素）ａ２の位置を求める（ステップＳ９３）。一方、起点変化画素ａ０の色が黒である場合（ステップＳ９１のＮＯルート）、図２０を参照しながら後述する手順で、変化画素（白画素）ａ１の位置を求めてから（ステップＳ９４）、図２１を参照しながら後述する手順で、変化画素（黒画素）ａ２の位置を求める（ステップＳ９５）。
なお、図１７のステップＳ９１での色判定に際しては、第５テーブルＣＬＲ[8][256]が使用される。
【０１１７】
図１７のステップＳ９２での詳細処理手順について、図１８に示すフローチャート（ステップＳ１５１〜Ｓ１５５）に従って説明すると、まず、起点変化画素ａ０が存在する１バイト中でのａ０の位置から右側に、いくつ白（０）が連続しているかを、第１テーブルＷ[8][256]を使用して求める（ステップＳ１５１）。この後、その１バイト中でのａ０の位置とステップＳ１５１で求められた連続白数とを加算した値が８か否かを判断し（ステップＳ１５２）、８である場合（ステップＳ１５２のＹＥＳルート）、起点変化画素ａ０の存在するバイトよりも右側で黒画素が見つかるか、１ラインの最後に到達するまで、復号化対象ラインを１バイトずつ取り出してサーチを行なう（ステップＳ１５３）。そして、復号化対象ラインが終わっても黒画素が検出されない場合には、変化画素ａ１の位置を次のラインの先頭に設定する一方、黒画素が検出された場合、第４テーブルＬＢ[256]を使用して、その１バイト中で左側から見て最初に現われる黒画素の位置を変化画素ａ１の位置として求める（ステップＳ１５４）。また、ステップＳ１５２で８ではないと判断された場合（ＮＯルート）、１バイト中でのａ０の位置とステップＳ１５３で求められた連続白数とを加算した値に対応する位置の次を、変化画素ａ１の位置として求める（ステップＳ１５５）。
【０１１８】
図１７のステップＳ９３での詳細処理手順について、図１９に示すフローチャート（ステップＳ１６１〜Ｓ１６５）に従って説明すると、まず、ステップＳ９２（つまり図１８に示すフローチャート）によって求められた変化画素ａ１が存在する１バイトに着目し、そのバイト中でのａ１の位置から右側にいくつ黒（１）が連続しているかを、第２テーブルＢ[8][256]を使用して求める（ステップＳ１６１）。この後、その１バイト中でのａ１の位置とステップＳ１６１で求められた連続黒数とを加算した値が８か否かを判断し（ステップＳ１６２）、８である場合（ステップＳ１６２のＹＥＳルート）、変化画素ａ１の存在するバイトよりも右側で白画素が見つかるか、１ラインの最後に到達するまで、復号化対象ラインを１バイトずつ取り出してサーチを行なう（ステップＳ１６３）。そして、復号化対象ラインが終わっても白画素が検出されない場合には、変化画素ａ２の位置を次のラインの先頭に設定する一方、白画素が検出された場合、第３テーブルＬＷ[256]を使用して、その１バイト中で左側から見て最初に現われる白画素の位置を変化画素ａ２の位置として求める（ステップＳ１６４）。また、ステップＳ１６２で８ではないと判断された場合（ＮＯルート）、１バイト中でのａ１の位置とステップＳ１６３で求められた連続黒数とを加算した値に対応する位置の次を、変化画素ａ２の位置として求める（ステップＳ１６５）。
【０１１９】
図１７のステップＳ９４での詳細処理手順について、図２０に示すフローチャート（ステップＳ１５１´〜Ｓ１５５´）に従って説明すると、まず、起点変化画素ａ０が存在する１バイト中でのａ０の位置から右側に、いくつ黒（１）が連続しているかを、第２テーブルＢ[8][256]を使用して求める（ステップＳ１５１´）。この後、その１バイト中でのａ０の位置とステップＳ１５１´で求められた連続黒数とを加算した値が８か否かを判断し（ステップＳ１５２´）、８である場合（ステップＳ１５２´のＹＥＳルート）、起点変化画素ａ０の存在するバイトよりも右側で白画素が見つかるか、１ラインの最後に到達するまで、復号化対象ラインを１バイトずつ取り出してサーチを行なう（ステップＳ１５３´）。そして、復号化対象ラインが終わっても白画素が検出されない場合には、変化画素ａ１の位置を次のラインの先頭に設定する一方、白画素が検出された場合、第３テーブルＬＷ[256]を使用して、その１バイト中で左側から見て最初に現われる白画素の位置を変化画素ａ１の位置として求める（ステップＳ１５４´）。また、ステップＳ１５２´で８ではないと判断された場合（ＮＯルート）、１バイト中でのａ０の位置とステップＳ１５３´で求められた連続黒数とを加算した値に対応する位置の次を、変化画素ａ１の位置として求める（ステップＳ１５５´）。
【０１２０】
図１７のステップＳ９５での詳細処理手順について、図２１に示すフローチャート（ステップＳ１６１´〜Ｓ１６５´）に従って説明すると、まず、ステップＳ９４（つまり図２０に示すフローチャート）によって求められた変化画素ａ１が存在する１バイトに着目し、そのバイト中でのａ１の位置から右側にいくつ白（０）が連続しているかを、第１テーブルＷ[8][256]を使用して求める（ステップＳ１６１´）。この後、その１バイト中でのａ１の位置とステップＳ１６１´で求められた連続白数とを加算した値が８か否かを判断し（ステップＳ１６２´）、８である場合（ステップＳ１６２´のＹＥＳルート）、変化画素ａ１の存在するバイトよりも右側で黒画素が見つかるか、１ラインの最後に到達するまで、復号化対象ラインを１バイトずつ取り出してサーチを行なう（ステップＳ１６３´）。そして、復号化対象ラインが終わっても黒画素が検出されない場合には、変化画素ａ２の位置を次のラインの先頭に設定する一方、黒画素が検出された場合、第４テーブルＬＢ[256]を使用して、その１バイト中で左側から見て最初に現われる黒画素の位置を変化画素ａ２の位置として求める（ステップＳ１６４´）。また、ステップＳ１６２´で８ではないと判断された場合（ＮＯルート）、１バイト中でのａ１の位置とステップＳ１６３´で求められた連続白数とを加算した値に対応する位置の次を、変化画素ａ２の位置として求める（ステップＳ１６５´）。
【０１２１】
最後に、伸長処理部２５による、図６のステップＳ５４での符号化モードの具体的な認識・選択手順について、図２６に示すフローチャート（ステップＳ２０１〜Ｓ２２９）に従って説明する。
まず、１バイト（８ビット）分の圧縮データ（符号化ビットデータ）を取り込み（ステップＳ２０１）、その符号化ビットデータの先頭ビットを注目ビットとして設定する（ステップＳ２０２）。そして、第５テーブルＣＬＲ[8][256]を使用して注目ビットが０か１かを判断する（ステップＳ２０３）。
【０１２２】
注目ビットが１である場合（ステップＳ２０３のＮＯルート）、符号化モードは、記号コードＶ(0)に対応する垂直モードであると認識され（ステップＳ２０４）、注目ビットは、今回取り込まれた１バイトの最終ビットであるか否かを判断する（ステップＳ２０５）。最終ビットでない場合（ステップＳ２０５のＮＯルート）、今回認識された符号コード１の次のビットを次回の注目ビットとして設定してから（ステップＳ２０６）、ステップＳ２０３に戻る。
【０１２３】
また、最終ビットである場合（ステップＳ２０５のＹＥＳルート）、圧縮データを全て取り込んだか否かを判断し（ステップＳ２２９）、未処理の圧縮データが残っている場合（ステップＳ２２９のＮＯルート）、ステップＳ２０１に戻って次の１バイト分の圧縮データを取り込む一方、全ての圧縮データに対する処理を終了した場合（ステップＳ２２９のＹＥＳルート）、処理を終了する。
【０１２４】
ステップＳ２０３で注目ビットが０であると判断された場合（ＹＥＳルート）、注目ビットが存在する１バイト中での、この注目ビットの位置から右側に、いくつ白（０）が連続しているかを、第１テーブルＷ[8][256]を使用して求める（ステップＳ２０７）。この後、その１バイト中での注目ビットの位置とステップＳ２０７で求められた連続白数とを加算した値が８か否かを判断し（ステップＳ２０８）、８ではないと場合（ステップＳ２０８のＮＯルート）、ステップＳ２０８で求められた連続白数に１を加算した値を、注目ビットの位置から連続する０の数として求め、その数に応じて符号化モードを以下のように認識する（ステップＳ２０９）。
【０１２５】
連続０数が２である場合（ステップＳ２０９の“２”ルート）、符号化モードは水平モードであると認識される（ステップＳ２１０）。
連続０数が３である場合（ステップＳ２０９の“３”ルート）、符号化モードはパスモードであると認識される（ステップＳ２１１）。
【０１２６】
連続０数が１である場合（ステップＳ２０９の“１”ルート）、第５テーブルＣＬＲ[8][256]を使用して、０の後に続く２ビットが１０か１１かを判断し（ステップＳ２１２）、その２ビットが１０である場合（ステップＳ２１２のＹＥＳルート）、符号化モードは、記号コードＶl(1)に対応する垂直モードであると認識される（ステップＳ２１３）。また、その２ビットが１１である場合（ステップＳ２１２のＮＯルート）、符号化モードは、記号コードＶr(1)に対応する垂直モードであると認識される（ステップＳ２１４）。
【０１２７】
連続０数が４である場合（ステップＳ２０９の“４”ルート）、第５テーブルＣＬＲ[8][256]を使用して、０の後に続く２ビットが１０か１１かを判断し（ステップＳ２１５）、その２ビットが１０である場合（ステップＳ２１５のＹＥＳルート）、符号化モードは、記号コードＶl(2)に対応する垂直モードであると認識される（ステップＳ２１６）。また、その２ビットが１１である場合（ステップＳ２１５のＮＯルート）、符号化モードは、記号コードＶr(2)に対応する垂直モードであると認識される（ステップＳ２１７）。
【０１２８】
連続０数が５である場合（ステップＳ２０９の“５”ルート）、第５テーブルＣＬＲ[8][256]を使用して、０の後に続く２ビットが１０か１１かを判断し（ステップＳ２１８）、その２ビットが１０である場合（ステップＳ２１８のＹＥＳルート）、符号化モードは、記号コードＶl(3)に対応する垂直モードであると認識される（ステップＳ２１９）。また、その２ビットが１１である場合（ステップＳ２１８のＮＯルート）、符号化モードは、記号コードＶr(3)に対応する垂直モードであると認識される（ステップＳ２２０）。
【０１２９】
一方、ステップＳ２０８で８であると判断された場合（ＹＥＳルート）、次の１バイト分の圧縮データ（符号化ビットデータ）を取り込み（ステップＳ２２１）、その符号化ビットデータの先頭ビットを注目ビットとして設定する（ステップＳ２２２）。そして、第５テーブルＣＬＲ[8][256]を使用して注目ビットが０か１かを判断する（ステップＳ２２３）。
【０１３０】
注目ビットが１である場合（ステップＳ２２３のＮＯルート）、ステップＳ２０７で求められた連続白数に１を加算した値に応じて、ステップＳ２１０〜Ｓ２２０と同様の手順により符号化モードを認識する（ステップＳ２２４）。
また、注目ビットが０である場合（ステップＳ２２３のＹＥＳルート）、その注目ビットが存在する１バイト中での、この注目ビットの位置から右側に、いくつ白（０）が連続しているかを、第１テーブルＷ[8][256]を使用して求める（ステップＳ２２５）。
【０１３１】
そして、ステップＳ２０７で求められた連続白数とステップＳ２２５で求められた連続白数とを加算した値にさらに２を加算した値に応じ、ステップＳ２１０〜Ｓ２２０と同様の手順により符号化モードを認識する（ステップＳ２２６）。上述のようにして、ステップＳ２１０，Ｓ２１１，Ｓ２１３，Ｓ２１４，Ｓ２１６，Ｓ２１７，Ｓ２１９，Ｓ２２０，Ｓ２２４，Ｓ２２６において符号化モードを認識した後、今回認識された符号コードの最終ビットが、今回取り込まれた１バイトの最終ビットであるか否かを判断する（ステップＳ２２７）。最終ビットでない場合（ステップＳ２２７のＮＯルート）、今回認識された符号コードの次のビットを次回の注目ビットとして設定してから（ステップＳ２２８）、ステップＳ２０３に戻る。
【０１３２】
また、最終ビットである場合（ステップＳ２２７のＹＥＳルート）、圧縮データを全て取り込んだか否かを判断し（ステップＳ２２９）、未処理の圧縮データが残っている場合（ステップＳ２２９のＮＯルート）、ステップＳ２０１に戻って次の１バイト分の圧縮データを取り込む一方、全ての圧縮データに対する処理を終了した場合（ステップＳ２２９のＹＥＳルート）、処理を終了する。
【０１３３】
このように、本発明の一実施形態によれば、ＭＭＲ符号化方式によって圧縮された二値データを伸長する際に、参照ライン上や復号化対象ライン上における変化画素ｂ１，ｂ２，ａ１，ａ２の検出処理が、第１〜第５テーブルを用いてバイト（８ビット）単位で行なわれるので、変化画素ｂ１，ｂ２，ａ１，ａ２を効率よく検出できるようになる。
また、圧縮データに含まれる符号コードの認識処理つまり符号化モードの認識処理が、第１テーブルおよび第５テーブルを用いてバイト（８ビット）単位で行なわれるので、その符号化モードを効率良く認識できるようになる。
【０１３４】
従って、変化画素の位置や符号化コードの認識処理を１ビット毎に行なっていた従来手法に比べて、本実施形態では、圧縮された二値データの伸長処理を大幅に高速化し、その伸長処理に要する時間を大幅に短縮することができる。特に、画像データが高解像度であり変化画素の間隔が大きい場合に用いると極めて有効であり、データ伸長処理時間を大幅に短縮することができる。
【０１３５】
〔２〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態では、参照ラインや圧縮データや復号化対象ラインを、１バイト（８ビット）で区切る場合について説明したが、本発明はこれに限定されるものではない。
【０１３６】
また、上述した実施形態では、ＭＭＲ符号化方式により圧縮されたデータを伸長する場合について説明しているが、本発明は、ＭＭＲ符号化方式に限定されるものではなく、他の符号化方式（例えばＭＨ符号化方式）によって圧縮されたデータを伸長する場合にも同様に適用され、上述した実施形態と同様の作用効果を得ることができる。
【０１３７】
〔３〕付記
（付記１）  画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのデータ伸長処理方法であって、
所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを予め準備しておき、
該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り出し、
該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求め、
求められた該参照ラインにおける変化画素の位置に基づいて前記圧縮データを復号化することを特徴とする、データ伸長処理方法。
【０１３８】
（付記２）  前記圧縮データがＭＭＲ符号化方式によって圧縮され、
前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出し、
該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する０の数を検出し、
検出された０の数に応じた符号コードに従って、符号化モードを認識し、
認識された該符号化モードに従って前記圧縮データの復号化を行なうことを特徴とする、付記１記載のデータ伸長処理方法。
【０１３９】
（付記３）  前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴とする、付記２記載のデータ伸長処理方法。
【０１４０】
（付記４）  前記圧縮データを復号化して得られる復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出し、
該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求め、
求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いることを特徴とする、付記３記載のデータ伸長処理方法。
【０１４１】
（付記５）  画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのデータ伸長処理装置であって、
所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを格納する参照テーブル保持部と、
該参照ラインを成すビット列を保持する参照ライン保持部と、
前記圧縮データを成すビット列を保持する圧縮データ保持部と、
該参照ライン保持部における該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り込むとともに、該圧縮データ保持部から前記圧縮データを成すビット列を取り込み、前記圧縮データを復号化する伸長処理部と、
該伸長処理部により前記圧縮データを復号化して得られる復号化対象ラインを成すビット列を保持する復号化対象ライン保持部とをそなえ、
該伸長処理部が、
該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該参照テーブル保持部における該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求め、
求められた該参照ラインにおける変化画素の位置に基づいて前記圧縮データを復号化して該復号化対象ライン保持部に格納することを特徴とする、データ伸長処理装置。
【０１４２】
（付記６）  前記圧縮データがＭＭＲ符号化方式によって圧縮されたものであり、
該伸長処理部が、
前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出し、
該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する０の数を検出し、
検出された０の数に応じた符号コードに従って、符号化モードを認識し、
認識された該符号化モードに従って前記圧縮データの復号化を行なうことを特徴とする、付記５記載のデータ伸長処理装置。
【０１４３】
（付記７）  該伸長処理部が、前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴とする、付記６記載のデータ伸長処理装置。
【０１４４】
（付記８）  該伸長処理部が、
該復号化対象ライン保持部における該復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出し、
該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該参照テーブル保持部における該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出し、
該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求め、
求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いることを特徴とする、付記７記載のデータ伸長処理装置。
【０１４５】
（付記９）  画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのデータ伸長処理装置として、コンピュータを機能させるデータ伸長処理プログラムであって、
所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを有するとともに、
該コンピュータに、
該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り出させ、
該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出させ、
該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求めさせ、
求められた該参照ラインにおける変化画素の位置に基づいて前記圧縮データを復号化させることを特徴とする、データ伸長処理プログラム。
【０１４６】
（付記１０）  前記圧縮データがＭＭＲ符号化方式によって圧縮されたものであり、
該コンピュータに、
前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出させ、
該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する０の数を検出させ、
検出された０の数に応じた符号コードに従って、符号化モードを認識させ、
認識された該符号化モードに従って前記圧縮データを復号化させることを特徴とする、付記９記載のデータ伸長処理プログラム。
【０１４７】
（付記１１）  前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴とする、付記１０記載のデータ伸長処理プログラム。
【０１４８】
（付記１２）  該コンピュータに、
該復号化対象ライン保持部における該復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出させ、
該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出させ、
該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求めさせ、
求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いることを特徴とする、付記１１記載のデータ伸長処理プログラム。
【０１４９】
（付記１３）  画像から取得された複数のラインからなる二値データを、ライン毎に、該ラインにおける色の変化画素の位置と隣接する参照ラインにおける色の変化画素の位置とに基づいて符号化することによって得られた圧縮データを伸長するためのデータ伸長処理装置として、コンピュータを機能させるデータ伸長処理プログラムを格納したコンピュータ読取可能な記録媒体であって、
該データ伸長処理プログラムが、
所定ビット数のビットデータによって表わされる全てのビットパターンについて、各ビットパターン中のある一つのビットよりも右側または左側に連続して存在する、そのビットと同じ色のビットの数を記述されたテーブルを有するとともに、
該コンピュータに、
該参照ラインを成すビット列から、順次、参照ビットデータを前記所定ビット数ずつ取り出させ、
該参照ビットデータと該参照ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出させ、
該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該参照ラインにおける変化画素として求めさせ、
求められた該参照ラインにおける変化画素の位置に基づいて前記圧縮データを復号化させることを特徴とする、データ伸長処理プログラムを格納したコンピュータ読取可能な記録媒体。
【０１５０】
（付記１４）  前記圧縮データがＭＭＲ符号化方式によって圧縮されたものであり、
該データ伸長処理プログラムが、該コンピュータに、
前記圧縮データを成すビット列から、順次、符号化ビットデータを前記所定ビット数ずつ取り出させ、
該符号化ビットデータと該符号化ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する０の数を検出させ、
検出された０の数に応じた符号コードに従って、符号化モードを認識させ、
認識された該符号化モードに従って前記圧縮データを復号化させることを特徴とする、付記１３記載のデータ伸長処理プログラムを格納したコンピュータ読取可能な記録媒体。
【０１５１】
（付記１５）  該データ伸長処理プログラムが、前記圧縮データを復号化して得られる復号化対象ライン上に存在する起点変化画素のビット位置に対応した、該参照ラインから取り出した該参照ビットデータ中におけるビット位置を、前記注目ビットの位置として用いることを特徴とする、付記１４記載のデータ伸長処理プログラムを格納したコンピュータ読取可能な記録媒体。
【０１５２】
（付記１６）  該データ伸長処理プログラムが、該コンピュータに、
該復号化対象ライン保持部における該復号化対象ラインを成すビット列から、順次、復号ビットデータを前記所定ビット数ずつ取り出させ、
該復号ビットデータと該復号ビットデータ中の注目ビットの位置とを用いて、該テーブルをサーチすることにより、該注目ビットよりも右側または左側に連続して存在する、該注目ビットと同じ色のビットの数を検出させ、
該注目ビットから、右側または左側に、検出された該ビット数に１を加算したビット数だけ離れた位置の画素を、該復号化対象ラインにおける変化画素として求めさせ、
求められた該復号化対象ラインにおける変化画素を、前記圧縮データに含まれる次の符号コードによる復号化に際しての起点変化画素として用いることを特徴とする、付記１５記載のデータ伸長処理プログラムを格納したコンピュータ読取可能な記録媒体。
【０１５３】
【発明の効果】
以上詳述したように、本発明によれば、ＭＭＲ符号化方式によって圧縮された二値データを伸長する際に、参照ライン上や復号化対象ライン上における変化画素の検出処理が、テーブルを用いて所定ビット数（例えば１バイトつまり８ビット）単位で行なわれるので、変化画素を効率よく検出できるようになる。また、符号化モード（符号コード）の認識処理が、テーブルを用いて所定ビット数（例えば１バイトつまり８ビット）単位で行なわれるので、その符号化モードを効率良く認識できるようになる。
【０１５４】
従って、圧縮された二値データの伸長処理を大幅に高速化し、その伸長処理に要する時間を大幅に短縮することができる。特に、本発明は、画像データが高解像度であり変化画素の間隔が大きい場合に用いると極めて有効であり、データ伸長処理時間を大幅に短縮することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態としてのデータ伸長処理装置の構成を示すブロック図である。
【図２】１バイトのビット列中でｘビット目の画素よりも右側に連続して存在する白画素の数をビットパターン毎に与える第１テーブルの一部を示す図である。
【図３】１バイトのビット列中でｘビット目の画素よりも右側に連続して存在する黒画素の数をビットパターン毎に与える第２テーブルの一部を示す図である。
【図４】１バイトのビット列中で左側から見て最初に現われる白画素の位置をビットパターン毎に与える第３テーブルの一部と、１バイトのビット列中で左側から見て最初に現われる黒画素の位置をビットパターン毎に与える第４テーブルの一部とを示す図である。
【図５】１バイトのビット列中でｘビット目の画素の色をビットパターン毎に与える第５テーブルの一部を示す図である。
【図６】図１に示す装置による復号化手順（伸長処理手順）を説明するためのフローチャートである。
【図７】図６のステップＳ６２での変化画素ｂ１の検出手順を説明するためのフローチャートである。
【図８】図６のステップＳ５５での変化画素ｂ２の検出手順を説明するためのフローチャートである。
【図９】図７および図８のステップＳ７３での詳細処理手順を説明するためのフローチャートである。
【図１０】図７および図８のステップＳ７４での詳細処理手順を説明するためのフローチャートである。
【図１１】図７および図８のステップＳ７５での詳細処理手順を説明するためのフローチャートである。
【図１２】図７および図８のステップＳ７７での詳細処理手順を説明するためのフローチャートである。
【図１３】図７および図８のステップＳ７８での詳細処理手順を説明するためのフローチャートである。
【図１４】図７および図８のステップＳ７９での詳細処理手順を説明するためのフローチャートである。
【図１５】図８のステップＳ８０での詳細処理手順を説明するためのフローチャートである。
【図１６】図８のステップＳ８１での詳細処理手順を説明するためのフローチャートである。
【図１７】図６のステップＳ６０での変化画素ａ２の検出手順を説明するためのフローチャートである。
【図１８】図１７のステップＳ９２での詳細処理手順を説明するためのフローチャートである。
【図１９】図１７のステップＳ９３での詳細処理手順を説明するためのフローチャートである。
【図２０】図１７のステップＳ９４での詳細処理手順を説明するためのフローチャートである。
【図２１】図１７のステップＳ９５での詳細処理手順を説明するためのフローチャートである。
【図２２】本実施形態による復号化（伸長処理）を説明すべく画素列の具体例を示す図である。
【図２３】本実施形態による復号化（伸長処理）を説明すべく画素列の具体例を示す図である。
【図２４】本実施形態による復号化（伸長処理）を説明すべく画素列の具体例を示す図である。
【図２５】本実施形態による復号化（伸長処理）を説明すべく画素列の具体例を示す図である。
【図２６】図６のステップＳ５４での符号化モードの認識・選択手順を説明するためのフローチャートである。
【図２７】ＭＭＲ符号化方式によるデータ圧縮処理を実行する、一般的なデータ圧縮処理装置の構成を示すブロック図である。
【図２８】一般的なＭＭＲ符号化を説明すべく画素列の具体例を示す図である。
【図２９】一般的なＭＭＲ符号化（パスモード）を説明すべく画素列の具体例を示す図である。
【図３０】一般的なＭＭＲ符号化（垂直モード）を説明すべく画素列の具体例を示す図である。
【図３１】一般的なＭＭＲ符号化（水平モード）を説明すべく画素列の具体例を示す図である。
【図３２】図２７に示す装置によるＭＭＲ符号化手順（圧縮処理手順）を説明するためのフローチャートである。
【図３３】ＭＭＲ符号化方式によって圧縮されたデータの伸長処理（復号化処理）を実行する、一般的なデータ伸長処理装置の構成を示すブロック図である。
【図３４】図３３に示す装置による復号化手順（伸長処理手順）を説明するためのフローチャートである。
【図３５】画像データが高解像度である場合における参照ラインの画素列の具体例を示す図である。
【符号の説明】
２１  データ伸長処理装置
２２  伸長前データ記憶部
２３  伸長後データ記憶部
２４  入力バッファ（圧縮データ保持部）
２５  伸長処理部
２６  出力バッファ（参照ライン保持部，復号化対象ライン保持部）
２７  参照テーブル保持部
【図１】
0003854849.tif 000003
【図２】
0003854849.tif 000004
【図３】
0003854849.tif 000005
【図４】
0003854849.tif 000006
【図５】
0003854849.tif 000007
【図６】
0003854849.tif 000008
【図７】
0003854849.tif 000009
【図８】
0003854849.tif 000010
【図９】
0003854849.tif 000011
【図１０】
0003854849.tif 000012
【図１１】
0003854849.tif 000013
【図１２】
0003854849.tif 000014
【図１３】
0003854849.tif 000015
【図１４】
0003854849.tif 000016
【図１５】
0003854849.tif 000017
【図１６】
0003854849.tif 000018
【図１７】
0003854849.tif 000019
【図１８】
0003854849.tif 000020
【図１９】
0003854849.tif 000021
【図２０】
0003854849.tif 000022
【図２１】
0003854849.tif 000023
【図２２】
0003854849.tif 000024
【図２３】
0003854849.tif 000025
【図２４】
0003854849.tif 000026
【図２５】
0003854849.tif 000027
【図２６】
0003854849.tif 000028
【図２７】
0003854849.tif 000029
【図２８】
0003854849.tif 000030
【図２９】
0003854849.tif 000031
【図３０】
0003854849.tif 000032
【図３１】
0003854849.tif 000033
【図３２】
0003854849.tif 000034
【図３３】
0003854849.tif 000035
【図３４】
0003854849.tif 000036
【図３５】
0003854849.tif 000037