A.第1実施例:
A−1:画像処理システム1000の構成
図1は、第1実施例における画像処理システムの構成を示すブロック図である。画像処理システム1000は、画像処理装置としてのサーバ400と、複合機200と、を備えている。サーバ400は、インターネット70に接続されており、複合機200は、LAN(Local Area Network)50を介して、インターネット70に接続されている。この結果、サーバ400と複合機200は、LAN50とインターネット70とを介して、通信可能である。また、LAN50には、複合機200の利用者のパーソナルコンピュータ500が接続されていても良い。
サーバ400は、CPU410と、DRAMなどの揮発性記憶装置420と、ハードディスクドライブやフラッシュメモリなどの不揮発性記憶装置430と、インターネット70などのネットワークに接続するためのインタフェースを含む通信部480と、を備えている。揮発性記憶装置420には、CPU410が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域421が設けられている。不揮発性記憶装置430には、後述する画像処理をCPU410に実現させるコンピュータプログラム431が格納されている。コンピュータプログラム431は、DVD−ROMなどに記録された形態で提供され得る。
CPU410は、コンピュータプログラム431を実行することにより、画像処理部300として機能する。画像処理部300は、処理対象の画像データ(対象画像データとも呼ぶ)を取得する画像データ取得部310と、対象画像データによって表される対象画像内のオブジェクトを特定するオブジェクト特定部320と、処理時間判断部330と、解析処理部350と、属性判断部360と、囲み線に囲まれたオブジェクトを除去する処理を実行する除去処理部370と、を備えている。解析処理部350は、オブジェクトに対して複数の解析処理を実行可能である。具体的には、解析処理部350は、オブジェクトが単色であるか否かを判定する色判定部351と、オブジェクトが線であるか否かを判定する線判定部352と、オブジェクトが、領域を囲む形状を有しているか否かを判定する形状判定部353と、を備えている。処理時間判断部330は、オブジェクトに対して実行されるべき複数の解析処理のうちの特定の処理の処理時間を判断する。属性判断部360は、複数の解析処理のうち、実行された処理の処理結果に基づいて、オブジェクトの属性、具体的には、オブジェクトが囲み線であるか否かを判断する。ここで、囲み線は、後述するように、対象画像内の一部の領域、例えば、他のオブジェクトを示す領域や、オブジェクトが含まれない背景領域を囲む線である。例えば、囲み線は、赤色のペンなどにより原稿上に形成され、この原稿を読み取ることによって得られる画像データ(スキャンデータ)によって表される画像上に現れる。これらの各機能部が行う具体的な画像処理については、後述する。
複合機200は、CPU210と、DRAMなどの揮発性記憶装置220と、フラッシュメモリやハードディスクドライブなどの不揮発性記憶装置230と、プリンタ部240と、スキャナ部250と、タッチパネルやボタンなどの操作部260と、液晶ディスプレイなどの表示部270と、LAN50などのネットワークに接続するためのインタフェースを含む通信部280と、を備えている。
揮発性記憶装置220には、CPU210が処理を行う際に生成される種々のデータを一時的に格納するバッファ領域221が設けられている。不揮発性記憶装置230には、制御プログラム231が格納されている。
プリンタ部240は、インクジェット方式やレーザー方式などの印刷方式を用いて印刷を実行する。スキャナ部250は、光電変換素子(例えば、CCD、CMOS)を用いて原稿を読み取ることによってスキャンデータを生成する取得する。スキャンデータは、RGB画素データによって構成されたビットマップデータ(RGB画像データ)である。RGB画素データは、レッド(R)、グリーン(G)、ブルー(B)の3つの色成分の色成分値(本実施例の各色成分値は、256階調の階調値)を含む画素データである。以下では、色成分のうち、レッド成分をR成分とも呼び、グリーン成分をG成分とも呼び、ブルー成分をB成分とも呼ぶ。
CPU210は、制御プログラム231を実行することにより、通信制御部110と、装置制御部120と、として機能する。装置制御部120は、例えば、プリンタ部240やスキャナ部250を制御して、コピー処理、印刷処理、スキャン処理などを実行する。通信制御部110は、外部機器との通信を制御する機能部であり、具体的には、後述する画像処理において、サーバ400との間で、画像データの送受信を行う画像データ送受信部115を備えている。
A−1:画像処理システム1000の動作
サーバ400の画像処理部300は、処理対象の画像データ(対象画像データとも呼ぶ)に対して画像処理を実行して、処理済みの画像データを生成する。この画像処理を含む画像処理システム1000の動作について説明する。
図2は、画像処理システム1000の動作を示すフローチャートである。このフローチャートの処理は、複合機200が、特定の動作モードの指定と、原稿SCの読取指示を、利用者から受け付けた場合に実行される。この特定の動作モードは、原稿SCから、囲み線に囲まれた特定のオブジェクトを除いた画像を表す画像データを生成するモードであり、特定オブジェクト除去モードとも呼ぶ。
処理が開始されると、ステップS105では、複合機200の装置制御部120(図1)は、スキャナ部250を用いて原稿SCを読み取ることによって、スキャンデータを生成する。
図3は、原稿および画像の一例を示す図である。図3(A)には、スキャンデータによって表されるスキャン画像60の一例が示されている。スキャン画像60は、原稿SCを表す画像であるから、図3(A)は、原稿SCの一例を示す図と言うこともできる。
スキャン画像60(原稿SC)は、オブジェクトとして、4個の文字61〜64と、2個の描画65、67と、1個の写真68と、囲み線66と、を含んでいる。描画は、例えば、イラスト、表、グラフ、線図、ベクトルグラフィックス、模様などを表すオブジェクトである。囲み線66は、オブジェクト除去モードで使用すべき囲み線の色として予め指定された色(本実施例では、赤)のペンを用いて、利用者によって原稿SCに手書きされたオブジェクトである。利用者は、除去対象のオブジェクトを囲む囲み線を原稿SCに手書きする。図3(A)の例では、囲み線66は、描画65を囲んでいる。なお、3個の文字61〜63は、赤色の文字であり、1個の文字64は、赤色ではない文字である。描画65は、赤色の部分を含んでおらず、描画67と写真68は、赤色の部分を含んでいる。
続いて、ステップS110では、サーバ400の画像データ送受信部115は、スキャンデータを、サーバ400に対して送信する。例えば、スキャンデータは、JPEG圧縮されて、サーバ400に送信される。この結果、サーバ400の画像処理部300の画像データ取得部310は、対象画像データとして、複合機200からスキャンデータを取得する。
スキャンデータが取得されると、画像処理部300は、スキャン画像60内の囲み線を特定するための一連の処理を実行する(ステップS120〜S145)。
先ず、ステップS120では、オブジェクト特定部320は、囲み線の候補となるオブジェクトを特定するために、スキャンデータに対して二値化処理を実行して、二値画像データを生成する。具体的には、スキャンデータは、スキャン囲み線の色である赤色を表す色値を有する画素(赤色オブジェクト画素)と、赤色以外の色を表す色値を有する画素(非赤色画素)と、に二値化される。例えば、R成分値が基準値Rth以上、かつ、G成分値が基準値Gth以下、かつ、B成分値が基準値Bth以下である画素は、赤色オブジェクト画素に分類される。そして、R成分値が基準値Rthより大きい、または、G成分値が基準値Gth未満、または、B成分値が基準値Bth未満である画素は、非赤色画素に分類される。なお、本実施例では、囲み線の色として赤色が想定されているので、本ステップにおいて、赤色オブジェクトが特定されているが、他の色が想定されている場合には、本ステップにおいて、当該他の色を含む範囲の色を有するオブジェクトが特定される。
図3(B)は、二値画像データによって表される二値画像60Aの一例を示す図である。二値画像60Aには、赤色オブジェクト画素によって構成される赤色オブジェクトとして、3個の文字61A〜63Aと、囲み線66Aと、描画67および写真68(図3(A))の一部分である部分オブジェクト67A、68Aと、が含まれている。なお、文字64および描画65(図3(A))は、赤色ではないので、二値画像60Aにおいて、赤色オブジェクトとして現れていない。
ステップS125では、オブジェクト特定部320は、赤色オブジェクトを収縮させる収縮処理と、赤色オブジェクトを膨張させる膨張処理とを、二値画像データに対してそれぞれ実行する。本実施例では、収縮処理が先に実行され、収縮処理済みの二値画像データ(収縮二値画像データ)に対して膨張処理が実行される。
図4は、収縮処理と膨張処理を説明する図である。図4(A)には、二値画像60A(図3(B))の部分画像PI1が示されている。部分画像PI1は、収縮処理前の赤色オブジェクトの例としての囲み線66Aの一部と、ノイズ画素DTを含んでいる。ノイズ画素DTは、孤立した画素である。この孤立したノイズ画素DTは、スキャン画像60内のノイズによって二値画像60Aに現れた赤色オブジェクト画素であり、特定すべき赤色オブジェクトを構成していない。また、囲み線66Aは、断線した部分(断線部)NTを含む場合がある。例えば、スキャン画像60内の囲み線66に、比較的色が薄い部分がある場合や、比較的線の幅が狭い部分がある場合などに、二値画像60A内の囲み線66Aに、断線部NTが表れる場合がある。
収縮処理は、例えば、所定サイズのフィルタ、図4(A)の例では、縦3画素×横3画素のサイズのフィルタFI1を用いて実行される。具体的には、オブジェクト特定部320は、フィルタFI1を、二値画像60Aを表す二値画像データに対して適用して、収縮二値画像データを生成する。すなわち、オブジェクト特定部320は、注目画素に、フィルタFI1の中心位置CC1(図4(A)参照)が重なるように、フィルタFI1を二値画像60A上に配置する。オブジェクト特定部320は、フィルタFI1の範囲内に、非赤色画素が1個でも存在する場合には、注目画素に対応する収縮二値画像内の画素を非赤色画素に設定する。そして、オブジェクト特定部320は、フィルタFI1の範囲内に、非赤色画素がない場合、すなわち、フィルタFI1の範囲内の9個の画素が、全て赤色オブジェクト画素であるには、注目画素に対応する収縮二値画内の画素を赤色オブジェクト画素に設定する。オブジェクト特定部320は、二値画像60Aの全ての画素を注目画素として、収縮二値画像内の対応する画素を、非赤色画素および赤色オブジェクト画素のいずれかに設定することによって、収縮二値画像を表す収縮二値画像データを生成する。この説明から解るように、赤色オブジェクトを収縮させる収縮処理は、非赤色オブジェクトによって構成される領域(主として背景領域)を膨張させる処理と言うこともできる。
図4(B)には、収縮二値画像のうちの、図4(A)の部分画像PI1に対応する収縮部分画像PI2が示されている。収縮部分画像PI2には、ノイズ画素DTが現れていないことから解るように、収縮処理によって、ノイズ画素DTのような孤立した赤色オブジェクト画素を消去することができる。また、収縮部分画像PI2では、赤色オブジェクト、例えば、囲み線66Aが、部分画像PI1の囲み線66Aと比較して、細くなっている(収縮している)。また、収縮部分画像PI2では、囲み線66Aの断線部NTが、部分画像PI1の囲み線66Aの断線部NTと比較して、大きくなっている。
続く膨張処理は、例えば、所定サイズのフィルタ、図4(B)の例では、縦5画素×横5画素のサイズのフィルタFI2を用いて実行される。具体的には、オブジェクト特定部320は、フィルタFI2を、収縮二値画像を表す収縮二値画像データに対して適用して、膨張二値画像データを生成する。すなわち、オブジェクト特定部320は、注目画素に、フィルタFI2の中心位置CC2(図4(B)参照)が重なるように、フィルタFI2を収縮二値画像上に配置する。オブジェクト特定部320は、フィルタFI2の範囲内に、赤色オブジェクト画素が1個でも存在する場合には、注目画素に対応する膨張二値画像内の画素を赤色オブジェクト画素に設定する。そして、オブジェクト特定部320は、フィルタFI2の範囲内に、赤色オブジェクト画素がない場合、すなわち、フィルタFI2の範囲内の25個の画素が、全て非赤色画素であるには、注目画素に対応する膨張二値画内の画素を非赤色画素に設定する。オブジェクト特定部320は、収縮二値画像の全ての画素を注目画素として、膨張二値画像内の対応する画素を、非赤色画素および赤色オブジェクト画素のいずれかに設定することによって、膨張二値画像を表す膨張二値画像データを生成する。
図4(C)には、膨張二値画像のうちの、図4(A)、(B)の部分画像PI1、PI2に対応する膨張部分画像PI3が示されている。膨張部分画像PI3の囲み線66Aには、断線部NTが現れていないことから解るように、膨張処理によって、囲み線66Aに現れ得る断線部NTを接続することができる。膨張部分画像PI3では、赤色オブジェクト、例えば、囲み線66Aが、部分画像PI1の囲み線66Aと比較して、太くなっている(膨張している)。
なお、上述したフィルタFI1、FI2のサイズ、すなわち、収縮処理による収縮の程度、および、膨張処理による膨張の程度は、一例である。ただし、収縮処理を先に実行し、膨張処理を後に実行する場合には、膨張処理による膨張の程度(フィルタFI2のサイズに対応する)は、収縮処理による収縮の程度(フィルタFI1のサイズに対応する)より大きいことが好ましい。こうすれば、断線部NTの接続を適切に実現することができる。仮に、収縮処理を先に実行し、膨張処理を後に実行する場合に、膨張処理による膨張の程度が、収縮処理による収縮の程度以下であると、収縮処理によって拡大した断線部NTが膨張処理によって接続されない可能性がある。
また、上記実施例とは逆に、膨張処理を先に実行し、収縮処理を後に実行する場合には、膨張処理による膨張の程度は、収縮処理による収縮の程度より小さいことが好ましい。こうすれば、ノイズ画素DTを適切に消去することができる。仮に、膨張処理を先に実行し、収縮処理を後に実行する場合に、膨張処理による膨張の程度が、収縮処理による収縮の程度以上であると、膨張処理によって拡大したノイズ画素DTが収縮処理によって消去されない可能性がある。
以上説明した収縮・膨張処理(図2のステップS125)によって、ノイズ画素DTの消去や、断線部NTの接続を実現できるので、後に実行するオブジェクト判定処理において、囲み線の判定の精度を向上できる。また、無駄な処理(例えば、ノイズ画素DTを判定対象のオブジェクトとする処理)を低減することにより、処理負荷を低減することができる。
続くステップS130(図2)では、オブジェクト特定部320は、収縮・膨張処理後の二値画像データを利用して、赤色オブジェクトを特定して、特定された赤色オブジェクトに識別子を付すラベリングを実行する。ラベリングの結果、例えば、赤色オブジェクトと、識別子とを、対応付けたラベルデータが生成される。
具体的には、オブジェクト特定部320は、連続する(互いに隣接する)1個以上の赤色オブジェクト画素で構成される1個の領域を、1個の赤色オブジェクトとして特定する。図3(B)の例では、3個の文字61A〜63Aと、囲み線66Aと、描画67および写真68(図3(A))の一部分である部分オブジェクト67A、68Aと、が特定され、これらの赤色オブジェクトのそれぞれに、互いに異なる識別子が付される。
赤色オブジェクトが特定されると、ステップS145では、画像処理部300は、オブジェクト判定処理を実行する。図5は、オブジェクト判定処理のフローチャートである。オブジェクト判定処理は、特定された複数個の赤色オブジェクト61A〜63A、66A〜68Aのそれぞれが、囲み線であるか否かを、赤色オブジェクトごとに判定する処理である。1個の赤色オブジェクトの判定は、縦方向線判定処理(ステップS235)と、横方向線判定処理(ステップS240)と、形状判定処理(ステップS245)と、のうち、少なくとも1個の処理の処理結果に基づいて、実行される。
ステップS205では、解析処理部350は、処理対象の赤色オブジェクトを選択する。図3(B)の例では、3個の文字61A〜63Aと、囲み線66Aと、描画67および写真68の一部分である部分オブジェクト67A、68Aの中から、1個の赤色オブジェクトが処理対象として選択される。
ステップS210では、解析処理部350の色判定部351は、処理対象の赤色オブジェクトが単色であるか否かを判定する単色判定処理を実行する。具体的には、色判定部351は、赤色オブジェクトの平均成分値(Rave1、Gave1、Bave1)を算出する。平均成分値(Rave1、Gave1、Bave1)は、処理対象の赤色オブジェクトを構成する全ての赤色オブジェクト画素の値の平均値を、色成分ごとに算出することによって得られる。次に、色判定部351は、平均成分値に近い成分値を有する赤色オブジェクト画素の割合(RT_R、RT_G、RT_B)を、以下の式(1)〜(3)を用いて、色成分ごとに算出する。
RT_R=(PN_Rave1/PNtotal) ...(1)
RT_G=(PN_Gave1/PNtotal) ...(2)
RT_B=(PN_Bave1/PNtotal) ...(3)
ここで、PNtotalは、処理対象の赤色オブジェクトを構成する赤色オブジェクト画素の全体の個数である。PN_Rave1、PN_Gave1、PN_Bave1は、平均成分値(Rave1、Gave1、Bave1)に近い成分値を有する赤色オブジェクト画素の個数であり、色成分ごとに算出される。なお、本実施例では、R成分値が、(Rave1−ΔV1)≦R≦(Rave1+ΔV1)の範囲内である場合に、当該画素は、平均成分値に近いR成分値を有する画素であると判断される。同様に、G成分値が、(Gave1−ΔV1)≦G≦(Gave1+ΔV1)の範囲内である場合に、当該画素は、平均成分値に近いG成分値を有する画素であると判断される。B成分値が、(Bave1−ΔV1)≦B≦(Bave1+ΔV1)の範囲内である場合に、当該画素は、平均成分値に近いG成分値を有する画素であると判断される。なお、例えば、ΔV1は、256階調の成分値に対して、例えば、70に設定される。
そして、色判定部351は、成分ごとに算出された割合(RT_R、RT_G、RT_B)がそれぞれ基準値TH1以上である場合、すなわち、RT_R≧TH1、かつ、RT_G≧TH1、かつ、RT_B≧TH1である場合に、処理対象の赤色オブジェクトは単色であると判断する。また、色判定部351は、割合(RT_R、RT_G、RT_B)の少なくとも1つが基準値TH1未満である場合、すなわち、RT_R<TH1、または、RT_G<TH1、または、RT_B<TH1である場合に、処理対象の赤色オブジェクトは単色でないと判断する。基準値TH1は、実験的に設定される設計値であり、例えば、0.6に設定される。囲み線は、薄い赤色のペンで記入される場合もあれば、濃い赤色のペンで記入される場合もあるので、ステップS120(図2)では、薄い赤、濃い赤などを含む比較的広い範囲内の色を有する画素を赤色オブジェクト画素として抽出している。このために、本ステップでは、赤色オブジェクトが単色であるか否かを比較的厳密に判定している。
単色判定処理によって、処理対象の赤色オブジェクトが単色でないと判定された場合には(ステップS215:NO)、属性判断部360は、処理対象の赤色オブジェクトは囲み線ではないと判断する(ステップS265)。1個の囲み線は、記入の途中でペンを代えることなく、一筆書きで記入されるのが一般的であるので、囲み線は単色であると考えられる。例えば、濃い赤色のペンを用いて、記入された囲み線は、濃い赤色の単色であり、薄い赤色のペンを用いて、記入された囲み線は、薄い赤色の単色であると考えられる。このために、本実施例では、単色であることを、赤色オブジェクトが囲み線であると判定するための必要条件として採用している。この結果、赤色オブジェクトが囲み線であるか否かを適切に判定することができる。例えば、図3(B)の囲み線66Aは、単色であると判定される。また、例えば、B3(B)の部分オブジェクト67Aが、薄い赤色や濃い赤色などを含む多数の色を含んでいる場合には、部分オブジェクト67Aは、単色ではないと判定される。
処理対象の赤色オブジェクトが単色であると判定された場合には(ステップS215:YES)、処理時間判断部330は、処理順序決定処理を実行する(ステップS220)。処理順序決定処理は、第1の解析処理としての線判定処理(後述するステップS235、S240)と、第2の解析処理としての形状判定処理(後述するステップS245)と、の処理時間を判断し、判断結果に基づいて線判定処理と形状判定処理との処理順序を決定する処理である。具体的には、処理時間判断部330は、線判定処理の処理時間が、形状判定処理の処理時間未満であると判断される場合には、形状判定処理に先行して、線判定処理を実行するように処理順序を決定する。また、処理時間判断部330は、線判定処理の処理時間が、形状判定処理の処理時間以上であると判断される場合には、線判定処理に先行して、形状判定処理を実行するように処理順序を決定する。処理順序決定処理の詳細は、線判定処理と形状判定処理を含むオブジェクト判定処理(図5)の全体を説明した後に説明する。
ステップS230では、解析処理部350は、上述した処理順序決定処理で決定された処理順序に従って、実行すべき判定処理を決定する。例えば、処理順序決定処理において、形状判定処理に先行して、線判定処理を実行するように決定された場合には、縦方向線判定処理(ステップS235)、横方向線判定処理(ステップS240)、形状判定処理(ステップS245)の順序で、実行すべき判定処理が決定される。逆に、処理順序決定処理において、線判定処理に先行して、形状判定処理を実行するように決定された場合には、形状判定処理(ステップS245)、縦方向線判定処理(ステップS235)、横方向線判定処理(ステップS240)の順序で、実行すべき判定処理が決定される。なお、いずれの場合でも、本実施例では、縦方向線判定処理が、横方向線判定処理より先に実行されるように、予め定められている。これに代えて、横方向線判定処理が、縦方向線判定処理より先に実行されても良い。
先ず、線判定処理について説明する。図6は、線判定処理の説明図である。線判定処理は、処理対象の赤色オブジェクトが線であるか否かを判定する処理である。線判定処理は、線判定部352によって実行され、縦方向線判定処理(ステップS235)と、横方向線判定処理(ステップS240)とを含んでいる。
縦方向線判定処理は、赤色オブジェクトを含む処理領域内の縦方向(Y方向)に延びる複数の直線上において、赤色オブジェクト画素の分布を解析する処理を用いて実行される。具体的には、図6(A)に示すように、二値画像60A内の囲み線66A(図3(B))が処理対象の赤色オブジェクトである場合を例に説明する。線判定部352は、囲み線66Aに外接する矩形領域SI1を処理領域として特定する。線判定部352は、矩形領域SI1内のY方向(図6の縦方向)に沿った線L1(p)に沿って、連続する赤色オブジェクト画素の個数(連続画素数)を算出する。pは、X方向の線の位置を示す値であり、例えば、1≦p≦Wの範囲内の値である(Wは、矩形領域SI1のX方向の長さ(画素数))。図6(A)の例では、2つの連続画素数Lh1、Lh2が算出される。この場合には、線L1(p)に対応する連続画素数LN1(p)として、2つの連続画素数Lh1、Lh2の平均値((Lh1+Lh2)/2)を算出する。オブジェクト特定部320は、1≦p≦Wの範囲内のW本の線L1(p)の全てについて、それぞれ連続画素数LN1(p)を算出する。
線判定部352は、W本の線L1(p)について算出されたW個の連続画素数LN1(p)の平均値LN1aveを算出する。線判定部352は、平均連続画素数LN1aveが基準値TH2以下である場合に、赤色オブジェクトは、線であると判定し、平均連続画素数LNaveが基準値TH2未満である場合に、赤色オブジェクトは、線でないと判定する。すなわち、平均連続画素数LN1aveが基準値TH2以下であることが、縦方向線判定処理の判定条件である。
横方向線判定処理は、縦方向線判定処理と同様の処理を横方向(X方向)について実行する処理である。具体的には、線判定部352は、矩形領域SI1内のX方向(図6の横方向)に沿った線L2(q)に沿って、赤色オブジェクト画素の連続画素数を算出する。qは、線のY方向の線の位置(Y座標)を示す値であり、例えば、1≦q≦Hの範囲内の値である(Hは、矩形領域SI1のY方向の長さ(画素数))。図6(A)の例では、2つの連続画素数Lw1、Lw2が算出される。この場合には、線L2(q)に対応する連続画素数LN2(q)として、2つの連続画素数LW1、LW2の平均値を算出する。オブジェクト特定部320は、1≦q≦Hの範囲内のH本の線L2(q)の全てについて、それぞれ連続画素数LN2(q)を算出する。
線判定部352は、H本の線L1(q)について算出されたH個の連続画素数LN1(q)の平均値LN1aveを算出する。線判定部352は、平均連続画素数LN2aveが基準値TH2以下である場合に、赤色オブジェクトは、線であると判定し、平均連続画素数LNaveが基準値TH2未満である場合に、赤色オブジェクトは、線でないと判定する。すなわち、平均連続画素数LN2aveが基準値TH2以下であることが、縦方向線判定処理の判定条件である。
このように、X方向とY方向に延びる複数の直線上のそれぞれにおいて、赤色オブジェクト画素が連続する個数を算出することによって、オブジェクトの幅(線幅LW)を特定するので、オブジェクトの幅を適切に特定することができる。1個の囲み線は、赤色のペンで一筆書きされた一本の線であることが想定されるので、線であることを、赤色オブジェクトが囲み線であると判定するための必要条件として採用している。この結果、赤色オブジェクトが囲み線であるか否かを適切に判定することができる。例えば、図3(B)の囲み線66Aは、線であると判定される。
図6(B)には、二値画像60A内の部分オブジェクト68A(図3(B))が処理対象の赤色オブジェクトである場合を例に説明する。このような赤色オブジェクトが線でない場合には、図6(B)に示すように、Y方向の線L1(p)についての連続画素数Lh3や、X方向の線L2(q)についての連続画素数Lw3は、比較的大きくなる。この結果、部分オブジェクト68Aは、線判定処理において、線ではないと判定される。
次に、形状判定処理について説明する。形状判定処理は、形状判定部353によって実行され、処理対象の赤色オブジェクトが、スキャン画像60内の一部の領域を囲む囲み形状を有しているか否かを判定する処理である。
図7は、形状判定処理のフローチャートである。図8は、形状判定処理の第1の説明図である。図9は、形状判定処理の第2の説明図である。ステップS305では、形状判定部353は、赤色オブジェクトを構成する1個の赤色オブジェクト画素を注目画素として選択する。具体的には、形状判定部353は、矩形領域SI1(図8(A))内を、X方向の複数本の線Lxを、Y方向の負方向側から(図8の上方から)順次に走査して、検出される順番に1個ずつ赤色オブジェクト画素を選択する。
ステップS310では、形状判定部353は、選択された注目画素に対応する枠領域FLを設定する。図8(B)には、注目画素NPに対して設定される枠領域FLの一例が示されている。図8(B)に示すように、枠領域FLは、正方形の枠状の領域であり、枠の太さは、1画素分である。枠領域FLのX方向およびY方向の幅(画素数)FWは、図8(C)に示す式で表される。この式から解るように、枠領域FLの幅FWは、スキャン画像60の読み取り解像度RS(単位はdpi(dot per inch))と、赤色オブジェクトの線幅LW(単位は、画素)と、赤色オブジェクトのサイズOBS(単位は、画素)と、に応じて決定される。線幅LWには、例えば、線判定処理(図5のステップS220)にて算出された平均連続画素数LNaveが用いられる。オブジェクトサイズOBSには、例えば、矩形領域SI1の横幅Wと縦幅Hの平均値((H+W)/2)が用いられる。枠領域FLは、本実施例では、注目画素NPが中心に位置するように、設定される。以上の説明から解るように、枠領域FL内に含まれる画素数Mは、{(FW×4)−4}と表すことができる。
続くステップS315では、形状判定部353は、枠領域FL内のM個の画素を1個ずつ調べることによって、枠領域内のオブジェクト部分領域の個数Mvを算出する。オブジェクト部分領域は、枠領域FL内に、赤色オブジェクト画素が連続して並ぶ領域である。図8(B)の例では、2個のオブジェクト部分領域OA1、OA2が存在するので、個数Mvの値は「2」である。ここで、個数Mvを算出するのは、赤色オブジェクトと、枠領域FLとが、交差する数を認識するためである。図8(B)に示すように、個数Mvは、処理対象の赤色オブジェクトが枠領域FLと交差する数を示していることが解る。このために個数Mvを交差数Mvとも呼ぶ。交差数Mvが2である場合には、赤色オブジェクトは、枠領域FLが配置された矩形(枠配置矩形)内において、注目画素NPの位置(本実施例では、枠配置矩形の中心)を通り、枠配置矩形を横断する一本の線を成していると推定することができる。なお、枠領域FL内に位置すると言う場合には、1画素の太さの枠の内部に位置することを意味する。すなわち、枠領域FL内に位置する画素は、枠領域FLを構成する画素と言い換えることができる。例えば、図8(B)において、オブジェクト部分領域OA1、OB2は、枠領域FL内に位置しているが、注目画素NPや、オブジェクト部分領域OA1とオブジェクト部分領域OA2との間の複数個の赤色オブジェクト画素は、枠領域FL内には位置していない。また、枠配置矩形内に位置すると言う場合には、枠領域FL内または枠領域FLの内側の領域に位置していることを意味する。例えば、図8(B)において、オブジェクト部分領域OA1、OA2、注目画素NP、オブジェクト部分領域OA1とオブジェクト部分領域OA2との間の複数個の赤色オブジェクト画素は、全て枠配置矩形内に位置している。
例えば、図8(A)に示す枠領域FL2は、交差数Mvが2である例を示しているが、赤色オブジェクトは、枠配置矩形内において、枠配置矩形の中心を通り、枠配置矩形を横断する一本の線を成していることが解る。一方、図8(A)に示す枠領域FL1は、交差数Mvが1である例を示しているが、赤色オブジェクトは、枠配置矩形内で終端を形成しているので、中心を通る一本の線ではあるが、枠配置矩形を横断してはいない。
図7のステップS320では、形状判定部353は、全ての赤色オブジェクト画素が注目画素として選択されたか否かを判断する。未選択の赤色オブジェクト画素がある場合には(ステップS320:NO)、形状判定部353は、ステップS305に戻って、未選択の赤色オブジェクト画素を選択して、上述したステップS305〜S320までの処理を繰り返す。全ての赤色オブジェクト画素が選択された場合には(ステップS320:YES)、形状判定部353は、ステップS325に処理を進める。ステップS325に移行して時点で、処理対象の赤色オブジェクトを構成する全ての赤色オブジェクト画素に対応する枠領域FLについて、交差数Mvが算出されている。以下では、交差数Mvが「A(Aは自然数)」である枠領域FLに対応する赤色オブジェクト画素を、単に、交差数Mvが「A」の赤色オブジェクト画素と言う。また、赤色オブジェクト画素に対応する枠領域FLと赤色オブジェクトとの交差数Mvが「A」であることを、単に、赤色オブジェクト画素の交差数Mvが「A」である、と言う。
ステップS325では、全ての赤色オブジェクト画素に対する、交差数Mvが2である赤色オブジェクト画素の割合RT2を算出する。交差数Mvが2である赤色オブジェクト画素を、第1の特定画素とも呼ぶ。ステップS330では、形状判定部353は、割合RT2が、基準値THa以上であるか否かを判断する。形状判定部353は、割合RT2が、基準値THa以上である場合には(ステップS330:YES)、赤色オブジェクトは、囲み形状であると判定する(ステップS370)。赤色オブジェクトが囲み形状である場合は、図8(A)に示す枠領域FL2のように、大部分の赤色オブジェクト画素(注目画素)の交差数Mvが2個になると考えられる。例外的に、図8(A)に示す枠領域FL1のように、一筆書きされた囲み線の端部近傍の赤色オブジェクト画素の交差数Mvは、2個にならない場合がある。また、ノイズなどによって、一部の赤色オブジェクト画素の交差数Mvが2にならない可能性がある。このような事情を考慮して、基準値THaを適切に規定することによって、赤色オブジェクトが囲み形状であるか否かを適切に判定することができる。本実施例では、THaは、0.85に設定されている。
図9を参照してさらに説明する。図9(A)には、赤色オブジェクトが、文字63A(図3(B))である例を示している。図9(A)に示す枠領域FL4は、交差数Mvが3である例を示しているが、赤色オブジェクトは、枠配置矩形内において、3つに分岐した形状を有していることが解る。また、図9(A)に示す枠領域FL5のように、文字の端部近傍の赤色オブジェクト画素は、交差数Mvが1になる可能性が高い。このように、赤色オブジェクトが文字である場合には、3つ以上に分岐した部分や、3個以上の端部を有する場合が多いので、交差数Mvが2ではない赤色オブジェクト画素の割合が、赤色オブジェクトが囲み形状である場合と比較して高くなる。赤色の文字は、単色判定処理(図5:ステップS210)において、単色であると判定され、縦方向判定処理(図5:ステップS235)や横方向判定処理(図5:ステップS240)において、線であると判定される可能性が比較的高い。しかしながら、形状判定処理では、赤色の文字は、囲み形状ではないと判断される。したがって、形状判定処理では、割合RT2を用いて判断することによって、囲み線でない赤色オブジェクト(例えば、文字)は囲み形状ではないと判断し、囲み線である赤色オブジェクトは囲み形状であると、適切に判断することができる。
ここで、図8(C)の式に示すように、枠領域FLの幅FWは、解像度RSが大きいほど大きく、赤色オブジェクトの線幅LWが大きいほど大きく、オブジェクトサイズOBSが大きいほど大きく、設定されている。この理由を説明する。枠領域FLの幅FWが、線幅LWに対して過度に小さい場合には、例えば、極端な例では、枠領域FLの枠配置矩形内の全体が、赤色オブジェクト画素で埋まり、分岐の数を示す交差数Mvを適切に算出できない可能性がある。また、枠領域FLの幅FWが、オブジェクトサイズOBSや線幅LWに対して過度に大きい場合には、枠領域FLの枠配置矩形内に、1個の赤色オブジェクトの互いに離れた複数の部分が配置される可能性が高くなる。例えば、枠領域FLの枠配置矩形内に、複数の線が配置される可能性が比較的高くなる。この結果、注目画素NPを通る1個の部分の分岐の数を示す交差数Mvを適切に算出できない可能性がある。なお、解像度RSが高いほど、1画素に対応する原稿上の寸法(例えば、300dpiである場合には、(1/300)インチ)が小さくなるので、画素数で示される枠領域FLの幅FWの値は、解像度RSが高いほど大きくされる。この結果、原稿上において想定される囲み線のサイズに応じた適切な枠領域FLの幅FW(画素数)を決定することができる。
形状判定部353は、交差数Mvが2である赤色オブジェクト画素の割合RT2が、基準値THa未満である場合には(ステップS330:NO)、ステップS340に処理を進める。ここで、交差数Mvが2である赤色オブジェクト画素の割合RT2が、基準値THa未満である場合に、直ちに、赤色オブジェクトは、囲み形状でないと判定しない。これは、交差数Mvが2である赤色オブジェクト画素の割合RT2が、比較的少ない場合であっても、所定の条件を満たす場合には、赤色オブジェクトが囲み線である可能性があるからである。
例えば、図8(A)に示す囲み線66Aでは、上述したように、交差数Mvが1である赤色オブジェクト画素が、一筆書きの囲み線66Aの開始端と、終了端の近傍に存在している。具体的には、一筆書きの囲み線の両端(開始端と終了端)が、完全に一致していない場合、例えば、両端が離れている場合(図8(A))、両端の一方の端部が、囲み線の他方の端部とは異なる位置に接している場合(図9(B))、両端の近傍で、囲み線が交差している場合(図9(C))には、交差数Mvが1である赤色オブジェクト画素が存在し得る。
また、図9(B)に示すように、両端の一方の端部が、囲み線の他方の端部とは異なる位置に接している囲み線66Bでは、交差数Mvが3である赤色オブジェクト画素(図9(B)の枠領域FL7参照)が存在し得る。さらに、図9(C)に示すように、両端の近傍で交差している囲み線66Cでは、交差数Mvが4である赤色オブジェクト画素(図9(B)の枠領域FL9参照)が存在し得る。さらに、ノイズの影響がある場合を除いて、赤色オブジェクトが、一筆書きの囲み線である場合には、交差数Mvが5以上である赤色オブジェクト画素は、存在しない。ここで、交差数Mvが、「1、3、4」のうちのいずれかである赤色オブジェクト画素を、第2の特定画素とも呼ぶ。また、交差数Mvが、「5」以上である赤色オブジェクト画素を、第3の特定画素とも呼ぶ。以上の説明から解るように、第1の特定画素の割合RT2が基準値THa未満であっても、第2の特定画素や第3の特定画素の分布状況が、上記の囲み線の特徴を備えていれば、赤色オブジェクトが囲み線である可能性は比較的高いと言うことができる。このことを考慮して、ステップS340以降の処理が実行される。
ステップS340では、形状判定部353は、全ての赤色オブジェクト画素に対する、交差数Mvが5以上である赤色オブジェクト画素(第3の特定画素)の割合RT5を算出する。ステップS350では、形状判定部353は、第3の特定画素の割合RT5が、基準値THb以下であるか否かを判断する。形状判定部353は、第3の特定画素の割合RT5が、基準値THbより大きい場合には(ステップS350:NO)、赤色オブジェクトは、囲み形状でないと判定する(ステップS375)。上述したように、赤色オブジェクトが、一筆書きの囲み線である場合には、第3の特定画素は、ノイズなどの例外的な要因で第3の特定画素であると判断される場合を除いて、基本的に存在しないからである。基準値THbは、例えば、赤色オブジェクトが囲み線である場合に、ノイズによって発生し得る第3の特定画素の個数の上限値より僅かに大きな値に設定される。具体的には、本実施例では、基準値THbは、0.1に設定されている。形状判定処理では、割合RT5を用いて判断することによって、囲み線でない赤色オブジェクトを、判定対象から適切に除外することができる。
第3の特定画素の割合RT5が、基準値THb以下である場合には(ステップS350:YES)、形状判定部353は、後述する判定に用いる特定領域ESを設定する(ステップS355)。図10は、特定領域ESを用いる判定について説明する図である。形状判定部353は、交差数Mvが、「1、3、4」のうちのいずれかである複数個の赤色オブジェクト画素(第2の特定画素)の位置(座標)に基づいて、複数個の第2の特定画素の重心GCを算出する。上述したように、赤色オブジェクトが囲み線である場合には、第2の特定画素は、一筆書きの囲み線の両端の近傍に集中して存在する(図8(A)、図9(B)(C))。したがって、図10(A)に示すように、赤色オブジェクトが囲み線である場合には、重心GCは、一筆書きの囲み線の両端の近傍に位置する。
形状判定部353は、重心GCを中心として、正方形の特定領域ESを設定する。特定領域ESのX方向およびY方向の幅(画素数)EWは、図10(B)に示す式で表される。この式から解るように、特定領域ESの幅EWは、枠領域FLの幅FW(図8(C))と同様に、スキャン画像60の読み取り解像度RSと、赤色オブジェクトの線幅LWと、画素)と、赤色オブジェクトのサイズOBSと、に応じて決定される。
続くステップS360では、形状判定部353は、全ての第2の特定画素に対する、特定領域ES内に位置する第2の特定画素の割合RTCを算出する。ステップS365では、形状判定部353は、第2の特定画素の割合RTCが、基準値THc以上であるか否かを判断する。形状判定部353は、第2の特定画素の割合RTCが、基準値THcより小さい場合には(ステップS365:NO)、赤色オブジェクトは、囲み形状でないと判定する(ステップS375)。上述したように、赤色オブジェクトが、一筆書きの囲み線である場合には、第2の特定画素は、赤色オブジェクトの一部分に集中する、すなわち、一筆書きの囲み線の両端近傍(すなわち、特定領域ES内)に集中する。一方、文字を構成する線の端部は、文字内の複数の箇所に分散して存在する。例えば、文字「Y」(図9(A)参照)の端部は、文字「Y」の下側の中央部分に1箇所、文字の右上部分と左上部分にそれぞれ1箇所ずつ存在する。また、文字を構成する線は、文字内で様々な数に分岐し得る。例えば、文字「Y」(図9(A)参照)は、中央部分で3つに分岐している。したがって、赤色オブジェクトが文字である場合には、第2の特定画素は、赤色オブジェクトの一部分に集中することなく、分散する可能性が高い。形状判定処理では、割合RTCを用いて判断することによって、囲み線でない赤色オブジェクト(例えば、文字)は囲み形状ではないと判断し、囲み線を示す赤色オブジェクトは囲み形状であると、適切に判断することができる。基準値THcは、例えば、実験的に設定される設計値であり、本実施例では、0.5に設定されている。
第2の特定画素の割合RTcが、基準値THc以上である場合には(ステップS365:YES)、形状判定部353は、赤色オブジェクトは、囲み形状であると判定する(ステップS370)。
ここで、図10(B)の式に示すように、特定領域ESの幅EWは、枠領域FLの幅FW(図8(C))と同様に、解像度RSが大きいほど大きく、赤色オブジェクトの線幅LWが大きいほど大きく、オブジェクトサイズOBSが大きいほど大きく、設定されている。特定領域ESの幅EWが、オブジェクトサイズOBSに対して過度に大きい場合には、第2の特定画素が比較的広い範囲に広がって分布している場合であっても、割合RTCが基準値THc以上になる可能性がある。また、特定領域ESの幅EWが、オブジェクトサイズOBSに対して過度に小さい場合には、第2の特定画素が比較的狭い範囲に集中している場合であっても、割合RTCが基準値THc未満になる可能性がある。このため、特定領域ESは、オブジェクトサイズOBSに対して適切なサイズに設定されることが好ましい。赤色オブジェクトの線幅LWは、オブジェクトのサイズと相関があり、赤色オブジェクトが囲み線である場合に、オブジェクトのサイズが大きいほど、線幅LWが太くなる可能性が高いと考えられる。また、解像度RSが高いほど、1画素に対応する原稿上の寸法(例えば、300dpiである場合には、(1/300)インチ)が小さくなるので、画素数で示される特定領域ESの幅EWの値は、解像度RSが高いほど大きくされる。この結果、原稿上において想定される囲み線のサイズに応じた適切な特定領域ESの幅FW(画素数)を決定することができる。
ステップS370またはステップS375において、処理対象の赤色オブジェクトが囲み形状であるか否かが判定されると、形状判定処理は終了される。以上説明した形状判定処理において、処理対象の赤色オブジェクトが囲み形状であると判定するための条件は、以下の3つである。
(1)第1の特定画素の割合RT2が基準値THa以上であること(ステップS330)
(2)第3の特定画素の割合RT5が基準値THb未満であること(ステップS350)
(3)第2の特定画素の割合RTCが基準値THc以上であること(ステップS365)
上記実施例では、条件(1)が満たされる場合には、他の条件とは無関係に、赤色オブジェクトは囲み形状である、と判定される。また、条件(2)と条件(3)は、両方が満たされる場合に限り、条件(1)が満たされない場合であっても、赤色オブジェクトは囲み形状であると、判定される。このような条件(1)〜(3)の使い方は一例であり、これに限られない。例えば、基準値THa、THb、THcを大きめに設定するか小さめに設定するかなどに応じて、これらの条件(1)〜(3)の使い方は、変化し得る。例えば、条件(1)と条件(2)が満たされる場合と、条件(1)と条件(3)が満たされる場合と、の2つの場合には、赤色オブジェクトは囲み形状である、と判定され、それ以外の場合には、赤色オブジェクトは囲み形状でない、と判定されても良い。また、条件(1)〜(3)の全部が満たされる場合のみに、赤色オブジェクトは囲み形状である、と判定されても良い。また、条件(2)および(3)の一方または両方は、判定されなくても良い。例えば、条件(1)が満たされたと、条件(2)および条件(3)の少なくとも一方が満たされた場合に、赤色オブジェクトは囲み形状であると判定され、これ以外の場合に、赤色オブジェクトは囲み形状でないと判定されても良い。
図5に戻って説明を続ける。ステップS250では、属性判断部360は、直前に実行された判定処理の判定条件が満たされたか否かを判断する。すなわち、直前に実行された判定処理が縦方向線判定処理(ステップS235)または横方向線判定処理(ステップS240)である場合には、当該判定処理において線であると判定されたか否かが判断される。また、直前に実行された判定処理が形状判定処理(ステップS245)である場合には、当該判定処理において囲み形状であると判定されたか否かが判断される。
直前に実行された判定処理の判定条件が満たされた場合には(ステップS250:YES)、属性判断部360は、全ての判定処理が実行されたか否か、すなわち、縦方向線判定処理(ステップS235)と横方向線判定処理(ステップS240)と形状判定処理(ステップS245)とが全て実行されたか否か、を判断する(ステップS255)。実行されていない判定処理がある場合には(ステップS255:NO)、属性判断部360は、ステップS230に戻る。この結果、実行されていない判定処理のうち、実行順序が次の判定処理が実行される。なお、次にどの判定処理が実行されるかは、後述する処理順序決定処理にて決定される。全ての判定処理が実行された場合には(ステップS255:YES)、属性判断部360は、処理対象の赤色オブジェクトは、囲み線であると判断する(ステップS260)。
一方、直前に実行された判定処理の判定条件が満たされない場合には(ステップS250:NO)、属性判断部360は、処理対象の赤色オブジェクトは、囲み線でないと判断する(ステップS265)。
ステップS270では、画像処理部300は、全ての赤色オブジェクトが選択済みであるか否かを判断する。未選択の赤色オブジェクトがある場合には(ステップS270:NO)、画像処理部300は、ステップS205に戻って、未選択の赤色オブジェクトを選択して、上述したステップS205〜S265までの処理を繰り返す。全ての赤色オブジェクトが選択された場合には(ステップS270:YES)、画像処理部300は、オブジェクト判定処理を終了する。
以上の説明から解るように、処理対象の赤色オブジェクトが単色であると判定された場合(ステップS215:NO)には、以下の3つの判定条件(A)〜(C)がそれぞれ判断される。当該3つの判定条件が全て満たされた場合には、赤色オブジェクトは、囲み線であると判断される。以下の3つの条件(A)〜(C)のうち、少なくとも1つの判定条件が満たされない場合には、赤色オブジェクトは、囲み線でないと判断される。
(A)縦方向線判定処理(ステップS235)で線であると判定されること
(B)横方向線判定処理(ステップS240)で線であると判定されること
(C)形状判定処理(ステップS245)で囲み線であると判定されること
この説明から解るように、本実施例では、赤色オブジェクトが囲み線であると判定される場合には、3つの判定処理(解析処理)が実行されるが、赤色オブジェクトが囲み線でないと判定される場合には、3つの判定処理の全てが実行されない場合がある。すなわち、3つの判定処理のうち、先行して実行される判定処理(例えば、第1の解析処理としての線判定処理)において判定条件が満たされない場合には、解析処理部350は、残りの判定処理(例えば、第2の解析処理としての形状判定処理)を実行せず、属性判断部360は、先行して実行された判定処理の処理結果に基づいて、赤色オブジェクトは囲み線でないと判断する。
ここで、本実施例では、ステップS220の処理順序決定処理において、3つの判定処理の処理順序を適切に決定することによって、オブジェクト判定処理の処理時間の低減を図っている。以下、処理順序決定処理の詳細を説明する。
図11は、処理順序決定処理のフローチャートである。図6(A)、図8(A)に示すように、二値画像60A内の囲み線66A(図3(B))が処理対象の赤色オブジェクトである場合を例に説明する。ステップS221では、処理時間判断部330は、処理対象の赤色オブジェクトに外接する矩形領域SI1の内部に含まれる画素数(H×W)を算出する。Hは、矩形領域SI1の縦方向(Y方向)の画素数を表している。Wは、矩形領域SI1の横方向(X方向)の画素数を表している。
ステップS222では、処理時間判断部330は、処理対象の赤色オブジェクトを構成する赤色オブジェクト画素の個数Sを算出する。図6(A)、図8(A)の例では、囲み線66Aを構成する画素(黒色の部分の画素)の個数が、赤色オブジェクト画素の個数Sとして算出される。
ステップS223では、処理時間判断部330は、形状判定処理で用いられる枠領域FL(図8(B))の画素数Mを算出する。図8(B)を参照して説明したように、枠領域FL内に含まれる画素数Mは、枠領域FLのX方向およびY方向の幅(画素数)FWに基づいて、M={(FW×4)−4}の式によって算出される。
図11において破線で示すステップS224は、実施例では実行されない。ステップSS224については、変形例として後述する。
ステップS225では、処理時間判断部330は、線判定処理の処理時間は、形状判定処理の処理時間未満であるか否かを判断する。本ステップの判断において、線判定処理の処理時間を評価する評価値には、ステップS221にて算出された矩形領域SI1内の画素数(H×W)が用いられる。上述したように、線判定処理(横方向線判定処理と縦方向線判定処理)は、矩形領域SI1内の全ての画素を処理対象として実行される処理である。したがって、線判定処理の処理時間は、矩形領域SI1内の画素数(H×W)に概ね比例すると考えられる。また、形状判定処理の処理時間を評価する評価値には、ステップS222にて算出された赤色オブジェクト画素の個数Sと、ステップS223にて算出された枠領域FLの画素数Mと、の積(S×M)が用いられる。上述したように、形状判定処理は、S個の赤色オブジェクト画素のそれぞれに枠領域FLを設定し、S個の枠領域FLのそれぞれのM個の画素を処理対象とする処理である。したがって、形状判定処理の処理時間は、赤色オブジェクト画素の個数Sと、枠領域FLの画素数Mと、の積(S×M)に概ね比例すると考えられる。
処理時間判断部330は、(H×W)の値が、(S×M)の値未満である場合には、線判定処理の処理時間は、形状判定処理の処理時間未満であると判断する。処理時間判断部330は、(H×W)の値が、(S×M)の値以上である場合には、線判定処理の処理時間は、形状判定処理の処理時間以上であると判断する。
線判定処理の処理時間が、形状判定処理の処理時間未満であると判断される場合には(ステップS225:YES)、処理時間判断部330は、線判定処理を先行処理に決定する(ステップS226)。すなわち、形状判定処理に先行して、線判定処理を実行するように処理順序が決定される。また、処理時間判断部330は、線判定処理の処理時間が、形状判定処理の処理時間以上であると判断される場合には(ステップS225:NO)、処理時間判断部330は、形状処理を先行処理に決定する(ステップS227)。すなわち、線判定処理に先行して、形状判定処理を実行するように処理順序が決定される。
以上説明した処理順序決定処理によれば、判定処理(解析処理)の処理時間に応じて、線判定処理と、形状判定処理、のうち、処理時間が短いと判断される処理が先行して実行される。したがって、先行して実行された判定処理が判定条件を満たさない場合には、処理時間が長い判定処理を実行することなく、赤色オブジェクトは囲み線でないと判断される。例えば、線判定処理が先行して実行された結果、赤色オブジェクトが線でないと判定された場合には、赤色オブジェクトは、形状判定処理とは無関係に囲み線でないと判断される。逆に、形状判定処理が先行して実行された結果、赤色オブジェクトが囲み形状でないと判定された場合には、赤色オブジェクトは、線判定処理とは無関係に囲み線でないと判断される。この結果、線判定処理と形状判定処理のうち、処理時間が長い処理が実行されることなく、赤色オブジェクトが囲み線であるか否かを判断できる可能性が高くなる。したがって、赤色オブジェクトが囲み線であるか否かを判断するための解析処理の処理時間を低減することができる。
さらに、処理時間判断部330は、線判定処理の処理対象である画素の個数に応じた第1の値を用いて、線判定処理の処理時間を判断し、形状判定処理の処理対象である画素の個数に応じた第2の値を用いて、形状判定処理の処理時間を判断する。この結果、線判定処理の処理時間と、形状判定処理の処理時間と、を適切に判断することができる。
より具体的には、線判定処理は、赤色オブジェクトを含む矩形領域内の複数個の画素に対する処理を含むので、第1の値には、矩形領域内の画素の個数に応じた値(H×W)が用いられる。また、形状判定処理は、赤色オブジェクトを構成する複数個の画素に対する処理を含むので、第2の値には、オブジェクトを構成する画素の個数に応じた値(S×M)が用いられる。この結果、線判定処理と、形状判定処理との、それぞれの処理内容に応じて、第1の解析処理と第2の処理時間を適切に判断できる。
例えば、図6(A)に示す囲み線66Aのような線状のオブジェクトが赤色オブジェクトである場合と、図6(B)に示す描画の部分オブジェクト68Aのような線状でないオブジェクトが赤色オブジェクトである場合と、を比較する。線状のオブジェクトは、図6(A)の例のように、外接する矩形領域の画素数(H×W)と比較して、オブジェクト領域の画素数Sが大幅に少ない場合がある((H×W)>>S)。この場合には、(H×W)>(S×M)が成立するので、形状判定処理の処理時間が、線判定処理の処理時間より短くなると判断される。一方、図6(B)に示す描画の部分オブジェクト68Aのような線状でないオブジェクトは、外接する矩形領域の画素数(H×W)と、オブジェクト領域の画素数Sと、の差が、比較的小さい場合がある。図6(B)の例では、外接する矩形領域SI1のほとんどがオブジェクト画素で占められているので、矩形領域の画素数(H×W)と、オブジェクト領域の画素数Sと、の差が、比較的小さいことが解る。この場合には、(H×W)<(S×M)が成立するので、形状判定処理の処理時間が、線判定処理の処理時間より短くなると判断される。
図2に戻って説明を続ける。オブジェクト判定処理が終了すると、続くステップS150(図2)では、特定された囲み線(囲み線であると判定された赤色オブジェクト)の中から、1個の囲み線を処理対象として選択する。図3の例では、1個の囲み線66A(図3(B))のみが特定されているので、当該囲み線66Aが選択される。
ステップS155では、画像処理部300の除去処理部370は、除去対象のオブジェクトを含む部分画像データを生成する。具体的には、除去処理部370は、二値画像60Aにおいて、処理対象の囲み線66に外接する外接矩形OS1(図3(B))を特定する。除去処理部370は、当該外接矩形OS1に対応する部分画像PSI(図3(A))を、スキャン画像60から切り出すことによって、部分画像PSIを表す部分画像データを生成する。
図12は、部分画像PSIの一例(図12(A))と、部分二値画像PBIの一例(図12(B))を示す図である。図12に示すように、部分画像PSIは、囲み線66と、描画65を、オブジェクトとして含んでいる。
ステップS160では、除去処理部370は、部分画像PSI内のオブジェクトを特定するために、部分画像データに対して二値化処理を実行して、部分二値画像データを生成する。具体的には、部分画像データは、背景を構成する背景画素と、オブジェクトを構成するオブジェクト画素と、に二値化される。例えば、除去処理部370は、例えば、囲み線66A(図3(B))の近傍に位置する複数個の画素、例えば、囲み線66Aの外側に位置する複数個の画素であって、囲み線66Aに沿って配置された複数個の画素の値の平均値(Rave2、Gave2、Bave2)を、二値化のための基準の色として算出する。あるいは、除去処理部370は、スキャン画像60において、部分画像PSIの外側に位置する画素であって、部分画像PSIの外縁に沿って配置された複数個の画素の値の平均値(Rave2、Gave2、Bave2)を、二値化のための基準の色として算出する。そして、除去処理部370は、(Rave2−ΔV2)≦R≦(Rave2+ΔV2)、かつ、(Gave2−ΔV2)≦G≦(Gave2+ΔV2)、かつ、(Bave2−ΔV2)≦B≦(Bave2+ΔV2)を満たす画素値(RGB値)を有する画素を背景画素に分類し、背景画素と決定すべき画素以外の画素をオブジェクト画素に分類する。除去処理部370は、部分画像PSIに含まれる全ての画素を、背景画素とオブジェクト画素とのいずれかに分類することによって、部分二値画像データを生成する。
ステップS165では、除去処理部370は、生成された部分二値画像データを用いて、オブジェクトを特定して、特定されたオブジェクトに識別子を付すラベリングを実行する。ラベリングの結果、例えば、オブジェクトと、識別子とを、対応付けたラベルデータが生成される。
具体的には、除去処理部370は、連続する(互いに隣接する)1個以上のオブジェクト画素で構成される1個の領域を、1個のオブジェクトとして特定する。図12(B)の例では、部分二値画像PBIにおいて、オブジェクト画素によって構成されるオブジェクトとして、囲み線66Dと、描画65Dと、が特定され、これらのオブジェクトのそれぞれに、互いに異なる識別子が付される。なお、部分二値画像PBI内に特定されるオブジェクトには、ステップS150で選択された処理対象の囲み線が含まれる。囲み線を表すオブジェクトには、例えば、囲み線であることが認識できるように、他のオブジェクトとは異なる特別な識別子が付される。
オブジェクトが特定されると、続くステップS170では、除去処理部370は、部分二値画像PBIに含まれる囲み線以外のオブジェクトが、囲み線に内包されているか否かを判定する内包関係判定処理を実行する。
図13は、内包関係判定処理のフローチャートである。ステップS405では、除去処理部370は、部分二値画像PBI内に特定されたオブジェクトの中から囲み線以外のオブジェクトを処理対象として選択する。図12(B)の例では、描画65Dが、処理対象のオブジェクトとして選択される。
ステップS410では、除去処理部370は、図12(B)に示すように、4本の判定線A1〜A4を設定する。4本の判定線A1〜A4は、処理対象のオブジェクト(具体的には、描画65D)の重心CCを基点として、上方向(−Y方向)、下方向(+Y方向)、左方向(−X方向)、右方向(+X方向)にそれぞれ延びる半直線である。
ステップS415では、除去処理部370は、4本の判定線A1〜A4のそれぞれと、囲み線66Dと、の交点の個数(交点数Mx)を、判定線ごとに特定する。具体的には、除去処理部370は、部分二値画像PBIにおいて、処理対象の判定線上の画素を、基点(重心CC)から外側に向かって順次に走査する。そして、除去処理部370は、判定線上に検出された交点の数をカウントする。例えば、図12(B)の例では、4本の判定線A1〜A4のそれぞれと、囲み線66Dとは、1個ずつ交点CP1〜CP4を有することが解る。
ステップS420では、除去処理部370は、交点数Mxが奇数であるか否かを判定線ごとに判断し、4本の判定線A1〜A4のうち、交点数Mxが奇数である判定線(以下、奇数判定線と呼ぶ)の数LInを特定する。図12(B)の例では、4本の判定線A1〜A4の交点数Mxは、全て「1」であるので、奇数判定線LInの数は「4」である。
ステップS425では、除去処理部370は、奇数判定線の数LInが3以上であるか否かを判断する。奇数判定線の数LInが3以上である場合には(ステップS425:YES)、除去処理部370は、処理対象のオブジェクトは、囲み線66Dに内包されていると判定する(ステップS430)。奇数判定線の数LInが3未満である場合には(ステップS425:NO)、除去処理部370は、処理対象のオブジェクトは、囲み線66Dに内包されていないと判定する(ステップS435)。
囲み線66Dが閉曲線であり、判定線の終点(部分二値画像PBIの画像の端)は、閉曲線の外側にあると仮定する。判定線の基点から終点に向かって走査する場合に、囲み線66Dとの交点を通過する度に、判定線上の注目点(走査位置)の内外関係が変化する。内外関係が変化するとは、注目点の位置が、囲み線の内側から外側に変化する、あるいは、囲み線の外側から内側に変化することを意味する。したがって、判定線の基点が囲み線の内側に位置する場合には、判定線の基点から終点までの間の交点数Mxは、終点が必ず囲み線の外側に位置することを考慮すると、奇数になることが解る。
逆に、判定線の基点が囲み線の外側に位置する場合には、判定線の基点から終点までの間の交点数Mxは、偶数になることが解る。例えば、仮に、囲み線66Dの外側に位置するサンプル点SP1(図12(B))から上下左右方向にそれぞれ延びる4本の判定線A5〜A8を考える。2本の判定線A5、A7は、それぞれ囲み線66Dとの間に、2個の交点を有する(図12(B)のCP5〜CP8)。一方、他の2本の判定線A6、A8は、いずれも囲み線66Dとの間に交点を有さない(0個の交点を有する)。このように、囲み線66Dの外側に位置するサンプル点SP1を基点とする判定線の基点から終点までの間の交点数Mxは、偶数(この例では、0または2)である。
このように、処理対象のオブジェクト上を基点とする判定線を設定すれば、判定線と囲み線との交点数Mxに基づいて、処理対象のオブジェクトが、囲み線に内包されている(囲み線の内側にある)か否かを、判定することができる。ここで、4本の判定線A1〜A4を設定し、交点数Mxが奇数である判定線が3以上である場合に、処理対象のオブジェクトが囲み線に内包されていると判断している理由を説明する。これは、例外的に、処理対象のオブジェクトが囲み線に内包されている場合でも、交点数Mxが偶数になる場合があり得るからである。例えば、囲み線66Dは、手書きで記入されることを想定しているので、図12(B)に示すように、一筆書きの両端部の近傍に隙間BTが生じる場合がある。仮に、図12(B)の下方向の判定線A2が、隙間BTを通ると、判定線A2の交点数Mxは、0(偶数)になってしまうことが解る。このような場合に、例えば、1本の判定線に基づいて判定を行うとすれば、誤った判定結果となり得ることは明らかである。本実施例では、4本の判定線のうちの奇数判定線の数LInが、3個以上であるか否かに基づいているので、例外的に、1個の判定線の交点数Mxが偶数になった場合であっても適切に内包関係を判定することができる。
ステップS440では、除去処理部370は、囲み線以外の全てのオブジェクトが処理対象として選択済みであるか否かを判断する。未選択のオブジェクトがある場合には(ステップS440:NO)、除去処理部370は、ステップS405に戻って、未選択のオブジェクトを選択して、上述したステップS405〜S440までの処理を繰り返す。全てのオブジェクトが選択された場合には(ステップS440:YES)、除去処理部370は、内包関係判定処理を終了する。
内包関係判定処理が終了すると、続くステップS175(図2)では、除去処理部370は、囲み線66と、囲み線66に内包されていると判定されたオブジェクトとを、スキャン画像60(図3(A))から除去するオブジェクト除去処理を実行する。除去処理部370は、部分二値画像PBI(図12(B))に基づいて、スキャン画像60上において、囲み線66と、囲み線66に内包されているオブジェクト(描画65)と、を構成する複数個の画素を特定する。除去処理部370は、特定された複数個の画素の画素値を、スキャン画像60の背景の色を表す画素値に変更する。背景の色を表す画素値は、例えば、原稿の用紙の色(白)を表す画素値であり、ステップS160(図2)にて算出された二値化のための基準の色を表す画素値(Rave2、Gave2、Bave2)が用いられる。これによって、スキャン画像60から、囲み線66と描画65とが除去された処理済み画像60C(図3(C))を表す処理済みの画像データが生成される。
ステップS180では、画像処理部300は、全ての囲み線が選択済みであるか否かを判断する。未選択の囲み線がある場合には(ステップS180:NO)、画像処理部300は、ステップS150に戻って、未選択の囲み線を選択して、上述したステップS150〜S180までの処理を繰り返す。全ての囲み線が選択された場合には(ステップS180:YES)、画像処理部300は、処理済みの画像データを、スキャンデータ(対象画像データ)の送信元である複合機200に対して送信して(ステップS185)、処理を終了する。
複合機200の画像データ送受信部115は、サーバ400から処理済みの画像データを受信すると、例えば、当該画像データを、不揮発性記憶装置230に格納して処理を終了する。この処理済みの画像データは、例えば、プリンタ部240を用いて、処理済みの画像データによって表される画像を用紙に印刷するために用いられる。
以上説明した本実施例の画像処理によれば、利用者は、所望のオブジェクトを赤色のペンで記入した囲み線で囲んだ原稿を、複合機200のスキャナ部250に読み取らせることによって、原稿から所望のオブジェクトが除去された画像を表す画像データを取得することができる。なお、囲み線は、除去すべきオブジェクトの指定以外にも用いられ得る。例えば、画像処理部300は、オブジェクト除去処理(ステップS175)に代えて、囲み線で囲まれたオブジェクトを表す画像だけを含み、囲み線で囲まれていないオブジェクトを除去した画像を表す画像データを生成する処理を実行しても良い。一般的に言えば、囲み線によって囲まれたオブジェクトを特定し、特定されたオブジェクトを含む部分画像を表す部分画像データを用いて、所定の画像処理を実行するために、囲み線は用いられ得る。
さらに、本実施例のオブジェクト判定処理によれば、オブジェクトを構成する複数個の特定画素(具体的には赤色オブジェクト画素)のそれぞれに設定される枠領域FL(図8)に基づいて、赤色オブジェクトが囲み線であるか否かを判定する。この結果、オブジェクトの分岐の状態を枠領域FLとの交差数Mvに基づいて、赤色オブジェクトの形状を適切に解析して、赤色オブジェクトが囲み線であるか否かを適切に判定することができる。
より具体的には、複数個の特定画素のうち、交差数Mvが2個である枠領域FL(2個のオブジェクト部分領域を含む枠領域FL)に対応する第1の特定画素の割合RT2を用いて、赤色オブジェクトが囲み線であるか否かを判定する(図7:ステップS325)。この結果、赤色オブジェクトが囲み線であるか否かを適切に判定することができる。
さらに、形状判定部353は、交差数MvがM個(Mは、1、3、4のうちのいずれかの整数)である枠領域FLに対応する複数個の第2の特定画素のうち、特定領域ES(図10)に含まれる第2の特定画素の割合RTCを用いて、赤色オブジェクトが囲み線であるか否かを判定する(図7:ステップS365)。この結果、赤色オブジェクトが囲み線であるか否かを、さらに、精度良く判定することができる。
さらに、形状判定部353は、交差数Mvが5個以上である枠領域FLに対応する第3の特定画素の割合RT5を用いて、赤色オブジェクトが囲み線であるか否かを判定する(図7:ステップS340)。この結果、赤色オブジェクトが囲み線であるか否かを、さらに、精度良く判定することができる。
また、線判定部352は、赤色オブジェクトに外接する矩形領域の2つの方向(X方向とY方向)に延びる複数の直線上において、赤色オブジェクト画素の分布を解析する処理を含む線判定処理(図5のステップS235、ステップS240)を実行する。この結果、複数方向における赤色オブジェクト画素の分布に基づいて、オブジェクトが線であるか否かを適切に判断することができる。
なお、線判定処理は、1つの方向における赤色オブジェクト画素の分布を解析する処理のみを含んでも良い。すなわち、縦方向線判定処理と横方向線判定処理とのうちの一方の処理だけが実行されても良い。この場合には、比較的短時間でオブジェクトが線であるか否かを判断することができる。
B.変形例
(1)上記実施例の処理順序決定処理では、処理対象の画素数を単純に比較することによって、処理時間の比較を行っているが、これに加えて、処理対象の画素毎に繰り返される単位処理の処理負荷を考慮しても良い。具体的には、図11のフローチャートにて破線で示すステップS224において、処理時間判断部330は、線判定処理の単位処理の処理負荷に応じた係数C1と、形状判定処理の単位処理の処理負荷に応じた係数C2と、を取得する。係数C1、C2は、処理負荷を相対的に示す値であれば良い。例えば、係数C1、C2は、特定の試験用画像データを用いて測定された処理時間の実測値を、処理対象とする画素数で除した値に基づいて予め決定された値を用いても良い。あるいは、係数C1、C2は、オブジェクト判定処理を行うコンピュータとして想定される特定種のコンピュータにおいて、単位処理を実行した場合に要するクロックのカウント値に基づいて決定されても良い。係数C1、C2は、特定種のコンピュータ用にコンパイルして得られる機械語における単位処理の処理ステップ数に基づいて決定されても良い。
この場合には、線判定処理の処理時間を評価する評価値には、第1実施例における評価値(H×W)と、係数C1と、の積が用いられる。また、形状判定処理の処理時間を評価する評価値には、第1実施例における評価値(S×M)と、係数C2と、の積が用いられる。すなわち、ステップS225(図11)において、処理時間判断部330は、{C1×(H×W)}の値が、{C2×(S×M)}の値未満である場合には、線判定処理の処理時間は、形状判定処理の処理時間未満であると判断する。処理時間判断部330は、{C1×(H×W)}の値が、C2×(S×M)}の値以上である場合には、線判定処理の処理時間は、形状判定処理の処理時間以上であると判断する。本変形例によれば、単位処理の処理負荷に応じて、線判定処理の処理時間と、形状判定処理の第2の解析処理の処理時間と、を精度良く判断することができる。この結果、線判定処理と、形状判定処理と、のいずれの処理を先行して実行すべきであるかを適切に判断することができる。
(2)上記実施例では、第1の解析処理の例として線判定処理を挙げ、第2の解析処理の例として形状判定処理を挙げているが、これに限られない。第1の解析処理と第2の解析処理には、互いに異なる処理であって、画像データを解析して解析結果を得るための任意の処理が用いられ得る。例えば、第1の解析処理は、例えば、画像内の特定のオブジェクトが文字であるか否かを判定する処理であり、第2の解析処理は、画像内の特定のオブジェクトが写真であるか否かを判定する処理であっても良い。この場合には、例えば、第1の解析処理によって、文字であると判定された場合には、第2の解析処理とは無関係に、特定のオブジェクトは文字であると判定される。第2の解析処理によって、写真であると判定された場合には、第1の解析処理とは無関係に、特定のオブジェクトは写真であると判定される。そして、第1の解析処理の処理時間が第2の解析処理の処理時間未満であると判断される場合には、第1の解析処理が第2の解析処理に先行して実行される。この結果、第1の解析処理によって、特定のオブジェクトが文字であると判定された場合には、第2の解析処理は、実行されない。また、第1の解析処理の処理時間が第2の解析処理の処理時間以上であると判断される場合には、第2の解析処理が第1の解析処理に先行して実行される。この結果、第2の解析処理によって、特定のオブジェクトが写真であると判定された場合には、第1の解析処理は、実行されない。この結果、第1の解析処理と第2の解析処理のうち、処理時間が長い解析処理の実行を抑制して、解析処理全体の処理時間を低減することができる。
(3)上記実施例では、線判定処理と、形状判定処理と、の2つの処理の処理時間を比較しているが、3以上の処理の処理時間を比較しても良い。例えば、変形例(2)で例示した特定のオブジェクトが文字であるか否かを判定する処理と、特定のオブジェクトが写真であるか否かを判定する処理と、に加えて、特定のオブジェクトが描画であるか否かを判定する処理と、を実行する場合を例に説明する。この場合には、これらの3つの判定処理の処理時間を互いに比較して、3つの判定処理の処理順序を決定することが好ましい。すなわち、処理時間判断部330は、これらの3つの判定処理の処理時間の評価値をそれぞれ算出し、評価値が小さい順に、すなわち、処理時間が短い順に、3つの判定処理の処理順序を決定することが好ましい。こうすることで、これらの3つの判定処理のうちの1個の処理で、特定のオブジェクトの属性(写真、描画、文字のいずれか)を決定できた場合には、その時点で実行されていない判定処理の有無に拘わらずに、特定のオブジェクトの属性が決定される。
(4)上記実施例の形状判定処理では、判定対象の赤色オブジェクトを構成する全ての赤色オブジェクト画素に対して、枠領域FLが設定されているが、一部の赤色オブジェクト画素に対してのみ、枠領域FLを設定しても良い。具体的には、1個の赤色オブジェクト画素に対して、枠領域FLを設定した場合には、当該1個の赤色オブジェクト画素から所定距離内(例えば、2画素分の距離内)に位置する他の赤色オブジェクト画素は、枠領域FLの設定対象から除去しても良い。あるいは、判定対象の赤色オブジェクトを構成する全ての赤色オブジェクト画素のうち、X座標とY座標の両方が奇数である画素に対して、枠領域FLを設定し、X座標とY座標のうちの少なくとも一方が奇数である画素に対して、枠領域FLを設定しないこととしても良い。この場合には、割合RT2、RTC、RT5には、それぞれ、枠領域FLが設定された赤色オブジェクト画素の個数に対する、第1、第2、第3の特定画素の割合が用いられる。
同様に、上記実施例の線判定処理では、赤色オブジェクトに外接する矩形領域内の全ての画素を処理対象にして平均連続画素数LN1ave、LN2aveを算出している。これに代えて、例えば、矩形領域内の一部の画素のみを処理対象にして、平均連続画素数LN1ave、LN2aveを算出しても良い。例えば、縦方向線判定処理では、矩形領域内の全てのY方向(縦方向)に沿った線のうち、X座標が奇数である線上の画素のみを処理対象としても良い。
このような場合には、処理時間判断部330は、例えば、係数を乗じることによって、処理時間の評価値を調整しても良い。例えば、処理時間判断部330は、形状判定処理の処理時間の評価値(S×M)に、全ての赤色オブジェクト画素の個数に対する、枠領域FLが設定される赤色オブジェクト画素の比率を、係数として乗じても良い。また、処理時間判断部330は、線判定処理の処理時間の評価値(H×W)に、矩形領域内の全ての縦方向の線の数に対する、連続画素数の算出対象となる線の数を、係数として乗じても良い。また、形状判定処理の処理時間の評価値(S×M)に乗じるべき係数と、線判定処理の処理時間の評価値(H×W)に乗じるべき係数と、が同程度である場合には、係数を乗じなくても良い。
(5)なお、上記実施例のオブジェクト判定処理(図5)は、縦方向判定処理(ステップS235)と、横方向判定処理(ステップS240)と、の両方を含んでいる。そして、方向判定処理で、線であると判定されることと、横方向判定処理で、線であると判定されること、の両方が、赤色オブジェクトが囲み線であると判断されるための必要条件とされている。これに代えて、オブジェクト判定処理は、縦方向判定処理と、横方向判定処理との、いずれか一方の処理だけを含み、当該一方の処理で、線であると判定されることが、赤色オブジェクトが囲み線であると判断されるための必要条件とされても良い。
(6)上記実施例のオブジェクト判定処理における線判定処理の処理時間の評価値(H×W)は、縦方向判定処理と、横方向判定処理と、のそれぞれの処理時間の評価値である。これに代えて、線判定処理の処理時間の評価値として、縦方向判定処理と、横方向判定処理と、との処理時間の合計の評価値、すなわち、(H×W)×2が採用されても良い。
(7)上記実施例における枠領域FLのサイズ(幅FW)や、特定領域ESのサイズ(幅EW)は、図8(C)や図10(B)の式を用いて算出されているが、これに代えて、固定値が用いられても良い。また、枠領域FLの形状や特定領域ESの形状は、正方形に限らず、長方形であっても良いし、円形であっても良いし、三角形や五角形などの各種の多角形であっても良い。
(8)なお、本実施例の対象画像データは、スキャナによって読み取られたスキャンデータが採用されているが、例えば、デジタルカメラなどで撮影された撮影画像データであっても良いし、文書や描画などを作成するためのアプリケーションプログラムを用いて生成された画像データであっても良い。また、囲み線は、例えば、ペンを用いて記入された囲み線に限られず、上記アプリケーションプログラムを用いて、画像内に描画された囲み線であっても良い。この場合には、例えば、マウスなどのポインティングデバイスを用いて、フリーハンドで描画された囲み線であっても、当該囲み線を適切に特定することができる。
(9)上記実施例においてサーバ400の画像処理部300によって実行される画像処理は、サーバ400とは異なる装置、例えば、複合機200と接続されたパーソナルコンピュータ500(図1)によって実行されても良い。この場合には、この画像処理は、例えば、複合機200のスキャナ部250や、単体のスキャナ(図示せず)を、制御するためにパーソナルコンピュータ500にインストールされたスキャナドライバキャナによって実行されても良い。また、この画像処理は、複合機200のCPU210や、単体のスキャナのCPUによって実行されても良い。また、サーバ400は、1つの筐体の装置に限らず、複数の計算機を含む計算システム(例えば、いわゆるクラウドコンピューティングを実現する分散型の計算システム)によって構成されていても良い。
(10)上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。