(57)【要約】【課題】画像中の線分を特定する。【解決手段】対象画像データを取得する。対象画像データによって表現される対象画像からエッジ画素を検出する処理を実行する。対象画像を構成する複数の部分領域のうちのエッジ画素を含む部分領域毎に、部分領域内のエッジ画素の座標を用いて、部分領域内の線分である部分線分を検出する処理を実行する。複数の部分領域から検出された部分線分を用いて、対象画像内の線分である対象線分を特定する。【選択図】  図１
2020107039.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置であって、
対象画像データを取得する取得部と、
前記対象画像データによって表現される対象画像からエッジ画素を検出する処理を実行するエッジ画素検出部と、
前記対象画像を構成する複数の部分領域のうちの前記エッジ画素を含む前記部分領域毎に、前記部分領域内の前記エッジ画素の座標を用いて、前記部分領域内の線分である部分線分を検出する処理を実行する部分線分検出部と、
前記複数の部分領域から検出された前記部分線分を用いて、前記対象画像内の線分である対象線分を特定する対象線分特定部と、
を備える、画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記エッジ画素検出部は、互いに異なる４つの方向のそれぞれの前記エッジ画素を検出する、
画像処理装置。
【請求項３】
請求項２に記載の画像処理装置であって、
前記部分線分検出部は、前記４つの方向のそれぞれについて、前記方向に対応する前記エッジ画素の前記座標を用いて前記方向に対応する前記部分線分を検出し、
前記対象線分特定部は、前記複数の部分領域から方向毎に検出された前記部分線分を用いて、前記対象画像内の前記対象線分を特定する、
画像処理装置。
【請求項４】
請求項１から３のいずれかに記載の画像処理装置であって、
前記部分線分検出部は、複数の前記エッジ画素のそれぞれの座標を最小二乗法で近似することによって得られる直線の一部を、前記部分線分として検出する、
画像処理装置。
【請求項５】
請求項１から４のいずれかに記載の画像処理装置であって、
前記取得部は、シートを光学的に読み取る読取部からのデータを用いて、前記シートの画像を含む前記対象画像を表現する前記対象画像データを取得し、
前記画像処理装置は、さらに、
前記対象画像内の特定された前記対象線分を用いて、前記対象画像内の前記シートの輪郭を示す矩形を特定する矩形特定部を備える、
画像処理装置。
【請求項６】
請求項５に記載の画像処理装置であって、
前記対象画像から検出された前記エッジ画素を含む複数の前記部分領域が連続する連続領域を特定する連続領域特定部を備え、
前記矩形特定部は、前記連続領域毎に、前記連続領域に含まれる前記対象線分を用いて前記矩形を特定する、
画像処理装置。
【請求項７】
請求項５または６に記載の画像処理装置であって
前記矩形特定部は、複数の前記対象線分の重心の位置と、前記複数の対象線分のそれぞれの長さと、を用いて、前記シートの前記輪郭の一部を示す前記対象線分を特定する、
画像処理装置。
【請求項８】
請求項１から７のいずれかに記載の画像処理装置と、
シートを載せるための台と、
前記台に載せられた前記シートを光学的に読み取る読取部と、
を備え、
前記取得部は、前記読取部からのデータを用いて、前記対象画像データを取得する、
読取装置。
【請求項９】
画像処理のためのコンピュータプログラムであって、
対象画像データを取得する取得機能と、
前記対象画像データによって表現される対象画像からエッジ画素を検出する処理を実行するエッジ画素検出機能と、
前記対象画像を構成する複数の部分領域のうちの前記エッジ画素を含む前記部分領域毎に、前記部分領域内の前記エッジ画素の座標を用いて、前記部分領域内の線分である部分線分を検出する処理を実行する部分線分検出機能と、
前記複数の部分領域から検出された前記部分線分を用いて、前記対象画像内の線分である対象線分を特定する対象線分特定機能と、
をコンピュータに実現させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、画像中の線分を特定する技術に関する。
【背景技術】
【０００２】
従来から、種々の画像処理が行われている。例えば、原稿の画像を読み取って得られる画像データにエッジ検出処理を実行してエッジ画像データを生成し、エッジ画像データにハフ変換を実行してハフ変換データを生成し、ハフ変換データを用いて原稿の傾斜角度を決定し、傾斜角度を用いる傾き補正を行う技術が提案されている（特許文献１）。また、仮決定したエッジの位置とその近傍の領域を対象に１次元高速フーリエ変換を実行し、この実行に基づいて抽出された特徴量にさらにウエーブレット変換を実行し、この結果得られる値に基づくピーク位置に直線近似を施すことによって、近似直線上の位置を、原稿のエッジ位置と決定する技術が、提案されている（特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−０２２３３５号公報
【特許文献２】特開２００４−２０１２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このように、画像中の線分を特定する技術が求められている。
【０００５】
本明細書は、画像中の線分を特定する新たな技術を開示する。
【課題を解決するための手段】
【０００６】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【０００７】
［適用例１］画像処理装置であって、対象画像データを取得する取得部と、前記対象画像データによって表現される対象画像からエッジ画素を検出する処理を実行するエッジ画素検出部と、前記対象画像を構成する複数の部分領域のうちの前記エッジ画素を含む前記部分領域毎に、前記部分領域内の前記エッジ画素の座標を用いて、前記部分領域内の線分である部分線分を検出する処理を実行する部分線分検出部と、前記複数の部分領域から検出された前記部分線分を用いて、前記対象画像内の線分である対象線分を特定する対象線分特定部と、を備える、画像処理装置。
【０００８】
この構成によれば、部分領域毎に検出された部分線分を用いて対象画像内の線分が特定されるので、精度良く線分を特定できる。
【０００９】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、画像処理方法および画像処理装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体（例えば、一時的ではない記録媒体）、等の形態で実現することができる。
【図面の簡単な説明】
【００１０】
【図１】一実施例としての複合機の構成を示す図である。
【図２】読取処理の例を示すフローチャートである。
【図３】（Ａ）対象画像の例を示す概略図である。（Ｂ）はエッジ画像の例を示す説明図である。（Ｃ）は第１種エッジブロック画像の例を示す説明図である。（Ｄ）はラベリング画像の説明図である。（Ｅ）は第２種エッジブロック画像の例を示す説明図である。
【図４】オブジェクト領域の特定処理の例を示すフローチャートである。
【図５】対象線分を検出する処理の例を示すフローチャートである。
【図６】（Ａ）〜（Ｄ）は方向エッジ画素Ｐｘ１、Ｐｘ２、Ｐｘ３、Ｐｘ４の説明図である。（Ｅ）〜（Ｈ）は部分線分ＳＬ１〜ＳＬ４の説明図である。
【図７】（Ａ）〜（Ｃ）は２本の部分線分を１つの線分グループに分類するための条件の例を示す説明図である。（Ｄ）は対象線分画像の例を示す説明図である。
【図８】角点を検出する処理の例を示すフローチャートである。
【図９】（Ａ）、（Ｂ）は２本の対象線分を結合するための条件の例を示す説明図である。（Ｃ）は対象線分画像の例を示す説明図である。（Ｄ）は複数の対象線分の例を示す説明図である。（Ｅ）は４個の角点の説明図である。
【図１０】（Ａ）は角点の例を示す説明図である。（Ｂ）はオブジェクト領域情報の例を示す説明図である。（Ｃ）はオブジェクト領域の例を示す説明図である。（Ｄ）はオブジェクト領域の例を示す説明図である。（Ｅ）は補正済の対象オブジェクト領域の例を示す説明図である。
【発明を実施するための形態】
【００１１】
Ａ．第１実施例：
Ａ１．装置構成：
図１は、一実施例としての複合機の構成を示す図である。複合機８００は、画像を表示する表示部８４０と、ユーザによる操作を受け入れる操作部８５０と、画像を読み取る読取部９００と、印刷部８６０と、複合機８００を制御する制御部８１０と、を備えている。これらの要素は、バスを介して互いに接続されている。
【００１２】
表示部８４０は、液晶ディスプレイ、有機ＥＬディスプレイなどの、画像を表示する装置である。操作部８５０は、ボタン、レバー、表示部８４０上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取る装置である。
【００１３】
図１の下部には、複合機８００の斜視図が示されている。図中の第１方向Ｄｐ１と第２方向Ｄｐ２とは、水平な方向を示し、第３方向Ｄｐ３は、鉛直上方向を示している。第１方向Ｄｐ１と第２方向Ｄｐ２とは、互いに垂直である。また、第３方向Ｄｐ３を、上方向Ｄｐ３とも呼ぶ。
【００１４】
複合機８００は、いわゆるフラットベッド式のスキャナ装置である。複合機８００は、本体部８９０と、本体部８９０の上方向Ｄｐ３側に開閉可能に取り付けられたカバー８９２と、を備えている。図１は、カバー８９２が上方向Ｄｐ３に向けて開けられた状態の複合機８００を示している。
【００１５】
本体部８９０の上方向Ｄｐ３側には、支持台８９４が設けられている。支持台８９４は、カバー８９２を上方向Ｄｐ３に向けて開くことによって、現れる。支持台８９４は、第１方向Ｄｐ１に平行な２辺と第２方向Ｄｐ２に平行な２辺とで囲まれる略矩形状の台であり、透明板（例えば、ガラス板）を用いて構成されている。支持台８９４の第３方向Ｄｐ３側の面は、読取対象のシートが支持される支持面Ｕｓである。図１では、支持面Ｕｓ上に、２枚のシートＣ１、Ｃ２が、互いに離れて配置されている。
【００１６】
本体部８９０の内部には、読取部９００が収容されている。読取部９００は、原稿を光学的に読み取るイメージセンサ９２０と、イメージセンサ９２０を第２方向Ｄｐ２に平行に移動させる移動装置９３０と、を含んでいる。
【００１７】
イメージセンサ９２０は、支持台８９４の下側（第３方向Ｄｐ３の反対側）に配置されている。本実施例では、イメージセンサ９２０は、シートを光学的に読み取る一次元イメージセンサであり、ＣＣＤやＣＭＯＳなどの複数の光電変換素子（単に、光学素子とも呼ぶ）が、第１方向Ｄｐ１に並んで配置された構成を有している。イメージセンサ９２０は、支持台８９４上のシートを、光学的に読み取ることによって、読み取ったシートを示すデータを出力する。
【００１８】
移動装置９３０は、動力源（例えば、電気モータ）を含んでいる。移動装置９３０は、動力源を用いて、イメージセンサ９２０を、支持台８９４の支持面Ｕｓに沿う方向（具体的には、第２方向Ｄｐ２と平行な方向）に移動させる。
【００１９】
本体部８９０内には、印刷部８６０が収容されている（図示省略）。印刷部８６０は、所定の方式（例えば、レーザ方式や、インクジェット方式）で、紙（印刷媒体の一例）上に画像を印刷する装置である。本実施例では、印刷部８６０は、シアンＣ、マゼンタＭ、イエロＹ、ブラックＫの４種類のインクを用いてカラー画像を印刷可能なインクジェット方式の印刷装置である。
【００２０】
本体部８９０内には、制御部８１０も収容されている（図示省略）。図１の上部に示すように、制御部８１０は、プロセッサ８１１と、記憶装置８１５と、を有している。記憶装置８１５は、揮発性記憶装置８１２と、不揮発性記憶装置８１３と、を含んでいる。プロセッサ８１１は、データ処理を行う演算装置であり、例えば、ＣＰＵである。揮発性記憶装置８１２は、例えば、ＤＲＡＭであり、不揮発性記憶装置８１３は、例えば、フラッシュメモリである。これらの要素は、バスを介して互いに接続されている。不揮発性記憶装置８１３は、プログラム８１４を格納している。プロセッサ８１１は、プログラム８１４の実行に利用される種々の中間データを、記憶装置８１５（例えば、揮発性記憶装置８１２、不揮発性記憶装置８１３のいずれか）に、一時的に格納する。プログラム８１４は、複合機８００の製造者によって、ファームウェアとして、不揮発性記憶装置８１３に予め格納されている。
【００２１】
プロセッサ８１１は、プログラム８１４を実行することによって、読取部９００を制御する。具体的には、プロセッサ８１１は、移動装置９３０を制御することによって、イメージセンサ９２０を、支持台８９４の第２方向Ｄｐ２とは反対方向側の端の位置から、第２方向Ｄｐ２に向かって、支持台８９４に沿って移動させる。プロセッサ８１１は、イメージセンサ９２０を移動させながら、イメージセンサ９２０を制御して、支持台８９４に支持されたシートをイメージセンサ９２０に光学的に読み取らせる。プロセッサ８１１は、イメージセンサ９２０から出力されるデータを用いて、シートの画像を含む対象画像の画像データである対象画像データを取得する（詳細は後述）。
【００２２】
Ａ２．画像処理：
図２は、読取処理の例を示すフローチャートである。読取処理では、シートが読取部９００によって読み取られ、そして、各シートの画像データが生成される。以下、図１の２枚のシートＣ１、Ｃ２が、読み取られることとする。シートＣ１、Ｃ２は、例えば、写真を含む略矩形の識別カードである。
【００２３】
プロセッサ８１１は、ユーザが読取処理の開始指示を操作部８５０に入力したことに応じて、読取処理を開始する。Ｓ１１０では、プロセッサ８１１は、読取部９００に、シートＣ１、Ｃ２を読み取らせ、イメージセンサ９２０からのデータを取得する。Ｓ１２０では、プロセッサ８１１は、イメージセンサ９２０からのデータを用いて、シートＣ１、Ｃ２の画像を含む対象画像の画像データである対象画像データを取得する。対象画像データは、例えば、ＲＧＢのビットマップデータである。
【００２４】
図３（Ａ）は、対象画像の例を示す概略図である。対象画像Ｉ１０は、第１方向Ｄｘと、第１方向Ｄｘに垂直な第２方向Ｄｙと、に沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値によって、表されている。第１方向Ｄｘは、支持面Ｕｓ（図１）上における第１方向Ｄｐ１に平行な方向であり、第２方向Ｄｙは、支持面Ｕｓ上における第２方向Ｄｐ２に平行な方向である。以下、第１方向Ｄｘを、横方向Ｄｘとも呼び、第２方向Ｄｙを、縦方向Ｄｙとも呼ぶ。図３（Ａ）の対象画像Ｉ１０は、第１シートＣ１の画像Ｃｉ１と、第２シートＣ２の画像Ｃｉ２と、を含んでいる。
【００２５】
Ｓ１３０（図２）では、プロセッサ８１１は、対象画像中のオブジェクト領域を特定する処理を実行する。図４は、オブジェクト領域の特定処理の例を示すフローチャートである。Ｓ２１０では、プロセッサ８１１は、対象画像内の線分である対象線分を検出する処理を実行する。
【００２６】
図５は、対象線分を検出する処理の例を示すフローチャートである。Ｓ３１０ではプロセッサ８１１は、対象画像内の複数の画素からエッジ画素を検出する。そして、プロセッサ８１１は、エッジ画素と非エッジ画素との２値の画像データであるエッジ画像データを生成する。
【００２７】
エッジ画素の検出方法は、種々の方法であってよい。本実施例では、プロセッサ８１１は、いわゆるラプラシアンフィルタを用いて各画素のエッジ強度（例えば、フィルタによる計算結果の絶対値）を算出する。そして、プロセッサ８１１は、エッジ強度が第１閾値を超えている画素を、エッジ画素として検出する。ラプラシアンフィルタは、対象画像データによって示される特定の色成分値（例えば、緑Ｇの色成分値）に適用されてよい。これに代えて、ラプラシアンフィルタは、対象画像データから算出される色成分値（例えば、輝度値）に適用されてよい。なお、第１閾値は、適切にエッジ画素を検出できるように、予め実験的に決められている。これに代えて、プロセッサ８１１は、第１閾値を調整してよい。例えば、プロセッサ８１１は、対象画像データに応じて第１閾値を調整してよい。
【００２８】
図３（Ｂ）は、エッジ画像データによって表される画像であるエッジ画像の例を示す説明図である。このエッジ画像Ｉ１５は、対象画像Ｉ１０（図３（Ａ））から得られるエッジ画像を示している。図示するように、エッジ画像Ｉ１５は、シートの画像Ｃｉ１、Ｃｉ２から検出されるエッジ画素によって表される画像を、示している。エッジ画素としては、例えば、シートＣ１、Ｃ２内の文字、写真などのオブジェクトを示す画素と、シートＣ１、Ｃ２の輪郭（すなわち、縁）を示す画素とが、検出される。
【００２９】
Ｓ３２０（図５）では、プロセッサ８１１は、対象画像内の複数のブロックからエッジブロックを特定する。本実施例では、１個のブロックの形状は矩形状である。１個のブロックのサイズは、予め決められており、例えば、４０画素×４０画素である。図示を省略するが、複数のブロックは、対象画像（例えば、対象画像Ｉ１０（図３（Ａ））上で、第１方向Ｄｘと第２方向Ｄｙとに沿ってマトリクス状に配置されている。対象画像上の各ブロックの位置は、予め決められている。
【００３０】
プロセッサ８１１は、エッジ画像データを用いて、ブロック毎にエッジ画素の総数を算出する。そして、プロセッサ８１１は、エッジ画素の総数が第２閾値以上である場合に、そのブロックを第１種エッジブロックとして選択する。エッジ画素の総数が第２閾値未満である場合、プロセッサ８１１は、そのブロックを非第１種エッジブロックとして選択する。そして、プロセッサ８１１は、第１種エッジブロックと非第１種エッジブロックとの２値の画像データである第１種エッジブロックデータを生成する。なお、第２閾値は、適切に第１種エッジブロックを検出できるように、予め実験的に決められている。これに代えて、プロセッサ８１１は、第２閾値を調整してよい。例えば、プロセッサ８１１は、対象画像データに応じて第２閾値を調整してよい。
【００３１】
図３（Ｃ）は、第１種エッジブロックデータによって表される画像である第１種エッジブロック画像の例を示す説明図である。この第１種エッジブロック画像Ｉ２０は、エッジ画像Ｉ１５（図３（Ｂ））から得られる第１種エッジブロック画像を示している。図示するように、第１種エッジブロック画像Ｉ２０は、シートの画像Ｃｉ１、Ｃｉ２から検出されるエッジ画素を含む第１種エッジブロックによって表される画像を示している。
【００３２】
Ｓ３３０（図５）では、プロセッサ８１１は、第１種エッジブロック画像のラベリング処理を行う。例えば、プロセッサ８１１は、連続する１以上の第１種エッジブロックで構成される１つの領域を、１つの連続領域として選択し、１つの連続領域に、１つの識別子を割り当てる。そして、プロセッサ８１１は、互いに離れた複数個の連続領域に、互いに異なる識別子を割り当てる。ラベリング処理としては、種々の処理を採用可能である。本実施例では、いわゆる８近傍ラベリングが行われる。これに代えて、いわゆる４近傍ラベリングが行われてよい。
【００３３】
図３（Ｄ）は、第１種エッジブロック画像Ｉ２０のラベリングの結果を示すラベリング画像の説明図である。このラベリング画像Ｉ２５は、第１種エッジブロック画像Ｉ２０（図３（Ｃ））のラベリング処理の結果を示している。８個の連続領域Ａ１〜Ａ８が検出されている。８個の連続領域Ａ１〜Ａ８には、文字「ＬＢ」から始まる符号が付されている。文字「ＬＢ」に続く数字は、連続領域の識別番号である。第１連続領域Ａ１は、第１シートＣ１の輪郭を示している。第５連続領域Ａ５は、第２シートＣ２の輪郭を示している。他の連続領域Ａ２〜Ａ４、Ａ６〜Ａ８は、それぞれ、シート内のオブジェクトを示している。このように、典型的には、ラベリングによって得られる１個の連続領域は、１つのシートの輪郭、または、シート内の１つのオブジェクトを、示している。シート内の画像によっては、シート内の２個のオブジェクトを示す複数の第１種エッジブロックが、１つの連続領域に分類される場合もある。また、シートの輪郭を示す第１種エッジブロックと、シート内のオブジェクトを示す第１種エッジブロックとが、１つの連続領域に分類される場合もある。
【００３４】
Ｓ３４０（図５）では、プロセッサ８１１は、連続領域の縁を示すブロックである第２種エッジブロックと特定する。プロセッサ８１１は、連続領域を構成する複数の第１種エッジブロックのうち、非第１種エッジブロックに隣接する第１種エッジブロックを、第２種エッジブロックとして選択する。ここで、いわゆる８近傍のブロックが、隣接するブロックとして用いられる。これに代えて、いわゆる４近傍のブロックが、隣接するブロックとして用いられてもよい。
【００３５】
図３（Ｅ）は、第２種エッジブロックによって表される画像である第２種エッジブロック画像の例を示す説明図である。この第２種エッジブロック画像Ｉ３０は、ラベリング画像Ｉ２５（図３（Ｄ））から得られる第２種エッジブロック画像を示している。図示するように、各連続領域Ａ１〜Ａ８から、第２種エッジブロックが検出される。ここで、連続領域Ａ１〜Ａ８から、第２種エッジブロックの連続領域ＡＥ１〜ＡＥ８が、それぞれ検出されたこととする。連続領域ＡＥ１〜ＡＥ８の識別子ＬＢ１〜ＬＢ８は、元の連続領域Ａ１〜Ａ８の識別子ＬＢ１〜ＬＢ８と、それぞれ同じである。
【００３６】
Ｓ３５０（図５）では、プロセッサ８１１は、第２種エッジブロック毎に、互いに異なる４つの方向のそれぞれのエッジ画素を検出する（方向エッジ画素と呼ぶ）。図６（Ａ）〜図６（Ｄ）は、１個の第２種エッジブロックＢＬＫから検出される４つの方向Ｄｘ、Ｄｙ、−Ｄｘ、−Ｄｙの方向エッジ画素Ｐｘ１、Ｐｘ２、Ｐｘ３、Ｐｘ４を、それぞれ示している。以下、第２種エッジブロックＢＬＫを、単に、ブロックＢＬＫとも呼ぶ。−Ｄｘ方向は、第１方向Ｄｘ（＋Ｄｘ方向とも呼ぶ）の反対方向であり、−Ｄｙ方向は、第２方向Ｄｙ（＋Ｄｙ方向とも呼ぶ）の反対方向である。このように、４つの方向＋Ｄｘ、＋Ｄｙ、−Ｄｘ、−Ｄｙは、右、下、左、上の４つの方向に対応する。各図中には、１個のブロックＢＬＫが示されている。このブロックＢＬＫ内のハッチングで示される領域ＡＺは、Ｓ３１０（図５）で検出されたエッジ画素の領域である。領域ＡＺは、縦に延びる線を示している。
【００３７】
図６（Ａ）に示すように、＋Ｄｘ方向の方向エッジ画素Ｐｘ１は、ブロックＢＬＫの−Ｄｘ方向の端から＋Ｄｘ方向に画素を辿る場合に、最初に検出されたエッジ画素である。他の方向＋Ｄｙ、−Ｄｘ、−Ｄｙの方向エッジ画素Ｐｘ２、Ｐｘ３、Ｐｘ４も、同様に、ブロックＢＬＫの対応する方向とは反対方向の端から、対応する方向に画素を辿る場合に、最初に検出されたエッジ画素である。なお、ブロックＢＬＫの対応する方向とは反対方向の端の画素がエッジ画素である場合、そのエッジ画素は、方向エッジ画素として検出されない。例えば、図６（Ｂ）は、＋Ｄｙ方向の方向エッジ画素Ｐｘ２が検出される。ここで、ブロックＢＬＫの＋Ｄｙ方向とは反対の−Ｄｙ方向の端のエッジ画素Ｐｘ２ｘは、＋Ｄｙ方向の方向エッジ画素としては、検出されない。
【００３８】
図６（Ａ）〜図６（Ｄ）に示すように、縦に延びる線を示す領域ＡＺからは、多数の＋Ｄｘ方向の方向エッジ画素Ｐｘ１と、多数の−Ｄｘ方向の方向エッジ画素Ｐｘ３とが、検出される。後述する処理では、これらの多数の方向エッジ画素Ｐｘ１、Ｐｘ３を用いることによって、領域ＡＺのように縦に延びる線を、適切に検出できる。図示を省略するが、横に延びる線を示す領域からは、多数の＋Ｄｙ方向の方向エッジ画素Ｐｘ２と、多数の−Ｄｙ方向の方向エッジ画素Ｐｘ４とが、検出される。後述する処理では、これらの多数の方向エッジ画素Ｐｘ２、Ｐｘ４を用いることによって、横に延びる線を、適切に検出できる。
【００３９】
Ｓ３６０（図５）では、プロセッサ８１１は、第２種エッジブロック毎に、４つの方向のそれぞれの部分線分を特定する。本実施例では、プロセッサ８１１は、複数の方向エッジ画素のそれぞれの座標を近似する直線の一部が、部分線分として用いられる。具体的には、プロセッサ８１１は、複数の方向エッジ画素のそれぞれの座標を、最小二乗法によって近似することによって近似直線を算出する。そして、プロセッサ８１１は、近似直線のうち、ブロックＢＬＫに含まれる部分を、部分線分として特定する。
【００４０】
図６（Ｅ）〜図６（Ｈ）は、図６（Ａ）〜図６（Ｄ）の第２種エッジブロックＢＬＫから検出される４つの方向Ｄｘ、Ｄｙ、−Ｄｘ、−Ｄｙの部分線分ＳＬ１〜ＳＬ４を、それぞれ示している。図６（Ｅ）〜図６（Ｈ）には、ブロックＢＬＫ内の４つの方向Ｄｘ、Ｄｙ、−Ｄｘ、−Ｄｙの方向エッジ画素Ｐｘ２、Ｐｘ３、Ｐｘ４が、それぞれ示されている。部分線分ＳＬ１〜ＳＬ４は、方向エッジ画素Ｐｘ２、Ｐｘ３、Ｐｘ４の座標を最小二乗法で近似することによって得られる近似直線の一部である。
【００４１】
部分線分の両端の特定方法は、種々の方法であってよい。本実施例では、プロセッサ８１１は、近似直線のうち、方向エッジ画素の分布範囲内の部分を、部分線分として選択する。図６（Ｆ）には、部分線分ＳＬ２の両端ｅ１、ｅ２が示されている。この部分線分ＳＬ２は、複数の方向エッジ画素Ｐｘ２から特定されている。図６（Ｆ）には、端ｅ２を含む部分の拡大図が示されている。部分線分ＳＬ２の端ｅ２は、端の画素Ｐｘ２ｅ２の座標を通り近似直線ＦＬ２に垂直な直線ＰＬ２と、近似直線ＦＬ２と、の交点である。プロセッサ８１１は、複数の方向エッジ画素Ｐｘ２の近似直線ＦＬ２に平行な方向の位置を算出し、両端の画素Ｐｘ２ｅ１、Ｐｘ２ｅ２を特定する。そして、端の画素Ｐｘ２ｅ１、Ｐｘ２ｅ２の座標を通り近似直線ＦＬ２に垂直な直線と、近似直線ＦＬ２と、の交点ｅ１、ｅ２を、部分線分ＳＬ２の両端として採用する。
【００４２】
なお、１つの方向に対応する方向エッジ画素の総数が１以下である場合、その方向の部分線分は、検出されないこととする。このように、１個の第２種エッジブロックＢＬＫからは、０本以上、４本以下の部分線分が検出され得る。
【００４３】
Ｓ３７０（図５）では、プロセッサ８１１は、Ｓ３６０で検出された複数の部分線分から、共通の１本の直線に対応する複数の部分線分のグループを、１つの線分グループとして選択する。これにより、複数の部分線分は、１以上の線分グループに、分類される。プロセッサ８１１は、複数の部分線分の分類を、連続領域毎に行う。従って、１個の線分グループは、同じ連続領域に含まれる１以上の部分線分で構成される。
【００４４】
図７（Ａ）〜図７（Ｃ）は、２本の部分線分を１つの線分グループに分類するための条件の例を示す説明図である。図７（Ａ）には、互いに隣接する２つの第２種エッジブロックＢＬＫａ、ＢＬＫｂが示されている。これらのブロックＢＬＫａ、ＢＬＫｂは、部分線分ＳＬａ、ＳＬｂを、それぞれ有している。端ｅａ１、ｅａ２は、第１部分線分ＳＬａの両端であり、端ｅｂ１、ｅｂ２は、第２部分線分ＳＬｂの両端である。第１部分線分ＳＬａの端ｅａ２は、第２部分線分ＳＬｂ側の端である。第２部分線分ＳＬｂの端ｅｂ１は、第１部分線分ＳＬａ側の端である。方向Ｄａは、第１部分線分ＳＬａに平行な方向であり、方向Ｄｂは、第２部分線分ＳＬｂに平行な方向である。
【００４５】
本実施例では、プロセッサ８１１は、２本の部分線分の間の距離が第１距離閾値以下であり、かつ、２本の部分線分が成す角度が第１角度閾値以下である場合に、２本の部分線分を同じ線分グループに分類する。
【００４６】
図７（Ｂ）は、２本の部分線分の間の距離の説明図である。図中には、２本の部分線分ＳＬａ、ＳＬｂのうち、端ｅａ２、ｅｂ１の近傍の一部分が、示されている。距離ＤＳａは、２本の部分線分ＳＬａ、ＳＬｂの間の距離を示している。本実施例では、２本の部分線分の間の距離は、一方の部分線分を延長して得られる直線である延長直線と、他方の部分線分上の任意の位置と、の間の最短距離である。換言すれば、距離は、延長直線と、他方の部分線分との間の、延長直線に垂直な方向の距離の最小値である。図７（Ｂ）の例では、距離ＤＳａは、第１部分線分ＳＬａを延長して得られる延長直線ＥＬａと、第２部分線分ＳＬｂと、の間の最短距離である。第２部分線分ＳＬｂが第１部分線分ＳＬａに対して傾斜している場合、距離ＤＳａは、第２部分線分ＳＬｂの端（ここでは、端ｅｂ１）と延長直線ＥＬａとの間の距離である。
【００４７】
図７（Ｃ）は、２本の部分線分の成す角度の説明図である。図中には、２本の部分線分ＳＬａ、ＳＬｂの方向Ｄａ、Ｄｂが示されている。本実施例では、２本の部分線分ＳＬａ、ＳＬｂが成す角度ＡＧａは、２つの方向Ｄａ、Ｄｂが成す角度である。なお、部分線分の方向は、部分線分に平行な２つの方向（すなわち、互いに反対の方向）から選択される。従って、２つの方向が成す角度は、９０度を超え得る。この場合、２本の部分線分の成す角度としては、１８０度から２つの方向が成す角度を減算して得られる角度が、採用される。
【００４８】
なお、第１距離閾値と第１角度閾値とは、同じ直線に対応する複数の部分線分が同じ線分グループに分類されるように、予め実験的に決められている。これに代えて、プロセッサ８１１は、第１距離閾値と第１角度閾値とを調整してよい。例えば、プロセッサ８１１は、対象画像データに応じて、閾値と第１角度閾値とを調整してよい。
【００４９】
Ｓ３７０（図５）では、プロセッサ８１１は、１個の連続領域内の互いに隣接する２つの第２種エッジブロックに含まれる複数の部分線分から得られる２本の部分線分の全ての組み合わせについて、距離と角度とが上記の条件を満たすか否かを判断する。そして、条件を満たす２本の部分線分を、同じ線分グループに分類する。プロセッサ８１１は、このような処理を、連続領域内の互いに隣接する２つの第２種エッジブロックの全ての組み合わせについて実行する。また、プロセッサ８１１は、このような処理を、連続領域毎に行う。ここで、いわゆる８近傍のブロックが、隣接するブロックとして用いられる。これに代えて、いわゆる４近傍のブロックが、隣接するブロックとして用いられてもよい。なお、Ｓ３４０とＳ３７０との間で、隣接するブロックの定義は、同じであってよく、異なってもよい。
【００５０】
Ｓ３８０では、プロセッサ８１１は、線分グループ毎に、１本の線分を特定する。特定される線分は、対象画像内の線分を示している（対象線分とも呼ぶ）。本実施例では、プロセッサ８１１は、１個の線分グループに含まれる全ての部分線分のそれぞれの両端の画素の座標を、最小二乗法によって近似することによって、１本の対象線分を特定する。対象線分の特定方法は、Ｓ３６０（図５）の部分線分の特定方法と同じである。対象線分の両端は、図６（Ｆ）で説明した部分線分ＳＬ２の両端ｅ１、ｅ２の特定方法と同じ方法で、特定される。
【００５１】
図７（Ｄ）は、対象線分を示す対象線分画像の例を示す説明図である。この対象線分画像Ｉ３５は、図３（Ａ）、図３（Ｅ）の画像Ｉ１０、Ｉ３０の処理によって得られる対象線分の例を示している。図示するように、対象線分画像Ｉ３５は、シートＣ１、Ｃ２（図３（Ａ））の輪郭やシートＣ１、Ｃ２内のオブジェクトを示す対象線分を表している。各対象線分には、文字「Ｌ」から始まる符号が付されている。文字「Ｌ」に続く数字は、線分グループを含む連続領域の識別番号である。識別番号に続く文字は、対象線分を区別する符号である。例えば、６本の対象線分Ｌ１ａ、Ｌ１ｂ、Ｌ１ｃ、Ｌ１ｄ、Ｌ１ｅ、Ｌ１ｆは、同じ１番の連続領域ＡＥ１（図３（Ｅ））から検出された対象線分である。２本の対象線分Ｌ１ｃ、Ｌ１ｄは、第１シートＣ１（図３（Ａ））の輪郭のうちの第１方向Ｄｘ側の同じ辺に対応している。このように、対象画像Ｉ１０内の１本の線分は、同じ連続領域内の互いに離れた複数の対象線分Ｌ１ｃ、Ｌ１ｄによって、表され得る。
【００５２】
Ｓ３９０（図５）では、プロセッサ８１１は、各対象線分に、対象線分を含む連続領域の識別子と同じ識別子を付与する。例えば、プロセッサ８１１は、６本の対象線分Ｌ１ａ、Ｌ１ｂ、Ｌ１ｃ、Ｌ１ｄ、Ｌ１ｅ、Ｌ１ｆには、連続領域ＡＥ１と同じ識別子（ここでは、１番）を付与する。そして、図５の処理、ひいては、図４のＳ２１０が、終了する。
【００５３】
図４のＳ２２０では、プロセッサ８１１は、対象線分を用いて矩形の角点を検出する。後述するように、矩形は、シートの輪郭として用いられる。図８は、角点を検出する処理の例を示すフローチャートである。Ｓ４１０では、プロセッサ８１１は、未処理の連続領域の識別子を対象識別子として選択する。
【００５４】
Ｓ４１５では、プロセッサ８１１は、対象識別子に対応する複数の対象線分を結合する処理を行う。図７（Ｄ）で説明したように、対象画像Ｉ１０（図３（Ａ））内の１本の線分は、同じ連続領域内の互いに離れた複数の対象線分によって、表され得る（例えば、対象線分Ｌ１ｃ、Ｌ１ｄ）。Ｓ４１５では、プロセッサ８１１は、このような複数の対象線分を結合することによって１本の対象線分を生成する。
【００５５】
図９（Ａ）、図９（Ｂ）は、２本の対象線分を結合するための条件の例を示す説明図である。本実施例では、プロセッサ８１１は、２本の対象線分の間の距離が第２距離閾値以下であり、かつ、２本の対象線分が成す角度が第２角度閾値以下である場合に、２本の対象線分を結合する。
【００５６】
図９（Ａ）は、２本の対象線分の間の距離の説明図である。図中には、２本の対象線分Ｌ１ｃ、Ｌ１ｄのうちの一部分が示されている。対象線分Ｌ１ｃの端ｅ１ｃは、対象線分Ｌ１ｄ側の端である。対象線分Ｌ１ｄの端ｅ１ｄは、対象線分Ｌ１ｃ側の端である。距離ＤＳｂは、対象線分Ｌ１ｃ、Ｌ１ｄの間の距離である。この距離ＤＳｂは、図７（Ｂ）で説明した距離ＤＳａの算出方法と同じ方法によって、算出される。
【００５７】
図９（Ｂ）は、２本の部分線分の成す角度の説明図である。方向ＤＬ１ｃは、対象線分Ｌ１ｃに平行な方向であり、方向ＤＬ１ｄは、対象線分Ｌ１ｄに平行な方向である。角度ＡＧｂは、２つの方向ＤＬ１ｃ、ＤＬ１ｄが成す角度である。この角度ＡＧｂが、２本の対象線分Ｌ１ｃ、Ｌ１ｄが成す角度として用いられる。角度ＡＧｂは、図７（Ｃ）で説明した角度ＡＧａの算出方法と同じ方法によって、算出される。
【００５８】
距離ＤＳｂが第２距離閾値以下であり、かつ、角度ＡＧｂが第２角度閾値以下である場合、プロセッサ８１１は、２本の対象線分Ｌ１ｃ、Ｌ１ｄを結合して１本の対象線分を生成する。図９（Ｃ）は、対象線分を示す対象線分画像の例を示す説明図である。この対象線分画像Ｉ４０は、図７（Ｄ）の対象線分画像Ｉ３５にＳ４１５（図８）の処理を行うことによって得られる対象線分を示している。２本の対象線分Ｌ１ｃ、Ｌ１ｄ（図７（Ｄ））は、１本の対象線分Ｌ１ｃｄに置換され、２本の対象線分Ｌ５ｄ、Ｌ５ｅ（図７（Ｄ））は、１本の対象線分Ｌ５ｄｅに置換されている。
【００５９】
複数の対象線分から１本の対象線分を特定する方法は、図５のＳ３８０の方法と同じである。プロセッサ８１１は、結合すべき複数の対象線分のそれぞれの両端の画素の座標を、最小二乗法によって近似することによって、１本の対象線分を特定する。
【００６０】
Ｓ４１５（図８）では、プロセッサ８１１は、対象識別子に対応付けられた複数の対象線分から得られる２本の対象線分の全ての組み合わせについて、距離と角度とが上記の条件を満たすか否かを判断する。プロセッサ８１１は、条件を満たす２本の対象線分を、同じ結合グループに分類する。そして、プロセッサ８１１は、１個の結合グループに含まれる複数の対象線分を結合することによって、新たな１本の対象線分を生成する。複数の対象線分の結合は、結合グループ毎に行われる。
【００６１】
なお、第２距離閾値と第２角度閾値とは、同じ直線に対応する複数の対象線分が結合されるように、予め実験的に決められている。本実施例では、第２距離閾値は、Ｓ３７０（図５）で用いられる第１距離閾値よりも大きい値に、予め決定されている。第２角度閾値は、Ｓ３７０で用いられる第１角度閾値と同じである。なお、第２距離閾値と第２角度閾値とは、他の種々の値であってよい。また、プロセッサ８１１は、第２距離閾値と第２角度閾値とを調整してよい。例えば、プロセッサ８１１は、対象画像データに応じて、第２距離閾値と第２角度閾値とを調整してよい。
【００６２】
Ｓ４２０（図８）では、プロセッサ８１１は、対象識別子に対応付けられた複数の対象線分の重心位置を算出する。図９（Ｄ）は、対象識別子に対応付けられた複数の対象線分の例を示す説明図である。図中には、１番の対象識別子に対応付けられた５本の対象線分Ｌ１ａ、Ｌ１ｂ、Ｌ１ｃｄ、Ｌ１ｅ、Ｌ１ｆが、示されている。点ＰＣは、５本の対象線分Ｌ１ａ、Ｌ１ｂ、Ｌ１ｃｄ、Ｌ１ｅ、Ｌ１ｆの重心である（重心ＰＣとも呼ぶ）。
【００６３】
複数の対象線分の重心の算出方法としては、任意の方法を採用可能である。例えば、プロセッサ８１１は、以下の方法で重心を算出可能である。プロセッサ８１１は、各対象線分の中点の座標を、対象線分の重心の座標として算出する。プロセッサ８１１は、複数の対象線分のそれぞれの重心の座標の重み付き平均の座標を、複数の対象線分の重心の座標として算出する。ここで、重みは、対象線分の長さである。
【００６４】
Ｓ４３０（図８）では、プロセッサ８１１は、対象線分毎に、特徴量を算出する。特徴量は、対象線分がシートの輪郭の一部を示す可能性の高さを示している。この可能性は、対象線分の長さ（線分長とも呼ぶ）が長いほど、高い。また、この可能性は、対象線分に垂直な方向の対象線分と重心との間の距離（重心距離とも呼ぶ）が長いほど、高い。図９（Ｄ）の５個の距離Ｄ１ａ、Ｄ１ｂ、Ｄ１ｃｄ、Ｄ１ｅ、Ｄ１ｆは、５本の対象線分Ｌ１ａ、Ｌ１ｂ、Ｌ１ｃｄ、Ｌ１ｅ、Ｌ１ｆのそれぞれの重心距離を示している。本実施例では、プロセッサ８１１は、線分長と重心距離との合計値を、特徴量として算出する。
【００６５】
Ｓ４４０（図８）では、プロセッサ８１１は、最大の特徴量を有する対象線分を、第１代表線分として選択する。図９（Ｄ）の例では、対象線分Ｌ１ｅが第１代表線分として選択されることとする。
【００６６】
Ｓ４５０では、プロセッサ８１１は、第１代表線分を用いて、シートの輪郭を示す可能性の高い対象線分を、候補線分として選択する。本実施例では、以下の条件Ａ、Ｂを満たす対象線分と、条件Ａ、Ｃを満たす対象線分とが、候補線分として選択される。
条件Ａ）対象線分の線分長が線分長閾値以上である。
条件Ｂ）対象線分と第１代表線分とが平行条件を満たす。
条件Ｃ）対象線分と第１代表線分とが垂直条件を満たす。
【００６７】
線分長閾値は、検出すべきシートの大きさを考慮して、予め決められている。例えば、線分長閾値は、想定されているシートの短辺の長さよりも小さい値に設定される。
【００６８】
平行条件は、対象線分と第１代表線分とが成す角度が、ゼロ度を含む第１範囲内であることである。角度は、図７（Ｃ）で説明した角度ＡＧａの算出方法と同じ方法によって、算出される。第１範囲は、シートの互いに平行な２辺に対応する２本の対象線分が平行条件を満たし、互いに平行ではない２本の対象線分が平行条件を満たさないように、予め実験的に決められている。ここで、第１範囲は、シートの製造誤差や読取部９００（図１）による読取りの誤差などの種々の誤差が許容されるように、決定される。第１範囲は、例えば、ゼロ度以上、５度以下の範囲である。
【００６９】
垂直条件は、対象線分と第１代表線分とが成す角度が、９０度を含む第２範囲内であることである。角度は、図７（Ｃ）で説明した角度ＡＧａと同じ方法によって、算出される。第２範囲は、シートの互いに垂直な２辺に対応する２本の対象線分が垂直条件を満たし、互いに垂直ではない２本の対象線分が垂直条件を満たさないように、予め実験的に決められている。ここで、第２範囲は、シートの製造誤差や読取部９００（図１）による読取りの誤差などの種々の誤差が許容されるように、決定される。第２範囲は、例えば、８５度以上、９０度以下の範囲である。
【００７０】
以上の条件に従って、プロセッサ８１１は、第１代表線分と共にシートの輪郭を示す可能性の高い対象線分を、候補線分として選択する。図９（Ｄ）の例では、対象線分Ｌ１ａ、Ｌ１ｂが、条件Ａ、Ｂを満たし、対象線分Ｌ１ｃｄ、Ｌ１ｆが、条件Ａ、Ｃを満たすこととする。
【００７１】
Ｓ４６０（図８）では、プロセッサ８１１は、候補線分のうち、第１代表線分との上記の平行条件を満たし、かつ、第１代表線分から最も遠い候補線分を、第２代表線分として選択する。図９（Ｄ）の例では、２本の候補線分Ｌ１ａ、Ｌ１ｂが、第１代表線分Ｌ１ｅとの平行条件を満たしている。これらの候補線分Ｌ１ａ、Ｌ１ｂのうち、第１代表線分Ｌ１ｅから最も遠い線分は、候補線分Ｌ１ａである。従って、プロセッサ８１１は、候補線分Ｌ１ａを、第２代表線分として、選択する。通常は、シートの輪郭の内側には、オブジェクトを示すとともに輪郭に連続する他の対象線分が配置され得るが、シートの輪郭の外側には、輪郭に連続する他の対象線分は配置されない。従って、Ｓ４６０の上記の条件によって、プロセッサ８１１は、シートの輪郭の４辺のうち第１代表線分に対応する辺に平行な他の辺を示す候補線分を、第２代表線分として選択できる。
【００７２】
Ｓ４７０では、プロセッサ８１１は、候補線分のうち、第１代表線分との上記の垂直条件を満たし、かつ、最も外側の候補線分を、第３代表線分として選択する。ここで、最も外側の線分は、重心から最も遠い線分である。図９（Ｄ）の例では、２本の対象線分Ｌ１ｃｄ、Ｌ１ｆが、第１代表線分との垂直条件を満たしている。これらの候補線分Ｌ１ｃｄ、Ｌ１ｆのうち、重心ＰＣから最も遠い線分は、候補線分Ｌ１ｆである。従って、プロセッサ８１１は、候補線分Ｌ１ｆを、第３代表線分として、選択する。上述したように、通常は、シートの輪郭の外側には、輪郭に連続する他の対象線分は配置されない。従って、Ｓ４７０の上記の条件によって、プロセッサ８１１は、シートの輪郭の辺を示す候補線分を、第３代表線分として選択できる。
【００７３】
Ｓ４８０では、プロセッサ８１１は、候補線分のうち、第１代表線分との上記の垂直条件を満たし、かつ、第３代表線分の反対側の最も外側の候補線分を、第３代表線分として選択する。第３代表線分の反対側の候補線分は、重心を挟んで第３代表線分に対向する線分である。図９（Ｄ）の例では、対象線分Ｌ１ｃｄが、第１代表線分との垂直条件を満たしている。この候補線分Ｌ１ｃｄは、重心ＰＣを挟んで第３代表線分Ｌ１ｆと対向している。そして、候補線分Ｌ１ｃｄは、第３代表線分Ｌ１ｆの反対側の線分のうち、重心ＰＣから最も遠い線分である。従って、プロセッサ８１１は、候補線分Ｌ１ｃｄを、第４代表線分として、選択する。上述したように、通常は、シートの輪郭の外側には、輪郭に連続する他の対象線分は配置されない。従って、Ｓ４８０の上記の条件によって、プロセッサ８１１は、シートの輪郭の辺を示す候補線分を、第４代表線分として選択できる。
【００７４】
Ｓ４９０では、プロセッサ８１１は、４本の代表線分のそれぞれを延長することによって、４個の交点（すなわち、４個の角点）を特定する。図９（Ｅ）は、４個の角点の説明図である。図中の４本の直線Ｌ１ａｅ、Ｌ１ｃｄｅ、Ｌ１ｅｅ、Ｌ１ｆｅは、図９（Ｄ）の４本の代表線分Ｌ１ａ、Ｌ１ｃｄ、Ｌ１ｅ、Ｌ１ｆを、それぞれ延長して得られる直線である。４本の直線Ｌ１ａｅ、Ｌ１ｃｄｅ、Ｌ１ｅｅ、Ｌ１ｆｅは、四角形Ｑ１を形成している。４個の交点Ｃ１１、Ｃ１２、Ｃ１３、Ｃ１４は、それぞれ、互いに異なる２本の代表線分の交点であり、四角形Ｑ１の４個の角点である。なお、四角形Ｑ１の４個の角の内角は、おおよそ９０度である。従って、四角形Ｑ１は、略矩形である。
【００７５】
Ｓ４９５では、プロセッサ８１１は、全ての連続領域（すなわち、識別子）の処理が終了したか否か判断する。未処理の連続領域が残っている場合（Ｓ４９５：Ｎｏ）、プロセッサ８１１は、Ｓ４１０へ移行する。全ての連続領域の処理が終了した場合（Ｓ４９５：Ｙｅｓ）、プロセッサ８１１は、図８の処理、すなわち、図４のＳ２２０の処理を、終了する。
【００７６】
Ｓ２３０では、プロセッサ８１１は、不要な角点を除去する処理を行う。図１０（Ａ）は、図４のＳ２２０で検出される角点の例を示す説明図である。図中には、第１四角形Ｑ１の４個の角点Ｃ１１〜Ｃ１４と、第２四角形Ｑ２の４個の角点Ｃ２１〜Ｃ２４と、が示されている。第２四角形Ｑ２は、第１四角形Ｑ１の内部に含まれている。第１四角形Ｑ１は、第１シートＣ１の輪郭を示し、第２四角形Ｑ２は、第１シートＣ１の内の四角のオブジェクトの輪郭を示している。このように、他の四角形の内部に配置される四角形は、シートの内のオブジェクトを示している可能性が高い。本実施例では、プロセッサ８１１は、連続領域毎に特定された４個の角点の座標を用いて、４個の角点で構成される四角形の包含関係を特定する。そして、他の四角形の内に含まれる四角形の４個の角点を、処理対象の角点から除去する。図１０（Ａ）の例では、第２四角形Ｑ２の４個の角点Ｃ２１〜Ｃ２４が、除去される。
【００７７】
Ｓ２４０（図４）では、プロセッサ８１１は、角点を用いて矩形のオブジェクト領域を示すオブジェクト領域情報を生成する。図１０（Ｂ）は、オブジェクト領域情報の例を示す説明図である。図中の４個の角点Ｃ１１〜Ｃ１４は、図１０（Ａ）の４個の角点Ｃ１１〜Ｃ１４と同じである。プロセッサ８１１は、４個の角点Ｃ１１〜Ｃ１４によって形成される矩形の幅Ｗ１と高さＨ１と中心座標ＲＣ１と傾斜角ＡＧ１とを、オブジェクト領域情報として算出する。傾斜角ＡＧ１は、対象画像内における第１方向Ｄｘに対する矩形の辺の方向ＤＲ１の傾きを示している。支持面Ｕｓ（図１）上で、シートＣ１が第１方向Ｄｐ１に対して傾いた状態で配置された場合、対象画像内において、４個の角点Ｃ１１〜Ｃ１４で構成される矩形は、第１方向Ｄｘに対して傾く。矩形の辺の方向ＤＲ１は、矩形の４辺のうち第１方向Ｄｘに対する傾きの最も小さい辺を用いて、特定される。
【００７８】
上述したように、角点Ｃ１１〜Ｃ１４によって形成される四角形Ｑ１は、厳密な矩形ではない場合がある。プロセッサ８１１は、角点Ｃ１１〜Ｃ１４によって形成される矩形として、角点Ｃ１１〜Ｃ１４を近似する矩形を用いてよい。角点Ｃ１１〜Ｃ１４を近似する矩形を特定する方法は、種々の方法であってよい。例えば、プロセッサ８１１は、第１代表線分を含む辺を有する矩形であって、４個の角点を含む最小の矩形を、採用してよい。
【００７９】
Ｓ２４０（図４）では、プロセッサ８１１は、連続領域毎に、オブジェクト領域情報を生成する。図１０（Ｃ）は、オブジェクト領域情報によって示されるオブジェクト領域の例を示す説明図である。図中には、図３（Ａ）と同じ対象画像Ｉ１０が示されている。第１オブジェクト領域Ｒ１は、第１シートＣ１の画像Ｃｉ１を示す矩形領域である。第２オブジェクト領域Ｒ２は、第２シートＣ２の画像Ｃｉ２を示す矩形領域である。このように、プロセッサ８１１は、シートの輪郭を示す辺を有する矩形のオブジェクト領域の情報を、生成できる。また、対象画像Ｉ１０が複数のシートＣ１、Ｃ２の画像Ｃｉ１、Ｃｉ２を含む場合に、プロセッサ８１１は、各シートＣ１、Ｃ２の輪郭を示す矩形の領域Ｒ１、Ｒ２を、適切に特定できる。
【００８０】
オブジェクト領域情報の生成の終了によって、図４の処理、すなわち、図２のＳ１３０の処理が終了する。続いて、プロセッサ８１１は、オブジェクト領域の画像を表すオブジェクト画像データを生成する処理を実行する。
【００８１】
Ｓ１４０では、プロセッサ８１１は、未処理のオブジェクト領域を、対象オブジェクト領域として選択する。Ｓ１５０では、プロセッサ８１１は、対象画像データのうち対象オブジェクト領域を示す部分を切り出すクロップ処理実行する。図１０（Ｄ）は、切り出されたオブジェクト領域の例を示す説明図である。図中には、図１０（Ｃ）の第１オブジェクト領域Ｒ１が、示されている。第１オブジェクト領域Ｒ１の外の部分は、削除されている。
【００８２】
Ｓ１６０（図２）では、プロセッサ８１１は、対象オブジェクト領域の傾斜角に基づいて、対象オブジェクト領域の傾きを補正する処理を実行する。具体的には、プロセッサ８１１は、傾斜角がゼロになるように、対象オブジェクト領域を回転させる。そして、プロセッサ８１１は、補正済のオブジェクト領域を表すオブジェクト画像データを生成する。図１０（Ｅ）は、補正済の対象オブジェクト領域の例を示す説明図である。図中のオブジェクト領域Ｒ１ｒは、図１０（Ｄ）のオブジェクト領域Ｒ１の傾きを補正して得られる画像を示している。図示するように、矩形状のオブジェクト領域Ｒ１の横に延びる辺は、第１方向Ｄｘに平行であり、縦に延びる辺は、第２方向Ｄｙに平行である。
【００８３】
Ｓ１７０（図２）では、プロセッサ８１１は、Ｓ１６０で生成したオブジェクト画像データを、記憶装置に格納する。本実施例では、プロセッサ８１１は、オブジェクト画像データを不揮発性記憶装置８１３（図１）に格納する。これに代えて、プロセッサ８１１は、ユーザによって指定された記憶装置（例えば、複合機８００に接続された図示しない携帯記憶装置）に、オブジェクト画像データを格納してよい。
【００８４】
Ｓ１８０では、プロセッサ８１１は、全てのオブジェクト領域の処理が終了したか否かを判断する。未処理のオブジェクト領域が残っている場合（Ｓ１８０：Ｎｏ）、プロセッサ８１１は、Ｓ１４０へ移行する。全てのオブジェクト領域の処理が終了した場合（Ｓ１８０：Ｙｅｓ）、プロセッサ８１１は、図２の処理を終了する。
【００８５】
以上のように、本実施例では、図２のＳ１２０で、プロセッサ８１１は、対象画像データを取得する。図５のＳ３１０〜Ｓ３５０では、プロセッサ８１１は、対象画像データによって表現される対象画像からエッジ画素を検出する処理を実行する。図５のＳ３６０では、プロセッサ８１１は、対象画像を構成する複数のブロックのうちのエッジ画素を含むブロック毎に、ブロック内のエッジ画素の座標を用いて、ブロック内の線分である部分線分を検出する処理を実行する。図５のＳ３７０〜Ｓ３８０では、プロセッサ８１１は、複数のブロックから検出された部分線分を用いて、対象画像内の線分である対象線分を特定する。このように、プロセッサ８１１は、ブロック毎に検出された部分線分を用いて対象画像内の線分を特定するので、精度良く線分を特定できる。
【００８６】
また、図５のＳ３５０、図６（Ａ）〜図６（Ｄ）で説明したように、プロセッサ８１１は、互いに異なる４つの方向＋Ｄｘ、＋Ｄｙ、−Ｄｘ、−Ｄｙのそれぞれのエッジ画素Ｐｘ１、Ｐｘ２、Ｐｘ３、Ｐｘ４を検出する。従って、種々の方向に延びる線を示す部分線分を、適切に、検出できる。
【００８７】
また、図５のＳ３６０、図６（Ｅ）〜図６（Ｈ）で説明したように、プロセッサ８１１は、４つの方向＋Ｄｘ、＋Ｄｙ、−Ｄｘ、−Ｄｙのそれぞれについて、方向に対応するエッジ画素の座標を用いて方向に対応する部分線分を検出する。そして、Ｓ３７０、Ｓ３８０で説明したように、プロセッサ８１１は、複数のブロックから方向毎に検出された部分線分を用いて、対象画像内の対象線分を特定する。このように、プロセッサ８１１は、方向毎に検出された部分線分を用いて対象線分を特定するので、種々の方向に延びる線分を、適切に、特定できる。
【００８８】
また、Ｓ３６０で説明したように、プロセッサ８１１は、各ブロックにおいて、複数のエッジ画素のそれぞれの座標を最小二乗法で近似することによって得られる直線の一部を、部分線分として検出する。従って、プロセッサ８１１は、複数のエッジ画素の座標を用いて適切な部分線分を検出できる。また、ハフ変換を用いる方法や、高速フーリエ変換とウエーブレット変換とを用いる方法と比べて、小さい容量の記憶装置を用いて処理を進行できる。
【００８９】
また、図２のＳ１１０、Ｓ１２０で説明したように、プロセッサ８１１は、シートを光学的に読み取る読取部９００からのデータを用いて、シートの画像を含む対象画像を表現する対象画像データを取得する。そして、図４のＳ２２０〜Ｓ２４０、図８の処理では、プロセッサ８１１は、対象画像内の対象線分を用いて、対象画像内のシートの輪郭を示す矩形を特定する。この構成によれば、プロセッサ８１１は、対象画像内のシートの輪郭を示す矩形を、適切に、特定できる。
【００９０】
また、図５のＳ３２０、Ｓ３３０で説明したように、プロセッサ８１１は、対象画像からエッジ画素を含む複数のブロックが連続する連続領域を特定する。そして、図８の処理では、プロセッサ８１１は、連続領域毎に、連続領域に含まれる対象線分を用いて４個の角点を特定する。そして、図４のＳ２３０、Ｓ２４０では、４個の角点を用いて、矩形を特定する。すなわち、連続領域毎に、矩形が特定される。この構成によれば、図３（Ａ）の対象画像Ｉ１０のように、対象画像が複数のシートの画像を含む場合に、図１０（Ｃ）で説明したように、プロセッサ８１１は、各シートの輪郭を示す矩形を、適切に特定できる。
【００９１】
また、図８のＳ４２０〜Ｓ４８０、図９（Ｄ）、図９（Ｅ）で説明したように、プロセッサ８１１は、複数の対象線分の重心の位置と、複数の対象線分のそれぞれの長さと、を用いて、シートの輪郭の一部を示す対象線分を特定する。これにより、シートの輪郭の一部を示す対象線分を、適切に、特定できる。
【００９２】
また、図１に示すように、複合機８００は、読取装置の例である。具体的には、複合機８００は、図２の読取処理を実行する画像処理装置の例である制御部８１０と、シートを載せるための支持台８９４と、支持台８９４に載せられたシートを光学的に読み取る読取部９００と、を備えている。そして、図２のＳ１１０、Ｓ１２０で説明したように、制御部８１０のプロセッサ８１１は、読取部９００からのデータを用いて、対象画像データを取得する。従って、複合機８００を用いることによって、他の装置を用いずに、画像処理を進行できる。
【００９３】
Ｂ．変形例：
（１）図６（Ａ）等に示すブロックＢＬＫは、対象画像を構成する複数の部分領域の例である。部分領域の形状は、正方形に代えて、長方形など、他の種々の形状であってよい。なお、部分領域の大きさが大きい場合には、１個の部分領域に複数の線分が含まれ易い。１個の部分領域に複数の線分が含まれる場合、適切な対象線分の特定が難しい。部分領域の大きさが小さい場合には、１個の部分領域に含まれるエッジ画素の総数は、容易に少なくなる。１個の部分領域に含まれるエッジ画素の総数が少ない場合、適切な対象線分の特定が難しい。従って、部分領域の形状と大きさとは、検出すべき線分を含む種々の画像を用いて、実験的に決定されてよい。
【００９４】
（２）エッジ強度を算出するためのフィルタは、ラプラシアンフィルタに代えて、エッジ強度を算出するための任意のフィルタであってよい（ソーベルフィルタ、プレウィットフィルタなど）。ソーベルフィルタ、プレウィットフィルタ等の特定の方向の差分を算出するフィルタを用いる場合には、エッジ画素を検出するために、複数の方向のエッジ強度を総合して得られるエッジ強度が用いられてよい。例えば、第１方向Ｄｘのエッジ強度と第２方向Ｄｙのエッジ強度との合計値が、エッジ強度として用いられてよい。
【００９５】
（３）対象線分の特定処理は、図５で説明した処理に代えて、他の種々の処理であってよい。例えば、Ｓ３５０が省略されて、Ｓ３６０では、プロセッサ８１１は、第２種エッジブロックに含まれる全てのエッジ画素を用いて、部分線分を特定してよい。また、Ｓ３６０では、プロセッサ８１１は、１個の第２種エッジブロックに含まれる全ての方向の複数のエッジ画素を用いて、１本の部分線分を特定してよい。また、近似直線のうちブロックに含まれる部分の全体が、部分線分として用いられてよい。また、複数のエッジ画素を用いて部分線分を特定する処理は、最小二乗法に代えて、ハフ変換を用いる処理であってよい。
【００９６】
また、Ｓ３３０、Ｓ３４０が省略されてよい。この場合、Ｓ３６０では、プロセッサ８１１は、全ての第１種エッジブロックの部分線分を特定してよい。Ｓ３７０では、プロセッサ８１１は、全ての第１種エッジブロックの複数の部分線分を、線分グループに分類してよい。そして、図８の処理では、プロセッサ８１１は、対象画像に含まれる全ての部分線分を用いて、１個の矩形の４個の角点を特定してよい。この場合も、対象画像に含まれるシートの画像の総数が１である場合には、適切に、シートの輪郭に対応する矩形を特定できる。
【００９７】
（４）対象線分を用いて特定される矩形は、シートの輪郭を示す矩形に代えて、他の任意のオブジェクトを示す矩形であってよい。例えば、対象画像が２次元コードを含む場合に、プロセッサ８１１は、上記の実施例の処理を実行することによって、対象画像から２次元コードを抽出することができる。プロセッサ８１１は、抽出された２次元コードの画像を、表示部８４０に表示させてよい。
【００９８】
いずれの場合も、矩形を特定する処理は、図４、図８で説明した処理に代えて、他の種々の処理であってよい。例えば、図８のＳ４３０では、線分長が省略されて、特徴量は、重心距離であってよい。これに代えて、重心距離が省略されて、特徴量は、線分長であってよい。また、特徴量は、線分長と重心距離との重み付きの合計値であってよい（線分長と重心距離とのそれぞれの重みは、予め実験的に決定されてよい）。一般的に、特徴量は、線分長と相関を有する値であることが好ましい。また、特徴量は、重心距離と相関を有する値であることが好ましい。
【００９９】
また、矩形の一部を示す対象線分は、重心を用いずに、特定されてよい。例えば、プロセッサ８１１は、４本の対象線分を延長して得られる４本の延長直線で囲まれる四角領域の面積が最大となるような４本の対象線分を、選択してよい。
【０１００】
（５）対象画像から特定される矩形は、種々の処理に利用されてよい。例えば、図２のＳ１７０では、プロセッサ８１１は、クロップ処理されたオブジェクト画像を、表示部８４０に表示させてよい。また、プロセッサ８１１は、対象画像内の矩形の位置と大きさとをユーザに示すために、対象画像上に矩形を示す図形が重なる重畳画像を、表示部８４０に表示させてよい。
【０１０１】
（６）対象画像から特定される対象線分を用いる処理は、種々の処理であってよい。例えば、プロセッサ８１１は、対象線分を用いて対象画像の傾き補正を行ってよい。対象画像から複数の対象線分が特定される場合、プロセッサ８１１は、特定の条件を満たす対象線分（例えば、最長の対象線分）に従って、傾き補正を行ってよい。また、プロセッサ８１１は、対象線分を用いて対象画像内のオブジェクト領域を特定する処理を、行ってよい。
【０１０２】
（７）読取部９００の構成は、図１の構成に代えて、他の種々の構成であってよい。例えば、読取部９００は、イメージセンサ９２０に対してシートを搬送する搬送装置を備えてよい。そして、イメージセンサ９２０は、移動せずに、搬送装置によって搬送されるシートを読み取ることによって、シートの全体を読み取ってよい。
【０１０３】
（８）対象画像から対象線分を特定する画像処理装置は、複合機８００の制御部８１０に代えて、他の種々の装置であってよい。例えば、読取部９００は、画像処理装置に接続可能な外部装置であってよい。このように画像処理装置は、いわゆる複合機とは異なる種類の装置であってよい（例えば、パーソナルコンピュータ、タブレットコンピュータ、スマートフォンなど）。また、対象画像データは、シートを読み取る読取部によって生成されたデータに代えて、デジタルカメラによって生成されたデータを用いて、取得されてよい。また、読取部９００やデジタルカメラのように対象物を光学的に読み取る装置によって生成されるデータに代えて、他の任意のデータを用いて、対象画像データが取得されてよい。例えば、画像編集アプリケーションプログラムによって生成された画像データが、対象画像データとして利用されてよい。
【０１０４】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図４のＳ２１０の機能は、専用のハードウェア回路によって実現してもよい。
【０１０５】
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体（例えば、一時的ではない記録媒体）に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体（コンピュータ読み取り可能な記録媒体）に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやＣＤ−ＲＯＭのような携帯型の記録媒体に限らず、各種ＲＯＭ等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【０１０６】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【０１０７】
８００…複合機、８１０…制御部、８１１…プロセッサ、８１２…揮発性記憶装置、８１３…不揮発性記憶装置、８１４…プログラム、８１５…記憶装置、８４０…表示部、８５０…操作部、８６０…印刷部、８９０…本体部、８９２…カバー、８９４…支持台、９００…読取部、９２０…イメージセンサ、９３０…移動装置、Ｃ１…第１シート、Ｃ２…第２シート
【図１】
2020107039.tif 000003
【図２】
2020107039.tif 000004
【図３】
2020107039.tif 000005
【図４】
2020107039.tif 000006
【図５】
2020107039.tif 000007
【図６】
2020107039.tif 000008
【図７】
2020107039.tif 000009
【図８】
2020107039.tif 000010
【図９】
2020107039.tif 000011
【図１０】
2020107039.tif 000012