以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<第1の実施の形態>
図1は、第1の実施の形態における画像符号化装置1000の構成を示すブロック図である。
図1を参照して、画像符号化装置1000は、画像処理部100と、データバス50と、制御部120と、一時記憶部130と、記憶部140と、記録媒体アクセス部150と、記録媒体70とを備える。
データバス50には、画像処理部100、制御部120、一時記憶部130、記憶部140および記録媒体アクセス部150が接続されている。
記憶部140には、画像処理部100および制御部120に後述する処理を行なわせるための画像符号化プログラム72、入力画像データ、その他各種プログラムおよびデータ等が記憶されている。記憶部140は、画像処理部100および制御部120によってデータアクセスされる。
記憶部140は、大容量のデータを記憶可能なハードディスクである。なお、記憶部140は、ハードディスクに限定されることなく、電源を供給されなくてもデータを不揮発的に保持可能な媒体(たとえば、フラッシュメモリ)であればよい。
画像処理部100は、詳細は後述するが、記憶部140に記憶された画像符号化プログラム72に従って、後述する画像処理を行なう。
制御部120は、記憶部140に記憶された画像符号化プログラム72に従って、画像符号化装置1000内の各部に対する各種処理や、演算処理等を行なう機能を有する。また、制御部120は、画像処理部100で行なわれている処理を監視する機能を有する。
制御部120は、CPU(Central Processing Unit)、マイクロプロセッサ(Microprocessor)、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、その他の演算機能を有する回路のいずれであってもよい。
一時記憶部130は、データを一時的に記憶する機能を有する。一時記憶部130は、画像処理部100および制御部120によってデータアクセスされ、ワークメモリとして動作する。一時記憶部130は、RAM(Random Access Memory)、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、SDRAM(Synchronous DRAM)、DDR−SDRAM(Double Data Rate SDRAM)、その他、データを揮発的に記憶保持可能な構成を有する回路のいずれであってもよい。
記録媒体70には、前述した画像符号化プログラム72が記録されている。
記録媒体アクセス部150は、画像符号化プログラム72が記録された記録媒体70から、画像符号化プログラム72を読出す機能を有する。記録媒体70に記憶されている画像符号化プログラム72は、制御部120のインストール処理により、記録媒体アクセス部150から読み出され、記憶部140に記憶される。
このインストール処理用プログラムは、予め、記憶部140に格納されており、インストール処理は、制御部120が、インストール処理用プログラムに基づいて行なう。
なお、記憶部140には、画像符号化プログラム72が記憶されていなくてもよい。この場合、制御部120は、記録媒体アクセス部150を介して、記録媒体70に記憶された画像符号化プログラム72を読み出して、画像符号化プログラム72に基づいた所定の処理を行なう。
記録媒体70は、画像符号化装置1000から着脱可能な媒体である。すなわち、記録媒体70に記録されている画像符号化プログラム72は、媒体等に記録されてプログラム製品として流通される。また、記録媒体70もプログラム製品として流通される。
記録媒体70は、DVD−ROM(Digital Versatile Disk Read Only Memory)、D
VD−R(Digital Versatile Disk Recordable)、DVD−RAM(Digital Versatile
Disk Random Access Memory)、DVD+RW(Digital Versatile Disk Re-Writable)、DVD−RW、CD−ROM(Compact Disk Read Only Memory)、MO(Magneto Optical Disk)、MD(Mini Disc)(登録商標)、フレキシブルディスク、着脱可能なハードディスク、CF(Compact Flash) カード、SM(Smart Media(登録商標))、MMC(Multi Media Card)、SD(Secure Digital)メモリーカード、メモリースティック(登録商標)、xDピクチャーカードおよびUSBメモリ、カセットテープ、磁気テープ、ICカード(メモリーカードを含む)、光カード、マスクROM、EPROM、EEPROM、フラッシュROM、その他不揮発性メモリのいずれであってもよい。
画像処理部100は、ブロック像域判定部101と、第1画像縮小部102Aと、第2画像縮小部102Bと、マスク生成部103と、前景画像生成部105と、背景画像生成部106とを含む。
ブロック像域判定部101は、入力画像のデータ(以下、入力画像データともいう)を受信する。入力画像は、たとえば、図示しないイメージスキャナ等を用いて読み込まれた画像である。入力画像データは、RGBなどの色空間に従うデジタル画像データである。入力画像データは、記憶部140に記憶される。
ブロック像域判定部101は、詳細は後述するが、入力画像の像域種別を所定のブロック単位で判定する。ここで、所定のブロック単位とは、入力画像、前景画像および背景画像の各々の解像度と、前景画像符号化部108、背景画像符号化部109の各々の符号化処理単位に基づいて、システム設計者が予め設定すればよい。また、所定のブロック単位は、処理条件に応じて、予め設定したブロックサイズの中から、自動的に選択されるようにしてもよい。ブロックサイズの具体例については、後述する。
ブロック像域判定部101は、マスク生成部103と接続される。ブロック像域判定部101は、像域種別の判定結果をマスク生成部103へ送信する。なお、ブロック像域判定部101は、たとえば、専用のLSIによって構成される。
第1画像縮小部102Aは、入力画像データを受信する。第1画像縮小部102Aは、入力画像の解像度を下げることにより、入力画像を縮小する。第1画像縮小部102Aは、前景画像生成部105と接続される。第1画像縮小部102Aは、縮小した入力画像(以下、第1縮小画像ともいう)のデータを、前景画像生成部105へ送信する。第1縮小画像は、文字、線等を示す像域に対し後述する処理が行なわれる画像である。なお、第1画像縮小部102Aは、たとえば、専用のLSIによって構成される。
第2画像縮小部102Bは、入力画像データを受信する。第2画像縮小部102Bは、入力画像の解像度を下げることにより、入力画像を縮小する。第2画像縮小部102Bは、背景画像生成部106と接続される。第2画像縮小部102Bは、縮小した入力画像(以下、第2縮小画像ともいう)のデータを、背景画像生成部106へ送信する。第2縮小画像は、写真等の像域に対し後述する処理が行なわれる画像である。なお、第2画像縮小部102Bは、たとえば、専用のLSIによって構成される。
ここで、第1縮小画像および第2縮小画像の解像度(サイズ)は、目標とする画質や符号化画像データ容量に応じて決定すればよい。
たとえば、第1縮小画像の縦および横方向の解像度(サイズ)は、入力画像の縦および横方向の解像度(サイズ)をそれぞれ、2のM乗の値および2のM’乗の値で除した値を有する解像度(サイズ)とすればよい。なお、M、M’は、0以上の整数とし、M=M’の関係が成立することが好ましい。また、第2縮小画像の縦および横方向の解像度(サイズ)は、入力画像の縦および横方向の解像度(サイズ)をそれぞれ、2のN乗の値および2のN’乗の値で除した解像度(サイズ)とすればよい。なお、N、N’は、0以上の整数とし、N=N’の関係が成立することが好ましい。
また、写真等の像域に対し後述する処理が行なわれる第2縮小画像の解像度は、文字、線等の像域に対し後述する処理が行なわれる第1縮小画像の解像度よりも、解像度が低いこと(M<NかつM’<N’)が好ましい。なぜなら、一般に、文字や線の解像度より、写真や背景色の解像度が低くても、写真や背景色の画質の劣化は目立たないからである。解像度の組み合わせに関する詳細な説明および具体例については、後述する。
第1画像縮小部102Aおよび第2画像縮小部102Bにおける、画像の縮小処理には、ニアレストネイバー(Nearest Neighbor)法、バイリニア(Bilinear)法、バイキュービック(Bicubic)法など、画像の解像度変換に一般的に用いられる既存の補間手法が使用される。
マスク生成部103は、ブロック像域判定部101と接続される。マスク生成部103は、ブロック像域判定部101で判定された像域種別の判定結果に基づいて、マスクのデータ(以下、マスクデータともいう)を生成する。以下においては、複数のマスクデータから構成されるデータをマスク層データともいう。また、以下においては、マスク層データが示す画像をマスク画像ともいう。
マスクデータは、画像再生時に、処理対象のブロック画像が、前景画像として有効または無効であるかを示す情報である。ここで、ブロック画像とは、ブロック単位の画像のことをいう。また、前景画像として「有効」とは、画像再生時に下層(本実施の形態では背景層)のデータを上書きすることを示す。また、前景画像として「無効」とは、画像再生時に下層(本実施の形態では背景層)のデータをそのまま用いることを示す。
本実施の形態では、画像またはデータが、3層構造で処理される。1つ目の層は、マスク層である。マスク層では、マスク層データ、後述するマスク符号化データが処理される。2つ目の層は、前景層である。前景層では、前景画像が処理される。3つ目の層は、背景層である。背景層では、背景画像が処理される。
画像処理部100は、さらにマスク拡張部104A、マスク拡張部104B、マスク符号化部107、前景画像符号化部108、背景画像符号化部109およびフォーマット部110を含む。
マスク生成部103は、マスク符号化部107と接続される。マスク生成部103は、生成したマスクデータをマスク符号化部107へ送信する。
また、マスク生成部103は、マスク拡張部104Aと接続される。マスク生成部103は、生成したマスクデータを一時記憶部130に記憶させる。また、マスク生成部103は、マスク拡張部104Bと接続される。マスク生成部103は、生成したマスクデータを一時記憶部130に記憶させる。なお、マスク生成部103は、たとえば、専用のLSIによって構成される。
マスク拡張部104Aは、マスク生成部103と、前景画像生成部105とに接続される。マスク拡張部104Aは、マスク生成部103から受信した複数のマスクデータからなるマスク層データが示すマスク画像内において、前景画像として有効であることを示す領域を画素単位またはブロック単位で拡張する。なお、マスク拡張部104Aが行なう処理の詳細は後述する。
以下においては、マスク拡張部104Aにより処理されたマスクデータを、前景拡張マスクデータともいう。マスク拡張部104Aは、前景拡張マスクデータを、一時記憶部130に記憶させる。なお、マスク拡張部104Aは、たとえば、専用のLSIによって構成される。
マスク拡張部104Bは、マスク生成部103と、背景画像生成部106とに接続される。マスク拡張部104Bは、マスク生成部103から受信した複数のマスクデータからなるマスク層データが示すマスク画像内において、背景画像として有効であること(前景画像として無効であること)を示す領域を画素単位またはブロック単位で拡張する。なお、マスク拡張部104Bが行なう処理の詳細は後述する。
以下においては、マスク拡張部104Bにより処理されたマスクデータを、背景拡張マスクデータともいう。マスク拡張部104Bは、背景拡張マスクデータを、一時記憶部130に記憶させる。なお、マスク拡張部104Bは、たとえば、専用のLSIによって構成される。
前景画像生成部105は、マスク拡張部104Aと、第1画像縮小部102Aとに接続される。前景画像生成部105は、一時記憶部130から読み出した前景拡張マスクデータに基づいて、第1画像縮小部102Aから受信した第1縮小画像のデータを使用して、前景画像のデータ(以下、前景層データともいう)を生成する。
また、前景画像生成部105は、前景画像符号化部108と接続される。前景画像生成部105は、生成した前景画像のデータを前景画像符号化部108へ送信する。なお、前景画像生成部105は、たとえば、専用のLSIによって構成される。
背景画像生成部106は、マスク拡張部104Bと、第2画像縮小部102Bとに接続される。背景画像生成部106は、一時記憶部130から読み出した背景拡張マスクデータに基づいて、第2画像縮小部102Bから受信した第2縮小画像のデータを使用して、背景画像のデータ(以下、背景層データともいう)を生成する。
また、背景画像生成部106は、背景画像符号化部109と接続される。背景画像生成部106は、生成した背景画像のデータを背景画像符号化部109へ送信する。なお、背景画像生成部106は、たとえば、専用のLSIによって構成される。
マスク符号化部107は、マスク生成部103と接続される。マスク符号化部107は、マスク生成部103で生成された複数のマスクデータからなるマスク層データを可逆符号化する。マスクデータは、前述したように、対応するブロック画像が、前景画像として有効であるか否かを示すデータである。
可逆符号化では、各画素(または各ブロック)単位における選択のための情報を2値で表現する場合(2値画像データを使用する場合)、2値画像の可逆符号化に適した符号化方式が使用される。当該符号化方式は、MR(Modified Read)、MMR(Modified Modified Read)、JBIG(Joint Bi-level Image Coding Expert Group)等のいずれの符
号化方式であってもよい。
マスク符号化部107は、フォーマット部110と接続される。マスク符号化部107は、符号化したマスク層データ(以下、マスク符号化データともいう)をフォーマット部110へ送信する。なお、マスク符号化部107は、たとえば、専用のLSIによって構成される。
前景画像符号化部108は、前景画像生成部105と接続される。前景画像符号化部108は、前景画像生成部105で生成された前景画像を非可逆符号化する。非可逆符号化を行なう符号化方式は、多値画像の符号化に好適なJPEG方式が使用される。なお、非可逆符号化を行なう符号化方式は、JPEG方式に限定されることなく、他の符号化方式であってもよい。
また、前景画像符号化部108は、フォーマット部110と接続される。前景画像符号化部108は、符号化した前景画像のデータ(以下、前景画像符号化データともいう)をフォーマット部110へ送信する。なお、前景画像符号化部108は、たとえば、専用のLSIによって構成される。
背景画像符号化部109は、背景画像生成部106と接続される。背景画像符号化部109は、背景画像生成部106で生成された背景画像を非可逆符号化する。非可逆符号化を行なう符号化方式は、多値画像の符号化に好適なJPEG方式が使用される。なお、非可逆符号化を行なう符号化方式は、JPEG方式に限定されることなく、他の符号化方式であってもよい。
また、背景画像符号化部109は、フォーマット部110と接続される。背景画像符号化部109は、符号化した背景画像のデータ(以下、背景画像符号化データともいう)をフォーマット部110へ送信する。なお、背景画像符号化部109は、たとえば、専用のLSIによって構成される。
フォーマット部110は、マスク符号化部107と、前景画像符号化部108と、背景画像符号化部109とに接続される。フォーマット部110は、マスク符号化部107、前景画像符号化部108および背景画像符号化部109で、それぞれ生成された、マスク符号化データ、前景画像符号化データ、背景画像符号化データを統合的に取り扱うことができるように関係付けたデータ(以下、関係付けデータともいう)を作成する。
フォーマット部110は、マスク符号化データ、後述する前景画像符号化データ、後述する背景画像符号化データおよび関係付けデータを、一つの符号化画像データとして、たとえば、一つの汎用的な電子データ(以下、汎用統合データともいう)を生成する。なお、汎用統合データは、図1の圧縮画像データに相当する。フォーマット部110が生成する汎用統合データのフォーマットは、たとえば、Adobe(登録商標)社のPDFに従うデータフォーマットである。
フォーマット部110は、汎用統合データを、データバス50を介して、一時記憶部130または記憶部140に記憶させる。また、フォーマット部110は、汎用統合データを、LAN(Local Area Network)などの通信経路を介して外部機器へ送信してもよい。
なお、前述の説明では、第1画像縮小部102Aおよび第2画像縮小部102Bは、それぞれ異なる構成要素として説明した。しかしながら、第1画像縮小部102Aおよび第2画像縮小部102Bは、一つの画像縮小部として構成されてもよい。この場合、画像縮小部は、解像度変換時のパラメータを変更して、適宜、第1画像縮小部102Aまたは第2画像縮小部102Bが行なう処理を行なえばよい。
また、前述の説明では、マスク拡張部104Aおよびマスク拡張部104Bは、それぞれ異なる構成要素として説明した。しかしながら、マスク拡張部104Aおよびマスク拡張部104Bは、一つのマスク拡張部として構成されてもよい。この場合、当該一つのマスク拡張部は、受信データまたは送信データの種類(前景画像または背景画像のデータ)に応じてデータが正しく流れるように制御する。
また、前述の説明では、前景画像符号化部108および背景画像符号化部109は、それぞれ異なる構成要素として説明した。しかしながら、前景画像符号化部108および背景画像符号化部109のどちらもJPEG方式を用いる場合、前景画像符号化部108および背景画像符号化部109は、一つのJPEG符号化LSIとして構成されてもよい。
また、前述のブロック像域判定部101、第1画像縮小部102A、第2画像縮小部102B、マスク生成部103、マスク拡張部104A、マスク拡張部104B、前景画像生成部105、背景画像生成部106、マスク符号化部107、前景画像符号化部108、背景画像符号化部109およびフォーマット部110の各々が行なう処理は、専用のLSIではなく、パーソナルコンピュータなどの一般的なコンピュータのマイクロプロセッサまたは制御部120により実行されてもよい。
この場合、たとえば、後述する画像符号化処理をコンピュータまたは制御部120に実行させるためのプログラムとして記述してもよい。当該プログラムは、画像符号化プログラム72であり、記録媒体70に記録されて流通する。
コンピュータにより、後述する画像符号化処理が実行される場合、画像符号化プログラム72は、記録媒体70に記録され、コンピュータが備える記録媒体アクセス部により、コンピュータが備える記憶部に読み込まれ、CPU(Central Processing Unit)で実行される。
制御部120により、後述する画像符号化処理が実行される場合、画像符号化プログラム72は、記録媒体70に記録され、制御部120により実行される。
さらに、画像符号化プログラム72は、インターネットなどのネットワークを介して他の装置からダウンロードされてもよい。
また、画像処理部100に含まれる、前述した複数の専用のLSIとコンピュータのマイクロプロセッサとを組み合わせてもよい。また、前述した複数の専用のLSIの一部または全てを一つの専用のLSIとして構成してもよい。
(符号化処理)
次に、第1の実施の形態における画像符号化装置1000の具体的な処理内容について説明する。画像符号化装置1000では、以下の画像符号化処理が行なわれる。なお、画像符号化処理が行なわれる前に、記憶部140に記憶されている入力画像データは、一時記憶部130に記憶されるとする。
図2は、画像符号化処理のフローチャートである。図2を参照して、画像符号化処理では、まず、ステップS101の処理が行なわれる。
ステップS101では、画像データ読出し処理が行なわれる。画像データ読出し処理では、画像処理部100が、一時記憶部130に記憶されている入力画像データを、所定のブロック単位で読み出す。
図3は、第1の実施の形態において、画像符号化装置1000で処理される画像を示す図である。なお、図3に示される各画像の解像度を忠実に図にて表現することは困難である。そのため、図3では、後述する図10のデータテーブルT100の組合せ番号“1”に対応する解像度と、ブロックサイズの関係を想定して、相対的な関係を例示する。
図3を参照して、入力画像100Gは、入力画像データが示す画像である。入力画像100Gは、文字と、写真とが配置された画像である。なお、写真が表示されている領域内には、文字も配置されている。
ステップS101の画像データ読出し処理において、読み出される画像は、たとえば、所定のブロックに対応する領域100R内の画像である。領域100Rのサイズは、たとえば、横32画素、縦32画素のサイズである。ステップS101の処理が繰り返される毎に、領域100Rの位置は、前回の位置と重ならない位置に移動する。なお、初めてステップS101の処理が行なわれるときは、領域100Rの位置は、入力画像100Gの左上である。
具体的には、ステップS101の処理が繰り返される毎に、領域100Rの位置は、右に移動する。そして、領域100Rの位置が入力画像100Gの右端になると、次のステップS101の処理では、領域100Rの位置は、領域100Rの縦のサイズだけ下の位置であって、入力画像100Gの左端に移動する。上記処理が、繰り返されることにより、最終的に、領域100Rの位置は、入力画像100Gの右下の位置(領域100RFの位置)まで移動する。
再び、図2を参照して、画像データ読出し処理では、画像処理部100は、読み出した所定のブロック単位の入力画像データを、ブロック像域判定部101へ送信する。以下においては、ブロック単位の画像データを、ブロック画像データともいう。また、前述したように、ブロック単位の画像のことをブロック画像という。また、画像データが入力画像データである場合のブロック画像データを入力ブロック画像データともいう。画像が入力画像である場合のブロック画像を入力ブロック画像ともいう。すなわち、画像データ読出し処理により、入力ブロック画像データが、ブロック像域判定部101へ送信される。その後、ステップS110に進む。
ステップS110では、像域判定処理が行なわれる。像域判定処理では、ブロック像域判定部101が、受信した入力ブロック画像データに対し、後述する処理を行なう。ブロック像域判定部101は、領域100R内の各画素単位ではなく、所定のブロック画像(たとえば、領域100R内の画像)単位で後述する処理を行なう。この点が、本発明の一つの特徴である。像域判定処理は、処理対象の像域(ブロック画像)が、文字または線が存在する像域(ブロック画像)であるか否かを判定する処理である。
図4は、像域判定処理のフローチャートである。図4を参照して、ステップS112では、ブロック像域判定部101が、受信した入力ブロック画像(領域100R内の画像)内に、文字または線が存在するか否かを判定する。当該判定は、予め生成した画素単位マスクプレーンに基づいて行なわれる。画素単位マスクプレーンは、たとえば、特開2004−187000号公報に開示されている画素単位のマスクプレーンである。
画素単位マスクプレーンは、入力画像の各画素が、文字または線画部分に該当する画素であるか否かを示す複数のデータ(以下、文字判定データともいう)から構成される。したがって、画素単位マスクプレーンは、入力画像(たとえば、入力画像100G)の全画素数と同じ数の文字判定データから構成される。また、複数の文字判定データは、入力画像の複数の画素(全画素)にそれぞれ対応する。
本実施の形態では、文字判定データが、入力画像の文字または線画部分に該当する画素に対応する場合、文字判定データを“1”とする。また、文字判定データが、入力画像の文字または線画部分に該当しない画素に対応する場合、文字判定データを“0”とする。
ここで、画素単位マスクプレーンは、ブロック単位マスクプレーンと比べて、文字または線画部分に該当するか否かを画素単位で判定する点において異なる。具体的には、ブロック単位マスクプレーンは、プレーン情報から文字または線の形状を精度よく復元することは、ほぼ不可能である。しかしながら、画素単位マスクプレーンは、判定対象画像の解像度に従って文字または線の形状を比較的精度よく表現可能である。
画素単位マスクプレーンの作成は、たとえば、入力画像の各画素の輝度データを用いて、特開平2−123479号公報または特開平2−155087号公報に開示されている技術により行なわれる。具体的には、制御部120が、一時記憶部130に記憶されている入力画像データから、予め用意した尾根画素検出パターンを適用して尾根画素を検出する。そして、制御部120が、予め定めた領域単位で計数することより、計数値に基づいて文字または線画部分に該当する画素であるか否かを判定し、複数の文字判定データの各々を“1”または“0”に設定する。制御部120は、以上の処理により生成した画素単位マスクプレーンを、一時記憶部130に記憶させる。なお、画像符号化装置1000の外部で、画素単位マスクプレーンを予め生成し、一時記憶部130に記憶させてもよい。
なお、画素単位マスクプレーンの生成方法は、特開平2−123479号公報および特開平2−155087号公報に開示されているように、公知の技術である。本発明の画素単位マスクプレーンの生成方法は、前述の方法に限定されることなく、他の方法により行なわれてもよい。
次に、受信したブロック画像(領域100R内の画像)内に、文字または線が存在するか否かを判定する具体的な処理を説明する。
ブロック像域判定部101は、一時記憶部130に記憶された画素単位マスクプレーンを参照し、受信したブロック画像(領域100R内の画像)内の複数の画素にそれぞれ対応する複数の文字判定データのうち、“1”に設定された文字判定データが1つ以上あるか否かを判定する。“1”に設定された文字判定データが1つ以上あれば、ブロック画像内には、文字または線が存在することになる。
なお、判定の対象となる“1”に設定された文字判定データの数は、1以上に限定されることなく、N(2以上の自然数)以上であってもよい。以下においては、文字または線が存在するブロック画像を、線分ブロック画像ともいう。また、文字または線が存在しないブロック画像を、非線分ブロック画像ともいう。
なお、ブロック像域判定部101は、複数の文字判定データが、全て“1”に設定されている場合、判定対象のブロック画像を、線分ブロック画像と判定してもよい。ブロック像域判定部101は、複数の文字判定データのうち、“0”に設定された文字判定データが1つ以上ある場合、判定対象のブロック画像を、非線分ブロック画像と判定してもよい。また、ブロック像域判定部101は、複数の文字判定データが全て“0”に設定されている場合、判定対象のブロック画像を、非線分ブロック画像と判定してもよい。
ステップS112において、YESならば、ステップS114Aに進む。一方、ステップS112において、NOならば、ステップS114Bに進む。
なお、ステップS112では、予め生成した画素単位マスクプレーンを使用しなくても、判定対象のブロック画像が、線分ブロック画像および非線分ブロック画像のいずれであるか判定することが可能である。
次に、画素単位マスクプレーンを使用せず、判定対象のブロック画像内の複数の画素値を用いて、判定対象のブロック画像が、線分ブロック画像および非線分ブロック画像のいずれであるか判定する方法を説明する。
この方法は、特開平5−014701号公報に開示されている技術を用いる。具体的には、まず、ブロック像域判定部101が、判定対象のブロック画像内の複数の画素値から最大濃度レベルと最小濃度レベルの差を求める。次に、ブロック像域判定部101は、濃度レベルの差のデータに基づいて閾値(たとえば、中間レベル)を定める。
次に、ブロック像域判定部101は、ブロック内の画素を所定の方向に走査した際に濃度レベルが極大および極小となる点を抽出し、極大および極小の画素レベルの差からパルスの高さを求める。次に、ブロック像域判定部101は、求めたパルスの高さが、上記の閾値よりも大きい場合について計数する。次に、ブロック像域判定部101は、計数値が所定の値よりも小さいか否かで、判定対象のブロック画像が、線分ブロック画像または非線分ブロック画像であると判定することができる。
また、他の方法としては、特開平5−114045号公報に開示されている技術を用いる。具体的には、まず、ブロック像域判定部101が、「判定対象のブロック画像内で所定の閾値以上の画素値(輝度値)を持つ画素の総数」を「判定対象のブロック画像内の画素の総数」で除算した値(以下、黒画素密度ともいう)を算出する。次に、ブロック像域判定部101は、黒画素密度の大小に基づいて、判定対象のブロック画像が、線分ブロック画像または非線分ブロック画像であるか判定することができる。すなわち、線分ブロック画像では黒画素密度が比較的小さい傾向にあることを利用する。
また、他の方法としては、文字、線に加え、エッジ部分も判定に利用する。具体的には、まず、ブロック像域判定部101が、判定対象のブロック画像について横および縦の各方向にSobelオペレータなどの微分(または差分)オペレータを適用して、対応する画素単位で適用結果の絶対値を加算して傾きの大きさを算出する。
次に、ブロック像域判定部101は、算出した傾きの大きさが閾値より大きい画素を文字・線またはエッジ部分であると判定する。判定対象のブロック画像が、文字・線またはエッジ部分を含む場合、ブロック像域判定部101は、判定対象のブロック画像が、文字・線またはエッジ部分を含む線分ブロック画像であると判定することができる。
なお、判定対象のブロック画像が、文字・線またはエッジ部分を含むか否かの判定は、判定対象のブロック画像の画素値および当該ブロック画像の周辺の画素値を用いて行なわれてもよい。
ステップS114Aでは、ブロック像域判定部101が、線分ブロックデータを“1”に設定する。線分ブロックデータは、処理対象のブロック画像が、線分ブロック画像であるか否かを示すデータである。線分ブロックデータが“1”に設定されている場合は、処理対象のブロック画像が、線分ブロック画像であることを示す。一方、線分ブロックデータが“0”に設定されている場合は、処理対象のブロック画像が、非線分ブロック画像であることを示す。
ブロック像域判定部101は、“1”に設定した線分ブロックデータを、マスク生成部103へ送信する。また、ブロック像域判定部101は、処理対象のブロック画像のデータ(入力ブロック画像データ)と対応づけて、“1”に設定した線分ブロックデータを、一時記憶部130に記憶させる。その後、この像域判定処理は終了し、図2の画像符号化処理に戻り、ステップS110の次のステップS120に進む。
ステップS114Bでは、ブロック像域判定部101が、線分ブロックデータを“0”に設定する。ブロック像域判定部101は、“0”に設定した線分ブロックデータを、マスク生成部103へ送信する。また、ブロック像域判定部101は、処理対象のブロック画像のデータ(入力ブロック画像データ)と対応づけて、“0”に設定した線分ブロックデータを、一時記憶部130に記憶させる。その後、この像域判定処理は終了し、図2の画像符号化処理に戻り、ステップS110の次のステップS120に進む。
再び、図3を参照して、画像110Gは、像域判定処理により設定された線分ブロックデータの状態を視覚的に分かりやすく示した画像である。入力画像100Gに対し、ブロック画像単位で前述の像域判定処理を行なった場合、処理対象のブロック画像が、線分ブロック画像と判定されたブロック画像内の全画素は、白(たとえば、画素値“1”)で示される。また、処理対象のブロック画像が、非線分ブロック画像と判定されたブロック画像内の全画素は、黒(たとえば、画素値“0”)で示される。
再び、図2を参照して、ステップS120では、マスクデータ生成処理が行なわれる。マスクデータ生成処理では、像域判定処理により設定された線分ブロックデータに基づいて、マスクデータが生成される。マスクデータは、処理対象のブロック画像が、前景画像として有効であるか否かを示すデータである。マスクデータは、“0”または“1”のいずれかを示す1ビットのデータである。
マスクデータが“1”に設定された場合、処理対象のブロック画像は、前景画像として有効となる。一方、マスクデータが“0”に設定された場合、処理対象のブロック画像は、前景画像として無効となる。マスクデータは、ステップS110の像域判定処理で処理される1つのブロック画像に対し、1つの値を示す。なお、マスクデータは、ステップS110の像域判定処理で処理される1つのブロック画像内の全ての画素に対し、1つの値を示してもよい。
図5は、マスクデータ生成処理のフローチャートである。図5を参照して、ステップS122では、処理対象のブロック画像が、線分ブロック画像であるか否かが判定される。具体的には、マスク生成部103が、受信した線分ブロックデータが“1”に設定されているか否かを判定する。ステップS122において、YESならば、ステップS124Aに進む。一方、ステップS122において、NOならば、ステップS124Bに進む。
ステップS124Aでは、マスク生成部103が、マスクデータを“1”に設定する。すなわち、処理対象のブロック画像は、前景画像として有効となる。マスク生成部103は、処理対象のブロック画像のデータ(入力ブロック画像データ)と対応づけて、“1”に設定したマスクデータを、一時記憶部130に記憶させる。その後、このマスクデータ生成処理は終了し、図2の画像符号化処理に戻り、ステップS120の次のステップS131に進む。
ステップS124Bでは、マスク生成部103が、マスクデータを“0”に設定する。すなわち、処理対象のブロック画像は、前景画像として無効となる。マスク生成部103は、処理対象のブロック画像のデータ(入力ブロック画像データ)と対応づけて、“0”に設定したマスクデータを、一時記憶部130に記憶させる。その後、このマスクデータ生成処理は終了し、図2の画像符号化処理に戻り、ステップS120の次のステップS131に進む。
再び、図3を参照して、画像120MGは、マスクデータ生成処理が繰り返し行なわれることにより設定された複数のマスクデータの状態を視覚的に分かりやすく示した画像(以下、マスク画像ともいう)である。マスクデータ生成処理により、前景画像として有効と判定されたブロック画像は、白(たとえば、画素値“1”)の1画素で示される。また、マスクデータ生成処理により、前景画像として無効と判定されたブロック画像は、黒(たとえば、画素値“0”)の1画素で示される。
なお、マスク画像(たとえば、マスク画像120MG)の白の画素は、後述する層データA(第1縮小ブロック画像のデータ)を使用することを示すデータである。マスク画像の黒の画素は、後述する層データB(第2縮小ブロック画像のデータ)を使用することを示すデータである。
ここで、マスク画像120MGの解像度は、画像110Gの解像度600dpi(dots per inch)を、ブロック像域判定処理単位の画素数32画素で除した、18.75dpiとしている。なぜなら、一つのブロック画像に対し、一つの値が設定されているからである。
再び、図2を参照して、ステップS131では、入力画像全体に対しマスクデータ生成処理が終了したか否かが判定される。具体的には、制御部120が、ステップS101の処理で読み出された入力ブロック画像が、入力画像内の右下のブロック画像(領域100RF内の画像)であるか否かを判定する。ステップS131において、YESならば、ステップS140に進む。一方、ステップS131において、NOならば、再度、ステップS101の処理が繰り返される。
ステップS131において、YESと判定された時点では、一時記憶部130に、複数のマスクデータが記憶される。前述したように、一時記憶部130に記憶される複数のマスクデータから構成されるデータをマスク層データともいう。また、前述したように、マスク層データが示す画像をマスク画像ともいう。一時記憶部130に記憶される複数のマスクデータから構成されるデータをマスク層データが示すマスク画像は、たとえば、図3のマスク画像120MGである。
ステップS140では、マスク拡張処理Aが行なわれる。
図6は、マスク拡張処理Aのフローチャートである。図6を参照して、マスク拡張処理Aでは、まず、ステップS141の処理が行なわれる。
ステップS141では、マスクデータ読出し処理Aが行なわれる。マスクデータ読出し処理Aでは、マスク拡張部104Aが、一時記憶部130に記憶されている複数のマスクデータを読み出す。以下においては、マスクデータ読出し処理Aにより読み出された複数のマスクデータの各々を、読み出しマスクデータAともいう。また、以下においては、複数の読み出しマスクデータAにより示される画像を、マスク画像MAともいう。ここで、マスク画像MAは、一例として、以下の図7のマスク画像120MGであるとする。
図7は、マスク拡張処理Aを説明するための図である。図7を参照して、マスク画像120MGは、複数の読み出しマスクデータAにより示される画像(マスク画像MA)である。マスク画像120MGにおいて、点線により示される1つの四角の領域は、1画素を示す。
マスク画像120MGの白の画素は、“1”に設定されたマスクデータに対応する画素である。すなわち、マスク画像120MGの白の画素は、対応するブロック画像が、前景画像として有効であることを示す画素である。また、マスク画像120MGの白の画素は、対応するブロック画像が、背景画像として無効であることを示す画素である。
マスク画像120MGの黒の画素は、“0”に設定されたマスクデータに対応する画素である。すなわち、マスク画像120MGの黒の画素は、対応するブロック画像が、前景画像として無効であることを示す画素である。また、マスク画像120MGの黒の画素は、対応するブロック画像が、背景画像として有効であることを示す画素である。
以下においては、マスク画像において、対応するブロック画像が、前景画像として有効であることを示す画素を、前景有効表示画素ともいう。また、以下においては、マスク画像において、隣接する複数の前景有効表示画素からなる領域を前景有効表示領域ともいう。すなわち、マスク画像120MGの白の画素は、前景有効表示画素である。また、マスク画像120MGにおいて、隣接する複数の白の画素からなる領域は、前景有効表示領域である。
また、以下においては、マスク画像において、対応するブロック画像が、背景画像として有効であることを示す画素を、背景有効表示画素ともいう。また、以下においては、マスク画像において、隣接する複数の背景有効表示画素からなる領域を背景有効表示領域ともいう。すなわち、マスク画像120MGの黒の画素は、背景有効表示画素である。また、マスク画像120MGにおいて、隣接する複数の黒の画素からなる領域は、背景有効表示領域である。
再び、図6を参照して、ステップS141の処理の後、ステップS142に進む。
ステップS142では、フィルタ設定処理Aが行なわれる。フィルタ設定処理Aでは、マスク拡張部104Aが、マスク画像MA(たとえば、マスク画像120MG)に含まれる複数の画素のうちの1画素を、フィルタ対象画素に設定する。フィルタ対象画素は、フィルタ処理の対象となる画素である。フィルタ対象画素の設定方法は後述する。
図8は、フィルタ対象画素を説明するための図である。フィルタ対象画素FPXは、横3画素、縦3画素のサイズのフィルタFTの真ん中の画素である。フィルタFTは、画素PX1、PX2,PX3,PX4,PX5,PX6,PX7,PX8,PX9を含む。すなわち、フィルタ対象画素FPXは、画素PX5である。
ステップS142の処理が繰り返される毎に、複数の読み出しマスクデータAが示すマスク画像において、異なる画素が、フィルタ対象画素FPXに設定される。なお、初めてステップS142の処理が行なわれる場合、マスク画像MAの左上の画素が、フィルタ対象画素FPXに設定される。この場合、フィルタFTに含まれる画素PX1、PX2,PX3、PX4,PX7は、マスク画像MAにおいて対応する画素が存在しない。
具体的には、ステップS142の処理が繰り返される毎に、マスク画像MAにおいて、前回、フィルタ対象画素FPXに設定された画素の右の画素が、フィルタ対象画素FPXに設定される。なお、ステップS142の処理により、マスク画像MAの右端の画素がフィルタ対象画素FPXに設定された場合、次のステップS142の処理では、前回、フィルタ対象画素FPXに設定された画素の1画素分下の画素であって、かつ、マスク画像MAの左端の画素が、フィルタ対象画素FPXに設定される。上記処理が、繰り返されることにより、最終的に、マスク画像MAの右下の画素が、フィルタ対象画素FPXに設定される。
再び、図6を参照して、ステップS142の処理の後、ステップS143に進む。
ステップS143では、前景有効表示領域拡張処理が行なわれる。前景有効表示領域拡張処理は、前述したマスク画像内の前景有効表示領域を拡張するための処理である。前景有効表示領域は、マスク画像MAの白の画素による領域である。
前景有効表示領域拡張処理では、マスク拡張部104Aが、設定されたフィルタ対象画素FPXを含むフィルタFTに含まれる9つの画素(画素PX1〜PX9)にそれぞれ対応する、マスク画像MAの9つの画素のうち、“1”を示す画素が1以上あれば、フィルタ対象画素FPXに対応するマスクデータの値を“1”に設定したデータ(以下、前景拡張マスクデータともいう)を、当該マスクデータに対応する入力ブロック画像データに対応づけて、一時記憶部130に記憶させる。
一方、マスク拡張部104Aは、設定されたフィルタ対象画素FPXを含むフィルタFTに含まれる9つの画素にそれぞれ対応する、マスク画像MAの9つの画素のうち、“1”を示す画素がなければ、フィルタ対象画素FPXに対応するマスクデータの値を“0”に設定したデータ(以下、前景拡張マスクデータともいう)を、当該マスクデータに対応する入力ブロック画像データに対応づけて、一時記憶部130に記憶させる。
なお、フィルタFTに含まれる9つの画素(画素PX1〜PX9)のうち、マスク画像MAにおいて、対応する画素がない場合、対応する画素がないフィルタFTに含まれる画素の値を“0”として、前述の前景有効表示領域拡張処理が行なわれる。
たとえば、マスク画像MAとしてのマスク画像120MGの左上の画素がフィルタ対象画素FPXに設定されている場合、フィルタFTに含まれる画素PX1、PX2,PX3、PX4,PX7の各々は、マスク画像120MGにおいて対応する画素が存在しない。この場合、画素PX1、PX2,PX3、PX4,PX7の各々の値は“0”として、前述の前景有効表示領域拡張処理が行なわれる。そして、ステップS144に進む。
ステップS144では、マスク拡張部104Aが、マスク画像MAに含まれる全ての画素に対し、前景有効表示領域拡張処理が行なわれたか否かを判定する。ステップS144において、YESならば、このマスク拡張処理Aは終了し、図2の画像符号化処理に戻り、ステップS140の次のステップS150に進む。一方、ステップS144において、NOならば、再度、ステップS142の処理が行なわれる。
ここで、ステップS142,S143の処理が繰り返されることにより、マスク画像MAとしてのマスク画像120MGに含まれる全ての画素に対し、前景有効表示領域拡張処理が行なわれたとする。この場合、ステップS144において、YESと判定され、このマスク拡張処理Aは終了し、図2の画像符号化処理に戻り、ステップS140の次のステップS150に進む。
ステップS144でYESと判定された時点において、一時記憶部130に記憶されている複数の前景拡張マスクデータにより示される画像は、一例として、図7の拡張マスク画像120MGAとなる。すなわち、前景有効表示領域拡張処理が、マスク画像120MGの全ての画素に対して行なわれることにより、マスク画像120MGの白の画素による領域(前景有効表示領域)が拡張される。拡張される方向は、たとえば、上、下、左、右、斜めの8方向である。
すなわち、前景有効表示領域拡張処理により、マスク画像120MGから拡張マスク画像120MGAが生成される。この場合、拡張マスク画像120MGAの白の画素の数は、マスク画像120MGの白の画素の数よりも多い。すなわち、前景有効表示領域拡張処理により、マスク画像120MGの白の画素の数を、マスク画像120MGより増加させた拡張マスク画像120MGAが生成される。
なお、拡張マスク画像120MGAは、マスク画像120MGを構成する複数の画素のうち、後述する層データA(第1縮小ブロック画像のデータ)の使用を示す画素の近傍の画素が、層データA(第1縮小ブロック画像のデータ)の使用を示す画素に設定された画像である。また、拡張マスク画像120MGA内の複数の白の画素は、それぞれ、層データAが示す第1縮小画像111G内の異なる複数のブロック画像を使用することを示す。
また、図3を参照して、拡張マスク画像120MGAは、ステップS144でYESと判定された時点において、一時記憶部130に記憶されている複数の前景拡張マスクデータにより示される画像である。拡張マスク画像120MGA内の白の画素は、当該白の画素に対応する、入力画像100G内の入力ブロック画像が、前景画像として有効であることを示す。拡張マスク画像120MGA内の黒の画素は、当該黒の画素に対応する、入力画像100G内の入力ブロック画像が、前景画像として無効であることを示す。
拡張マスク画像120MGAの解像度は、マスク画像120MGの解像度と同様に、画像110Gの解像度600dpiを、ブロック像域判定処理単位の画素数32画素で除した、18.75dpiである。
なお、前景有効表示領域を拡張するための処理は、前述したのと異なる方法により行なわれてもよい。たとえば、フィルタFTを、3行3列のフィルタ行列F_EXTとし、フィルタ行列F_EXTの値は、すべて、“1”を示すようにする。また、マスク画像MAを構成する複数の画素を表す行列を、マスク行列Mとする。この場合、マスク拡張部104Aは、マスク行列Mと、フィルタ行列F_EXTとの畳み込み演算を行なう。マスク拡張部104Aは、畳み込み演算により“0”を示すデータを“0”に設定し、畳み込み演算により“1”〜“9”のいずれかを示すデータを“1”に設定する。以下においては、以上のデータの設定により得られる画像を、前景有効表示領域拡張画像ともいう。
なお、3行3列のフィルタ行列F_EXTを使用して、畳み込み演算を行なう場合、マスク画像MAのサイズ(解像度)と、畳み込み演算により得られる画像(前景有効表示領域拡張画像)のサイズ(解像度)とを同じにするためには、マスク画像MAの周囲に1画素分余分にデータを設定しておく必要がある。たとえば、画素値“1”のデータを1画素分拡張する場合には、マスク画像MAの周囲に画素値“0”のデータを1画素分余分に設定しておけばよい。これにより、本来存在しないマスク画像MAの周囲の画素から、画素値“1”が拡がるという問題を回避することができる。
以上の方法においても、前述のステップS142〜S144の処理が行なわれることにより得られるデータと同じデータが得られる。
再び、図2を参照して、ステップS150では、マスク拡張処理Bが行なわれる。
図9は、マスク拡張処理Bのフローチャートである。図9を参照して、マスク拡張処理Bでは、まず、ステップS151の処理が行なわれる。
ステップS151では、マスクデータ読出し処理Bが行なわれる。マスクデータ読出し処理Bでは、マスク拡張部104Bが、一時記憶部130に記憶されている複数のマスクデータを読み出す。以下においては、マスクデータ読出し処理Bにより読み出された複数のマスクデータの各々を、読み出しマスクデータBともいう。また、以下においては、複数の読み出しマスクデータBにより示される画像を、マスク画像MBともいう。ここで、マスク画像MBは、一例として、図7のマスク画像120MGであるとする。そして、ステップS151Nに進む。
ステップS151Nでは、ビット反転処理が行なわれる。ビット反転処理は、ビットの値を反転させるための処理である。具体的には、ビット反転処理では、マスク拡張部104Bが、読み出しマスクデータBの値が“1”を示す場合、“0”を示すデータ(以下、反転マスクデータBともいう)を、当該読み出しマスクデータBに対応する入力ブロック画像データに対応づけて、一時記憶部130に記憶させる。
また、ビット反転処理では、マスク拡張部104Bが、読み出しマスクデータBの値が“0”を示す場合、“1”を示すデータ(以下、反転マスクデータBともいう)を、当該読み出しマスクデータBに対応する入力ブロック画像データに対応づけて、一時記憶部130に記憶させる。ビット反転処理では、上記処理が、全ての読み出しマスクデータBに対し行なわれる。そして、ステップS151Nの処理は終了する。
以下においては、ステップS151Nのビット反転処理により、一時記憶部130に記憶された複数の反転マスクデータBにより示される画像を、反転マスク画像ともいう。反転マスク画像は、一例として、図7または図3のマスク画像120MGにおいて、白の画素を黒の画素に置き換え、かつ、黒の画素を白の画素に置き換えた画像である。
反転マスク画像の白の画素は、対応するブロック画像が、前景画像として有効であることを示す画素である。また、反転マスク画像の白の画素は、対応するブロック画像が、対応するブロック画像が、背景画像として無効であることを示す画素である。反転マスク画像の黒の画素は、対応するブロック画像が、前景画像として無効であることを示す画素である。また、反転マスク画像の黒の画素は、背景画像として有効であることを示す画素である。
以下においては、反転マスク画像において、対応するブロック画像が、背景画像として有効であることを示す画素を、背景有効表示画素ともいう。また、以下においては、反転マスク画像において、隣接する複数の背景有効表示画素からなる領域を背景有効表示領域ともいう。すなわち、反転マスク画像の黒の画素は、背景有効表示画素である。また、反転マスク画像において、隣接する複数の黒の画素からなる領域は、背景有効表示領域である。
本実施の形態では、読み出しマスクデータBが2値(“0”または“1”)で表現される場合について説明しているため、“0”と“1”とを入れ替える処理を行なっている。しかしながら、読み出しマスクデータBが“0”〜“255”の256値(グレースケール)で表現され、かつ、読み出しマスクデータBが前景画像の有効および無効をそれぞれ“255”および“0”により示す場合、ビットの値を反転させる処理の代わりに以下の反転処理Bが行なわれてもよい。
反転処理Bでは、マスク拡張部104Bが、読み出しマスクデータBの値が“255”を示す場合、“0”を示すデータ(以下、反転マスクデータBともいう)を、当該読み出しマスクデータBに対応する入力ブロック画像データに対応づけて、一時記憶部130に記憶させる。また、反転処理Bでは、マスク拡張部104Bが、読み出しマスクデータBの値が“0”を示す場合、“255”を示すデータ(以下、反転マスクデータBともいう)を、当該読み出しマスクデータBに対応する入力ブロック画像データに対応づけて、一時記憶部130に記憶させる。この場合においても、ビット反転処理と同様の作用を得ることができる。
ステップS151N処理の後、ステップS152に進む。
ステップS152では、フィルタ設定処理Bが行なわれる。フィルタ設定処理Bは、ステップS142のフィルタ設定処理Aの説明において、ステップS142、マスク拡張部104A、マスク画像MAおよび読み出しマスクデータAをそれぞれ、ステップS152、マスク拡張部104B、反転マスク画像および反転マスクデータBに置き換えた処理と同様な処理が行なわれるので詳細な説明は繰り返さない。そして、ステップS153に進む。
ステップS153では、背景有効表示領域拡張処理が行なわれる。背景有効表示領域拡張処理は、前述した反転マスク画像内の背景有効表示領域を拡張するための処理である。背景有効表示領域は、反転マスク画像の黒の画素による領域である。
背景有効表示領域拡張処理では、マスク拡張部104Bが、設定されたフィルタ対象画素FPXを含むフィルタFTに含まれる9つの画素(画素PX1〜PX9)にそれぞれ対応する、反転マスク画像の9つの画素のうち、“1”を示す画素が1以上あれば、フィルタ対象画素FPXに対応するマスクデータの値を“0”に設定したデータ(以下、背景拡張マスクデータともいう)を、当該マスクデータに対応する入力ブロック画像データに対応づけて、一時記憶部130に記憶させる。
一方、マスク拡張部104Bは、設定されたフィルタ対象画素FPXを含むフィルタFTに含まれる9つの画素にそれぞれ対応する、反転マスク画像の9つの画素のうち、“1”を示す画素がなければ、フィルタ対象画素FPXに対応するマスクデータの値を“1”に設定したデータ(以下、背景拡張マスクデータともいう)を、当該マスクデータに対応する入力ブロック画像データに対応づけて、一時記憶部130に記憶させる。
なお、フィルタFTに含まれる9つの画素(画素PX1〜PX9)のうち、反転マスク画像において、対応する画素がない場合、対応する画素がないフィルタFTに含まれる画素の値を“0”として、前述の背景有効表示領域拡張処理が行なわれる。
たとえば、反転マスク画像の左上の画素がフィルタ対象画素FPXに設定されている場合、フィルタFTに含まれる画素PX1、PX2,PX3、PX4,PX7の各々は、反転マスク画像において対応する画素が存在しない。この場合、画素PX1、PX2,PX3、PX4,PX7の各々の値は“0”として、前述の背景有効表示領域拡張処理が行なわれる。そして、ステップS154に進む。
ステップS154では、マスク拡張部104Bが、反転マスク画像に含まれる全ての画素に対し、背景有効表示領域拡張処理が行なわれたか否かを判定する。ステップS154において、YESならば、このマスク拡張処理Bは終了し、図2の画像符号化処理に戻り、ステップS150の次のステップS161に進む。一方、ステップS154において、NOならば、再度、ステップS152の処理が行なわれる。
ここで、ステップS152,S153の処理が繰り返されることにより、反転マスク画像に含まれる全ての画素に対し、背景有効表示領域拡張処理が行なわれたとする。この場合、ステップS154において、YESと判定され、このマスク拡張処理Bは終了し、図2の画像符号化処理に戻り、ステップS150の次のステップS161に進む。
ステップS154でYESと判定された時点において、一時記憶部130に記憶されている複数の背景拡張マスクデータにより示される画像は、一例として、図3の拡張マスク画像120MGBとなる。すなわち、背景有効表示領域拡張処理が、反転マスク画像の全ての画素に対して行なわれることにより、マスク画像120MGの黒の画素による領域(背景有効表示領域)が拡張される。拡張される方向は、たとえば、上、下、左、右、斜めの8方向である。
すなわち、背景有効表示領域拡張処理により、マスク画像120MGを使用して生成された反転マスク画像から拡張マスク画像120MGBが生成される。この場合、拡張マスク画像120MGBの黒の画素の数は、マスク画像120MGの黒の画素の数よりも多い。すなわち、背景有効表示領域拡張処理により、マスク画像120MGの黒の画素の数を、マスク画像120MGより増加させた拡張マスク画像120MGBが生成される。
なお、拡張マスク画像120MGBは、マスク画像120MGを構成する複数の画素のうち、後述する層データB(第2縮小ブロック画像のデータ)の使用を示す画素の近傍の画素が、層データB(第2縮小ブロック画像のデータ)の使用を示す画素に設定された画像である。また、拡張マスク画像120MGB内の複数の黒の画素は、それぞれ、層データBが示す第2縮小画像112G内の異なる複数のブロック画像を使用することを示す。
拡張マスク画像120MGB内の黒の画素は、当該黒の画素に対応する、入力画像100G内の入力ブロック画像が、背景画像として有効であることを示す。拡張マスク画像120MGB内の白の画素は、当該白の画素に対応する、入力画像100G内の入力ブロック画像が、背景画像として無効であることを示す。
拡張マスク画像120MGBの解像度は、マスク画像120MGの解像度と同様に、画像110Gの解像度600dpiを、ブロック像域判定処理単位の画素数32画素で除した、18.75dpiである。
なお、背景有効表示領域を拡張するための処理は、前述したのと異なる方法により行なわれてもよい。たとえば、フィルタFTを、3行3列のフィルタ行列F_EXTとし、フィルタ行列F_EXTの値は、すべて、“1”を示すようにする。また、反転マスク画像を構成する複数の画素を表す行列を、マスク行列MBとする。この場合、マスク拡張部104Bは、マスク行列MBと、フィルタ行列F_EXTとの畳み込み演算を行なう。マスク拡張部104Bは、畳み込み演算により“0”を示すデータを“1”に設定し、畳み込み演算により“1”〜“9”のいずれかを示すデータを“0”に設定する。以下においては、以上のデータの設定により得られる画像を、背景有効表示領域拡張画像ともいう。
なお、3行3列のフィルタ行列F_EXTを使用して、畳み込み演算を行なう場合、反転マスク画像のサイズ(解像度)と、畳み込み演算により得られる画像(背景有効表示領域拡張画像)のサイズ(解像度)とを同じにするためには、反転マスク画像の周囲に1画素分余分にデータを設定しておく必要がある。たとえば、画素値“1”のデータを1画素分拡張する場合には、反転マスク画像の周囲に画素値“0”のデータを1画素分余分に設定しておけばよい。これにより、本来存在しない反転マスク画像の周囲の画素から、画素値“1”が拡がるという問題を回避することができる。
以上の方法においても、前述のステップS152〜S154の処理が行なわれることにより得られるデータと同じデータが得られる。
再び、図2を参照して、ステップS161では、画像データ読出し処理Nが行なわれる。画像データ読出し処理Nは、ステップS101の画像データ読出し処理と比較して、画像処理部100が、読み出した入力画像データを、ブロック像域判定部101の代わりに第1画像縮小部102Aおよび第2画像縮小部102Bに送信する点が異なる。それ以外は、画像データ読出し処理と同様なので詳細な説明は繰り返さない。この処理により、所定のブロック単位で読み出された入力画像データ(以下、入力ブロック画像データともいう)が、第1画像縮小部102Aおよび第2画像縮小部102Bへ送信される。そして、ステップS162に進む。
ステップS162では、画像縮小処理Aが行なわれる。画像縮小処理Aでは、第1画像縮小部102Aが、受信した入力ブロック画像データに基づいて、入力ブロック画像の解像度を下げる。すなわち、入力ブロック画像を縮小する。入力ブロック画像の縮小は、以下に説明するデータテーブルT100に基づいて行なわれる。
図10は、データテーブルT100を示す図である。データテーブルT100は、画像の解像度とブロックサイズとの関係を示すテーブルである。図10を参照して、組合せ番号とは、画像の解像度と対応するブロックサイズの組み合わせを特定するための番号である。なお、画像の解像度と対応するブロックサイズの組み合わせは、データテーブルT100に示されるものに限定されることはない。
たとえば、組合せ番号“1”では、入力画像、前景画像および背景画像の解像度を、それぞれ、600dpi、300dpiおよび150dpiとする。この場合、前述の像域判定処理は、横32画素、縦32画素のサイズのブロック画像を1つの単位として行なわれる。また、前景画像は、横16画素、縦16画素のサイズのブロック画像毎に処理される。また、背景画像は、横8画素、縦8画素のサイズのブロック画像毎に処理される。組合せ番号“2”〜“4”も、前述した組合せ番号“1”と同様であるので詳細な説明は繰り返さない。
ここで、ブロックサイズの画素数を決定する際の基準に関して説明する。画像の解像度とブロックサイズの関係を示すデータテーブルT100において、ブロックサイズの横画素数および縦画素数は、8の倍数である。8の倍数が用いられる理由は、前景画像符号化部108および背景画像符号化部109が、JPEG方式により画像を符号化するためである。
JPEG方式は、公知の通り、8画素×8画素のサイズのブロック画像毎に処理を行なう。JPEG方式において、ブロック画像毎の処理では、まずDCT(離散コサイン変換)が行なわれ、1個のDC(直流)成分値と、63個のAC(交流)成分値が算出される。そして、算出された64個の値を、それぞれの成分に対応する量子化幅を規定した量子化テーブルを用いて、除算することにより量子化する。
さらに、DC成分値については、一つ前に処理されたブロック画像のDC成分値との差分値を利用してハフマン符号化が行なわれる。AC成分値については、ブロック画像内の63個の値をジグザグスキャンしてハフマン符号化が行なわれる。なお、ハフマン符号化は可逆な符号化であり、一般に、JPEG方式における非可逆性は、量子化誤差およびDCT計算時の誤差に起因するものである。
したがって、JPEG方式を用いて画像を符号化した際に生じる画質の劣化は、基本的に処理単位であるブロック画像(8画素×8画素)内で生じるものである。すなわち、ブロック画像内の画質の劣化は、ブロック画像内で閉じて生じるものである。そのため、JPEGの処理対象となるブロック画像は、当該ブロック画像外の画素の値や、周囲のブロック画像により、画質劣化が生じることはない。
そこで、本発明では、画像の解像度とブロック画像のサイズの関係を示すデータテーブルT100に示すように、像域判定、前景画像、背景画像の各処理におけるブロック画像のサイズの横画素数および縦画素数を8の倍数で規定している。これにより、前景画像、背景画像を生成する際、画像再生時に不要なブロックに、ブロック画像単位で任意の画素値を設定することが可能となる。
すなわち、不要なブロック画像内のドント・ケア画素の画素値に起因する色にじみを防ぐことができる。その結果、不要なブロック画像に設定する画素値に関わらず、再生画像を一定の品質に保つことができるという効果を奏する。
なお、像域判定、前景画像、背景画像の各処理におけるブロック画像のサイズについて、最小解像度の画像(本実施の形態では背景画像)の処理単位となるブロック画像の最小のサイズは、8画素×8画素とすることが好ましい。以下においては、画像の処理単位となるブロック画像の最小のサイズを最小ブロック画像サイズともいう。
また、最小解像度以上の画像(本実施の形態では入力画像と前景画像)の処理単位となるブロック画像の横画素数および縦画素数の各々は、以下の式(1)により算出される値とすることが好ましい。
画素数=8×(処理対象の画像の解像度)/(最小解像度) ・・・(1)
上記のように、最小ブロック画像サイズを8画素×8画素に設定することにより、像域分離精度を最大限に高めることができる。ここで、像域分離精度とは、文字または線が存在する像域(ブロック画像)と、文字または線が存在しない像域(ブロック画像)とを分離する精度である。また、最小ブロック画像サイズを処理単位としない画像には、式(1)で算出される値を用いてブロック画像のサイズを設定する。これにより、入力画像、前景画像および背景画像の間で、一つのブロック画像に対応する画像情報が、相対的に画像中の同じブロック画像部分を指し示すことを可能とする。
具体的には、データテーブルT100の組合せ番号“1”では、式(1)に各値を代入することにより以下のようになる。まず、前述の像域判定処理における処理単位となるブロック画像の横画素数は、8×600/150=32となる。また、前景画像の処理単位となるブロック画像の横画素数は、8×300/150=16となる。なお、背景画像の処理単位となるブロック画像の横画素数は、式(1)に関係なく8とする。
また、データテーブルT100の組合せ番号“2”では、式(1)に各値を代入することにより以下のようになる。まず、前述の像域判定処理における処理単位となるブロック画像の横画素数は、8×600/300=16となる。また、前景画像の処理単位となるブロック画像の横画素数は、8×600/300=16となる。なお、背景画像の処理単位となるブロック画像の横画素数は、式(1)に関係なく8とする。
また、データテーブルT100の組合せ番号“3”では、式(1)に各値を代入することにより以下のようになる。まず、前述の像域判定処理における処理単位となるブロック画像の横画素数は、8×600/150=32となる。また、前景画像の処理単位となるブロック画像の横画素数は、8×600/150=32となる。なお、背景画像の処理単位となるブロック画像の横画素数は、式(1)に関係なく8とする。
また、データテーブルT100の組合せ番号“4”では、式(1)に各値を代入することにより以下のようになる。まず、前述の像域判定処理における処理単位となるブロック画像の横画素数は、8×300/150=16となる。また、前景画像の処理単位となるブロック画像の横画素数は、8×300/150=16となる。なお、背景画像の処理単位となるブロック画像の横画素数は、式(1)に関係なく8とする。
図11は、各画像の解像度と、各画像の処理単位となるブロック画像の相対的な大小関係を例示した図である。図11(A)は、データテーブルT100の組合せ番号“1”の各データに対応した、入力画像、前景画像および背景画像の各々の、解像度および処理単位となるブロック画像のサイズの関係を示す。
図11(B)は、データテーブルT100の組合せ番号“2”の各データに対応した、入力画像、前景画像および背景画像の各々の、解像度および処理単位となるブロック画像のサイズの関係を示す。
図11(C)は、データテーブルT100の組合せ番号“3”の各データに対応した、入力画像、前景画像および背景画像の各々の、解像度および処理単位となるブロック画像のサイズの関係を示す。
図11(D)は、データテーブルT100の組合せ番号“4”の各データに対応した、入力画像、前景画像および背景画像の各々の、解像度および処理単位となるブロック画像のサイズの関係を示す。
たとえば、データテーブルT100の組合せ番号“1”では、入力画像、前景画像および背景画像の解像度は、それぞれ、600dpi、300dpiおよび150dpiである。
図11(A)を参照して、ブロック画像10Gは、入力画像の処理単位となるブロック画像である。ブロック画像10GAは、前景画像の処理単位となるブロック画像である。ブロック画像10GBは、背景画像の処理単位となるブロック画像である。
ブロック画像10G、ブロック画像10GAおよびブロック画像10GBのサイズは、それぞれ、32画素×32画素、16画素×16画素および8画素×8画素とする。これにより、入力画像、前景画像および背景画像の間で、一つのブロック画像に対応する画像情報が、相対的に画像中の同じブロック画像部分を指し示すことになる。なお、データテーブルT100の組合せ番号が“2”〜“4”についても、図11(B)、図11(C)、図11(D)に示すように、前述したデータテーブルT100の組合せ番号“1”の場合と同様であるので詳細な説明は繰り返さない。
再び、図2を参照して、ステップS162では、第1画像縮小部102Aが、たとえば、データテーブルT100の組合せ番号“1”の各データおよびステップS161により入力された入力ブロック画像データに基づいて、入力ブロック画像を縮小する。たとえば、ステップS161により入力された入力ブロック画像のサイズが32画素×32画素である場合、16画素×16画素のブロック画像に縮小する。縮小処理には、前述したように、ニアレストネイバー法、バイリニア法、バイキュービック法など、画像の解像度変換に一般的に用いられる既存の補間手法が使用される。
再び、図3を参照して、第1縮小画像111Gは、画像縮小処理Aにおける第1画像縮小部102Aの処理により、入力画像100G内の複数の入力ブロック画像が、それぞれ縮小された複数の縮小ブロック画像から構成される画像である。第1縮小画像111Gの解像度は、入力画像の解像度(600dpi)に対して、半分の解像度(300dpi)となっている。
ステップS162(画像縮小処理A)では、たとえば、入力画像100G内の領域100R内の画像が、第1縮小画像111G内の領域111R内の画像に縮小される。以下においては、画像縮小処理Aにより縮小された画像を第1縮小ブロック画像ともいう。
すなわち、入力画像100Gを構成する複数の入力ブロック画像は、それぞれ、第1縮小画像111G内の複数の第1縮小ブロック画像に対応する。したがって、図3の拡張マスク画像120MGA内の白の画素は、当該白の画素に対応する、第1縮小画像111G内の第1縮小ブロック画像が、前景画像として有効であることを示す。拡張マスク画像120MGA内の黒の画素は、当該黒の画素に対応する、第1縮小画像111G内の第1縮小ブロック画像が、前景画像として無効であることを示す。
また、以下においては、画像縮小処理Aにより生成された複数の第1縮小ブロック画像のデータを構成するデータを、層データAともいう。層データAは、たとえば、第1縮小画像111Gを示すデータである。この場合、層データAは、入力画像100Gのデータを使用して生成されたデータとなる。
再び、図2を参照して、ステップS162(画像縮小処理A)では、第1画像縮小部102Aが、生成した第1縮小ブロック画像のデータを、前景画像生成部105へ送信する。その後、ステップS170に進む。
ステップS170では、前景画像生成処理が行なわれる。前景画像生成処理では、入力ブロック画像データに対応する前景拡張マスクデータに基づいて、ステップS162で生成された第1縮小ブロック画像を使用して、前景画像を生成する。
図12は、前景画像生成処理のフローチャートである。図12を参照して、前景画像生成処理では、まず、ステップS171の処理が行なわれる。
ステップS171では、前景画像生成部105が、第1画像縮小部102Aから受信した第1縮小ブロック画像のデータの生成に使用された入力ブロック画像データに対応する前景拡張マスクデータを、一時記憶部130から読み出す。以下においては、読み出された前景拡張マスクデータを、読出し前景拡張マスクデータともいう。そして、ステップS172に進む。
ステップS172では、第1画像縮小部102Aから送信された第1縮小ブロック画像が、前景画像として有効であるか否かが判定される。具体的には、読出し前景拡張マスクデータが“1”を示すか否かが、前景画像生成部105により判定される。
読出し前景拡張マスクデータが“1”を示す場合、第1縮小ブロック画像は前景画像として有効となる。一方、読出し前景拡張マスクデータが“0”を示す場合、第1縮小ブロック画像は前景画像として無効となる。“1”(白の画素)を示す読出し前景拡張マスクデータは、層データA(第1縮小ブロック画像のデータ)を使用することを示すデータである。
ステップS172において、YESならば、ステップS174Aに進む。一方、ステップS172において、NOならば、ステップS174Bに進む。
ステップS174Aでは、前景画像生成部105が、受信した第1縮小ブロック画像のデータを、前景画像符号化部108へ送信する。その後、この前景画像生成処理は終了し、図2の画像符号化処理に戻り、ステップS170の次のステップS182に進む。
ステップS174Bでは、前景画像生成部105が、第1縮小ブロック画像と同じサイズの画像(たとえば、16×16のサイズの画像)の全ての画素を黒(画素値“0”)とした画像(以下、黒ブロック画像ともいう)のデータを、前景画像符号化部108へ送信する。その後、この前景画像生成処理は終了し、図2の画像符号化処理に戻り、ステップS170の次のステップS182に進む。
再び、図3を参照して、前景画像131Gは、前景画像生成部105が、前景画像符号化部108へ送信する全てのブロック画像のデータから構成される画像である。以下においては、前景画像生成部105が、前景画像符号化部108へ送信する全てのブロック画像のデータから構成されるデータを、前景層データともいう。すなわち、前景画像生成部105は、前景層データを生成する。前景層データは、前景画像(たとえば、前景画像131G)を示すデータである。
前景画像131Gの解像度は、第1縮小画像111Gの解像度と同じで、300dpiである。前景画像131Gは、前景画像生成処理により、拡張マスク画像120MGAを示す複数の前景拡張マスクデータと、層データAが示す第1縮小画像111Gとを使用して生成される画像である。
拡張マスク画像120MGA内の白の画素は、“1”を示す前景拡張マスクデータが示す画素である。拡張マスク画像120MGA内の黒の画素は、“0”を示す前景拡張マスクデータが示す画素である。拡張マスク画像120MGA内の白の画素は、当該白の画素に対応する、第1縮小画像111G内の第1縮小ブロック画像が、前景画像として有効であることを示す。すなわち、“1”を示す前景拡張マスクデータに対応する、第1縮小画像111G内の第1縮小ブロック画像は、前景画像131Gの一部の画像としてそのまま使用される。
一方、拡張マスク画像120MGA内の黒の画素は、当該黒の画素に対応する、第1縮小画像111G内の第1縮小ブロック画像が、前景画像として無効であることを示す。この場合、“0”を示す前景拡張マスクデータに対応する、第1縮小画像111G内の第1縮小ブロック画像の全ての画素を黒(画素値“0”)としたブロック画像が、前景画像131Gの一部の画像として使用される。
すなわち、前景画像131Gは、層データAが示す第1縮小画像111Gの一部と、所定の色(黒)を示す1以上のブロック画像とから構成される画像である。
ステップS174Aで送信される画像は、たとえば、前景画像131G内の領域131R内の画像である。また、ステップS174Bで送信される画像は、たとえば、前景画像131G内の黒のブロック画像である。
ステップS182では、画像縮小処理Bが行なわれる。画像縮小処理Bでは、第2画像縮小部102Bが、たとえば、図10のデータテーブルT100の組合せ番号“1”の各データおよび受信した入力ブロック画像データに基づいて、入力ブロック画像を縮小する。第2画像縮小部102Bは、たとえば、受信した入力ブロック画像のサイズが32画素×32画素である場合、8画素×8画素のブロック画像に縮小する。縮小処理には、前述したように、ニアレストネイバー法、バイリニア法、バイキュービック法など、画像の解像度変換に一般的に用いられる既存の補間手法が使用される。
再び、図3を参照して、第2縮小画像112Gは、画像縮小処理Bにおける第2画像縮小部102Bの処理により、入力画像100G内の複数の入力ブロック画像が、それぞれ縮小された複数の縮小ブロック画像から構成される画像である。第2画像縮小部102Bの解像度は、入力画像の解像度(600dpi)に対して、4分の1の解像度(150dpi)となっている。
ステップS182(画像縮小処理B)では、たとえば、入力画像100G内の領域100R内の画像が、第2縮小画像112G内の領域112R内の画像(たとえば、8画素×8画素のサイズの画像)に縮小される。以下においては、画像縮小処理Bにより縮小された画像を第2縮小ブロック画像(たとえば、8画素×8画素のサイズの画像)ともいう。
すなわち、入力画像100Gを構成する複数の入力ブロック画像は、それぞれ、第2縮小画像112G内の複数の第2縮小ブロック画像に対応する。したがって、図3の拡張マスク画像120MGB内の黒の画素は、当該黒の画素に対応する、第2縮小画像112G内の第2縮小ブロック画像が、背景画像として有効であることを示す。拡張マスク画像120MGB内の白の画素は、当該白の画素に対応する、第2縮小画像112G内の第2縮小ブロック画像が、背景画像として無効であることを示す。
また、以下においては、画像縮小処理Bにより生成された複数の第2縮小ブロック画像のデータを構成するデータを、層データBともいう。層データBは、たとえば、第2縮小画像112Gを示すデータである。この場合、層データBは、入力画像100Gのデータを使用して生成されたデータとなる。
再び、図2を参照して、ステップS182(画像縮小処理B)では、第2画像縮小部102Bが、生成した第2縮小ブロック画像のデータを、背景画像生成部106へ送信する。その後、ステップS190に進む。
ステップS190では、背景画像生成処理が行なわれる。背景画像生成処理では、入力ブロック画像データに対応する背景拡張マスクデータに基づいて、ステップS182で生成された第2縮小ブロック画像を使用して、背景画像を生成する。
図13は、背景画像生成処理のフローチャートである。図13を参照して、背景画像生成処理では、まず、ステップS191の処理が行なわれる。
ステップS191では、背景画像生成部106が、第2画像縮小部102Bから受信した第2縮小ブロック画像のデータの生成に使用された入力ブロック画像データに対応する背景拡張マスクデータを、一時記憶部130から読み出す。以下においては、読み出された背景拡張マスクデータを、読出し背景拡張マスクデータともいう。そして、ステップS192に進む。
ステップS192では、第2画像縮小部102Bから送信された第2縮小ブロック画像が、背景画像として有効であるか否かが判定される。具体的には、読出し背景拡張マスクデータが“0”を示すか否かが、背景画像生成部106により判定される。
読出し背景拡張マスクデータが“0”を示す場合、第2縮小ブロック画像は背景画像として有効となる。一方、読出し背景拡張マスクデータが“1”を示す場合、第2縮小ブロック画像は背景画像として無効となる。“0”(黒の画素)を示す読出し背景拡張マスクデータは、層データB(第2縮小ブロック画像のデータ)を使用することを示すデータである。
ステップS192において、YESならば、ステップS194Aに進む。一方、ステップS192において、NOならば、ステップS194Bに進む。
ステップS194Aでは、背景画像生成部106が、受信した第2縮小ブロック画像のデータを、背景画像符号化部109へ送信する。その後、この背景画像生成処理は終了し、図2の画像符号化処理に戻り、ステップS190の次のステップS201に進む。
ステップS194Bでは、背景画像生成部106が、第2縮小ブロック画像と同じサイズの画像(たとえば、8×8のサイズの画像)の全ての画素を黒(画素値“0”)とした画像(以下、黒ブロック画像ともいう)のデータを、背景画像符号化部109へ送信する。その後、この背景画像生成処理は終了し、図2の画像符号化処理に戻り、ステップS190の次のステップS201に進む。
再び、図3を参照して、背景画像132Gは、背景画像生成部106が、背景画像符号化部109へ送信する全てのブロック画像のデータから構成される画像である。以下においては、背景画像生成部106が、背景画像符号化部109へ送信する全てのブロック画像のデータを、背景層データともいう。すなわち、背景画像生成部106は、背景層データを生成する。背景層データは、背景画像(たとえば、背景画像132G)を示すデータである。
背景画像132Gの解像度は、第2縮小画像112Gの解像度と同じで、150dpiである。背景画像132Gは、背景画像生成処理により、拡張マスク画像120MGBを示す複数の背景拡張マスクデータと、層データBが示す第2縮小画像112Gとを使用して生成される画像である。
拡張マスク画像120MGB内の白の画素は、“1”を示す背景拡張マスクデータが示す画素である。拡張マスク画像120MGB内の黒の画素は、“0”を示す背景拡張マスクデータが示す画素である。拡張マスク画像120MGB内の黒の画素は、当該黒の画素に対応する、第2縮小画像112G内の第2縮小ブロック画像が、背景画像として有効であることを示す。すなわち、“0”を示す背景拡張マスクデータに対応する、第2縮小画像112G内の第2縮小ブロック画像は、背景画像132Gの一部の画像としてそのまま使用される。
一方、拡張マスク画像120MGB内の白の画素は、当該白の画素に対応する、第2縮小画像112G内の第2縮小ブロック画像が、背景画像として無効であることを示す。この場合、“1”を示す背景拡張マスクデータに対応する、第2縮小画像112G内の第2縮小ブロック画像の全ての画素を黒(画素値“0”)としたブロック画像が、背景画像132Gの一部の画像として使用される。
すなわち、背景画像132Gは、層データBが示す第2縮小画像112Gの一部と、所定の色(黒)を示す1以上のブロック画像とから構成される画像である。なお、複数の第1縮小ブロック画像のデータが示す前景画像131G内において入力画像100Gに対応する箇所の画像の画質は、複数の第2縮小ブロック画像のデータが示す背景画像132G内において入力画像100Gに対応する箇所の画像の画質より高い。
ステップS194Aで送信される画像は、たとえば、背景画像132G内の領域132R内の画像である。また、ステップS194Bで送信される画像は、たとえば、背景画像132G内の黒のブロック画像である。
再び、図2を参照して、ステップS201では、入力画像全体に対し処理が終了したか否かが判定される。具体的には、制御部120が、ステップS161の処理で読み出された入力ブロック画像が、入力画像内の右下のブロック画像(領域100RF内の画像)であるか否かを判定する。ステップS201において、YESならば、ステップS210に進む。一方、ステップS201において、NOならば、再度、ステップS161の処理が繰り返される。
ステップS210では、マスク符号化処理が行なわれる。マスク符号化処理では、マスク符号化部107が、ステップS120の処理が繰返し行なわれることで生成された、複数のマスクデータ(2値データ)から構成されるマスク層データを、一時記憶部130から読み出す。複数のマスクデータは、入力画像内の複数のブロック画像にそれぞれ対応するデータである。そして、マスク符号化部107が、複数のマスクデータからなるマスク層データを可逆符号化する。
可逆符号化では、2値画像の可逆符号化に適した符号化方式であるMMRが使用される。なお、可逆符号化は、MMRに限定されることなく、2値画像の可逆符号化に適した符号化方式(たとえば、前述したMR、JBIG等)であればどの符号化方式であってもよい。マスク符号化部107は、符号化した符号化データ(以下、マスク符号化データともいう)を、フォーマット部110へ送信する。その後、ステップS220に進む。
ステップS220では、前景画像符号化処理が行なわれる。前景画像符号化処理では、前景画像符号化部108が、前景画像生成部105から受信した複数のブロック画像のデータから構成される前景層データを非可逆符号化する。非可逆符号化を行なう符号化方式は、ブロック単位で処理を行なうJPEG方式が使用される。前景画像符号化処理において、非可逆符号化の処理単位となるブロックのサイズは、前景画像生成部105から受信した複数のブロック画像の各々のサイズ(たとえば、横16画素、縦16画素のサイズ)である。
なお、非可逆符号化を行なう符号化方式は、JPEG方式に限定されることなく、ブロック単位で処理を行なう他の符号化方式であってもよい。前景画像符号化部108は、前景層データを非可逆符号化したデータ(以下、前景画像符号化データともいう)を、フォーマット部110へ送信する。その後、ステップS230に進む。
ステップS230では、背景画像符号化処理が行なわれる。背景画像符号化処理では、背景画像符号化部109が、背景画像生成部106から受信した複数のブロック画像のデータから構成される背景層データを、非可逆符号化する。非可逆符号化を行なう符号化方式は、ブロック単位で処理を行なうJPEG方式が使用される。
背景画像符号化処理において、非可逆符号化の処理単位となるブロックのサイズは、背景画像生成部106から受信した複数のブロック画像の各々のサイズ(たとえば、横8画素、縦8画素のサイズ)である。すなわち、背景画像符号化処理において、非可逆符号化の処理単位となるブロックのサイズは、前景画像符号化処理における非可逆符号化の処理単位となるブロックのサイズより小さい。
なお、非可逆符号化を行なう符号化方式は、JPEG方式に限定されることなく、ブロック単位で処理を行なう他の符号化方式であってもよい。背景画像符号化部109は、背景層データを非可逆符号化したデータ(以下、背景画像符号化データともいう)を、フォーマット部110へ送信する。その後、ステップS240に進む。
ステップS240では、フォーマット処理が行なわれる。フォーマット処理では、フォーマット部110が、受信したマスク符号化データと、受信した前景画像符号化データと、受信した背景画像符号化データとの関連付けを行なう。当該関連付けは、汎用性の高いデータフォーマットを使用して行なわれる。
汎用性の高いデータフォーマットの一例としては、Adobe(登録商標)社のPDFフォーマットである。なお、汎用性の高いデータフォーマットは、Adobe(登録商標)社のPDFフォーマットに限定されることなく、他のデータフォーマットであってもよい。
たとえば、マスク符号化データがITU−T勧告T.6に規定されるMMR形式であり、また、前景画像符号化データおよび背景画像符号化データがJPEG形式である場合、フォーマット部110は、以下の関連付け処理を行なう。
関連付け処理では、フォーマット部110が、Adobe(登録商標)社のPDF形式に基づいて、マスク符号化データ、前景画像符号化データおよび背景画像符号化データを関連付けた関連付けデータを作成する。そして、フォーマット部110は、マスク符号化データ、前景画像符号化データ、背景画像符号化データおよび関連付けデータを一つの符号化画像データとして、前述した汎用統合データを生成する。すなわち、生成された汎用統合データは、マスク符号化データ、前景画像符号化データ、背景画像符号化データおよび関連付けデータを含む。そして、フォーマット部110は、生成した汎用統合データを、一時記憶部130に記憶させる。
汎用統合データを復号する場合は、たとえば、前景画像符号化データをJPEGにより復号した画像(以下、復号前景画像ともいう)と、背景画像符号化データをJPEGにより復号した画像(以下、復号背景画像ともいう)と、マスク符号化データを復号することによって得られる複数のマスクデータとを使用して行なわれる。
具体的には、まず、復号前景画像と、復号背景画像とのサイズが異なる場合、復号背景画像を、復号前景画像と同じサイズに拡大する処理が行なわれる。そして、復号背景画像を最下層の画像とし、“1”に設定されたマスクデータに対応する復号前景画像内のブロック画像を、復号背景画像内の対応する位置に上書きする。上記処理を繰返し行なうことにより、汎用統合データを復号して、符号化する前の入力画像を得ることができる。
なお、前述の説明では、ステップS101〜ステップS120までの処理を、ブロック画像単位で、一連の処理とし、ステップS140〜ステップS190までの処理を、ブロック画像単位で、一連の処理として説明した。しかしながら、本発明の一つの特徴である、ステップS140のマスク拡張処理A、ステップS150のマスク拡張処理Bが実施されていれば、前述の処理の順に限定されるものではない。
たとえば、ステップS101〜ステップS120の一連の処理により画像全体に対する処理が一旦終了した後に、ステップS140のマスク拡張処理A、ステップS150のマスク拡張処理Bが行なわれるのではなく、以下のような処理が行なわれてもよい。
たとえば、1つのブロック画像から1つのマスクデータが得られる場合、画像符号化装置1000に、たとえば、画像の3ライン分のFIFO(First In First Out)ラインバッファを設ける。そして、マスク拡張処理Aおよびマスク拡張処理Bを行なうのに必要なマスクデータを、必要に応じて、FIFOラインバッファに記憶させておく。そして、マスク拡張処理Aおよびマスク拡張処理Bを行なうのに必要なマスクデータが揃い次第(上述の例では2ライン分の遅延にて)、マスク拡張処理Aおよびマスク拡張処理Bを行なう。
また、ステップS162の画像縮小処理AおよびステップS182の画像縮小処理Bの各々において必要な画像データは、たとえば、前述のFIFOラインバッファに記憶させておく。以上のようにすることにより、ステップS131の処理、ステップS161の画像データ読出し処理Nは、省略することが可能となる。
また、処理の順序についても前述の処理の順序に限定されるものではなく、本発明の一つの特徴である、ステップS140のマスク拡張処理A、ステップS150のマスク拡張処理Bが実施されていれば、本発明の主旨を逸脱しない範囲での処理の順序の入れ替えを行なってもよい。
たとえば、ステップS162の画像縮小処理Aは、ステップS170の前景画像生成処理より前に行なわれ、ステップS182の画像縮小処理Bは、ステップS190の背景画像生成処理より前に行なわれていればよい。そのため、画像縮小処理Aおよび画像縮小処理Bは、ステップS101と、ステップS131との間で行なわれるようにしてもよい。
また、たとえば、ステップS210のマスク符号化処理を、ステップS120のマスクデータ生成処理の後に行なわれるようにし、ステップS220の前景画像符号化処理を、ステップS170の前景画像生成処理の後に行なわれるようにし、ステップS230の背景画像符号化処理を、ステップS190の背景画像生成処理の後に行なわれるようにしてもよい。すなわち、マスク符号化処理、前景画像符号化処理および背景画像生成処理は、ブロック画像単位で行なわれてもよい。
また、たとえば、ステップS210のマスク符号化処理、ステップS220の前景画像符号化処理およびステップS230の背景画像符号化処理の各々は、順序を入れ替えてもよいし、並列に行なわれてもよい。
また、ステップS240のフォーマット処理をブロック画像単位で処理するようにしてもよい。すなわち、ステップS210〜ステップS240の処理を、ステップS190の後で、かつ、ステップS201の前に行なうようにしてもよい。
また、処理を並列化して同時に複数の処理がなされるようにしてもよい。たとえば、ステップS162〜S170の処理と、ステップS182〜S190の処理とを、並列に行なってもよい。
また、ステップS162の画像縮小処理AおよびステップS182の画像縮小処理Bの各々では、ステップS161で読み出すブロック画像単位ではなく、独立した処理単位で画像を縮小するようにしてもよい。
(マスク拡張処理が行なわれない場合の画像)
次に、図2の画像符号化処理において、本発明の特徴である、マスク拡張処理Aおよびマスク拡張処理Bが行なわれない場合の画像について説明する。
図14は、画像符号化処理において、マスク拡張処理Aおよびマスク拡張処理Bが行なわれない場合の画像を示す図である。
図14を参照して、入力画像100G、画像110G、マスク画像120MG、第1縮小画像111Gおよび第2縮小画像112Gは、それぞれ、図3の入力画像100G、画像110G、マスク画像120MG、第1縮小画像111Gおよび第2縮小画像112Gと同様なので詳細な説明は繰り返さない。
前景画像131GNは、マスク拡張処理Aおよびマスク拡張処理Bが行なわれない場合において、前景画像生成部105が、前景画像符号化部108へ送信する全てのブロック画像のデータから構成される画像である。
前景画像131GNの解像度は、第1縮小画像111Gの解像度と同じで、300dpiである。前景画像131GNにおいて、対応するマスクデータが“1”を示す場合、第1縮小画像111G内の当該マスクデータに対応する第1縮小ブロック画像がそのまま使用される。マスクデータが“1”を示す場合、マスク画像120MG内の当該マスクデータに対応する画素は、白で表される。マスク画像120MG内の白の画素は、第1縮小画像111G内の当該前景拡張マスクデータに対応する第1縮小ブロック画像が、前景画像として有効であることを示す。
一方、前景画像131GNにおいて、対応するマスクデータが“0”を示す場合、当該マスクデータに対応するブロック画像内の全ての画素が黒(画素値“0”)となる。マスクデータが“0”を示す場合、マスク画像120MG内の当該マスクデータに対応する画素は、黒で表される。マスク画像120MG内の黒の画素は、対応する第1縮小ブロック画像が、前景画像として無効であることを示す。
背景画像132GNは、マスク拡張処理Aおよびマスク拡張処理Bが行なわれない場合において、背景画像生成部106が、背景画像符号化部109へ送信する全てのブロック画像のデータから構成される画像である。
背景画像132GNの解像度は、第2縮小画像112Gの解像度と同じで、150dpiである。背景画像132GNにおいて、対応するマスクデータが“0”を示す場合、第2縮小画像112G内の当該マスクデータに対応する第2縮小ブロック画像がそのまま使用される。マスクデータが“0”を示す場合、マスク画像120MG内の当該マスクデータに対応する画素は、黒で表される。マスク画像120MG内の黒の画素は、対応する第1縮小ブロック画像が、前景画像として無効であること、すなわち、対応する第2縮小ブロック画像が、背景画像として有効であることを示す。
一方、背景画像132GNにおいて、対応するマスクデータが“1”を示す場合、当該マスクデータに対応するブロック画像内の全ての画素が黒(画素値“0”)となる。マスクデータが“1”を示す場合、マスク画像120MG内の当該マスクデータに対応する画素は、白で表される。マスク画像120MG内の白の画素は、対応する第1縮小ブロック画像が、前景画像として有効であること、すなわち、対応する第2縮小ブロック画像が、背景画像として無効であることを示す。
なお、図24において説明したように、前景画像131GN、背景画像132GNおよびマスク画像120MGのデータを使用して、周囲参照拡大方法により画像を再生する場合、合成画像CMG10のように、前景画像と、背景画像との境界を示すようなノイズ(合成画像CMG10が示す黒い線)が発生する。
(マスク拡張処理が行なわれた場合の画像の再生)
次に、図2の画像符号化処理により生成された汎用統合データを使用して画像を再生する方法について説明する。
図15は、第1の実施の形態の画像符号化処理により生成された汎用統合データを使用した画像の再生過程を説明するための図である。
図15を参照して、前景画像131Gおよび背景画像132Gの解像度は、図10のデータテーブルT100における組合せ番号“1”が示す解像度であるとする。なお、前景画像131G、マスク画像120MGおよび背景画像132Gの解像度を忠実に図で表現することは困難であるため、図15は、解像度の大小関係に従って、各画像を図示している。
ここで、一時記憶部130には、汎用統合データが記憶されているとする。当該汎用統合データは、マスク符号化データ、前景画像符号化データ、背景画像符号化データおよび関連付けデータを含む。
制御部120は、前景画像符号化データを復号することにより、前景画像131Gを得るとする。また、制御部120は、背景画像符号化データを復号することにより、背景画像132Gを得るとする。また、制御部120は、マスク符号化データを復号することにより、マスク画像120MGを得るとする。
マスク画像120MGの白の画素は、前景画像131Gにおける対応する画素が、前景画像の画素として有効であることと、背景画像132Gにおける対応する画素が、背景画像の画素として無効であることとを示す。一方、マスク画像120MGの黒の画素は、背景画像132Gにおける対応する画素が、背景画像の画素として有効であることと、前景画像131Gにおける対応する画素が、前景画像の画素として無効であることとを示す。
以下においては、背景画像(たとえば、背景画像132G)において、背景画像の画素として有効である画素を、背景有効画素ともいう。また、以下においては、背景画像において、背景画像の画素として無効である画素を、背景無効画素ともいう。また、以下においては、前景画像において、前景画像の画素として無効である画素を、前景無効画素ともいう。
また、以下においては、背景画像において、背景有効画素と、背景無効画素との境界を、前景背景境界ともいう。また、以下においては、背景画像において、前景背景境界に隣接する背景有効画素を、境界隣接背景有効画素ともいう。また、以下においては、背景画像において、複数の背景無効画素からなる領域を、背景無効領域ともいう。また、以下においては、前景画像において、複数の前景無効画素からなる領域を、前景無効領域ともいう。
画像の再生では、制御部120が、背景画像の各画素値を、マスク画像の白の画素に対応する前景画像内の画素の値で上書きする。そのため、制御部120は、背景画像132Gおよびマスク画像120MGを、前景画像131Gの解像度と等しくなるように拡大する。
なお、マスク画像120MGは2値画像である。そのため、マスク画像120MGは、ニアレストネイバー(Nearest Neighbor)法により拡大されることにより、拡大マスク画像120MGBAとなる。
一方、背景画像132Gは、画質劣化の少ない前述した周囲参照拡大方法により拡大されることにより、拡大背景画像132GAとなる。周囲参照拡大方法は、前述したように、周囲の画素値を参照して拡大する方法である。周囲参照拡大方法は、たとえば、バイリニア(Bilinear)法、バイキュービック(Bicubic)法である。
そして、制御部120は、拡大背景画像132GAの各画素値を、拡大マスク画像120MGBAの白の画素に対応する、前景画像131G内の画素の値で上書きすることにより、合成画像CMG20を得る。
すなわち、画像が再生される場合、前景画像131Gの一部と、拡大背景画像132GAの一部とが、同じ箇所に対応する場合、前景画像131Gの一部の画像が使用されることにより、画像が再生される。
ここで、背景画像132Gが周囲参照拡大方法により拡大される際、背景画像132Gにおける境界隣接背景有効画素が、背景無効画素(マスク画像120MGの白の画素に対応する、背景画像132G内の画素)の影響を受ける。
しかしながら、本発明では、マスク拡張処理が行なわれずに生成された図24の背景画像132GNを使用する場合と異なり、マスク拡張処理を行なうことにより生成された背景画像132Gを使用する。すなわち、第1の実施の形態の画像符号化処理により生成された背景画像132Gは、前景背景境界より、背景無効領域側に拡張して背景画像を保持している。そのため、本発明では、背景画像132Gの拡大時の補間処理により、隣接する画素の影響を受けても、境界隣接背景有効画素は、背景無効画素(背景画像132G内の黒の画素(“0”を示す画素))の影響が表れにくいのである。なお、背景無効画素は、圧縮効率向上のために使用される画素である。
一方、マスク拡張処理が行なわれずに生成された図24の背景画像132GNを使用して画像を再生する場合は、以下の問題が発生する。すなわち、前述したように、背景画像132GNが周囲参照拡大方法により拡大される際、背景画像132GNにおいて、前景背景境界に隣接する境界隣接背景有効画素が、背景無効画素(背景画像132GNの黒の画素)の影響を受ける。そのため、背景画像132GNが拡大された拡大背景画像132GNAは、背景画像132GNの黒の画素の影響を受けた画像となり、合成画像CMG10には、前景画像と、背景画像との境界を示すようなノイズ(合成画像CMG10が示す黒い線)が発生する。
さらに、制御部120は、合成画像CMG20を更に拡大することにより、合成画像CMG20Aを得る。合成画像CMG20Aは、前述した処理により、汎用統合データを使用して再生された画像である。なお、合成画像CMG20Aは、前景画像131Gと、背景画像132Gとの合成後の拡大処理により生成される画像である。合成画像CMG20Aは、符号化された入力画像を再生した画像である。
したがって、合成後の拡大方法に関わらず、背景無効画素(背景画像132Gの黒の画素)による、前景画像と、背景画像との境界を示すようなノイズ(たとえば、黒い線)が新たに発生するなどの問題が生じることはない。
また、図示はしないが、前景画像131Gを、符号化する前の解像度とは異なる解像度に拡大(または縮小)し、前景画像131Gが拡大(または縮小)された前景画像と解像度が等しくなるように、背景画像132Gおよびマスク画像120MGを拡大する場合も考えられる。
この場合、背景画像132Gを拡大して得られる背景画像(以下、拡大背景画像ともいう)は、前述したのと同様に、前景背景境界より、背景無効領域側に拡張して背景画像を保持する。そのため、境界を示すようなノイズは生じない。
また、前景画像131Gを拡大して得られる前景画像(以下、拡大前景画像ともいう)も、前景背景境界より、前景無効領域側に拡張して前景画像を保持する。そのため、境界を示すようなノイズは生じない。
以上説明したように、第1の実施の形態による処理によれば、画像再生時の拡大方法に関わらず、前景背景境界の近傍にノイズを発生しない、入力画像の符号化データを生成することができるという効果を奏する。すなわち、画質劣化の少ない画像を再生するための符号化データを提供することができるという効果を奏する。
また、第1の実施の形態では、処理対象となる入力画像を複数の層で別々に処理する。複数の層は、マスク層、前景層、背景層からなる。前景層では、入力画像または入力画像を縮小した画像に対し、文字、線またはエッジ部分を含む部分のブロック画像を非可逆符号化し、前景画像を生成する。
背景層では、入力画像または入力画像を縮小した画像に対し、文字、線およびエッジ部分のいずれも含まない部分のブロック画像を非可逆符号化し、背景画像を生成する。文字、線またはエッジ部分が含まれる前景画像は、背景画像以上の解像度を有する。
したがって、文字、線またはエッジ部分の画質の劣化を最小限に抑えつつ、データ容量を大幅に削減することができるという効果を奏する。
また、第1の実施の形態では、複数の層の画像データおよびデータを汎用性の高いフォーマットに従って関連付けし、1つのデータにする。したがって、汎用性の高いデータを作成することができるという効果を奏する。
また、第1の実施の形態では、所定のブロック画像単位で、処理対象のブロック画像が、文字または線が存在するか否かを判定する。また、所定のブロック画像単位で、非可逆符号化処理(たとえば、JPEGによる符号化処理)を行なう。当該非可逆符号化処理は、ブロック単位で処理を行なう。
したがって、不要なブロック画像内のドント・ケア画素の画素値に起因する色にじみを防ぐことができる。その結果、不要なブロック画像に設定する画素値に関わらず、再生画像を一定の品質に保つことができるという効果を奏する。
<第1の実施の形態の変形例>
次に、マスク画像内の前景有効表示領域を拡張する、第1の実施の形態とは異なる処理について説明する。
第1の実施の形態の変形例における画像符号化装置は、第1の実施の形態における画像符号化装置1000と同様なので詳細な説明は繰り返さない。
(符号化処理)
次に、第1の実施の形態の変形例における入力画像データを符号化する処理(以下、画像符号化処理Nともいう)について説明する。
図16は、画像符号化処理Nのフローチャートである。画像符号化処理Nは、図2の画像符号化処理と比較して、ステップS140の代わりにステップS140Nの処理が行なわれる点が異なる。それ以外の処理は、画像符号化処理と同様である。画像符号化処理Nにおいて、画像符号化処理のステップ番号と同じステップ番号の処理は、第1の実施の形態で説明した処理と同様な処理が行なわれるので詳細な説明は繰り返さない。
ステップS140Nでは、マスク拡張処理ANが行なわれる。
図17は、マスク拡張処理ANのフローチャートである。マスク拡張処理ANは、図6のマスク拡張処理Aと比較して、ステップS141と、ステップS142との間に、ステップS141Nの処理が行なわれる点が異なる。それ以外の処理は、画像符号化処理と同様である。マスク拡張処理ANにおいて、マスク拡張処理Aのステップ番号と同じステップ番号の処理は、第1の実施の形態で説明した処理と同様な処理が行なわれるので詳細な説明は繰り返さない。
ステップS141Nでは、マスク画像拡大処理が行なわれる。マスク画像拡大処理では、マスク拡張部104Aが、ステップS141の処理により読み出された複数の読み出しマスクデータAが示すマスク画像MAを、ニアレストネイバー(Nearest Neighbor)法により拡大する。具体的には、マスク拡張部104Aが、マスク画像MAの各画素を、4つの画素として複製することにより、マスク画像MAの縦および横のサイズを2倍にした画像(以下、拡大マスク画像ともいう)を生成する。なお、拡大の倍率は、2倍に限定されることなく、他の倍率(たとえば、4倍)であってもよい。
そして、第1の実施の形態で説明したのと同様に、ステップS142以降の処理が行なわれる。
図18は、拡大されたマスク画像内の前景有効表示領域を拡張する処理を説明するための図である。図18を参照して、マスク画像120MGは、複数の読み出しマスクデータAにより示される画像(マスク画像MA)である。マスク画像120MGにおいて、点線により示される1つの四角の領域は、1画素を示す。マスク画像120MGは、図7で説明したので詳細な説明は繰り返さない。
拡大マスク画像220MGAは、ステップS141Nのマスク画像拡大処理によりマスク画像120MGが拡大された画像である。すなわち、拡大マスク画像220MGAの1画素は、マスク画像120MGの0.5画素と対応する。
第1の実施の形態のマスク拡張処理Aでは、マスク画像拡大処理が行なわれない。そのため、図7のマスク画像120MGに対し、図6のマスク拡張処理Aが行なわれることにより、図7の拡張マスク画像120MGAが得られる。すなわち、前景有効表示領域拡張処理が、マスク画像120MGの全ての画素に対して行なわれることにより、マスク画像120MGの白の画素による領域(前景有効表示領域)が1画素分拡張される。拡張される方向は、たとえば、上、下、左、右、斜めの8方向である。
一方、拡大マスク画像220MGAに対し、図17のマスク拡張処理ANが行なわれることにより、図18の拡張マスク画像222MGが得られる。すなわち、図17のステップS143の前景有効表示領域拡張処理が、拡大マスク画像220MGAの全ての画素に対して行なわれることにより、拡張マスク画像222MGが得られる。
拡張マスク画像222MGの解像度は、マスク画像120MGの2倍となっている。ここで、拡張マスク画像120MGAの解像度は、18.75dpiであるとする。この場合、拡張マスク画像222MGの解像度は、拡張マスク画像120MGAの解像度の2倍の37.5dpiとなる。
また、拡張マスク画像222MGは、マスク画像120MGに対し、マスク画像120MGの白の画素による領域(前景有効表示領域)が0.5画素分拡張された画像となる。拡張される方向は、たとえば、上、下、左、右、斜めの8方向である。
ここで、拡張マスク画像222MGの解像度は、図7の拡張マスク画像120MGAの解像度の2倍となっている。しかしながら、前景画像の生成時には、拡張マスク画像222MGおよび拡張マスク画像120MGAは、たとえば、図3に示した第1縮小画像111Gと同じ解像度となるように拡大される(図18の拡大マスク画像222MGA、図7の拡大マスク画像122MGA参照)。そのため、拡張マスク画像222MGと、図7の拡張マスク画像120MGAとが同じ解像度である必要はない。
また、圧縮効率を考慮すると、拡張マスク画像120MGAを使用する場合に比べて、拡張マスク画像222MGを使用する方が有利である。すなわち、拡大マスク画像222MGAは、図7の拡大マスク画像122MGAより、前景有効表示画素(白の画素)の割合が少なく、前景画像として無効であることを示す画素(黒の画素)の割合が多い。そのため、第1の実施の形態の変形例では、圧縮効率を高めることを可能とする値(たとえば、黒の画素の画素値“0”)で埋められるブロックをより多く保持することができる。
すなわち、図16のステップS210の処理により生成されるマスク符号化データの容量を、第1の実施の形態の図2のステップS210の処理により生成されるマスク符号化データの容量より小さくすることが可能となる。すなわち、第1の実施の形態の変形例では、マスク符号化データを使用して、フォーマット処理により生成される汎用統合データの容量を、第1の実施の形態よりさらに小さくすることができる。
<第2の実施の形態>
第2の実施の形態では、マスク符号化データを使用せずに汎用統合データを生成する点が、第1の実施の形態と異なる。マスク符号化データの代わりに、前景画像に透過色を設定することにより、マスク符号化データを使用する必要がなくなる。そのため、第1の実施の形態よりも、汎用統合データのデータ容量を小さくすることができる。
図19は、第2の実施の形態における画像符号化装置1000Aの構成を示すブロック図である。図19を参照して、画像符号化装置1000Aは、図1の画像符号化装置1000と比較して、画像処理部100の代わりに画像処理部100Aを備える点が異なる。それ以外の構成は、画像符号化装置1000と同様なので詳細な説明は繰り返さない。
画像処理部100Aは、図1の画像処理部100と比較して、マスク符号化部107およびマスク拡張部104Aを含まない点と、透過色設定部112をさらに含む点とが異なる。なお、画像処理部100Aは、画像処理部100と同様、記憶部140に記憶された画像符号化プログラム72に従って、後述の処理を行なう。マスク生成部103は、前景画像生成部105に接続される。
透過色設定部112は、前景画像生成部105と、背景画像生成部106とに接続される。前景画像生成部105は、透過色を設定すべきブロック画像の情報を、透過色設定部112へ送信する。透過色設定部112は、透過色を設定すべきブロック画像の情報を、前景画像生成部105から受信する。透過色設定部112は、透過色を設定したブロック画像の情報を前景画像生成部105および背景画像生成部106へ送信する。また、透過色設定部112は、透過色に関する情報(以下、透過色情報ともいう)を、背景画像生成部106へ送信する。透過色情報は、たとえば、画像の画素値“0”を透過色として使用することを示す情報である。背景画像生成部106は、透過色設定部112から、透過色情報を受信する。
フォーマット部110は、前景画像符号化部108から、前景画像符号化データAを受信する。前景画像符号化データAは、前述の前景画像符号化データと比較して、透過色を示すデータを含む点が異なる。透過色の表現については、たとえば、透過色に設定する画素の画素値を“0”で表現し、画素値“0”が透過色であることを示すデータを別途設けることによって実現できる。なお、ある画素値が透過色であることを示すことは、たとえば、Adobe(登録商標)社のPDFによって表現可能である。上記以外の画像処理部100Aの構成は、画像処理部100と同様なので詳細な説明は繰り返さない。
透過色設定部112は、透過色を設定すべきブロック画像中の各画素に対して、透過色の色情報(たとえば、画素値“0”)を設定する。なお、透過色設定部112は、たとえば、専用のLSIによって構成される。
また、前述のブロック像域判定部101、第1画像縮小部102A、第2画像縮小部102B、マスク生成部103、マスク拡張部104B、前景画像生成部105、背景画像生成部106、前景画像符号化部108、背景画像符号化部109、フォーマット部110および透過色設定部112の各々が行なう処理は、専用のLSIではなく、パーソナルコンピュータなどの一般的なコンピュータのマイクロプロセッサまたは制御部120により実行されてもよい。
この場合、たとえば、後述する画像符号化処理Aをコンピュータまたは制御部120に実行させるためのプログラムとして記述してもよい。当該プログラムは、画像符号化プログラム72であり、記録媒体70に記録されて流通する。
コンピュータにより、後述する画像符号化処理Aが実行される場合、画像符号化プログラム72は、記録媒体70に記録され、コンピュータが備える記録媒体アクセス部により、コンピュータが備える記憶部に読み込まれ、CPUで実行される。
制御部120により、後述する画像符号化処理Aが実行される場合、画像符号化プログラム72は、記録媒体70に記録され、制御部120により実行される。
さらに、画像符号化プログラム72は、インターネットなどのネットワークを介して他の装置からダウンロードされてもよい。
また、画像処理部100Aに含まれる、前述した複数の専用のLSIとコンピュータのマイクロプロセッサとを組み合わせてもよい。また、前述した複数の専用のLSIの一部または全てを一つの専用のLSIとして構成してもよい。
(符号化処理)
次に、第2の実施の形態における画像符号化装置1000Aの具体的な処理内容について説明する。画像符号化装置1000Aでは、以下の画像符号化処理Aが行なわれる。なお、画像符号化処理Aが行なわれる前に、記憶部140に記憶されている入力画像データは、一時記憶部130に記憶されるとする。
図20は、画像符号化処理Aのフローチャートを示す。図20を参照して、画像符号化処理Aは、図2の画像符号化処理と比較して、ステップS170の代わりに、ステップS170Aの処理が行なわれる点と、ステップS240の代わりに、ステップS240Aの処理が行なわれる点と、ステップS140,S210の処理が行なわれない点が異なる。以下、異なる部分を主に説明する。
図20を参照して、ステップS101では、第1の実施の形態と同様、画像処理部100Aが、一時記憶部130に記憶されている入力画像データを、所定のブロック単位で読み出す。なお、入力画像データの読出す順序は、前述した図2のステップS101の処理と同様なので詳細な説明は繰り返さない。
図21は、第2の実施の形態において、画像符号化装置1000Aで処理される画像を示す図である。なお、図21に示される各画像の解像度を忠実に図にて表現することは困難である。そのため、図21では、前述した図10のデータテーブルT100の組合せ番号“1”に対応する解像度と、ブロックサイズの関係を想定して、相対的な関係を例示する。
図21を参照して、入力画像100Gは、入力画像データに基づく画像である。入力画像100Gについては、前述したので詳細な説明は繰り返さない。
再び、図20を参照して、画像データ読出し処理では、画像処理部100は、読み出した所定のブロック単位の入力画像データ(入力ブロック画像データ)を、ブロック像域判定部101へ送信する。その後、ステップS110に進む。
ステップS110では、第1の実施の形態と同様、像域判定処理が行なわれるので詳細な説明は繰り返さない。
再び、図21を参照して、画像110Gは、像域判定処理により設定された線分ブロックデータの状態を視覚的に分かりやすく示した画像である。画像110Gについては、前述したので詳細な説明は繰り返さない。
再び、図20を参照して、ステップS110の処理の後、第1の実施の形態と同様、ステップS120のマスクデータ生成処理が行なわれるので詳細な説明は繰り返さない。
再び、図21を参照して、マスク画像120MGは、マスクデータ生成処理により設定されたマスクデータの状態を視覚的に分かりやすく示した画像である。マスク画像120MGについては、前述したので詳細な説明は繰り返さない。
再び、図20を参照して、ステップS120の処理の後、ステップS131の処理が行なわれる。
ステップS131では、第1の実施の形態と同様な処理が行なわれるので詳細な説明は繰り返さない。ステップS131において、YESならば、ステップS150に進む。一方、ステップS131において、NOならば、再度、ステップS101の処理が繰り返される。
ステップS131において、YESと判定された時点では、一時記憶部130に、複数のマスクデータが記憶される。前述したように、一時記憶部130に記憶される複数のマスクデータから構成されるデータをマスク層データともいう。また、前述したように、マスク層データが示す画像をマスク画像ともいう。
ステップS150では、第1の実施の形態と同様、マスク拡張処理Bが行なわれるので詳細な説明は繰り返さない。この処理により、図21の拡張マスク画像120MGBが得られる。拡張マスク画像120MGBについては、前述した図3の拡張マスク画像120MGBと同様なので詳細な説明は繰り返さない。
再び、図20を参照して、ステップS150の処理の後、ステップS161に進む。
ステップS161では、第1の実施の形態と同様、画像データ読出し処理Nが行なわれるので詳細な説明は繰り返さない。この処理により、所定のブロック単位で読み出された入力画像データ(以下、入力ブロック画像データともいう)が、第1画像縮小部102Aおよび第2画像縮小部102Bへ送信される。
ステップS162では、第1の実施の形態と同様、画像縮小処理Aが行なわれるので詳細な説明は繰り返さない。この処理により、第1画像縮小部102Aが、生成した第1縮小ブロック画像のデータを、前景画像生成部105へ送信する。その後、ステップS170Aに進む。
再び、図21を参照して、第1縮小画像111Gは、第1画像縮小部102Aにより、全ての入力ブロック画像が、画像縮小処理Aにより、それぞれ縮小された複数の縮小ブロック画像から構成される画像である。第1縮小画像111Gについては、前述した図3の第1縮小画像111Gと同様なので詳細な説明は繰り返さない。
再び、図20を参照して、ステップS170Aでは、前景画像生成処理Aが行なわれる。
図22は、前景画像生成処理Aのフローチャートである。前景画像生成処理Aにおいて、図12の前景画像生成処理のステップ番号と同じステップ番号の処理は、第1の実施の形態で説明した処理と同様な処理が行なわれるので詳細な説明は繰り返さない。
ステップS171Aでは、前景画像生成部105が、第1画像縮小部102Aから受信した第1縮小ブロック画像のデータの生成に使用された入力ブロック画像データに対応するマスクデータを、一時記憶部130から読み出す。以下においては、読み出されたマスクデータを、読出しマスクデータともいう。そして、ステップS172Aに進む。
ステップS172Aでは、第1画像縮小部102Aから送信された第1縮小ブロック画像が、前景画像として有効であるか否かが判定される。具体的には、読出しマスクデータが“1”を示すか否かが、前景画像生成部105により判定される。読出しマスクデータが“1” を示す場合、第1縮小ブロック画像は前景画像として有効となる。一方、読出しマスクデータが“0” を示す場合、第1縮小ブロック画像は前景画像として無効となる。“1”(白の画素)を示す読出しマスクデータは、層データA(第1縮小ブロック画像のデータ)を使用することを示すデータである。
ステップS172Aにおいて、YESならば、ステップS174Aに進む。一方、ステップS172Aにおいて、NOならば、ステップS174BAに進む。
ステップS174Aでは、第1の実施の形態と同様な処理が行なわれるので詳細な説明は繰り返さない。この処理により、前景画像生成部105が、受信した第1縮小ブロック画像のデータを、前景画像符号化部108へ送信する。その後、この前景画像生成処理Aは終了し、図20の画像符号化処理Aに戻り、ステップS170Aの次のステップS182に進む。
ステップS174BAでは、前景画像生成部105が、第1縮小ブロック画像と同じサイズの画像の全ての画素の値を、透過色を示す値(以下、透過色値ともいう)に設定した画像(以下、透過色ブロック画像ともいう)を生成する。透過色値は、後述する背景画像生成処理で生成される黒ブロック画像の画素値と同一の値(たとえば、“0”)である。また、透過色ブロック画像は、たとえば、横16画素、縦16画素のサイズのブロック画像である。そして、前景画像生成部105は、生成した透過色ブロック画像のデータを、前景画像符号化部108へ送信する。
その後、透過色設定部112が、前景画像の画素値“0”が透過色であることを示す情報を、一時記憶部130に記憶させる。その後、この前景画像生成処理Aは終了し、図20の画像符号化処理Aに戻り、ステップS170Aの次のステップS182に進む。
再び、図21を参照して、前景画像300Gは、前景画像生成部105が、前景画像符号化部108へ送信する全てのブロック画像のデータから構成される画像である。前景画像300Gの解像度は、第1縮小画像111Gの解像度と同じで、300dpiである。前景画像300Gは、前景画像生成処理Aにより、マスク画像120MGを示す複数のマスクデータと、層データAが示す第1縮小画像111Gとを使用して生成される画像である。
マスク画像120MG内の白の画素は、“1”を示すマスクデータが示す画素である。マスク画像120MG内の黒の画素は、“0”を示すマスクデータが示す画素である。マスク画像120MG内の白の画素は、当該白の画素に対応する、第1縮小画像111G内の第1縮小ブロック画像が、前景画像として有効であることを示す。すなわち、“1”を示すマスクデータに対応する、第1縮小画像111G内の第1縮小ブロック画像は、前景画像300Gの一部の画像としてそのまま使用される。
一方、マスク画像120MG内の黒の画素は、当該黒の画素に対応する、第1縮小画像111G内の第1縮小ブロック画像が、前景画像として無効であることを示す。この場合、“0”を示すマスクデータに対応する、第1縮小画像111G内の第1縮小ブロック画像の全ての画素を黒(透過色値(たとえば、“0”))としたブロック画像が、前景画像300Gの一部の画像として使用される。
ステップS174Aで送信される画像は、たとえば、前景画像300G内の透過色(黒色)のブロック画像以外のブロック画像である。また、ステップS174BAで送信される画像は、たとえば、前景画像300G内の透過色(黒色)のブロック画像である。
再び、図20を参照して、ステップS182では、第1の実施の形態と同様、画像縮小処理Bが行なわれるので詳細な説明は繰り返さない。この処理により、第2画像縮小部102Bが、生成した第2縮小ブロック画像のデータを、背景画像生成部106へ送信する。その後、ステップS190に進む。
再び、図21を参照して、第2縮小画像112Gは、画像縮小処理Bにおける第2画像縮小部102Bの処理により、入力画像100G内の複数の入力ブロック画像が、それぞれ縮小された複数の縮小ブロック画像から構成される画像である。第2縮小画像112Gについては、前述した図3の第2縮小画像112Gと同様なので詳細な説明は繰り返さない。
ステップS190では、第1の実施の形態と同様、背景画像生成処理が行なわれるので詳細な説明は繰り返さない。
再び、図12を参照して、背景画像132Gは、背景画像生成部106が、背景画像符号化部109へ送信する全てのブロック画像のデータから構成される画像である。背景画像132Gについては、前述した図3の背景画像132Gと同様なので詳細な説明は繰り返さない。
再び、図20を参照して、ステップS201では、第1の実施の形態と同様な処理が行なわれるので詳細な説明は繰り返さない。ステップS201において、YESならば、ステップS220に進む。一方、ステップS201において、NOならば、再度、ステップS161の処理が繰り返される。
ステップS220では、第1の実施の形態と同様、前景画像符号化処理が行なわれるので詳細な説明は繰り返さない。この処理により、前景画像符号化部108が、前景画像符号化データを、フォーマット部110へ送信する。
ステップS230では、第1の実施の形態と同様、背景画像符号化処理が行なわれるので詳細な説明は繰り返さない。この処理により、背景画像符号化部109が、背景画像符号化データを、フォーマット部110へ送信する。そして、ステップS240Aに進む。
ステップS240Aでは、フォーマット処理Aが行なわれる。フォーマット処理Aでは、フォーマット部110が、受信した前景画像符号化データと、受信した背景画像符号化データとの関連付けを行なう。当該関連付けは、汎用性の高いデータフォーマットを使用して行なわれる。
汎用性の高いデータフォーマットの一例としては、Adobe(登録商標)社のPDFである。なお、汎用性の高いデータフォーマットは、Adobe(登録商標)社のPDFに限定されることなく、他のデータフォーマットであってもよい。
たとえば、前景画像符号化データおよび背景画像符号化データがJPEG形式である場合、フォーマット部110は、以下の関連付け処理Aを行なう。
関連付け処理Aでは、フォーマット部110が、Adobe(登録商標)社のPDF形式に基づいて、前景画像符号化データおよび背景画像符号化データを関連付けた関連付けデータAを作成する。なお、関連付けデータAには、透過色情報が含まれる。前述したように、透過色情報は、たとえば、画像の画素値“0”を透過色として使用することを示す情報である。そして、フォーマット部110は、前景画像符号化データ、背景画像符号化データおよび関連付けデータAを一つの符号化画像データとして、汎用統合データAを生成する。
汎用統合データAを復号する場合は、たとえば、前景画像符号化データをJPEGにより復号した復号前景画像と、背景画像符号化データをJPEGにより復号化した復号背景画像とを使用して行なわれる。
具体的には、まず、復号前景画像と、復号背景画像とのサイズが異なる場合、復号背景画像を、復号前景画像と同じサイズに拡大する処理が行なわれる。そして、復号背景画像を最下層の画像とし、復号前景画像を構成する複数の画素のうち、透過色を示す画素以外の1以上の画素の各々の画素値を、復号背景画像内の対応する位置に上書きする。ここで、透過色を示す画素の画素値は、たとえば“0”である。上記処理を繰返し行なうことにより、汎用統合データAを復号化して、符号化する前の入力画像を得ることができる。
なお、前述の説明では、図20のステップS101〜ステップS120までの処理を、ブロック画像単位で、一連の処理とし、図20のステップS150〜ステップS190までの処理を、ブロック画像単位で、一連の処理として説明した。しかしながら、本発明の一つの特徴である、ステップS150のマスク拡張処理Bが実施されていれば、前述の処理の順に限定されるものではない。
たとえば、ステップS101〜ステップS120の一連の処理により画像全体に対する処理が一旦終了した後に、ステップS150のマスク拡張処理Bが行なわれるのではなく、以下のような処理が行なわれてもよい。
たとえば、1つのブロック画像から1つのマスクデータが得られる場合、画像符号化装置1000Aに、たとえば、画像の3ライン分のFIFO(First In First Out)ラインバッファを設ける。そして、マスク拡張処理Bを行なうのに必要なマスクデータを、必要に応じて、FIFOラインバッファに記憶させておく。そして、マスク拡張処理Bを行なうのに必要なマスクデータが揃い次第(上述の例では2ライン分の遅延にて)、マスク拡張処理Bを行なう。
また、ステップS162の画像縮小処理AおよびステップS182の画像縮小処理Bの各々において必要な画像データは、たとえば、前述のFIFOラインバッファに記憶させておく。以上のようにすることにより、図20の画像符号化処理Aにおいて、ステップS131の処理、ステップS161の画像データ読出し処理Nは、省略することが可能となる。
また、処理の順序についても前述の処理の順序に限定されるものではなく、本発明の一つの特徴である、ステップS150のマスク拡張処理Bが実施されていれば、本発明の主旨を逸脱しない範囲での処理の順序の入れ替えを行なってもよい。
たとえば、ステップS162の画像縮小処理Aは、ステップS170Aの前景画像生成処理Aより前に行なわれ、ステップS182の画像縮小処理Bは、ステップS190の背景画像生成処理より前に行なわれていればよい。そのため、画像縮小処理Aおよび画像縮小処理Bは、図20の画像符号化処理Aにおいて、ステップS101と、ステップS131との間で行なわれるようにしてもよい。
また、たとえば、図20の画像符号化処理Aにおいて、ステップS220の前景画像符号化処理を、ステップS170Aの前景画像生成処理Aの後に行なわれるようにし、ステップS230の背景画像符号化処理を、ステップS190の背景画像生成処理の後に行なわれるようにしてもよい。すなわち、前景画像符号化処理および背景画像生成処理は、ブロック画像単位で行なわれてもよい。
また、たとえば、ステップS220の前景画像符号化処理およびステップS230の背景画像符号化処理の各々は、順序を入れ替えてもよいし、並列に行なわれてもよい。
また、ステップS240のフォーマット処理をブロック画像単位で処理するようにしてもよい。すなわち、図20のステップS220〜ステップS240Aの処理を、ステップS190の後で、かつ、ステップS201の前に行なうようにしてもよい。
また、処理を並列化して同時に複数の処理がなされるようにしてもよい。たとえば、図20のステップS162〜S170Aの処理と、図20のステップS182〜S190の処理とを、並列に行なってもよい。
また、ステップS162の画像縮小処理AおよびステップS182の画像縮小処理Bの各々では、ステップS161で読み出すブロック画像単位ではなく、独立した処理単位で画像を縮小するようにしてもよい。
(マスク拡張処理が行なわれない場合の画像)
次に、図20の画像符号化処理Aにおいて、本発明の特徴である、マスク拡張処理Bが行なわれない場合の画像について説明する。
図23は、画像符号化処理Aにおいて、マスク拡張処理Bが行なわれない場合の画像を示す図である。図23を参照して、入力画像100G、画像110G、マスク画像120MG、第1縮小画像111G、第2縮小画像112Gおよび前景画像300Gは、それぞれ、図21の入力画像100G、画像110G、マスク画像120MG、第1縮小画像111G、第2縮小画像112Gおよび前景画像300Gと同様なので詳細な説明は繰り返さない。
背景画像132GNは、第1の実施の形態で説明した図14の背景画像132GNと同様なので詳細な説明は繰り返さない。
以上説明したように、第2の実施の形態では、マスク符号化データを使用せずに汎用統合データAを生成するため、第1の実施の形態の奏する効果に加え、汎用統合データAのデータ容量をさらに小さくすることができるという効果を奏する。
(画像の色空間)
なお、本発明に従う上述の実施の形態は、入力画像がカラー画像の場合において特に効果を発揮するが、グレースケール(輝度成分のみ)画像などに適用することも可能である。
(無効なブロック内の画素値)
第1の実施の形態においては、無効なブロック(複数のドント・ケア画素から構成されるブロック画像)の画素値について、符号化効率が向上するように任意の値を設定することが可能である。たとえば、ある無効ブロックの画素値は“0”に設定し、他の無効ブロックの画素値は“255”に設定することが可能である。
しかしながら、本発明の第2の実施の形態においては、無効なブロック(複数のドント・ケア画素から構成されるブロック画像)の画素値について、以下のような注意が必要である。
すなわち、透過色を、画像の表現に必要な画素値(たとえば、画素値“0”)に割り当てて表現する場合、有効なブロック画像中の画素値“0”についても透過色として扱われる可能性があるため、全ての層(マスク層、前景層、背景層)のデータまたは画像において、無効なブロック画素の画素値として“0”を設定しておくことが好ましい。
なお、透過色を、画像の表現に必要な画素値以外の値で表現することが可能である場合には、無効なブロック画像中の画素値について、符号化効率が向上するような任意の値を設定することが可能である。
第1の実施の形態および第2の実施の形態のいずれにおいても、上述のように無効なブロック画素中の画素値について任意の値を設定する場合、以下のようにすることができる。たとえば、非可逆符号化をJPEG方式を用いて行なう場合、全ての無効なブロック画素中の全ての画素について、画素値“0”を設定すれば、複雑な処理を実行することなく、一般的に圧縮効率を高めることが可能である。
(マスク生成基準)
また、上述の説明では、処理対象のブロック画像が、前景画像として有効または無効であるかを示すマスクデータは、像域判定処理により設定された線分ブロックデータに基づいて生成される。線分ブロックデータは、処理対象のブロック画像が、文字・線を含む線分ブロック画像であるか否かを示すデータである。なお、線分ブロック画像は、文字、線に加え、エッジ部分を含む画像であってもよい。すなわち、線分ブロックデータは、処理対象のブロック画像が、文字、線またはエッジ部分を含む線分ブロック画像であるか否かを示すデータであってもよい。このとき、エッジ部分の有無の判定には、たとば、Sobelフィルタなどによる公知のエッジ抽出方法を用いればよい。
(画像縮小処理を行なわない場合)
また、上述の説明では、前景画像および背景画像を縮小する場合について説明した。しかしながら、前景画像および背景画像のどちらも縮小しない場合、あるいは前景画像および背景画像のいずれかのみを縮小する場合も考えられる。
すなわち、図2の画像符号化処理および図20の画像符号化処理Aにおいて、ステップ S162(画像縮小処理A)およびステップS182(画像縮小処理B)のいずれか1つ、または両方の処理を行なわなくてもよい。
たとえば、図10に示した画像の解像度とブロックサイズとの関係を示すデータテーブルT100に示される、組合せ番号“2”、“3” 、“4”のいずれかに対応するデータで、処理が行なわれる場合、入力画像の解像度と前景画像の解像度は同じとなる。したがって、画像符号化処理および画像符号化処理Aにおいて、ステップS162(画像縮小処理A)を省略することができる。
また、本発明は、画像符号化装置1000および画像符号化装置1000Aにおいて、第1画像縮小部102Aおよび第2画像縮小部102Bを省略しても実現可能である。この場合、入力画像、前景画像および背景画像の解像度が全て同じとなる。そして、ブロック画像単位の像域情報(線分ブロックデータ)に基づいて前景画像および背景画像を生成する。これにより、像域の特徴に応じた適切な符号化パラメータ(たとえば、JPEG方式における量子化パラメータなど)を用いて符号化することが可能である。
前述の通り、画像符号化装置1000および画像符号化装置1000Aにおいて、第1画像縮小部102Aおよび第2画像縮小部102Bのいずれか1つまたは両方を省略した場合、画像符号化処理および画像符号化処理Aにおいて、対応する処理(たとえば、ステップS162の画像縮小処理Aなど)は、適宜省略すればよい。
(3層以上の場合)
また、前述の説明では一つの入力画像を、ブロック画像単位で、前景層と背景層の二つの層に分類することを前提としているが、本発明は二つの層に分類する場合のみに留まらず、三つ以上の層に分類する場合においても同様に実施することが可能である。
たとえば、文字または線またはエッジを表現する層(前景画像A)、写真を表現する層(前景画像B)、その他の成分を表現する層(背景画像)の三つに分類する場合においても、分類する単位がブロック画像単位であれば、本発明の主旨に則って処理することができる。
たとえば、ステップS110の像域判定処理において、文字、線またはエッジを含む像域、写真の像域、その他の像域の三つの像域に分類して、像域判定結果を示す像域判定データとして三種の値のいずれかを示し得るようにすればよい。たとえば、“0”は文字、線またはエッジ、“1”は写真、“2”はその他を示すようにすればよい。なお、N種の像域に分類する場合、同様に像域判定結果としてN種の値のいずれかを示し得るように構成すればよい。
また、ステップS120のマスクデータ生成処理において、たとえば、前景画像Aについては、像域判定データに基づいて、“0”に対応するブロック画像は“前景画像Aとして有効”、“1”または“2”に対応するブロック画像は“前景画像Aとして無効”と設定して、前景画像A用のマスク層データを生成すればよい。
さらに、前景画像Bについては、像域判定データに基づいて、“1”に対応するブロック画像は“前景画像Bとして有効”、“0”または“2”に対応するブロック画像は“前景画像Bとして無効”と設定して、前景画像B用のマスク層データを生成すればよい。なお、N種類の像域を設定した場合についても同様に、N−1個のマスク層データを生成すればよい。
また、N−1個のマスク層データに従うN−1個のマスク画像について、ステップS140のマスク拡張処理AまたはステップS150のマスク拡張処理Bを、適宜実行すればよい。すなわち、各マスク画像について、有効であることを示す情報が拡張されるように処理を施せばよい。
また、ステップS170の前景画像生成処理またはステップS170Aの前景画像生成処理Aでは、たとえば、前景画像Aの有効無効情報に基づいて、前景画像Aを生成し、前景画像Bの有効無効情報に基づいて、前景画像Bを生成すればよい。このとき、前景画像Aまたは前景画像Bを生成する際に用いるマスクデータについては、上述の拡張処理が施されている。なお、N種類の像域を設定した場合についても同様に、N−1個の前景画像を生成すればよい。
また、ステップS190の背景画像生成処理において、処理対象のブロック画像が、たとえば、“前景画像Aとして無効”で且つ“前景画像Bとして無効”であるブロック画像は、背景画像として有効なブロック画像として第2縮小ブロック画像データを設定する。処理対象のブロック画像が、“前景画像Aとして有効”または“前景画像Bとして有効”のどちらか一つでも満たす場合、背景画像として無効なブロック画像として、たとえば、第2縮小ブロック画像と同じサイズの画像の全ての画素値を“0”に設定すればよい。この場合、背景画像を生成する際に用いるマスクデータについては、上述の拡張処理が施されている。
なお、N種類の像域を設定した場合においても同様に、処理対象のブロック画像が、N−1個の前景画像全てにおいて無効な場合、背景画像として有効なブロック画像とする。また、N−1個の前景画像のいずれか一つでも有効であるブロック画像は、背景画像として無効なブロック画像とすればよい。
三つ以上の層に分類する他の実施の形態として、ステップS120のマスクデータ生成処理において、前景画像の数と同じ数のマスク層のデータを生成する代わりに、一つのマスク層のデータが、2値ではなく、N種類の値のいずれかを示し得るように構成してもよい。この場合、ステップS210のマスク符号化処理では、多値画像の可逆符号化に適したFLATEなどの符号化方式を用いればよい。
ただし、この場合、ステップS140のマスク拡張処理A、ステップS150のマスク拡張処理Bでは、上述の一つのマスク層データに従う一つのマスク画像に基づいて、たとえば、前景画像A用、前景画像B用、背景画像用などのように、最大でN−1個の拡張マスク画像を生成する必要がある。
(入力画像の部分領域の層構造)
また、前述の説明では、層データ(たとえば、前景画像、背景画像、マスク層データ)が、入力画像全体を表現する(解像度のみ異なる)場合について説明した。しかしながら、本発明では、たとえば、背景画像が入力画像全体を表現する領域(解像度は低くてよい)を表現し、前景画像とマスク層データは、入力画像の部分領域を表現するように構成してもよい。
ただし、部分領域を表現するように構成する場合、ステップS240のフォーマット処理において、前景画像とマスク層データが背景画像上のどの部分領域に対応しているのかを示す情報を関連付けておく必要がある。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
70 記録媒体、100,100A 画像処理部、101 ブロック像域判定部、102A 第1画像縮小部、102B 第2画像縮小部、103 マスク生成部、105 前景画像生成部、106 背景画像生成部、107 マスク符号化部、108 前景画像符号化部、109 背景画像符号化部、110 フォーマット部、112 透過色設定部、120 制御部、130 一時記憶部、140 記憶部、150 記録媒体アクセス部、1000,1000A 画像符号化装置。