(58)【調査した分野】(Int.Cl.,DB名)
前記矩形選択部は、相互に重複する矩形候補が複数存在する場合に、当該重複する矩形候補のうち前記第1の評価点と前記第2の評価点の合計が最も高い矩形候補を矩形として選択する、請求項2又は3に記載の画像処理装置。
前記エッジ画素抽出部は、前記入力画像から画素を間引いた縮小画像を生成し、前記縮小画像からエッジ画素を抽出し、当該抽出したエッジ画素からなる画像を前記入力画像と同一の解像度に拡大し、前記入力画像からエッジ画素を抽出するとき、当該拡大した画像内のエッジ画素と同一の位置に存在するエッジ画素のみを抽出する、請求項1〜7の何れか一項に記載の画像処理装置。
前記エッジ画素抽出部は、前記縮小画像から抽出したエッジ画素のうち相互に隣接するエッジ画素をグループとしてまとめ、当該グループの大きさが所定サイズ以下である場合、当該グループ内のエッジ画素を除去する、請求項8に記載の画像処理装置。
【発明を実施するための形態】
【0026】
以下、本発明に係る画像処理装置、矩形検出方法及びコンピュータプログラムについて図を参照しつつ説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
【0027】
図1は、本発明を適用した画像処理システムの概略構成を示す図である。
図1に示すように、画像処理システム1は、画像読取装置10と、情報処理装置20とを有する。画像読取装置10は、例えばイメージスキャナ、デジタルカメラ等であり、情報処理装置20は、例えば画像読取装置10に接続して用いられるパーソナルコンピュータ等である。
【0028】
画像読取装置10は、画像入力部11と、第1画像メモリ部12と、第1インターフェース部13と、第1記憶部14と、第1中央処理部15とを有する。以下、画像読取装置10の各部について詳細に説明する。
【0029】
画像入力部11は、撮像対象物である原稿等を撮像する撮像センサを有する。この撮像センサは、1次元又は2次元に配列されたCCD、CMOS等の撮像素子と、撮像素子に撮像対象物の像を結像する光学系を備え、各撮像素子は、RGB各色に対応するアナログ値を出力する。そして、画像入力部11は、撮像センサが出力した各アナログ値をデジタル値に変換して画素データを生成し、生成した各画素データから構成される画像データ(以下、RGB画像と称する)を生成する。このRGB画像は、各画素データが、例えばRGB各色毎に8bitで表される計24bitのRGB値からなるカラー画像データとなる。
【0030】
そして、画像入力部11は、RGB画像、またはRGB画像の各画素のRGB値を輝度値及び色差値(YUV値)に変換した画像(以下、読取画像と称する)を生成し、第1画像メモリ部12に保存する。なお、YUV値は、例えば以下の式により算出することができる。
Y値= 0.30×R値+0.59×G値+0.11×B値 (1)
U値=−0.17×R値−0.33×G値+0.50×B値 (2)
V値= 0.50×R値−0.42×G値−0.08×B値 (3)
【0031】
第1画像メモリ部12は、不揮発性半導体メモリ、揮発性半導体メモリ、磁気ディスク等の記憶装置を有する。第1画像メモリ部12は、画像入力部11と接続され、画像入力部11により生成された読取画像を保存する。
【0032】
第1インターフェース部13は、USB等のシリアルバスに準じるインターフェース回路を有し、情報処理装置20と電気的に接続して画像データ及び各種の情報を送受信する。また、第1インターフェース部13にフラッシュメモリ等を接続して第1画像メモリ部12に保存されている画像データを一旦保存し、情報処理装置20に複写するようにしてもよい。
【0033】
第1記憶部14は、RAM、ROM等のメモリ装置、ハードディスク等の固定ディスク装置、又はフレキシブルディスク、光ディスク等の可搬用の記憶装置等を有する。また、第1記憶部14には、画像読取装置10の各種処理に用いられるコンピュータプログラム、データベース、テーブル等が格納される。
【0034】
第1中央処理部15は、画像入力部11、第1画像メモリ部12、第1インターフェース部13及び第1記憶部14と接続され、これらの各部を制御する。第1中央処理部15は、画像入力部11の読取画像生成制御、第1画像メモリ部12の制御、第1インターフェース部13を介した情報処理装置20とのデータ送受信制御、第1記憶部14の制御等を行う。
【0035】
情報処理装置20は、第2インターフェース部21と、第2画像メモリ部22と、表示部23と、入力部24と、第2記憶部25と、第2中央処理部26と、画像処理部27とを有する。以下、情報処理装置20の各部について詳細に説明する。
【0036】
第2インターフェース部21は、画像読取装置10の第1インターフェース部13と同様のインターフェース回路を有し、情報処理装置20と画像読取装置10とを接続する。
【0037】
第2画像メモリ部22は、画像読取装置10の第1画像メモリ部12と同様の記憶装置を有する。第2画像メモリ部22には、第2インターフェース部21を介して画像読取装置10から受信した読取画像を保存するとともに、画像処理部27と接続され、画像処理部27により読取画像に対して画像処理がなされた各種の処理画像を保存する。
【0038】
表示部23は、液晶、有機EL等から構成されるディスプレイ及びディスプレイに画像データを出力するインターフェース回路を有し、第2画像メモリ部22と接続されて第2画像メモリ部22に保存されている画像データをディスプレイに表示する。
【0039】
入力部24は、キーボード、マウス等の入力装置及び入力装置から信号を取得するインターフェース回路を有し、利用者の操作に応じた信号を第2中央処理部26に出力する。
【0040】
第2記憶部25は、画像読取装置10の第1記憶部14と同様のメモリ装置、固定ディスク装置、可搬用の記憶装置等を有する。第2記憶部25には、情報処理装置20の各種処理に用いられるコンピュータプログラム、データベース、テーブル等が格納される。また、第2記憶部25には、画像処理部27が検出した直線、グループ及び矩形を記録するための直線リスト、グループリスト及び矩形リストが格納される。
【0041】
第2中央処理部26は、第2インターフェース部21、第2画像メモリ部22、表示部23、入力部24、第2記憶部25及び画像処理部27と接続され、これらの各部を制御する。第2中央処理部26は、第2インターフェース部21を介した画像読取装置10とのデータ送受信制御、第2画像メモリ部22の制御、表示部23の表示制御、入力部24の入力制御、第2記憶部25の制御、画像処理部27による画像処理の制御等を行う。
【0042】
画像処理部27は、第2画像メモリ部22に接続され、直線検出処理、矩形検出処理を行う。この画像処理部27は、第2中央処理部26に接続され、第2中央処理部26からの制御により予め第2記憶部25に記憶されているプログラムに基づいて動作する。なお、画像処理部27は、独立した集積回路、マイクロプロセッサ、ファームウェア等で構成されてもよい。
【0043】
図2は、画像処理部27の概略構成を示す図である。
図2に示すように画像処理部27は、エッジ画素抽出部210、直線抽出部220、矩形検出部230及び矩形切出し部240を有する。また、直線抽出部220は、直線候補検出部221、直線検出部222、グループ化部223、結合部224及び近似直線検出部225を有し、矩形検出部230は、矩形候補抽出部231及び矩形選択部232を有する。これらの各部は、プロセッサ上で動作するソフトウェアにより実装される機能モジュールである。なお、これらの各部は、それぞれ独立した集積回路、マイクロプロセッサ、ファームウェア等で構成されてもよい。
【0044】
図3は、画像読取装置10による画像読取処理の動作を示すフローチャートである。以下、
図3に示したフローチャートを参照しつつ、画像読取処理の動作を説明する。なお、以下に説明する動作のフローは、予め第1記憶部14に記憶されているプログラムに基づき主に第1中央処理部15により画像読取装置10の各要素と協働して実行される。
【0045】
最初に、画像入力部11は、撮像対象物である原稿を撮影した読取画像を生成し、第1画像メモリ部12に保存する(ステップS301)。
【0046】
次に、第1中央処理部15は、第1画像メモリ部12に保存された読取画像を第1インターフェース部13を介して情報処理装置20に送信し(ステップS302)、一連のステップを終了する。
【0047】
図4は、情報処理装置20による直線検出処理及び矩形検出処理の動作を示すフローチャートである。以下、
図4に示したフローチャートを参照しつつ、直線検出処理及び矩形検出処理の動作を説明する。なお、以下に説明する動作のフローは、予め第2記憶部25に記憶されているプログラムに基づき主に第2中央処理部26により情報処理装置20の各要素と協同して実行される。
【0048】
最初に、第2中央処理部26は、読取画像を第2インターフェース部21を介して画像読取装置10から取得し、第2画像メモリ部22に保存する(ステップS401)。
【0049】
次に、エッジ画素抽出部210は、第2画像メモリ部22に保存された読取画像を読み出し、読取画像の輝度成分について水平方向及び垂直方向に画素を間引いた入力画像を生成し、第2画像メモリ部22に保存する(ステップS402)。
【0050】
一般に、情報処理装置20は処理する画像の画素数により処理速度が大きく異なるため、画素を間引く割合は、第2中央処理部26等の処理能力と情報処理装置20に要求される処理速度に応じて定められる。なお、画素を間引かなくても要求される処理速度を満たす場合は読取画像の輝度成分をそのまま入力画像としてもよい。
【0051】
次に、エッジ画素抽出部210は、入力画像についてノイズ除去処理を実施する(ステップS403)。
【0052】
図5は、ノイズ除去処理の動作の例を示すフローチャートである。以下、
図5に示したフローチャートを参照しつつ、ノイズ除去処理の動作の例を説明する。
【0053】
エッジ画素抽出部210は、入力画像から水平方向及び垂直方向に画素を間引いた第1の縮小画像を生成し、第1の縮小画像から水平方向及び垂直方向に画素を間引いた第2の縮小画像を生成し、第2の縮小画像から水平方向及び垂直方向に画素を間引いた第3の縮小画像を生成し、各縮小画像を第2画像メモリ部22に保存する(ステップS501)。
【0054】
図6(a)〜(d)は、縮小画像について説明するための模式図である。
図6(a)に示す画像600は入力画像の例であり、
図6(b)に示す画像610は第1の縮小画像の例であり、
図6(c)に示す画像620は第2の縮小画像の例であり、
図6(d)に示す画像630は第3の縮小画像の例である。入力画像600から第1の縮小画像610への間引き率は、画像読取装置10の画像入力部11の撮像素子及び光学系の影響により生じるランダムノイズ601が第1の縮小画像610において除去されるように予め定められる。また、第1の縮小画像610から第2の縮小画像620への間引き率は、原稿内の網掛け部分602が第2の縮小画像620において除去されるように予め定められる。また、第2の縮小画像620から第3の縮小画像630への間引き率は、原稿が載置される机の木目調等の模様603が第3の縮小画像630において除去されるように予め定められる。
【0055】
次に、エッジ画素抽出部210は、入力画像、第1の縮小画像、第2の縮小画像、第3の縮小画像のそれぞれについて水平方向、垂直方向にエッジ画素を抽出する。そして、各画像の水平方向、垂直方向のそれぞれについてエッジ画素からなる画像(以下、それぞれ入力エッジ画像、第1のエッジ画像、第2のエッジ画像、第3のエッジ画像と称する)を生成し、第2画像メモリ部22に保存する(ステップS502)。
【0056】
エッジ画素抽出部210は、入力画像、第1の縮小画像、第2の縮小画像、第3の縮小画像のそれぞれの画素の水平方向の両隣の画素の輝度値の差の絶対値(以下、隣接差分値と称する)を算出し、隣接差分値が閾値Th1を越える場合、その画像上の画素を垂直エッジ画素とする。この閾値Th1は、例えば、人が画像上の輝度の違いを目視により判別可能な輝度値の差(例えば20)に設定することができる。また、エッジ画素抽出部210は、各画像について垂直方向にも同様の処理を行い、水平エッジ画素を抽出する。そして、水平方向、垂直方向のそれぞれについて入力エッジ画像、第1のエッジ画像、第2のエッジ画像、第3のエッジ画像を生成する。以下のステップS503〜S510では、水平方向、垂直方向のそれぞれについて生成した各エッジ画像に対して処理が行われるものとする。
【0057】
次に、エッジ画素抽出部210は、各エッジ画像について、各エッジ画素が各エッジ画像内の他のエッジ画素と連結しているか否かを判定し、連結しているエッジ画素を一つのグループとしてラベリングする(ステップS503)。エッジ画素抽出部210は、水平方向、垂直方向又は斜め方向(8近傍)に相互に隣接するエッジ画素を連結していると判定する。なお、エッジ画素抽出部210は、水平方向又は垂直方向のみ(4近傍)に相互に隣接するエッジ画素を連結していると判定してもよい。
【0058】
次に、エッジ画素抽出部210は、各エッジ画像について、ラベリングによりグループ化された各グループの水平方向及び垂直方向の両方の大きさが閾値Th2以下か否かを判定し、水平方向及び垂直方向の両方の大きさが閾値Th2以下となるグループに含まれるエッジ画素を各エッジ画像から除去する(ステップS504)。この閾値Th2を原稿内の文字又は模様の最大値として想定される値(例えば10mmに相当する値)に設定することにより、原稿内の文字又は模様を除去することができる。
【0059】
次に、エッジ画素抽出部210は、第3のエッジ画像を第2のエッジ画像と同一の解像度に拡大する(ステップS505)。
【0060】
次に、エッジ画素抽出部210は、第3のエッジ画像を第2のエッジ画像と同一の解像度に拡大した画像と、第2のエッジ画像とにおいて同一の位置に存在するエッジ画素を抽出し、そのエッジ画素からなる画像(以下、第2の修正エッジ画像と称する)を生成する(ステップS506)。
【0061】
図7(a)〜(d)は、ノイズ除去処理について説明するための模式図である。
図7(a)に示す画像700は第3のエッジ画像の例であり、
図7(b)の画像710は第3のエッジ画像を第2のエッジ画像と同一の解像度に拡大した画像の例であり、
図7(c)に示す画像720は第2のエッジ画像の例であり、
図7(d)に示す画像730は第2の修正エッジ画像の例である。
【0062】
第3のエッジ画像700では原稿が載置される机の模様721が除去されるように画素が間引かれているため、画像710には模様721が存在しない。また、画像710は第3のエッジ画像700を拡大した画像であるため、原稿の境界部分711は第2のエッジ画像720の原稿の境界部分722より膨張している。従って、画像710と第2のエッジ画像720とにおいて同一の位置に存在するエッジ画素のみを抽出することにより、原稿の境界部分731の太さを第2のエッジ画像720の境界部分722の太さと略同一にしつつ、原稿が載置される机の模様721を除去した第2の修正エッジ画像730を生成することができる。
【0063】
次に、エッジ画素抽出部210は、第2の修正エッジ画像を第1のエッジ画像と同一の解像度に拡大する(ステップS507)。
【0064】
次に、エッジ画素抽出部210は、第2の修正エッジ画像を第1のエッジ画像と同一の解像度に拡大した画像と、第1のエッジ画像とにおいて同一の位置に存在するエッジ画素を抽出し、そのエッジ画素からなる画像(以下、第1の修正エッジ画像と称する)を生成する(ステップS508)。
図7(a)〜(d)での説明と同様に、第1の修正エッジ画像は、原稿の境界部分の太さが第1のエッジ画像の原稿の境界部分の太さと略同一であり、原稿内の網掛け部分が除去された画像となる。
【0065】
次に、エッジ画素抽出部210は、第1の修正エッジ画像を入力エッジ画像と同一の解像度に拡大する(ステップS509)。
【0066】
次に、エッジ画素抽出部210は、第1の修正エッジ画像を入力エッジ画像と同一の解像度に拡大した画像と、入力エッジ画像とにおいて同一の位置に存在するエッジ画素を抽出し、そのエッジ画素からなる画像(以下、エッジ画像と称する)を生成し(ステップS510)、ノイズ除去処理を終了する。
図7(a)〜(d)での説明と同様に、エッジ画像は、原稿の境界部分の太さが入力エッジ画像の原稿の境界部分の太さと略同一であり、原稿内のランダムノイズが除去された画像となる。
【0067】
図4に戻って、直線抽出部220は、エッジ画像について直線検出処理を実施する(ステップS404)。
【0068】
図8は、直線検出処理の動作の例を示すフローチャートである。以下、
図8に示したフローチャートを参照しつつ、直線検出処理の動作の例を説明する。
【0069】
まず、直線候補検出部221は、水平エッジ画素から生成されたエッジ画像(以下、水平エッジ画像と称する)からハフ変換を用いて直線候補を抽出する(ステップS801)。なお、水平エッジ画像からは水平方向に伸びる直線候補が抽出される。
【0070】
図9(a)、(b)は、ハフ変換について説明するための模式図である。
図9(a)に示すグラフ900は、エッジ画像内のエッジ画素901、902、903を表す。グラフ900の原点はエッジ画像上の最も左下にある画素を示し、横軸は水平位置を示し、縦軸は垂直位置を示す。直線候補検出部221は、エッジ画素901を通過する複数の直線904、905、906を抽出し、原点から各直線への法線907、908、909を求め、各法線の、原点から各直線までの長さをρ、横軸に対する角度をθとして算出する。なお、ρは、以下の式により算出することができる。
ρ=xcosθ+ysinθ (4)
【0071】
図9(b)に示すグラフ910は、各法線について算出したρ、θを変数とするハフ空間を表す。グラフ910の横軸はθを示し、縦軸はρを示す。各点911、912、913は、法線907、908、909について算出したρ、θをプロットした点であり、曲線914はこれらの点をつなげた曲線である。また、曲線915、916は、エッジ画素902、903について同様の処理を行って求めた曲線である。この例において曲線914〜916の交点911におけるρ、θの値から定まる、グラフ900上の直線904が各エッジ画素901、902、903が通過する直線となる。なお、この直線は、以下の式により算出することができる。
y=ax+b
a=−1/tanθ、 b=ρ/sinθ (5)
【0072】
図10は、ハフ変換処理の動作の例を示すフローチャートである。以下、
図10に示したフローチャートを参照しつつ、ハフ変換処理の動作の例を説明する。
【0073】
直線候補検出部221は、まず、エッジ画像内の各エッジ画素を通過する複数の直線について、(ρ、θ)を算出する(ステップS1001)。
【0074】
次に、直線候補検出部221は、算出した(ρ、θ)に投票する(ステップS1002)。
【0075】
次に、直線候補検出部221は、エッジ画像内の全てのエッジ画素について(ρ、θ)を算出したか否かを判定する(ステップS1003)。エッジ画像内の全てのエッジ画素について(ρ、θ)を算出していなければ、ステップS1001に戻って、ステップS1001〜S1002の処理を繰り返す。
【0076】
一方、エッジ画像内の全てのエッジ画素について(ρ、θ)を算出すると、直線候補検出部221は、(ρ、θ)を投票数の順にソートする(ステップS1004)。
【0077】
次に、直線候補検出部221は、投票された(ρ、θ)の組合せのうち、自身より投票数の多い組合せとρ及びθの両方の値が近似する(例えばρの差の絶対値が5mmに相当する距離以下且つθの差の絶対値が3°以下となる)組合せを除外する(ステップS1005)。これにより、相互に近傍となる位置に複数の直線が検出されることを抑制することができる。なお、除外した組合せの投票数を、その除外した組合せとρ及びθの両方の値が近似する組合せの投票数に加算してもよい。
【0078】
次に、直線候補検出部221は、投票された(ρ、θ)の組合せから定まる直線をエッジ画像における直線候補として抽出し(ステップS1006)、第2記憶部25に記録してハフ変換処理を終了する。なお、(ρ、θ)の組合せのうち、投票数の多い順に所定数(例えば、水平方向、垂直方向のそれぞれについて32個ずつ)のみ抽出し、抽出した(ρ、θ)の組合せから定まる直線のみを直線候補としてもよい。
【0079】
図8に戻って、直線候補検出部221は、水平エッジ画像からの直線候補の抽出と同様にして、垂直エッジ画素から生成されたエッジ画像(以下、垂直エッジ画像と称する)からハフ変換を用いて直線候補を抽出する(ステップS802)。なお、垂直エッジ画像からは垂直方向に伸びる直線候補が抽出される。
【0080】
次に、直線候補検出部221は、水平エッジ画像及び垂直エッジ画像の両方から直線候補が抽出されたか否かを判定する(ステップS803)。水平エッジ画像及び垂直エッジ画像の両方から直線候補が抽出されなかった場合、直線検出処理を終了する。
【0081】
一方、水平エッジ画像及び垂直エッジ画像の両方から直線候補を抽出した場合、直線候補検出部221は、水平エッジ画像から抽出した直線候補のうち、注目する直線候補の近傍に位置するエッジ画素(以下、第1のエッジ画素と称する)の数を算出する。また、第1のエッジ画素のうち他の直線候補の近傍に位置するエッジ画素(以下、第2のエッジ画素と称する)の数を算出する。そして、第1のエッジ画素の数に対する第2のエッジ画素の数の割合が所定比率R1以上である場合、その注目する直線候補を直線の候補から除外する(ステップS804)。なお、直線候補の近傍の範囲は、その範囲内のエッジ画素がその直線候補と同一の直線に対応するとみなせる範囲に定められ、例えば直線候補から2mmに相当する距離内の範囲に設定することができる。また、所定比率R1は、画像処理システム1が使用される環境等に応じて適宜定められ、例えば50%に設定することができる。
【0082】
図11(a)〜(c)は、直線候補の除外処理について説明するための模式図である。
図11(a)に示すエッジ画像1100において、各点はエッジ画素を表し、1101〜1104は各エッジ画素から検出された直線候補を表す。直線候補1101と直線候補1102は同じエッジ画素に基づいて抽出されており、両方の直線を直線候補として検出することは冗長である。そのため、何れか一方の直線を直線候補から除外することにより、直線の検出精度を維持しつつ、処理負荷を軽減することができる。同様に、直線候補1104の元となるエッジ画素も、直線候補1101(又は1102)及び1103の元となるエッジ画素に含まれるため、直線候補1104を直線の候補から除外することにより、直線の検出精度を維持しつつ、処理負荷を軽減することができる。
【0083】
図12は、直線候補の除外処理の動作の例を示すフローチャートである。以下、
図12に示したフローチャートを参照しつつ、直線候補の除外処理の動作の例を説明する。
【0084】
直線候補検出部221は、まず、各直線候補の元となるエッジ画素を管理するためのエッジ画素テーブルをクリアする(ステップS1201)。なお、このエッジ画素テーブルは、第2記憶部25に格納される。
【0085】
次に、直線候補検出部221は、水平エッジ画像から抽出した直線候補を、(ρ、θ)の組合せに対する投票数が多かった順に選択する(ステップS1202)。
【0086】
次に、直線候補検出部221は、選択した直線候補の近傍の画素を走査する(ステップS1203)。例えば、直線候補検出部221は、
図11(b)に示すように、直線候補1101の近傍の範囲1111にある画素を、最も左上の画素から垂直方向に走査し、走査するラインを1ラインずつ右側にずらしていく。
【0087】
そして、直線候補検出部221は、走査した画素がエッジ画素か否かを判定する(ステップS1204)。直線候補検出部221は、走査した画素がエッジ画素でない場合、ステップS1209に移行し、一方、走査した画素がエッジ画素である場合、第1のエッジ画素としてカウントする(ステップS1205)。
【0088】
次に、直線候補検出部221は、そのエッジ画素についての座標情報がエッジ画素テーブルに記録済みか否かを判定する(ステップS1206)。直線候補検出部221は、そのエッジ画素についての座標情報がエッジ画素テーブルに記録済みでなければ、そのエッジ画素についての座標情報をエッジ画素テーブルに記録し(ステップS1207)、一方、そのエッジ画素についての座標情報がエッジ画素テーブルに記録済みであれば、第2のエッジ画素としてカウントする(ステップS1208)。
【0089】
次に、直線候補検出部221は、選択した直線候補の近傍の範囲の画素を全て走査したか否かを判定し(ステップS1209)、まだ走査していない画素がある場合、ステップS1203に戻り、ステップS1203〜S1208の処理を繰り返す。
【0090】
一方、選択した直線候補の近傍の範囲の画素を全て走査した場合、直線候補検出部221は、第1のエッジ画素の数に対する第2のエッジ画素の数の割合が所定比率R1以上か否かを判定し(ステップS1210)、第1のエッジ画素の数に対する第2のエッジ画素の数の割合が所定比率R1以上の場合、その選択した直線候補を直線の候補から除外する(ステップS1211)。一方、第1のエッジ画素の数に対する第2のエッジ画素の数の割合が所定比率R1未満の場合は、その選択した直線候補は直線の候補から除外しないため、特に処理を行わない。
【0091】
次に、直線候補検出部221は、全ての直線候補を選択したか否かを判定し(ステップS1212)、まだ画素を走査していない直線候補がある場合、ステップS1202に戻り、ステップS1202〜S1211の処理を繰り返す。一方、全ての直線候補について画素を走査すると、直線候補検出部221は、直線候補の除外処理を終了する。
【0092】
例えば、
図11(a)に示す例において、直線候補1101、1102、1103、1104の順に(ρ、θ)の組合せに対する投票数が多い場合、直線候補1101を選択したときには、その近傍の範囲1111にあるエッジ画素についての座標情報はエッジ画素テーブルに記録されていないため、直線候補1101は直線の候補から除外されない。一方、
図11(c)に示すように、直線候補1102の近傍の範囲1112にあるエッジ画素は全て直線候補1101の近傍の範囲1111にあるエッジ画素と重複している。そのため、直線候補1102を選択したときにはその近傍の範囲1112にあるエッジ画素についての座標情報は全てエッジ画素テーブルに記録されており、直線候補1102は直線の候補から除外される。また、直線候補1103を選択したときには、その近傍の範囲1113にあるエッジ画素についての座標情報はエッジ画素テーブルに記録されていないため、直線候補1103は直線の候補から除外されない。また、直線候補1104の近傍の範囲1114にあるエッジ画素は、全て直線候補1101の近傍の範囲1111又は直線候補1103の近傍の範囲1113にあるエッジ画素と重複している。そのため、直線候補1104を選択したときにはその近傍の範囲1114にあるエッジ画素についての座標情報は全てエッジ画素テーブルに記録されており、直線候補1104は直線の候補から除外される。
【0093】
図8に戻って、直線候補検出部221は、水平エッジ画像から抽出した直線候補の除外処理と同様にして、垂直エッジ画像から抽出した直線候補の除外処理を実施する(ステップS805)。
【0094】
次に、直線検出部222は、水平エッジ画像から抽出した直線候補から所定距離内にあるエッジ画素に対して最小二乗法を用いて水平方向の直線を検出する(ステップS806)。この所定距離は、画像処理システム1が使用される環境等に応じて適宜定められ、例えば2mmに相当する距離に設定される。
【0095】
図13(a)、(b)は、最小二乗法による直線検出処理について説明するための模式図である。
図13(a)に示すエッジ画像1300において、各点はエッジ画素を表し、直線1301は各エッジ画素からハフ変換により検出された直線候補を表す。つまり、直線候補1301は可能な限り多くのエッジ画素上を通過するように検出される。一方、その直線候補の近傍のエッジ画素は原稿の境界から発生している可能性が高く、その全てのエッジ画素から近い位置を通過する直線の方が、その直線候補より原稿の境界に近い可能性が高い。
【0096】
そこで、直線検出部222は、
図13(b)のエッジ画像1310に示すように、直線候補1301から所定距離内1302にある画素に対して最小二乗法を用いて直線1321を検出する。なお、最小二乗法では、各画素と、検出する直線1321との距離1311〜1316の二乗の和が最小となるように、以下の式により直線を算出することができる。
【数1】
なお、nは直線候補から所定距離内にあるエッジ画素の数を表し、x
i、y
iは、それぞれi番目のエッジ画素の水平方向の座標及び垂直方向の座標を表す。
【0097】
図14は、最小二乗法による直線検出処理の動作の例を示すフローチャートである。以下、
図14に示したフローチャートを参照しつつ、最小二乗法による直線検出処理の動作の例を説明する。
【0098】
直線検出部222は、まず、水平エッジ画像から抽出した直線候補のうちの一つを選択する(ステップS1401)。
【0099】
次に、直線検出部222は、選択した直線候補から所定距離内のエッジ画素を抽出し(ステップS1402)、抽出したエッジ画素に対して最小二乗法を用いて直線を検出し(ステップS1403)、検出した直線で直線候補を更新する(ステップS1404)。
【0100】
次に、直線検出部222は、全ての直線候補を選択したか否かを判定し(ステップS1405)、まだ選択していない直線候補がある場合、ステップS1401に戻り、ステップS1401〜S1404の処理を繰り返す。一方、全ての直線候補について画素を走査すると、直線検出部222は、最小二乗法による直線検出処理を終了する。
【0101】
図8に戻って、直線検出部222は、水平エッジ画像から抽出した直線候補についての最小二乗法による直線検出処理と同様にして、垂直エッジ画像から抽出した直線候補についても最小二乗法による直線検出処理を実施する(ステップS807)。
【0102】
次に、直線検出部222は、水平エッジ画像から検出した直線をその直線の近傍に位置するエッジ画素の密集の度合いに基づいて複数の直線に分割する(ステップS808)。なお、直線の近傍の範囲は、その範囲内のエッジ画素がその直線に対応するとみなせる範囲に定められ、例えば直線から2mmに相当する距離内の範囲に設定することができる。
【0103】
図15(a)、(b)は、直線の分割処理について説明するための模式図である。
図15(a)に示すエッジ画像1500において、各点はエッジ画素を表し、直線1501は各エッジ画素から検出された直線を表し、領域1502は直線1501の近傍の範囲を表す。
図15(a)において、エッジ画素1503〜1504の間にあるエッジ画素と、エッジ画素1505〜1506の間にあるエッジ画素はそれぞれ密集しているが、エッジ画素1504とエッジ画素1505は離れており、読取画像にはその間に直線が存在しない可能性が高い。そこで、直線検出部222は、
図15(b)のエッジ画像1510に示すように、検出した直線において閾値Th3以上にわたって近傍にエッジ画素が存在しない部分は直線の一部でないと判断し、直線1501を二つの直線1511と直線1512に分割する。なお、閾値Th3は、直線を構成するエッジ画素がノイズ等により検出されないおそれがある最大の長さに定められ、例えば5mmに相当する距離に設定することができる。
【0104】
図16は、直線の分割処理の動作の例を示すフローチャートである。以下、
図16に示したフローチャートを参照しつつ、直線の分割処理の動作の例を説明する。
【0105】
直線検出部222は、まず、水平エッジ画像から検出した直線のうちの一つを選択する(ステップS1601)。
【0106】
次に、直線検出部222は、選択した直線の近傍の画素を走査し、その直線の始点となるエッジ画素を検出する(ステップS1602)。直線検出部222は、
図15(a)に示すように、直線1501の近傍の範囲1502にある画素を、最も左上の画素から垂直方向に走査し、走査するラインを1ラインずつ右側にずらしていく。そして、最初に検出したエッジ画素1503を直線1501の始点と判定する。
【0107】
次に、直線検出部222は、始点となるエッジ画素から引き続き直線の近傍の画素を走査し、その始点に対応する終点を検出する(ステップS1603)。直線検出部222は、
図15(a)に示すように、直線1501の近傍の範囲1502にある画素を、エッジ画素1503の位置から垂直方向に走査し、走査するラインを1ラインずつ右側にずらしていく。そして、検出したエッジ画素1505がその直前に検出したエッジ画素1504と閾値Th3以上離れている場合に、その直前に検出したエッジ画素1504を始点に対応する終点と判定する。
【0108】
次に、直線検出部222は、検出した直線のうち、始点となるエッジ画素から終点となるエッジ画素までの位置に対応する部分を一つの直線として第2記憶部25に記録する(ステップS1604)。
図15(b)に示す例では、直線検出部222は、直線1501のうちエッジ画素1503からエッジ画素1504までの位置に対応する部分1511が一つの直線として記録される。
【0109】
次に、直線検出部222は、選択した直線の近傍の画素を全て走査したか否かを判定し(ステップS1605)、まだ走査していない画素がある場合、ステップS1602に戻り、ステップS1602〜S1604の処理を繰り返す。この場合、ステップS1602では、終点として検出したエッジ画素の位置から、再度画素を走査していく。
【0110】
一方、選択した直線の近傍の範囲の画素を全て走査した場合、直線検出部222は、検出した全ての直線を選択したか否かを判定し(ステップS1606)、まだ選択していない直線がある場合、ステップS1601に戻り、ステップS1601〜S1605の処理を繰り返す。一方、検出した全ての直線を選択すると、直線検出部222は、直線の分割処理を終了する。
【0111】
図8に戻って、直線検出部222は、水平エッジ画像から検出した直線の分割処理と同様にして、垂直エッジ画像から検出した直線の分割処理を実施する(ステップS809)。
【0112】
次に、直線検出部222は、水平エッジ画像から検出した直線を長さの順にソートし、ソートした順に、水平エッジ画像から検出した水平方向の直線を記録するための水平方向の直線リストに記録する(ステップS810)。
【0113】
次に、直線検出部222は、垂直エッジ画像から検出した直線を長さの順にソートし、ソートした順に、垂直エッジ画像から検出した垂直方向の直線を記録するための垂直方向の直線リストに記録し(ステップS811)、一連のステップを終了する。
【0114】
なお、処理負荷を軽減するために、各直線リストに記録する直線の数はそれぞれ所定数(例えば32)以下とする。あるいは、直線の検出精度を高めるために、検出した全ての直線を各直線リストに記録してもよい。
【0115】
また、ステップS804、S805の直線候補の除外処理は、直線候補検出部221がハフ変換処理により抽出した直線候補に対して行うのではなく、直線検出部222が最小二乗法により検出した直線に対して行ってもよい。
【0116】
図4に戻って、直線抽出部220は、エッジ画像について近似直線検出処理を実施する(ステップS405)。
【0117】
図17(a)〜(c)は、近似直線について説明するための模式図である。
図17(a)に示すような書籍原稿を撮影した入力画像1700において、書籍原稿の綴じ目部1701に対して平行な端部1702は直線として検出されるが、綴じ目部1701に対して直交する端部1703は綴じ目部1701の近傍で歪みが生じ、直線として検出されない場合がある。
【0118】
そこで、直線抽出部220は、
図17(b)のエッジ画像1710に示すように、相互に隣接するエッジ画素1711を一つのグループ1712としてまとめ、そのグループに含まれるエッジ画素のうち、水平方向又は垂直方向における両端に位置するエッジ画素1713、1714を結んだ直線1715を原稿の端部の近似直線として検出する。
【0119】
また、書籍原稿の綴じ目部1701に対して直交する端部1703において、綴じ目部1701から離れた位置では水平エッジ画素が抽出されるが、綴じ目部1701の近傍では垂直エッジ画素のみが抽出され、水平エッジ画素が抽出されない場合がある。その場合、
図17(c)のエッジ画像1720に示すように、端部1703は2つのグループ1721、1722に分離されるおそれがある。そこで、直線抽出部220は、各グループの外接矩形の間の水平方向及び垂直方向の位置関係に基づいてグループを結合する。
【0120】
図18は、水平方向の近似直線検出処理の動作の例を示すフローチャートである。以下、
図18に示したフローチャートを参照しつつ、水平方向の近似直線検出処理の動作の例を説明する。
【0121】
まず、グループ化部223は、水平エッジ画像における各エッジ画素について、他のエッジ画素と相互に隣接するか否かを判定し、相互に隣接するエッジ画素を一つのグループとしてまとめてラベリングする(ステップS1801)。グループ化部223は、水平方向、垂直方向又は斜め方向(8近傍)に相互に隣接するエッジ画素を連結していると判定する。なお、グループ化部223は、水平方向又は垂直方向のみ(4近傍)に相互に隣接するエッジ画素を連結していると判定してもよい。また、まとめたグループの水平方向の大きさが閾値Th4以下である場合、そのグループをノイズと判断して以降の処理の対象外としてもよい。この閾値Th4は、画像処理システム1が使用される環境等に応じて適宜定められ、例えば10mmに相当する値に設定することができる。
【0122】
次に、結合部224は、グループ化部223によってまとめられたグループから注目するグループを選択する(ステップS1802)。
【0123】
次に、結合部224は、選択した注目するグループと結合条件を満たすグループが存在するか否かを判定する(ステップS1803)。結合部224は、注目するグループの外接矩形と、その注目するグループの外接矩形と垂直方向において第1の所定距離以上離れていない他のグループの外接矩形とが、水平方向において重複せず且つ第2の所定距離以上離れていない場合、当該他のグループは注目するグループとの結合条件を満たすと判定する。なお、第1の所定距離及び第2の所定距離は、画像処理システム1が使用される環境等に応じて適宜定められ、例えば5mmに相当する距離に設定することができる。
【0124】
図19(a)〜(d)は、各グループの結合条件について説明するための模式図である。
図19(a)のエッジ画像1900に示す例では、注目するグループ1901の外接矩形1902に対して、グループ1903の外接矩形1904とグループ1905の外接矩形1906が垂直方向において第1の所定距離内にある。そして、外接矩形1902と外接矩形1904は水平方向において重複せず且つ水平方向の距離1907は第2の所定距離未満であるためグループ1901とグループ1903は結合条件を満たすと判定される。一方、外接矩形1902と外接矩形1906は水平方向において重複していないが、水平方向の距離1908は第2の所定距離以上であるためグループ1901とグループ1905は結合条件を満たさないと判定される。
【0125】
また、結合部224は、注目するグループの外接矩形と、その注目するグループの外接矩形と垂直方向において第1の所定距離以上離れていない他のグループの外接矩形が水平方向において重複し、注目するグループの外接矩形と当該他のグループの外接矩形が水平方向において重複する長さが所定の閾値Th5以下であり、且つ当該他のグループの外接矩形の水平方向の長さに対する注目するグループの外接矩形と当該他のグループの外接矩形が水平方向において重複する長さの割合が所定比率R2以下である場合、当該他のグループは注目するグループとの結合条件を満たすと判定する。なお、閾値Th5は、画像処理システム1が使用される環境等に応じて適宜定められ、例えば5mmに相当する距離に設定することができる。所定比率R2も、画像処理システム1が使用される環境等に応じて適宜定められ、例えば50%に設定することができる。
【0126】
図19(c)のエッジ画像1920に示す例では、注目するグループ1921の外接矩形1922に対して、グループ1923の外接矩形1924とグループ1925の外接矩形1926が垂直方向において第1の所定距離内にあり、水平方向において重複する。また、外接矩形1922と外接矩形1924が水平方向において重複する長さ1928、及び外接矩形1922と外接矩形1926が水平方向において重複する長さ1930は、それぞれ閾値Th5以下である。ここで、外接矩形1924の水平方向の長さ1927に対する外接矩形1922と外接矩形1924が水平方向において重複する長さ1928の割合が所定比率R2以下であるため、グループ1923はグループ1921との結合条件を満たすと判定される。一方、外接矩形1926の水平方向の長さ1929に対する外接矩形1922と外接矩形1926が水平方向において重複する長さ1930の割合は所定比率R2より大きいため、グループ1925はグループ1921との結合条件を満たさないと判定される。
【0127】
結合部224は、選択した注目するグループと結合条件を満たすグループが存在する場合、注目するグループに結合条件を満たすグループを結合する(ステップS1804)。
【0128】
図19(a)に示した例では、
図19(b)のエッジ画像1910に示すように、グループ1901とグループ1903が結合されて一つのグループとなり、外接矩形1911を構成する。また、
図19(c)に示した例では、
図19(d)のエッジ画像1940に示すように、グループ1921とグループ1923が結合されて一つのグループとなり、外接矩形1941を構成する。なお、グループを結合した場合でも、結合前のグループも引き続き一つのグループとして管理してもよい。
【0129】
次に、結合部224は、全てのグループに対して注目するグループとの結合条件を確認したか否かを判定し(ステップS1805)、まだ結合条件を確認していないグループがある場合、ステップS1803に戻り、ステップS1803〜S1804の処理を繰り返す。
【0130】
一方、全てのグループに対して注目するグループとの結合条件を確認した場合、結合部224は、注目するグループとして全てのグループを選択したか否かを判定し(ステップS1806)、まだ注目するグループとして選択していないグループがある場合、ステップS1802に戻り、ステップS1802〜S1805の処理を繰り返す。
【0131】
一方、注目するグループとして全てのグループを選択した場合、結合部224は、各グループをその水平方向の長さの順にソートする(ステップS1807)。
【0132】
次に、結合部224は、各グループを、ソートした順にグループリストに記録する(ステップS1808)。なお、グループリストには各グループの外接矩形の座標情報とラベリング処理により割り当てられたラベル番号が記録される。
【0133】
次に、近似直線検出部225は、グループリストに記録されたグループのうちの一つをソートした順に選択する(ステップS1809)。
【0134】
次に、近似直線検出部225は、選択したグループのエッジ画素の始点と終点を検出する(ステップS1810)。例えば、近似直線検出部225は、そのグループの外接矩形の左辺を垂直方向に走査し、最初に検出したエッジ画素を始点のエッジ画素とし、そのグループの外接矩形の右辺を垂直方向に走査し、最後に検出したエッジ画素を終点のエッジ画素とする。
【0135】
次に、近似直線検出部225は、エッジ画素の始点と終点を結んだ近似直線を算出する(ステップS1811)。
【0136】
次に、近似直線検出部225は、近似直線を直線リストに記録する(ステップS1812)。なお、直線検出部222が検出した直線と同様に、近似直線もその長さの順に直線リストに並ぶように挿入される。また、近似直線検出部225は、近似直線が直線リストに記録された何れかの直線と近似する場合、その近似直線を直線リストに記録せずに除外してもよい。例えば、近似直線検出部225は、
図8に示すフローチャートのステップS804の処理と同様に、近似直線の近傍に位置する第1のエッジ画素の数を算出する。また、その第1のエッジ画素のうち他の直線候補の近傍に位置する第2のエッジ画素の数を算出する。そして、第1のエッジ画素の数に対する第2のエッジ画素の数の割合が所定比率R3以上である場合は、その近似直線を直線リストに記録しない。なお、近似直線の近傍の範囲は、その範囲内のエッジ画素がその直線候補と同一の直線に対応するとみなせる範囲に定められ、例えば近似直線から2mmに相当する距離内の範囲に設定することができる。また、所定比率R3は、画像処理システム1が使用される環境等に応じて適宜定められ、例えば50%に設定することができる。あるいは、近似直線は直線候補検出部221が検出した直線候補より直線としての信頼性が低いと考えて、所定比率R3は所定比率R1より低い値にしてもよい。
【0137】
次に、近似直線検出部225は、全てのグループに対して近似直線を算出したか否かを判定し(ステップS1813)、まだ近似直線を算出していないグループがある場合、ステップS1809に戻り、ステップS1809〜S1812の処理を繰り返す。一方、全てのグループに対して近似直線を算出した場合、近似直線検出部225は、水平方向の近似直線の検出処理を終了する。
【0138】
近似直線検出部225は、水平方向の近似直線の検出処理と同様にして、垂直方向の近似直線の検出処理を行う。なお、垂直方向の近似直線の検出処理は、水平方向の近似直線の検出処理において、単に水平方向と垂直方向を入れ替えた処理となるため、詳細な説明を省略する。
【0139】
図4に戻って、矩形検出部230は、検出された直線又は近似直線に基づいて、入力画像に含まれる原稿の端部、つまり原稿の外接矩形を検出する矩形検出処理を実施する(ステップS406)。矩形検出部230は、まず、直線リストに保存された複数の直線のうち二本ずつが略直交する四本の直線から構成される複数の矩形候補を抽出する。そして、各矩形候補について、矩形候補の各辺から所定距離(例えば2mmに相当する距離)内にあるエッジ画素の数を求めるとともに、その矩形候補の各角の近傍のエッジ画素の分布に基づいて各角の角らしさの度合いを求め、求めたエッジ画素の数及び角らしさの度合いに基づいて矩形候補から原稿の端部を表す矩形を選択する。
【0140】
図20は、矩形検出処理の動作の例を示すフローチャートである。以下、
図20に示したフローチャートを参照しつつ、矩形検出処理の動作の例を説明する。
【0141】
まず、矩形候補抽出部231は、水平方向の直線リストから水平方向の直線(以下、第1の水平線と称する)を選択する(ステップS2001)。
【0142】
次に、矩形候補抽出部231は、水平方向の直線リストから、第1の水平線と略平行(例えば±3°以内)かつ閾値Th6以上離れた水平方向の直線(以下、第2の水平線と称する)を抽出する(ステップS2002)。なお、閾値Th6は、画像読取装置10の読取りの対象となる原稿のサイズに応じて予め定められる。
【0143】
次に、矩形候補抽出部231は、垂直方向の直線リストから第1の水平線と略直交する(例えば90°に対して±3°以内)垂直方向の直線(以下、第1の垂直線と称する)を抽出する(ステップS2003)。
【0144】
次に、矩形候補抽出部231は、垂直方向の直線リストから第1の水平線と略直交し、かつ第1の垂直線と閾値Th7以上離れた垂直方向の直線(以下、第2の垂直線と称する)を抽出する(ステップS2004)。なお、閾値Th7は、画像読取装置10の読取りの対象となる原稿のサイズに応じて予め定められ、閾値Th6と同じ値でもよい。
【0145】
次に、矩形候補抽出部231は、第1の水平線、第2の水平線、第1の垂直線及び第2の垂直線から構成される矩形を矩形候補として抽出する(ステップS2005)。
【0146】
次に、矩形選択部232は、抽出された矩形候補について、矩形候補の各辺の辺らしさの度合いを表す第1の評価点を算出する(ステップS2006)。
【0147】
図21(a)、(b)は、第1の評価点について説明するための模式図である。
図21(a)に示す画像2100において、点2101〜2104は矩形候補の4つの角を表し、直線2111〜2114は矩形候補の各辺を表す。この直線2111〜2114の近傍にエッジ画素が密集しているほど、直線2111〜2114は原稿の境界を明確に表し、原稿の外接矩形を表す辺らしいと考えることができる。そこで、矩形選択部232は、矩形候補の各辺2111〜2114から所定距離内2121〜2124にある画素の数に対する所定距離内2121〜2124にあるエッジ画素の数の割合を第1の評価点とする(例えば、100%の場合に100点とする)。つまり、第1の評価点は、矩形候補の各辺から所定距離内にある画素の数に対する、所定距離内にあるエッジ画素の数の割合が高いほど点数が高くなり、第1の評価点が高いほど各辺が原稿の境界である可能性が高くなる。
【0148】
図21(b)の画像2140に示すように、複数の原稿2141、2142が撮影された入力画像において、原稿2141、2142の両方を包含する矩形候補2143は、一部の領域2144、2145に直線を構成するエッジ画素が存在しない。そのため、矩形候補2143については第1の評価点が低くなり、原稿2141、2142のそれぞれの外接矩形2146、2147が別個に検出されやすくなる。
【0149】
なお、矩形選択部232は、矩形候補2100の各辺2111〜2114から所定距離内2121〜2124にあるエッジ画素の数を第1の評価点としてもよい。この場合、第1の評価点は、矩形候補の各辺から所定距離内にあるエッジ画素の数が多いほど点数が高くなり、第1の評価点が高いほど各辺が原稿の境界である可能性が高くなる。
【0150】
次に、矩形選択部232は、抽出された矩形候補について、矩形候補の各角の角らしさの度合いを表す第2の評価点を算出する(ステップS2007)。
【0151】
図22(a)、(b)は、第2の評価点について説明するための模式図である。
図22(a)に示す画像2200において、点2201は矩形候補の角を表し、直線2202、2203は矩形候補の各辺を表す。この直線2202、2203の端部が相互に接している場合は、点2201は矩形の角らしいと考えられるが、直線2202、2203の端部が接していない場合又は直線2202、2203が交差している場合は、点2201は矩形の角らしくないと考えられる。そこで、矩形選択部232は、角2201の近傍において各辺2202、2203に沿って分布するエッジ画素の数が多いほど点数が高くなり、角2201の近傍において各辺2202、2203の延長線に沿って分布するエッジ画素の数が多いほど点数が低くなるように第2の評価点を算出する。
【0152】
第2の評価点は0点を基準とする。そして、角2201の近傍における辺2202から所定距離内の領域2204において、水平方向のライン毎にエッジ画素が存在するか否かを判定し、水平方向のラインにエッジ画素が存在する場合、第2の評価点に1点を加算する。なお、各角の近傍の範囲及び各辺からの所定距離は、画像処理システム1が使用される環境等に応じて適宜定められ、例えば各角から5mmに相当する距離内の範囲及び各辺から2mmに相当する距離に設定することができる。同様に、角2201の近傍における辺2203から所定距離内の領域2205において、垂直方向のライン毎にエッジ画素が存在するか否かを判定し、垂直方向のラインにエッジ画素が存在する場合、第2の評価点に1点を加算する。また、角2201の近傍における辺2202の延長線から所定距離内の領域2206において、水平方向のライン毎にエッジ画素が存在するか否かを判定し、水平方向のラインにエッジ画素が存在する場合、第2の評価点から1点を減算する。同様に、角2201の近傍における辺2203の延長線から所定距離内の領域2207において、垂直方向のライン毎にエッジ画素が存在するか否かを判定し、垂直方向のラインにエッジ画素が存在する場合、第2の評価点から1点を減算する。
【0153】
例えば、
図22(b)の画像2210に示すように、垂直方向の直線2212が矩形の角2211に到達していず、水平方向の直線2213が矩形の角2211を越えて伸びている場合、第2の評価点は、角2211の右側の近傍の領域2215では加点されるが、左側の近傍の領域2217では減点される。また、角2211の上側の近傍の領域2216では減点されないが、角2211の下側の近傍の領域2214では、領域内に存在するエッジ画素分のみ加点される。
【0154】
次に、矩形選択部232は、抽出した矩形候補を第1の評価点及び第2の評価点とともに矩形リストに記録する(ステップS2008)。
【0155】
次に、矩形選択部232は、第2の垂直線として全ての垂直方向の直線を抽出したか否かを判定し(ステップS2009)、まだ抽出していない直線がある場合、ステップS2004に戻り、ステップS2004〜S2008の処理を繰り返す。
【0156】
一方、第2の垂直線として全ての垂直方向の直線を抽出した場合、矩形選択部232は、第1の垂直線として全ての垂直方向の直線を抽出したか否かを判定し(ステップS2010)、まだ抽出していない直線がある場合、ステップS2003に戻り、ステップS2003〜S2009の処理を繰り返す。
【0157】
一方、第1の垂直線として全ての垂直方向の直線を抽出した場合、矩形選択部232は、第2の水平線として全ての水平方向の直線を抽出したか否かを判定し(ステップS2011)、まだ抽出していない直線がある場合、ステップS2002に戻り、ステップS2002〜S2010の処理を繰り返す。
【0158】
一方、第2の水平線として全ての水平方向の直線を抽出した場合、矩形選択部232は、第1の水平線として全ての水平方向の直線を選択したか否かを判定し(ステップS2012)、まだ選択していない直線がある場合、ステップS2001に戻り、ステップS2001〜S2011の処理を繰り返す。
【0159】
一方、第1の水平線として全ての水平方向の直線を選択した場合、矩形選択部232は、矩形リストに記録された矩形候補について第1の評価点と第2の評価点の合計を算出し、算出した合計の高い順にソートする(ステップS2013)。
【0160】
次に、矩形選択部232は、矩形リストに記録された矩形候補のうち重複する矩形候補を除去する(ステップS2014)。
【0161】
図23は、重複する矩形候補について説明するための模式図である。
図23の画像2300に示すように、相互に重複する矩形候補2301と矩形候補2302が抽出された場合、両方の矩形候補は、同一原稿に基づく可能性が高い。そこで、矩形選択部232は、相互に重複する矩形候補のうち第1の評価点と第2の評価点の合計が低い方の矩形候補を矩形リストから除去する。つまり、矩形選択部232は、相互に重複する矩形候補が複数存在する場合に、第1の評価点と第2の評価点の合計が最も高い矩形候補のみを矩形として選択し、他の矩形候補と重複しない矩形候補のみを矩形として選択する。
【0162】
次に、矩形選択部232は、矩形リストに記録された矩形候補のうち他の矩形候補内に包含される矩形候補を除去する(ステップS2015)。
【0163】
図24は、他の矩形候補内に包含される矩形候補について説明するための模式図である。
図24の画像2400に示すように、矩形候補2401が他の矩形候補2402内に包含される場合、その矩形候補2401は原稿内に記載された図形等である可能性が高い。そこで、矩形選択部232は、他の矩形候補2402内に包含される矩形候補2401を矩形リストから除去する。
【0164】
次に、矩形選択部232は、矩形リストに残った矩形候補から、入力画像に含まれる原稿の外接矩形を表す矩形を選択し(ステップS2016)、矩形検出処理を終了する。
【0165】
矩形選択部232は、矩形リストに残った矩形候補のうち第1の評価点と第2の評価点の合計の最も高い矩形候補を入力画像に含まれる原稿の外接矩形として検出する。あるいは、矩形リストに残った矩形候補のうち、面積が最も大きい(各角が最も離れている)矩形候補を原稿の外接矩形として検出してもよい。なお、矩形リストに複数の矩形候補が残っている場合、矩形選択部232は、入力画像に複数の原稿が含まれると判定して、全ての矩形候補を各原稿の外接矩形として検出してもよい。あるいは、第1の評価点と第2の評価点の合計が高い順に選択した所定数(例えば3つ)の矩形候補を各原稿の外接矩形として検出してもよい。
【0166】
なお、矩形選択部232は、原稿の外接矩形として検出した矩形のうちの一辺が近似直線である場合、その近似直線による一辺を、その近似直線に対応する、ラベリングされたグループに含まれる全てのエッジ画素がその矩形に含まれるように補正する。
【0167】
図25(a)、(b)は、近似直線を含む矩形について説明するための模式図である。
図25(a)の画像2500に示すように、原稿2501の外接矩形として検出した矩形2502の辺2503、2504が近似直線である場合、近似直線2503、2504が原稿2501と重なり、矩形2502が原稿2501の全領域を含まない可能性がある。そこで、矩形選択部232は、
図25(b)の画像2510に示すように、近似直線2503、2504を、各近似直線に対応するグループ2515、2516の外接矩形を構成する辺のうち、各近似直線と略平行であり、原稿2511からみて外側に位置する辺2513、2514に補正する。これにより、矩形2502は矩形2512に補正され、原稿2511の全領域を包含することが可能となる。
【0168】
図4に戻って、矩形切出し部240は、検出された矩形を切出す(ステップS407)。なお、矩形切出し部240は、公知の傾き補正技術を用いて矩形の補正を行ってから矩形の切出しを行ってもよい。
【0169】
次に、第2中央処理部26は、矩形切出し部240が切出した矩形を表示部23に表示し(ステップS408)、一連のステップを終了する。
【0170】
なお、画像処理部27は、矩形を選択した後、選択された矩形に含まれるエッジ画素を除外したエッジ画素から直線を抽出しなおし、抽出しなおした直線から矩形候補を抽出しなおし、抽出しなおした矩形候補から矩形を新たに選択してもよい。
【0171】
図26(a)、(b)は、選択された矩形に含まれるエッジ画素を除外する処理について説明するための模式図である。
図26(a)の画像2600に示すように、入力画像に複数の原稿2601〜2604が含まれる場合、特に直線リストに記録する直線の数を制限しているときは、そのうちの一つ以上の原稿2604が検出されない可能性がある。そこで、矩形選択部232は、
図4に示すフローチャートにおいて、ステップS406で矩形を検出した後、水平エッジ画像及び垂直エッジ画像から、検出した矩形に含まれるエッジ画素を除外する。そして、処理をステップS404に戻し、ステップS404〜S406の処理を繰り返す。これにより、処理負荷を軽減しつつ、精度よく原稿の外接矩形を検出することができる。
【0172】
以上詳述したように、
図4に示したフローチャートに従って動作することによって、情報処理装置20は、読取画像から原稿の境界を精度よく検出することが可能となった。
【0173】
また、矩形検出部230は、エッジ画像からエッジ画素によって囲まれた、閉じた領域(以下、閉領域と称する)を抽出し、抽出した閉領域の外接矩形も原稿の外接矩形を表す矩形として検出してもよい。
【0174】
図27(a)、(b)は、閉領域の外接矩形について説明するための模式図である。
図27(a)の画像2700に示すように、原稿2701の形状が矩形でない場合、原稿の境界の直線2702〜2705から構成される矩形についての第1の評価点及び第2の評価点は低くなる。そこで、
図27(b)の画像2710に示すように、矩形検出部230は、エッジ画像から閉領域2711を抽出し、抽出した閉領域2711の外接矩形2712を算出して、算出した外接矩形2712を原稿の外接矩形とする。
【0175】
図28は、閉領域の外接矩形の抽出処理の動作の例を示すフローチャートである。以下、
図28に示したフローチャートを参照しつつ、閉領域の外接矩形の抽出処理の動作の例を説明する。このフローチャートは、
図1に示す情報処理装置20において、前述した
図4に示すフローチャートの代りに実行することが可能である。なお、以下に説明する動作のフローは、予め第2記憶部25に記憶されているプログラムに基づき主に第2中央処理部26により情報処理装置20の各要素と協働して実行される。
【0176】
図28に示すステップS2801〜S2806、S2809〜S2810の処理は、
図4に示すステップS401〜S406、S407〜S408の処理と同じであるため、説明を省略し、以下では、ステップS2807、S2808の処理についてのみ説明する。
【0177】
ステップS2803において、エッジ画素抽出部210によるノイズ除去処理が実施されると、直線抽出部220による直線検出処理(ステップS2804)及び近似直線検出処理(ステップS2805)並びに矩形検出部230による矩形検出処理(ステップS2806)と並行して、矩形検出部230は、エッジ画像から閉領域を抽出する(ステップS2807)。
【0178】
次に、矩形検出部230は、抽出した閉領域の外接矩形を算出し、算出した外接矩形を原稿の外接矩形とする(ステップS2808)。
【0179】
なお、矩形検出部230は、抽出した閉領域の外接矩形が、
図20に示すフローチャートで検出された矩形と重なっている場合、又は
図20に示すフローチャートで検出された矩形に包含される場合、その外接矩形は原稿の外接矩形として検出しないようにしてもよい。
【0180】
以上詳述したように、
図28に示したフローチャートに従って動作することによって、情報処理装置20は、原稿の形状が矩形でない場合でも、読取画像から原稿の境界を精度よく検出することが可能となった。
【0181】
また、画像処理部27が、直線、近似直線又は矩形を検出する範囲は、利用者によって入力部24から入力できるようにしてもよい。その場合、直線抽出部220又は矩形検出部230は、入力された範囲内で直線、近似直線又は矩形を検出する。
【0182】
図29(a)、(b)は、直線、近似直線又は矩形を検出する範囲が指定された場合の処理について説明するための模式図である。
図29(a)の画像2900に示すように、利用者によって範囲2901が指定されると、直線抽出部220又は矩形検出部230は、指定された範囲内で直線、近似直線又は矩形を検出する。この場合、
図29(b)の画像2910に示すように、原稿内の矩形2911が切り出される。これにより、情報処理装置20は読取画像の原稿内のコンテンツを切り出すことも可能となる。また、矩形を検出する範囲を限定することにより、切り出すべき矩形の外側に存在するノイズを適切に除去することができ、精度よく原稿内の矩形を検出することができる。
【0183】
図30は、他の画像処理システム2の概略構成を示す図である。
図30に示す画像処理システム2と、
図1に示す画像処理システム1との差異は、画像処理部を備える装置が異なる点である。すなわち、画像処理システム2では、情報処理装置40ではなく、画像読取装置30が画像処理部36を有する。この画像処理部36は、情報処理装置20の画像処理部27と同様の機能を有する。
【0184】
図30に示す画像処理システム2では、前述した
図3、4、28に示す処理とほぼ同様の処理を実行することができる。以下、
図3のフローチャートに示される画像読取処理並びに
図4のフローチャートに示される直線検出処理及び矩形検出処理についてどのように適応されるかを説明する。画像処理システム2では、ステップS301の処理及びステップS402〜S407の処理は、予め第1記憶部34に記憶されているプログラムに基づき主に第1中央処理部35により画像読取装置30の各要素と協働して実行され、ステップS408の処理は、予め第2記憶部45に記憶されているプログラムに基づき主に第2中央処理部46により情報処理装置40の各要素と協働して実行される。
【0185】
ステップS301において、画像読取装置30の画像入力部31は、撮像対象物を撮影した読取画像を生成し、第1画像メモリ部32に保存する。直線検出処理及び矩形検出処理は、画像読取装置30で実施されるため、ステップS302、S401の読取画像の送受信処理は省略される。
【0186】
ステップS402〜S407の処理は、画像読取装置30の画像処理部36によって実行される。これらの処理の動作は、画像処理システム1について説明した情報処理装置20の画像処理部27によって実行される場合と同様である。画像読取装置30の画像処理部36は、切出した矩形を第1インターフェース部33を介して情報処理装置40に送信する。一方、ステップS408において、情報処理装置40の第2中央処理部46は、受信した矩形を表示部43に表示する。
【0187】
同様に、画像処理システム2に
図28のフローチャートに示される判定処理が適用される場合、ステップS2802〜S2809の処理は、予め第1記憶部34に記憶されているプログラムに基づき主に第1中央処理部35により画像読取装置30の各要素と協働して実行され、ステップS2810の処理は、予め第2記憶部45に記憶されているプログラムに基づき主に第2中央処理部46により情報処理装置40の各要素と協働して実行され、ステップS2801の処理は省略される。
【0188】
このように、画像読取装置30が画像処理部36を備えて直線検出処理及び矩形検出処理を実行する場合も、情報処理装置が画像処理部を備えて直線検出処理及び矩形検出処理を実行する場合と同様の効果を得ることができる。
【0189】
以上、本発明の好適な実施形態について説明してきたが、本発明はこれらの実施形態に限定されるものではない。例えば、画像読取装置と情報処理装置の機能分担は、
図1及び
図30に示す画像処理システムの例に限られず、画像処理部内の各部を含めて画像読取装置及び情報処理装置の各部を画像読取装置と情報処理装置の何れに配置するかは適宜変更可能である。または、画像読取装置と情報処理装置を一つの装置で構成してもよい。
【0190】
また、
図1に示す画像処理システム1において、画像読取装置10の第1インターフェース部13と、情報処理装置20の第2インターフェース部21を直接接続するのではなく、インターネット、電話回線網(携帯端末回線網、一般電話回線網を含む)、イントラネット等のネットワークを介して接続してもよい。その場合、第1インターフェース部13及び第2インターフェース部21に、接続するネットワークの通信インターフェース回路を備える。また、その場合、クラウドコンピューティングの形態で画像処理のサービスを提供できるように、ネットワーク上に複数の情報処理装置20を分散して配置し、各情報処理装置20が協働して、直線検出処理、矩形検出処理等を分担するようにしてもよい。これにより、画像処理システム1は、複数の画像読取装置10が読み取った読取画像について、効率よく直線検出処理及び矩形検出処理を実施できる。
【0191】
同様に、
図30に示す画像処理システム2においても、画像読取装置30の第1インターフェース部33と、情報処理装置40の第2インターフェース部41をネットワークを介して接続してもよい。