以下、本発明の実施形態を添付図面を参照して詳細に説明する。
図1は、本発明の画像処理システムの一実施形態を示すブロック図である。本実施形態の画像処理システムPSでは、複数の端末装置(例えばパーソナルコンピュータ、以下PCと称す)11と複数の複合機(以下MFPと称す)21をネットワークNを通じて接続し、PC11とMFP21との間で各種のデータを送受することができるようにしている。ネットワークNは、LANやインターネット等を想定しているが、他の種類のネットワークを適用しても構わない。
図2は、PC11のハードウェア構成を示すブロック図である。図2において、CPU111は、バス112を通じて各デバイス等を制御し、PC11を統括的に制御する。ROM113及びHDD114には、CPU111で実行されるBIOS(Basic Input /Output System)、オペレーティングシステム(OS)、PC11の機能を実現するために必要な各種プログラム等が記憶されている。
RAM115は、CPU111の主メモリ、ワークエリア等として機能する。CPU111は、必要なプログラム等をROM113及びHDD114からRAM115へとロードして実行する。
入力I/F116は、キーボードやマウス等の操作入力部117からの入力をCPU111へと中継する。
表示I/F118は、表示デバイス119の表示制御を行う。CPU111は、RAM115等の表示用メモリ領域にテキストや画像等をラスタライズし、このラスタライズされたテキストや画像等を表示I/F118を通じて表示デバイス119の画面に表示する。また、CPU111は、操作入力部117からの入力に応じて表示デバイス119の画面上のカーソルを移動させて、カーソルによる指示を可能にする。尚、表示デバイスは、液晶表示装置、CRT、EL表示装置等、如何なる種類のものであってもよい。
通信I/F122は、ネットワークNを通じて、MFP21との間でデータ通信を行うものであり、このデータ通信の通信制御を行う。例えば、TCP/IPに準拠する通信制御を行う。
図3は、PC11のソフトウェア構成を示すブロック図である。PC11は、オペレーティングシステム(以下OSと称す)131と、各種のアプリケーションプログラム132とを有している。OS131は、印刷頁及び印刷設定条件等を示すPCLデータを生成してMFP21に送信するプリンタドライバ133と、ネットワークNを通じて行われるデータ通信を制御するデータ送受信部134と、データ処理やPC11の運用を支援するユーティリティプログラム135とを含んでいる。プリンタドライバ133、データ送受信部134、及びユーティリティプログラム135は、OS11上で動作する。
図4は、MFP21のハードウェア構成を示すブロック図である。MFP(複合機)21は、スキャナ機能、複写機能、プリンタ機能、及びファクシミリ機能等を有する多機能の画像形成装置である。
図4において、画像制御部211は、テキスト等のコンテンツが記された原稿(印刷頁)を読取るスキャナ212及び原稿を記録用紙に印刷するプリンタ213を制御したり、ネットワークNを通じてPCLデータ等を送受信したりする。
画像制御部211において、CPU221は、バス222を通じて各デバイス等を制御し、MFP21全体を制御する。ROM223には、ブートプログラムや各種制御プログラムが格納されている。ハードディスクドライブ(HDD)224には、各種のアプリケーションプログラム、画像データ等が格納されている。
RAM225は、CPU221の主メモリ、ワークエリア等として機能する。CPU221は、必要なプログラム等をROM223及びHDD224からRAM225へとロードして実行し、MFP21を制御する。
入力I/F226は、操作入力部215のインターフェースであり、例えば操作入力部215の表示デバイスの画面に重ねられたタッチパネルに対する指示を該タッチパネルから入力して、表示デバイスの画面上のボタンやキー等に対する入力を判定する。
通信I/F227は、ネットワークNを通じて、PC11との間でデータ通信を行うものであり、このデータ通信の通信制御を行う。
ASIC(Application Specific Integrated Circuit(演算処理部、コンピュータ))236は、PCLデータを解析して、印刷頁のラスタイメージ(画像データ)を画像メモリ237上に展開する。また、ASIC236は、画像データに対して補正、加工、編集を行う。例えば、プリンタ213の特性に応じた補正や解像度変換等を行う。あるいは、画像の回転、多値画像データに対するJPEGの圧縮伸長変換処理、2値画像データに対するJBIG、MMR、MH等の圧縮伸張処理、及び画像合成処理を行う。
プリンタI/F234は、プリンタ213を画像制御部211に接続し、画像データの同期系/非同期系の変換を行って、画像データをプリンタ213に出力する。プリンタ213は、画像データ(ラスタイメージ)に対応する印刷頁を記録用紙に記憶するものであり、感光体上にトナー像を形成して、このトナー像を記録用紙に転写する電子写真方式、インクを記録用紙上に直接吐出するインクジェット方式等のいずれでも構わない。
また、スキャナI/F235は、スキャナ212を画像制御部211に接続し、画像データの同期系/非同期系の変換を行って、画像データをスキャナ212から入力する。スキャナ212は、CCDラインセンサにより原稿(印刷頁)を読取って、この原稿を示す画像データを生成してスキャナI/F235に出力する。
画像メモリ237は、スキャナ212からスキャナI/F235へと入力された画像データ(ラスタイメージ)や、PC11から受信したPCLデータの解析により得られた画像データ(ラスタイメージ)を一時的に記憶する。
このような構成の画像処理システムPSにおいて、PC11は、アプリケーションプログラム132によりテキスト等のコンテンツが記された印刷頁を生成することができる。PC11のプリンタドライバ133は、操作入力部117の操作によりその印刷頁の印刷が指示されると、印刷頁及び印刷設定条件等をPCLデータに変換し、PCLデータをデータ送受信部134からネットワークNを通じてMFP21へと送信する。
MFP21では、PCLデータを通信I/F227で受信すると、PCLデータをバス222を介してASIC236に入力し、ASIC236によりPCLデータを解析して、印刷頁のラスタイメージ(画像データ)を画像メモリ237上に展開し、ASIC236により画像データを処理し、この処理された画像データをプリンタI/F234を通じてプリンタ213に出力し、プリンタ213により画像データ(ラスタイメージ)に対応する印刷頁を記録用紙に印刷する。この場合、MFP21のプリンタ機能が利用されることになる。
また、MFP21では、スキャナ212により読取られた原稿(印刷頁)を示す画像データをスキャナI/F235を通じて画像メモリ237に入力したときにも、ASIC236により画像データを処理し、この処理された画像データをプリンタI/F234を通じてプリンタ213に出力し、プリンタ213により画像データ(ラスタイメージ)に対応する原稿(印刷頁)を記録用紙に印刷する。この場合、MFP21の複写機能が利用されることになる。
尚、図1において、各PC11のプリンタドライバ133は、ネットワークN上のMFP21のアドレスを指定して、指定したアドレスのMFP21にPCLデータ等を送信することができ、またMFP21は、自己のアドレスを確認して、PCLデータ等を受信することができる。
ところで、画像処理システムPSにおいては、PC11側で少なくとも1つのスタンプ画像を記したスタンプ設定頁を作成して、このスタンプ設定頁をPC11からMFP21へと送信することができ、またMFP21側でスタンプ設定頁を受信して、スタンプ設定頁におけるスタンプ画像とその位置情報をHDD224に登録し、MFP21での印刷頁の印刷のときにスタンプ画像とその位置情報をHDD224から読出して、スタンプ画像を印刷頁におけるその位置情報に対応する位置に合成し、このスタンプ画像を合成した印刷頁をプリンタ213で記録用紙に記録することができる。
具体的には、PC11では、アプリケーションプログラム132を利用して、少なくとも1つのスタンプ画像を記したスタンプ設定頁を作成し、プリンタドライバ133によりスタンプ設定頁をMFP21に送信する。プリンタドライバ133は、スタンプ設定頁を設定登録するためのスタンプ画像設定部133aを有しており、スタンプ画像設定部133aを利用して、印刷頁と同様に、スタンプ設定頁をPCLデータに変換してMFP21に送信することができる。
MFP21では、印刷頁のPCLデータと同様に、スタンプ設定頁のPCLデータを受信して、ASIC236によりスタンプ設定頁のPCLデータを解析して、スタンプ画像とその位置情報を取得し、スタンプ画像とその位置情報をHDD224に登録する。また、多様なスタンプ設定頁をPC11から受信して、スタンプ設定頁毎に、スタンプ画像とその位置情報をHDD224に登録することができる。この後、操作入力部215の入力操作により所望のスタンプ画像が選択されると、この選択されたスタンプ画像を印刷頁におけるその位置情報に対応する位置に合成し、このスタンプ画像を合成した印刷頁をプリンタ213で記録用紙に記録する。
次に、PC11側で少なくとも1つのスタンプ画像を記したスタンプ設定頁を作成して、MFP21側でスタンプ設定頁からスタンプ画像とその位置情報を取得してHDD224に登録し、スタンプ画像を印刷頁におけるその位置情報に対応する位置に合成するまでの手順を詳しく説明する。
例えば、PC11において、利用者は、ワード(マイクロソフト社の製品)を用いて、操作入力部117を操作しながら、表示デバイス119の画面に表示されているウィンドウ内で少なくとも1つのスタンプ画像を記したスタンプ設定頁を作成する。このとき、スタンプ設定頁のサイズを、例えばMFP21側で記録用紙に印刷される印刷頁のサイズと同一に設定する。印刷頁のサイズが記録用紙のサイズと実質的に同一であり、またMFP21では複数種の定型サイズの記録用紙が用いられるため、スタンプ設定頁のサイズがいずれかの定型サイズに設定される。
1つのスタンプ設定頁に、複数種のスタンプ画像を混合してレイアウトしてもよく、スタンプ画像の個数に格別な制限はない。通常、スタンプ画像は、文字列や図形等をレイアウトして作成される。また、スタンプ画像は、カラー及びモノクロのいずれであっても、また印刷頁に対して半透明に合成されるウォーターマークであっても構わない。
図5(a)、(b)は、スタンプ設定頁を例示している。図5(a)のスタンプ設定頁SPは、複数の文字Chをレイアウトしてなるスタンプ画像STを記したものである。また、図5(b)のスタンプ設定頁SPは、複数の文字Chをレイアウトしてなるスタンプ画像STと、図形Grからなるスタンプ画像STとを記したものである。すなわち、スタンプ画像STとして、社名ロゴ、捺印(サイン)欄、部署名、電話番号等が設定される。
こうしてアプリケーションプログラム132を用いて、スタンプ設定頁を作成した後、このアプリケーションプログラム132を通じてプリンタドライバ133を起動させる。例えば、操作入力部117の操作により表示デバイス119の画面に表示されているウィンドウのメニューバーの所定ボタンを指示して、プリンタドライバ133を起動させることができる。
更に、操作入力部117の操作によりプリンタドライバ133のスタンプ画像設定部133aを起動させ、アプリケーションプログラム132を用いて作成したスタンプ設定頁の登録処理を開始する。
このスタンプ画像設定部133aによる登録処理では、アプリケーションプログラム132からスタンプ設定頁のサイズを取得し、また操作入力部117の操作により入力されたスタンプ設定頁の登録名等を取得する。そして、スタンプ画像設定部133aは、スタンプ設定頁、そのサイズや登録名等をPCLデータに変換して、このPCLデータをデータ送受信部134を通じてMFP21に送信する。図2においては、PCLデータが通信I/F122からネットワークNを通じてMFP21へと送信される。
次に、MFP21では、スタンプ設定頁に係るPCLデータを通信I/F227で受信して、このPCLデータをASIC236に入力する。ASIC236は、PCLデータを解析して、データの伸張変換処理等を行い、スタンプ設定頁のラスタイメージ(画像データ)を画像メモリ237上に展開し、スタンプ設定頁のサイズや登録名を取得する。
そして、ASIC236は、画像メモリ237上に展開されたスタンプ設定頁に対して複数の工程からなる処理を施し、スタンプ設定頁からスタンプ画像とその位置情報を取得し、スタンプ画像及びその位置情報等をHDD224に記憶して登録する。
こうして登録されたスタンプ画像及びその位置情報は、MFP21による印刷頁の印刷のときにHDD224から読出され、スタンプ画像が印刷頁におけるその位置情報に対応する位置に合成され、このスタンプ画像を合成した印刷頁がプリンタ213で記録用紙に記録される。
図6は、MFP21のASIC236により、スタンプ設定頁からスタンプ画像とその位置情報を取得するべく、スタンプ設定頁に対して施される複数の工程、及びスタンプ画像を印刷頁に合成する工程からなる処理の流れを概略的に示すフローチャートである。
ここでは、スタンプ設定頁のラスタイメージ(画像データ)を画像メモリ237上に展開する展開工程S501、スタンプ設定頁を複数のブロックに分割して、各ブロック別に、スタンプ画像がブロックに存在するか否かを判定してラベリングする分割判定工程(分割工程及び判定工程)S502、スタンプ画像が存在すると判定された連続する複数のブロックを包含する連続領域を抽出する連続領域工程(取得工程)S503、連続領域を合成する合成工程S504、連続領域をコピーするコピー工程(取得工程)S505、連続領域を包含する矩形領域からスタンプ画像を切出して、スタンプ画像の位置情報を設定する切出し工程(取得工程)S506、各工程S502〜S506による結果を評価する評価工程S507、最も評価が高かった各工程S502〜S506により取得されたスタンプ画像及びその位置情報をHDD224に記憶して登録する登録工程S508、及びスタンプ画像及び位置情報をHDD224から読出して、テキスト等のコンテンツが記された印刷頁における位置情報に対応する位置にスタンプ画像を合成して、このスタンプ画像を合成した印刷頁を印刷する合成工程S509が逐次実施される。
次に、図6のフローチャートにおけるMFP21での各工程別にそれらの処理内容を更に詳しく説明する。
まず、図6の展開工程S501では、PC11からのスタンプ設定頁を示すPCLデータをMFP21の通信I/F227で受信して、このPCLデータをASIC236に入力する。ASIC236は、PCLデータを解析して、データの伸張変換処理等を行い、スタンプ設定頁のラスタイメージ(画像データ)を画像メモリ237上に展開し、スタンプ設定頁のサイズや登録名を取得してHDD224に記憶して登録する。図7は、画像メモリ237上に展開されたスタンプ設定頁SPのラスタイメージを例示している。スタンプ設定頁SPのラスタイメージのサイズは、a(横の画素数)×b(縦のライン数)である。また、スタンプ設定頁SPのラスタイメージは、a(横の画素数)×b(縦のライン数)の各画素の諧調をそれぞれ8ビット(256階調)で表したものとする。
次に、図6の分割判定工程S502において、ASIC236は、スタンプ設定頁SPを、n(横の画素数)×n(縦のライン数)のブロックに分割し、各ブロック別に、ブロックに有色画素が含まれるか否か、つまりスタンプ画像が含まれるか否かを判定し、各ブロックの判定結果を保持する。図8は、スタンプ設定頁SPを24個のブロックBLに分割した例を示している。
ここで、n×nの値nについては、予め設定された固定値(80、200、500等)を適用することができる。あるいは、スタンプ設定頁SPのサイズに基づいて予め決められた方法で算出してもよい。例えば、n=a(横の画素数)/30、n=a(横の画素数)/16、n=min(a(横の画素数)/16、b(縦のライン数)/16)に設定する。また、ブロックBLを正方形に設定しているが、ブロックBLを長方形に設定してもよい。
尚、後で述べるように評価工程S507の評価に応じて、値nを変更し、各工程S502〜S506を繰返すことになる。
また、ブロックBLに有色画素(スタンプ画像)が含まれるか否かの判定は、例えばブロックBLの少なくとも1つの画素の諧調が閾値以上であるか否かに基づき判定される。そして、この判定結果(以下、判定値と称す)が、例えば16進数の「0x80」又は「0x00」(10進数の「128」又は「0」))に対応付けられ、各ブロックBLの判定値(「0x80」又は「0x00」)が該各ブロックBLと同様に配列されて、スタンプ画像判定テーブルが形成され、スタンプ画像判定テーブルが画像メモリ237等に記憶される。図9は、各ブロックBLの判定値(「0x80」又は「0x00」)を該各ブロックBLと同様に配列してなるスタンプ画像判定テーブルDDを例示している。判定値は、16進数の「0x80」又は「0x00」に対応付けられている。また、16進数の「0xFF」(10進数の「256」)が最高値であり、10進数の「256」が8ビット(1バイト)で表されるから、スタンプ画像判定テーブルDDの容量は、(a/nを切り上げた整数=A)×(b/nを切り上げた整数=B)バイトとなる。
詳しくは、ASIC236は、A×Bバイトの記憶領域をスタンプ画像判定テーブルDDとして画像メモリ237等に確保し、スタンプ画像判定テーブルDDにおける各ブロックBLの判定値の値を「0x00」に初期設定する。
そして、ASIC236は、スタンプ設定頁SPの各ブロックBL別に、ブロックBLにおけるn×nの各画素の諧調が閾値以上であるか否かを順次判定し、ブロックBLの少なくとも1つの画素の諧調が閾値以上であると判定すると、ブロックBLにスタンプ画像が含まれるとみなして、「0x80」をスタンプ画像判定テーブルDDにおける該ブロックBLに対応する位置に書き込む。また、ブロックBLの全画素の諧調が閾値未満であると判定すると、ブロックBLにスタンプ画像が含まれないとみなして、スタンプ画像判定テーブルDDにおける該ブロックBLに対応する位置の初期設定された「0x00」をそのまま維持する。
例えば、図8のスタンプ設定頁SPにおいて、左上の画素の位置を原点(0,0)とし、横方向をx方向、縦方向をy方向とした座標系を仮定して、画素の座標位置CSを(x,y)で表すものとすると、スタンプ設定頁SPにおける座標位置CS(0,0)から横方向及び縦方向のいずれにもn番目の画素までの領域(1列1行目のブロックBL)におけるn×nの各画素の諧調が閾値以上であるか否かを順次判定し、1画素の諧調が閾値以上であると判定すると、この判定時点でスタンプ画像判定テーブルDDにおける1列1行目の位置に判定値「0x80」を書き込む。また、1列1行目のブロックBLにおけるn×nの各画素の諧調のいずれも閾値未満であれば、スタンプ画像判定テーブルDDにおける1列1行目の位置の判定値を初期値「0x00」に維持する。
引き続いて、スタンプ設定頁SPにおける座標位置CS(n×k,0)(k=1,2,……)の値k(列の順番)を逐次カウントアップし、その度に、座標位置CS(n×k,0)から横方向及び縦方向のいずれにもn番目の画素までの領域(k列1行目のブロックBL)におけるn×nの各画素の諧調が閾値以上であるか否かを順次判定し、スタンプ画像判定テーブルDDにおけるk列1行目の位置の判定値を「0x80」又は「0x00」にする。
更に、スタンプ設定頁SPにおける座標位置CS(n×i,n×j)(i=0,1,2,……、j=1,2,……)の値j(行の順番)を逐次カウントアップし、その度に、1行目と同様に、座標位置CS(n×i,n×j)の値i(列の順番)を順次変更して、j行目の各ブロックBLにおいてn×nの各画素の諧調が閾値以上であるか否かを判定し、スタンプ画像判定テーブルDDにおけるi列j行目の位置の判定値を「0x80」又は「0x00」にする。この結果、図9に示すようなスタンプ画像判定テーブルDDが生成される。
尚、各行最終列、最終行各列、及び最終行最終列のブロックBLのサイズは、n×nとは限らず、n×nよりも小さなサイズになることがある。例えば、(a/nの剰余)×n、(b/nの剰余)×n、(a/nの剰余)×(b/nの剰余)というサイズになる。
次に、図6の連続領域工程(取得工程)S503において、ASIC236は、図9のスタンプ画像判定テーブルDDにおける各ブロックBLの判定値「0x80」又は「0x00」を参照して、「0x80」のブロックBLからなる連続領域を求める。つまり、スタンプ画像が含まれるブロックBLからなる連続領域を求める。そして、連続領域をラベリングして識別できるようにする。これにより、例えばスタンプ設定頁SPに複数のスタンプ画像が分散配置されている場合に、各スタンプ画像を含むそれぞれの連続領域が設定されてラベリングされ、各連続領域の識別が可能になる。
詳しくは、図9のスタンプ画像判定テーブルDDにおいて、左上のブロックBLの判定値の位置を原点(0,0)とし、横方向をX方向、縦方向をY方向とした座標系を仮定して、ブロックBLの判定値の座標位置CBを(X,Y)で表すものとすると、スタンプ画像判定テーブルDDにおける座標位置CB(I,J)(I=0,1,2,…,(a/nを切り上げた整数=A)、J=0,1,2,…,(b/nを切り上げた整数=B))の値Jを1行目に対応する「0」に設定し、値Iを順次カウントアップして、スタンプ画像判定テーブルDDにおける1行目の各ブロックBLの判定値を参照し、値Iが整数Aに達すると、値Jを2行目に対応する値「1」に設定し、値Iを再び「0」から順次カウントアップして、スタンプ画像判定テーブルDDにおける2行目の各ブロックBLの判定値を参照し、以降同様に、スタンプ画像判定テーブルDDにおける行毎に、その行の各ブロックBLの判定値を参照する。
そして、スタンプ画像判定テーブルDDにおいて、参照しているブロックBLの判定値が「0x80」であって、このブロックBLの横方向又は縦方向に隣り合うブロックBLの判定値が「0x80」である場合は、スタンプ画像が含まれる各ブロックBLが連続していることから、これらのブロックBLの判定値「0x80」を同一の値に変更して、これらのブロックBLからなる連続領域をラベリングする。
例えば、最初に見つかった連続領域の各ブロックBLの判定値を「0x80」から「0x81」に変更してラベリングし、2番目に見つかった連続領域の各ブロックBLの判定値を「0x80」から「0x82」に変更してラベリングし、以降同様に、連続領域が見つかる度に、連続領域の各ブロックBLの判定値をカウントアップしてラベリングして行く。ここでは、ブロックBLの判定値を示す1バイトの最上位ビット「1」を残して、下位7ビットを変更している。この場合は、各ブロックBLの判定値を「0x7F」(10進数の「127」)まで変更することができ、127個の連続領域をラベリングすることができる。この結果、ラベリングされた連続領域の各ブロックBLの判定値が、例えば図10(a)から図10(b)に示すように変更される。
尚、連続領域が128個以上存在し、ラベリングされた連続領域の各ブロックBLの判定値が下位7ビットに収まらなかった場合は、各ブロックBLの個数が多すぎることから、各ブロックBLの評価工程S507にスキップし、更に値nを変更して、各工程S502〜S506を繰返すことになる。
また、このようなラベリングは、公知のアルゴリズムを用いて実施することができ、ASIC236の論理演算回路によって実施しても、あるいはアプリケーションソフトの実行により実施してもよい。
次に、図6の合成工程S504において、ASIC236は、複数の連続領域が存在する場合に、図10(b)のスタンプ画像判定テーブルDDを参照して、各連続領域を選択的に合成する。
詳しくは、図10(b)のスタンプ画像判定テーブルDDにおけるブロックBLの判定値の座標位置CBを(X,Y)で表すものとすると、図10(b)のスタンプ画像判定テーブルDDを参照して、連続領域毎に、連続領域のXの最大値Xmaxと最小値Xmin、Yの最大値Ymaxと最小値Yminを求め、各連続領域の最大値Xmax、最小値Xmin、Yの最大値Ymax、最小値YminをHDD224に記憶する。
そして、2つの連続領域L1、L2を比較し、以下の条件(1)〜(4)が全て成立した場合に、連続領域L2のブロックBLの判定値を連続領域L1のブロックBLの判定値に書き換え、連続領域L2を連続領域L1の各ブロックBLを包含する最小の矩形領域LLに合成する。
条件(1) 連続領域L1の最小値Xmin≦連続領域L2の最小値Xmin
条件(2) 連続領域L1の最大値Xmax≧連続領域L2の最大値Xmax
条件(3) 連続領域L1の最小値Ymin≦連続領域L2の最小値Ymin
条件(4) 連続領域L1の最大値Ymax≧連続領域L2の最大値Ymax
ただし、連続領域L2の判定値が消去されるため、HDD224内の連続領域L2の最大値Xmax、最小値Xmin、Yの最大値Ymax、最小値Yminを負数にして、連続領域L2の判定値が消去された旨を記録しておく。
図10(b)のスタンプ画像判定テーブルDDにおいては、各ブロックBLの個数が少なく、各連続領域L1、L2が独立して存在する。これに対して、図11に示すように各ブロックBLの個数が多くなった場合は、上記条件(1)〜(4)に基づき、連続領域L2のブロックBLの判定値「2」が連続領域L1のブロックBLの判定値「1」に書き換えられ、連続領域L2が連続領域L1の各ブロックBLを包含する最小の矩形領域LLに合成されることがある。尚、図11においては、ラベリングされた連続領域の各ブロックBLの判定値の1桁目だけを記して、判定値を簡略化している。
次に、連続領域をコピーするコピー工程(取得工程)S505において、ASIC236は、スタンプ画像判定テーブルDDにおける連続領域(例えば図10(b)の連続領域L2)の最大値Xmax、最小値Xmin、最大値Ymax、最小値YminをHDD224から読出し、この連続領域の各ブロックBLを包含する最小の矩形領域LL(図10(b)においては連続領域L2に一致する)の画像データを記憶し得る記憶領域、つまりn(Xmax−Xmin+1)×n(Ymax−Ymin+1)の各画素の諧調を記憶する記憶領域を画像メモリ237に設定し、この記憶領域を初期化する。
そして、連続領域L2の各ブロックBLを包含する最小の矩形領域LLの画像データを図8のスタンプ設定頁SPから抽出して、この抽出した各ブロックBLの画像データを画像メモリ237の記憶領域に記憶する。例えば、図12に示すようにスタンプ画像判定テーブルDDにおいて、判定値「0x82」の各ブロックBLからなる連続領域L2の最大値Xmax、最小値Xmin、最大値Ymax、最小値Yminを求め、スタンプ設定頁SPにおいて、連続領域L2の各ブロックBLを包含する最小の矩形領域、すなわち座標位置CS(n×Xmin,n×Ymin)及び(n×Xmax+n−1,n×Ymax+n−1)を対角頂点とする最小の矩形領域をスタンプ画像抽出領域MEとして求め、このスタンプ画像抽出領域MEの各画素の諧調(画像データ)を抽出し、この画像データを画像メモリ237の記憶領域にコピーする。
勿論、判定値「0x80」の各ブロックBLの抽出及びコピーは行わない。また、合成工程S504において他の連続領域に包含された連続領域の各ブロックBLの抽出及びコピーも行わない。
次に、図6の切出し工程(取得工程)S506において、ASIC236は、スタンプ画像抽出領域MEから有色画素(スタンプ画像の少なくとも一部を示し、諧調が閾値以上となる画素)を包含する矩形状の最小の切出し領域を求めて、この切出し領域をHDD224に記憶する。
例えば、図13のスタンプ画像抽出領域MEにおいて、左上の画素の位置を原点(0,0)とし、横方向をxx方向、縦方向をyy方向とした座標系を仮定して、画素の座標位置CMを(xx,yy)で表すものとすると、スタンプ画像抽出領域MEから有色画素(諧調が閾値以上の画素)を包含する最小の切出し領域として、座標位置CM(xxmin,yymin)及び(xxmax,yymax))を対角頂点とする切出し領域SE(スタンプ画像STの少なくとも一部を含む)を切出し、この切出し領域SEに対応するサイズの画像データを記憶し得る記憶領域として、(xxmax−xxmin+1)×(yymax−yymin+1)の各画素の諧調(画像データ)を記憶する記憶領域をHDD224に設定し、切出し領域SEの画像データをHDD224の記憶領域に記憶する。
このとき、ASIC236は、図12に示すスタンプ画像判定テーブルDDにおける最小の矩形領域LLに包含される各ブロックBLの判定値のうちから、最も左上側のブロックBLの判定値を選択して、スタンプ画像判定テーブルDDにおけるその選択したブロックBLの判定値の座標位置CB(Xmin,Ymin)を取得し、この選択したブロックBLの判定値の座標位置CB(Xmin,Ymin)及び図13に示すスタンプ画像抽出領域MEにおける切出し領域SEの最も左上側の画素の座標位置CM(xxmin,yymin)に基づき、スタンプ設定頁SPにおける切出し領域SEの最も左上側の画素の座標位置CS(n×Xmin+xxmin,n×Ymin+yymin)を求めてHDD224に記憶する。
また、ASIC236は、切出し領域SEの幅(xxmax−xxmin+1)及び高さ(yymax−yymin+1)をHDD224に記憶する。
更に、ASIC236は、図12に示すスタンプ設定頁SPにおける切出し領域SEの重心点Gの座標位置CS(n×Xmin+(xxmin+xxmax)/2,n×Ymin+(yymin+yymax)/2)を求め、切出し領域SEの重心点Gの座標位置CSとスタンプ設定頁SPにおいて予め設定された複数の基準点とのそれぞれの離間距離を計算して求め、切出し領域SEの重心点Gの座標位置CSからの離間距離が最も短くて、切出し領域SEの重心点Gの座標位置CSに最も近い基準点を選択し、この選択した基準点から切出し領域SEの最も左上側の画素の座標位置CSまでのx方向距離及びy方向距離を求め、切出し領域SEの重心点Gの座標位置CSに最も近い基準点、及び最も近い基準点から切出し領域SEの最も左上側の画素の座標位置CSまでのx方向距離及びy方向距離をHDD224に記憶する。
このような切出し領域SEの重心点Gの座標位置CSに最も近い基準点、及び最も近い基準点から切出し領域SEの最も左上側の画素の座標位置CSまでのx方向距離及びy方向距離は、スタンプ設定頁SPにおける切出し領域SEの位置を示す位置情報である。
例えば、図14に示すようにスタンプ設定頁SPにおいて、9個の基準点O1〜O9が予め設定されており、上段左の基準点O1の座標位置CSが(0,0)であり、上段中央の基準点O2の座標位置CSが(xmax/2,0)であり、上段右の基準点O3の座標位置CSが(xmax,0)であり、中段左の基準点O4の座標位置CSが(0,ymax/2)であり、中段中央の基準点O5の座標位置CSが(xmax/2,ymax/2)であり、中段右の基準点O6の座標位置CSが(xmax,ymax/2)であり、下段左の基準点O7の座標位置CSが(0,ymax)であり、下段中央の基準点O8の座標位置CSが(xmax/2,ymax)であり、下段右の基準点O9の座標位置CSが(xmax,ymax)であるものとする。この場合、切出し領域SEaの重心点Gの座標位置CSが上段中央の基準点O2の座標位置CS(xmax/2,0)に最も近いため、上段中央の基準点O2から切出し領域SEaの最も左上側の画素の座標位置CSまでのx方向距離として(n×Xmin+xxmin−xmax/2)が求められ、またy方向距離として(n×Ymin+yymin−0)が求められる。また、切出し領域SEbの重心点Gの座標位置CSが下段右の基準点O9の座標位置CSが(xmax,ymax)に最も近いため、下段右の基準点O9から切出し領域SEbの最も左上側の画素の座標位置CSまでのx方向距離として(n×Xmin+xxmin−xmax)が求められ、またy方向距離として(n×Ymin+yymin−ymax)が求められる。
このように図6の切出し工程(取得工程)S506においては、切出し領域SEを示す画像データ、スタンプ設定頁SPにおける切出し領域SEの最も左上側の画素の座標位置CS(n×Xmin+xxmin,n×Ymin+yymin)、切出し領域SEの幅(xxmax−xxmin+1)及び高さ(yymax−yymin+1)、切出し領域SEの重心点Gの座標位置CSに最も近い基準点、及び最も近い基準点から切出し領域SEの最も左上側の画素の座標位置CSまでのx方向距離及びy方向距離がHDD224に記憶される。
次に、図6の評価工程S507において、ASIC236は、各工程S502〜S506による結果を評価する。
詳しくは、ASIC236は、n(横の画素数)×n(縦のライン数)の値nとして適宜小さな値を初期設定して、つまりブロックBLのサイズを適宜小さく初期設定して、各工程S502〜S506を開始しており、各工程S502〜S506の少なくとも1つが遂行されずに評価工程S507へとスキップしたとき、例えば先に述べたように連続領域工程S503から評価工程S507へとスキップしたときに、試行回数Qだけをカウントアップして、評価を行わずに、値nを適宜大きく変更し、つまりブロックBLのサイズを適宜大きく変更して、図6の分割判定工程S502に戻る。
また、ASIC236は、各工程S502〜S506が全て遂行されると、試行回数Qをカウントアップするだけではなく、切出し領域SE(スタンプ画像STの少なくとも一部を含む)の切出し成功回数Uをカウントアップし、切出された切出し領域SE(各工程S502〜S506の結果)を特定の評価関数に基づき評価する。この評価関数は、ASIC236の性能(CPU221の性能)、メモリ容量等のシステム構成に基づいて予め決定され、プログラムで保持されているものとする。例えば、評価関数として、α×(各ブロックBLの個数)+β×(切出された切出し領域SEのサイズの総和)のようなものが考えられる。この場合、係数α、βの値による重み付けはシステム構成依存のチューニング要素となる。また、上記例の評価関数では、一次の和を求めているが、重要度に応じて次数を変えることも考えられる。
こうして切出された切出し領域SE(各工程S502〜S506の結果)の評価を行った後、ASIC236は、今回の評価と前回の評価とを比較し、前回の評価の方が高い場合は、前回実施した工程S506の結果、すなわち切出し領域SE(スタンプ画像STの少なくとも一部を含む)を示す画像データ、スタンプ設定頁SPにおける切出し領域SEの最も左上側の画素の座標位置CS、切出し領域SEの幅及び高さ、切出し領域SEの重心点Gの座標位置CSに最も近い基準点、及び最も近い基準点から切出し領域SEの最も左上側の画素の座標位置CSまでのx方向距離及びy方向距離をHDD224に保持する。また、今回の評価の方が高い場合は、前回実施した工程S506の結果をHDD224から消去し、今回実施した工程S506の結果をHDD224に保持する。
この後、ASIC236は、カウントアップした試行回数Q及び切出し成功回数Uのいずれかが一定値に達していなければ、値nを適宜大きく変更し、つまりブロックBLのサイズを適宜大きく変更して、図6の分割判定工程S502に戻る。
また、カウントアップした試行回数Q及び切出し成功回数Uのいずれかが一定値に達すると、各工程S502〜S507を終了する。このとき、各工程S502〜S506が複数回繰返されて、その度に評価が高かった工程S506の結果がHDD224に保持される。
更に、カウントアップした試行回数Q及び切出し成功回数Uのいずれかが一定値に達していても、工程S506の結果がHDD224に残されていなかった場合は、各工程S502〜S506を再度実施する。
こうしてHDD224に残された最も高い評価の工程S506の結果、すなわち切出し領域SE(スタンプ画像STの少なくとも一部を含む)を示す画像データ、スタンプ設定頁SPにおける切出し領域SEの最も左上側の画素の座標位置CS、切出し領域SEの幅及び高さ、切出し領域SEの重心点Gの座標位置CSに最も近い基準点、及び最も近い基準点から切出し領域SEの最も左上側の画素の座標位置CSまでのx方向距離及びy方向距離は、展開工程S501で取得したスタンプ設定頁のサイズや登録名と共にファイルに格納され、このファイル(以下、スタンプ登録情報と称する)がHDD224に登録保存される。また、切出し領域SE(スタンプ画像STの少なくとも一部を含む)を示す画像データは、適当な形式(JPEG、JBIG等)により圧縮されて記憶される。
また、MFP21では、多様なスタンプ設定頁のPCLデータをPC11から受信する度に、ASIC236により各工程S501〜S508を実施し、スタンプ登録情報を生成してHDD224に登録保存する。
次に、図6の合成工程S509において、ASIC236は、テキスト等のコンテンツが記された印刷頁にスタンプ画像STを合成して、このスタンプ画像を合成した印刷頁を印刷する。
ここでは、MFP21において、CPU221は、HDD224内の各スタンプ登録情報を参照して、各スタンプ登録情報の登録名を抽出し、各スタンプ登録情報の登録名を操作入力部215の表示デバイスの画面に表示する。表示デバイスの画面において、利用者により各スタンプ登録情報の登録名のいずれかが指示されると、表示デバイスの画面に重ねられたタッチパネルによりその指示された位置が検出され、この検出された位置の登録名がCPU221に通知される。CPU221は、その登録名を通知されると、この登録名のスタンプ登録情報、つまり切出し領域SE(スタンプ画像STの少なくとも一部を含む)を示す画像データ、スタンプ設定頁SPにおける切出し領域SEの最も左上側の画素の座標位置CS、切出し領域SEの幅及び高さ、切出し領域SEの重心点Gの座標位置CSに最も近い基準点、最も近い基準点から切出し領域SEの最も左上側の画素の座標位置CSまでのx方向距離及びy方向距離、及びスタンプ設定頁のサイズをHDD224から読出し、このスタンプ登録情報を画像メモリ237に記憶する。そして、ASIC236は、切出し領域SEを示す画像データを伸張処理し、この画像データ(ラスタイメージ)を画像メモリ237に展開する。
この後、例えば操作入力部215の入力操作により原稿の複写が指示されると、スキャナ212により原稿が読取られ、原稿(印刷頁)を示す画像データ(ラスタイメージ)がスキャナ211から画像メモリ237に入力されて展開される。ASIC236は、原稿(印刷頁)のラスタイメージが画像メモリ237上で展開されると、画像メモリ237上で、切出し領域SE(スタンプ画像STの少なくとも一部を含む)のラスタイメージを原稿(印刷頁)のラスタイメージに合成して、スタンプ画像STを合成した印刷頁を示す画像データ(ラスタイメージ)をプリンタ213に出力する。プリンタ213は、画像データを入力すると、スタンプ画像STを合成した印刷頁(原稿)を該印刷頁と同一サイズの記録用紙に印刷する。
このときのASIC236による原稿(印刷頁)に対するスタンプ画像STの合成手順の一例は、次の通りである。
まず、HDD224から読み出されたスタンプ登録情報として、切出し領域SE(スタンプ画像STの少なくとも一部を含む)を示す画像データ、切出し領域SEの重心点Gの座標位置CSに最も近い基準点、及び最も近い基準点から切出し領域SEの最も左上側の画素の座標位置CSまでのx方向距離及びy方向距離が与えられている。
そこで、原稿(印刷頁)において、スタンプ設定頁SPの最も近い基準点に対応する基準点を設定する。そして、スタンプ設定頁SPの最も近い基準点から切出し領域SEの最も左上側の画素の座標位置CSまでのx方向距離及びy方向距離を用いて、原稿(印刷頁)において、該原稿の最も近い基準点からx方向距離及びy方向距離だけ離間した位置を切出し領域SEの最も左上側の画素の座標位置CSとして求め、このx方向距離及びy方向距離だけ離間した位置に切出し領域SEの最も左上側の画素を重ね合わせて、切出し領域SE(スタンプ画像STの少なくとも一部を含む)を合成する。
例えば、図14に示すようにスタンプ設定頁SPにおいて、切出し領域SEaの重心点Gの座標位置CSが上段中央の基準点O2の座標位置CS(xmax/2,0)に最も近く、上段中央左の基準点O2から切出し領域SEaの最も左上側の画素の座標位置CSまでのx方向距離(n×Xmin+xxmin−xmax/2)及びy方向距離(n×Ymin+yymin−0)が設定されていた場合は、図15に示すような印刷頁(原稿)RPにおいて、上段中央の基準点O2からx方向距離(n×Xmin+xxmin−xmax/2)及びy方向距離(n×Ymin+yymin−0)だけ離間した位置に切出し領域SEaの最も左上側の画素を重ね合わせて、切出し領域SEaを合成する。
また、図14に示すようにスタンプ設定頁SPにおいて、切出し領域SEbの重心点Gの座標位置CSが下段右の基準点O9の座標位置CS(xmax,ymax)に最も近く、下段右の基準点O9から切出し領域SEbの最も左上側の画素の座標位置CSまでのx方向距離(n×Xmin+xxmin−xmax)及びy方向距離(n×Ymin+yymin−ymax)が設定されていた場合は、図15に示すような印刷頁(原稿)RPにおいて、下段右の基準点O9からx方向距離(n×Xmin+xxmin−xmax)及びy方向距離(n×Ymin+yymin−ymax)だけ離間した位置に切出し領域SEbの最も左上側の画素を重ね合わせて、切出し領域SEbを合成する。
勿論、切出し領域の3つ以上であっても、切出し領域毎に、切出し領域が原稿(印刷頁)SPにおける基準点、x方向距離、及びy方向距離に対応する位置に合成され、切出し領域に含まれるスタンプ画像が印刷頁(原稿)に合成される。また、スタンプ設定頁SPのサイズが記録用紙(印刷頁)のサイズと同一である場合は、スタンプ設定頁SPをそのまま印刷頁(原稿)に合成しても構わない。
これにより、記録用紙(印刷頁)のサイズにかかわらず、印刷頁におけるスタンプ画像の位置をスタンプ設定頁SPにおけるスタンプ画像の位置に対応付けて、印刷頁にスタンプ画像を合成して印刷することができる。
尚、印刷頁(原稿)に切出し領域を合成するとき、切出し領域が合成される印刷頁の領域の各画素と切出し領域の各画素とをそれぞれ対応付け、印刷頁の領域の画素の諧調と切出し領域の画素の諧調の和を求めて、この和を印刷頁の領域の対応画素の諧調として書き込んでも(ウォーターマーク)、あるいは切出し領域の画素の諧調を印刷頁の領域の対応画素の諧調としてそのまま上書きしてもよい。また、他の合成方法を適用しても構わない。
また、カラー画像の場合は、例えばR(赤)、G(緑)、B(青)別に、上記各工程S501〜S507を行うことになるが、分割判定工程S502においては、R、G、Bのいずれかの画素の諧調が閾値以上と判定されたならば、R、G、Bの各ブロックBLをスタンプ画像を含むものとみなして、各ブロックBLの判定値を「0x80」に設定する。
このように本実施形態では、スタンプ設定頁SPをPC11からMFP21へと送受し、MFP21側でスタンプ設定頁SPを解析して、スタンプ画像の少なくとも一部を含む切出し領域SEとその位置情報を抽出し、切出し領域SEとその位置情報をHDD224に登録しているので、スタンプ設定頁全体をそのまま登録することと比較すると、切出し領域SEとその位置情報を登録するためのメモリ容量が小さくて済み、多様なスタンプ設定頁を登録する場合には、メモリ容量を大幅に節減することができる。
また、スタンプ画像の圧縮伸張処理、各種の画像処理、合成処理等を行うときには、スタンプ画像のサイズが小さいことから、ASIC236による処理速度が速くなって、処理時間が短くなり、また処理に必用とされるワークメモリのサイズが節減される。一般的には、画像のサイズが大きくなるほど、ASICやCPUの処理速度が遅くなり、また処理に必用とされるワークメモリのサイズが大きくなる。
また、MFP21側では、スタンプ設定頁SPの登録名を選択するだけで、印刷頁におけるスタンプ画像の位置をスタンプ設定頁SPにおけるスタンプ画像の位置に対応付けて、印刷頁にスタンプ画像を印刷することができ、印刷頁におけるスタンプ画像の位置等を調節するための操作を必要としない。
更に、スタンプ設定頁SPを複数のブロックに分割し、スタンプ画像を含む各ブロックからなる矩形領域を求め、この矩形領域からスタンプ画像を切出して抽出しているので、スタンプ画像が、分散した複数の文字等からなるものであっても、スタンプ画像が細かく分断されて抽出されることはなく、スタンプ画像全体を切出して抽出することができる。
尚、スタンプ画像STの位置を、スタンプ画像を含むブロックBLの位置によって表してもよい。この場合でも、印刷頁におけるスタンプ画像STの合成位置の精度が低下するものの、スタンプ画像STを印刷頁に合成することが可能である。
以上、添付図面を参照しながら本発明の好適な実施形態及び変形例について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと解される。