以下、本発明の実施形態について、図面を参照して説明する。以下では本発明を適用する際の一例を説明するが、本実施の形態で説明される特徴の全てが本発明に必須のものとは限らない。
<第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を用いて詳細に説明する。
図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が行う本実施形態の線分出力処理の一部である。
図8を用いて、線分出力処理を説明する。正しい線分を抽出するために、ステップS801では、ステップS302で得られたエッジ画素群に対して、ステップ303で生成された直線の近傍にあって、エッジ画像からノイズとして除去された画素群を加えたエッジ画素群を生成する。次に、ステップ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の垂直線分をそれぞれ延長して得る4つの交点を頂点とする四角形を出力し、これを全ての線分の組み合わせについて探索することで四角形を生成する。
なお、本実施形態では四角形を検出対象として説明したが、これに限定するものではない。例えばN角形(Nは奇数)が検出対象となる場合、線分を90/N度刻みにN分類し、分類された各群から任意の線分を1本ずつ取得し組み合わせることでN角形を生成することが可能である。M角形(Mは偶数)の場合、線分を90/M度刻みにM分類し、分類された各群から任意の線分を2本ずつ取得し組み合わせることでM角形を生成することが可能である。
●紙面領域特定処理
以下、ステップS305における紙面領域特定処理について、図15〜22を用いて詳細に説明する。ここで説明上、四角形の紙面領域候補を例として説明するが、領域候補の形状が四角形に限らず、角と辺から構成される多角形であればよい。また、領域候補は紙面に限らず、プラスチックなどの材料で製作されたシート状のものでもよい。
図16は、本実施形態の画像処理装置において紙面領域特定処理を行う際の機能構成を示す図である。撮像画像入力部1601は、撮像画像入力部401と同様に、処理対象画像を入力する。紙面領域候補入力部1602は、紙面領域の候補を入力する機能ブロックである。本実施形態の紙面領域候補入力部1602は、エッジ画像作成部1603、直線生成部1604、線分出力部1605と四角形生成部1606によって構成される。
エッジ画像作成部1603は、エッジ画像作成部1402と同様に、ステップS502〜ステップS509の処理を行う。直線生成部1604は、直線生成部1403と同様に、ステップS302の直線を生成する。線分出力部1605は、線分出力部1404と同様に、線分出力処理を行う。四角形生成部1606は、出力された線分を用いて、ステップS304の処理を行い、紙面領域の紙面領域候補となる四角形を生成する。
情報出力部1607は、四角形生成部1606で生成された紙面領域候補に関する情報を出力する。領域特定部1608は、紙面領域特定処理を行う。
次に、図15を用いて紙面領域特定処理のフローを説明する。まずステップS1501で、ステップS304で四角形として生成された紙面領域候補O1からOnを順次、処理対象の紙面領域候補Oとして、ステップS1502〜ステップS1507までの処理を繰り返す。それぞれの紙面領域候補Oに対する処理は独立しているため、最終的に得られる結果は処理の順序により変動しない。したがって、それぞれの紙面領域候補Oの処理を並列に行ってもよい。
ステップS1502では、紙面領域候補Oの辺近傍をm個に分割して分割領域B1、B2、…、Bmを作成する。ここでは、紙面領域候補Oの辺近傍領域の分割について、図17を用いて説明する。
図17は、四角形生成部1606によって生成された紙面領域候補Oの辺近傍領域の分割について説明する図である。図17(a)に示すように紙面領域候補は、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を作成する。各分割領域は、その中心を紙面領域候補である四角形の辺上に持ち、四角形の辺で内部と外部とが区切られることで、四角形の辺の内側と外側の両方の領域が構成される。なお、この分割領域は一例に過ぎず、例えば分割領域の形状については正方形ではなく長方形でもよいし、円形やその他の形であってもよい。また、各分割領域のサイズも一定でなくても良く、所定大きさ以下であればよい。また、後述する分割領域の評価値に応じて、最も評価値の高い所定大きさを求めて、その所定大きさ以下に各分割領域のサイズを変更してもよい。
そしてステップS1503では、ステップS1502で作成した分割領域について、紙面領域候補の確からしさ(確度)を得るための評価値を算出する。分割領域ごとの評価値算出方法については、図18を用いて後述する。
そしてステップS1504では、ステップS1503で算出した分割領域ごとの評価値に基づき、紙面領域候補全体の確からしさ(確度)のスコアを算出し、ステップS1505へ進む。紙面領域候補のスコアは、辺に位置する分割領域の評価値の4辺の辺ごとの平均を求め、それらの平均と、角に位置する分割領域の評価値の平均を加算して求める。
図17に示す分割領域の例では、分割領域1721〜1732が辺に位置し、分割領域1733〜1736が角に位置する。そして辺ごとの評価値の平均とはすなわち、分割領域1721〜1724の平均と、分割領域1725と分割領域1726の平均と、分割領域1727〜1730の平均と、分割領域1731と分割領域1732の平均である。
紙面領域候補が正しく紙面領域であれば、紙面領域候補の内部、すなわち紙面と、その外部のそれぞれの色差により、分離度は高い値を示す。ステップS1504で説明した角部と辺部それぞれの平均値を加算する方法は、本実施形態の説明のための一例であり、分割領域の分離度が高いほど紙面領域候補の確度が高くなることが本質であるので、スコアを算出する具体的な方法を変更してもよい。スコアを算出する方法の変更例として、途中の計算結果に重みを付けて算出することができる。例えば、ステップS1504でスコアを算出する際に、角部にある分割領域の分離度に重みを付けてもよい、その平均値に重みを付けてもよい。また、辺部にあるそれぞれの分割領域の分離度に重みを付けてもよい、その平均値に重みを付けてもよい。重みを付ける方法として、所定係数を分離度又は分離度の平均値に掛けることができる。
なお、本実施形態の分離度は式(1)によって算出されることができるが、式(1)に限定されない。分割領域1721〜1732の分離度は、辺に対応する線分を境界とする両側の画像特徴量の関係を示す情報として、情報出力部1607により出力される。また、分割領域1733〜1736の分離度は、領域候補の内側と外側の画像特徴量の関係を示す情報として、情報出力部1607により出力される。
そしてステップS1505で、対象紙面領域候補Oのスコアが閾値以上か判定し、閾値以上であればステップS1506へ進み、対象紙面領域候補Oを紙面領域として選択してステップS158へ進む。一方、閾値未満であればステップS1507へ進み、対象紙面領域候補Oは紙面領域でないとして、紙面領域候補群から削除してステップS158へ進む。なお、本実施形態ではこの閾値を1.80とするが、この閾値は一例であり、その他の固定値であってもよいし、実際の処理対象の種類に応じて調整可能な値でもよい。
ステップS1505〜ステップS1507では、閾値を用いて紙面であるか否かの判定を行ったが、入力画像内に一つの紙面領域しか存在しないことが明らかである場合は、スコアが最も高い四角形領域候補のみを残してもよい。
そしてステップS1508で、紙面領域候補の全てに対する処理が終了していれば、図15に示す紙面領域特定処理を終了するが、未処理紙面領域候補が残っていれば、ステップS1501へ戻って、次の紙面領域候補の処理を開始する。
●分割領域評価値の算出処理
以下、上記ステップS1503における分割領域の評価値の算出処理について、図18のフローチャートを用いて説明する。
まずステップS1801で、ステップS1502で作成した分割領域B1〜Bmを順次、処理対象の分割領域Bとして、ステップS1802〜ステップS1803の処理を繰り返す。それぞれの分割領域Bに対する処理は独立しているため、最終的に得られる結果は処理の順序により変動しない。したがって、それぞれの分割領域Bの処理を並列に行ってもよい。
ステップS1802では、分割領域Bの内部領域と外部領域の画素値(例えば輝度値)の分離度を算出する。分離度の算出には上記式(1)を用いればよい。ここで分離度は、線分を境界とする線分の両側の画素値(例えば輝度値)がどれだけ分離しているかを表す指標である。紙面領域候補Oが正しく紙面領域であれば、紙面領域と背面領域(例えば原稿と原稿台)の画素値の差(例えば輝度値の差)により、分離度が高く算出される。そして、ステップS1803で、ステップS1802で求めた分離度を分割領域Bの評価値として設定し、ステップS1804へ進む。
従来では、紙面領域候補Oの辺近傍領域の全体で分離度を求めるが、一般に広い領域では環境光などの影響により、輝度のヒストグラムの分布が広くなる。したがって、広い領域内の2領域間における分離度としては、2領域の画素値(輝度値)の差が小さので、2領域のヒストグラムが重なりあってしまい、分離度も小さい値が算出されてしまう。そこで、本実施形態では、背景と紙面の画素値(輝度値)の差が小さい場合にも正しい紙面領域候補を特定できるように、広い領域を小さい領域に分割して分離度を算出することにより、正しい紙面領域候補はより高い分離度を得ることができる。
また、分離度をより大きく得るために、分割領域のサイズを変更してもよい。例えば、紙面内の余白が狭い箇所では、分割領域のサイズによっては文字などの余計な画素が入るため、分離度が小さい値をとってしまうことがある。その場合は、分割領域のサイズを変更して、分離度の高い方を評価値として採用すればよい。
ステップS1804では、全ての分割領域について処理が終了していれば、図18に示す評価値の算出処理を終了するが、未処理の分割領域が残っていればステップS1801へ戻って、次の分割領域の処理を開始する。
●評価値の算出例
以下、図19に、図17に示す紙面領域候補に対して、図15のステップS1503により算出した評価値の例示す。ステップS1802、S1803において分割領域1721〜1732の分離度算出した結果を、表1901の評価値の列に記載されている。また、各辺の評価値の平均を計算した結果が、各辺平均として各辺の平均評価値の列に、角部1733〜1736の評価値の平均を計算した結果が、角部の平均評価値の列に記載されている。
図19に示す平均評価値をもとに、ステップS1504でこの紙面領域候補の確度のスコアを計算すると1.82となる。このスコアは情報出力部1607から出力される。そして、ステップS1505でスコアが閾値以上であると判定され、ステップS1506へ進む。ステップS1506で、スコアの判定結果に基づいて、領域特定部1608によって、図17に示す紙面領域候補は紙面領域又は注目領域として特定される。
以下、同じ入力画像に対する、図17に示す紙面領域候補とは異なる紙面領域候補を例にした、評価値算出例を示す。図20(a)に示す紙面領域候補は、紙面上の黒帯部分の上端2001と、紙面の三辺にある線分2002、線分2003と線分2004から構成されており、紙面として選択するのが好ましくない。図20(b)は、上記図15のステップS1502で図20(a)に示す4つの線分2001〜2004を分割した例を示す。同図において、辺部の分割領域2004〜2013、角部の分割領域2014〜2017に分割された。
図20(c)は、角部の分割領域2014の外部領域を拡大した図である。分割領域2014の外部領域は、背景2018と紙面2019から構成される。この外部領域についての輝度ヒストグラムを求めると、背景2018と紙面2019を構成する画素群によって発生した二つのピークの幅が広くなるため、外部領域の分散値が高くなり、外部領域と内部領域の分離度が低い値を示す。つまり角部分割領域2014の評価値が小さくなる。分割領域2015についても同様である。
図21は、図20の紙面領域候補の分割領域に対して、図15のステップ1502、ステップS1503により算出した評価値の例示す。表2101において、分割領域2014と2015の評価値が低い値を示している。図21に示す処理結果をもとに、ステップS1504でこの紙面領域候補の確度のスコアを計算すると1.72となる。この値は、ステップS1505において閾値を満たさないと判定され、ステップS1507でこの紙面領域候補は正解ではない領域として削除される。
図22(a)と図22(b)を用いて、紙面領域候補の特定処理の具体例について説明する。図22(a)に示すような、環境光の影響で撮像画像の全体にグラデーションが発生した場合に、前景領域と背景領域全体の分離度を求める方法では、紙面領域候補の内側と外側双方の分散値が環境光により高い値となり、内側と外側の分離度が低い値を示す。本実施形態の構成や方法では、各辺を小領域に分割することで、各小領域における紙面領域候補の内外の分離度が高い値を示す。
図22(b)は、上部に色つき(黒やその他の色)の帯領域2201が存在する紙面領域を撮影した場合である。この場合であっても、正しい紙面領域候補の色つきの帯領域2201部分にある各分割領域の内部と外部の色差が存在するため、各分割領域の内外分離度は高い値を示す。そのため、領域候補は高いスコアが算出される。
また、図22(b)に示すように、色つき(黒やその他の色)のブロック2210を含む紙面領域を撮影する場合がある。撮像画像にあるブロック2210から生成された紙面領域候補でも、その内側と外側の分離度が高い値を示す。この場合は、さらに、各紙面領域候補の面積を算出して比較し、その面積が相対的に小さい紙面領域候補は正解ではない領域として削除される。算出された各紙面領域候補の面積を比較する方法として、例えば、最も大きい紙面領域候補に対する面積比を求めて、その面積比が閾値以下の紙面領域候補は削除する対象として判定することができる。
本実施形態によれば、紙面領域候補を構成する各線分の周辺領域を分割した各分割領域において、紙面領域候補の外部及び内部の画素値(例えば輝度値)のヒストグラムの分離度に基づき、紙面の確からしさ(確度)をスコアとして算出する。よって、実際の紙面領域ではない誤った紙面領域候補を選択せず、正しい紙面領域候補を紙面領域又は注目領域として特定できる効果がある。
<第2の実施形態>
第1の実施形態では、紙面領域候補のスコアを算出し、閾値以上か否かを判定することによって紙面領域候補の選択を行ったが、本実施形態では、複数の紙面領域候補のスコアの相対値より紙面領域候補を選択する。たとえば、入力画像中にN個の紙面領域しか含まれないことが予め分かっていれば、閾値を用いずに全紙面領域候補のスコアの上位N個の紙面領域候補を紙面領域又は注目領域として特定する。本実施形態のその他の処理は、第1の実施形態と同じであるので、説明を省略する。
また、2枚の紙面が重なっているために、隠れている紙面については選択したくない場合については、領域の重なる二つの紙面領域候補については、スコアの高い方のみを選択してもよい。
図23は、2枚の紙面領域が重なった例を示す。紙面領域候補2301は、紙面領域候補2302により一部分が隠れている。分割領域2303は、紙面領域候補2301に対し前述第1の実施形態で説明した処理によって設定された分割領域の例である。この分割領域2303においては、紙面領域候補2301の内部領域、外部領域ともに、紙面領域候補2202内の紙面であるため、分離度が低い値となる。また、紙面領域候補2301全体に関しても、その内部領域、外部領域ともに紙面領域2302に隠れているため、画素値が均一ではなくなり分散値がそれぞれ高くなり、紙面領域候補全体の分離度が低い値となる。その結果、紙面領域候補2301のスコアが紙面領域候補2302に比べて低い値となる。この場合、領域特定部1608によって、スコアの最も高い紙面領域候補2302のみが紙面領域又は注目領域として特定される。
ユーザの特定したい紙面領域又は注目領域の数が予め分かっている場合は、本実施形態によれば、複数の紙面候補領域のスコア順位に基づいて、所定個数の紙面候補領域を特定する。また、図23のような重なりによって一部が隠れている紙面領域候補を特定しないことができる。
<第3の実施形態>
第1の実施形態では、各分割領域の紙面候補領域の内側と外側の分離度を元に紙面領域としての確からしさ(確度)のスコアを算出した。本実施形態では、撮像した紙面の背景領域(原稿台など)の画素値が一様である場合、分散値をスコアの指標として用いる。本実施形態のその他の処理は、第1の実施形態と同じであるので、説明を省略する。
図24は、本実施形態におけるステップS1503の分割領域の評価値を算出する処理を示すフローチャートである。
ステップS2401では、分割領域B1からBmをそれぞれ処理対象の分割領域BとしてS2402へ進み、S2406までの処理を繰り返す。
分割領域Bの位置によって、その後の処理が決まるので、ステップS2402では、まず分割領域Bが角に位置しているかを判定する。分割領域Bが辺に位置していると判定したら、ステップS2403とステップS2404の処理を行い、分割領域Bが角に位置していると判定したら、ステップS2405とステップS2406の処理を行う。
ステップS2403とステップS2404との処理はステップS1802とステップS1803との処理と同様であるため、ここで説明を省略する。ステップS2405では、情報出力部1607は、以下の式(2)を用いて角部にある分割領域における紙面候補領域の外部領域の分散値σを算出して出力する。
ここで、Nは画素数
mは領域の平均輝度値
siは画素iの輝度値
式(2)では分散値σの算出に輝度値を用いているが、輝度値に限定しない。入力画像が多値(例えばRGB値)の場合には、多値空間(RGB空間)内で全画素値に対して主成分分析を行い、第一主成分得られる主軸に対して全画素値を射影して得る値を輝度値の替わりに式(2)に適用することで分散値σを算出することもできる。
ステップS2406では、ステップS2405で求めた外部領域の分散値を角部の分割領域Bの評価値とし、ステップS2407へ進む。
ステップS2407では、全分割領域Bに対して処理が完了していれば終了し、未処理領域が残っていればステップS2401へ戻る。
本実施形態では、情報出力部1607は、ステップS1504のスコア算出処理では、以下の式(3)を用いてスコアを算出して出力する。
ここで、
ηmはS1503で求めた分割領域の各辺の内外分離度の平均
σmはS1503で求めた分割領域の各角の外部分散の平均
式(3)は、本実施形態のスコア算出処理の一例であり、各辺の分割領域の分離度が高いほど紙面領域候補の確度が高くなり、角部の外部の分散値が低いほど紙面領域候補の確度が高くなることが本質であり、式(3)のスコア算出に別の重みをつけてもよい。また、分離度又は分散値だけでスコアを算出するなど、その他の方法でスコアを求めてもよい。
そして、ステップS1505で情報出力部1607から出力されたスコアの判定が行われ、その判定結果に基づいて、ステップS1506で領域特定部1608は図25に示す紙面領域候補2501を紙面領域又は注目領域として特定する。
図25(a)は、入力される撮像画像と撮像画像から得られた紙面領域候補の例を示す。紙面領域候補2501は、角部が丸みを帯びた紙面の領域候補である。ステップS304の四角形生成処理では、四辺の候補となる線分を伸長し四角形を生成するため、角部が丸い紙面であっても、この様な四角形が紙面候補として形成される。
分割領域2502は、ステップS1502で生成された、紙面領域候補2601の角部に位置する分割領域である。
図25(b)は、分割領域2502を拡大して表した図である。分割領域2502には紙面領域候補の内部領域2503、外部領域2504が存在している。この様に角に丸みを帯びた紙面の場合、角部の分割領域の内部領域2503に実際の紙面が一部しか入らない場合や、まったく入らない場合がある。その場合、内外領域の画素分散値に差がでないため、分離度が低い値がでてしまい、第1の実施形態で説明した方法では、正しい紙面領域であっても紙面領域候補のスコアが低い値をなってしまう。分散値を用いる方法では、背景の画素値が一様であれば、分散値が低い値となり、紙面領域候補のスコアを高く算出することが可能である。
以上、本実施形態によれば、背景領域の画素値が均一であることを利用し、紙面領域候補の角部の外部領域の分散値を用いることで、角に丸みを帯びた紙面に対しても紙面領域の検出を精度よく行うことが可能である。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。