(57)【要約】【課題】 従来、小紙片の画像を抽出する装置は、画像に小紙片の輪郭部のエッジが含まれていない場合、抽出することができなかった。【解決手段】 画像処理装置であって、小紙片の領域を保持する領域リストと、画像をラスタ順に走査し、前記領域リストに保持される複数の領域に重ならず、かつ白でない画素の位置を探し、領域検出のための起点とする起点検出手段と、該起点を包含する前記所定の大きさの小紙片の領域の枠部分の画素全てが白であり、かつ前記領域リストに保持される複数の領域と重ならない領域を領域候補とする領域候補算出手段を有する。  画像に小紙片の輪郭部のエッジを参照しないので、小紙片の輪郭部のエッジが含まれていない場合でも、各小紙片の画像を抽出することが可能となる。【選択図】 図５
2017041173.tif 000002
【特許請求の範囲】
【請求項１】
複数の小紙片を読み取ることで生成された画像を処理する画像処理装置であって、
前記複数の小紙片の各領域を、前記画像から検出する領域検出手段と、
前記領域検出手段で、検出された前記領域を保持する領域リストを記憶する記憶手段と、
前記領域リストに基づき前記画像から画像を抽出する画像抽出手段と、
を有し、
前記領域検出手段は、前記画像をラスタ順に走査し、前記領域リストに保持される複数の領域に重ならず、かつ画素値が閾値未満の画素の位置を探し、領域検出のための起点とする起点検出手段と、
前記起点検出手段で得られた前記起点を包含する前記所定の大きさの小紙片の領域の枠部分の画素全てが閾値以上の画素値を有し、かつ前記領域リストに保持される複数の領域と重ならない領域を領域候補として算出し、記憶手段に記憶される領域候補リストに加える領域候補算出手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記領域検出手段は、前記領域候補リストの複数の領域候補から１つの領域を選択する領域候補選択手段を有し、
前記領域候補リストに保持される領域がある場合、前記領域候補選択手段は保持される複数の領域候補から１つの領域を選択し、該選択された領域を、前記領域リストの後尾に追加するとともに、該領域候補リストから削除し、前記起点検出手段により次の小紙片の領域検出のための起点を探し、
前記領域候補リストに保持される領域がない場合、前記領域リストの後尾の領域を削除し、前記領域候補選択手段は、前の小紙片の領域検出手段により得られた領域候補リストから次の領域候補を選択し、該選択された領域を、前記領域リストの後尾に追加するとともに、該領域候補リストから削除し、
前記起点検出手段で前記起点となる画素を検出できなくなった時点で、終了するよう制御する制御手段と、を有することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記領域候補選択手段が、領域候補リストの領域候補のうち、余白の合計が小さくなる領域を優先して１つの領域を選択することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記領域候補算出手段は、領域の枠部分が前記画像の縦方向または横方向に所定の値より狭い閾値以上の画素値を有する画素部分を通過するような領域を領域候補としないことを特徴とする請求項１〜３のいずれか１項に記載の画像処理装置。
【請求項５】
前記領域候補算出手段は、領域候補の領域で、小紙片の同じ印字部を包含する領域群を代表する領域に置き換えることを特徴とする請求項１〜４のいずれか１項に記載の画像処理装置。
【請求項６】
前記領域候補算出手段は、小紙片の領域の枠部分の画素を調べるとき、起点よりも下の左右及び下の枠部分の画素を調べることを特徴とする請求項１〜５のいずれか１項に記載の画像処理装置。
【請求項７】
前記画像に含まれる小紙片の領域の数を指定する指定手段を有し、
前記制御手段は、前記起点検出手段で前記起点となる画素を検出できなくなった時点で、前記領域リストに格納される領域の数と前記指定手段により指定された小紙片の領域の数とを比較し、異なれば小紙片の領域の探索を続行し、そうでなければ画像を抽出するよう制御することを特徴とする請求項２〜６のいずれか１項に記載の画像処理装置。
【請求項８】
記憶手段を有し、複数の小紙片を読みとることで生成された画像を処理する画像処理装置の制御方法であって、
前記小紙片の各領域を、前記画像から検出する領域検出工程と、
前記領域検出工程で、検出された前記領域を保持する領域リストを記憶手段に記憶する記憶工程と、
前記領域リストに基づき前記画像から画像を抽出する画像抽出工程と、
を有し、
前記領域検出工程は、前記画像をラスタ順に走査し、前記領域リストに保持される複数の領域に重ならず、かつ画素値が閾値未満の画素の位置を探し、領域検出のための起点とする起点検出工程と、
前記起点検出工程で得られた前記起点を包含する前記所定の大きさの小紙片の領域の枠部分の画素全てが閾値以上の画素値を有し、かつ前記領域リストに保持される複数の領域と重ならない領域を領域候補として算出し、記憶手段に記憶される領域候補リストに加える領域候補算出工程と、
を有することを特徴とする画像処理装置の制御方法。
【請求項９】
前記領域検出工程は、前記領域候補リストの複数の領域候補から１つの領域を選択する領域候補選択工程を有し、
前記領域候補リストに保持される領域がある場合、前記領域候補選択工程で保持される複数の領域候補から１つの領域を選択し、該選択された領域を、前記領域リストの後尾に追加するとともに、該領域候補リストから削除し、前記起点検出工程で次の小紙片の領域検出のための起点を探し、
前記領域候補リストに保持される領域がない場合、前記領域リストの後尾の領域を削除し、前記領域候補選択工程は、前の小紙片の領域検出工程で得られた領域候補リストから次の領域候補を選択し、該選択された領域を、前記領域リストの後尾に追加するとともに、該領域候補リストから削除し、
前記起点検出工程で前記起点となる画素を検出できなくなった時点で、終了するよう制御する制御工程と、を有することを特徴とする請求項８に記載の画像処理装置の制御方法。
【請求項１０】
請求項８〜９のいずれか１項に記載の画像処理装置の制御方法を、コンピュータが実行することにより実現するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像を抽出することが可能な画像処理装置及びその制御方法に関する。
【背景技術】
【０００２】
従来から、一つ又は複数の小紙片類に基づいて生成された画像から、各小紙片を分離して抽出するための技術は多く提案されている。例えば、特許文献１では、画像から二値画像を生成し、その二値画像から連結画素を検出する。次に、連結画素に対して設定した外接矩形の各辺において、連結画素との接点からその接点の属する辺の一方の頂点へと至る線分上の複数の点から、その辺に垂直なエッジ画素を検出する。さらに、そのエッジ画素が小紙片の輪郭部に位置するかを判断し、小紙片の輪郭部に位置するエッジ画素に基づき、小紙片の領域を求める方法が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2009-252115号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示される技術では、小紙片の輪郭部のエッジの一部が画像から検出されなければならない。小紙片が名刺である場合、名刺の多くは白地であることが多い。このような小紙片の輪郭部のエッジは画像から検出されにくいため、小紙片の輪郭部のエッジに基づく画像抽出方法では、正しく各小紙片を抽出できないという課題がある。
【０００５】
本発明は、このような課題に鑑み、小紙片の輪郭部のエッジが画像から検出されない場合でも、各小紙片を抽出可能とする画像抽出方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の画像処理装置は、複数の小紙片を読み取ることで生成された画像を処理する画像処理装置であって、前記複数の小紙片の各領域を、前記画像から検出する領域検出手段と、前記領域検出手段で、検出された前記領域を保持する領域リストを記憶する記憶手段と、前記領域リストに基づき前記画像から画像を抽出する画像抽出手段と、を有し、前記領域検出手段は、前記画像をラスタ順に走査し、前記領域リストに保持される複数の領域に重ならず、かつ画素値が閾値未満の画素の位置を探し、領域検出のための起点とする起点検出手段と、前記起点検出手段で得られた前記起点を包含する前記所定の大きさの小紙片の領域の枠部分の画素全てが閾値以上の画素値を有し、かつ前記領域リストに保持される複数の領域と重ならない領域を領域候補として算出し、記憶手段に記憶される領域候補リストに加える領域候補算出手段と、を有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、小紙片を読み取ることで得られた画像から小紙片の輪郭部のエッジが検出されない場合でも、各小紙片を読み取ることで得られた画像を抽出することを可能とする。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態に係る画像抽出方法を実行するための画像処理装置の構成の一例を説明するブロック図である。
【図２】小紙片の例を示すための図である。
【図３】複数の小紙片から構成される画像の例を示すための画像である。
【図４】第一の起点を示すための図である。
【図５】起点を含む領域候補の算出方法を説明するための図である。
【図６】領域候補とはみなされない領域、見なされる領域の例を示す図である。
【図７】第一の起点を含む領域候補を示すための図である。
【図８】第二の起点を示すための図である。
【図９】第二の起点を含む領域候補を示すための図である。
【図１０】第三の起点及び、第三の起点を含む領域候補を示すための図である。
【図１１】第四の起点及び、第四の起点を含む領域候補を示すための図である。
【図１２】領域候補から別の領域を選択した時の第四の起点及び、第四の起点を含む領域候補を示すための図である。
【図１３】第五の起点及び、第五の起点を含む領域候補を示すための図である。
【図１４】本発明の一実施形態に係る画像抽出方法のメイン処理を説明するためのフローチャートである。
【図１５】本発明の一実施形態に係る画像抽出方法の領域検出処理を説明するためのフローチャートである。
【図１６】本発明の一実施形態に係る画像抽出方法の領域候補算出処理を説明するためのフローチャートである。
【図１７】本発明の一実施形態に係る画像抽出方法の領域候補選択手段を説明するための、領域候補の領域を示すための図である。
【図１８】本発明の一実施形態に係る画像抽出方法の領域検出処理を説明するための図である。
【図１９】本発明の一実施形態に係る画像抽出方法の領域検出処理を説明するための図である。
【図２０】本発明の一実施形態に係る画像抽出方法の領域サイズを説明するための図である。
【図２１】小紙片の領域を誤検出する例を説明するための図である。
【図２２】第一の起点及び第二の起点を含む領域候補を示すための図である。
【図２３】本発明の他の実施形態に係る画像抽出方法の領域検出処理を説明するためのフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための形態について図面を用いて説明する。
【実施形態１】
【００１０】
図１は、本発明の一実施形態に係る画像抽出方法を実行するための画像処理装置の構成の一例を説明するブロック図である。
画像処理装置100は、ユーザが各種の操作および設定変更を行うための操作部103と、操作部103からの指示に従い画像情報を読み取るスキャナ部109と、画像データを用紙に印刷するプリンタ部107とを有する。スキャナ部109は、スキャナ部109を制御する図示しないＣＰＵや原稿読取を行うための図示しない照明ランプや走査ミラーなどを有する。プリンタ部107は、プリンタ部107の制御を行う図示しないＣＰＵや画像形成や定着を行うための図示しない感光体ドラムや定着器を有する。
【００１１】
また、画像処理装置100は、ＣＰＵ101が実行するブートプログラムが格納されているＲＯＭ104を有する。また、画像処理装置100は、ＣＰＵ101が動作するためのシステムワークメモリであり、かつ画像データを一時記憶するための画像メモリでもあるシステムメモリ111を有する。
また、画像処理装置100は、スキャナ部109から画像データが入力されるスキャナＩ/Ｆ108と、プリンタへ画像データを出力するプリンタＩ/Ｆ106とを有する。画像処理装置100は、スキャナＩ/Ｆ108からの画像データに処理を施すための画像処理部105を有する。画像処理部105は画像処理後のスキャナ入力データをシステムメモリ111に書き込むために画像バス121と接続される。
【００１２】
また、画像処理装置100は、画像処理装置の動作を統括的に制御するＣＰＵ101を備える。また、画像処理装置100は、ネットワークＩ/Ｆ102を介し、ネットワーク上の図示しない汎用コンピュータと通信(送受信)を行う。また、画像処理装置100は、ＵＳＢＩ/Ｆ114を介し、画像処理装置100と接続された図示しない汎用コンピュータと通信(送受信)を行う。また、画像処理装置100は、ＦＡＸＩ/Ｆ115を介し、公衆回線網と接続し、図示しない他の画像処理装置やファクシミリ装置と通信(送受信)を行う。ＦＡＸ Ｉ/Ｆには公衆回線網からの呼出信号(CI信号:CALL INDICATOR)を検知する図示しないCI検知回路がある。画像処理装置100は、ＣＰＵ101が実行するブートプログラムの読み出し動作を制御するＲＯＭ Ｉ/Ｆ112を有する。
【００１３】
また、画像処理装置100は、ＣＰＵ101、ネットワークＩ/Ｆ102、操作部Ｉ/Ｆ113、ＵＳＢＩ/Ｆ114、ＦＡＸＩ/Ｆ115、ＲＯＭＩ/Ｆ112、スキャナＩ/Ｆ108、プリンタＩ/Ｆ106、画像処理部105を相互に接続するシステムバス120を有する。
ＣＰＵ101は、システムバス120に接続された、各ブロックに対する設定を、システムバス120を介して行う。また、画像処理装置100は、システムメモリ111への書き込み、読み出し動作を制御するメモリコントローラ110を有する。メモリコントローラ110は、システムバス120および画像バス121に接続され、画像バス121に接続されたバスマスタのシステムメモリ111へのアクセスと、システムバス120に接続されたバスマスタのシステムメモリ111のアクセスとを、排他的に切り替える。
【００１４】
（画像抽出方法の説明）
各小紙片を抽出すべき画像は各小紙片を原稿台(不図示)に並べた後、スキャナ部109から読み込まれ、システムメモリ111に格納されたものである。
まず、図２から図１３を用いて、本実施形態に係る画像抽出方法の概略を説明する。図３は図２で示す名刺に基づき作成されたA4サイズの画像の例である。この画像は図２で示す、5枚の名刺を原稿台(不図示)に並べた後、スキャナ部109から読み込まれ、システムメモリ111に格納されたものである。なお、図２の各名刺の枠は名刺の輪郭を示すもので、名刺に印字されたものではない。同様に図３、４及び６〜１２の外側の枠は画像の輪郭を示すもので画像の一部ではない。また、図２に示すように複数の名刺は原稿台に向きを揃えて並べられた状態で読み込まれることが望ましい。
【００１５】
ＣＰＵ101は図３に示すA4サイズの画像の例えば左上からラスタ順に白でない画素を探す。ここで、白でない画素とは、明度がある閾値(例えば、明度の最大値の半分の値)未満、つまりその画素が黒に近い画素値を持つ画素（画素値がある閾値未満）である。画像がカラーである場合には、グレースケールに変換後の明度で判断する。
図４はＣＰＵ101が最初に検出した白でない画素の位置を示す図であり、同図の起点と記した位置がそれに当たる。
【００１６】
次に、ＣＰＵ101はこの起点を含む所定の大きさの小紙片(この例では名刺)の領域の候補を算出する。ビジネス用途での名刺のサイズはほとんどが、91×55mm(４号)か89×51mm(欧米サイズ)である。両者はほぼ同じサイズであり、91×55mmの領域の枠部分がすべて白画素であれば、ＣＰＵ101はその領域を小紙片の領域の候補と判断する。ここで、白画素とは、明度がある閾値(例えば、明度の最大値の半分の値)以上、つまりその画素が白に近い画素値を持つ画素（画素値がある閾値以上）である。画像がカラーである場合には、グレースケールに変換後の明度で判断する。図３に示す画像が300dpi（dots per inch）とすれば、91×55mmのサイズは1075×650画素に対応する。
【００１７】
図５はＣＰＵ101が起点を含む所定の大きさの小紙片の領域候補の算出方法を説明するための図である。同図の左上と記した枠は、サイズが1075×650画素であり、図４で示した起点を含む、最も左上側に位置する1075×650画素の領域である。いいかえると、図４で示した起点を右下端に持つ領域である。同図の右上と記した枠は、図４で示した起点を含む、最も右上側に位置する1075×650画素の領域である。同様に、同図の左下と右下と記した枠はそれぞれ、図４で示した起点を含む、最も左下側と右下側に位置する1075×650画素の領域である。
領域の枠を同図の左上と記した領域から右へ１画素ずつずらし、右上と記した領域までの各領域の枠部分の画素を調べる。その後、左上と記した領域の１画素下の領域から右上と記した領域の１画素下の領域に対しても、各領域の枠部分の画素を調べる。同様に、１画素ずつ下方向に走査し、左下と記した領域から、右下と記した領域までの各領域の枠部分の画素を調べる。
【００１８】
図６(a)と(b)は、左上と記した領域から右下と記した領域までの各領域を調べる際の、ある一つの領域を示した図である。
図６(a)では、領域の枠上に位置する画像の画素に白でない画素が存在する（右側の枠と下側の枠）。したがって、ＣＰＵ101はこの領域を領域候補とはみなさないと判断する。
一方、図６(b)では、領域の枠上に位置する画像の画素がすべて白画素で構成されている。したがって、ＣＰＵ101はこの領域を領域候補とみなす。
図７はＣＰＵ101が第一の起点から算出した領域候補（領域(1-1)と領域(1-2)）を図示した図である。なお、上の方法によれば、ＣＰＵ101が多数の領域候補を算出するが、後述する方法（図１６のステップS3014とS3015）でその領域候補の数を減らすことができる。結果として、算出される領域候補は、図１９で示す３個の領域に絞り込まれる。ただし、図１９の領域(1-3)は図７では、画像からはみ出てしまうので、図７には、領域(1-1)と領域(1-2)を示している。
【００１９】
ここでは、ＣＰＵ101が領域(1-1)を選択すると仮定する。ＣＰＵ101は次の起点を探すために、画像の左上からラスタ順に白でない画素を探す。ただし、ＣＰＵ101は選択された領域（領域(1-1)）内部の画素は起点としないように無視する。図８は第二の起点の位置を示す図である。
図９はＣＰＵ101が算出した、第二の起点を含む小紙片の領域候補を示す図である。同図において、領域(2-0)のように領域(1-1)に重なるような領域は領域候補として算出されない。したがって、第二の起点を含む小紙片の領域を領域(2-1)としている。領域(2-1)も領域(1-1)と同様の方法で検知される。
【００２０】
図１０は第三の起点とその起点を含む小紙片の領域候補を示す図である。
図１１はＣＰＵ101が第三の起点を含む小紙片の領域候補から領域(3-1)を選択するとき、４枚目の小紙片を検知する際に用いられる第四の起点を示す図である。同図でわかるように、第四の起点を含む領域はすべて領域(3-1)と重なり、ＣＰＵ101は第四の起点を含む領域候補を算出できない。この原因はそれ以前の領域候補から選択された領域に不適切なものがあったことを意味する。そこで、ＣＰＵ101は第三の起点を含む小紙片の領域候補から領域(3-2)を選択しなおす。
図１２はＣＰＵ101が第三の起点を含む小紙片の領域候補から領域(3-2)を選択した時の第四の起点を示す図である。この場合は第四の起点を含む小紙片の領域候補を領域(4-1)が算出できる。
【００２１】
図１３はＣＰＵ101が第四の起点を含む小紙片の領域候補から領域(4-1)を選択した時の第五の起点を示す図である。この場合は第五の起点を含む小紙片の領域候補を領域(5-1)が算出できる。
ＣＰＵ101は次の起点を探すために、画像の左上からラスタ順に白でない画素を探す。ただし、これまでに選択された領域内部でない画素で白でない画素はないので、ＣＰＵ101は小紙片の領域の検出が完了したと判断する。そして、ＣＰＵ101は選択された領域に基づき、画像から各小紙片の画像を抽出する。
これまでの説明でわかるように、起点を含む小紙片の領域候補の数を減らすことと、領域候補から正しい領域を最初に選択することが、処理を高速にし、小紙片の領域の誤検出を減らす。起点を含む小紙片の領域候補の数を減らす方法と、領域候補から正しい領域を最初に選択する方法は後述する。
【００２２】
（画像抽出方法のフローチャート）
図１４、図１５及び図１６は本実施形態に係る画像抽出方法を説明するためのフローチャートである。これらのフローチャートの各手順は、ソフトウェアに従って、ＣＰＵ101により実行される。
【００２３】
（メイン処理）
まず、図１４を用いて、画像抽出方法のメイン処理について説明する。
[S1001] ステップS1001では、ＣＰＵ101が領域リストrect_listを空(empty)に初期化する。
[S1002] ステップS1002では、ＣＰＵ101が領域検出処理を行う。領域検出処理により、領域リストrect_listに各小紙片の領域が格納される。領域検出処理の詳細は後述する。
[S1003] ステップS1003では、ＣＰＵ101が領域リストrect_listに格納された領域に基づき、画像から各小紙片の画像を抽出し、処理を終了する。
【００２４】
（領域検出処理）
次に、図１５を用いて、画像抽出方法における領域検出処理について説明する。
ステップS2001からS2007までは、画像抽出方法における起点検出手段を実現するためのステップである。
[S2001] ステップS2001では、ＣＰＵ101がyをゼロに初期化する。変数yは起点を探すために、画像の垂直方向の座標を保持する。
[S2002] ステップS2002では、ＣＰＵ101がxをゼロにする。変数xは起点を探すために、画像の水平方向の座標を保持する。このステップは起点を探すため、ラスタ順で画素を走査する際にラインが切り替わる毎に実行される。
[S2003] ステップS2003では、ＣＰＵ101が画像の座標(x，y)に位置する画素が領域リストrect_listに格納された領域のいずれかに含まれているか否かを判断する。
-(Yes) 座標(x，y)に位置する画素が領域リストrect_listに格納された領域のいずれかに含まれている場合、その画素は起点にはなりえないので、次の画素を調べるために、ステップS2005へジャンプする。
-(No) そうでなければ、次のステップS2004へ進む。
【００２５】
[S2004] ステップS2004では、ＣＰＵ101が画像の座標(x，y)に位置する画素が白画素であるか否かを判断する。
-(Yes) 座標(x，y)に位置する画素が白画素である場合、その画素は起点にはなりえないので、次の画素を調べるために、次のステップS2005へ進む。
-(No) そうでなければ、その画素を起点として処理を行うために、ステップS2009へジャンプする。
[S2005] ステップS2005では、ＣＰＵ101は処理すべき画素位置を右に進めるために、xをインクリメントする。
【００２６】
[S2006] ステップS2006では、ＣＰＵ101はxと画像幅を比較する。
-(Yes) xが画像幅未満であれば、次の画素を処理するためにステップS2003へ戻る。
-(No) そうでなければ、次のステップS2007へ進む。
[S2007] ステップS2007では、ＣＰＵ101は処理すべき画素位置を次のラインに進めるために、yをインクリメントする。
[S2008] ステップS2008では、ＣＰＵ101はyと画像高さを比較する。
-(Yes) yが画像高さ未満であれば、次の画素を処理するためにステップS2002へ戻る。
-(No) そうでなければ、画像の全画素に対して起点とすべき画素がないので、処理を終了して、呼び出し元に成功を返す。
【００２７】
ステップS2009からS2014までは、画像抽出方法における領域候補選択手段を実現するためのステップである。
[S2009] ステップS2009は、ステップS2004のNoで実行され、変数xとyに起点となる画素の座標が格納されている。ステップS2009では、ＣＰＵ101がxとyを与え、領域候補算出処理を行う。領域候補算出処理により、座標(x、y)に位置する画素を起点とした領域候補リストrectsに各小紙片の領域の候補が格納される。領域候補算出処理の詳細は後述する。
[S2010] ステップS2010では、ＣＰＵ101は領域候補リストrectsが空か否かを判断する。ここで、領域候補リストrectsが空となるのは、前のステップで、座標(x、y)に位置する画素を起点とした領域候補が存在しないか、全ての領域候補に対して領域検出処理の失敗した場合である。
-(Yes) 領域候補リストrectsが空である場合、処理を終了して、呼び出し元に失敗を返す。
-(No) そうでなければ、次のステップS2011に進む。
【００２８】
[S2011] ステップS2011では、ＣＰＵ101は領域候補リストrectsに格納される領域の優先順位が高い最初の１つを選択し、その領域を領域候補リストrectsから削除し、同時に、その領域を領域リストrect_listの後尾に追加する。
図１７はＣＰＵ101が領域候補リストrectsに格納される領域を選択する方法を説明するための図である。
図１７(a)に示すように、領域候補リストrectsの３個の領域が格納されているとする。図１７(b)、(c)、(d)はそれぞれ、図１７(a)に示した領域(1-1)、領域(1-2)、領域(1-3)における余白を示す図である。名刺等の小紙片はその全面に印字が広がっていることが多い。上下左右の余白の合計が少ないものから選択すると、領域検出処理での失敗を最小限にできる。図１７の例では、領域(1-1)、領域(1-2)、領域(1-3)の順番で、領域候補リストrectsに格納される領域を選択していく。
【００２９】
[S2012] ステップS2012では、ＣＰＵ101は次の起点の探索を開始するために、再帰的に領域検出処理を呼び出す。
[S2013] ステップS2013では、ＣＰＵ101は前のステップで呼び出した領域検出処理が成功を返したか否かを判断する。
-(Yes)   ところで、ステップS2012で呼び出す領域検出処理で、次の起点を検出すると、さらに、ステップS2012で領域検出処理が再帰的に呼び出される。したがって、ステップS2013で、領域検出処理で成功が返されるのは、最後の起点で呼び出された領域検出処理でステップS2008のNoの分岐で成功が返された時である。
その時、処理を終了し、成功を呼び出し元に返す。すると、そのひとつ前の起点で呼び出された領域検出処理で、ステップS2013が実行される。もちろん、ここでは領域検出処理が成功を返しているので、処理を終了し、成功を呼び出し元に返す。これを繰り返し、最終的にステップS1002が呼び出した領域検出処理が終了する。
-(No) 一方、ステップS2013で、領域検出処理で失敗(No)が返されるのは、次の起点の領域検出処理で、ステップS2010のYesの分岐で失敗が返された時である。
その時、領域候補リストrectsに格納される領域から次の領域を選択して処理を続行するために、次のステップS2014に進む。
【００３０】
[S2014] ステップS2014では、ＣＰＵ101は失敗した領域を取り除くために、領域リストrect_listの後尾の領域を削除する。その後、領域候補リストrectsに格納される領域から次の領域を選択するために、ステップS2010へ戻る。
【００３１】
（領域候補算出処理）
次に、図１６を用いて、画像抽出方法における領域候補算出処理について説明する。
ステップS3001からS3015までは、画像抽出方法における領域候補算出手段を実現するためのステップである。
【００３２】
[S3001] ステップS3001では、ＣＰＵ101が領域候補リストrectsを空(empty)に初期化する。また、ＣＰＵ101がXmin、Xmax及びYmin、Ymaxをそれぞれ、Xmin=x-card_width,  Ymin=y-card_height,  Xmax=x,  Ymax=yに初期化する。ここで、xとyは呼び出し元から与えられた起点のX座標とY座標である。x-card_widthとy-card_heightは画素単位の小紙片の幅と高さである。また、XminとXmaxはそれぞれ、起点(x，y)を含む領域の左上のX座標の最小値と最大値である。同様に、YminとYmaxはそれぞれ、起点(x，y)を含む領域の左上のY座標の最小値と最大値である。
[S3002] ステップS3002では、ＣＰＵ101が起点(x，y)を含む領域の左上の座標が画像外になることを避けるために、Xmin、Xmax及びYmin、Ymaxを補正する。
[S3003] ステップS3003では、ＣＰＵ101がY0をYminに初期化する。変数Y0は起点を含む領域の左上のY座標を保持する。
【００３３】
[S3004] ステップS3004では、ＣＰＵ101がX0をXminにする。変数X0は起点を含む領域の左上のX座標を保持する。このステップは領域候補を探すため、ラスタ順で領域の左上の座標を更新する際にラインが切り替わる毎に実行される。
[S3005] ステップS3005では、ＣＰＵ101が座標(X0，Y0)を左上とする、幅x-card_widthで高さy-card_heightの領域が領域リストrect_listに格納された領域のいずれかに重なりを持つか否かを判断する。
-(Yes) 座標(X0，Y0)を左上とする領域が領域リストrect_listに格納された領域のいずれかに重なりを持つ場合、座標(X0，Y0)を左上とする領域は領域候補になりえないので、次の領域を調べるためにステップS3009にジャンプする。
-(No) そうでなければ、次のステップS3006へ進む。
【００３４】
[S3006] ステップS3006では、ＣＰＵ101が座標(X0，Y0)を左上とする、幅x-card_widthで高さy-card_heightの領域の枠部分の画素を調べる。ここで、起点のY座標yより上の部分は白画素なので、Y座標がy以上の部分の左右及び、下の枠部分の画素を調べる。
[S3007] ステップS3007では、ＣＰＵ101がステップS3006で調べた画素全てが白画素か否かを判断する。
-(Yes) 全画素が白画素であれば、ステップS3008に進み、
-(No) そうでなければ、ステップS3009へジャンプする。
【００３５】
[S3008] ステップS3008では、座標(X0，Y0)を左上とする領域を領域候補リストrectsに追加し、ステップS3009へ進む。
[S3009] ステップS3009では、ＣＰＵ101は領域の左上の座標を右に進めるために、X0をインクリメントする。
[S3010] ステップS3010では、ＣＰＵ101はX0とXmaxを比較する。
-(Yes) X0がXmax未満であれば、次の領域を調べるためにステップS3005へ戻り、
-(No) そうでなければ、次のステップへ進む。
【００３６】
[S3011] ステップS3011では、ＣＰＵ101は領域の左上の座標を次のラインに進めるために、Y0をインクリメントする。
[S3012] ステップS3012では、ＣＰＵ101はY0とYmaxを比較する。
-(Yes) Y0がYmax未満であれば、次の領域を調べるためにステップS3004へ戻る。
-(No) そうでなければ、次のステップS3013へ進む。
[S3013] ステップS3013では、ＣＰＵ101は領域を領域候補リストrectsに格納される領域群を左上の座標が連続するもの毎にグループ化する。図１８はこのグループ化をわかりやすく説明するために、領域候補リストrectsに格納される領域群を左上の座標を画像上にプロットした図である。同図において、灰色で示された部分が領域候補リストrectsに格納される領域群を左上の座標に対応する。一つのグループ(図１８における灰色の島)は、同じ白でない画素を包含する領域群である。例えば、グループAの領域群は領域Aのように、ロゴのような部分(Kan-non)のみ包含している。グループBの領域群は領域Bのように、観音太郎の文字列を含む上側の部分を包含している。グループCの領域群は領域Cのように、すべての白でない部分を包含している。また、グループDのように、灰色の島が横長となるような領域群は領域Dのように、枠部分(図１８では下の枠)が縦方向の狭い白画素部分を通過している。同様に、グループEのように、灰色の島が縦長となるような領域群は領域Eのように、枠部分(図１８では右の枠)が横方向の狭い白画素部分を通過している。
【００３７】
[S3014] ステップS3014では、ＣＰＵ101は領域を領域候補リストrectsに格納される領域群のうち、ある値（例えば、5mmに相当する画素の幅）以下の狭い白画素部分を通過している枠部分を持つ領域を削除する。つまり、隣り合う小紙片の白でない画素が近接することはないので、ある値（例えば、5mmに相当する画素の幅）以下の狭い白画素部分を通過している枠部分を持つ領域は領域候補から削除する。ＣＰＵ101はグループ内の領域の左上のX座標の最大値と最小値の差がある値以下（図１８では灰色の縦に細長い島）であるグループに対応する領域を領域候補リストrectsから削除する。同様に、ＣＰＵ101はグループ内の領域の左上のY座標の最大値と最小値の差がある値以下（図１８では灰色の横に細長い島)であるグループに対応する領域も領域候補リストrectsから削除する。図１８では、グループA、B及び、C以外のグループに対応する領域が領域候補リストrectsから削除される。
[S3015] ステップS3015では、ＣＰＵ101は領域候補リストrects内の各グループに対応する領域群を代表する１つの領域に置き換える。上で説明したように、一つのグループは、同じ白でない画素を包含する領域群なので、ひとつの代表する領域、例えば、グループの領域の左上の座標群の中心となる座標を左上の座標とする領域に置き換える。中心となる座標を選べば、その座標を左上とする領域に対して、小紙片の印字部分が中央に位置するようになる。図１８の例では、図１９に示す、領域(1-1)、領域(1-2)及び、領域(1-3)の三領域が領域候補リストrectsに格納される。
以上のように、本実施例によれば、画像に小紙片のエッジ部が存在しない場合でも、画像から各小紙片の画像を抽出することを可能にする。
【００３８】
なお、本実施例の説明では、小紙片の画像領域の検出を小紙片の画像を抽出すべき画像を用いていたが、小紙片の画像を抽出すべき画像を縮小した画像を用いてもよい。例えば、小紙片の画像を抽出すべき画像を1/2に縮小した画像を用いれば、処理する画素数は1/4に減少し、小紙片の画像領域の検出処理を高速化できる。
また、原稿台（不図示）の汚れや原稿台カバー（不図示）の汚れ等で、画像に小さな白でない画素が含まれる場合には、小紙片の画像領域の検出処理の先立ち、小さな白でない画素を除去（孤立点除去）すればよい。この孤立点除去の際に、画像中の小紙片の印字部がごく一部除去される可能性はあるが、本実施例による画像抽出方法における小紙片の画像領域の検出処理に影響を与えるものではない。
【００３９】
さらに、本実施例の説明では、小紙片のサイズから抽出する領域の大きさ（図１６におけるx-card_widthとy-card_height）を決定した。図２から図１３における小紙片が名刺である例では、名刺のサイズである91×55mmから抽出する領域の大きさを決定したが、小紙片が傾きを持って画像が作成される場合には、その最大の傾きを考慮して、抽出する領域の大きさを決定すればよい。
例えば、91×55mmの名刺が最大で5度傾く場合について考えてみる。図２０のように、5度傾いた91×55mmの名刺（同図において、内側の5度傾いた矩形）に外接する矩形（同図において、外側の矩形）の大きさ95.45mm×62.72mmから抽出する領域の大きさを決定すればよい。
【実施形態２】
【００４０】
実施形態１では、小紙片の印字領域がほぼ中央に位置している場合に効果的であった。しかしながら、図２１のように、小紙片の印字領域が端部のみにある場合、小紙片の領域を誤検出する可能性がある。同図において、破線は小紙片の輪郭を表わし、実線の矩形が検出される小紙片の領域である。この図は、二つの小紙片の印字部を一つの小紙片の領域として検出してしまう例である。画像に小紙片の輪郭のエッジが含まれていない場合には、このような画像から二つの小紙片の領域を検出するすべはない。実施形態２では、画像に含まれる小紙片の数を指定することにより、このような誤検出を最小限に防ぐものである。実施形態２に係る画像傾き検出方法を実行するための画像処理装置の構成は、図１で示した実施形態１と同様の画像処理装置の構成である。
【００４１】
図２２(a)から(c)を用いて、本施形態に係る画像傾き検出方法の概略を説明する。
ＣＰＵ101は画像から起点となる画素を探す。ＣＰＵ101が検出した起点が図２２(a)の起点Aである。次に、ＣＰＵ101は起点Aを含む領域候補を算出する。ＣＰＵ101が算出した領域候補が図２２(a)の領域(A-1)と領域(A-2)である。ここで、ＣＰＵ101は上下左右の余白の合計が少ない領域(A-1)をまず選択する。
次に、ＣＰＵ101は次の起点を探すが、起点となる画素はない。この時点で、ＣＰＵ101は領域リストrect_listに格納される領域の数と指定された小紙片の数を比較する。ここでは、領域リストrect_listに格納される領域の数は1で、指定された小紙片の数は2なので、等しくなく、ＣＰＵ101は次の候補領域である領域(A-2)を選択する。領域(A-2)が選択された場合、図２２(b)のように、ＣＰＵ101は次の起点として起点Bを検出する。図２２(c)のように、ＣＰＵ101は起点Bを含む領域候補として、領域(B-1)を算出し、それを選択する。
【００４２】
さらに、ＣＰＵ101は次の起点を探すが、起点となる画素はない。ここでは、領域リストrect_listに格納される領域の数と指定された小紙片の数は等しいので、ＣＰＵ101は領域検出処理を終了すれば、図２２(c)のように正しく、各小紙片の領域が検出できる。小紙片の数の指定はユーザが操作部103を介して行われる。
本実施形態に係る画像抽出方法のメイン処理と領域候補算出処理は図１４と図１６に示す実施形態１と同じである。よって、ここでは、本実施形態に係る画像抽出方法の領域検出処理についてのみ説明する。
【００４３】
（画像抽出方法）
図２３は本実施形態に係る画像抽出方法の領域検出処理の動作を説明するためのフローチャートである。これらのフローチャートの各手順は、ソフトウェアに従って、ＣＰＵ101により実行される。本実施形態に係る画像抽出方法の領域検出処理は実施形態１とほぼ同じであり、同じステップには図１５と同じ符号を付与している。実施形態１と異なるステップは図２３におけるステップS4001が追加された点である。
ステップS4001は画像上の起点となる画素がない場合(ステップS2008のNo)に実行される。
【００４４】
[S4001] ステップS4001では、ＣＰＵ101は領域リストrect_listに格納される領域の数と指定された小紙片の数が等しいか否かを判断する。
-(Yes) 領域リストrect_listに格納される領域の数と指定された小紙片の数が等しければ、呼び出し元に成功を返し終了する。
-(No) そうでなければ、呼び出し元に失敗を返し終了する。失敗を返された呼び出し元は領域候補リストrectsから新たな領域を選択して処理が続行される。
以上のように、本実施例によれば、画像に含まれる小紙片の数を指定し、検出された小紙片の領域の数(領域リストrect_listに格納される領域の数)と指定された小紙片の数を比較することで、誤検出を最小限に防ぐことができる。
【００４５】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成が可能である。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【００４６】
100 ・・・画像処理装置
101 ・・・ＣＰＵ
102 ・・・ネットワークＩ/Ｆ
103 ・・・操作部
104 ・・・ＲＯＭ
105 ・・・画像処理部
106 ・・・プリンタＩ/Ｆ
107 ・・・プリンタ部
108 ・・・スキャナＩ/Ｆ
109 ・・・スキャナ部
110 ・・・メモリコントローラ
111 ・・・システムメモリ
112 ・・・ＲＯＭ Ｉ/Ｆ
113 ・・・操作部Ｉ/Ｆ
114 ・・・ＵＳＢ Ｉ/Ｆ
115 ・・・ＦＡＸ Ｉ/Ｆ
120 ・・・システムバス
121 ・・・画像バス
【図１】
2017041173.tif 000003
【図２】
2017041173.tif 000004
【図３】
2017041173.tif 000005
【図４】
2017041173.tif 000006
【図５】
2017041173.tif 000007
【図６】
2017041173.tif 000008
【図７】
2017041173.tif 000009
【図８】
2017041173.tif 000010
【図９】
2017041173.tif 000011
【図１０】
2017041173.tif 000012
【図１１】
2017041173.tif 000013
【図１２】
2017041173.tif 000014
【図１３】
2017041173.tif 000015
【図１４】
2017041173.tif 000016
【図１５】
2017041173.tif 000017
【図１６】
2017041173.tif 000018
【図１７】
2017041173.tif 000019
【図１８】
2017041173.tif 000020
【図１９】
2017041173.tif 000021
【図２０】
2017041173.tif 000022
【図２１】
2017041173.tif 000023
【図２２】
2017041173.tif 000024
【図２３】
2017041173.tif 000025