(57)【特許請求の範囲】
【請求項１】
複数の画素で構成される画素ブロックを単位に符号化された画像データを入力し、再符号化する画像符号化装置であって、
再符号化対象の符号化画像データを中間データとして格納する中間データ格納手段と、
該中間データ格納手段に格納された中間データを前記ブロック単位に復号し、復号した画像データをバッファに格納する復号手段と、
前記バッファに格納された画像データを解析し、文字線画を包含する前景画像領域を判別する判別手段と、
該判別手段で判別された前記前景画像領域の内部の画像データの個々の画素が、文字線画を構成する文字線画画素であるか、非文字線画画素であるかを識別して、識別情報を生成する識別手段と、
該識別手段で得られた識別情報を符号化し、出力する第１の符号化手段と、
前記前景画像領域の内部の前記文字線画画素の値を、周囲の非文字線画画素の値に基づいて決定される置換値で置換する置換手段と、
該置換手段による置換後の前記前景画像領域の内部の画像データから、前記ブロック単位に符号化データを生成し、出力する第２の符号化手段と、
前記前景画像領域の外部については、前記中間データ格納手段に格納された各画素ブロックの符号化データを参照して、且つ、画素値まで復元することなしに、符号化データを生成し、出力する第３の符号化手段と
を備えることを特徴とする画像符号化装置。
【請求項２】
前記復号手段は、前記中間データ格納手段に格納された符号化画像データの着目画素ブロックの符号化データを復号する度に、前記着目画素ブロックの前記中間データ格納手段における所在位置を特定するブロック情報を抽出する抽出手段を含み、
前記第３の符号化手段は、前記ブロック情報を参照することで、前記中間データ格納手段に格納された画素ブロックの符号化データを読出すことを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記識別手段は、前記前景画像領域の内部の各画素が、前記文字線画画素、前記非文字線画画素のいずれであるかを示す２値の情報を生成することを特徴とする請求項１に記載の画像符号化装置。
【請求項４】
前記第１の符号化手段は、符号化データに加えて、前記前景画像領域の内部の文字線画画素の色情報を出力することを特徴とする請求項１乃至３のいずれか１項に記載の画像符号化装置。
【請求項５】
前記第３の符号化手段は、前記中間データ格納手段に格納された画素ブロックの符号化データをそのまま出力することを特徴とする請求項１乃至４のいずれか１項に記載の画像符号化装置。
【請求項６】
前記再符号化対象の画像データは、前記画素ブロックを単位に、離散コサイン変換、量子化、エントロピー符号化された画像データであり、
前記第３の符号化手段は、前記中間データ格納手段に格納された画素ブロックの符号化データを量子化係数値まで復号し、高周波成分における予め設定された領域内の成分値を“０”でマスクし、再エントロピー符号化する手段を有する
ことを特徴とする請求項１乃至４のいずれか１項に記載の画像符号化装置。
【請求項７】
更に、前記識別手段で生成された識別情報を参照することで、前記前景画像領域の内部の着目画素ブロックが、前記文字線画画素を含むか否かを判定するブロック判定手段と、
前記着目画素ブロックが前記前景画像領域の内部に位置し、且つ、前記ブロック判定手段で前記着目ブロックが前記文字線画画素を含むと判定された場合、前記第２の符号化手段で生成された符号化データを選択して出力し、
前記着目画素ブロックが前記前景画像領域の内部に位置し、且つ、前記ブロック判定手段で前記着目ブロックが前記文字線画画素を含まないと判定された場合、前記第３の符号化手段で生成された符号化データを選択して出力し、
前記着目画素ブロックが前記前景画像領域の外部に位置する場合、前記第３の符号化手段で生成された符号化データを選択して出力する選択手段と
を備えることを特徴とする請求項１乃至６のいずれか１項に記載の画像符号化装置。
【請求項８】
前記再符号化対象の画像データは、前記画素ブロックを単位に、離散コサイン変換、量子化、エントロピー符号化された画像データであり、
更に、前記識別手段で生成された識別情報を参照することで、前記前景画像領域の内部の着目画素ブロックが、前記文字線画画素を含むか否かを判定するブロック判定手段を備え、
前記第２の符号化手段は、
前記バッファから着目画素ブロックの画像データを読み込み、離散コサイン変換、量子化を行い、量子化係数値を算出する第１の処理手段と、
前記中間データ格納手段から着目画素ブロックに対応する符号化データを読み込み、量子化係数値まで復号する第２の処理手段と、
前記ブロック判定手段で、前記着目画素ブロックが文字線画画素を含むと判定された場合、前記第１の処理手段で生成された量子化係数値を選択し、前記着目画素ブロックが文字線画画素を含まないと判定された場合、前記第２の処理手段で生成された量子化係数値を選択する選択手段と、
該選択手段で選択した量子化係数値における高周波成分の量が予め設定された閾値より多いか少ないかを判定する判定手段と、
該判定手段で、量子化係数値における高周波成分の量が前記閾値以下と判定した場合、前記選択手段で選択した量子化係数値における予め設定された領域内の成分値を“０”でマスクするマスク手段と、
前記判定手段で、量子化係数値における高周波成分の量が前記閾値よりも多いと判定された場合には、前記選択手段で選択した量子化係数値をエントロピー符号化し、
前記判定手段で、量子化係数値における高周波成分の量が前記閾値以下と判定された場合には前記マスク手段でマスク処理した後の量子化係数値をエントロピー符号化するエントロピー符号化手段と
を含むことを特徴とする請求項１乃至６のいずれか１項に記載の画像符号化装置。
【請求項９】
複数の画素で構成される画素ブロックを単位に符号化された画像データを入力し、再符号化する画像符号化装置の制御方法であって、
再符号化対象の符号化画像データを中間データとして記憶手段に格納する格納工程と、
該記憶手段に格納された中間データを前記ブロック単位に復号し、復号した画像データをバッファに格納する復号工程と、
前記バッファに格納された画像データを解析し、文字線画を包含する前景画像領域を判別する判別工程と、
該判別工程で判別された前記前景画像領域の内部の画像データの個々の画素が、文字線画を構成する文字線画画素であるか、非文字線画画素であるかを識別して、識別情報を生成する識別工程と、
該識別工程で得られた識別情報を符号化し、出力する第１の符号化工程と、
前記前景画像領域の内部の前記文字線画画素の値を、周囲の非文字線画画素の値に基づいて決定される置換値で置換する置換工程と、
該置換工程による置換後の前記前景画像領域の内部の画像データから、前記ブロック単位に符号化データを生成し、出力する第２の符号化工程と、
前記前景画像領域の外部については、前記記憶手段に格納された各画素ブロックの符号化データを参照して、且つ、画素値まで復元することなしに、符号化データを生成し、出力する第３の符号化工程と
を備えることを特徴とする画像符号化装置の制御方法。
【請求項１０】
コンピュータが読み込み実行することで、前記コンピュータを、請求項１乃至８のいずれか１項に記載の画像符号化装置として機能させることを特徴とするコンピュータプログラム。
【請求項１１】
請求項１０に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像データを符号化する符号化技術に関するものである。
【背景技術】
【０００２】
従来、画像を文字部分などの２値あるいは限定色で構成される前景画像と、自然画像などの前景画像以外の部分（以下、背景画像という）とに分離して、それぞれに別々の符号化方式を適用する符号化手法が用いられている。
【０００３】
例えば、符号化対象の画像データ内の文字領域を判別し、文字領域内の各画素を２値化して文字画像データを生成し、ＭＭＲを用いてこれを符号化する。一方、文字画像を構成する画素（一般には黒画素）を、その周囲の背景画像中の画素値で置換する。この結果、文字画像等の高周波成分が除去される。そして、この置換後の画像をＪＰＥＧを用いて符号化する。そして、ＭＭＲ符号化データ（前景画像の符号化データ）、ＪＰＥＧ符号化データ（背景画像の符号化データ）を統合し、オリジナル画像の符号化結果として出力する。
【０００４】
復号処理においては、背景画像の符号化データを復号する。そして、その復号して得られた背景画像の上に、前景画像（文字画像）の符号化データを復号して得られた文字画像の「文字」の部分だけを重ね合わせ、出力する。
【０００５】
なお、前景画像の代表的構成要素が文字としているが、必ずしもこれに限らない。要は、限定された色で構成され、かつ、シャープなエッジを有する要素、例えば、表の罫線や、線画、あるいは、簡易なクリップアートなどであっても構わないからである。
【０００６】
さて、上記のように、高周波成分を除去して得られた背景画像は、文字通り、高周波成分が無い、もしくは少ない。人間の視覚は、高周波成分については鈍感であるから、背景画像の解像度を多少落として、残りの高周波成分を削除したとしても、さほど目立たないので問題はない。そこで、背景画像の解像度を水平垂直とも１／２に落としてから符号化を行なう。この結果、解像度変換後の画像の画素数は、オリジナルの画像の１／４となるので、高い圧縮率で符号化データを生成することが可能になる。なお、復号側では、背景画像の符号化データを復号した後、その補間技術を用いて解像度を２倍（水平、垂直とも２倍）に変換する。そして、その上に、前景画像の復号結果を重ねることになる。かかる技術を開示した文献としては、特許文献１が挙げられる。
【特許文献１】特開２００２−７７６３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述のオリジナル画像から前景、背景画像に分離して符号化を行なう技術では、文字と自然画が混在した文書（以下、複合文書という）の構造を解析と、その分離処理に多くの時間を必要とする。例えば、この構造解析及び分離処理に要する時間が、１枚の原稿のスキャンに要する時間以上になる場合がある。この場合、単位時間当たりの原稿の読み取り枚数は、構造解析及び分離処理に要する時間に依存したものとなる。つまり、高速読取りが可能なイメージスキャナを用意したとしても、そのイメージスキャナの機能を発揮できないことになる。
【０００８】
この問題を解決する１つとして、次のような技術が考えられる。
【０００９】
先ず、イメージスキャナで読取って得た画像データについては、構造解析及び分離処理を行なわずに単純に符号化し、その符号化データを中間符号化データを記憶装置に記憶する。そして、この処理を、読取るべき原稿が存在する限り繰り返す。一方、記憶装置に格納された中間符号化データを復号し、復号して得られた画像データの構造を解析して前景と背景画像とに分離し、それぞれを別の符号化技術により再符号化を行なうことを繰り返す。
【００１０】
しかしながら、入出力機器の高解像度化に伴い、画像データの画素数は非常に多くなってきている。つまり、このように復号処理と再符号化処理を行うことは、ハードウェア、ソフトウェアのいずれによって行なったとしても、その処理にかかるの負荷は非常に大きなものとなる。
【００１１】
また、背景画像データの解像度を落として符号化する場合、前景と背景の誤判定による画質が劣化してしまうことも起こり得る。例えば、文字列のなかの一部の文字や、ひとつの文字を構成する画素の点や、線の一部が背景と判断された場合、解像度を落としてしまうことで、前景として符号化された部分と背景とした符号化された部分とで大きな画質差を生じる。
【００１２】
本願発明は、像域判定無しにブロック単位に符号化した多値の画像データを、再符号化するものである。そして、本発明は、文字線画等の前景画像と自然画等の背景画像とに分離して再符号化を行なうための処理にかかるの負荷の増加を抑制しつつ、更に圧縮率の高い符号化データを生成する技術を提供するものである。
【課題を解決するための手段】
【００１３】
かかる課題を解決するため、本発明の画像符号化装置は以下の構成を備える。すなわち、
複数の画素で構成される画素ブロックを単位に符号化された画像データを入力し、再符号化する画像符号化装置であって、
再符号化対象の符号化画像データを中間データとして格納する中間データ格納手段と、
該中間データ格納手段に格納された中間データを前記ブロック単位に復号し、復号した画像データをバッファに格納する復号手段と、
前記バッファに格納された画像データを解析し、文字線画を包含する前景画像領域を判別する判別手段と、
該判別手段で判別された前記前景画像領域の内部の画像データの個々の画素が、文字線画を構成する文字線画画素であるか、非文字線画画素であるかを識別して、識別情報を生成する識別手段と、
該識別手段で得られた識別情報を符号化し、出力する第１の符号化手段と、
前記前景画像領域の内部の前記文字線画画素の値を、周囲の非文字線画画素の値に基づいて決定される置換値で置換する置換手段と、
該置換手段による置換後の前記前景画像領域の内部の画像データから、前記ブロック単位に符号化データを生成し、出力する第２の符号化手段と、
前記前景画像領域の外部については、前記中間データ格納手段に格納された各画素ブロックの符号化データを参照して、且つ、画素値まで復元することなしに、符号化データを生成し、出力する第３の符号化手段とを備える。
【発明の効果】
【００１４】
本発明の構成によれば、像域判定無しに画素ブロック単位に符号化した多値の画像データを、再符号化する場合に、文字線画等の前景画像と自然画等の背景画像とに分離して再符号化を行なうための処理にかかるの負荷の増加を抑制しつつ、更に圧縮率の高い符号化データを生成することが可能になる。
【発明を実施するための最良の形態】
【００１５】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１６】
［第１の実施形態］
図１は、実施形態における画像符号化装置のブロック構成図である。
【００１７】
本実施形態では、例えば、イメージスキャナによって読取られた多値画像データをそのままＪＰＥＧ符号化し、その結果の符号化画像データを中間符号化データとしてハードディスク等の記憶装置にスプールする。そして、本実施形態の画像符号化装置は、そのスプールした中間符号化データを再符号化対象として扱う。すなわち、スプールした符号化データを復号し、前景、背景画像に分離した上で、再符号化する。なお、画像データの発生源がイメージスキャナであるとしているが、これは便宜的なものである。つまり、発生源は、画像データを記憶する記憶媒体でも構わず、その種類は問わない。また、スプールする際の符号化処理は、本実施形態の必須要件とはならない。予めＪＰＥＧ符号化された複数の画像データを格納している記憶装置から、順次再符号化する場合にも適用できるからである。
【００１８】
また、画像データは、各コンポーネント（色成分）が８ビット（２５６階調）の輝度値で表わされるＲＧＢカラー画像データであるとして説明する。しかしながら、これに限らず、モノクロ画像データやＣＭＹＫカラー画像データに適用しても構わない。また、画像は水平方向の画素数をＷ、垂直方向の画素数をＨのサイズとし、説明簡易化のため、Ｗ、Ｈは共に８の整数倍であるとして説明する。
【００１９】
以下、図１における画像処理装置により、各成分が８ビットで表現されたＲＧＢカラー画像を符号化する処理の流れを説明する。
【００２０】
まず、信号線１０１９から符号化対象の画像データが入力される。画素データの入力順序はラスタースキャン順とする。１画素はＲ，Ｇ，Ｂの３成分で構成され、入力する各成分の順序もＲ、Ｇ、Ｂの順とする。Ｒ，Ｇ，Ｂをそれぞれ成分番号０，１，２と定義し、画像の左上隅を座標（０，０）とする。そして、水平右方向画素位置ｘ、垂直下方向画素位置ｙにある画素の成分番号Ｃの値をＰ（ｘ，ｙ，Ｃ）と表すこととする。例えば、位置（ｘ、ｙ）＝（３，４）である画素の各成分（Ｒ，Ｇ，Ｂ）＝（２５５，１２８，０）という値を持つ場合、Ｐ（３，４，０）＝２５５、Ｐ（３，４，１）＝１２８、Ｐ（３，４，２）＝０と表現する。なお、各成分の値ではなく、位置（ｘ、ｙ）の“画素”を表現する場合には単純にＰ（ｘ，ｙ）と記す。
【００２１】
ＪＰＥＧ符号化部１００１は信号線１０１９から入力される画素データを適宜不図示の内部バッファメモリに格納し、国際標準符号化方式ＪＰＥＧのＢａｓｅｌｉｎｅ方式により符号化を行い、得られた符号化データを中間データ格納部１００２に格納する。
【００２２】
本実施形態では説明簡易化のため、ＪＰＥＧ符号化の前処理として一般的に行われる色変換処理やサブサンプリング処理は実施しないものとする。また、符号化単位は８×８画素で構成されるブロックがＭＣＵ（Minimum Coded Unit）であるものとする。しかしながら、ＲＧＢからＹＣｂＣｒなど、他の色表現形式への変換処理を適用したり、サブサンプリングを適用しても構わない。
【００２３】
なお、別の実施形態では、所定の大きさのブロックを符号化の単位とする、ＪＰＥＧ  Ｂａｓｅｌｉｎｅ以外の符号化方式を適用しても良い。ここでブロックを符号化の単位とするとは、あるブロックとその符号化データとの対応が取れるものであれば良い。ＪＰＥＧ符号化で、８×８画素のブロックのＤＣ係数を差分値に変換して符号化しているように、ブロックの符号化データが必ずしも完全に独立している必要はない。しかしながら、画像をブロックに分割して、それぞれ独立に符号化する手法は、ブロックと符号化データとの対応が明確であるため、本発明に好適である。例えば、ＦｌａｓｈＰｉｘ、ＪＰＥＧ  Ｐａｒｔ３、ＪＰＥＧ２０００などを利用すれば、汎用フォーマットで、かつ、ブロック単位に独立の符号化データを得ることができる。
【００２４】
ＪＰＥＧ符号化部１００１は、上記のようにして、入力した画像データをＭＣＵ（実施形態では８×８画素のブロック）単位に符号化し、その結果を中間データ格納部１００２に格納する。この処理を、符号化すべき画像が残っているかぎり繰り返すことになる。
【００２５】
一方、ＪＰＥＧ復号部１００３は、ＪＰＥＧ符号化部１００１と非同期に、中間データ格納部１００２に格納される符号化データの読み出して不図示の内部バッファメモリに格納しながら復号処理を行う。そして、ＪＰＥＧ復号部１００３は、復号結果である画像データをバッファメモリ１００５に格納する。
【００２６】
ＪＰＥＧは可変長符号化の一種であり、ＭＣＵブロックの符号化データの符号長は固定とはならない。つまり、各ＭＣＵブロックの符号化データの先頭位置は、実際に復号しないと不明である。実施形態では、この符号化データを、後から、ＭＣＵブロック単位にアクセスする。このため、ＪＰＥＧ復号部１００３は、復号処理対象のＭＣＵを中間データ格納部１００２から読出す毎に、そのＭＣＵの所在位置を示す情報をブロック情報保持部１００４に記録する。実施形態では、この所在位置として、ＭＣＵブロックの符号化データの先頭位置と長さ（ビット数）とした。図２にブロック情報保持部１００４の内部に記録される情報の構造を示す。図中、ＭＣＵ識別番号は、ＪＰＥＧ符号化データ内の配置順序を表し、最初のＭＣＵ符号化データの識別子を「０」、次を「１」…という具合に順番に番号を振ったものである。本実施の形態では水平方向Ｗ画素、垂直方向Ｈ画素で構成される画像データを符号化対象とし、８×８画素ブロックで１ＭＣＵを構成している。従って、１つの画像データのＪＰＥＧ符号化データ内には、Ｗ×Ｈ／６４個のＭＣＵが存在することになる。識別番号ｉのＭＣＵについて、その符号化データの位置ｐ（ｉ）とその長さ（ビット数）ｃｌ（ｉ）を格納する。ここで、符号化データの位置ｐ（ｉ）はＪＰＥＧ符号化データの先頭からのビット数とする。ＪＰＥＧ符号化データ中にエントロピ符号化セグメント（Ｅｎｔｒｏｐｙ−ｃｏｄｅｄ  Ｓｅｇｍｅｎｔ）が１つしか含まれない場合、セグメントの先頭位置を別途保持し、そこからの相対位置を保持するようにしても構わない。このような場合には、合算関数Σを用いて、
ｐ（ｉ）＝ Σｃｌ（ｊ）
（ｊ＝０、１、２、…、ｉ−１）
により、各ＭＣＵの符号化データの長さｃｌ（ｉ）から各ＭＣＵの符号位置ｐ（ｉ）を導出することができるので、符号位置を記録しておかなくても構わない。
【００２７】
テキスト領域判別部１００６はバッファメモリ１００５に格納される復号画像データの構造を解析し、画像中の文字や線画等の高周波となる画像部分（以下、単に文字部分という）を特定する。そして、テキスト領域判別部１００６は、その外接矩形の情報をテキスト領域情報（文字線画領域情報、前景画像領域といっても構わない）として出力する。
【００２８】
このテキスト領域情報はテキスト領域の位置を特定するための情報であり、本実施の形態では矩形の左上隅の画素位置(ｂｘ, ｂｙ)、右下隅の画素位置(ｅｘ,ｅｙ)を組み合わせた４次のベクトル（ｂｘ，ｂｙ，ｅｘ，ｅｙ）とする。この他にも、４隅のいずれか（左上隅など）の画素位置と水平・垂直方向画素数などにより位置を特定しても構わない。なお、テキスト領域情報の数は画像に依存し、場合によってはテキスト領域が存在しないこともあることに注意されたい。
【００２９】
図３に本実施形態の画像符号化装置による符号化に好適な文字、写真等の混在画像（復号文書）の一例を示す。この画像は、図４に示すＴＲ１、ＴＲ２、ＴＲ３の３つのテキスト領域を有する例である。図中、番号ｉ（ｉ＝１、２、…）で識別されるテキスト領域ＴＲｉの左上隅画素位置を（ｂｘｉ、ｂｙｉ）、右下隅画素位置を（ｅｘｉ、ｅｙｉ）としている。したがって、テキスト領域ＴＲ１，ＴＲ２，ＴＲ３のそれぞれの領域情報は、（ｂｘ１，ｂｙ１，ｅｘ１，ｅｙ１）、（ｂｘ２，ｂｙ２，ｅｘ２，ｅｙ２）、（ｂｘ３、ｂｙ３、ｅｘ３，ｅｙ３）である。
【００３０】
テキスト領域判別の具体的方法としては、種々の方式が提案されており、例えば特開２００２−０７７６３３に開示されている手法などを用いることができる。まず、画像の輝度成分のヒストグラムから２値化閾値を定めて２値化画像を生成する。次に、輪郭線追跡により文字を黒画素（他の画素よりも濃度の濃い画素）の塊として抽出する。そして、それらの横幅、高さなどから、文字らしい塊だけを残す。更に、その塊を、それぞれの位置関係や、横幅、高さからグループ化していく。そして、このグループ化した外接矩形で示される領域をテキスト領域を特定する方法である。本実施形態では、かかる技術を利用するものとするが、勿論、これ以外の技術でもってテキスト領域を判別しても構わない。
【００３１】
文字画素判定部１００７はテキスト領域判別部１００６で得られたテキスト領域ＴＲｉに対し、その領域（ｂｘｉ，ｂｙｉ，ｅｘｉ，ｅｙｉ）の内部に包含されている各画素Ｐ（ｘ、ｙ）（ｂｘｉ≦ｘ≦ｅｘｉ、ｂｙｉ≦ｙ≦ｅｙｉ）の特徴を調べ、文字を構成する画素（黒画素）か否かを判定する。そして、文字画素判定部１００７は、文字線画を構成する画素であれば“１”、そうでない場合（非文字線画を構成する画素の場合）“０”を有する２値の文字画像データ（２値化画像データ）として文字画像データ用バッファメモリ１００８へ格納する。つまり、この文字画像データ用バッファメモリ１００８に格納する２値データは、２値画像データと見ることもできるし、各画素が文字線画画素か非文字線画画素かを識別するための識別情報であると見ることもできる。
【００３２】
文字を構成する画素か否かを判定する方法についても種々の提案方式があり、必要とする精度や許容される処理の複雑さに適合するものを用いれば良い。ここでは単純な方法として、テキスト領域毎に各成分のヒストグラムを調べて、それぞれに閾値を決定する。そして、この閾値と各画素の成分Ｐ（ｘ，ｙ，Ｃ）を大小比較し、文字画素か否かを判断する。
【００３３】
実施形態では、各成分とも輝度成分の画像を符号化することになるので、決定した閾値以下の画素を文字を構成する画素とし、閾値を超える画素をそれ以外（背景）の画素として判定すればよいであろう。当業者であれば容易に理解できるように、符号化対象の画像データが仮にＹＭＣである場合には、閾値以上の値を持つ画素が文字を構成する画素、それ以外が非文字の画素と判定すれば良い。
【００３４】
画素Ｐ（ｘ、ｙ）の判別結果をＢ（ｘ，ｙ）とし、ＴＲｉから生成される２値の文字画像データをＢＭｉと記す。テキスト領域判別部１００６から複数のテキスト領域が出力される場合には、その夫々について同様に処理を行い、複数の文字画像データを生成する。図５（ａ），（ｂ），（ｃ）に、図４のテキスト領域ＴＲ１、ＴＲ２、ＴＲ３のそれぞれから得られる文字画像データＢＭ１、ＢＭ２、ＢＭ３の概要を示す。ここでＢ（ｘ，ｙ）が“１”である、復号結果の画像データ中の画素Ｐ（ｘ、ｙ）の平均を求めて、文字画像データＢＭｉの文字の色として保持する。
【００３５】
穴埋め処理部１０１０はテキスト領域ＴＲｉについて、バッファメモリ１００５に格納される復号画像データと文字画像データ用バッファ１００８に格納される文字画像データＢＭｉを参照して、テキスト領域内（文字線画領域内）の背景画素、即ち、非文字の画素として判定された画素の平均値を求める。以下、座標（ｂｘｉ，ｂｙｉ，ｅｘｉ，ｅｙｉ）で特定されるＴＲｉについて背景部の平均を求める方法について述べる。まず、１つのテキスト領域内の背景画素の個数Ｎｔ、すなわちＢ（ｘ、ｙ）＝０（但し、ｂｘｉ≦ｘ≦ｅｘｉ、ｂｙｉ≦ｙ≦ｅｙｉ）である数を求める。次に、背景画素の各成分Ｃについて、以下の式により輝度値の総和Ｓ（Ｃ）を求める。
Ｎｔ＝Σ｛１−Ｂ（ｘ，ｙ）｝
Ｓ(Ｃ)＝ΣＰ（ｘ、ｙ、Ｃ）×（１−Ｂ（ｘ，ｙ））
但し、上式において、ｘ、ｙは、ｂｘｉ≦ｘ≦ｅｘｉ、ｂｙｉ≦ｙ≦ｅｙｉであるという条件を満たす。また、「１−（Ｂ（ｘ，ｙ）」が“１”となるのは、着目画素Ｐ（ｘ，ｙ）が、非文字を構成する画素として判定された場合（文字を構成する画素ではないと判定された場合）になる。
【００３６】
Ｓ（Ｃ）とＮｔが得られれば、背景画素の成分Ｃの平均値Ａｖ（Ｃ）はＡｖ（Ｃ）＝Ｓ（Ｃ）／Ｎｔにより求まる。穴埋め処理部１０１０は、求めた平均値Ａｖ（Ｃ）を用いて、バッファ１００５に格納される復号画像データの文字画素の値を置き換える。即ち、バッファ１００５内のＴＲｉ内部のＢ（ｘ，ｙ）＝１である画素Ｐ（ｘ，ｙ）の各成分値Ｐ（ｘ，ｙ，Ｃ）を、算出したＡｖ（Ｃ）で置き換える。
【００３７】
穴埋め処理部１０１０の目的は、前景として符号化される画素値を周囲との変化が少なくなるように別の値に置き換えることである。言い換えれば、文字線画に代表される高周波成分を除去するための処理を行なうためと言えば分かりやすい。この結果、バッファ１００５内には、高周波成分が無い、もしくは、少ない画像が格納されるので、背景画像の符号化効率を高めることができる。
【００３８】
なお、本実施の形態ではテキスト領域の背景画素の平均値で置き換える方法を用いたが、同様の効果が得られるものであれば他の方法を用いても構わない。例えば、８×８サイズのブロックなど、より小さい単位で背景画素の平均値を求めて前景画素値を置き換えたり、前景画素ごとに周囲の背景画素の平均値で置き換えるなどしても良い。また、単純に、直前の背景画素値を設定するようにしても良い。
【００３９】
さて、上記の通り、穴埋め処理部１０１０により、バッファ１００５に格納される復号画像データは、文字等の前景を除いた背景画像データに作り変えられる。図６は、図３に示した画像から、バッファ１００５に格納される最終的な背景画像データの概略を示している。
【００４０】
第１の符号化部として機能する文字画像データ符号化部１００９は、文字画像データ用バッファ１００８に格納される２値の文字画像データＢＭｉをＧ４ファクシミリの標準であるＭＭＲ（modified modified READ）符号化方式を用いて符号化し、符号化データを符号列形成部１０１８へと出力する。なお、ここでは２値画像符号化方式の例としてＭＭＲを用いたが、ＪＢＩＧやＪＢＩＧ２など、他の符号化方式を用いても構わないことは言うまでもない。但し、可逆符号化を用いることが望ましい。また、この符号化データには、ＢＭｉの文字の色情報も組み合わせて持つようにする。
【００４１】
一方、バッファ１００５に生成された背景画像データに対して、ブロック再符号化部１０２１（第２の符号化部として機能する）、ブロック符号化データ取得部１０１２により、背景画像符号化データが生成され、符号列形成部１０１８へと出力される。
【００４２】
背景画像データの符号化処理は中間データ格納部１００２に格納される中間データのＭＣＵを構成する画素ブロックを単位として行われる。本実施の形態では８×８画素のブロックで１つのＭＣＵを構成するため、８×８画素のブロック（以下、ＭＣＵブロックと呼ぶ）を単位に、ラスタースキャン順に処理していく。本実施の形態では、各ＭＣＵブロックの符号化データ（以下、ＭＣＵ符号化データと呼ぶ）の生成方法として２系統を備える。一つは、バッファ１００５から該当するＭＣＵブロックのデータを取得し、ブロック再符号化部１０２１の処理によりＭＣＵ符号化データを作り出す方法である。もう一つは、着目するＭＣＵ符号化データを新たに生成するのではなく、中間データ格納部１００２に格納されている中間データからＭＣＵブロック（着目画素ブロック）の符号化データをそのまま抽出し、符号化データとして出力する方法である。後者の構成により、無駄な符号化処理が省かれ、処理にかかる時間を短縮できるようになる。以下、背景画像の符号化処理を更に詳細に説明する。
【００４３】
背景画像データの符号生成に先立ち、領域拡大部１０１１は、テキスト領域判別部１００６から出力されるテキスト領域ＴＲｉで示される範囲を広げた拡大テキスト領域ＥＲｉを求める。この拡大テキスト領域を求める目的は、テキスト領域ＴＲｉの境界のｘ、ｙの座標が、必ずしも原画像の８の整数倍となるとは限らないためである。また、この拡大テキスト領域ＥＲｉは、各ＭＣＵブロックの符号を生成する際に、ブロック再符号化部１０２１による再符号化処理と、ブロック符号化データ取得部１０１２による中間データ格納部１００２からのＭＣＵ符号化データの抽出とのいずれを用いるかの選択基準として活用される。すなわち、着目ＭＣＵブロックが、拡大テキスト領域ＥＲｉの内部に位置する場合、ブロック再符号化部１０２１は着目ＭＣＵブロックの符号化データを新に生成する。一方、着目ＭＣＵブロックが拡大テキスト領域ＥＲｉの外部の位置する場合、ブロック符号化データ取得部１０１２は、着目ブロックＭＣＵの符号化データとして中間データ格納部１００２内のＭＣＵ符号化データを読出し、そのまま出力する。
【００４４】
セレクタ１０１７は、着目ＭＣＵブロックが、拡大テキスト領域ＥＲｉ内にあるときは、ブロック再符号化部１０２１からの符号化データを選択し出力する。また、セレクタ１０１７は、拡大テキスト領域ＥＲｉ外の場合には、ブロック符号化データ取得部１０１２が取得した符号化データを選択し、出力する。
【００４５】
本実施の形態においては、拡大テキスト領域ＥＲｉは、テキスト領域ＴＲｉを含むＭＣＵブロックの集まりと、その右端に１ブロック分を追加した領域である。この拡大テキスト領域ＥＲｉは、穴埋め処理部１０１０における前景画素の穴埋め処理の影響を受けるＭＣＵブロックの範囲を示すものである。即ち、領域ＥＲｉ内部のＭＣＵブロックのＭＣＵ符号化データは、中間データ格納部１００２に格納されるＭＣＵ符号化データとは異なる可能性がある。反対に、どの拡大テキスト領域ＥＲｉにも含まれないＭＣＵブロックは中間データ格納部に格納されているＭＣＵ符号化データをそのまま利用できる。右端に１ブロック分を追加しているのは、直前のＭＣＵブロックが変更されたことにより、ＤＣ差分を作り変えなければならなくなる可能性を考慮したものである。
【００４６】
図７を用いてテキスト領域ＴＲｉの拡大方法を説明する。図中、斜線領域はテキスト領域ＴＲｉを表し、１つのマス目は個々のＭＣＵブロックを表す。太い実線で囲まれる領域は拡大テキスト領域ＥＲｉである。図中、網掛け部分は、右端に追加した１ブロック分を表している。座標（ｂｘｉ，ｂｙｉ，ｅｘｉ，ｅｙｉ）で特定されるテキスト領域ＴＲｉに対し、拡大テキスト領域ＥＲｉの座標を（ｂｘｉ’，ｂｙｉ’，ｅｘｉ’，ｅｙｉ’）とするとき、
ｂｘｉ’＝floor（ｂｘｉ/mw）×mw
ｂｙｉ’＝floor（ｂｙｉ/mh）×mh
ｅｘｉ’＝( ceil （ｅｘｉ/mw）+ 1 ) ×mw  
ｅｙｉ’＝( ceil （ｅｙｉ/mh）+ 1 ) ×mh
である。ここで、ｍｗとｍｈはそれぞれＭＣＵブロックの幅と高さを表し、本実施の形態では８である。また、ｆｌｏｏｒ（ｘ）は実数値ｘを超えない最大の整数値を、ｃｅｉｌ（ｘ）は実数値ｘ以上の最小の整数値を表す。
【００４７】
次に、ブロック再符号化部１０２１によるＭＣＵブロックの符号化処理について説明する。
【００４８】
ブロック再符号化部１０２１は離散コサイン変換部１０１３、係数量子化部１０１４、ブロックデータ用バッファ１０１５、ハフマン符号化部１０２１から構成され、着目しているＭＣＵが拡大テキスト領域ＥＲｉ内にある場合に符号化処理を行なう。具体的には、ブロック再符号化部１０２１は着目するＭＣＵブロックの画像データをバッファ１００５から読み出し、Ｒ，Ｇ，Ｂの各成分について、離散コサイン変換、係数量子化、ハフマン符号化を行う。特に言及しない限り、ここで行われるＭＣＵブロックの符号化処理は、国際標準ＪＰＥＧに準じる。係数量子化部１０１４で用いる量子化マトリクス、ハフマン符号化部１０１６（エントロピー符号化部でもある）で使用するハフマン符号テーブルは、ＪＰＥＧ符号化部１００１が中間符号化データを生成する際に利用したものと同じものを用いる。
【００４９】
ブロック符号化データ取得部１０１２は、着目しているＭＣＵが拡大テキスト領域ＥＲｉ外にある場合に、中間データ格納部１００２から該当する符号化データを取得し、出力する（第３の符号化部として機能する）。具体的には、ブロック符号化データ取得部１０１２は、ブロック情報保持部１００４に格納されるＭＣＵ符号化データに関する情報（位置ｐ（ｉ）と長さｃｌ（ｉ））を参照して、着目するＭＣＵブロックのＭＣＵ符号化データを中間データ格納部１００２から取り出して出力する。
【００５０】
セレクタ１０１７は先に説明した通りである。すなわち、領域拡大部１０１１から出力される拡大テキスト領域ＥＲｉの情報を参照して着目するＭＣＵブロックがＥＲｉの内部か否かを判定する。そして、その着目ＭＣＵがＥＲｉの内部である場合には、ブロック再符号化部１０２１から出力されるＭＣＵ符号化データを符号列形成部へと出力する。一方、着目ＭＣＵがＥＲｉの外部である場合には、ブロック符号化データ取得部１０１２により抽出されるＭＣＵ符号化データを符号列形成部へと出力する。
【００５１】
なお、着目するＭＣＵブロックがＥＲｉの外部である場合には、基本的に、ブロック再符号化部１０２１を動作させる必要はなく、反対に、ＥＲｉの内部である場合にはブロック符号化データ取得部１０１２を動作させる必要はない。このため、図１に示すように、領域拡大部１０１１の出力を、ブロック再符号化部１０２１及びブロック符号化データ取得部１０１２に供給するようにした。
【００５２】
また、上記の例外処理として、拡大テキスト領域ＥＲｉの左端のブロックのひとつ前のブロック、図７の例ではＥＲｉの左境界の外にある斜線で示す４つのブロックに関してはＥＲｉの外部であってもブロック再符号化部１０２１を動作させる。これはその次のブロックの符号化において、ＤＣ係数値の差分を求める際に、直前のブロックのＤＣ係数の量子化値を必要とするためである。これら拡大テキスト領域ＥＲｉの直前に位置するブロックについては、ブロック再符号化部１０２１を動作させるが、そこから出力される符号は破棄する。なお、上記は、ＭＣＵのＤＣ成分が、１つ前のＭＣＵのＤＣ成分との差分として符号化されることを前提にしているが、１つのＭＣＵ単独で、そのＭＣＵの画像データを復号できるのであれば、図７の拡大テキスト領域内の右端の１ブロックの列は不要とできる。
【００５３】
符号列形成部１０１８は、文字画像データ、背景画像データの符号化結果に加えて、復号の際に必要となる各種の情報を加え、所定のフォーマットの最終符号化データを生成し、装置外部へと出力する。この際、文字画像データ符号化部１００９からの出力、セレクタ１０１７からの出力を必要に応じて、適宜不図示の内部バッファに格納する。図８は符号列形成部１０１８から出力される最終符号化データの構造の例である。最終符号化データの先頭部分（ファイルヘッダ）には画像の水平／垂直方向の画素数、色成分の数や種別、各成分のビット数など、復号に必要とされる様々な情報が付加される。続く符号化データリストにはこの最終符号化データに含まれる文字画像符号化データ、背景画像符号化データの総数Ｎと、各符号化データについての情報が格納される。各符号化データの情報には符号化データに対応する画像中の矩形領域の座標情報、データタイプ、符号化データのオフセット、符号長が含まれる。座標情報は矩形領域の左上隅の画素位置、右下隅の画素位置である。データタイプは符号化データが文字画像データであるか背景画像データであるかを識別するための情報である。符号化データのオフセット値は、最終符号化データの先頭位置から着目する符号化データの先頭位置までの符号長であり、また、符号長には着目する符号化データの長さが格納される。図８に示した符号の構造は、あくまでもその一例であり、このように複数の符号化データを統合して保持できる形態であればこれに限らず、例えば、ＰＤＦ等であっても良い。
【００５４】
本実施形態の画像処理装置で生成した符号化データは、従来技術の説明部分で述べたように、前景画像、背景画像をそれぞれ復号して、背景画像データの上に、前景画像の文字部分を重ね合わせれば良い。なお、このとき、符号化データのヘッダには、幾つのテキスト領域が存在するか（存在しない場合も有り得る）、及び、１以上のテキスト領域が存在する場合には、その領域を特定する情報を格納する。
【００５５】
以上のように、本実施形態によれば、予めＪＰＥＧ符号化された画像データを入力し、一旦復号する。そして、文字画像と背景画像とに分離する。そして、文字画像については、文字を構成する画素を文字用の符号化を用いて符号化する。また、文字画像中の文字を構成する画素を、その周囲の非文字の画素から算出した置換値で置換し、高周波成分を除去もしくは低減した上で階調画像用の符号化を行なう。更に、背景画像については、入力した符号化データのＭＣＵ符号化データを有効利用し、再符号化処理にかかる負担を削減する。この結果、入力した符号化データよりも更に圧縮率の高い符号化データを高速に生成することが可能になる。
【００５６】
［第１の実施形態の変形例］
上記第１の実施形態をコンピュータプログラムによって実現する例を第１の実施形態の変形例として以下に説明する。
【００５７】
図１２は、本変形例における情報処理装置（例えばパーソナルコンピュータ）のブロック構成図である。
【００５８】
図中、１４０１はＣＰＵで、ＲＡＭ１４０２やＲＯＭ１４０３に記憶されているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する画像符号化処理、復号処理を実行する。１４０２はＲＡＭで、外部記憶装置１４０７や記憶媒体ドライブ１４０８、若しくはＩ／Ｆ１４０９を介して外部装置からダウンロードされたプログラムやデータを記憶する為のエリアを備える。また、ＲＡＭ１４０２は、ＣＰＵ１４０１が各種の処理を実行する際に使用するワークエリアも備える。１４０３はＲＯＭで、ブートプログラムや本装置の設定プログラムやデータを格納する。１４０４、１４０５は夫々キーボード、マウスで、ＣＰＵ１４０１に対して各種の指示を入力することができる。
【００５９】
１４０６は表示装置で、ＣＲＴや液晶画面などにより構成されており、画像や文字などの情報を表示することができる。１４０７はハードディスクドライブ装置等の大容量の外部記憶装置である。この外部記憶装置１４０７には、ＯＳ（オペレーティングシステム）や後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象画像の符号化データなどがファイルとして保存されている。また、ＣＰＵ１４０１は、これらのプログラムやデータをＲＡＭ１４０２上の所定のエリアにロードし、実行することになる。
【００６０】
１４０８は記憶媒体ドライブで、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記憶媒体に記録されたプログラムやデータを読み出してＲＡＭ１４０２や外部記憶装置１４０７に出力するものである。なお、この記憶媒体に後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象の画像の符号化データなどを記録しておいても良い。この場合、記憶媒体ドライブ１４０８は、ＣＰＵ１４０１による制御によって、これらのプログラムやデータをＲＡＭ１４０２上の所定のエリアにロードする。
【００６１】
１４０９はＩ／Ｆで、このＩ／Ｆ１４０９によって外部装置を本装置に接続し、本装置と外部装置との間でデータ通信を可能にするものである。例えは符号化対象の画像データや、復号対象の画像の符号化データなどを本装置のＲＡＭ１４０２や外部記憶装置１４０７、あるいは記憶媒体ドライブ１４０８に入力することもできる。１４１０は上述の各部を繋ぐバスである。
【００６２】
上記構成において、本装置の電源がＯＮになると、ＣＰＵ１４０１はＲＯＭ１４０３のブートプログラムに従って、外部記憶装置１４０７からＯＳをＲＡＭ１４０２にロードする。この結果、キーボード１４０４、マウス１４０５の入力が可能となり、表示装置１４０６にＧＵＩを表示することが可能になる。ユーザが、キーボード１４０４やマウス１４０５を操作し、外部記憶装置１４０７に格納された画像処理用アプリケーションプログラムの起動の指示を行なうと、ＣＰＵ１４０１はそのプログラムをＲＡＭ１４０２にロードし、実行する。これにより、本装置が画像符号化装置として機能することになる。
【００６３】
以下、ＣＰＵ１４０１が実行する画像符号化用のアプリケーションプログラムの処理手順を図９のフローチャートに従って説明する。基本的に、このプログラムは、図１に示す各構成要素に相当する関数を備えることになる。ただし、図１におけるブロック情報保持部１００４、バッファ１００５、文字画像データ用バッファ１００８、ブロックデータ用バッファ１０１５の各領域はＲＡＭ１４０２内に予め確保することになる。また、中間データ格納部１００２は外部記憶装置１４０７内に確保する。また、符号化結果は、外部記憶措置１４０７にファイルとして格納するものとして説明する。
【００６４】
まず、ＣＰＵ１４０１は、ステップＳ９０１において、Ｉ／Ｆ１４０９によって接続される外部装置（例えば、ＡＤＦ付きイメージスキャナ）から符号化対象の画像データの入力とＪＰＥＧ符号化、そして、その符号化して得られた画像データを中間符号化データとして外部記憶装置１４０７に格納する処理を開始させる（ＪＰＥＧ符号化部１００１の処理に相当）。この結果、外部記憶装置１４０７には、符号化しようとしている画像（１以上）の、ＪＰＥＧ符号化データファイルが格納されていく。
【００６５】
次に、ステップＳ９０２において、外部記憶装置１４０７に格納される中間符号化データ（符号化データファイル）を１つ選択し、それを復号し、復号画像をＲＡＭ１４０２内に格納する（ＪＰＥＧ復号部１００３の処理に相当）。このとき、図２の構成のブロック情報を生成し、ＲＡＭ１４０２内に格納する。
【００６６】
続いて、ステップＳ９０３で、復号した中間データの構造を解析し、画像中のテキスト領域ＴＲｉを特定し、その位置情報を生成する（テキスト領域判別部１００６の処理に相当）。
【００６７】
次に、ステップＳ９０４において、ステップＳ９０３で特定したそれぞれのテキスト領域について、各画素の特徴を調べ、文字を構成する画素か否かを表す文字画像データを生成する（文字画素判定部１００７の処理に相当）。文字画像データはＲＡＭ１４０２内に格納する。
【００６８】
次に、ステップＳ９０５で、ステップＳ９０４で文字を構成する画素と判定された画素について、ＲＡＭ１４０２に格納される復号画像データの画素値を周囲画素との変化が少なくなるように置き換えて、背景画像データを生成する（穴埋め処理部１０１０の処理に相当）。
【００６９】
ステップＳ９０６では、ステップＳ９０４で生成した文字画像データを符号化し、文字画像符号化データを生成する（文字画像データ符号化部１００９の処理に相当）。
【００７０】
ステップＳ９０７では、ステップＳ９０３で求めたテキスト領域ＴＲｉに対して、拡大テキスト領域ＥＲｉを求める（領域拡大部１０１１の処理に相当）。
【００７１】
ステップＳ９０８では、ステップＳ９０５により生成した背景画像データに対する符号化データを生成する。なお、このステップＳ９０８の詳細は後述する。
【００７２】
そして、ステップＳ９０９では、ステップＳ９０６で生成される文字画像符号化データと、ステップＳ９０８で生成される背景画像符号化データを、所定のフォーマットで統合し、最終符号化データを生成して出力する（符号列形成部１０１８の処理に相当）。
【００７３】
そして、ステップＳ９１０にて、全画像の符号化処理が完了したか否かを判定し、否の場合にはステップＳ９０２以降の処理を繰り返す。
【００７４】
次に、図９のステップＳ９０８の処理の詳細を図１０のフローチャートに従って説明する。
【００７５】
ステップＳ１００１ではＭＣＵの識別番号を表す変数ｉの初期値として０を設定する。
【００７６】
ステップＳ１００２では着目するＭＣＵ（ｉ）が拡大テキスト領域ＥＲｉのいずれかの内部にあるか否かを判断する。拡大テキスト領域内である場合にステップＳ１００８に、そうでない場合にはステップＳ１００３に処理を進める。
【００７７】
ステップＳ１００３ではＲＡＭ１４０２内に格納したブロック情報から、着目するＭＣＵブロックの符号位置ｐ（ｉ）と符号長ｃｌ（ｉ）を読み出す。続いて、ステップＳ１００４では外部記憶装置１４０７に格納される中間データのｐ（ｉ）ビット目からｃｌ（ｉ）ビット分のデータを取り出して、着目するＭＣＵブロックの符号として出力する。ここで、ステップＳ１００３とステップＳ１００４の処理はブロック符号化データ取得部１０１２での処理に相当する。
【００７８】
また、ステップＳ１００５では、着目するＭＣＵブロックが拡大テキスト領域の左隣に位置するか否かを判断し、拡大テキスト領域の左隣に位置する場合にはステップＳ１００６へ、そうでない場合には、ステップＳ１０１０へと処理を移す。
【００７９】
ステップＳ１００６では、ＲＡＭ１４０２内に格納される中間データの復号画像から着目するブロックの画像データを読み出す。
【００８０】
ステップＳ１００７では、ステップＳ１００６により読み出したブロックの画像データを離散コサイン変換、量子化により、量子化された係数値（ＤＣ成分の量子化値）を生成する。これは、次のＭＣＵの符号化時に用いるためである。
【００８１】
一方、ＭＣＵ（ｉ）が拡大テキスト領域の内部にある場合には、ステップＳ１００８でＲＡＭ１４０２内に格納される中間データの復号画像から着目するブロックの画素データを読み出す。
【００８２】
続いてステップＳ１００９により、ステップＳ１００８で読み出したブロックの画素データに対して、離散コサイン変換、量子化、ハフマン符号化を適用し、ＭＣＵ符号化データを生成する。
【００８３】
ここで、ステップＳ１００６、Ｓ１００７、Ｓ１００８、Ｓ１００９の処理はブロック再符号化部１０２１の処理に相当する。
【００８４】
ステップＳ１０１０では、処理対象のＭＣＵを次のＭＣＵへと移すため、変数ｉに１を加えて更新する。
【００８５】
ステップＳ１０１１では、全てのＭＣＵブロックについて処理が終了したか否かを判断し、未処理のＭＣＵブロックが残っている場合にはステップＳ１００２に戻り、処理を継続する。全てのＭＣＵブロックの処理が終了した場合には符号化処理を終了する。
【００８６】
以上説明したように本変形例によっても、第１の実施形態と同様の作用効果を奏することが可能となるのは明らかであろう。すなわち、文字画像データと背景画像データに分離してそれぞれに適した符号化を行う適応的符号化において、一時的に格納した中間データの活用により背景画像符号化データ取得のためのブロック再符号化処理を削減できる。
【００８７】
なお、上記処理の順番はここで説明したフローに限定されるものではない。例えば、図９のステップＳ９０６における文字画像データの符号化は、ステップ９０４とステップ９０９の間で、どのタイミングで行っても構わない。本変形例では、中間データを外部記憶装置１４０７に格納するものとして説明したが、ＲＡＭ１４０２に領域を確保して保持しても構わない。
【００８８】
［第２の実施形態］
上記第１の実施形態及びその変形例では、拡大テキスト領域の内部は全て再符号化処理の対象とした。本第２の実施形態では、拡大テキスト領域の内部でも中間符号化データを利用できる部分については、できるだけこれを利用する例を説明する。
【００８９】
なお、本第２の実施形態でも、符号化対象の画像データは、ＲＧＢ画像データとする。但し、モノクロ画像データや、ＣＭＹＫカラー画像データに適用しても良い。また、画像は水平方向Ｗ画素、垂直方向Ｈ画素により構成されるものとする。
【００９０】
図１１は、本第２の実施形態に係る画像処理装置のブロック構成図である。第１の実施形態で説明した図１と同じ機能のブロックについては同じ番号を付した。
【００９１】
図１１の構成で、第１の実施形態の図１と異なる点は、まず、文字含有ブロック判定部１１０１、ＤＣ差分修正部１１０２を追加した点である。また、２入力１出力のセレクタに変えて、３入力１出力のセレクタ１１０３を追加し、ＪＰＥＧ復号部１００３とは若干処理が異なるＪＰＥＧ復号部１１０４を用いている点である。これ以外は、第１の実施形態と同様であるので、その説明は省略する。
【００９２】
本第２の実施形態における画像符号化処理は次の通りである。
【００９３】
ＪＰＥＧ復号部１１０４は、中間データ格納部１００２に格納されるＪＰＥＧ符号化データを読み出して復号し、復号して得られた画像データをバッファ１００５に格納する。この際、第１の実施形態で説明したＪＰＥＧ復号部１００３と同様に、各ＭＣＵの先頭位置と長さ（ビット数）をブロック情報保持部１００４へと記録するが、本実施の形態では、更に、ＭＣＵを復号する際に得られた各成分のＤＣ係数量子化値を記録する。図１３に本実施形態においてブロック情報保持部１００４に格納されるブロック情報の構造を示す。同図において、Ｄ０（ｉ）はＭＣＵ識別番号iのブロックの第１成分（実施形態ではＲ成分）のＤＣ係数量子化値を表し、Ｄ１（ｉ）は同第２成分（Ｇ成分）、Ｄ２（ｉ）は同第３成分（Ｂ成分）のＤＣ係数量子化値を表す。
【００９４】
文字含有ブロック判定部１１０１は、文字画像データ用バッファ１００８を参照し、拡大テキスト領域ＥＲｉ内の着目ＭＣＵブロックが、文字を構成する画素を含むか否かを判定する。文字画像データ用バッファ１００８には、２値化した画像データ、すなわち、文字を構成する画素は“１”、それ以外は“０”のデータが格納されている。従って、文字含有ブロック判定部１１０１は、着目画素ブロック(ＭＣＵ)内に、“１”の画素が存在するか否かを判定すれば良い。以下、以下、文字画素を含むＭＣＵを文字含有ブロックという。
【００９５】
また、実施形態における文字含有ブロック判定部１１０１は、着目ＭＣＵブロックが文字含有ブロックでない場合、その直前のＭＣＵブロックが文字含有ブロックであるか否かを判定する。そして、文字含有ブロック判定部１１０１はその判定結果を出力する。この判定結果は３値（２ビットあれば十分）であり、着目ＭＣＵが文字含有ブロックである場合には“０”を判定結果とする。また、着目ＭＣＵが文字含有ブロックでなく、その直前のブロックが文字含有ブロックである場合には“１”を判定結果とする。そして、着目ブロックもその直前のブロックも共に文字含有ブロックでない場合には“２”を判定結果とする。
【００９６】
ＤＣ差分修正部１１０２は、文字含有ブロック判定部１１０１の判定結果が“１”の場合に処理を実行する。具体的には、先ず、ブロック情報保持部１００４から着目するＭＣＵブロックの各成分のＤＣ係数量子化値（図１３のＤ０（ｉ），Ｄ１（ｉ），Ｄ２（ｉ））を取得する。更に、ブロックデータ用バッファ１０１５に格納されている直前のブロックのＤＣ係数量子化値を取り出し、この２つからＤＣ差分値を求めて符号化し、ＤＣ差分に対する符号を得る。続いて、ＤＣ差分修正部１１０２は、ブロック符号化データ取得部１０１２から着目するブロックのＭＣＵ符号化データを読み出し、ハフマン符号を解釈して、各成分のＤＣ差分に対する符号を、先に求めたＤＣ差分値に対する符号に置き換えて、セレクタ１１０３に出力する。ここで利用する量子化マトリックス、ハフマンテーブルはＪＰＥＧ符号化部１００１、ＪＰＥＧ復号部１００３、ブロック再符号化部１０２１と共通のものとする。
【００９７】
図２１に、ＤＣ差分修正部１１０２により、ＤＣ差分に対する符号化データのみが修正された符号化データが形成される様子を示す。なお、本実施の形態では、ＤＣ差分修正部１１０２の中でハフマン符号を解釈して、ＤＣ差分値に対する符号を探し出すようにしている。しかし、別の実施形態として、復号時に、ブロック情報保持部に、中間データにおける各成分のＤＣ差分値符号化データの符号長、ＡＣ係数符号化データの符号長を記録させておいても良い。この場合、ＤＣ差分修正部１１０２は、これらの情報からＤＣ差分符号化データの位置と長さを特定して、置き換えるようにすることもできる。
【００９８】
セレクタ１１０３は文字含有ブロック判定部１１０１から出力される判定結果と、領域拡大部１０１１から得られる拡大テキスト領域の情報を参照し、ブロック再符号化部１０２１、ブロック符号化データ取得部１０１２、ＤＣ差分修正部１１０２のいずれか１つから着目ＭＣＵブロックに対する符号化データを取得し、符号列形成部１０１８へと出力する。以下に、その詳細を説明する。
【００９９】
セレクタ１０１３は領域拡大部１０１１から出力される拡大テキスト領域ＥＲｉの情報を参照して、着目するＭＣＵブロックがＥＲｉの内部か否かを判定する。ＥＲｉの外部である場合には、第１の実施形態と同様に、ブロック符号化データ取得部１０１２により抽出されるＭＣＵ符号化データを符号列形成部１０１８へと出力する。
【０１００】
一方、ＥＲｉの内部である場合は、第１の実施形態と異なり、文字含有ブロック判定部１１０１から出力される判定結果によって動作が変わる。文字含有ブロック判定部１１０１の判定結果が“０”の場合、即ち、着目するＭＣＵブロックが文字含有ブロックである場合、セレクタ１０１３は、ブロック再符号化部１０２１から出力される着目ＭＣＵの符号化データを出力する。また、文字含有ブロック判定部１１０１の判定結果が“１”の場合、即ち、着目するＭＣＵブロックは文字含有ブロックでないが、その直前のブロックが文字含有ブロックである場合、ＤＣ差分修正部１１０２から符号化データを取得して出力する。また、判定結果が“２”の場合、即ち、着目ブロックもその直前のブロックも共に文字含有ブロックでない場合にはブロック符号化データ取得部１０１２からの符号化データを出力する。
【０１０１】
なお、ブロック再符号化部１０２１からの符号化データを選択しない場合は、ブロック再符号化部１０２１を動作させる必要はない。先に説明した第１の実施形態では、拡大テキスト領域の左隣に位置するブロックについて、ＤＣ係数量子化値を得る目的で動作させ、符号化データを破棄していた。本第２の実施の形態では、ブロック再符号化部１０２１の動作開始時に必要となる直前のブロックのＤＣ係数量子化値をブロック情報保持部１００４から得ることができるため、このようなダミー動作は不要となる。
【０１０２】
以上説明したように本第２の実施形態によれば、文字画像データと背景画像データに分離してそれぞれに適した符号化を行う適応的符号化において、一時的に格納した中間データの活用により背景画像符号化データ取得のためのブロック再符号化処理を削減できる。特に、テキスト領域の内部でも符号化データを活用することによって、再符号化の対象となるブロック数をより少なくすることができる。
【０１０３】
［第２の実施形態の変形例］
次に、上記第２の実施形態の処理をコンピュータプログラムで実現する例を説明する。装置構成は、第１の実施形態の変形例と同じ図１２の構成で構わないので、その説明は省略する。そこで、以下では、同図における外部記憶装置１４０７に記憶されたアプリケーションプログラムをＣＰＵ１４０１が実行する処理手順を図１５のフローチャートに従って説明する。基本的に、このプログラムは、図１１に示す構成要素に対応する関数（サブルーチン）で構成されると考えると分かりやすい。ただし、図１１におけるバッファ１００５、ブロック情報保持部１００４、文字画像データ用バッファ１００８はＲＡＭ１４０２内に予め確保することになる。また、中間データ格納部１００２は外部記憶装置１４０７内に確保する。
【０１０４】
ＣＰＵ１４０１が実行する画像処理用のアプリケーションプログラムの全体の処理の流れは第１の実施の形態で説明した図９のフローと同様である。但し、上記第２の実施形態で説明した通り、中間符号化データの復号時、即ち、図９のステップＳ９０２においては図１３に示した構成のブロック情報を記録する。この他、本第２の実施の形態の変形例では、背景画像データの符号化を行うステップＳ９０８の処理の内容が異なる。
【０１０５】
このステップＳ９０８の詳細を示すのが図１５のフローチャートである。以下、図１５のフローチャートに従って、背景画像データの符号化処理の流れを説明する。
【０１０６】
ステップＳ１５０１ではＭＣＵの識別番号を表す変数ｉの初期値として０を設定する。
【０１０７】
ステップＳ１５０２では着目するＭＣＵ（ｉ）が拡大テキスト領域ＥＲｉのいずれかの内部にあるか否かを判断する。拡大テキスト領域内である場合には処理をステップＳ１５０５に移し、そうでない場合にはステップＳ１５０３へと移す。
【０１０８】
ステップＳ１５０３ではＲＡＭ１４０２内に格納したブロック情報から、着目するＭＣＵブロックの符号位置ｐ（ｉ）と符号長ｃｌ（ｉ）を読み出す。
【０１０９】
続いて、ステップＳ１５０４では外部記憶装置１４０７に格納される中間符号化データのｐ（ｉ）ビット目からｃｌ（ｉ）ビットを取り出して着目するＭＣＵブロックの符号として出力する。
【０１１０】
ステップＳ１５０３とステップＳ１５０４の処理はブロック符号化データ取得部１０１２での処理に相当する。
【０１１１】
ステップＳ１５０５では、着目するＭＣＵブロック内に文字を構成する画素を含んだ文字含有ブロックであるか否を判断し、更に、文字含有ブロックでない場合、その直前のＭＣＵブロックが文字含有ブロックであるか否かを確認し、３値の判定結果を出力する（文字含有ブロック判定部１１０１の処理に相当）。
【０１１２】
ステップＳ１５０６ではステップＳ１５０５で得られた判定結果に基づいて、処理を切り替える。判定結果が“０”である場合にはステップＳ１５０７へ、“１”である場合にはステップＳ１５０９へ、また、“２”である場合にはステップＳ１５０３へと処理を移す。
【０１１３】
ステップＳ１５０７では、ＲＡＭ１４０２内に格納される中間データの復号画像から着目するブロックの画素データを読み出す。
【０１１４】
ステップＳ１５０８では、ステップＳ１５０７により読み出したブロックの画素データに対して、離散コサイン変換、量子化、ハフマン符号化を適用し、ＭＣＵ符号化データを生成する。
【０１１５】
ステップＳ１５０９では、各成分に対して、ＲＡＭ１４０２内に格納される直前のブロックのＤＣ係数量子化値と、同じくＲＡＭ１４０２内に格納されるブロック情報から着目するブロックのＤＣ係数量子化値を取得し、ＤＣ差分を求めて符号化する。
【０１１６】
ステップＳ１５１０では、ＲＡＭ１４０２内に格納したブロック情報から、着目するＭＣＵブロックの符号位置ｐ（ｉ）と符号長ｃｌ（ｉ）を読み出す。
【０１１７】
続いて、ステップＳ１５１１では外部記憶装置１４０７に格納される中間データのｐ（ｉ）ビット目からｃｌ（ｉ）ビットを取り出す。
【０１１８】
ステップＳ１５１２では、ステップＳ１５１１で取り出したＭＣＵ符号化データを解釈し、各成分のＤＣ差分に対する符号化データの位置と長さを特定し、これをステップＳ１５０９で得たＤＣ差分符号化データに置き換えて出力する。
【０１１９】
上記のステップＳ１５０９、Ｓ１５１０，Ｓ１５１１，Ｓ１５１２の処理はＤＣ差分修正部１１０２の処理に相当する。
【０１２０】
ステップＳ１０１０では、処理対象のＭＣＵを次のＭＣＵへと移すため、変数ｉに１を加えて更新する。
【０１２１】
ステップＳ１５１３では、全てのＭＣＵブロックについて処理が終了したか否かを判断し、未処理のＭＣＵブロックが残っている場合にはステップＳ１５０２に戻り、処理を継続する。全てのＭＣＵブロックの処理が終了した場合には符号化処理を終了する。
【０１２２】
以上説明したように本変形例によっても、第２の実施形態と同様の作用効果を奏することが可能となるのは明らかであろう。すなわち、文字画像データと背景画像データに分離してそれぞれに適した符号化を行う適応的符号化において、一時的に格納した中間データの活用により背景画像符号化データ取得のためのブロック再符号化処理を削減できる。特に、テキスト領域の内部でも符号化データを活用することによって、再符号化の対象となるブロック数をより少なくすることができる。
【０１２３】
なお、上記処理の順番はここで説明したフローに限定されるものではない。例えば、図１５のステップＳ１５０９のＤＣ差分の生成処理は、ステップＳ１５１２で行うＤＣ差分を修正した符号化データの生成よりも前に行われていれば良く、ステップＳ１５１０、ステップＳ１５１１と並行して行ったり、順番を入れ替えても構わない。本変形例では、中間符号化データを外部記憶装置１４０７に格納するものとして説明したが、ＲＡＭ１４０２に領域を確保して保持しても構わない。
【０１２４】
［第３の実施形態］
上記第１、第２の実施形態の画像処理装置では、背景画像データの保持する解像度は、前景、および、中間データで保持する解像度と同じであった。しかしながら、前景、背景分離符号化においては、前景と背景の解像度を変えて符号化することもできる。本発明の第３の実施形態は、相対的に視覚劣化が目につきにくい背景部分（低周波成分が主である画像）の解像度を落とすことで、更に高い圧縮性能を得る例を説明する。
【０１２５】
図１６は、本第３の実施形態に係る画像処理装置のブロック構成図である。第１、第２の実施形態で説明した図１、図１１と同じ機能のブロックについては同じ番号を付した。
【０１２６】
図１６の構成で、第２の実施形態の図１１と異なる点は、３入力１出力のセレクタ１１０３に変えて、４入力１出力のセレクタ１６０４を設けた点、ＤＣＴ係数復号部１６０１、ＡＣ係数マスク部１６０２、ハフマン符号化部１６０３で構成される高周波成分マスク再符号化部１６０５を追加した点である。これ以外の構成要素は、第２の実施形態と同様であるので、その説明は省略する。
【０１２７】
本第３の実施形態における画像符号化処理は次の通りである。
【０１２８】
高周波成分マスク再符号化部１６０５は着目するＭＣＵブロックについて、着目するＭＣＵ符号化データをブロック符号化データ取得部１０１２から取り出し、高周波成分の一部の量子化係数値を０にマスクし、符号化データを再生成して出力する。
【０１２９】
以下、低解像度再符号化部１６０５内の各ブロックについて説明する。
【０１３０】
ＤＣＴ係数復号部１６０１は、ハフマン符号化データを復号して、各成分について量子化された係数値のマトリクスを復元する（画像データにまで復号しない点に注意されたい）。なお、ＤＣ係数については差分値のまま保持する。
【０１３１】
ＡＣ係数マスク部１６０２は、復元された８×８個の係数量子化値について、図１４に示す左上の４×４個の領域はそのままに、それ以外の斜線で示した周波数帯域の値を０に置き換えることにより、実質的な解像度を水平、垂直とも１／２にする。
【０１３２】
ハフマン符号化部１６０３はＡＣ係数マスク部１６０２でマスクされた係数量子化値のマトリクスを再度ハフマン符号化（再エントロピー符号化）し、ＭＣＵ符号化データを生成して出力する。
【０１３３】
なお、高周波成分マスク再符号化部１６０５の中では、必ずしも、ＡＣの各係数を復元する必要はない。例えば、高周波成分マスク再符号化部１６０５の別の構成として、着目ブロックのＭＣＵ符号化データを解釈して、図１７の星印の位置の係数に対する符号までを残し、それ以降の符号化データをＥＯＢコードで置き換えるようにしても同様の効果を得ることができる。この場合、斜線で示した帯域の係数情報も一部、ＭＣＵ符号化データに含まれる。
【０１３４】
セレクタ１６０４は、文字含有ブロック判定部１１０１から出力される判定結果と、領域拡大部１０１１から得られる拡大テキスト領域の情報を参照する。そして、セレクタ１６０４は、ブロック再符号化部１０２１、ブロック符号化データ取得部１０１２、ＤＣ差分修正部１１０２、高周波成分マスク再符号化部１６０５のいずれかから、着目ＭＣＵブロックに対する符号化データを取得し、符号列形成部１０１８へと出力する。このセレクタ１６０４の具体的な選択にかかる処理は次の通りである。
【０１３５】
セレクタ１６０４は領域拡大部１０１１から出力される拡大テキスト領域ＥＲｉの情報を参照して着目するＭＣＵブロックがＥＲｉの内部か否かを判定する。着目するＭＣＵブロックが、ＥＲｉの外部に位置する場合、セレクタ１６０４は高周波成分マスク再符号化部１６０５からの符号化データを選択し、出力する。高周波成分マスク再符号化部１６０５は、ブロック符号化データ取得部１０１２から抽出されるＭＣＵ符号化データを使って、高周波成分マスク再符号化部１６０５で処理しているので、このときセレクタから出力されるＭＣＵの符号化データは、実質的に解像度がオリジナルの１／２の符号化データとなる。
【０１３６】
一方、ＥＲｉの内部である場合は、第２の実施形態と同じく、文字含有ブロック判定部１１０１の判定結果によって動作が決まる。判定結果に応じた出力の選択方法は第２の実施形態と同じであるので、ここでは説明を省略する。
【０１３７】
以上説明したように本第３の実施形態によれば、文字画像データと背景画像データに分離してそれぞれに適した符号化を行う適応的符号化において、一時的に格納した中間データの活用により背景画像符号化データ取得のためのブロック再符号化処理を削減できる。特に、テキスト領域の内部でも符号化データを活用することによって、再符号化の対象となるブロック数をより少なくすることができる。また、特に、本実施形態においては、中間データの高周波成分にあたるデータを破棄することで背景画像の解像度を落としている。これにより、簡易に、かつ、できるだけ視覚的な画質劣化を少なくして、符号量を削減する効果がある。
【０１３８】
＜第３の実施形態の変形例＞
次に、上記第３の実施形態の処理をコンピュータプログラムで実現する例を説明する。装置構成は、第１の実施形態の変形例と同じ図１２の構成で構わないので、その説明は省略する。そこで、以下では、同図における外部記憶装置１４０７に記憶されたアプリケーションプログラムをＣＰＵ１４０１が実行する処理手順を図１８のフローチャートに従って説明する。基本的に、このプログラムは、図１６に示す構成要素に対応する関数（サブルーチン）で構成されると考えると分かりやすい。ただし、図１６におけるバッファ１００５、ブロック情報保持部１００４、文字画像データ用バッファ１００８はＲＡＭ１４０２内に予め確保することになる。また、中間データ格納部１００２は外部記憶装置１４０７内に確保する。
【０１３９】
ＣＰＵ１４０１が実行する画像処理用のアプリケーションプログラムの全体の処理の流れは第１の実施の形態で説明した図９のフローと同様である。但し、上記第２の実施形態で説明した通り、中間符号化データの復号時、即ち、図９のステップ９０２においては図１３に示した構成のブロック情報を記録する。この他、本第３の実施の形態では、背景画像データの符号化を行うステップＳ９０８の処理の内容が異なる。
【０１４０】
図１８のフローチャートに従って、背景画像データの符号化処理の流れを説明する。図１８のフローチャートの大部分は第２の実施形態の変形例で説明した図１５のフローチャートと同じである。図１５と共通する処理ステップについては同じ番号を用い、説明を省略する。
【０１４１】
図１５と異なるのは、着目するＭＣＵブロックが拡大テキスト領域の外部にある場合の処理である。
【０１４２】
ステップＳ１８０１では、ＲＡＭ１４０２内に格納したブロック情報から、着目するＭＣＵブロックの符号位置ｐ（ｉ）と符号長ｃｌ（ｉ）を読み出す。
【０１４３】
続いて、ステップＳ１８０２では外部記憶装置１４０７に格納される中間データのｐ（ｉ）ビット目からｃｌ（ｉ）ビットを取り出して着目するＭＣＵブロックの符号を取り出す。
【０１４４】
上記のステップＳ１８０１、Ｓ１８０２の処理はブロック符号化データ取得部１０１２の処理に相当する。
【０１４５】
ステップＳ１８０３では、ステップＳ１８０２で取り出したＭＣＵ符号化データを復号してＤＣＴ係数量子化値を復元する。なお、ＤＣ係数量子化値については差分のまま保持する（ＤＣＴ係数復号部１６０１の処理に相当）。
【０１４６】
ステップＳ１８０４では、着目ブロックの各成分について８×８個の係数量子化値について、図１４の斜線部にあたる高周波成分を０にマスクする（ＡＣ係数マスク部１６０２の処理に相当）。
【０１４７】
ステップＳ１８０５では、ステップＳ１８０４で処理した係数量子化値のマトリクスを再度ハフマン符号化し、ＭＣＵ符号化データを生成して出力する（ハフマン符号化部１６０３の処理に相当）。
【０１４８】
上記以外の処理は、第２の実施形態の変形例と同様である。
【０１４９】
以上説明したように、本変形例によっても、第３の実施形態と同様の作用効果を奏することが可能となるのは明らかであろう。すなわち、文字画像データと背景画像データに分離してそれぞれに適した符号化を行う適応的符号化において、一時的に格納した中間データの活用により背景画像符号化データ取得のためのブロック再符号化処理を削減できる。特に、テキスト領域の内部でも符号化データを活用することによって、再符号化の対象となるブロック数をより少なくすることができる。また、特に、本実施形態においては、中間データの高周波成分にあたるデータを破棄することで背景画像の解像度を落としている。これにより、簡易に、かつ、できるだけ視覚的な画質劣化を少なくして、符号量を削減する効果がある。
【０１５０】
［第４の実施形態］
上記第３の実施形態の画像処理装置では、拡大テキスト領域外の背景画像データの解像度を１／２に落とすことで高い圧縮性能を得ることを狙った実装方法を示した。拡大テキスト領域の内部では、背景画像でも高解像度を保持したのは、文字画素判定の誤りの影響を考慮したためである。本来、文字を構成する画素として判断すべき画素が、背景画素と判断された場合、解像度を１／２とすることで、前景文字との画質の差が大きくなり、人間の目についてしまう恐れがある。しかしながら、拡大テキスト領域内の全てのブロックで高解像度保持する必要はなく、文字を含んでいると考えられる部分のみ、オリジナルの解像度で保持しておけば良い。そこで、本第４の実施形態では、拡大領域内部の背景画像の符号化において、適応的に解像度を変える例を説明する。
【０１５１】
図１９は、本第４の実施形態に係る画像処理装置のブロック構成図である。第１、第２、第３の実施形態で説明した図１、図１１、図１６と同じ機能のブロックについては同じ番号を付した。
【０１５２】
図１９の構成で、第３の実施形態の図１６と異なる点は、ＤＣ係数修正部１１０２とブロック再符号化部１０２１を統合した形で、適応解像度再符号化部１９０７を構成した点と、４入力１出力のセレクタ１６０４に変えて、２入力１出力のセレクタ１９０６を用いた点である。更に、領域拡大部１０１１に変えて若干動作が異なる領域拡大部１９０８を用いている。これ以外のブロックは第３の実施形態と同様であるので、その説明は省略する。
【０１５３】
本第４の実施形態における画像符号化処理は次の通りである。
【０１５４】
領域拡大部１９０８はテキスト領域判別部１００６から出力されるテキスト領域ＴＲｉについて、その範囲を広げた拡大テキスト領域ＥＲｉを生成する。
【０１５５】
本第４の実施の形態においては、拡大テキスト領域ＥＲｉは、テキスト領域ＴＲｉを含むＭＣＵブロックの集まりを、その上下左右に１ブロック分拡大した領域である。
【０１５６】
適応解像度再符号化部１９０７は、バッファ１００５に格納される着目ブロックの背景画像データ、あるいは、ブロック符号化データ取得部１０１２から得られる着目ブロックのＭＣＵ符号化データのいずれかから、着目ブロックの符号化データを生成する。
【０１５７】
適応解像度再符号化部１９０７は、離散コサイン変換部１０１３、係数量子化部１０１４、ＤＣＴ係数復号部１９０２、セレクタ１９０３、特徴解析部１９０１、ＡＣ係数マスク部１９０４、セレクタ１９０５、ハフマン符号化部１０１６から構成される。
【０１５８】
以下、適応解像度再符号化部１９０７内の各ブロックについて説明する。
【０１５９】
離散コサイン変換部１０１３はバッファ１００５から着目するＭＣＵブロックの画素データを取り出し、各成分について、離散コサイン変換を適用して、８×８個の係数マトリクスを生成する。
【０１６０】
係数量子化部１０１４は各係数を係数位置に応じた量子化ステップ値を用いて量子化し、量子化された係数のマトリクスをセレクタ１９０３へと出力する。
【０１６１】
一方、ＤＣＴ係数復号部１９０２は、ブロック符号化データ取得部により得られたＭＣＵ符号化データについて、ハフマン符号を復号して、各成分について量子化された係数値のマトリクスを復元する。なお、ＤＣ係数については差分値のまま保持する。
【０１６２】
セレクタ１９０３は文字含有ブロック判定部の出力する判定結果により、第１の処理手段として機能する係数量子化部１０１４、第２の処理手段として機能するＤＣＴ係数復号部１９０２のいずれか一方の出力をブロックデータ用バッファ１０１５へと書き込む。判定結果が“０”である場合には、係数量子化部１０１４からの出力を選択し、“１”または“２”である場合にはＤＣＴ係数復号部１９０２からの出力を選択する。
【０１６３】
特徴解析部１９０１はブロックデータ用バッファ１０１５に格納される８×８の量子化されたＤＣＴ係数マトリクスについて、高周波成分を多く有するか否かを判定する。この判定は、高周波成分の絶対値の合計値と予め設定された閾値とを比較することで判定するものとする（閾値を超えれば高周波成分が多い、閾値以下の場合には高周波成分が少ないとする）。高周波成分を多く有する場合には“０”、そうでない場合には“１”を判定結果としてセレクタ１９０５に出力する。
【０１６４】
ＡＣ係数マスク部１９０４は、ブロックデータ用バッファ１０１５に格納される８×８個の係数量子化値について、図１４に斜線で示した周波数帯域の値を０に置き換えることにより、実質的な解像度を１／２にする。
【０１６５】
セレクタ１９０５は特徴解析部１９０１の特徴判定結果に応じてＡＣ係数マスク部１９０４によりマスク処理された係数量子化マトリクスと、ブロックデータ用バッファ１０１５に格納される係数量子化マトリクスのいずれか一方を選択してハフマン符号化部１０１６へと出力する。具体的には、特徴解析部１９０１の判定結果が“０”である場合、セレクタ１９０５はブロックデータ用バッファ１０１５からの係数量子化マトリクスを選択し、“１”である場合にはＡＣ係数マスク部１９０４からの係数量子化マトリクスを選択し、ハフマン符号化部１０１６に出力する。
【０１６６】
ハフマン符号化部１０１６はセレクタ１９０５を介して入力される係数量子化値のマトリクスを再度ハフマン符号化し、ＭＣＵの符号化データを生成して出力する。なお、対象となる係数量子化値のマトリクスが、離散コサイン変換部１０１３、係数量子化部１０１４を経てブロックデータ用バッファ１０１５に格納されている場合には、ブロック情報保持部１００４に格納される直前のブロックを参照してＤＣ差分値を求める必要がある。ＤＣＴ係数復号部１９０２から得られた場合にはＤＣ差分値として保持しているので、この必要はない。
【０１６７】
セレクタ１９０６は、領域拡大部１０１１から得られる拡大テキスト領域の情報を参照し、適応解像度再符号化部１９０７、高周波成分マスク再符号化部１６０５のいずれかから着目ＭＣＵブロックに対する符号化データを取得する。そして、セレクタ１９０６は、取得した符号化データを、符号列形成部１０１８へと出力する。具体的には次の通りである。
【０１６８】
セレクタ１９０６は領域拡大部１０１１から出力される拡大テキスト領域ＥＲｉの情報を参照して、着目するＭＣＵブロックがＥＲｉの内部か否かを判定する。着目するＭＣＵブロックＥＲｉの外部である場合には、高周波成分マスク再符号化部１６０５からのＭＣＵの符号化データを選択し、符号列形成部１０１８に出力する。高周波成分マスク再符号化部１６０５は、ブロック符号化データ取得部１０１２により抽出されるＭＣＵ符号化データを使って、高周波成分マスク再符号化部１６０５で処理しているので、選択出力される符号化データは、実質的に解像度がオリジナルの１／２になった符号化データとなる。
【０１６９】
一方、着目ＭＣＵがＥＲｉの内部である場合は、第２の実施形態と同じく、文字含有ブロック判定部１１０１の判定結果によって動作が決まる。判定結果に応じた出力の選択方法は第２の実施形態と同じであるので、ここでは説明を省略する。
【０１７０】
以上説明したように本第４の実施形態によれば、文字画像データと背景画像データに分離してそれぞれに適した符号化を行う適応的符号化において、一時的に格納した中間データの活用により背景画像符号化データ取得のためのブロック再符号化処理を軽減できる。特に、本実施形態においては、背景画像のうち、拡大テキスト領域内で、かつ、高周波成分を有するブロックのみ高解像度を保持し、それ以外は解像度を落としている。これにより、簡易に、かつ、できるだけ視覚的な画質劣化を少なくして、符号量を削減する効果がある。これは、前景、背景分離の誤判定による、文字部分の視覚的な画質差の発生を抑制する効果が期待できる。
【０１７１】
［第４の実施形態の変形例］
次に、上記第４の実施形態の処理をコンピュータプログラムで実現する例を第４の実施形態の変形例として説明する。装置構成は、第１の実施形態の変形例と同じ図１２の構成で構わないので、その説明は省略する。そこで、以下では、同図における外部記憶装置１４０７に記憶されたアプリケーションプログラムをＣＰＵ１４０１が実行する処理手順を図２０のフローチャートに従って説明する。基本的に、このプログラムは、図１９に示す構成要素に対応する関数（サブルーチン）で構成されると考えると分かりやすい。ただし、図１９におけるバッファ１００５、ブロック情報保持部１００４、文字画像データ用バッファ１００８、ブロックデータ用バッファ１０１５はＲＡＭ１４０２内に予め確保することになる。また、中間データ格納部１００２は外部記憶装置１４０７内に確保する。
ＣＰＵ１４０１が実行する画像処理用のアプリケーションプログラムの全体の処理の流れは第１の実施の形態で説明した図９のフローと同様である。但し、上記第２の実施形態で説明した通り、中間符号化データの復号時、即ち、図９のステップＳ９０２においては図１３に示した構成のブロック情報を記録する。この他、本第４の実施の形態の変形例では、背景画像データの符号化を行うステップＳ９０８の処理の内容が異なる。
【０１７２】
図２０のフローチャートは、ステップＳ９０８の詳細である。以下、図２０に従って、背景画像データの符号化処理の流れを説明する。図２０のフローチャートの大部分は第３の実施形態の変形例で説明した図１８のフローチャートと同じである。図１８と共通する処理ステップについては同じ番号を用い、説明を省略する。
【０１７３】
図１８と異なるのは、着目するＭＣＵブロックが拡大テキスト領域の内部にある場合の処理である。
【０１７４】
着目するＭＣＵブロックが拡大テキスト領域の内部にある場合、ステップ１５０５、Ｓ１５０６で文字含有ブロックの判定を行い、その判定結果が“０”である場合にはステップＳ２００１へ、“１”または“２”である場合にはステップＳ２００４へと処理を移す。
【０１７５】
ステップＳ２００１ではバッファ１０５から着目するブロックの画素データを読み出す。続いてステップＳ２００２では、読み出したＭＣＵブロックの各成分に対して離散コサイン変換を施し、ＤＣＴ係数のマトリクスを生成する。
【０１７６】
上記ステップＳ２００１、ステップＳ２００２の処理は離散コサイン変換部１０１３の処理に相当する。
【０１７７】
ステップＳ２００３では、ステップＳ２００２で得られた係数マトリクスに対して量子化を行い、量子化された係数マトリクスを生成する（係数量子化部１０１４の処理に相当）。
【０１７８】
一方、判定結果が“１”または“２”である場合、ステップＳ２００４に処理を進める。このステップＳ２００４では、ブロック情報保持部１００４（ＲＡＭ１４０２）内に格納したブロック情報から、着目するＭＣＵブロックの符号位置ｐ（ｉ）と符号長ｃｌ（ｉ）を読み出す。
【０１７９】
続いて、ステップＳ２００５では中間データ格納部１００２（外部記憶装置１４０７）に格納される中間データのｐ（ｉ）ビット目からｃｌ（ｉ）ビットを取り出して着目するＭＣＵブロックの符号を取り出す。
【０１８０】
上記ステップＳ２００４、Ｓ２００５の処理はブロック符号化データ取得部１０１２の処理に相当する。
【０１８１】
更に、ステップＳ２００６ではステップＳ２００５で取り出したＭＣＵブロック符号化データを復号して、量子化された係数値を復元する。なお、ＤＣ係数量子化値については差分のまま保持する（ＤＣＴ係数復号部１９０２の処理に相当）。
【０１８２】
ステップＳ２００７では、ステップＳ２００３、または、ステップＳ２００６で得られた量子化された係数値のマトリクスを参照して、高周波成分が多く含まれているか否かを判定する（特徴解析部１９０１の処理に相当）。
【０１８３】
高周波成分を多く含んだブロックの場合にはステップＳ２００９へと処理を移し、そうでない場合にはステップＳ２００９をスキップしてステップＳ２０１０へと処理を移す。
【０１８４】
ステップＳ２００９では、着目ブロックの各成分について８×８の係数量子化値について、図１４の斜線部にあたる高周波成分を０にマスクする（ＡＣ係数マスク部１９０４の処理に相当）。
【０１８５】
ステップＳ２０１０では、係数量子化値のマトリクスを再度ハフマン符号化し、ＭＣＵ符号化データを生成して出力する（ハフマン符号化部１０１６の処理に相当）。
【０１８６】
上記以外の処理は、第３の実施形態の変形例と同様である。
【０１８７】
以上説明したように、本第４の変形例によっても、第４の実施形態と同様の作用効果を奏することが可能となるのは明らかであろう。すなわち、文字画像データと背景画像データに分離してそれぞれに適した符号化を行う適応的符号化において、一時的に格納した中間データの活用により背景画像符号化データ取得のためのブロック再符号化処理を軽減できる。特に、本実施形態においては、背景画像のうち、拡大テキスト領域内で、かつ、高周波成分を有するブロックのみ高解像度を保持し、それ以外は解像度を落としている。これにより、簡易に、かつ、できるだけ視覚的な画質劣化を少なくして、符号量を削減する効果がある。これは、前景、背景分離の誤判定による、文字部分の視覚的な画質差の発生を抑制する効果が期待できる。
【０１８８】
［他の実施形態］
上記実施形態では、中間符号化データ、および、背景画像データの符号化にはＪＰＥＧを用いる例について示した。色変換、サブサンプリングを実施した場合にも本発明が適用可能であることは容易に理解できよう。但し、ＭＣＵを構成する８×８画素のブロック数を多くした場合には、ＤＣ差分の生成方法について考慮する必要がある。また、符号化方式についてもＪＰＥＧに限らず、所定のブロックを単位として区分できる符号を生成する手法であればＪＰＥＧ以外の符号化方式を用いても構わない。例えば、ＩＴＵ−Ｔ Ｔ．８００｜ＩＳＯ／ＩＥＣ１５４４４−１として国際標準勧告されるＪＰＥＧ２０００ Ｐａｒｔ１などを用いても良い。この場合、所定の大きさのタイルに分割して符号化すれば、本発明の実施には好適である。
【０１８９】
また、領域判別の方法、前景画像データの分離方法、あるいは前景画像データの符号化方法についても、上述の実施形態での説明に限定されるものではない。例えば、第１から第４の実施形態では、前景画像をＭＭＲを用いて２値として符号化する例について説明したが、ＪＢＩＧやＪＢＩＧ−２など他の２値符号化技術を適用しても構わない。また、前景画像の輪郭を抽出し、ベクトル化する手法と組み合わせても構わない。更に、前景を２値画像として符号化する手法だけでなく、限定色画像として符号化したり、多値として符号化する方法と組み合わせても構わない。具体的な例としては、ＭＲＣ（ＩＴＵ−Ｔ  Ｔ．４４）のように、多値の前景と背景、それを選択するためのマスクという３層を構成して符号化する方法においても、中間データの符号化方式と背景の符号化に同一の符号化方式を適用すれば、本発明の実施が可能である。別の例では、同じく前景を多値で符号化し、前景画素値のすくなくともいずれか一つに背景を表示することを指示する透過色を設定する方法においても同様である。
【０１９０】
また、実施形態では、ＲＧＢ画像の符号化を例に説明したが、画像の色空間は、ＣＭＹＫ、Ｌａｂ、ＹＣｒＣｂなど様々なタイプの画像データに適用可能であるのは明らかであるので、上記実施形態で本発明が限定されるものではない。
【０１９１】
また、上記実施形態では、コンピュータプログラムでもって実現する例を説明した。通常、コンピュータプログラムは、ＣＤ−ＲＯＭ等のコンピュータ可読記憶媒体に格納されていて、それをコンピュータの読取り装置（ＣＤ−ＲＯＭドライブ等）にセットし、システムにコピーもしくはインストールすることで実行可能になる。従って、このようなコンピュータ可読記憶媒体も本発明の範疇に入ることも明らかである。
【図面の簡単な説明】
【０１９２】
【図１】第１の実施形態に係る画像符号化装置のブロック構成図である。
【図２】ブロック情報のフォーマットを示す図である。
【図３】文字、写真の混在画像の一例を示す図である。
【図４】テキスト領域の例を示す図である。
【図５】文字画像データの例を示す図である。
【図６】穴埋め処理によって生成される背景画像データの概略を示す図である。
【図７】テキスト領域ＴＲｉの拡大の様子を示す図である。
【図８】第１の実施形態において生成する最終符号化データの構造を示す図である。
【図９】第１の実施形態における変形例の符号化処理手順を示すフローチャートである。
【図１０】第１の実施形態の変形例における背景画像の符号化処理手順を示すフローチャートである。
【図１１】第２の実施形態に係る画像符号化装置のブロック構成図である。
【図１２】第１の実施形態の変形例の情報処理装置のブロック構成図である。
【図１３】第２の実施形態におけるブロック情報のフォーマットを示す図である。
【図１４】８×８のＤＣＴ係数に対するマスク処理対象領域を示す図である。
【図１５】第２の実施形態の変形例における背景画像の符号化処理手順を示すフローチャートである。
【図１６】第３の実施形態に係る画像符号化装置装置のブロック構成図である。
【図１７】８×８のＤＣＴ係数に対する他のマスク処理対象領域を示す図である。
【図１８】第３の実施形態の変形例における背景画像の符号化処理手順を示すフローチャートである。
【図１９】第４の実施形態に係る画像符号化装置のブロック構成図である。
【図２０】第４の実施形態の変形例における背景画像の符号化処理手順を示すフローチャートである。
【図２１】ＤＣ差分を修正してＭＣＵ符号化データを生成する処理を説明するための図である。
【図１】
0004902569.tif 000002
【図２】
0004902569.tif 000003
【図３】
0004902569.tif 000004
【図４】
0004902569.tif 000005
【図５】
0004902569.tif 000006
【図６】
0004902569.tif 000007
【図７】
0004902569.tif 000008
【図８】
0004902569.tif 000009
【図９】
0004902569.tif 000010
【図１０】
0004902569.tif 000011
【図１１】
0004902569.tif 000012
【図１２】
0004902569.tif 000013
【図１３】
0004902569.tif 000014
【図１４】
0004902569.tif 000015
【図１５】
0004902569.tif 000016
【図１６】
0004902569.tif 000017
【図１７】
0004902569.tif 000018
【図１８】
0004902569.tif 000019
【図１９】
0004902569.tif 000020
【図２０】
0004902569.tif 000021
【図２１】
0004902569.tif 000022