(57)【特許請求の範囲】
【請求項１】
プログラムされたコンピュータによって白画素および黒画素の連続数を符号化する方法であって、
画像データを走査して該画像データ中の符号化対象領域内で黒画素を含む矩形領域を検出する有効矩形領域検出工程と、
前記有効矩形領域検出工程により検出された矩形領域のライン毎に出現する白画素の連続数または黒画素の連続数を取得する連続数取得工程と、
前記連続数取得工程により取得された白画素の連続数または黒画素の連続数に基づいて、白画素の連続数を記述する長さ５ビットの白ランレングス符号と黒画素の連続数を記述する長さ３ビットの黒ランレングス符号とからなる長さ８ビットの最頻符号を生成する最頻符号生成工程と、
前記白画素の連続数が前記白ランレングス符号で表す最大値を超える場合に、前記最頻符号に続けて白画素の連続数を記述する長さ８ビットの超過白ランレングス符号を生成する超過白ランレングス符号生成工程と、
前記黒画素の連続数が前記黒ランレングス符号の最大値を超える場合に、前記最頻符号に続けて黒画素の連続数を記述する長さ８ビットの超過黒ランレングス符号を生成する超過黒ランレングス符号生成工程と、
を備えたことを特徴とするランレングス符号化方法。
【請求項２】
画像データを走査して該画像データ中の符号化対象領域内で黒画素を含む矩形領域を検出する有効矩形領域検出手段と、
前記有効矩形領域検出手段によって検出された矩形領域のラインごとに出現する白画素の連続数または黒画素の連続数を取得する連続数取得手段と、
前記連続数取得手段によって取得された白画素の連続数または黒画素の連続数に基づいてランレングス符号を生成するランレングス符号生成手段と、
を備え、
前記ランレングス符号生成手段は、
白画素の連続数に基づいて５ビットの白ランレングス符号を生成し、白画素の連続数が前記白ランレングス符号の最大値を超えるときは前記白ランレングス符号に続けて白画素の連続数を記述する長さ８ビットの超過白ランレングス符号を生成する白ランレングス符号生成手段と、
黒画素の連続数に基づいて３ビットの黒ランレングス符号を生成し、黒画素の連続数が前記黒ランレングス符号の最大値を超えるときは前記黒ランレングス符号に続けて白画素の連続数を記述する長さ８ビットの超過黒ランレングス符号を生成する黒ランレングス符号生成手段とからなる、
ことを特徴とする画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は白黒の２値画像データをランレングス（白画素または黒画素の連続する長さ）の符号化によって圧縮するためのランレングス符号化技術に関する。
【０００２】
【従来の技術】
通常ＯＣＲは、オペレータが記入した伝票をスキャナー等の光電変換読取り装置で２値画像として取り込み、その２値画像から「パターンマッチング」方式や「構造解析」手法を用いて文字を認識し、２値画像を文字コードに変換してコンピュータ装置に出力する。
しかし、ＯＣＲで文字を１００％認識することは理想であるが、実際には困難であり、誤った認識結果を出力する「誤認識」を生じたり、理解不能な文字として「認識不能」として判断結果を出力する場合がある。
このような結果に対してはオペレータが、例えば、コンピュータ装置に付属するキーボード等の入力装置から正しいデータを入力して認識結果を修正しなければならない。しかしながら、この場合、オペレータが読取らせた伝票或いは入力メモをその都度見ながら認識結果のチェックを行なって誤りを修正するという方法をとると作業効率が悪過ぎるので、ＯＣＲで認識した文字のイメージ画像（フィールドイメージ画像）をＯＣＲの認識結果と同時に、例えば、コンピュータ装置に付属するディスプレイ等の表示装置に表示してオペレータによる認識結果のチェックおよび修正を容易にするように考慮した方法が通常行なわれている。
【０００３】
ここで、イメージ画像をディスプレイ等に表示するには、ＦＤ（フロッピーディスク）やＨＤ（磁気ディスク）等の記憶媒体にＯＣＲで認識した文字のイメージ画像を保存しておかなければならないが、文字イメージであってもイメージ画像の保存は文字コードを保存する場合より容量を必要とすることは周知の通りである。そこで、イメージ画像を圧縮（符号化）して保存し、読み出し時に伸張（復号）するデータ圧縮方法が種々提案され用いられている。
【０００４】
その代表例の一つとして、ファクシミリ等で用いられているＭＨ圧縮がある。ＭＨ圧縮ではＡ４サイズ等のある程度大きな画像の中の色々な画像パターン（文書、図形、写真）に対しても高圧縮率となるような方式で符号化を行なっている。
すなわち、白、黒画素の長さに対応したＭＨ符号のテーブルを備え、画素の色と長さ（連続個数）に応じて各色を交互に符号化するものであり、符号化は走査線単位に画像の上から下に順に行なわれ、１ラインのデータを可変長の符号語列として符号化する。符号語はランレングスに従って、ターミネイティング符号およびメークアップ符号の中から選択される。０から６３画素までのランレングスは適当なターミネイティング符号だけで、６４以上のランレングスはメークアップ符号とターミネイティング符号の組合せで符号化される。
【０００５】
また、他の従来例としてランレングス符号化方式がある。ランレングス符号化方式は白および黒画素の連続数（白ラン、黒ラン）を符号化（通常は２値符号として記述）する方式であり、その例として、特開昭５１−１４２２０９号公報に開示の「２画像データのランレングス符号化方式」および特開平６−１８９１４５号公報に開示の「ラン長符号化方法」がある。
前者は、符号長を固定長とし、少ない制御コードとランレングスを数値変換することなしに符号長とするものであり、復号が簡単で圧縮処理を高速化できるという利点を有している。
また、後者はラン長符号の長さを指示する符号長エリアをラン長符号毎に設けるというものであり、画像の傾向に左右されず圧縮効率を向上させることができるという利点を有している。
【０００６】
【発明が解決しようとする課題】
しかしながら、上述したＭＨ圧縮方式では、ターミネイティング符号とメークアップ符号を合せると約１００種類におよぶ可変長符号を備え、これらの可変長符号の中から対応する符号により符号化されるため、特別な回路を設けずに、ソフトウエアだけで復号しようとすると、符号化されたデータと１つ１つの符号語とをマッチングしなければならない。すなわち、符号化されたデータから１つのランレングスを求めるには最大１００回のマッチングを行なうこととなり、処理に時間を要するという不具合があることから、ＭＨ圧縮方式は高圧縮率を実現できるが、特別な回路なしにソフトウエアだけで伸張処理を行なうような場合、例えば、符号化されたデータを伸張しながらディスプレイ等に表示するなどソフトウエアによる高速処理を要する用途には適当でないという問題点があった。
また、前述した特開昭５１−１４２２０９号公報に開示の技術では、ソフトウエアによる高速処理を実現することはできるが、符号語が固定長であり、しかも、白ランおよび黒ランともに同じ符号長であるため、高効率の圧縮ができないという不具合があった。
【０００７】
さらに、ＯＣＲのフィールドイメージのような画像では、黒ランの出現確率の分布は２，３，４程度が大部分を占めるのに対して、上記従来技術では符号語調を８ｂｉｔに割当てているため、黒ランが例えば４としても上位５ｂｉｔは使用されない無効なデータであり、黒ランの場合、そのような無効データの出現確率が高くなり、圧縮効率を低下させることとなる。また、符号語長を３ｂｉｔとして、黒ランを効率良く符号化しようとしても、白ランを３ｂｉｔで表現できる白ランの出現確率はきわめて低く、これによっても圧縮効率が低下する。すなわち、上記従来技術では高速化は実現されるが圧縮率が低いという問題点があった。
【０００８】
また、前述した特開平６−１８９１４５号公報に開示の技術では、画像の傾向に左右されず圧縮効率を向上させることができるが、長い白ランと短い黒ランの連続で構成される画像イメージデータ、例えば、ＯＣＲのフィールドイメージ画像のように文字や数字が一定の間隔で記入されているような画像イメージデータ、が出現すると冗長性が生じて圧縮効率が低下するという不具合があった。
【０００９】
本発明は、上記従来技術の問題点を解消するために創案されたものであり、ＯＣＲのフィールドイメージ画像等のような小さな領域に文字や数字が密に存在するような画像を効率良く高速に符号化し得る２値画像のランレングス符号化方法および画像処理装置の提供を目的とする。
【００１０】
【課題を解決するための手段】
上記課題を解決するために、請求項１に記載の発明のランレングス符号化方法では、プログラムされたコンピュータによって白画素および黒画素の連続数を符号化する方法であって、画像データを走査して該画像データ中の符号化対象領域を含む矩形領域を検出する有効矩形領域検出工程と、
有効矩形領域検出工程により検出された矩形領域のライン毎に出現する白画素の連続数または黒画素の連続数を取得する連続数取得工程と、連続数取得工程により取得された白画素の連続数または黒画素の連続数に基づいて、白画素の連続数を記述する長さ５ビットの白ランレングス符号と黒画素の連続数を記述する長さ３ビットの黒ランレングス符号とからなる長さ８ビットの最頻符号を生成する最頻符号生成工程と、白画素の連続数が白ランレングス符号で表す最大値を超える場合に、最頻符号に続けて白画素の連続数を記述する長さ８ビットの超過白ランレングス符号を生成する超過白ランレングス符号生成工程と、黒画素の連続数が黒ランレングス符号の最大値を超える場合に、最頻符号に続けて黒画素の連続数を記述する長さ８ビットの超過黒ランレングス符号を生成する超過黒ランレングス符号生成工程と、を備えたことを特徴とする。
【００１１】
また、請求項２に記載の発明の画像処理装置では、画像データを走査して該画像データ中の符号化対象領域を含む矩形領域を検出する有形矩形領域検出手段と、有形矩形領域検出手段によって検出された矩形領域のラインごとに出現する白画素の連続数または黒画素の連続数を取得する連続数取得手段と、連続数取得手段によって取得された白画素の連続数または黒画素の連続数に基づいてランレングス符号を生成するランレングス符号生成手段と、を備え、ランレングス符号生成手段は、白画素の連続数に基づいて５ビットの白ランレングス符号を生成し、白画素の連続数が白ランレングス符号の最大値を超えるときは白ランレングス符号に続けて白画素の連続数を記述する長さ８ビットの超過白ランレングス符号を生成する白ランレングス符号生成手段と、黒画素の連続数に基づいて３ビットの黒ランレングス符号を生成し、黒画素の連続数が黒ランレングス符号の最大値を超えるときは黒ランレングス符号に続けて白画素の連続数を記述する長さ８ビットの超過黒ランレングス符号を生成する黒ランレングス符号生成手段とからなる、ことを特徴とする。
【００１２】
【発明の実施の形態】
図１は、本発明のランレングス符号化方法を適用した画像処理装置（コンピュータ装置）のランレングス符号化手段の一実施例の構成を示すブロック図であり、ランレングス符号化手段１０は、有効矩形領域検出手段１１、ライン制御手段１２、白ランレングス検出手段１３、黒ランレングス検出手段１４、ランレングス符号生成手段１５および１ライン終了符号生成手段１６から構成されている。
【００１３】
なお、上記構成中、少なくとも、白ランレングス検出手段１３、黒ランレングス検出手段１４およびランレングス符号生成手段１５はプログラムで構成されており、ＲＯＭ，或いはＦＤ（フロッピーディスク）、ＨＤ（磁気ディスク）等の記録媒体（図示せず）に記録され、画像処理装置の起動時にＲＡＭ（図示せず）に取込まれ、ＯＳ（オペレーションシステム（図示せず））の下でＣＰＵ（図示せず）の制御によって実行される。
【００１４】
有効矩形領域検出手段１１はオプションであり、画像データの中から符号化対象である文字等の画像データを全て包括する矩形領域を求め、そのオフセット座標を求め、そのオフセット座標を符号化データに付加する（有効矩形領域検出手段１１によるオフセットについては＜第２の実施形態＞で述べる）。
【００１５】
＜第１の実施形態＞
本実施形態は有効矩形領域検出手段１１を用いない例である。ライン制御手段１２は、１ラインが終了したか否かを調べ、終了していない場合で、制御フラグの値が白ランレングス検出手段１３への制御移行を意味する場合には白ランレングス検出手段１３に制御を渡し、制御フラグの値が黒ランレングス検出手段１４への制御移行を意味する場合には白ランレングス検出手段１４に制御を渡す。また、１ラインが終了した時には１ライン終了符号生成手段１６に制御を渡す。
【００１６】
白ランレングス検出手段１３は元データ（光電変換された画像データ（ラスタデータ））を調べ、出現した画素が白画素の場合にそのラン数（連続数）を調べ、白画素以外のデータが出現した場合にはランレングス符号生成手段１５に制御を渡す。
【００１７】
同様に、黒ランレングス検出手段１４は元データを調べ、出現した画素が黒画素の場合にそのラン数を調べ、黒画素以外のデータが出現した場合にはランレングス符号生成手段１５に制御を渡す。
【００１８】
ランレングス符号生成手段１５は、白ランレングス検出手段１３から制御を渡された場合にはその白ラン数を符号化して所定長ＬＷの白ランレングス符号とし、黒ランレングス検出手段１３から制御を渡された場合にはその黒ラン数を符号化して所定長ＬＢの黒ランレングス符号とし、白ランレングス符号と黒ランレングス符号で長さＬ（Ｌ＝ＬＷ＋ＬＢ）の最頻符号を構成する。そして、白ランレングス検出手段１３から制御を渡された場合で、白画素の連続数が白ランレングス符号の最大値（２LW−１）以下の場合には制御フラグの値を黒ランレングス検出手段１４への制御移行を意味する値（例えば、０）にしてライン制御手段１２に制御を渡す。また、黒ランレングス検出手段１４から制御を渡された場合で、黒画素の連続数が黒ランレングス符号の最大値（２LB−１）以下の場合には制御フラグの値を白ランレングス検出手段１３への制御移行を意味する値（例えば、１）にしてライン制御手段１２に制御を渡す。
【００１９】
また、白画素の連続数が白ランレングス符号の最大値（２LW−１）を超える場合に、最頻符号に続けて白画素の連続数を記述する長さＬの超過白ランレングス符号を生成し、白画素の連続数が白ランレングス符号の最大値と生成された超過白ランレングス符号の特定値ｍの和を超える場合に、白ランレングス符号の最大値（２LW−１）と生成された超過白ランレングス符号の特定値ｍの和が該白画素の連続数を超えるまで生成された超過白ランレングス符号に続けて更に超過白ランレングス符号を生成し、制御フラグの値を黒ランレングス検出手段１４への制御移行を意味する値にしてライン制御手段１２に制御を渡す。
【００２０】
一方、黒画素の連続数が黒ランレングス符号の最大値（２LB−１）を超える場合に、最頻符号に続けて黒画素の連続数を記述する長さＬの超過黒ランレングス符号を生成し、黒画素の連続数が黒ランレングス符号の最大値（２LB−１）と生成された超過黒ランレングス符号の特定値ｍの和を超える場合に、黒ランレングス符号の最大値と生成された超過黒ランレングス符号の特定値ｍの和が該黒画素の連続数を超えるまで生成された超過黒ランレングス符号に続けて更に超過黒ランレングス符号を生成し、制御フラグの値を白ランレングス検出手段１３への制御移行を意味する値にしてライン制御手段１２に制御を渡す。
【００２１】
なお、上記特定値ｍはｍ＝２L−１の範囲内で任意であるが、ｍ＝２L−２，或いはｍ＝２L−１が望ましく、特に、ｍ＝２L−２が望ましい。これは、１ライン終了判定時に付加する１ライン終了符号をｍ＝２L−１とする場合に、その判定（プログラム）を簡単に
（構成）すると共に超過白（黒）ランレングス符号の最大値を最大（２L−２）にすることができることによる（ｍ＝２L−１とした場合は、超過白（黒）ランレングス符号の最大値を２L−１にできるが、１ライン終了判定がやや複雑となる）。
【００２２】
なお、本発明では、最頻符号，超過白（黒）ランレングス符号および１ライン終了符号の長さは同一でも異なっていてもよいが、白ランレングス符号の長さと黒ランレングス符号の長さはＬＷ＋ＬＢ＝Ｌを満足する必要がある（例えば、Ｌ＝８の場合には通常文書ではＬＷ＞ＬＢが望ましい（後述するように黒画素の連続数の最頻値は１〜７（＝２３−１）の間にあるのでＬＢ＝３が望ましく、この場合はＬＷ＝５となる））。
【００２３】
なお、実施例では最頻符号，超過白（黒）ランレングス符号および１ライン終了符号の長さを一定（Ｌ）としている。最頻符号，超過白（黒）ランレングス符号および１ライン終了符号の長さを一定とすることは、これらの長さＬをコンピュータ（ＣＰＵ）の処理単位語長と同一にできるので処理上望ましい。
【００２４】
図２は、本発明のランレングス符号化により生成する符号の一実施例を示す図である。本実施例は最頻符号、超過白（黒）ランレングス符号および１ライン終了符号の長さを一定（８ビット）とした例であるが、上述したように、これらの符号の長さは８ビットに限られず、また、それぞれ異なっていてもよい。
【００２５】
図２で、（ａ）は最頻符号の構成を示し最頻符号２０は５ビットの白ランレングス符号２１および３ビットの黒ランレングス符号２２から構成されている。
（ａ）の例では１０個の白ランと３個の黒ランが１個の最頻符号（白ランレングス符号２１と黒ランレングス符号２２）で表現されている。
なお、本実施例では白ランレングス符号２１を５ビット、黒ランレングス符号２２を３ビットとしたが、前述したように、白ランレングス符号２１の長さと黒ランレングス符号２２の長さが最頻符号２０の長さとなるように白ランレングス符号２１の長さと黒ランレングス符号２２の長さを決定すればよく、例えば、白ランレングス符号２１を４ビット、黒ランレングス符号２２を４ビットとしてもよい。しかし、通常の文書を読取り装置で読取って画素データを得た場合の黒画素の連続数の最頻値は統計によれば１〜７（＝２３−１）の間にあるので、本実施例では黒ランレングス符号２２の長さを３ビットとし、白ランレングス符号２１の長さを５とした。なお、本実施例では最頻符号２０中で白ランレングス符号２１を黒ランレングス符号２２より上位に位置させているが、黒ランレングス符号２２を白ランレングス符号２１より上位に位置させるように構成してもよい。
【００２６】
（ｂ）は、最頻符号２０と超過白ランレングス符号２３の生成規則を示す図である。
先ず、白画素の連続数（白ラン）が３１を超えると５ビットの白ランレングス符号２１では表現できないのでこの場合は（ｂ）に示す超過白ランレングス符号２３で残りの画素数を表現する。逆にいえば、白ランレングス符号２１が最大値３１（ビット表現では１１１１１）の場合には、最頻符号２０の後には（ｂ）に示すように超過白ランレングス符号２３が続けて生成される。なお、この場合白ランレングス符号２１の後の黒ランレングス符号２１の値は０（（ビット表現では０００）となる。
（ｂ）の例では白ラン３７、黒ラン４としているので、最初の最頻符号２０−１で、白ランレングス符号２１が最大値（３１）を表現し黒ランレングス符号２２は上述の生成規則によりゼロとされ、最頻符号２０−１の後に残りの白ラン（３７−３１＝６）を表現するための８ビットの超過白ランレングス符号２３が生成される。次に、黒ラン４を表現するための最頻符号２０−２が生成される。この場合は白ランレングス符号２１はゼロとされ値４の黒ランレングス符号２２（ビット表現では１００）が生成される。
【００２７】
（ｃ）は、最頻符号２０と１個の超過白ランレングス符号２３では白ランを表現し切れない場合の超過白ランレングス符号２３の生成規則を示す図である。最頻符号２０と１個の超過白ランレングス符号２３では白ランを表現し切れない場合には超過白ランレングス符号２３の後に、最頻符号２０と生成された超過白ランレングス符号２３の値の和が白ラン（白画素の連続数）を超えるまで白ランレングス符号２３を生成する。逆にいえば、白ランレングス符号２３の値が最大値で続く超過白ランレングス符号２３の値が最大値−１（実施例では２５４（（ビット表現では１１１１１１１０、以下、超過白ランレングス符号２３と記す）））の場合に更に超過白ランレングス符号２３を生成し、最頻符号２０と最頻符号２０に続けて生成された超過白ランレングス符号２３，・・と超過白ランレングス符号２３の和が白ランを超えるまで超過白ランレングス符号２３を続けて生成する。
なお、実施例では超過白ランレングス符号２３の値を超過白ランレングス符号２３の最大値−１としたが、最大値でもよく、任意の値ｍでよい。しかし、本実施例では後述するように１ライン終了符号の値を２５５（ビット表現では１１１１１１１１）としているので、１ライン終了符号有無の判定を簡単にするためと超過白（黒）ランレングス符号の最大値を最大にするために超過白ランレングス符号２３の値を２５４とした（８ビットの場合）。
（ｃ）の例では白ラン３００、黒ラン２としているので、最初の最頻符号２０−１で、白ランレングス符号２１が最大値（３１）を表現し黒ランレングス符号２２は上述の生成規則によりゼロとされ、最頻符号２０ー１の後に残りの白ラン（３００−３１＝１６９）を表現するための値２５４の超過白ランレングス符号２３と値１５（ビット表現では００００１１１１）の超過白ランレングス符号２３が生成される。次に、黒ラン２を表現するための最頻符号２０−２が生成される。この場合は白ランレングス符号２１はゼロとされ値２の黒ランレングス符号２２（ビット表現では０１０）が生成される。
【００２８】
（ｄ）は、最頻符号２０と超過黒ランレングス符号２４の生成規則を示す図である。
先ず、黒画素の連続数（黒ラン）が７を超えると３ビットの黒ランレングス符号２２では表現できないので、この場合は（ｄ）に示す超過黒ランレングス符号２４で残りの画素数を表現する。逆にいえば、黒ランレングス符号２２が最大値７（ビット表現では１１１）の場合には、最頻符号２０の後には（ｄ）に示すように超過黒ランレングス符号２４が続けて生成される。
【００２９】
（ｄ）の例では白ラン２、黒ラン９としているので、最初の最頻符号２０−１で、白ランレングス符号２１が２を表現し、黒ランレングス符号２２は最大値７を表現する。次に、上述の生成規則により最頻符号２０の後に残りの黒ラン（９−７＝２）を表現するための８ビットの超過黒ランレングス符号２４（ビット表現では００００００１０）が生成される。
【００３０】
（ｅ）は、最頻符号２０と１個の超過黒ランレングス符号２４では黒ランを表現し切れない場合の超過黒ランレングス符号２３の生成規則を示す図である。
最頻符号２０と１個の超過黒ランレングス符号２４では黒ランを表現し切れない場合には，白ランの場合（図２（ｃ））と同様に超過黒ランレングス符号２４の後に、最頻符号２０と生成された超過黒ランレングス符号２４の値の和が黒ラン（黒画素の連続数）を超えるまで黒ランレングス符号２４を生成する。逆にいえば、黒ランレングス符号２４の値が最大値で続く超過黒ランレングス符号２４の値が最大値−１（実施例では２５４（（ビット表現では１１１１１１１０、以下、超過黒ランレングス符号２４と記す）））の場合に更に超過黒ランレングス符号２４を生成し、最頻符号２０と最頻符号２０に続けて生成された超過黒ランレングス符号２４，・・，と超過黒ランレングス符号２４の和が黒ランを超えるまで超過黒ランレングス符号２４を続けて生成する。
なお、実施例では超過黒ランレングス符号２４の値を超過黒ランレングス符号２４の最大値−１としたが、超過白ランレングス符号２３と同様に最大値でもよく、任意の値ｍでよい。しかし、本実施例では超過白ランレングス符号２３と同様に超過黒ランレングス符号２４の値を２５４としている。
【００３１】
（ｅ）の例では白ラン３、黒ラン３０２としているので、最初の最頻符号２０−１の白ランレングス符号２１で３を表現し，黒ランレングス符号２２は最大値７を表現する。次に、最頻符号２０−１の後に残りの黒ラン（３０２−７＝２９５）を表現するための値２５４の超過黒ランレングス符号２４と値４１（ビット表現では００１０１００１）の超過黒ランレングス符号２４が生成される。
【００３２】
図３は本発明のランレングス符号化による１ライン分の画素符号化の説明図であり、説明上１ライン分の画素数を４８８（白ラン＝２８８、黒ラン＝３００）としている。
まず、最初に出現した画素を白画素とすると、白ランレングス検出手段１３はそのラン数をカウントし白ランのカウント値Ｃ＝２８８を得る。次のデータが白画素でないことを検知すると白ランレングス検出手段１３はランレングス符号生成手段１５に制御を移す。
【００３３】
ランレングス符号生成手段１５は、白ランのカウント値と白ランレングス符号２１の最大値ＭＷ＝３１を比較し、白ランのカウント値Ｃが白ランレングス符号２１の最大値ＭＷを超えている（２８８＞３１）ので、黒ランレングス符号２２の値をゼロとして表現して最頻符号２０ー１を生成する。
次に、白ランレングス符号２１の最大値ＭＷと超過白ランレングス符号２３の値ＯＷ＝２５４の和ＣＴ＝ＭＷ＋ＯＷをとって白ランのカウント値Ｃと比較すると白ランのカウント値の方が大きい（２８８＞２８５）ので、超過白ランレングス符号２３を生成する。さらに、ＣＴ＝ＭＷ＋ＯＷ＋ＯＷとするとＣＴが白ランのカウント値Ｃ以上となるので、超過白ランレングス符号２３（２８８−２８５＝３）を生成し、制御フラグを０としてライン制御手段１２に制御を渡す。
【００３４】
ライン制御手段１２で１ラインが終了したか否かを調べると２８８＜４８８であることから１ラインが終了していないものとして制御フラグの値を調べる。制御フラグの値が０であることから、ライン制御手段１２は黒ランレングス検出手段１４に制御を渡す。
【００３５】
黒ランレングス検出手段１４はそのラン数をカウントし黒ランのカウント値Ｃ＝２００を得る。次のデータが黒画素以外であることを検知すると黒ランレングス検出手段１４はランレングス符号生成手段１５に制御を移す。
【００３６】
ランレングス符号生成手段１５は、黒ランのカウント値Ｃと黒ランレングス符号２１の最大値ＭＢ＝７を比較し、黒ランのカウント値ＣＷが白ランレングス符号２１の最大値ＭＢを超えている（３００＞７）ので、白ランレングス符号２１の値をゼロとして表現して最頻符号２０−２を生成する。
次に、黒ランレングス符号２１の最大値ＭＢと超過黒ランレングス符号２３の値ＯＷ＝２５４の和ＣＴ＝ＭＢ＋ＯＷをとって黒ランのカウント値ＣＢと比較すると黒ランのカウント値以上（２００＜２５７）ので、超過黒ランレングス符号２３を生成し、制御フラグを１としてライン制御手段１２に制御を渡す。
【００３７】
ライン制御手段１２で１ラインが終了したか否かを調べると２８８＋２００＝４８８であることから、１ラインが終了したものとして１ライン終了符号生成手段１６に制御を渡す。
１ライン終了符号生成手段１６は超過黒ランレングス符号２３の後に８ビットの１ライン終了符号（２進表現で１１１１１１１１）を生成する。
【００３８】
図４は、本発明に基づくランレングス符号化のフローチャートであり、図１のライン制御手段１２、白ランレングス検出手段１３、黒ランレングス検出手段１４、ランレングス符号生成手段１５および１ライン終了符号生成手段１６の動作に相当する。
先ず、ランカウンタをゼロクリアする（Ｓ１）。
白ランレングス検出手段１３は出現した画素が白画素の場合にそのラン数（連続画素数）をカウントする（Ｓ２）。
出現した画素が白画素でない場合で且つカウント値が０でない場合にはＳ９に移行し、カウンタ値が０の場合にはＳ４に移行する（Ｓ３）。
黒ランレングス検出手段１４は出現した画素が黒画素の場合にそのラン数をカウントする（Ｓ４）。
出現した画素が黒画素でない場合で且つカウント値が０でない場合にはＳ６に移行し、カウント値が０の場合にはＳ２に移行する（Ｓ５）。
ランレングス符号生成手段１５は、カウント値Ｃと黒ランレングス符号の最大値ＭＢを比較し、カウント値Ｃが最大値ＭＢを超えている場合は、白ランレングス符号と最大値で表現された黒ランレングス符号からなる最頻符号を生成してＳ７に移行する。カウント値Ｃが最大値ＭＢ以下の場合にはカウント値Ｃを表現する黒ランレングス符号を生成して、制御フラグの値を白ランレングス検出手段１３への制御移行を意味する値（例えば、１）にしてＳ１２に移行する（Ｓ６）。
【００３９】
黒ランレングス符号の最大値ＭＢと超過黒ランレングス符号の最大値−１（以下、ＯＷ）の和ＣＴ＝ＭＢ＋ＯＷをとって黒ランのカウント値Ｃと比較し、ＣＴ＞Ｃの場合にはステップＳ８に移行し、ＣＴＣの場合には残りのラン数（Ｃ−ＭＷ）を表現する超過黒ランレングス符号を最頻符号２０に続けて生成し、制御フラグの値を白ランレングス検出手段１３への制御移行を意味する値にしてＳ１２に移行する（Ｓ７）。
【００４０】
さらに、和ＣＴがカウント値Ｃを超えるまでＣＴにＯＷを加え、超過黒ランレングス符号を続けて生成する。この場合、和ＣＴがカウント値Ｃを超えたとき生成される超過黒ランレングス符号の値は、和ＣＴがカウント値Ｃを超える直前の値をＣＴとしたときの黒ランの残数（Ｃ−ＣＴ）を表現する値とする。この超過白ランレングス符号を生成後、制御フラグの値を黒ランレングス検出手段１４への制御移行を意味する値にしてＳ１２に移行する（Ｓ８）。
【００４１】
ランレングス符号生成手段１５は、カウント値Ｃと白ランレングス符号の最大値ＭＷを比較し、カウント値Ｃが最大値ＭＷを超えている場合は、最大値で表現された白ランレングス符号とゼロ値で表現された黒ランレングス符号からなる最頻符号を生成してＳ１０に移行する。カウント値Ｃが最大値ＭＷ以下の場合にはカウント値Ｃを表現する白ランレングス符号を生成して、制御フラグの値を黒ランレングス検出手段１４への制御移行を意味する値（例えば、０）にしてＳ１２に移行する（Ｓ９）。
【００４２】
白ランレングス符号の最大値ＭＷと超過黒ランレングス符号の最大値−１（以下、ＯＷ）の和ＣＴ＝ＭＷ＋ＯＷをとって白ランのカウント値Ｃと比較し、ＣＴ＞Ｃの場合にはステップＳ１２に移行し、ＣＴＣの場合には残りのラン数（Ｃ−ＭＷ）を表現する超過白ランレングス符号を最頻符号に続けて生成し、制御フラグの値を黒ランレングス検出手段１４への制御移行を意味する値にしてＳ１２に移行する（Ｓ１０）。
【００４３】
さらに、和ＣＴがカウント値Ｃを超えるまでＣＴにＯＷを加え、超過白ランレングス符号を続けて生成する。この場合、和ＣＴがカウント値Ｃを超えたとき生成される超過白ランレングス符号の値は、和ＣＴがカウント値Ｃを超える直前の値をＣＴとしたときの白ランの残数（Ｃ−ＣＴ）を表現する値とする。この超過白ランレングス符号を生成後、制御フラグの値を黒ランレングス検出手段１４への制御移行を意味する値にしてＳ１２に移行する（Ｓ１１）。
【００４４】
ライン制御手段１２は１ラインが終了したか否かを調べ、１ラインが終了していない場合には制御フラグの値を調べ、制御フラグの意味が白ランレングス検出手段１４への制御移行を意味する値の場合にはＳ２に移行し、黒ランレングス検出手段１４への制御移行を意味する値の場合にはＳ４に移行する。また、１ラインが終了した場合にはＳ１３に移行する（Ｓ１２）。
【００４５】
１ライン終了符号生成手段１６は１ライン終了符号（符号長が８ビットの場合には２進表現で１１１１１１１１）を生成し、Ｓ１に移行する（Ｓ１３）。
【００４６】
［比較例］
図５は、従来方式のランレングス符号化方法と本発明のランレングス符号化方法によって生成される符号の比較説明図であり、本例では（ａ）に示すような数字「４７」の２値画像５０のラインＡ，Ｂを従来方式のランレングス符号化方法と本発明のランレングス符号化方法によって符号化した場合の符号列の長短を比較する（生成される１ライン分の符号列が短いほど圧縮効率がよい）。
【００４７】
先ず、ラインＡについては（ｂ）に示すように従来方式のランレングス符号化方法で生成される符号列５１の長さは６８ビットとなる。これに対して本発明のランレングス符号化方法で生成される符号列５１の長さは３８ビットとなり、本発明のランレングス符号化方法で生成される符号列のほうが明らかに短い。また、ラインＢについては（ｃ）に示すように従来方式のランレングス符号化方法で生成される符号列５２の長さは４８ビットとなる。これに対して本発明のランレングス符号化方法で生成される符号列５２の長さは３８ビットとなり、本発明のランレングス符号化方法で生成される符号列のほうが明らかに短い。
上記比較から明らかなように本発明のランレングス符号化方法で生成される符号列の圧縮効率は従来例よりも著しく向上し、かつ、ランレングス生成手順も簡単でプログラム化が容易であり、符号生成速度も早い。特に、図５（ａ）に示したように小さい領域に文字や数字等の画像情報が密に存在するＯＣＲのフィールドイメージのような２値画像データに対しては、従来方式よりも圧縮率の高い符号化を実現できる。
【００４８】
図６は、ＯＣＲのフィールドイメージ（２値画像）における黒ランレングスの分布図である。本発明に基づくランレングス符号化方法は図５の例では黒ランレングスが６画素以下の場合に効果を発揮するが、図６の分布図からは１００ｄｐｉのとき９８％が６画素以下であり、２００ｄｐｉのとき８５％が６画素以下であることがわかる。すなわち、本発明に基づくランレングス符号化方法はＯＣＲのフィールドイメージの符号化に極めて有効であることが実証される。
【００４９】
＜第２の実施形態＞
本実施形態はさらに、符号化の効率を高めるために有効矩形領域検出手段１１を用いた例である。
図７はＯＣＲのフィールドの一例を示す図であり、ＯＣＲのフィールドは図７（ａ）に示すように所定領域に記入欄７１が予め定められている。その中に記入された文字や数字等の画像７２を符号化する場合には、黒画素のない余白部分が発生することが多い。そこで、符号化する前に画像データを走査（プリスキャン）して有効矩形領域検出手段１１により全てあるいは部分的な黒画素を包括する矩形、すなわち、有効矩形領域７３を求め、その部分７３だけを本発明に基づくランレングス符号化方法により符号化する。
これにより、効率のよい符号化が可能となり、また、復号化においても有効矩形領域７３だけを復元すればよいので、処理時間が減少する。
【００５０】
有効矩形領域検出手段１１は、図７（ａ）に示すように符号化領域７０の上辺から下に向って黒画素が出現するまで走査し、下辺についても同様に走査する。
次に、図７（ｂ）に示すように左辺から右辺に向って黒画素が出現するまで走査し、右辺についても同様に走査することにより図７（ｃ）に示すように有効矩形領域７３を得ることができる。これを基に、オフセット座標値を決定し、オフセット座標（Ｘ，Ｙ）点から本発明に基づくランレングス符号化を開始する。
上記オフセット操作を加えることにより更に圧縮率を高め且つ高速処理を実現できる。
【００５１】
【発明の効果】
上記により明らかなように、本発明のランレングス符号化方法によればＯＣＲのように小さな領域に文字や数字が密に存在するような画像の符号化では、黒ランレングスが６画素以下の場合が１００ｄｐｉのとき９８％、２００ｄｐｉのとき８５％でほとんどの場合黒ランレングスを３ビットで表現し符号化できるので、効率のよい符号化ができ、高圧縮率で且つ高速な符号化が実現できる。
【００５２】
また、有効矩形領域を求めて有効矩形領域だけを符号化するように構成することにより、無駄な部分の符号化を行なうことなく必要な部分だけを符号化するようにできるので、更に効率のよい符号化できるので、より高圧縮率で且つ高速な符号化が実現できる。
【図面の簡単な説明】
【図１】    本発明のランレングス符号化方法を適用した画像処理装置（コンピュータ装置）のランレングス符号化手段の一実施例の構成を示すブロック図である。
【図２】    本発明のランレングス符号化により生成する符号の一実施例を示す図である。
【図３】    本発明のランレングス符号化による１ライン分の画素符号化の説明図である。
【図４】    本発明に基づくランレングス符号化のフローチャートである。
【図５】    従来方式のランレングス符号化方法と本発明のランレングス符号化方法によって生成される符号の比較説明図である。
【図６】    ＯＣＲのフィールドイメージ（２値画像）における黒ランレングスの分布図である。
【図７】    ＯＣＲのフィールドの一例を示す図である。
【符号の説明】
２０，２０−１，２０−２  最頻符号
２１  白ランレングス符号
２２  黒ランレングス符号
２３  超過白ランレングス符号
２４  超過黒ランレングス符号
７３  有効矩形領域
【図１】
0004260908.tif 000002
【図２】
0004260908.tif 000003
【図３】
0004260908.tif 000004
【図４】
0004260908.tif 000005
【図５】
0004260908.tif 000006
【図６】
0004260908.tif 000007
【図７】
0004260908.tif 000008