(57)【特許請求の範囲】
【請求項１】
画像から取得した画素データから１ライン毎のビット列を作成し、
前記ビット列に基づいて参照ラインと符号化ラインを設定して、前記参照ラインと前記符号化ラインの各々のビット列を作成し、
前記参照ラインと前記符号化ラインのビット列の各々において同じ位置から順次、参照ライン側の１バイト及び符号化側の１バイトずつを取り出し、
取り出された前記参照ライン側の１バイト及び前記符号化ライン側の１バイトにおけるビットパターンに従って、前記変化画素のビットより右にある該ビットと同じ色の連続したビット数を夫々検出し、前記参照ライン側の１バイト及び前記符号化ライン側の１バイトにおける前記変化画素からの画素列の長さを夫々求め、
求められた各々の前記長さのビット数に１を加算した位置にある画素を前記変化画素と異なる色の変化画素とし、前記参照ラインのビット列及び前記符号化ラインのビット列上における該変化画素の位置を夫々求め、
前記参照ラインのビット列及び前記符号化ラインのビット列上の前記各変化画素との間の距離を夫々演算し、該各距離と前記各変化画素の位置とに基づいて前記符号化ラインのビット列に対してＭＭＲ符号化を行うデータ圧縮処理方法。
【請求項２】
前記ビットパターンに基づいた同じ色の連続したビット数の検出には、１バイト中でｘビット目から右に連続している白の数を示した第１テーブル、１バイト中でｘビット目から右に連続している黒の数を示した第２テーブル、１バイト中で左端から連続する黒の数を示す第３テーブル、１バイト中で左端から連続する白の数を示す第４テーブル、そして、１バイト中でｘビット目の白か黒かの色を示す第５テーブルが用いられることを特徴とする請求項１に記載のデータ圧縮処理方法。
【請求項３】
前記参照ラインのビット列における前記画素列の長さを求めるとき、前記符号化ラインのビット列から取り出した１バイト中に存在する前記変化画素のビットの位置を、前記画素列の長さを求める前記参照ライン上の起点変化画素の位置とする請求項１又は２に記載のデータ圧縮処理方法。
【請求項４】
入力された画像の画素データから作成された１ライン毎のビット列に基づいて参照ラインと符号化ラインを設定して、前記参照ラインと前記符号化ラインの各々のビット列を作成して保持する入力バッファと、
１バイト中に含まれるビットにより表される全てのビットパターンについて、１バイト中で色の変化画素のビットより右にある該変化画素のビットと同じ色のビット数が記述されたテーブルを少なくとも格納している参照テーブル部と、
前記参照ラインと前記符号化ラインのビット列の各々において同じ位置から順次、参照ライン側の１バイト及び符号化側の１バイトずつを取り出された前記参照ライン側の１バイト及び前記符号化ライン側の１バイトにおけるビットパターンに従って、前記変化画素のビットより右にある該ビットと同じ色の連続したビット数を夫々検出し、前記参照ライン側の１バイト及び前記符号化ライン側の１バイトにおける前記変化画素からの画素列の長さを夫々求める長さ演算部と、
求められた各々の前記長さのビット数に１を加算した位置にある画素を前記変化画素と異なる色の変化画素とし、前記参照ラインのビット列及び前記符号化ラインのビット列上における該変化画素の位置を夫々求める画素位置演算部と、
前記参照ラインのビット列及び前記符号化ラインのビット列上の前記各変化画素との間の距離を夫々演算し、該各距離と前記各変化画素の位置とに基づいて前記符号化ラインのビット列に対してＭＭＲ符号化を行って、前記画像データの圧縮処理を実行する圧縮処理部とを有することを特徴とするデータ圧縮処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、静止画像データのデータ圧縮処理方法及びその装置に関し、特に、ＭＭＲ符号化方式による静止画像データの圧縮処理において、処理時間を短縮して高速化を図ったデータ圧縮処理方法及びその装置に関する。
【０００２】
【従来の技術】
現在、ファクシミリで取り扱うような文書などの静止画像は、基本的には白か黒の２レベルで表現された画像であり、２値化された画像データで構成されている。
そして、ファクシミリで取り扱うような２値文書画像では、白画素あるいは黒画素がある程度連続して出現することが多い。そこで、通常、この大量の２値化された画像データについて、ＭＭＲ符号化方式を用いて連続する白または黒が変化する部分を符号化することによってデータ圧縮処理を行っている。
【０００３】
図１に、このＭＭＲ符号化方式のデータ圧縮処理装置の構成を示す。
データ圧縮処理装置１の入力側には、圧縮前データ記憶部２が、そして、出力側には、圧縮後データ記憶部３が接続されている。
圧縮処理装置１は、入力バッファ４、圧縮処理部５、出力バッファ６及び参照テーブル部７によって構成されている。
【０００４】
圧縮前データ記憶部２には、例えば、文書をファクシミリ送信するために読み込まれた２値化画像データが格納される。また、圧縮後データ記憶部３には、圧縮処理装置１で符号化された画像データが逐次格納される。
圧縮処理装置１内での圧縮処理は、先ず、入力バッファ４に１mm当たり８ビットでサンプリングした２値化画像データを圧縮前バッファ読み込み、これを圧縮処理部５に送る。圧縮処理部５では、参照テーブル部７に格納されているＭＨ符号表、ＭＲ符号表を参照して、読み込まれた画像データを符号化する。符号化されたデータは、出力バッファ６に送られ、さらに、圧縮後データ記憶部３に格納されていく。
【０００５】
ここで、２値化画像データが符号化されて圧縮処理される概要について、図２（Ａ）を参照して説明する。
図２（Ａ）では、圧縮前データ記憶部２から入力バッファ４に読み込まれた２値化画像データのビット配列を模式的に表し、四角枠の一つが１ビットを示している。そして、細線枠が白画素を、また、太線枠が黒画素をそれぞれ表している。
【０００６】
さらに、上段の行は、参照ラインを示し、下段の行が符号化ラインである。参照ラインの画像データは、直前に符号化され伝送済みの画像データの行が用いられ、符号化ラインの画像データは、圧縮前データ記憶部２から入力バッファ４に新たに読み込まれたものである。
ＭＭＲ符号化方式では、画素の行について、配列する画素の白と黒の変化画素の位置を符号化し、参照ラインにおける画素の白と黒の変化画素との距離を符号化するものである。そこで、図２（Ａ）のようであれば、下段の符号化ラインについては、行の変化点の画素であるａ0 、ａ1 及びａ2 について、そして、上段の参照ラインについては、行の変化点の画素であるｂ1 、ｂ2 の位置を検出しなければならない。
【０００７】
ここで、符号化ラインにおいて、ａ0 は、起点変化画素を、ａ1 は、ａ0 より右の最初の変化画素を、ａ2 は、ａ1 より右の最初の変化画素をそれぞれ表し、参照ラインにおいて、ｂ1 は、ａ0 より右でａ0 とは反対色の最初の変化画素を、ｂ2 は、ｂ1 より右の最初の変化画素をそれぞれ表している。
次に、図２（Ａ）に示されるように、符号化ライン及び参照ライン上に、白及び黒の画素が配列されていたとき、画像データの符号化について説明する。
【０００８】
符号化は、起点変化画素ａ0 と参照変化画素ａ1 、ａ2 、ｂ1 及びｂ2 との位置関係により、パスモード、垂直モード、水平モードに分けて行われる。
パスモードとは、変化画素ｂ2 を見て、これがａ1 よりも左側にある場合を指している。このパスモードのときには、ａ0 の位置をｂ2 の真下に移す。図２（ａ）では、ａ0 の位置は、パスモードとして符号化が済み、ｂ2 の真下に移されてａ0 となった状態を示している。
【０００９】
図２（Ａ）に示されるｂ2 の位置は、ａ1 よりも右側にあるので、ａ1 についての符号化は、垂直モードであり、ａ1 とｂ1 の距離が３画素以内であるので、参照テーブル部７にあるＭＲ符号テーブルから、距離１に対応する垂直モードの符号コード０１０を読み出して出力バッファ６に伝送する。そして、ａ0 をａ1 の位置（ａ0 ）まで移され、ａ1 がａ2 の位置（ａ1 ）に、ｂ1 がｂ2 の位置（ｂ1 ）にそれぞれ移される。
【００１０】
次に、（ａ0 ）を起点として見ると、（ａ1 ）についての符号化は、やはり垂直モードであり、ＭＲ符号テーブルから、距離０に対応する垂直モードの符号コード１を読み出して出力バッファ６に伝送する。また（ａ0 ）を（ａ1 ）の位置に移す。
パスモードでも垂直モードでもないとき、水平モードとして、ａ0 からａ1 までの長さと、ａ1 からａ2 までの長さを、それぞれ参照テーブル部７のＭＨ符号テーブルから、それぞれの白または黒の長さに対応する符号を読み出して出力バッファ６に伝送する。そして、ａ0 はａ2 の位置（ａ0 ）に移される。
【００１１】
このようにして、図２（Ａ）に示される画素の位置の場合、その符号化は、符号コード・・・０１０１・・・のようになり、符号化ライン上の画素の位置が参照ライン上の画素の位置との距離に関係して符号化される。
【００１２】
【発明が解決しようとする課題】
しかし、画像データが高解像度のものとなると、例えば、図２（Ｂ）に示されるように、起点変化画素ａ0 から変化画素ａ1 までの距離が長く、ビット数が多大なものとなる。
従来の方式では、ａ0 の位置から黒が検出されるまで１ビットずつシフトし、黒の位置をａ1 としている。また、シフトした回数をａ0 の位置からａ1 の位置までの距離としている。
【００１３】
この処理手順を、図２（Ｂ）で具体的に説明する。ここで、細線枠は白の、そして太線枠は黒の画素を表す。
先ず、ａ0 の位置のビットを取り出し、白か黒かを判断する。ａ0 は白と判断される。次に、参照する位置を１ビット右にシフトする。そこで、シフトした位置のビットを取り出し、白か黒かを判断する。
【００１４】
このようにして、黒が検出されるまで、繰り返して処理を進める。そして、黒が検出された位置をａ1 とする。図２（Ｂ）の場合、ａ1 の位置を求めるためには、シフトの回数は、２０回を必要とする。
ａ1 の位置ばかりでなく、ａ2 、ｂ1 、ｂ2 の各位置についても１ビットずつシフトしながら処理を進めることになる。そのため、静止画像の高解像度化に伴って、シフト回数は増大し、符号化の処理時間を要する結果となっている。
【００１５】
従って、本発明は、ＭＭＲ方式による圧縮処理において、変化画素ａ1 、ａ2 、ｂ1 、ｂ2 の位置を求めるための繰り返し処理回数を減らし、高速化を図ることを目的とする。
【００１６】
【課題を解決するための手段】
以上の課題を解決するため、本発明では、
画像から取得した画素データから１ライン毎のビット列を作成し、該ビット列に基づいて参照ラインと符号化ラインを設定して、前記参照ラインと前記符号化ラインの各々のビット列を作成し、該参照ラインと該符号化ラインのビット列の各々において同じ位置から順次、参照ライン側の１バイト及び符号化側の１バイトずつを取り出し、取り出された前記参照ライン側の１バイト及び前記符号化ライン側の１バイトにおけるビットパターンに従って、前記変化画素のビットより右にある該ビットと同じ色の連続したビット数を夫々検出し、前記参照ライン側の１バイト及び前記符号化ライン側の１バイトにおける前記変化画素からの画素列の長さを夫々求め、求められた各々の前記長さのビット数に１を加算した位置にある画素を前記変化画素と異なる色の変化画素とし、前記参照ラインのビット列及び前記符号化ラインのビット列上における該変化画素の位置を夫々求め、前記参照ラインのビット列及び前記符号化ラインのビット列上の前記各変化画素との間の距離を夫々演算し、該各距離と前記各変化画素の位置とに基づいて前記符号化ラインのビット列に対してＭＭＲ符号化を行うデータ圧縮処理方法とした。
【００１７】
さらに、前記ビットパターンに基づいた同じ色の連続したビット数の検出には、１バイト中でｘビット目から右に連続している白の数を示した第１テーブル、１バイト中でｘビット目から右に連続している黒の数を示した第２テーブル、１バイト中で左端から連続する黒の数を示す第３テーブル、１バイト中で左端から連続する白の数を示す第４テーブル、そして、１バイト中でｘビット目の白か黒かの色を示す第５テーブルが用いられることとした。
そして、前記参照ラインのビット列における前記画素列の長さを求めるとき、前記符号化ラインのビット列から取り出した１バイト中に存在する前記変化画素のビットの位置を、前記画素列の長さを求める前記参照ライン上の起点変化画素の位置とするデータ圧縮処理方法とした。
【００１８】
また、データ圧縮処理装置では、入力された画像の画素データから作成された１ライン毎のビット列に基づいて参照ラインと符号化ラインを設定して、前記参照ラインと前記符号化ラインの各々のビット列を作成して保持する入力バッファと、１バイト中に含まれるビットにより表される全てのビットパターンについて、１バイト中で色の変化画素のビットより右にある該変化画素のビットと同じ色のビット数が記述されたテーブルを少なくとも格納している参照テーブル部と、前記参照ラインと前記符号化ラインのビット列の各々において同じ位置から順次、参照ライン側の１バイト及び符号化側の１バイトずつを取り出された前記参照ライン側の１バイト及び前記符号化ライン側の１バイトにおけるビットパターンに従って、前記変化画素のビットより右にある該ビットと同じ色の連続したビット数を夫々検出し、前記参照ライン側の１バイト及び前記符号化ライン側の１バイトにおける前記変化画素からの画素列の長さを夫々求める長さ演算部と、求められた各々の前記長さのビット数に１を加算した位置にある画素を前記変化画素と異なる色の変化画素とし、前記参照ラインのビット列及び前記符号化ラインのビット列上における該変化画素の位置を夫々求める画素位置演算部と、前記参照ラインのビット列及び前記符号化ラインのビット列上の前記各変化画素との間の距離を夫々演算し、該各距離と前記各変化画素の位置とに基づいて前記符号化ラインのビット列に対してＭＭＲ符号化を行って、前記画像データの圧縮処理を実行する圧縮処理部とを有し、前記画素データに基づいて参照ラインと符号化ラインを設定し、前記入力バッファから前記参照ラインと前記符号化ラインの各々について順次１バイトずつ読み込み、該バイト中のビットで表されるビットパターンに従って前記テーブルから検出できた同じ色のビット数に基づいて、変化画素の位置を求め、前記変化画素間の距離を演算してＭＭＲ符号化を行うデータ圧縮処理をするようにした。
【００１９】
【発明の実施の形態】
本発明の実施形態について、図３乃至図１６を参照して説明する。
従来のＭＭＲ符号化方式による圧縮処理では、変化画素ａ1 、ａ2 、ｂ1 及びｂ2 の位置を検出するに当たって、１ビットずつ処理が行われ、符号化には、ＭＲ符号テーブル、ＭＨ符号テーブルを参照して符号化が行われていた。
【００２０】
本実施形態においては、変化画素ａ1 、ａ2 、ｂ1 及びｂ2 の位置を１ビットずつ検出処理を行うのではなく、白または黒からなる画素の行を１バイトずつに区切り、１バイト内の白と黒のパターンを検出し、用意されたビットパターンのテーブルから、同じ色の画素列の長さと変化画素の位置を求めるようにした。このテーブルを図１に示した圧縮処理装置１の参照テーブル部７に格納しておく。
【００２１】
そこで、１バイトを８ビットとして、画素の行を区切ったとき、８画素による白または黒の配列パターンを得ることができるが、白または黒による配列パターンの全て、つまり２５６通りのパターンを予測できる。この１画素を１ビットとし、例えば、白画素を０、黒画素を１とすると、０と１による２５６通りのビットパターンを作成できる。
【００２２】
ここで、ＭＭＲ符号方式による圧縮処理において、画素の行を１バイトずつに区切って同じ色の画素列の長さと色の変化画素の位置を求めるためには、５種類のテーブルを用意する。
その５種類のテーブルとは、１バイト中でｘビット目から右に連続している白の数を示したＡテーブル、１バイト中でｘビット目から右に連続している黒の数を示したＢテーブル、１バイト中で左端から連続する黒の数を示すＣテーブル、１バイト中で左端から連続する白の数を示すＤテーブル、そして、１バイト中でｘビット目の色（白か黒か）を示すＥテーブルである。
【００２３】
図３にＡテーブルを示す。なお、図では、一部を切り欠いて示した。８ビットの０と１の全ての配列は２５６通りのパターンがあるので、そのビットパターンをテーブルの縦方向に配置してある。テーブルの横方向、つまりｘ方向には、ｘビット目より右に連続する白の数がビットパターンに対応して記述されている。実際のＡテーブルとしては、ビットパターン自体に対応して白の数が記述されているわけではなく、ビットパターンが２進数で表されているので、これを１０進数で表記すると、０から２５５となって、Ａテーブル中のＮＯ欄に示されるように、ビットパターンを２５６通りで示すことができる。
【００２４】
Ａテーブル中の白の数には、当該画素を含めないので、例えば、ＮＯ．０で見ると、０ビット目の画素から右に連続した白の数は７となり、３ビット目であれば、その数は４となる。また、ＮＯ．４を見ると、４ビット目の画素から右に続く白の画素が無いので、白の数は０となり、５ビット目の画素は黒であるが、当該画素から続く白の画素が一つ存在するので、その白の数は１となる。
【００２５】
図４にＢテーブルを示す。ＢテーブルもＡテーブルと同様な手法により作成されているが、テーブルの横方向、つまりｘ方向には、ｘビット目より右に連続している黒の数がビットパターンに対応して記述されている。テーブルの見方は、Ａテーブルと同様である。
図５にＣテーブル及びＤテーブルを示す。これらのテーブルは、各ビットパターンに対応して、１バイト中における左端のビットからの連続した同じ色の画素数を表している。これらのテーブルでは、当該画素も含めた数となっており、縦方向には、Ａ、Ｂテーブル同様に、ビットパターンの２５６通りが配置されている。
【００２６】
Ｃテーブルでは、左端のビットからの連続した色が白の場合を、そして、Ｄテーブルでは、黒の場合を示している。例えば、ＮＯ．０を見ると、８ビット全てが白の画素であるので、Ｃテーブルでは、黒の数は０であり、また、Ｄテーブルでは、白の数は８となる。さらに、ＮＯ．４を見ると、５ビット目に黒の画素が一つ存在するが、Ｃテーブルでは、左端から連続した黒でないので、黒の数は０であり、また、Ｄテーブルでは、左端から白が続いて存在するので、白の数は５となる。
【００２７】
図６にＥテーブルを示す。１バイト中でｘビット目の色を示すものであり、縦方向には、他のテーブル同様に、２５６通りのビットパターンに従って、１バイト中のｘビット目の色が各ビット毎に記述されている。この色は、ここでは、白と黒の画素の場合であるので、白の画素を０を、黒の画素を１として表している。
【００２８】
例えば、ＮＯ．０を見ると、８ビット全てが白の画素であるので、各ビット全て０である。さらに、ＮＯ．４を見ると、５ビット目に黒の画素が一つ存在するので、５ビット目が黒でることを１で示し、他のビットは０と記述される。
以上のＡ乃至Ｅの５種類のテーブルを参照テーブル部７に格納しておき、圧縮処理部５において、変化画素ａ1 、ａ2 、ｂ1 及びｂ2 の位置、または、同じ画素の長さを検出するために、各テーブルを当該画素が白か黒かで使い分けて参照する。
【００２９】
ここで、具体的な例を、図２に示された符号化ラインにおける画素ａ1 の位置を求める場合ついて説明する。
図２（Ａ）では、ａ0 が白の場合であり、１バイト中にａ0 とａ1 とがともに存在する場合である。
この１バイトを見ると、ビット配列は、０００００１１１であることが分かるので、Ａテーブル上で、このビットパターンをサーチする。このビットパターンは７を表しているので、Ａテーブル上のＮＯ．７を見ることになる。そして、ａ0 は、１ビット目であるから、ＮＯ．７の行で、１ビット目の欄を見ると、この１ビット目から右に連続する白の数は、３であることが読める。
【００３０】
そうすると、ａ0 が１バイト中の先頭から２ビットであるので、先頭から白の画素が続く数は、２＋３＝５となる。変化画素、ここでは黒の画素はこれらの白の画素に続くとして、白の５ビットの次をａ1 の位置とすることによって、図２（Ａ）の符号化ラインにおけるａ1 の位置を求めることができる。
なお、ａ0 の色が黒である場合には、Ａテーブルでなく、Ｂテーブルを参照することになる。
【００３１】
次に、図２（Ｂ）に示すように、ａ0 とａ1 とが異なるバイトに跨って存在する場合において、ａ1 の位置を求める例を説明する。この場合、ａ0 は白であるとする。
先ず、最初の１バイト中のａ0 から右に何ビット白が連続しているかを、Ａテーブル上でサーチする。８ビット全て白であるから、ＮＯ．０と分かり、１ビット目の欄を見ると、６であることが読める。
【００３２】
次に、次の１バイトについて、Ｄテーブル上でサーチする。ところが、このバイト中には、黒がなく、全て白であるので、ＮＯ．０と分かる。このバイトでは、このバイトの先頭のビットについて見なければならないから、０ビット目の欄を見ると、白の連続する数が８であることが読める。
そして、図２（Ｂ）の場合には、３番目の１バイト中で初めて黒が登場する。このビットパターンは０００００１１１であるので、ＮＯ．７と分かり、Ｄテーブル上のＮＯ．７により、このバイトの先頭から右に連続する白の数は、０ビット目の欄をみて、白の連続する数が５であることが読める。
【００３３】
このようにして、白が連続した後に最初に黒が検出される位置まで、１バイトずつ繰り返しＡテーブル及びＤテーブルを参照してサーチを行う。黒が検出されると、最初の黒の位置をａ1 とするので、ａ1 のアドレスは、ａ0 の２バイト先で先頭から６番目となる。ａ0 から連続した白の数は、６＋８＋５＝１９となり、さらに＋１をして、ａ1 の位置は、ａ0 から右に２０ビット目となる。
【００３４】
なお、この場合もａ0 を白としたが、ａ0 が黒の場合には、Ｂテーブル及びＣテーブルを参照することになる。
以上のように、１バイト毎のビットパターンに従って各テーブルを参照することによって、変化画素の位置及び同じ色の連続する画素の長さを検出するようにしたので、従来の１ビット毎に検出を行う場合に比較して、大幅に処理時間の短縮を図ることができる。例えば、図２（Ｂ）の場合では、従来であれば、変化画素ａ1 の位置を求めるのに、２０回処理を行わなければならなかったが、この実施形態によれば、６回の処理を行えばその位置を求めることができる。
【００３５】
これまで、１バイト毎のビットパターンに従って各テーブルを参照することについて説明したが、次に、ＭＭＲ符号化方式による圧縮処理において、符号化ラインの変化画素ａ0 、ａ1 及びａ2 、そして参照ラインのｂ0 、ｂ1 及びｂ2 に関して検出し、それぞれの距離を求める処理の詳細を、図７の具体的ビットパターンを参照しつつ、図８乃至図１６に示したフローチャートを参照して説明する。
【００３６】
図７は、図２（Ｂ）と同様であるが、符号化ラインの上に参照ラインを付加して示しており、白の画素は細線で示し、０を挿入した。黒の画素は太線で示し、１を挿入した。そして、図７に示したビットパターンはある途中の行に対する符号化処理を行っているとして示した。
ここで、図２（Ｂ）に示した従来のＭＭＲ符号化方式による場合には、参照ラインにある変化画素ｂ1 の位置を求めるには、起点変化画素ａ0 から１ビットずつシフトして行っていたので、参照ライン上の起点変化画素ｂ0 を必要としなかったが、この実施形態では、１バイト毎のビットパターンに従って各テーブルを参照することによって、各ライン上で各変化画素の位置を求めることから参照ライン上の起点画素ｂ0 を必要とする。
【００３７】
図８は、この実施形態によるＭＭＲ符号化方式による圧縮処理の全体的な概略を説明するフローチャートであり、このフローチャート中に示した各ステップの詳細については図９乃至図１６を参照して後述する。
図７を参照しつつ圧縮処理の概要を説明する。
前の符号化が終了して、白の起点変化画素をａ0 （２番ビット）と設定されたとする。このとき参照ライン上においても、起点画素を設定する必要があるので、参照ライン上で白の起点変化画素ａ0 の真上の画素を起点画素ｂ0 （２番ビット）とする（ステップＳ１）。
【００３８】
ここで、処理の高速化のために、ａ0 が白か黒かで処理を分けている（ステップＳ２）。
図７の場合には、白であり（Ｙ）、次に、設定した参照ラインの起点画素ｂ0 が白か黒かを判断する（ステップＳ３）。
ところで、参照ライン上の変化画素ｂ1 が、起点変化画素ａ0 より右で、ａ0 とは反対色の最初の変化画素でなければならない。そうすると、ｂ0 が白である場合には（Ｎ）、ｂ0 に連続して続く白の数を求めることによって、ａ0 とは反対色の最初の変化画素ｂ1 を簡単に検出できる（ステップＳ６）。
【００３９】
しかし、ｂ0 がａ0 と反対色の黒であると（Ｙ）、このｂ0 に続いて黒の画素がどこまで連続するかを検出しなければならない。そして、黒の最初の変化画素を検出するには、ｂ0 に続く黒の画素列の次にくる白の画素（４番ビット）を検出しなければならない。そのため、参照ライン上でｂ0 の位置から最初の白の位置を求める必要がある（ステップＳ４）。
【００４０】
次いで、ｂ0 の位置から最初の白の位置が分かれば、この最初の白の位置から連続する白の数を求めれば、最初の黒の変化画素ｂ1 （２３番ビット）を検出できる（ステップＳ５）。
変化画素ｂ1 の位置が検出できれば、黒の画素がｂ1 に連続して数を求めれば、変化画素ｂ2 の位置（２７番ビット）を求めることができる（ステップＳ７）。
【００４１】
これまで、参照ライン上のｂ1 及びｂ2 の位置を求めることができたので、次に、符号化ライン上の変化画素ａ1 の位置を求める（ステップＳ８）。ここでは、ａ0 が白の画素であるので、ａ0 に連続した白の数を検出することにより、符号化ライン上の最初の変化画素ａ1 の位置を求めることができる。
ここで、変化画素ａ1 、ｂ1 及びｂ2 の位置を求めることができたので、ａ0 からａ1 の、ａ0 からｂ1 の、そして、ａ0 からｂ2 までの各距離を演算して求める。これらの位置関係と各距離に基づいて、水平モード、垂直モード及びパスモードの符号化処理を行う（ステップＳ９）。
【００４２】
このステップＳ９では、さらに、変化画素ａ2 の位置（２７番ビット）を求め、求めたａ2 の位置を次の符号化のための起点変化画素ａ0 の位置とする。
これで、新たな起点変化画素ａ0 に基づき符号化処理を行い、順次符号化処理を行い、当該行について符号化が終了したならば、今符号化を終了したラインを次の符号化のための参照ラインに設定して、次のラインを符号化していく（ステップＳ１０）。
【００４３】
以上の処理フローは、図７に示すように、起点変化画素ａ0 が白の場合であったが、図８に示したステップＳ１１からステップＳ１７の処理フローは、起点変化画素ａ0 が黒の場合を示している。しかし、ａ0 が黒の場合の処理フローは、基本的にはａ0 が白の場合の処理フローと同様であるので、説明を省略する。
ただ、ａ0 が黒の場合の処理フローでは、ａ0 が白の場合の処理フローでの色を反転したものであり、このとき、位置を求める際の参照テーブルが異なっている。
【００４４】
図８を参照して、本実施形態によるＭＭＲ符号化方式の圧縮処理に関する全体フローについて説明したが、次に、図９乃至図１６を参照して、図８における各ステップの詳細を説明する。
先ず、図８のステップＳ１の詳細フローを図９に示す。図９に示したステップＳ１０１乃至ステップＳ１０５は、符号化ラインの起点画素ａ0 及び参照ラインの起点画素ｂ0 を初期化し設定する処理フローを示している。
【００４５】
参照ラインを初期化する（ステップＳ１０１）。符号化ラインが１行目の場合には、参照ラインを設定できないので、１行目だけは、ＭＨ符号化方式で実行する。次の行の符号化で参照ラインを設定する（ステップＳ１０２）。
次いで、符号化ライン上の起点変化画素ａ0 の初期化を行う（ステップＳ１０３）。そして、このａ0 の初期化は１行が終了するまで、順次繰り返して実行される（ステップＳ１０４）。
【００４６】
符号化ライン上の起点変化画素ａ0 が決まると、参照ライン上でａ0 の真上の画素（２番ビット）を参照ライン上の起点画素とし、ｂ0 と設定する（ステップＳ１０５）。
ここで、行の一番先頭の処理の場合には、ｂ0 の色を白と設定するが、その他の場合には、図６のＥテーブルをサーチして、ｂ0 の色が何であるかを求める。例えば、図７のようであれば、１バイトのビットパターンが１１１０００００であるので、このパターンは、ＮＯ．２２４に該当し、そして、ｂ0 は１ビット目であるので、ｂ0 の色は、Ｅテーブルから黒であることが分かる。
【００４７】
次に、参照ライン上で起点画素ｂ0 が設定されると、ａ0 が白か黒かで処理が分かれる（ステップＳ２）。
図７に示した符号化ラインによれば、ａ0 の位置の画素は白であるので（Ｙ）、ステップＳ３に進む。ａ0 の位置の画素は黒であれば（Ｎ）、ステップＳ１１に進む。
【００４８】
ステップＳ３では、起点画素ｂ0 の色が白か黒かによって、参照ライン上で変化画素ｂ1 の位置を求めるための処理手順が異なるので、２方向に分かれる。
ステップＳ１０５で設定されたｂ0 は、図７に示した参照ラインによれば、Ｅテーブルをサーチして、その画素の色が黒となっているので（Ｙ）、ステップＳ４に進む。ステップＳ４の詳細が図１０に示される。
【００４９】
変化画素ｂ1 は、参照ライン上にあって、ａ0 より右で、ａ0 とは反対の色の最初の変化画素である。そのため、図７のように、起点画素ｂ0 の色が黒であると、ｂ0 に連続する黒がどこまで続くのかを求める。参照ライン上のｂ0 画を含まれる１バイトのビットパターンから、ｂ0 が存在するアドレスの中でｂ0 の位置から右にいくつ黒が連続しているかを図４のＢテーブルを参照して求める（ステップＳ１１１）。
【００５０】
このビットパターン１１１０００００はＮＯ．２２４であり、ｂ0 が１ビット目であるので、Ｂテーブルから、黒の連続数が１と求まる。
ここで、この黒の連続状態がどこまで続くのかが判断される（ステップＳ１１２）。最初の１バイト中でｂ0 の位置とステップＳ１１１で求めた黒の連続数を加算して、２＋１＝３となる。この数が８以下であることは（Ｎ）、ｂ0 を含む黒の連続状態が１バイト中に納まっており、続いて白の画素が存在することになる。そのため、連続黒数３に１を加算した位置（４番ビット）を白の変化画素の位置とする（ステップＳ１１５）。
【００５１】
一方、ステップＳ１１２で、黒の連続数が８となった場合（Ｙ）には、１バイト中の全てが黒であることを意味する。そのため、ｂ0 が存在するアドレスから、１行終わるか白が見つかるまで、１バイトずつ順次サーチしていく（ステップＳ１１３）。
そこで、参照ラインが終わっても、白が検出されない場合、次の行の先頭を白にする。白が検出された場合、白が検出された１バイトのビットパターンに従って、図５のＣテーブルから、そのバイトの先頭からの連続黒数を求め、ｂ0 からの連続黒数を演算する。そして、この連続黒数に１を加算して、その数の位置を白の変化画素とする（ステップＳ１１４）。
【００５２】
ここで、参照ラインにおけるｂ0 を含む連続黒の次に続く白の変化画素を求めることができたので、ステップＳ５に進む。ステップＳ５の詳細なフローが図１１に示される。
上で求めた白の変化画素が次の行の先頭であるかが判断される（ステップＳ１２１）。この白の変化画素が次の行の先頭にある場合（Ｙ）、この白の変化画素の位置をｂ1 とする（ステップＳ１２２）。
【００５３】
一方、図７に示されるように、変化画素の白（４番ビット）が次の行の先頭でない場合（Ｎ）、次の白が存在するアドレスの中で、白の位置から右にいくつ白が連続しているかを求める（ステップＳ１２３）。ここで、ビットパターン１１１０００００に基づき、図３のＡテーブルを使用すると、ＮＯ．２２４の３ビット目をみると、この１バイト中で、４番ビットの白から右に連続白数が４と分かる。
【００５４】
そこで、４番ビットの白から、白の画素がどこまで存在するのかを見なければならない。１バイト中で白の位置と連続白数を加算して８になるかを判断する（ステップＳ１２４）。
１バイト中で白の位置と連続白数が加算されて、その数が８より少ない場合（Ｎ）、１バイト中に再び黒の画素が存在することを意味する。この場合には、１バイト中で白の位置と連続白数を加算した次の位置を黒の変化画素ｂ1 とする（ステップＳ１２７）。
【００５５】
ステップＳ１２４で加算結果が８である場合（Ｙ）、１バイトの最後のビットまで白（８番ビット）が存在することになるので、次の１バイト（９番ビットから１６番ビットまで）について、黒が検出するサーチを行う（ステップＳ１２５）。白の存在するアドレスから１行終わるか黒（２３番ビット）が検出されるまで、１バイトずつ順次サーチを行う。
【００５６】
参照ラインが終わっても黒が検出されない場合、黒の変化画素ｂ1 の位置を次の行の先頭にするが、図７のように、３番目の１バイト（１７番ビットから２４番ビットまで）で検出されたとすると、図５のＤテーブル２を使用して、連続白数を求める。ビットパターン００００００１１に基づいて、ＮＯ．３を見ると、連続白数が６と求まる。そして、この連続白数６に１を加算して得た位置を、黒の変化画素ｂ1 の位置（２３番ビット）とする（ステップＳ１２６）。
【００５７】
一方、ステップＳ３で、ｂ0 が黒でなく白の場合には（Ｎ）、ステップＳ６に進む。ステップＳ６の詳細フローを図１２に示す。
図１２に示すフローの手順は、図１０に示したステップＳ１１１乃至ステップＳ１１４において、黒を白に読み替えると、基本的に同様であるので、ここでは説明を省略する。ただ、参照するテーブルが、図１０のフローでは、Ｂテーブル及びＣテーブルであるのに対し、図１２のフローでは、ｂ0 が白であることから、Ａテーブル及びＤテーブルに変えて使用される。
【００５８】
そして、図１２に示したフローでは、ｂ0 が白であるので、連続白数が求まれば、ｂ0 より右で最初の黒の変化画素を直ぐに検出でき、この連続白数に１加算した位置を変化画素ｂ1 とする（ステップＳ１３５）。また、図７のように、連続白数が１バイトの８を超える場合であっても、サーチしたバイト数分の８を含めた数に１を加算すれば、ｂ1 の位置を求めることができる（ステップＳ１３４）。
【００５９】
次に、ステップＳ５又はステップＳ６で、変化画素ｂ1 の位置が求められると、ステップＳ７に進み、参照ライン上の変化画素ｂ2 を求める。
ステップＳ７の詳細なフローを図１３に示すが、図１３に示されたフローは、図１１に示されたフローと基本的には、同様のものであるので、詳細な説明を省略する。
【００６０】
ただ、図１３では、図１１におけるフロー中の白の位置を、ｂ1 の位置と読み替えればよい。また、図１１では、Ａテーブル及びＤテーブルを使用したのに対し、図１３では、ステップＳ１４３でＢテーブルを、そしてステップＳ１４６でＣテーブルを使用する点が、そして、図１１のステップＳ１２２、ステップＳ１２６及びステップＳ１２７におけるｂ1 を、図１３のステップＳ１４２、ステップＳ１４６及びステップＳ１４においてはｂ2 となっている。
【００６１】
以上で、参照ライン上の起点画素ｂ0 、変化画素ｂ1 及びｂ2 の位置が求められたので、次に、ステップＳ８に進み、符号化ライン上の変化画素ａ1 の位置を求めることになる。
ステップＳ８の詳細なフローを図１４に示すが、図１４に示されたフローは、図１２に示されたｂ1 の位置を求めるフローと基本的には、同様のものであるので、ここでは詳細な説明を省略する。
【００６２】
ただ、図１４では、図１２におけるフロー中のｂ0 をａ0 に、ｂ1 をａ1 にそれぞれ読み替えればよい。また、図１２では、Ａテーブル及びＤテーブルを使用しているが、図１４でも、同様に、ステップＳ１５１でＡテーブルを、そしてステップＳ１５４でＤテーブルを使用している。
図１４に示されたステップＳ８で、ａ0 の位置からａ1 の位置が求められると、符号化に必要な変化画素の全ての位置が特定されたことになり、パスモード、垂直モード及び水平モードを判断できる。そこで、ステップＳ９に進む。
【００６３】
ステップＳ９の詳細フローを図１５に示す。
先ず、ａ0 からａ1 まで、ａ0 からｂ1 まで、そしてａ0 からｂ2 までの距離を求める（ステップＳ１６１）。図７であれば、ａ0 −ａ1 が２０、ａ0 −ｂ1 が２１、ａ0 −ｂ2 が２５となる。
次に、ａ1 の左側にｂ2 が存在するかどうかが判断される（ステップＳ１６２）。
【００６４】
ここで、ｂ2 がａ1 の左側にある場合（Ｙ）、パスモードであると判断し、パスモード符号化処理を実行する（ステップＳ１６３）。
このとき、ｂ2 の真下に存在する符号化ライン上の画素を次の起点画素とする（ステップＳ１６４）。
一方、ａ1 がｂ2 の左側にある場合（Ｎ）、ａ1 とｂ1 の相対距離を求め、その距離が３以下であるかどうかが判断される（ステップＳ１６５）。
【００６５】
そこで、図７のように、ａ1 とｂ1 との相対距離は１である場合（Ｙ）、垂直モード符号化処理を実行する（ステップＳ１６６）。図７の場合には、ａ1 がｂ1 の左側で、距離１に対応するコードを、ＭＲ符号テーブルから読み出し、コード０１０を出力する。
そして、ａ1 の位置について符号化が終了したので、ａ1 の位置を次の起点画素ａ0 とする（ステップＳ１６７）。
【００６６】
ステップＳ１６５で、ａ1 とｂ1 との相対距離が３を超える場合（Ｎ）、ａ1 の位置より右にある最初の変化画素ａ2 の位置を求めなければならない。このａ2 の位置を求めるには、図１２に示した詳細フローと同様の手順で実行すればよい。ただ、図１２におけるｂ0 をａ1 に、ｂ1 をａ2 に置き替え必要があり、ａ1 が白か黒かで参照するテーブルが異なり、白であれば、Ａテーブル及びＤテーブルを、黒であれば、Ｂテーブル及びＣテーブルを使用して、ａ2 の位置を求めることになる。
【００６７】
ａ1 とｂ1 との相対距離が３を超える場合は水平モードとし、符号化処理を実行する（ステップＳ１６９）。ＭＲ符号テーブルから水平モードのコード００１を読み出し、さらに、ＭＨ符号テーブルからその相対距離に対応するコードを読み出して付加する。
ここで、符号化が終了すると、ａ2 の位置を次の起点画素ａ0 とする（ステップＳ１７０）。
【００６８】
以上で、変化画素ａ0 、ａ1 、ａ2 、ｂ0 、ｂ1 及びｂ2 のそれぞれの位置を求め、符号化を終了し、順次、次の起点画素ａ0 が設定されると、この起点画素ａ0 を含む１バイトのビット列を読み出し、ステップＳ１０に進む。ステップＳ１０の詳細フローを図１６に示す。符号化ラインの１行全てについて符号化が終了するまで、図９のステップＳ１０４に戻る（ステップＳ１７１）。
【００６９】
そして、１行の符号化が終了すると、今回の符号化ラインを次の参照ラインにし、次に符号化する次の行を符号化ラインにする（ステップＳ１７２）。
さらに、符号化すべき全ての行について、以上の処理を終了するまで、図９のステップＳ１０２に戻り、以上の処理を繰り返す（ステップＳ１７３）。全ての行について、圧縮処理が行われるとフローは終了となる。
【００７０】
なお、これまで、ＭＭＲ符号化方式による圧縮処理を説明したが、他の符号化方式、例えば、ＭＨ符号化方式による場合であっても、本実施形態で示したように、画素列を１バイト毎に区切り、このビットパターンに従ってＡ乃至Ｅテーブルを参照し、当該ビットに連続する該ビットと同じ色の連続数を求め、変化画素の位置及び距離を演算する圧縮処理を適用できる。
【００７１】
以上に説明したように、本実施形態によれば、参照ライン上の起点画素ｂ0 及び変化画素ｂ1 、ｂ2 の位置、符号化ライン上の変化画素ａ1 、ａ2 の位置を求めるために、各ラインのビット列を１バイトずつに区切って、そのビットパターンに対応した１バイト中に連続する色の数を求めるようにしたので、変化画素の位置を１ビットずつシフトして処理する手順に比較して、大幅に処理時間を短縮することができる。さらには、起点画素ａ0 の色によって処理フローを分けることができるので、一層の処理時間の短縮化を図れる。
【００７２】
【発明の効果】
従って、本発明によれば、ＭＭＲ符号化方式による圧縮処理において、符号化ラインと参照ラインでの変化画素の位置を１バイトずつで順次処理できるので、圧縮処理の高速化を図ることができる。
【図面の簡単な説明】
【図１】圧縮処理装置の概要を説明する図である。
【図２】ＭＭＲ符号化方式による画素列の具体例を示す図である。
【図３】１バイト中でｘビット目より右に連続している白の数を表すＡテーブルを示す表である。
【図４】１バイト中でｘビット目より右に連続している黒の数を表すＢテーブルを示す表である。
【図５】１バイト中で左からの連続黒数を表すＣテーブルと、連続白数を表すＤテーブルを示す表である。
【図６】１バイト中でｘビット目の色を表すＥテーブルを示す表である。
【図７】本実施形態における画素列の具体例を示す図である。
【図８】本実施形態の圧縮処理における全体フローを示す図である。
【図９】図８のステップＳ１の詳細処理フローを示す図である。
【図１０】図８のステップＳ４の詳細処理フローを示す図である。
【図１１】図８のステップＳ５の詳細処理フローを示す図である。
【図１２】図８のステップＳ６の詳細処理フローを示す図である。
【図１３】図８のステップＳ７の詳細処理フローを示す図である。
【図１４】図８のステップＳ８の詳細処理フローを示す図である。
【図１５】図８のステップＳ９の詳細処理フローを示す図である。
【図１６】図８のステップＳ１０の詳細処理フローを示す図である。
【符号の説明】
１…圧縮処理装置
２…圧縮前データ記憶部
３…圧縮後データ記憶部
４…入力バッファ
５…圧縮処理部
６…出力バッファ
７…参照テーブル
ａ0 、ａ1 、ａ2 …符号化ライン上の変化画素
ｂ0 、ｂ1 、ｂ2 …参照ライン上の変化画素
【図１】
0003904370.tif 000002
【図２】
0003904370.tif 000003
【図３】
0003904370.tif 000004
【図４】
0003904370.tif 000005
【図５】
0003904370.tif 000006
【図６】
0003904370.tif 000007
【図７】
0003904370.tif 000008
【図８】
0003904370.tif 000009
【図９】
0003904370.tif 000010
【図１０】
0003904370.tif 000011
【図１１】
0003904370.tif 000012
【図１２】
0003904370.tif 000013
【図１３】
0003904370.tif 000014
【図１４】
0003904370.tif 000015
【図１５】
0003904370.tif 000016
【図１６】
0003904370.tif 000017