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と、オブジェクトが所定の判定条件を満たす場合に、オブジェクトは囲み線であると判定するための3つの判定部330〜350と、囲み線に囲まれたオブジェクトを除去する処理を実行する除去処理部360と、を備えている。ここで、囲み線は、後述するように、対象画像内の一部の領域、例えば、他のオブジェクトを示す領域や、オブジェクトが含まれない背景領域を囲む線である。例えば、囲み線は、赤色のペンなどにより原稿上に形成され、この原稿を読み取ることによって得られる画像データ(スキャンデータ)によって表される画像上に現れる。
色判定部330は、第1の判定条件として、オブジェクトが単色であるか否かを判定する。線判定部340は、第2の判定条件として、オブジェクトが線であるか否かを判定する。形状判定部350は、第3の判定条件として、オブジェクトが、領域を囲む形状を有しているか否かを判定する。本実施例では、判定対象のオブジェクトが、第1〜第3の判定条件を全て満たす場合に、判定対象のオブジェクトは、囲み線であると判定される。形状判定部350は、枠領域設定部351と、交差数判断部352と、条件判断部353と、を備えている。これらの各機能部が行う具体的な画像処理については、後述する。
複合機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は、オブジェクト判定処理を実行する。オブジェクト判定処理は、特定された複数個の赤色オブジェクト61A〜63A、66A〜68Aのそれぞれが、囲み線であるか否かを、赤色オブジェクトごとに判定する処理である。
図5は、オブジェクト判定処理のフローチャートである。ステップS205では、画像処理部300は、処理対象の赤色オブジェクトを選択する。図3(B)の例では、3個の文字61A〜63Aと、囲み線66Aと、描画67および写真68の一部分である部分オブジェクト67A、68Aの中から、1個の赤色オブジェクトが処理対象として選択される。
ステップS210では、色判定部330は、処理対象の赤色オブジェクトが単色であるか否かを判定する単色判定処理を実行する。具体的には、色判定部330は、赤色オブジェクトの平均成分値(Rave1、Gave1、Bave1)を算出する。平均成分値(Rave1、Gave1、Bave1)は、処理対象の赤色オブジェクトを構成する全ての赤色オブジェクト画素の値の平均値を、色成分ごとに算出することによって得られる。次に、色判定部330は、平均成分値に近い成分値を有する赤色オブジェクト画素の割合(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に設定される。
そして、色判定部330は、成分ごとに算出された割合(RT_R、RT_G、RT_B)がそれぞれ基準値TH1以上である場合、すなわち、RT_R≧TH1、かつ、RT_G≧TH1、かつ、RT_B≧TH1である場合に、処理対象の赤色オブジェクトは単色であると判断する。また、色判定部330は、割合(RT_R、RT_G、RT_B)の少なくとも1つが基準値TH1未満である場合、すなわち、RT_R<TH1、または、RT_G<TH1、または、RT_B<TH1である場合に、処理対象の赤色オブジェクトは単色でないと判断する。基準値TH1は、実験的に設定される設計値であり、例えば、0.6に設定される。囲み線は、薄い赤色のペンで記入される場合もあれば、濃い赤色のペンで記入される場合もあるので、ステップS120(図2)では、薄い赤、濃い赤などを含む比較的広い範囲内の色を有する画素を赤色オブジェクト画素として抽出している。このために、本ステップでは、赤色オブジェクトが単色であるか否かを比較的厳密に判定している。
単色判定処理によって、処理対象の赤色オブジェクトが単色でないと判定された場合には(ステップS215:NO)、画像処理部300は、処理対象の赤色オブジェクトは囲み線ではないと判断する(ステップS245)。1個の囲み線は、記入の途中でペンを代えることなく、一筆書きで記入されるのが一般的であるので、囲み線は単色であると考えられる。例えば、濃い赤色のペンを用いて、記入された囲み線は、濃い赤色の単色であり、薄い赤色のペンを用いて、記入された囲み線は、薄い赤色の単色であると考えられる。このために、本実施例では、単色であることを、赤色オブジェクトが囲み線であると判定するための必要条件として採用している。この結果、赤色オブジェクトが囲み線であるか否かを適切に判定することができる。例えば、図3(B)の囲み線66Aは、単色であると判定される。また、例えば、B3(B)の部分オブジェクト67Aが、薄い赤色や濃い赤色などを含む多数の色を含んでいる場合には、部分オブジェクト67Aは、単色ではないと判定される。
処理対象の赤色オブジェクトが単色であると判定された場合には(ステップS215:YES)、線判定部340は、処理対象の赤色オブジェクトが線であるか否かを判定する線判定処理を実行する(ステップS220)。線判定処理は、赤色オブジェクトを含む処理領域内の所定の方向に延びる複数の直線上において、赤色オブジェクト画素の分布を解析する処理を用いて実行される。
図6は、線判定処理の説明図である。図6(A)に示すように、二値画像60A内の囲み線66A(図3(B))が処理対象の赤色オブジェクトである場合を例に説明する。線判定部340は、囲み線66Aに外接する矩形領域SI1を処理領域として特定する。線判定部340は、矩形領域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)を算出する。
さらに、線判定部340は、矩形領域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)を算出する。
このように、X方向とY方向に延びる複数の直線上において、赤色オブジェクト画素が連続する個数を算出することによって、オブジェクトの幅(線幅LW)を特定するので、オブジェクトの幅を適切に特定することができる。説明から解るように、線判定部340は、幅特定部の例である。
線判定部340は、W本の線L1(p)について算出されたW個の連続画素数LN1(p)と、H個の線L2(q)について算出されたH個の連続画素数LN2(q)と、の全ての平均値を、赤色オブジェクトの平均連続画素数LNaveとして算出する。平均連続画素数LNaveは、赤色オブジェクトが線である場合の線の幅を示している。線判定部340は、平均連続画素数LNaveが基準値TH2以下である場合に、赤色オブジェクトは、線であると判定し、平均連続画素数LNaveが基準値TH2未満である場合に、赤色オブジェクトは、線でないと判定する。基準値TH2は、例えば、想定されるペンの太さの最大値よりわずかに大きな値に設定され、具体的には、600dpiのスキャンデータを対象画像データにする場合に、120程度に設定される。この結果、例えば、図3(B)の囲み線66Aは、線であると判定される。
図6(B)には、二値画像60A内の部分オブジェクト68A(図3(B))が処理対象の赤色オブジェクトである場合を例に説明する。このような赤色オブジェクトが線でない場合には、図6(B)に示すように、Y方向の線L1(p)についての連続画素数Lh3や、X方向の線L2(q)についての連続画素数Lw3は、比較的大きくなる。この結果、部分オブジェクト68Aは、線判定処理において、線ではないと判定される。
線判定処理によって、処理対象の赤色オブジェクトが線でないと判定された場合には(ステップS225:NO)、画像処理部300は、処理対象の赤色オブジェクトは囲み線ではないと判定する(ステップS245)。1個の囲み線は、赤色のペンで一筆書きされた一本の線であることが想定されるので、線であることを、赤色オブジェクトが囲み線であると判定するための必要条件として採用している。この結果、赤色オブジェクトが囲み線であるか否かを適切に判定することができる。
処理対象の赤色オブジェクトが線であると判定された場合には(ステップS225:YES)、形状判定部350は、処理対象の赤色オブジェクトが、スキャン画像60内の一部の領域を囲む囲み形状を有しているか否かを判定する形状判定処理を実行する。
図7は、形状判定処理のフローチャートである。図8は、形状判定処理の第1の説明図である。図9は、形状判定処理の第2の説明図である。ステップS305では、形状判定部350は、赤色オブジェクトを構成する1個の赤色オブジェクト画素を注目画素として選択する。具体的には、形状判定部350は、矩形領域SI1(図8(A))内を、X方向の複数本の線Lxを、Y方向の負方向側から(図8の上方から)順次に走査して、検出される順番に1個ずつ赤色オブジェクト画素を選択する。
ステップS310では、形状判定部350の枠領域設定部351は、選択された注目画素に対応する枠領域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が中心に位置するように、設定される。
続くステップS315では、形状判定部350の交差数判断部352は、枠領域内のオブジェクト部分領域の個数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とオブジェクト部分領域OB2との間の複数個の赤色オブジェクト画素は、枠領域FL内には位置していない。また、枠配置矩形内に位置すると言う場合には、枠領域FL内または枠領域FLの内側の領域に位置していることを意味する。例えば、図8(B)において、オブジェクト部分領域OA1、OB2、注目画素NP、オブジェクト部分領域OA1とオブジェクト部分領域OB2との間の複数個の赤色オブジェクト画素は、全て枠配置矩形内に位置している。
例えば、図8(A)に示す枠領域FL2は、交差数Mvが2である例を示しているが、赤色オブジェクトは、枠配置矩形内において、枠配置矩形の中心を通り、枠配置矩形を横断する一本の線を成していることが解る。一方、図8(A)に示す枠領域FL1は、交差数Mvが1である例を示しているが、赤色オブジェクトは、枠配置矩形内で終端を形成しているので、中心を通る一本の線ではあるが、枠配置矩形を横断してはいない。
図7のステップS320では、形状判定部350は、全ての赤色オブジェクト画素が注目画素として選択されたか否かを判断する。未選択の赤色オブジェクト画素がある場合には(ステップS320:NO)、形状判定部350は、ステップS305に戻って、未選択の赤色オブジェクト画素を選択して、上述したステップS305〜S320までの処理を繰り返す。全ての赤色オブジェクト画素が選択された場合には(ステップS320:YES)、形状判定部350は、ステップS325に処理を進める。ステップS325に移行して時点で、処理対象の赤色オブジェクトを構成する全ての赤色オブジェクト画素に対応する枠領域FLについて、交差数Mvが算出されている。以下では、交差数Mvが「A(Aは、0以上の整数)」である枠領域FLに対応する赤色オブジェクト画素を、単に、交差数Mvが「A」の赤色オブジェクト画素と言う。また、赤色オブジェクト画素に対応する枠領域FLと赤色オブジェクトとの交差数Mvが「A」であることを、単に、赤色オブジェクト画素の交差数Mvが「A」である、と言う。
ステップS325では、全ての赤色オブジェクト画素に対する、交差数Mvが2である赤色オブジェクト画素の割合RT2を算出する。交差数Mvが2である赤色オブジェクト画素を、第1の特定画素とも呼ぶ。ステップS330では、形状判定部350の条件判断部353は、割合RT2が、基準値THa以上であるか否かを判断する。形状判定部350は、割合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:ステップS220)において、線であると判定される可能性が比較的高い。しかしながら、形状判定処理では、赤色の文字は、囲み形状ではないと判断される。したがって、形状判定処理では、割合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(画素数)を決定することができる。
形状判定部350は、交差数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では、形状判定部350の条件判断部353は、全ての赤色オブジェクト画素に対する、交差数Mvが5以上である赤色オブジェクト画素(第3の特定画素)の割合RT5を算出する。ステップS350では、形状判定部350の条件判断部353は、第3の特定画素の割合RT5が、基準値THb以下であるか否かを判断する。形状判定部350は、第3の特定画素の割合RT5が、基準値THbより大きい場合には(ステップS350:NO)、赤色オブジェクトは、囲み形状でないと判定する(ステップS375)。上述したように、赤色オブジェクトが、一筆書きの囲み線である場合には、第3の特定画素は、ノイズなどの例外的な要因で第3の特定画素であると判断される場合を除いて、基本的に存在しないからである。基準値THbは、例えば、赤色オブジェクトが囲み線である場合に、ノイズによって発生し得る第3の特定画素の個数の上限値より僅かに大きな値に設定される。具体的には、本実施例では、基準値THbは、0.1に設定されている。形状判定処理では、割合RT5を用いて判断することによって、囲み線でない赤色オブジェクトを、判定対象から適切に除外することができる。
第3の特定画素の割合RT5が、基準値THb以下である場合には(ステップS350:YES)、形状判定部350は、後述する判定に用いる特定領域ESを設定する(ステップS355)。図10は、特定領域ESを用いる判定について説明する図である。形状判定部350は、交差数Mvが、「1、3、4」のうちのいずれかである複数個の赤色オブジェクト画素(第2の特定画素)の位置(座標)に基づいて、複数個の第2の特定画素の重心GCを算出する。上述したように、赤色オブジェクトが囲み線である場合には、第2の特定画素は、一筆書きの囲み線の両端の近傍に集中して存在する(図8(A)、図9(B)(C))。したがって、図10(A)に示すように、赤色オブジェクトが囲み線である場合には、重心GCは、一筆書きの囲み線の両端の近傍に位置する。
形状判定部350は、重心GCを中心として、正方形の特定領域ESを設定する。特定領域ESのX方向およびY方向の幅(画素数)EWは、図10(B)に示す式で表される。この式から解るように、特定領域ESの幅EWは、枠領域FLの幅FW(図8(C))と同様に、スキャン画像60の読み取り解像度RSと、赤色オブジェクトの線幅LWと、画素)と、赤色オブジェクトのサイズOBSと、に応じて決定される。
続くステップS360では、形状判定部350の条件判断部353は、全ての第2の特定画素に対する、特定領域ES内に位置する第2の特定画素の割合RTCを算出する。ステップS365では、形状判定部350の条件判断部353は、第2の特定画素の割合RTCが、基準値THc以上であるか否かを判断する。形状判定部350は、第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)、形状判定部350は、赤色オブジェクトは、囲み形状であると判定する(ステップ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)が満たされる場合と、条件(2)と条件(3)が満たされる場合と、の2つの場合には、赤色オブジェクトは囲み形状である、と判定され、それ以外の場合には、赤色オブジェクトは囲み形状でない、と判定されても良い。また、条件(1)〜(3)の全部が満たされる場合のみに、赤色オブジェクトは囲み形状である、と判定されても良い。また、条件(2)および(3)の一方または両方は、判定されなくても良く、条件(1)が満たされた場合に、赤色オブジェクトは囲み形状であると判定され、条件(1)が満たされない場合に、赤色オブジェクトは囲み形状でないと判定されても良い。
図5に戻って説明を続ける。形状判定処理によって、処理対象の赤色オブジェクトが囲み形状でないと判定された場合には(ステップS235:NO)、画像処理部300は、処理対象の赤色オブジェクトは囲み線ではないと判断する(ステップS245)。一方、形状判定処理によって、処理対象の赤色オブジェクトが囲み形状であると判定された場合には(ステップS235:YES)、画像処理部300は、処理対象の赤色オブジェクトは囲み線であると判断する(ステップS240)。すなわち、赤色オブジェクトが、単色であり(ステップS215:YES)、かつ、線であり(ステップS225:YES)、かつ、囲み形状である(ステップS235:YES)場合に、当該赤色オブジェクトは、囲み線であると判定される。そして、赤色オブジェクトが、単色でない(ステップS215:NO)、または、線でない(ステップS225:NO)、または、囲み形状でない(ステップS235:NO)場合に、当該赤色オブジェクトは、囲み線でないと判定される。図3(B)の例では、囲み線66Aのみが囲み線であると判定され、文字61A〜63A、部分オブジェクト67A、68Aは囲み線でないと判定される。
ステップS250では、画像処理部300は、全ての赤色オブジェクトが選択済みであるか否かを判断する。未選択の赤色オブジェクトがある場合には(ステップS250:NO)、画像処理部300は、ステップS205に戻って、未選択の赤色オブジェクトを選択して、上述したステップS205〜S250までの処理を繰り返す。全ての赤色オブジェクトが選択された場合には(ステップS250:YES)、画像処理部300は、オブジェクト判定処理を終了する。
オブジェクト判定処理が終了すると、続くステップS150(図2)では、特定された囲み線(囲み線であると判定された赤色オブジェクト)の中から、1個の囲み線を処理対象として選択する。図3の例では、1個の囲み線66A(図3(B))のみが特定されているので、当該囲み線66Aが選択される。
ステップS155では、画像処理部300の除去処理部360は、除去対象のオブジェクトを含む部分画像データを生成する。具体的には、除去処理部360は、二値画像60Aにおいて、処理対象の囲み線66に外接する外接矩形OS1(図3(B))を特定する。除去処理部360は、当該外接矩形OS1に対応する部分画像PSI(図3(A))を、スキャン画像60から切り出すことによって、部分画像PSIを表す部分画像データを生成する。
図11は、部分画像PSIの一例(図11(A))と、部分二値画像PBIの一例(図11(B))を示す図である。図11に示すように、部分画像PSIは、囲み線66と、描画65を、オブジェクトとして含んでいる。
ステップS160では、除去処理部360は、部分画像PSI内のオブジェクトを特定するために、部分画像データに対して二値化処理を実行して、部分二値画像データを生成する。具体的には、部分画像データは、背景を構成する背景画素と、オブジェクトを構成するオブジェクト画素と、に二値化される。例えば、除去処理部360は、例えば、囲み線66A(図3(B))の近傍に位置する複数個の画素、例えば、囲み線66Aの外側に位置する複数個の画素であって、囲み線66Aに沿って配置された複数個の画素の値の平均値(Rave2、Gave2、Bave2)を、二値化のための基準の色として算出する。あるいは、除去処理部360は、スキャン画像60において、部分画像PSIの外側に位置する画素であって、部分画像PSIの外縁に沿って配置された複数個の画素の値の平均値(Rave2、Gave2、Bave2)を、二値化のための基準の色として算出する。そして、除去処理部360は、(Rave2−ΔV2)≦R≦(Rave2+ΔV2)、かつ、(Gave2−ΔV2)≦G≦(Gave2+ΔV2)、かつ、(Bave2−ΔV2)≦B≦(Bave2+ΔV2)を満たす画素値(RGB値)を有する画素を背景画素に分類し、背景画素と決定すべき画素以外の画素をオブジェクト画素に分類する。除去処理部360は、部分画像PSIに含まれる全ての画素を、背景画素とオブジェクト画素とのいずれかに分類することによって、部分二値画像データを生成する。
ステップS165では、除去処理部360は、生成された部分二値画像データを用いて、オブジェクトを特定して、特定されたオブジェクトに識別子を付すラベリングを実行する。ラベリングの結果、例えば、オブジェクトと、識別子とを、対応付けたラベルデータが生成される。
具体的には、除去処理部360は、連続する(互いに隣接する)1個以上のオブジェクト画素で構成される1個の領域を、1個のオブジェクトとして特定する。図11(B)の例では、部分二値画像PBIにおいて、オブジェクト画素によって構成されるオブジェクトとして、囲み線66Dと、描画65Dと、が特定され、これらのオブジェクトのそれぞれに、互いに異なる識別子が付される。なお、部分二値画像PBI内に特定されるオブジェクトには、ステップS150で選択された処理対象の囲み線が含まれる。囲み線を表すオブジェクトには、例えば、囲み線であることが認識できるように、他のオブジェクトとは異なる特別な識別子が付される。
オブジェクトが特定されると、続くステップS170では、除去処理部360は、部分二値画像PBIに含まれる囲み線以外のオブジェクトが、囲み線に内包されているか否かを判定する内包関係判定処理を実行する。
図12は、内包関係判定処理のフローチャートである。ステップS405では、除去処理部360は、部分二値画像PBI内に特定されたオブジェクトの中から囲み線以外のオブジェクトを処理対象として選択する。図11(B)の例では、描画65Dが、処理対象のオブジェクトとして選択される。
ステップS410では、除去処理部360は、図11(B)に示すように、4本の判定線A1〜A4を設定する。4本の判定線A1〜A4は、処理対象のオブジェクト(具体的には、描画65D)の重心CCを基点として、上方向(−Y方向)、下方向(+Y方向)、左方向(−X方向)、右方向(+X方向)にそれぞれ延びる半直線である。
ステップS415では、除去処理部360は、4本の判定線A1〜A4のそれぞれと、囲み線66Dと、の交点の個数(交点数Mx)を、判定線ごとに特定する。具体的には、除去処理部360は、部分二値画像PBIにおいて、処理対象の判定線上の画素を、基点(重心CC)から外側に向かって順次に走査する。そして、除去処理部360は、判定線上に検出された交点の数をカウントする。例えば、図11(B)の例では、4本の判定線A1〜A4のそれぞれと、囲み線66Dとは、1個ずつ交点CP1〜CP4を有することが解る。
ステップS420では、除去処理部360は、交点数Mxが奇数であるか否かを判定線ごとに判断し、4本の判定線A1〜A4のうち、交点数Mxが奇数である判定線(以下、奇数判定線と呼ぶ)の数LInを特定する。図11(B)の例では、4本の判定線A1〜A4の交点数Mxは、全て「1」であるので、奇数判定線LInの数は「4」である。
ステップS425では、除去処理部360は、奇数判定線の数LInが3以上であるか否かを判断する。奇数判定線の数LInが3以上である場合には(ステップS425:YES)、除去処理部360は、処理対象のオブジェクトは、囲み線66Dに内包されていると判定する(ステップS430)。奇数判定線の数LInが3未満である場合には(ステップS425:NO)、除去処理部360は、処理対象のオブジェクトは、囲み線66Dに内包されていないと判定する(ステップS435)。
囲み線66Dが閉曲線であり、判定線の終点(部分二値画像PBIの画像の端)は、閉曲線の外側にあると仮定する。判定線の基点から終点に向かって走査する場合に、囲み線66Dとの交点を通過する度に、判定線上の注目点(走査位置)の内外関係が変化する。内外関係が変化するとは、注目点の位置が、囲み線の内側から外側に変化する、あるいは、囲み線の外側から内側に変化することを意味する。したがって、判定線の基点が囲み線の内側に位置する場合には、判定線の基点から終点までの間の交点数Mxは、終点が必ず囲み線の外側に位置することを考慮すると、奇数になることが解る。
逆に、判定線の基点が囲み線の外側に位置する場合には、判定線の基点から終点までの間の交点数Mxは、偶数になることが解る。例えば、仮に、囲み線66Dの外側に位置するサンプル点SP1(図11(B))から上下左右方向にそれぞれ延びる4本の判定線A5〜A8を考える。2本の判定線A5、A7は、それぞれ囲み線66Dとの間に、2個の交点を有する(図11(B)のCP5〜CP8)。一方、他の2本の判定線A6、A8は、いずれも囲み線66Dとの間に交点を有さない(0個の交点を有する)。このように、囲み線66Dの外側に位置するサンプル点SP1を基点とする判定線の基点から終点までの間の交点数Mxは、偶数(この例では、0または2)である。
このように、処理対象のオブジェクト上を基点とする判定線を設定すれば、判定線と囲み線との交点数Mxに基づいて、処理対象のオブジェクトが、囲み線に内包されている(囲み線の内側にある)か否かを、判定することができる。ここで、4本の判定線A1〜A4を設定し、交点数Mxが奇数である判定線が3以上である場合に、処理対象のオブジェクトが囲み線に内包されていると判断している理由を説明する。これは、例外的に、処理対象のオブジェクトが囲み線に内包されている場合でも、交点数Mxが偶数になる場合があり得るからである。例えば、囲み線66Dは、手書きで記入されることを想定しているので、図11(B)に示すように、一筆書きの両端部の近傍に隙間BTが生じる場合がある。仮に、図11(B)の下方向の判定線A2が、隙間BTを通ると、判定線A2の交点数Mxは、0(偶数)になってしまうことが解る。このような場合に、例えば、1本の判定線に基づいて判定を行うとすれば、誤った判定結果となり得ることは明らかである。本実施例では、4本の判定線のうちの奇数判定線の数LInが、3個以上であるか否かに基づいているので、例外的に、1個の判定線の交点数Mxが偶数になった場合であっても適切に内包関係を判定することができる。
ステップS440では、除去処理部360は、囲み線以外の全てのオブジェクトが処理対象として選択済みであるか否かを判断する。未選択のオブジェクトがある場合には(ステップS440:NO)、除去処理部360は、ステップS405に戻って、未選択のオブジェクトを選択して、上述したステップS405〜S440までの処理を繰り返す。全てのオブジェクトが選択された場合には(ステップS440:YES)、除去処理部360は、内包関係判定処理を終了する。
内包関係判定処理が終了すると、続くステップS175(図2)では、除去処理部360は、囲み線66と、囲み線66に内包されていると判定されたオブジェクトとを、スキャン画像60(図3(A))から除去するオブジェクト除去処理を実行する。除去処理部360は、部分二値画像PBI(図11(B))に基づいて、スキャン画像60上において、囲み線66と、囲み線66に内包されているオブジェクト(描画65)と、を構成する複数個の画素を特定する。除去処理部360は、特定された複数個の画素の画素値を、スキャン画像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)。この結果、赤色オブジェクトが囲み線であるか否かを適切に判定することができる。
さらに、形状判定部350は、交差数MvがM個(Mは、1、3、4のうちのいずれかの整数)である枠領域FLに対応する複数個の第2の特定画素のうち、特定領域ES(図10)に含まれる第2の特定画素の割合RTCを用いて、赤色オブジェクトが囲み線であるか否かを判定する(図7:ステップS365)。この結果、赤色オブジェクトが囲み線であるか否かを、さらに、精度良く判定することができる。
さらに、形状判定部350は、交差数Mvが5個以上である枠領域FLに対応する第3の特定画素の割合RT5を用いて、赤色オブジェクトが囲み線であるか否かを判定する(図7:ステップS340)。この結果、赤色オブジェクトが囲み線であるか否かを、さらに、精度良く判定することができる。
さらに、枠領域FLのサイズ(図8(C))および特定領域ESのサイズ(図10(B))は、解像度RS、線幅LW(すなわち、オブジェクトが特定方向に連続する数(図6))、オブジェクトサイズOBSに応じて、適切に決定されるので、赤色オブジェクトが囲み線であるか否かを、適切に判定することができる。すなわち、図8(C)の式から解るように、枠領域FLのサイズは、解像度RSが第1の解像度(例えば、300dpi)である場合に、第1の画素数に決定され、解像度RSが第1の解像度より高い第2の解像度(例えば、600dpi)である場合に、第1の画素数より大きい第2の画素数(例えば、第1の画素数の2倍の画素数)に決定される。また、枠領域FLのサイズは、オブジェクトサイズOBSが第1のサイズである場合に、第1の領域サイズに設定され、オブジェクトサイズOBSが第1のサイズより大きい第2のサイズである場合に、第1の領域サイズより大きい第2の領域サイズに設定される。さらに、枠領域FLのサイズは、線幅LWが第1の幅である場合に、第3の領域サイズに設定され、線幅LWが第1の幅より大きい第2の幅である場合に、第3の領域サイズより大きい第4の領域サイズに設定される。特定領域ESのサイズについても同様である。なお、図8(C)の式から解るように、オブジェクトサイズOBS、線幅LW、第1〜第4の領域サイズは、例えば、画素数で表される。
また、本実施例の形状判定処理は、例えば、比較的処理時間の長い処理である細線化処理などを伴う画像処理を用いて、赤色オブジェクトが囲み形状であるか否かを判定する処理と比較して、短い時間で赤色オブジェクトが囲み形状であるか否かを判定することができる。
B.変形例
(1)図13は、変形例における交差数Mvの算出方法について説明する図である。図13には、変形例における囲み線69の一部分と、囲み線69を構成する1個の注目画素(赤色オブジェクト画素)NPに対応する枠領域FLと、が示されている。利用者が囲み線69を原稿に記入する際に利用するペンが特定種類のペン(例えば、色鉛筆、水性ペン)である場合などに、囲み線69の中に、色が付着しない領域が現れる場合がある。この場合には、図13に示すように、スキャン画像を二値化した二値化画像内の囲み線69の中に、非赤色画素で構成された空隙領域VOが現れる。
この場合に、形状判定部350は、枠領域FLと、囲み線69(赤色オブジェクト)と、の交差数Mvを算出する際に(図7:ステップS315)、空隙領域VOによってオブジェクト部分領域が分断されて、オブジェクトの分岐の数を示す適切な交差数Mvが算出できない可能性がある。図13の例では、交差数Mvは、「2」であると、算出されることが好ましいが、図13の場合には、枠領域FLは、6個のオブジェクト部分領域OA11〜OA13、OA21〜OA23を含むので、交差数Mvは、「6」であると、算出される。
このために、形状判定部350は、所定の近接条件を満たす複数のオブジェクト部分領域を、互いに結合された1個のオブジェクト部分領域とみなして、交差数Mvを算出しても良い。近接条件は、例えば、判断対象の複数のオブジェクト部分領域の間に存在する非赤色画素の個数が基準値(例えば、2個)以下であることである。図13の例では、オブジェクト部分領域OA11とオブジェクト部分領域OA12との間の非赤色画素の個数と、オブジェクト部分領域OA12とオブジェクト部分領域OA13との間の非赤色画素の個数とが、それぞれ基準値以下の1個である。したがって、形状判定部350は、3個のオブジェクト部分領域OA11、OA12、OA13を、結合された1個のオブジェクト領域OA10であると判断する。同様に、オブジェクト部分領域OA21とオブジェクト部分領域OA22との間の非赤色画素の個数と、オブジェクト部分領域OA22とオブジェクト部分領域OA23との間の非赤色画素の個数とが、それぞれ基準値以下の1個である。したがって、形状判定部350は、3個のオブジェクト部分領域OA21、OA22、OA23を、結合された1個のオブジェクト領域OA20であると判断する。この結果、交差数Mvは、2個(オブジェクト領域OA10とオブジェクト領域OA20)であると、適切に算出することができる。
このように、互いに異なる複数個のオブジェクト部分領域が比較的近接している場合には、これらのオブジェクト部分領域を1個のオブジェクト部分領域とみなすことが適切である場合がある。本変形例によれば、形状判定部350は、近接条件を用いて、交差数Mvを適切に算出することができるので、赤色オブジェクトが囲み線であるか否かを適切に判定することができる。
(2)上記実施例において、枠領域FLは、対応する注目画素NP(1個の赤色オブジェクト画素)が、枠配置矩形の中心に配置されるように、設定されている。これに代えて、枠領域FLは、対応する注目画素NPが、枠配置矩形内の中心以外の位置に配置されるように、設定されても良い。具体的には、枠領域FLは、注目画素NPが、枠領域FL上に配置されるように、設定されても良い。また、枠領域FLは、注目画素NPが、枠領域FLの内側の位置であって中心とは異なる位置に配置されるように、設定されても良い。
(3)上記実施例の画像処理では、赤色オブジェクトが囲み線であると、判定されるためには、以下の3つの条件が満たされることを要する。
(A)単色判定処理において単色であると判定されること(図5:ステップS210、S215)
(B)線判定処理において線であると判定されること(図5:ステップS220、S225)
(C)形状判定処理において囲み線形状であると判定されること(図5:ステップS230、S235)
これに代えて、条件(A)および条件(B)の両方または一方は、省略されても良い。
(4)上記実施例における枠領域FLのサイズ(幅FW)や、特定領域ESのサイズ(幅EW)は、図8(C)や図10(B)の式を用いて算出されているが、これに代えて、固定値が用いられても良い。また、枠領域FLの形状や特定領域ESの形状は、正方形に限らず、長方形であっても良いし、円形であっても良いし、三角形や五角形などの各種の多角形であっても良い。
(5)上記実施例の形状判定処理では、判定対象の赤色オブジェクトを構成する全ての赤色オブジェクト画素に対して、枠領域FLが設定されているが、一部の赤色オブジェクト画素に対してのみ、枠領域FLを設定しても良い。具体的には、1個の赤色オブジェクト画素に対して、枠領域FLを設定した場合には、当該1個の赤色オブジェクト画素から所定距離内(例えば、2画素分の距離内)に位置する他の赤色オブジェクト画素は、枠領域FLの設定対象から除去しても良い。あるいは、判定対象の赤色オブジェクトを構成する全ての赤色オブジェクト画素のうち、X座標とY座標の両方が奇数である画素に対して、枠領域FLを設定し、X座標とY座標のうちの少なくとも一方が奇数である画素に対して、枠領域FLを設定しないこととしても良い。この場合には、割合RT2、RTC、RT5には、それぞれ、枠領域FLが設定された赤色オブジェクト画素の個数に対する、第1、第2、第3の特定画素の割合が用いられる。
(6)上記実施例では、X方向とY方向の2方向について、それぞれ連続する赤色オブジェクト画素の数を算出することによって、線幅LWを特定している(図6)。これに代えて、1つの方向について、連続する赤色オブジェクト画素の数を算出することによって、線幅LWを特定しても良い。
(7)上記実施例では、形状判定部350は、全ての第2の特定画素のうち、特定領域内に位置する第2の特定画素の割合RTCが、基準以上であるか否かを、実際に、特定領域ESを設定して、特定領域ES内に位置する第2の特定画素の個数を算出することによって、判断している。これに代えて、形状判定部350は、例えば、複数個の第2の特定画素の位置のばらつきを示す標準偏差σを算出して、標準偏差σが所定の閾値σth以下である場合に、割合RTCが基準以上であると判断しても良い。位置のばらつきを示す標準偏差σが閾値σth以下であることは、第2の特定画素の分布が正規分布に従うと仮定した場合に、第2の特定画素の位置の平均値(すなわち、重心)から距離σth以内の特定範囲内に、第2の特定画素が位置する確率が所定割合以上(約68%以上)であることを表している。したがって、第2の特定画素の位置のばらつきを示す標準偏差σが閾値σth以下である場合には、所定割合以上の第2の特定画素が、重心と閾値σthによって規定される特定範囲内に位置していると判断して良いと考えられる。また、標準偏差σに代えて、分散(σの2乗)が用いられても良い。
(8)なお、囲み線は、除去処理などの画像処理の対象とすべきオブジェクトを指定するために用いられているが、オブジェクトを含まない背景領域の一部を囲むことによって背景領域を指定するために用いられても良い。この場合には、例えば、囲み線で囲まれた背景領域の色を除去する(例えば、白にする)いわゆる背景除去処理が実行されても良い。
(9)なお、本実施例の対象画像データは、スキャナによって読み取られたスキャンデータが採用されているが、例えば、デジタルカメラなどで撮影された撮影画像データであっても良いし、文書や描画などを作成するためのアプリケーションプログラムを用いて生成された画像データであっても良い。また、囲み線は、例えば、ペンを用いて記入された囲み線に限られず、上記アプリケーションプログラムを用いて、画像内に描画された囲み線であっても良い。この場合には、例えば、マウスなどのポインティングデバイスを用いて、フリーハンドで描画された囲み線であっても、当該囲み線を適切に特定することができる。
(10)上記実施例においてサーバ400の画像処理部300によって実行される画像処理は、サーバ400とは異なる装置、例えば、複合機200と接続されたパーソナルコンピュータ500(図1)によって実行されても良い。この場合には、この画像処理は、例えば、複合機200のスキャナ部250や、単体のスキャナ(図示せず)を、制御するためにパーソナルコンピュータ500にインストールされたスキャナドライバキャナによって実行されても良い。また、この画像処理は、複合機200のCPU210や、単体のスキャナのCPUによって実行されても良い。また、サーバ400は、1つの筐体の装置に限らず、複数の計算機を含む計算システム(例えば、いわゆるクラウドコンピューティングを実現する分散型の計算システム)によって構成されていても良い。
(11)上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。