以下、本発明の実施形態について、図面を参照して説明する。以下では本発明を適用する際の一例を説明するが、本実施の形態で説明される特徴の全てが本発明に必須のものとは限らない。
<第1の実施形態>
●装置構成
図1は、本実施形態における画像処理装置の構成を示す図である。本実施形態の画像処理装置は、撮像された画像データの入力を行う画像入力部101と、CPU102、RAM103、記憶部104、を有する。CPU102は画像データに本実施形態の線分出力処理を施す画像処理プログラムを実行する。RAM103は該プログラムを実行する際のワークメモリやデータの一時保存などに利用される。該プログラムやデータは、記憶部104に格納される。
なお、図1に示す画像処理装置の構成は一例であり、ここで示した以外の構成要素を含んでいても良い。また、外部の汎用コンピュータなどを用いて画像処理を実行しても良いし、電子回路上で画像処理を実行しても良い。さらに、画像入力部101に入力する画像データは撮像画像に限らず、人工的に作成された画像でも良い。
●紙面検出処理概要
図2は、本実施形態の画像処理装置による紙面検出処理の概要を示す図である。図2(a)は画像入力部101によって取得する撮像画像データの例であり、複数枚の紙面が配置されている。この撮像画像データに対して本実施形態による紙面検出処理を施すと、図2(b)に示すように各紙面の領域を表す四角形が得られる。以下、このような紙面と背景との境界を表す直線が成す四角形の領域を、紙面領域と称する。また本実施形態では、撮像画像の各画素は輝度値により表現されるものとして説明を行うが、これにより本発明が輝度値による画像データに限定されるものではない。
図3は、本実施形態における紙面検出処理を示すフローチャートである。上述したように本処理は、CPU102がプログラムを実行することによって実現される。
まず、ステップS301において、画像入力部101で取得された撮像画像データに対してエッジ検出を行う。この処理によって、撮像画像データにおいて輝度勾配の強度が大きい画素がエッジ画素として得られる。エッジ検出処理では、ノイズ相当のエッジを除去する。ここでノイズ相当のエッジとは、文書の辺を構成するエッジではないと推定されるエッジである。
次に、ステップS302において、ステップS301で得たエッジ画素の集合からエッジ画素の点列によって構成される直線を生成する。直線生成は、ハフ変換やラドン変換など公知の方法によって行う。続いて、ステップS303において、ステップS302で生成された直線とエッジ画素の集合に基づき、線分群を取得する。本実施形態では取得された複数の線分から信頼度の高い線分を紙面領域の境界を示す線分として出力する。なお、本実施形態では、直線は端点を持たず、線分は2つの端点を持つとして区別する。
続いて、ステップS304において、各線分の位置関係をもとに線分を4本ずつ選択し、紙面領域の候補となる四角形を生成する。そして、最後にステップS305で、ステップS304で生成した四角形から、紙面領域を示す四角形を選択する。
以下、図3に示すフローチャートにおける各処理について、詳細に説明する。
●エッジ検出処理
ステップS301におけるエッジ検出処理について、図4〜7を用いて詳細に説明する。図4は、本実施形態の画像処理装置においてエッジ検出処理を行う際の機能構成を示す図であり、図5は本実施形態のエッジ検出処理を示すフローチャートである。
まず、ステップS501で撮像画像入力部401が、処理対象画像を入力する。次に、ステップS502でエッジ画像作成部402が、入力画像からエッジ画素を抽出したエッジ画像を作成する。このエッジ画像の作成には、エッジ検出のキャニー法(John F.Canny)等、周知の手法を用いるとする。そして、ステップS503で連結画素ブロック作成部403が、画素と画素が連なっている連結画素ブロックを作成する。ここで連結画素ブロックとは、エッジ画素が8近傍で連結している画素集合のことである。
そして、ステップS504で外接矩形作成部404が、ステップS503で作成された連結画素ブロックのそれぞれに外接する矩形を作成する。この時点で、例えば図2(a)に示す入力画像であれば、紙面と背景の境界による紙面端エッジと、背景のテクスチャや文書中の文字によるノイズとすべきエッジとの両方が存在している。撮像画像から紙面領域を検出する際には、このノイズとすべきエッジを除去して紙面端エッジのみを抽出することが望ましい。
そこで、本実施形態ではステップS505以降において、外接矩形の特性を示す各種パラメータから、外接矩形が対応する連結画素ブロックがノイズ相当か否かを判定する。ノイズ相当と判定されれば、この連結画素が除去される。これは、一般に紙面の境界領域に相当する紙面端エッジは直線であり、ノイズによるエッジよりも長い、もしくはノイズによるエッジは一直線に伸びるものではない、という性質を利用したものである。
以下、本実施形態におけるステップS505〜ステップS509のノイズ除去処理について、詳細に説明する。
まず、ステップS505で外接矩形パラメータ比較部405が、外接矩形の長辺の長さを所定の閾値(第1の閾値)と比較する。第1ノイズ判定部406がこの比較結果から、外接矩形が紙面端エッジを構成する領域(以下、境界領域)の候補であるか否かを判断する。これは、紙面端エッジの外接矩形であれば一方向に長く伸びている可能性が高いという性質を利用している。具体的には、外接矩形の長辺が第1の閾値より短いものは境界領域ではなく、抽出対象外のノイズであると判断してステップS509に進み、第1ノイズ除去部407がこの連結画素ブロックの除去を行う。一方、外接矩形の長辺の長さが第1の閾値以上であれば、境界領域の候補であるとしてこの連結画素ブロックを残したまま、第2のノイズ判定処理であるステップS506に進む。
ここで図6に、ステップS505によるノイズ判定処理の具体例を示す。この例では、連結画素ブロック601に対する外接矩形602の長辺603の長さについては、その長さが第1の閾値よりも短いため、この外接矩形602を持つ連結画素ブロック601はノイズであると判断され、除去される。一方、連結画素ブロック604に対する外接矩形605の長辺606は第1の閾値よりも長いため、この外接矩形605を持つ連結画素ブロック604は境界領域の候補として残される。
次に、ステップS506で外接矩形パラメータ比較部405が、外接矩形の縦横比(長辺の長さ/短辺の長さ)で所定の閾値(第2の閾値)と比較し、第1ノイズ判定部406がこの比較結果から、外接矩形が境界領域候補であるか否かを判断する。ここで、上記ステップS505の外接矩形の長辺の長さによるノイズでは、背景の大きな模様がある場合等、サイズの大きいノイズでは外接矩形の長辺の長さも長くなり、ノイズと判別されないことがある。これに対しステップS506のノイズ判定では、紙面の境界領域ならば一方向に長く伸びている可能性が高く、外接矩形が長方形に近くなることに対し、ノイズの場合の外接矩形は正方形に近くなるという性質を利用する。
具体的には、外接矩形の縦横比(長辺の長さ/短辺の長さ)は第2の閾値を超えていれば、境界領域の候補であると判断してステップS507に進み、この連結画素ブロックを残す。一方、外接矩形の縦横比が第2の閾値以下であればノイズの可能性があるとし、ステップS508のノイズ判定に進む。
ここで図7に、ステップS506によるノイズ判定処理の具体例を示す。この例では、連結画素ブロック701に対する外接矩形702の縦横比(長辺の長さ/短辺の長さ)は第2の閾値よりも大きくなるため、境界領域の候補であると判断してこの連結画素ブロックを残す。一方、連結画素ブロック703に対する外接矩形704の縦横比は第2の閾値以下となり、ノイズの可能性ありと判定される。ただし、この判定方法では斜め方向に伸びた境界領域の連結画素ブロック705についても、その外接矩形706の縦横比は第2の閾値以下となってしまう。このような斜め方向に伸びた連結画素ブロック705については紙面端エッジである可能性も高いため、ここではまだノイズと判断せず、ステップS508の第3のノイズ判定に進む。
ステップS508で外接矩形パラメータ比較部405が、外接矩形内の連結画素ブロックの密度を所定の閾値(第3の閾値)と比較し、第1ノイズ判定部406がこの比較結果から、外接矩形が境界領域候補であるか否かの判断を行う。上述したように、斜めに伸びている画素ブロックが紙面端エッジであるかノイズであるかは外接矩形の縦横比では判定できないため、外接矩形内の連結画素ブロックの密度による判定を行う。
これは以下の性質を利用している。すなわち、外接矩形が紙面端エッジに対応する境界領域であれば、該矩形内では対角線上に連結画素ブロックがあるだけであるから、該矩形内での画素密度は低くなる。一方、ノイズであれば矩形内のいたるところ、少なくとも境界領域の場合よりも広く画素が分布するので、画素密度が高くなる。外接矩形内の連結画素ブロックの密度が第3の閾値以上であればノイズと判定してステップS509に進み、この連結画素ブロックの除去を行う。一方、密度が第3の閾値未満であれば境界領域候補と判定してステップS507に進み、この画素ブロックを残す。
ステップS508によるノイズ判定処理の具体例を、図7に示す。この例では、連結画素ブロック701についてはステップS506で既に境界領域候補として判定されているため、ステップS508での処理対象外である。連結画素ブロック703については、その外接矩形704内に連結画素ブロックが広く分布していることから画素密度が高く、ノイズであると判断されて該画素ブロックが除去される。一方、連結画素ブロック705については、その外接矩形706内での画素ブロックの広がりが対角線上のみであることから画素密度が低く、境界領域候補として判断されてこの画素ブロックが残される。
以上、図5のフローチャートに示した一連の処理により、処理対象画像からノイズであると判定されたエッジが除去され、境界領域の候補である紙面端エッジが残された画像として出力される。このエッジ検出処理を経た画像であれば、後段の直線・線分出力処理によって境界領域を正しく検出することができる。
●線分出力処理
ステップS303における線分出力処理について、図8〜14および図22を用いて詳細に説明する。
図14は、本実施形態の画像処理装置において線分出力処理を行う際の機能構成を示す図である。撮像画像入力部1401は、撮像画像入力部401と同様に、処理対象画像を入力する。エッジ画像作成部1402は、ステップS502〜ステップS509の処理を行う。直線生成部1403は、ステップS302の直線を生成する。線分出力部1404は、本実施形態の線分出力処理を行う。また、線分出力部1404を複数のより詳細な機能構成部分に分けることができる。さらに、本実施形態は上述した構成に限定されず、例えば、エッジ画像作成部1402は、図4のエッジ画像作成部402と同様にステップS502のエッジ画像の作成処理だけを行ってもよい。
次に、本実施形態の詳細な機能構成部分について説明する。図8は、線分出力処理を示すフローチャートである。
まず、ステップS801において、ステップS302で得た直線群に基づき、ステップS502で得たエッジ画素群からエッジ画素を選択し、ステップS301で得たエッジ画素群に該エッジ画素を追加する。ステップS301で得られるエッジ画素群(エッジ画像)は、精度良く直線を生成する為にノイズ除去が行われている。しかしながら本実施形態における線分出力処理では、直線近傍にあるエッジ画素をもとに線分を生成するため、直線近傍のエッジ画素はノイズとして除去されないのが望ましい。そこでステップS801では、エッジ画素追加部1405が、ステップS502で得たエッジ画像に対して各直線から所定距離内(N1)にあるエッジ画素を、ステップS301で得たエッジ画像に追加する。得られたエッジ画素群、を以降の処理で用いる。なお、所定距離N1としては、例えば2mmに相当する画素数を用いる。
エッジ画素追加処理の概略について、図13を用いて説明する。図13(a)は、ステップS502の処理によって作成されたエッジ画像の一例を示す。図13(b)は、ステップS507の処理によって残されたエッジ画素1301および、ステップS509の処理によってノイズとして除去されたエッジ画素1302を示す。このエッジ画素1301だけを含むエッジ画像がステップ301で得られるエッジ画像である。
図13(c)は、ステップS302の処理によって生成された直線1305を示す。直線1305に対して、エッジ画素が存在する部分に線分が存在し、エッジ画素が存在しない部分に線分が存在しないと推定する。直線1305の近傍(直線1305の周囲)において、エッジ画素とエッジ画素の間隔が所定値n以上(所定値以上)の場合は、そのエッジ画素を境界に直線1305を線分に分割する。直線1305を分割すると、図13(d)に示すように、短い線分1306が得られる。ここで、エッジ画素追加部1405が、直線1305から所定距離内にあって、ノイズとして除去されたエッジ画素1304をエッジ画素1301のエッジ画像に追加してから、直線1305を線分に分割すると、正しい線分1307が得られる。直線を線分に分割する処理は、後述するステップS802において線分抽出部1406が行う本実施形態の線分出力処理の一部である。
図22に、図13で説明したエッジ画素追加処理により、エッジ画素が追加されてから、線分出力処理を行う具体例を示す。図22(a)は、ステップS502で得たエッジ画素群を表す画像であり、各黒画素がエッジ画素である。領域2201は紙面領域と背景領域の境界を表し、領域2201より右側が背景領域である。ここでは、領域2201だけに着目して、エッジ画素の追加処理について説明する。
図22(b)は、図22(a)のエッジ画像に対してノイズ除去を行った結果である。図22(b)では領域2202のエッジ画素がノイズと誤検知され、削除されている。このようにノイズとして誤検知されるのは、例えば紙面の端まで写真が印刷されている場合に、写真の一部と背景領域との画素値の差が小さくなるために生じることがある。
図22(c)は、図22(b)のエッジ画素群に対して、ステップS302の直線生成処理を施して得た直線群である。図22(c)では説明をわかりやすくするために、領域2201から生成した直線だけを直線として示し、その他の領域から生成した直線は線分として示した。
これらの直線群に対して、線分抽出部1406が直線を線分に分割する処理を施した場合、得られる線分は図22(d)に示すような短い線分である。図22(b)で領域2202のエッジ画素の一部がノイズとして除去されたので、エッジ画素の存在しない直線部の長さが所定値n以上(所定値以上)となり、エッジ画素の存在しない直線部は切断されて、領域2201の直線から複数の線分が抽出されてしまう。
このような線分の誤検知を防ぐために、ステップS801では、図22(b)のエッジ画素群に対して、図22(c)の直線近傍にあって、図22(a)のエッジ画像から除去された画素群を加えたエッジ画素群を生成する。その結果、図22(e)のエッジ画像が得られる。図22(e)のエッジ画像に基づいて、線分抽出部1406が直線を線分に分割すると、図22(f)に示すように正しい線分が得られる。
図22(f)の処理結果から、写真が紙面の端まで印刷されている場合でも、紙面領域と背景領域の境界を表す線分が精度良く得られる。
図8に戻り、次に、ステップS802において、線分抽出部1406が、ステップS302で直線生成部1403によって生成された各直線を複数の線分に分割する。具体的には、まずステップS801で得られたエッジ画素群から、直線から所定距離内(N2)内にエッジ画素を抽出する。そして、抽出されたエッジ画素間の距離が所定値nより小さいのであれば、それらは同一線分の要素であると判定する。エッジ画素間の距離が所定値nより大きいのであれば、それらは異なる線分の要素であると判定する。
ここで、距離が所定値nより大きい2点のエッジ画素をそれぞれエッジ画素pi、エッジ画素pjとする。エッジ画素pjとエッジ画素pjは、それぞれ異なる線分の端点であると判定し、エッジ画素pi、pjを直線に正射影してえる座標を端点とする線分を生成する。所定距離N2は、例えばステップS801で定めた所定距離N1と同値とする。また所定値nとしては、例えば図2(a)に示す複数紙面のように、処理対象画像における紙面間の最小間隔以上の値を設定する必要があり、例えば5cmに相当する画素数を設定する。
次に、ステップS803で、ステップS802で得た各線分について線分近傍(線分の周囲)のエッジ画素に対するフィッティングを行う。フィッティング処理は、分割処理で得られた各線分に対して、その近傍のエッジ画素を用いて、さらに線分を生成して、線分を出力する処理である。このフィッティング処理の詳細は、図9〜11を用いて後述する。
ステップS802及びステップS803の処理を全直線及び全線分について行った後に、ステップS804で線分候補選択部1412が選択処理の対象となる2本の線分から複数の線分候補を生成し、この複数の線分候補から1本の線分を選択する。2本の線分の線分間距離、線分間角度がいずれも閾値以下である場合に、線分候補選択部1412がこの2本の線分を選択処理の対象として判定する。この判定は、ステップS803の線分フィッティング処理で得られた線分の全てに対して行う。ここで、例えば画像中の紙面枚数が1枚であることが既知の場合には、同一直線上にある2本の線分に対して、積極的に選択処理する必要がある。この場合、線分間距離の閾値を大きくすると、閾値以内の距離で並列した2線分も選択処理の対象となり、意図しない結果が得られてしまう。そこで、選択条件として、両線分の中点同士を結んだ線分と、2線分それぞれが成す角度に対して閾値を与えることで、延長線上にある線分のみを選択処理の対象とすることができる。この選択処理の具体例については、図12を用いて後述する。
選択処理によって選択された線分は、ステップS805で再度フィッティング処理を行う。これを全線分について行い、線分出力処理を終了する。
●線分フィッティング処理
ここで、ステップS803およびステップS805における線分フィッティング処理について、図9のフローチャートを用いて詳細に説明する。
まず、ステップS901で、信頼度算出部1408が、処理対象の線分(線分1)の信頼度を、[線分長]×[分離度]/[平均二乗誤差]によって定める計算式を用いて算出する。ここで、[線分長]は、処理対象の線分の長さである。[分離度]は、線分の両面の輝度がどの程度分離しているかを表す指標である。[平均二乗誤差]は、エッジ画素が線分近傍(線分の周囲の所定範囲)に密集している度合い(密集度合い)を表す指標である。ここで、[分離度]は以下の式(1)によって算出される。
ここで、N1は領域1の画素数、N2は領域2の画素数
m1は領域1の平均輝度値、m2は領域2の平均輝度値
mは領域1−領域2の平均輝度値
siは画素iの輝度値
式(1)において領域1は、線分を一辺とする幅wの一方の領域とし、領域2は、この線分を一辺とする領域1と重ならない幅wのもう一方の領域とする。また、入力画像データが多値データ(例えば、RGBの3値データ)である場合にも信頼度を算出できる。例えば、多値空間(RGB空間)において、領域1の平均値と領域2の平均値を通る直線に全画素値を射影して得る値を輝度値に置き換えて、式1により分離度などを算出して、信頼度を算出してもよい。
[平均二乗誤差]は、線分と線分から距離D以内にあるエッジ画素の距離を二乗した平均について、さらに平方根を取った値である。本実施形態では、w及びDを、ステップS801のエッジ画素群抽出の際に用いた所定距離N1と同じ値とする。
即ち、領域の境界を示す線分としての信頼度は、線分近傍のエッジ画素の分布と、線分を境界とする二つの領域の画像特徴量の関係とに基づいて算出する。また、信頼度は、線分近傍のエッジ画素の分布のみ、又は線分を境界とする二つの領域の画像特徴量の関係のみに基づいて算出してもよい。線分近傍のエッジ画素の分布は、例えば、エッジ画素が線分の周囲の所定範囲に密集している度合いである平均二乗誤差を用いて表すことができる。また、線分を境界とする二つの領域の画像特徴量の関係は、例えば、線分の両側の輝度がどの程度分離しているかの指標である分離度を用いて表すことができる。
ここで図10に分離度の概念図を示す。図6(a)において、線分1001を境界とする領域1002a、1002bの輝度ヒストグラムが、1003a、1003bである。同様に、図6(b)の各領域から得たヒストグラムを1004a、1004bに示した。この例の場合、図10(b)よりも図10(a)の方は分離度が高い値となる。
線分の信頼度は、線分が長く、線分を境界とする両面で輝度の変化が大きく、エッジ画素が線分近傍に密集している場合に大きくなる指標である。該信頼度は式(1)に限らず、その変形又は別の式を用いても良い。例えば、[線分長]を[距離D以内のエッジ画素数]に置き換えられる。また[分離度]を[領域1と領域2の最大輝度差(あるいは平均輝度差)]に置き換えられる。また[平均二乗誤差]を[エッジ画素と線分の距離総和]に置き換えられる。また[平均二乗誤差]を[距離D以内のエッジ画素群の輝度勾配方向の分散]に置き換えられる。また、線分の信頼度に[距離D以内のエッジ画素群の輝度勾配強度の総和]を係数として掛ける、などの変形が可能であり、さらに上述の変形方法に限らない。
また、信頼度算出部1408を、さらに、線分長算出部、分離度算出部と平均二乗誤差算出部に分けることができる。線分長、分離度と平均二乗誤差のそれぞれに重み付けを行ってもよい。例えば、比較対象となる2本の線分について、線分長、平均二乗誤差の何れも差が小さい場合は、分離度算出部が算出する分離度を信頼度として用いてもよい。
図9に戻り、ステップS902でエッジ画素取得部1409が線分1から所定距離(D)内のエッジ画素群E1を取得する。次に、ステップS903で、線分取得部1410がエッジ画素群E1から新たに線分2を求める。まず、エッジ画素群E1に対して、主成分分析などの処理を適用して、直線を生成する。主成分分析は、点群の分散が最も大きくなる方向を求める方法である。次に、このエッジ画素群E1から生成された直線と、エッジ画素群E1を包含する外接矩形の交点を端点とする線分を線分2として取得する。
次に、ステップS904で、ステップS901で求めた線分1の信頼度と同様に線分2の信頼度を求める。そして、ステップS905で、線分選択部1411が線分1の信頼度と線分2の信頼度を比較し、大きい方を線分Aとして選択する。ここで線分Aとして線分1が選択された場合にはステップS906に進み、所定距離DをD以下の値に更新する。例えば、D=D/2とする。線分Aとして線分2が選択された場合には、所定距離Dを小さい値に更新せず、そのままステップS907に進む。
ステップS907では、線分Aから所定距離D以下のエッジ画素群E2を取得する。線分Aが線分1である場合、エッジ画素群E2はエッジ画素群E1に完全に包含される点群となる。一方、線分Aが線分2である場合、エッジ画素群E2はエッジ画素群E1に重複する点群となる。ステップS907で得たエッジ画素群E2がエッジ画素群E1と等しい場合、処理が収束したとみなし、線分フィッティング処理を終了する。一方、エッジ画素群E2とエッジ画素群E1が異なる場合にはステップS908に進み、エッジ画素群E2を新たなエッジ画素群E1とし、線分Aを新たな線分1としてステップステップS903に戻り、処理を続行する。
以上、図9のフローチャートに示した線分フィッティングの処理は一例に過ぎず、線分フィッティング処理はこの例に限定されない。例えば、ステップS902及びステップS907において、線分1の角度に類似した方向に輝度勾配を持つエッジ画素のみを対象として取得することで、ステップS903の精度が向上できる。
また、ステップS905で選択した線分Aをそのままフィッティング処理の結果として出力してもよいし、所定のループ回数で強制的に計算を打ち切り、その時点での線分Aを出力してもよい。また、予め所定距離Dの値Diを複数用意し、ステップS902及びステップS903の時点でそれぞれの所定距離Diについてエッジ画素群Ei及び線分iを求め、信頼度が最大となる線分iを選択してもよい。あるいはステップS903で、主成分分析以外の手法を用いてもよい。例えば、外接矩形に接する2点や、距離が最大となる2点を端点としてもよい。また、周知の最小二乗法、ハフ変換、RANSAC等の方法を用いてもよい。さらに、これらを全て同時に使用して複数の線分を求め、いずれかを選択、あるいは信頼度が閾値以上となる線分を全て出力してもよい。
ここで図11に、線分フィッティング処理の具体例を示す。図11(a)では、3枚の紙面を撮像した画像から得られたエッジ1101a〜1101cと、線状ノイズであるが、除去できなかった画素1102とから、ステップS302の直線生成処理で直線1103が得られたとする。ここで、エッジ1101cは、紙面Cの上辺に対応する一つのエッジであるが、エッジ1101aとエッジ1101bは、環境光などの影響により、それぞれ紙面Aと紙面Bの上辺に対応する途切れた二本のエッジである。
直線1103を、ステップS802の処理によって、直線1103近傍(線分の周囲の所定範囲)のエッジ画素をもとに分割すると、図11(b)に示す線分1104a〜1104cが得られる。直線1103は複数の紙面のエッジ画素およびノイズ相当のエッジ画素から得られたので、線分1104a〜1104cは単に直線1103を分割した結果であり、いずれも各紙面の上辺から位置、傾き共にズレがある。これらの線分1104a〜1104cに対して、線分フィッティング処理を行う。
図11(c)は、線分1104a〜1104c(線分1)それぞれに対して、ステップS902及びステップS903の処理を施した結果である。エッジ1101bとエッジ1101cとのそれぞれから、紙面Bと紙面Cの上辺に適した線分1105bと線分1105cとが線分2として得られた。一方で、線分1105aは、線状ノイズ画素1102の影響を受けて紙面Aの上辺からズレがある線分(線分2)となっている。ここでステップS905の処理を行い、線分1104aと線分1105a、線分1104bと線分1105b、線分1104cと線分1105cのそれぞれの信頼度を算出して比較する。
その結果、線分1104a、線分1105bおよび線分1105cがそれぞれ信頼度の大きい線分として選択される。線分1105bおよび線分1105cは紙面領域の境界を示しているので、処理が収束し、線分フィッティング処理を終了する。一方、線分2として選択された線分1104aは直線1103を分割して得た線分であるため、ステップS906に進んで所定距離Dをより小さな値に更新し、再度エッジ画素群を求める。
図11(d)に示すように、線分1104aの周囲の更新前の所定範囲は、線分1104aを中心線として、線分1104aから所定距離D内の範囲である。図11(e)は、線分1104aの周囲の更新後の所定範囲を示した図である。所定距離Dに対応する所定範囲1106と、更新後の所定距離D/2に対応するより小さくした所定範囲1107を示した。所定距離をD/2とすることで、線状ノイズ画素1102が除かれて、エッジ1101aのみを含むエッジ画素群が得られる。このエッジ画素群をステップS907におけるエッジ画素群E2として取得して、ステップS908及びステップS903に進み、主成分分析などの処理を行う。そして、図11(f)に示すように、途切れた二本のエッジ1101aを連結して、正しい紙面領域の境界を示す線分1108aが得られる。
図11(e)では、線分1104aの周囲の所定範囲(線分の法線方向の所定範囲)を小さくする方法として、線分1104aを境界に、その両側に線分1104aからの所定距離Dを所定距離D/2に変更する一例を示した。ただし、この方法では、線状ノイズ画素1102が除去できない場合は、線分1108aが正しく得られず、また信頼度の低い線分が得られてしまう可能性がある。
そこで、上述した方法によって得られた線分の信頼度が線分1104aより低い場合、大きさを小さくした所定範囲の位置を、線分1104aの法線方向に移動し、移動した所定範囲にあるエッジ画素群を再度取得して、線分を生成する。生成された線分と線分1104aとの信頼度を比較することによって、線状ノイズの除去を行う。なお、大きさを小さくした所定範囲の移動は複数回行って、線分1104aより信頼度の高い線分が見つかるまで処理を繰り返す。
なお、本実施形態の線分フィッティング処理は、1枚の紙面しかない場合にも適用できる。例えば、図11(g)〜(i)及び図11(d)〜(f)のように、紙面Bと紙面Cはなく、紙面Aしかない場合にも、上述した方法は同様に適用できる。
●線分候補の選択
ここで図12を用いて、ステップS804における線分候補の選択処理を説明する。
図12(a)には、選択処理を行う前の2本の線分である線分1201と線分1202と、線分1201の端点1201a、1201bと、線分1202の端点1202a、1202bを示す。
線分候補の選択処理では、図12(b)〜(e)に示すように、まず端点1201aまたは1202aと、端点1201bまたは1202bを端点とする線分候補1203〜1206を求める。ここでは、線分候補1203と線分候補1204は、もとの線分1202と線分1201と同じである。線分候補1205と線分候補1206は、新たに生成された線分である。次にこれらの候補線分について、ステップS901と同様の信頼度を求め、最も信頼度が高くなる線分候補を選択した結果として出力する。
ここで出力される線分が線分候補1205または線分候補1206の場合、これらは新たに生成されたので、ステップS805で線分フィッティングが再度行われる。また、線分候補は図12(b)〜(e)に示す線分に限らず、例えば端点1201aと端点1202aの中点と、端点1201bと端点1202bの中点を新たに定め、それらを端点とする線分候補を求めてもよい。
紙面の僅かな歪みや環境光により生じる紙面の影などにより、同一の紙面領域の境界(同一の辺)から、複数の線分が出力される場合がある。これに対して線分候補の選択処理を行うことで、近接した2本の線分から新たに1本の線分が選択され、正しい紙面領域の境界を示す線分を出力することが可能となる。
●四角形生成処理
ステップS304における四角形生成処理では、ステップS303によって得られた線分群から、四角形の集合を生成する。
まず、全ての線分の角度を求め、角度が0度以上45度未満の線分を水平方向の線分(以下、水平線分)に分類し、45度以上90度未満の線分を垂直方向の線分(以下、垂直線分)に分類する。次に、水平線分群から任意の線分を第1の水平線分として選択し、それと距離が一定以上離れた第2の水平線分を選択する。続いて、垂直線分群から、第1の水平線分と略直交(例えば90度±3度)する垂直線分を第1の垂直線分として選択し、それと距離が一定以上離れた第2の垂直線分を選択する。最後に、第1、第2の水平線分と第1、第2の垂直線分が成す四角形を出力し、これを全ての線分の組み合わせについて探索することで四角形を生成する。
なお、本実施形態では四角形を検出対象として説明したが、これに限定するものではない。例えばN角形(Nは奇数)が検出対象となる場合、線分を90/N度刻みにN分類し、分類された各群から任意の線分を1本ずつ取得し組み合わせることでN角形を生成することが可能である。M角形(Mは偶数)の場合、線分を90/M度刻みにM分類し、分類された各群から任意の線分を2本ずつ取得し組み合わせることでM角形を生成することが可能である。
●紙面領域選択処理
以下、ステップS305における紙面領域選択処理について、図15を用いて詳細に説明する。ここで説明上、紙面領域候補を四角形として説明するが、対象の形状が四角形に限らず、角と辺から構成される多角形であればよい。
まずステップS1501で、ステップS304で四角形として生成された紙面領域候補O1からOnを順次、処理対象の紙面領域候補Oとして、ステップS1502〜ステップS1509までの処理を繰り返す。それぞれの紙面領域候補Oに対する処理は独立しているため、最終的に得られる結果は処理の順序により変動しない。したがって、それぞれの紙面領域候補Oの処理を並列に行ってもよい。
ステップS1502では、紙面領域候補Oの辺近傍領域について、紙面領域候補Oの外部領域の輝度の分散値σを以下の式(2)を用いて算出する。
ここで、Nは画素数
mは領域の平均輝度値
siは画素iの輝度値
紙面領域候補と近傍領域について、図16を用いて説明する。破線の四角形1601は、ステップS301〜ステップS304の処理で得られた紙面領域の候補となる四角形である。実線の四角形1602は、四角形1601を外側に所定サイズ分拡大した四角形であり、実線の四角形1603は四角形1601を内側に所定サイズ分縮小した四角形である。四角形1602から紙面領域候補の四角形1601を減算した領域が、辺近傍領域の外部領域であり、四角形1601から四角形1603を減算した領域が、辺近傍の内部領域である。
ステップS1503では、紙面領域候補Oの辺近傍の内部領域と外部領域について、輝度の分離度を算出する。分離度の算出には上述した式(1)を用いればよい。分離度は、2つの領域の輝度の差を示す指標であるため、紙面領域の近傍であれば、背景と紙面のそれぞれの輝度の均一性が高く、該2領域間の輝度が大きく異なる場合に、分離度は大きい値をとる。
ステップS1504では、紙面領域候補Oの辺近傍をm個に分割して分割領域B1、B2、…、Bmを作成する。ここでは、紙面領域候補Oの辺近傍領域の分割について、図17を用いて説明する。
図17は、図16に示す紙面領域候補の四角形1601の近傍領域を分割する様子を説明する図である。図17(a)に示すように紙面領域候補である四角形1601は、4つの線分1701、1702、1703、1704から構成される。
図17(b)は、図17(a)に示す4つの線分1701、1702、1703、1704を分割した例を示す。本実施形態では、四角形1601の長辺にあたる線分1701、1703を5等分し、短辺にあたる線分1702、1704を3等分するように、分割点1705〜1716を設定している。さらに、各辺の両端、即ち四角形1601の角の部分にあたる分割点1717、1718、1719、1720を併せて、全16個の分割点を作成した例を示す。なお、図17に示す分割点は一例に過ぎず、各辺で異なる個数への分割を行ってもよいし、全辺同数に分割してもよい。また、辺を等分に分割する方法の他、各辺の端から一定間隔で分割点を決定してもよい。
そして図17(c)に示すように、各分割点を中心とした正方形として、分割領域1721〜1736を作成する。各分割領域は、その中心を紙面領域候補である四角形1601の辺上に持ち、四角形1601の辺で内部が区切られることで、四角形1601の内側と外側の両方の領域から構成される。なお、この分割領域は一例に過ぎず、例えば分割領域の形状については正方形ではなく長方形でもよいし、円形やその他の形であってもよい。また、領域のサイズも一定でなくても良く、後述する分割領域の評価値に応じて変更してもよい。
そしてステップS1505では、ステップS1504で作成した分割領域について、紙面領域候補の確からしさ(確度)を得るための評価値を算出する。分割領域ごとの評価値算出方法については、図18を用いて後述する。
そしてステップS1506では、ステップS1505で算出した分割領域ごとの評価値に基づき、四角形1601全体についての、紙面領域としての確度のスコアを算出する。このスコアとしては、辺ごとに、該辺に位置する分割領域の評価値の平均を求め、それらの平均値と、角に位置する分割領域の外部分散値の平均を用いて、以下の式(3)により求める。
ここで、
SaはS1503で求めた紙面領域候補Oの内外分離度
SmはS1505で求めた分割領域の各辺の内外分離度の平均
vaはS1502で求めた紙面領域候補Oの外部分散値
vmはS1505で求めた分割領域の各角の外部分散値の平均
図17に示す分割領域の例では、分割領域1721〜1732が辺に位置し、分割領域1733〜1736が角に位置する。そして辺ごとの平均とはすなわち、分割領域1721〜1724の平均と、分割領域1725、1726の平均と、分割領域1727〜1730の平均と、分割領域1731、1732の平均である。
入力画像中の紙面の背景、即ち紙面が置かれた台の色は一定である場合、紙面領域候補が正しく紙面領域であれば、紙面領域候補の外部は紙面の背景であり、背景が輝度の均一性を持っていれば輝度分散値は低い値を示す。同様に、紙面領域候補が正しく紙面領域であれば、紙面領域候補の内部、すなわち紙面と、その外部のそれぞれの色差により、分離度は高い値を示す。なお、上記式(3)は、紙面領域候補の確度を算出する一例に過ぎず、分割領域の分離度が高いほど紙面領域候補の確度が高くなり、角部の分散値が低いほど紙面領域候補の確度が低くなればよい。したがって、式(3)のスコア算出に重み付けを行ってもよいし、それぞれの分離度、分散値に閾値を設けるなど、その他の算出方法を適用してもよい。
そしてステップS1507で、対象紙面領域候補Oのスコアが閾値以上か判定し、閾値以上であればステップS1508へ進み、対象紙面領域候補Oを紙面領域として選択してステップS1510へ進む。一方、閾値未満であればステップS1509へ進み、対象紙面領域候補Oは紙面領域でないとして、紙面領域候補群から削除してステップS1510へ進む。なお、本実施形態ではこの閾値を0.0010とするが、閾値は他の固定値であってもよいし、実際の処理対象の種類に応じて調整可能な値でもよい。ステップS1507〜ステップS1509では、閾値を用いて紙面であるか否かの判定を行ったが、入力画像内に一つの紙面領域しか存在しないことが明らかである場合は、スコアが最も高い四角形領域候補のみを残してもよい。
そしてステップS1510で、紙面領域候補の全てに対する処理が終了していれば、図15に示す紙面領域選択処理を終了するが、未処理紙面領域候補が残っていれば、ステップS1501へ戻って、次の紙面領域候補の処理を開始する。
●分割領域評価値の算出処理
以下、上記ステップS1505における分割領域の評価値の算出処理について、図18のフローチャートを用いて説明する。
まずステップS1801で、ステップS1504で作成した分割領域B1〜Bmを順次、処理対象の分割領域Bとして、ステップS1802〜ステップS1806の処理を繰り返す。それぞれの分割領域Bに対する処理は独立しているため、最終的に得られる結果は処理の順序により変動しない。したがって、それぞれの分割領域Bの処理を並列に行ってもよい。
ステップS1802では、分割領域Bが紙面領域候補Oの角に位置するか否かを判定する。分割領域Bが角に位置すればステップS1805へ進み、角に位置しなければ、すなわち辺であればステップS1803へ進む。この判定は、上記ステップS1504で領域を分割する際に、辺の両端の領域を角部としてタグを付し、該タグを判定すればよい。また、分割領域Bが紙面領域候補Oの2辺を含むか否かの判定を行ってもよい。図17の例では、分割領域1733、1734、1735、1736については角に位置するためステップS1805の処理へ進み、それ以外の分割領域についてはステップS1803の処理へ進む。
ステップS1803では、分割領域Bの内部領域と外部領域の輝度の分離度を算出する。分離度の算出には上記式(1)を用いればよい。ここで分離度は、線分の両面の輝度がどれだけ分離しているかを表す指標であるから、紙面領域候補Oが正しく紙面領域であれば、紙面領域と背面領域(例えば原稿と原稿台)の輝度差により、分離度が高く算出される。そして、ステップS1804で、ステップS1803で求めた分離度を分割領域Bの評価値として設定し、ステップS1807へ進む。
ここで、上記ステップS1503では、紙面領域候補Oの辺近傍領域の全体で分離度を求めているが、一般に広い領域では環境光などの影響により、輝度のヒストグラムの分布が広くなる。したがって、広い領域内の2領域間における分離度としては、2領域の輝度差が小さいと、2領域のヒストグラムが重なりあってしまい、分離度も小さい値が算出されてしまう。そこで、背景と紙面の輝度差が小さい場合には、領域を分割することにより高い分離度を得ることができる。
また、分離度をより大きく得るために、分割領域のサイズを変更してもよい。例えば、紙面内の余白が狭い箇所では、分割領域のサイズによっては文字などの余計な画素が入るため、分離度が小さい値をとってしまうことがある。その場合は、分割領域のサイズを変更して、分離度の高い方を評価値として採用すればよい。
一方、ステップS1805では、分割領域Bの外部領域の輝度分散値を算出する。ここで外部領域とは、分割領域Bにおける、紙面領域候補Oの辺の外側の領域を示す。輝度分散値の算出には、上記式(2)を用いればよい。ここで分散値は、領域中の輝度が一様であるかの指標であるから、紙面領域候補Oが正しく紙面領域であれば、背景領域(例えば原稿台)の輝度が一様となり、分散値が小さい値として求まる。
そしてステップS1806で、ステップS1805で求めた分散値を分割領域Bの評価値として設定し、ステップS1807へ進む。
ステップS1807では、全ての分割領域について処理が終了していれば、図18に示す評価値の算出処理を終了するが、未処理の分割領域が残っていればステップS1801へ戻って、次の分割領域の処理を開始する。
●評価値の算出例
以下、図19に、図17に示す紙面領域候補(破線の四角形)に対して、図15のステップS1503、ステップS1505により算出した評価値の例示す。表1901において、分割領域1721〜1732については、辺部としてステップS1803、ステップS1804において算出した分離度が、評価値として記載されている。また、分割領域1733〜1736については、角部としてステップS1805、ステップS1806において算出した外部領域の分散値が、評価値として記載されている。また、各辺の評価値の平均が、各辺平均S1、S2、S3、S4として記載されている。
図19に示す評価値をもとに、ステップS1506で式(3)を用いてこの紙面領域候補の確度のスコアを計算すると0.0013となる。この場合、ステップS1507でスコアが閾値(0.0010)以上であると判定され、ステップS1508へ進んで該紙面領域候補1601は紙面領域として選択される。
以下、同じ入力画像に対する、図17に示す紙面領域候補とは異なる紙面領域候補を例にした、評価値算出例を示す。図20(a)に示す紙面領域候補は、紙面上の黒帯部分の上端2001と、紙面の三辺にある線分2002、2003、2004から構成されており、紙面として選択するのが好ましくない。図20(b)は、上記図15のステップS1504で図20(a)に示す4つの線分2001、2002、2003,2004を分割した例を示す。同図において、辺部の分割領域2004〜2013、角部の分割領域2014〜2017に分割された。
図20(c)は、角部の分割領域2014の外部領域を拡大した図である。分割領域2014の外部領域は、背景2018と紙面2019から構成される。この外部領域についての輝度ヒストグラムを求めると、背景2018と紙面2019を構成する画素群によって発生した二つのピークの幅が広くなるため、分散値、つまり角部分割領域2014の評価値が大きくなる。分割領域2015についても同様である。
図21は、図20の紙面領域候補の分割領域に対して、図15のステップステップ1504、ステップS1505により算出した評価値の例示す。表2101において、分割領域2014と2015の評価値が非常に高くなっている。図21に示す処理結果をもとに、ステップS1506で式(3)を用いてこの紙面領域候補の確度のスコアを計算すると0.0006となる。この値は、ステップS1507において閾値(0.0010)以上を満たさないため、ステップS1509で該紙面領域候補は正解ではない領域として削除される。
以上説明したように本実施形態によれば、エッジ画素から生成された直線から抽出された線分に対して、線分フィッティング処理および線分選択処理に基づいて、紙面領域の境界(辺)を示す信頼度の高い線分が出力される。即ち、撮像画像から紙面領域の境界を精度良く検出することができる。
特に複数枚の紙面からそれぞれの紙面領域の境界を高精度に検出することが可能となる。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。