以下に、本願の開示する画像判定装置、画像判定プログラムおよび画像判定方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また処理内容に矛盾の無い限りにおいて、各実施例を組合せても構わない。
次に、本実施例2にかかる画像処理装置について説明する。図2は、本実施例2にかかる画像処理装置の構成を示す図である。図2に示すように、この画像処理装置100は、画像入力部110、シーン判定部120、画像補正部130、補正結果出力部140を有する。
画像入力部110は、カメラから画像を取得し、取得した画像をシーン判定部120と画像補正部130に出力する処理部である。シーン判定部120は、画像に人工的な物体が含まれるか否かに基づいて、画像のシーンが街中であるか街中以外であるかを判定する処理部である。シーン判定部120は、判定結果を画像補正部130に出力する。
画像補正部130は、シーン判定部120の判定結果に基づいて画像を補正する処理部である。画像補正部130は、画像のシーンが例えば街中以外の場合に、画像の色味を鮮やかに補正する処理、青空の青が強調されるように補正する処理、AWB(Auto White Balance)をやや弱めにして画像を補正する処理を実行する。画像補正部130は、各補正の何れか一つを実行してもよいし、複数の補正を実行してもよい。
また、画像補正部130は、画像のシーンが例えば街中の場合に、画像に含まれるグレー系の色づきを抑える補正、物体の輪郭を強めにする補正を行う。画像補正部130は、各補正の何れか一つを実行してもよいし、複数の補正を実行してもよい。画像補正部130が、シーンにあわせて画像を補正する処理は、上記の補正に限られず、如何なる周知技術を用いてもよい。画像補正部130は、補正した画像を補正結果出力部140に出力する。
補正結果出力部140は、画像補正部130から補正後の画像を取得し、取得した画像をディスプレイに表示する処理部である。なお、図2に示した画像入力部110、シーン判定部120、画像補正部130、補正結果出力部140は、例えば、ASIC(Application Specific Integrated Circuit)、PFGA(Field Programmable Gate Array)等の集積装置に対応する。
次に、図2に示したシーン判定部120の構成について説明する。図3は、シーン判定部120の構成を示す図である。図3に示すように、このシーン判定部120は、輝度成分抽出部121、エッジ抽出部122、直線検出部123、ノイズ線判定部124、線分構造解析部125、判定部126を有する。
輝度成分抽出部120は、画像を走査して画素毎の輝度値を抽出し、輝度値からなる濃淡画像を生成する処理部である。図4は、濃淡画像の一例を示す図である。例えば、輝度成分抽出部120は、画素のRGB(Red Green Blue)値を取得し、Rの値、Gの値、Bの値のうち、最大の値を輝度値として抽出する。そして、輝度成分抽出部120は、抽出した輝度値を画素に設定することで、濃淡画像を生成する。輝度成分抽出部120は、濃淡画像をエッジ抽出部122に出力する。
エッジ抽出部122は、濃淡画像からエッジを抽出する処理部である。濃淡画像からエッジを抽出した画像をエッジ画像と表記する。図5は、エッジ画像の一例を示す図である。例えば、エッジ抽出部122は、濃淡画像を走査し、隣接する画素の輝度値の差が所定値以上となる領域をエッジとして抽出する。従って、例えば建物であれば、画像上で建物の輪郭を形成する部分や窓などの付属物に相当する部分がエッジとして抽出されることになる。エッジ抽出部122は、エッジ画像を直線検出部123に出力する。
直線検出部123は、エッジ画像から直線を検出する処理部である。エッジ画像から直線を検出した画像を直線検出画像と表記する。図6は、直線検出画像の一例を示す図である。例えば、直線検出部123は、エッジ画像に対してハフ(Hough)変換を適用することで、エッジ画像から直線を検出する。直線検出部123は、直線検出画像をノイズ線判定部124に出力する。
ノイズ線抽出部124は、直線検出画像に含まれる複数の直線の中から、ノイズとなる直線を判定する処理部である。ノイズ線抽出部124は、判定結果と直線検出画像を線分構造解析部125に出力する。
線分構造解析部125は、直線検出画像に含まれる線分のうちノイズを除く線分をグルーピングし、同一のグループに属する線分が存在する領域の大きさを算出する処理部である。線分構造解析部125は、算出結果を判定部126に出力する。
判定部126は、画像のシーンが街中であるか否かを判定する処理部である。判定部125は、同一のグループに属する線分が存在する領域の大きさが所定値以上の場合に、画像のシーンが街中であると判定する。一方、判定部126は、同一のグループに属する線分が存在する領域の大きさが所定値未満の場合に、画像のシーンが街中以外であると判定する。判定部126は、判定結果を画像補正部130に出力する。
次に、ノイズ線判定部124の処理を具体的に説明する。図7は、ノイズ線判定部124の処理を説明するための図である。ここでは説明の便宜上、線分Aと線分Bを用いてノイズ線判定部124の処理を説明する。また、線分Aの角度をa、線分Bの角度をbとする。図7に示すように、線分Aの角度aは、画像の垂線と線分Aの間の角度であり、線分Bの角度bは、垂線と線分Bの間の角度である。
ノイズ線判定部124は、線分Aと線分Bの角度差と、線分Aと線分Bが交差している位置と、線分Aと線分Bの長さに基づいて線分A、Bがノイズであるか否かを判定する。まず、ノイズ線判定部124は、線分Aと線分Bの角度差が閾値以上であるか否かを判定する。ノイズ線判定部124は、線分Aと線分Bの角度差が閾値以上の場合、線分Aと線分Bを第1ノイズ候補と判定する。一方、ノイズ線判定部124は、線分Aと線分Bの角度差が閾値未満の場合、線分Aと線分Bをノイズではないと判定する。
線分の検出精度や画像の状態によっては、本来は1つの線分として検出されるべき線分が、同様の方向に伸びる複数の線分が重なりつつ全体として1本の線分を形成する状態として検出される場合がある。例えば街中を撮影した画像では、建物などの輪郭部が、複数の線分が重なりつつ全体として1本の線分(輪郭線)を形成する状態として検出される傾向がある。また例えば草むらなどの風景を撮影した画像では、ランダムな向きの線分が多数検出される傾向にある。そこで、この判定処理では、本来は1つの線分であるべき線分、即ち後段の処理対象とすべき線分である可能性の高い線分なのか、それとも、もともと別個の線分、即ち後段の処理対象にしなくても良いノイズ線分であるのかを判断している。
続いて、ノイズ線判定部124は、第1ノイズ候補と判定した線分Aと線分Bが交差している位置に基づいて線分A、Bが第2ノイズ候補であるか否かを判定する。ノイズ線判定部124は、線分Aの各端から所定距離はなれた位置で線分Aと線分Bが交差している場合、線分Aおよび線分Bを第2ノイズ候補と判定する。一方、ノイズ線判定部124は、線分Aの各端から所定距離はなれた位置で線分Aと線分Bが交差していない場合、線分Aおよび線分Bをノイズでないと判定する。
例えば、建物などの画像上の輪郭上では、異なる方向に伸びる複数の線分のうち2本を対にして見た場合に互いにまたは一方の線分の端部で交差した状態として検出される傾向がある。そこでこの判定処理では、物体の輪郭のうちコーナーを形成している可能性のある線分なのか、それとも、後段の処理対象にしなくても良いノイズ線分であるのかを判断している。
続いて、ノイズ線判定部124は、第2ノイズ候補と判定した線分Aと線分Bの長さの差に基づいて、最終的にノイズとなる線分を判定する。ノイズ線判定部124は、線分Aと線分Bの長さの差が閾値未満の場合、線分Aと線分Bをノイズと判定する。一方、ノイズ線判定部124は、線分Aと線分Bの長さの差が閾値以上の場合、線分Aと線分Bの内、短いほうの線分をノイズと判定する。そして、ノイズ線判定部124は、ノイズと判定した線分にノイズフラグを設定する。
例えば、建物などの画像上の輪郭を形成する線分は、草むらなどの風景画像に含まれる線分と比較して長い傾向にある。そこでこの判定処理では、物体の輪郭を形成している可能性のある線分なのか、それとも、後段の処理対象にしなくても良いノイズ線分であるのかを判断している。
図8は、ノイズと判定された線分を説明するための示す図である。図8の上段の画像は、元の画像であり、図8の中段は、上段の画像から直線を検出した直線検出画像である。また、図8の下段は、直線検出画像のノイズを判定した後の画像を示す。図8の下段の図中、点線で示されている線分はノイズと判定された線分、実線で示されている線分はノイズではないと判定された線分を表している。図8の上段の画像と下段の画像を比較すると、元の画像の花壇や林から検出した線分が主にノイズとして判定されている。すなわち、人工物以外の物体から検出される線分はノイズと判定される。
次に、線分構造解析部125の処理を具体的に説明する。線分構造解析部125は、所定の角度内で連結している複数の線分をグルーピングする処理と、同一のグループに含まれる各線分が存在する領域の大きさを判定する処理を実行する。
まず、線分構造解析部125が、所定の角度内で連結している複数の線分をグルーピングする処理について説明する。線分構造解析部125は、線分検出画像に基づいて、ノイズと判定された線分以外の線分を対象として線分管理テーブルを生成する。図9は、線分管理テーブルのデータ構造の一例を示す図である。図9において、線分ID(Identification)は、線分を識別する情報である。始点座標および終点座標は、画像上の線分の始点および終点の座標である。グループIDは、線分が属するグループを識別する情報である。線分構造解析部125は、グループIDの初期値を0とする。
線分構造解析部125は、線分[i]を選択し、線分[i]が垂直であるか否かを判定する。例えば、画像の縦方向をY軸、横方向をX軸とした場合、線分構造解析部125は、線分[i]の始点座標と終点座標のX座標を比較し、各X座標の差の絶対値が0または所定値未満の場合に、線分[i]が垂直であると判定する。
線分構造解析部125は、線分[i]が垂直であると判定した場合、線分[i]と異なる線分[j]を選択する。そして、線分構造解析部125は、線分[i]と線分[j]を比較して、線分[i]と線分[j]が連結しているか否かを判定する。線分構造解析部125は、線分[i]と線分[j]が連結している場合、線分[i]と線分[j]のグループIDを一致させることで、線分[i]と線分[j]を同一のグループに登録する。
図10は、線分[i]と線分[j]が連結する場合の例を示す図であり、図11は、線分[i]と線分[j]が連結しない場合の例を示す図である。図10に示すように、線分[i]と線分[j]の関係が、パターンAからパターンCに当てはまる場合に、線分構造解析部125は、線分[i]と線分[j]が連結していると判定する。
パターンAに示すように、線分構造解析部125は、線分[i]の端と線分[j]の端が接続されている場合、線分[i]と線分[j]は連結していると判定する。パターンBに示すように、線分構造解析部125は、線分[j]の端と線分[i]が重なっている場合、線分[i]と線分[j]は連結していると判定する。また、パターンCに示すように、線分[i]の端と線分[j]が重なっている場合、線分[i]と線分[j]は連結していると判定する。
また、線分構造解析部125は、線分[i]と線分[j]が平行で、かつ、線分[i]と線分[j]の一部が重なっている場合も、線分[i]と線分[j]が連結していると判定してもよい。
なお、図11に示すように、線分[i]と線分[j]の関係が、パターンD〜パターンGに当てはなる場合、線分構造解析部125は、線分[i]と線分[j]は連結していないと判定する。パターンDに示すように、線分[i]と線分[j]が端以外の部分で重なっている場合、線分構造解析部125は、線分[i]と線分[j]は連結していないと判定する。また、パターンEに示すように、線分[i]と線分[j]が離れている場合、線分構造解析部125は、線分[i]と線分[j]が連結していないと判定する。
パターンFに示すように、線分構造解析部125は、線分[i]の端と線分[j]の端が重なっていても、線分[i]と線分[j]の間の角度が30度以下の場合、線分[i]と線分[j]が連結していないと判定する。また、パターンGに示すように、線分構造解析部125は、線分[i]の端と線分[j]の端が重なっていても、線分[i]と線分[j]の間の角度が150度以上の場合、線分[i]と線分[j]が連結していないと判定する。
ここで、線分どうしが連結しているか否かの判定基準は、上記角度に限るものではない。例えば建物などの人工的な物体を撮影した場合に、該物体の画像上の外枠形状が凡そ採り得る範囲の角度以外の角度である場合に線分[i]と線分[j]が連結していないと判定できれば良い。
建物などの画像上の輪郭上では、異なる方向に伸びる複数の線分のうち2本を対にして見た場合に互いにまたは一方の線分の端部で交差した状態として検出される傾向がある。そこで線分構造解析部125は、パターンA〜Fを利用して、物体の輪郭のうちコーナーを形成している可能性のある線分、即ち連結していると判断すべき線分なのか、そうではない線分なのかを判別している。
線分構造解析部125は、線分[i]および線分[j]に、ノイズを除く直線検出画像の全ての線分を代入し、上記処理を繰り返し実行することで、各線分を各グループに分類する。
続いて、線分構造解析部125が、同一のグループに含まれる各線分が存在する領域の大きさを判定する処理について説明する。まず、線分構造解析部125は、図9に示した線分管理テーブルを参照し、グループIDが同一の線分を抽出する。そして、線分構造解析部125は、抽出した各線分の始点座標および終点座標に基づいて、各線分を包含する矩形領域を判定する。図12は、矩形領域を判定する処理を説明するための図である。
図12では、画像幅W、画像高さHの直線検出画像中に線分A〜Eが含まれており、線分A〜Eは同一のグループに属している。図12に示す直線検出画像上の座標の原点(0,0)を左上の隅とする。ここでは説明の便宜上、線分A、C、Eの各端のうち上側を始点、下側を終点とする。また線分B、線分Dの各端のうち左側を始点、右側を終点とする。
ここで、線分Aの始点座標を(Xa1、Ya1)、線分Aの終点座標を(Xa2、Ya2)とし、線分Bの始点座標を(Xb1、Yb1)、線分Bの終点座標を(Xb2、Yb2)とする。線分Cの始点座標を(Xc1、Yc1)、線分Cの終点座標を(Xc2、Yc2)とし、線分Dの始点座標を(Xd1、Yd1)、線分Dの終点座標を(Xd2、Yd2)とする。線分Eの始点座標を(Xe1、Ye1)、線分Eの終点座標を(Xe2、Ye2)とする。
線分構造解析部125は、矩形領域の座標と、線分A〜Eの座標を順に比較して、線分A〜Eを包含する矩形領域の座標を判定する。矩形領域は、矩形領域の左上の座標と、右下の座標で特定されるものとする。矩形座標の左上の座標を矩形左上座標、右下の座標を矩形右下座標と表記する。矩形左上座標のX座標・Y座標の初期値は、画像幅「W」・画像高さ「H」となる。矩形右下座標のX座標・Y座標の初期値は、それぞれ0となる。
矩形左上座標のX座標の判定について説明する。線分構造解析部125は、線分A〜Eの各端のX座標をそれぞれ比較し、線分A〜Eの各端のX座標のうち最も小さいX座標を、矩形左上座標のX座標として判定する。例えば、線分A〜Eの各端のX座標のうち最も小さいX座標を、線分Aの始点のX座標とすれば、矩形左上座標のX座標は「Xa1」となる。
矩形左上座標のY座標の判定について説明する。線分構造解析部125は、線分A〜Eの各端のY座標をそれぞれ比較し、線分A〜Eの各端のY座標のうち最も小さいY座標を、矩形左上座標のY座標として判定する。例えば、線分A〜Eの各端のY座標のうち最も小さいY座標を、線分Cの始点のY座標とすれば、矩形左上座標のY座標は「Yc1」となる。
矩形右下座標のX座標の判定について説明する。線分構造解析部125は、線分A〜Eの各端のX座標をそれぞれ比較し、線分A〜Eの各端のX座標のうち最も大きいX座標を、矩形右下座標のX座標として判定する。例えば、線分A〜Eの各端のX座標のうち最も大きいX座標を、線分Eの始点のX座標とすれば、矩形左上座標のX座標は「Xe1」となる。
矩形右下座標のY座標の判定について説明する。線分構造解析部125は、線分A〜Eの各端のY座標をそれぞれ比較し、線分A〜Eの各端のY座標のうち最も大きいY座標を、矩形右下座標のY座標として判定する。例えば、線分A〜Eの各端のY座標のうち最も大きいY座標を、線分Aの終点のY座標とすれば、矩形左上座標のY座標は「Ye2」となる。
図12に示す例では、線分構造解析部125は、線分A〜Eの始点座標および終点座標に基づいて、矩形左上座標と矩形右下座標を判定すると、矩形左上座標(Xa1、Yc1)、矩形右下座標(Xe1、Ye2)となる。線分構造解析部125は、グループ毎に矩形左上座標と矩形右下座標を判定する。線分構造解析部125は、同一のグループ毎に、矩形左上座標・矩形右下座標を判定する。
次に、判定部126の処理を具体的に説明する。判定部126は、矩形領域の矩形左上座標と矩形右下座標を取得し、矩形領域の横幅と縦幅を算出する。判定部126は、横幅と縦幅が閾値以上の場合、矩形領域に人工物が含まれると判定する。例えば、判定部126は、矩形領域の横幅が画像の横幅の1/4以上、かつ、縦幅が画像の縦幅の1/4以上の場合に、矩形領域に人工物が含まれると判定する。
また、判定部126は、矩形領域の面積が閾値以上の場合も、矩形領域に人工物が含まれると判定する。例えば、判定部126は、矩形領域の面積が画像の面積の1/8以上の場合に、矩形領域に人工物が含まれると判定する。
一方、判定部126は、横幅と縦幅が閾値未満の場合や矩形領域の面積が閾値未満の場合は、矩形領域に人工物が含まれていないと判定する。判定部126は、線分構造解析部125から取得する矩形領域のいずれかに人工物が含まれている場合、画像のシーンが街中であると判定する。一方、線分構造解析部125から取得する全ての矩形領域に人工物が含まれていない場合、画像のシーンが街中以外の例えば風景であると判定する。
撮影者がカメラで撮影を行う場合、大概は撮影者が撮影したいと考えている被写体が画像上で大きな領域を占めるように撮影範囲を決定すると考えられる。そこで、画像における人工物と判定された矩形領域の割合が多ければ、該人工物が撮影対象である、即ち、撮影シーンが街中であると判断できよう。そこで、判定部126では、矩形領域の画像に対する幅や面積でシーンを判定している。
矩形領域の大きさが中心的な撮影対象であるか否かを判定する基準として、画像幅の1/4以上や面積の1/8以上という例を示しているが、上述の矩形領域の横幅や縦幅および面積の判定基準値は、上記値に限るものではない。
次に、本実施例2にかかる画像処理装置100の処理手順について説明する。図13は、本実施例2にかかる画像処理装置100の処理手順を示すフローチャートである。図13に示すように、画像処理装置100のシーン判定部120は、画像から輝度成分を抽出し(ステップS101)、エッジを抽出する(ステップS102)。
シーン判定部120は、直線を検出し(ステップS103)、ノイズ線抽出処理を実行する(ステップS104)。そして、シーン判定部120は、線分グルーピング処理を実行し(ステップS105)、グループの大きさ抽出処理を実行し(ステップS106)、グループの大きさ判定処理を実行する(ステップS107)。
続いて、シーン判定部120は、画像に人工物が含まれるか否かを判定する(ステップS108)。シーン判定部120は、画像に人工物が含まれない場合(ステップS109,No)、シーンは例えば風景などの街中以外のシーンであると判定し(ステップS110)、ステップS112に移行する。
一方、シーン判定部120は、画像に人工物が含まれている場合(ステップS109,Yes)、シーンは街中であると判定する(ステップS111)。そして、画像補正部130は、シーンに基づいて画像を補正する(ステップS112)。
次に、図13のステップS104で示したノイズ線抽出処理について説明する。図14は、ノイズ線抽出処理の処理手順を示すフローチャートである。図14に示すように、シーン判定部120は、iの値を0に設定し(ステップS201)、「i<(線分数−1)」の条件を満たすか否かを判定する(ステップS202)。
シーン判定部120は、「i<(線分数−1)」の条件を満たさない場合(ステップS203,No)、ノイズ線抽出処理を終了する。一方、シーン判定部120は、「i<(線分数−1)」の条件を満たす場合(ステップS203,Yes)、iの値と1を加算した値をjに設定する(ステップS204)。そして、シーン判定部120は「j<線分数」の条件を満たすか否かを判定する(ステップS205)。
シーン判定部120は、「j<線分数」の条件を満たさない場合(ステップS206,No)、iを1増やし(ステップS207)、ステップS202に移行する。一方、シーン判定部120は、「j<線分数」の条件を満たす場合(ステップS206,Yes)、線分[i]と線分[j]の角度差が閾値以上であるか否かを判定する(ステップS208)。
シーン判定部120は、線分[i]と線分[j]の角度差が閾値未満の場合(ステップS209,No)、ステップS216に移行する。一方、シーン判定部120は、線分[i]と線分[j]の角度差が閾値以上の場合(ステップS209,Yes)、線分[i]と線分[j]が端から離れた位置で交差しているか否かを判定する(ステップS210)。
シーン判定部120は、線分[i]と線分[j]が端から離れた位置で交差していない場合(ステップS211,No)、ステップS216に移行する。一方、シーン判定部120は、線分[i]と線分[j]が端から離れた位置で交差している場合(ステップS211,Yes)、線分[i]と線分[j]の長さの差が閾値以上であるか否かを判定する(ステップS212)。
シーン判定部120は、線分[i]と線分[j]の長さの差が閾値未満の場合(ステップS213,No)、線分[i]と線分[j]をノイズとしてマークし(ステップS214)、ステップS216に移行する。
一方、シーン判定部120は、線分[i]と線分[j]の長さの差が閾値以上の場合(ステップS213,Yes)、短いほうの線分をノイズとしてマークする(ステップS215)。そして、シーン判定部120は、jを1増やし(ステップS216)、ステップS205に移行する。
なお、シーン判定部120による処理の順序は、図14に示す順序に限るものではない。S208とS209、S210とS211、S212とS213の3組の処理のうち、1つのみで判断しても良いし、複数を別の順序で実行することも考えられる。
次に、図13のステップS105で示した線分グルーピング処理について説明する。図15は、線分グルーピング処理の処理手順を示すフローチャートである。図15に示すように、シーン判定部120は、ステップS104でノイズとしてマークされた線分以外の全ての線分にグループID「0」を割り当て(ステップS301)、nextGidを0に設定し(ステップS302)、iを0に設定する(ステップS303)。
続いて、シーン判定部120は、「i<(線分数−1)」の条件を満たすか否かを判定する(ステップS304)。シーン判定部120は、「i<(線分数−1)」の条件を満たさない場合(ステップS305,No)、線分グルーピング処理を終了する。
一方、シーン判定部120は、「i<(線分数−1)」の条件を満たす場合(ステップS305,Yes)、jを0に設定し(ステップS306)、「j<線分数」の条件を満たすか否かを判定する(ステップS307)。
シーン判定部120は、「j<線分数」の条件を満たさない場合(ステップS308,No)、iを1増やし(ステップS309)、ステップS304に移行する。一方、シーン判定部120は、「j<線分数」の条件を満たす場合(ステップS308,Yes)、線分[i]の角度は垂直であるか否かを判定する(ステップS310)。
シーン判定部120は、線分[i]の角度が垂直ではない場合(ステップS311,No)、ステップS319に移行する。一方、シーン判定部120は、線分[i]の角度が垂直の場合(ステップS311,Yes)、線分[i]と線分[j]は平行でかつ一部が重なっているか否かを判定する(ステップS312)。
シーン判定部120は、線分[i]と線分[j]が平行でかつ一部が重なっている場合、(ステップS313,Yes)、ステップS318に移行する。一方、シーン判定部120は、線分[i]と線分[j]が平行ではない、または、線分[i]と線分[j]の一部が重なっていない場合(ステップS313,No)、ステップS314に移行する。
シーン判定部120は、線分[i]と線分[j]における一方の線分の端が他方の線分に重なっているか否かを判定する(ステップS314)。シーン判定部120は、線分[i]と線分[j]における一方の線分の端が他方の線分に重なっていない場合(ステップS315,No)、ステップS319に移行する。
一方、シーン判定部120は、線分[i]と線分[j]における一方の線分の端が他方の線分に重なっている場合(ステップS315,Yes)、線分[i]と線分[j]のなす角度が閾値の範囲内であるか否かを判定する(ステップS316)。
シーン判定部120は、線分[i]と線分[j]のなす角度が閾値の範囲内でない場合(ステップS317,No)、ステップS319に移行する。一方、シーン判定部120は、線分[i]と線分[j]のなす角度が閾値の範囲内の場合(ステップS317,Yes)、線分[i]と線分[j]をグループ化する(ステップS318)。シーン判定部120は、jを1増やし(ステップS319)、ステップS307に移行する。
次に、図15のステップS318に示した線分[i]と線分[j]をグループ化する処理について説明する。図16は、線分[i]と線分[j]をグループ化する処理手順を示すフローチャートである。図16に示すように、シーン判定部120は、線分[i]と線分[j]の両方のグループIDが「0」であるか否かを判定する(ステップS401)。
シーン判定部120は、両方ともグループIDが0の場合(ステップS402,Yes)、nextGidを1増やす(ステップS403)。シーン判定部120は、nextGidの値を線分[i]、線分「j」のグループIDに代入し(ステップS404)、線分[i]と線分[j]のグループ化を終了する。
シーン判定部120は、両方ともグループIDが0でない場合(ステップS402,No)、線分[i]のグループIDが「0」であるか否かを判定する(ステップS405)。シーン判定部120は、線分[i]のグループIDが「0」の場合(ステップS406,Yes)、線分[j]のグループIDを線分[i]のグループIDに代入し(ステップS407)、線分[i]と線分[j]のグループ化を終了する。
一方、シーン判定部120は、線分[i]のグループIDが「0」ではない場合(ステップS406,No)、線分[j]のグループIDが「0」であるか否かを判定する(ステップS408)。シーン判定部120は、線分[j]のグループIDが「0」の場合(ステップS409,Yes)、線分[i]のグループIDを線分[j]のグループIDに代入し(ステップS410)、線分[i]と線分[j]のグループ化を終了する。
一方、シーン判定部120は、線分[j]のグループIDが「0」ではない場合(ステップS409,No)、全線分から線分[j]と同じグループIDの線分を特定する(ステップS411)。シーン判定部120は、特定した線分のグループIDと線分[j]のグループIDに線分[i]のグループIDを代入し(ステップS412)、線分[i]と線分[j]のグループ化を終了する。
次に、図13のステップS106で示したグループの大きさ抽出処理について説明する。図17は、グループの大きさ抽出処理の処理手順を示すフローチャートである。図17に示すように、シーン判定部120は、nextGidの値分の矩形記録領域を作成し(ステップS501)、矩形左上座標を[X,Y]=[画像幅、画像高さ]に設定する(ステップS502)。シーン判定部120は、矩形右下座標を[X,Y]=[0,0]に設定し(ステップS503)、iの値を0に設定する(ステップS504)。
シーン判定部120は、iの数が線分数未満であるか否かを判定する(ステップS505)。シーン判定部120は、iの数が線分数以上の場合(ステップS506,No)、グループの大きさ抽出処理を終了する。
シーン判定部120は、iの数が線分数未満の場合(ステップS506,Yes)、線分[i]のグループIDが「0」であるか否かを判定する(ステップS507)。シーン判定部120は、線分[i]のグループIDが「0」の場合(ステップS508,Yes)、ステップS521に移行する。
一方、シーン判定部120は、線分[i]のグループIDが「0」ではない場合(ステップS508,No)、pointのX座標がRectの矩形左上座標のX座標よりも小さいか否かを判定する(ステップS509)。ここで、pointは線分[i]の始点座標・終点座標である。また、線分[i]のグループIDをnとすると、Rectはn番目の矩形記録領域である。
シーン判定部120は、pointのX座標がRectの矩形左上座標のX座標よりも小さい場合(ステップS510,Yes)、pointのX座標をRectの矩形左上座標のX座標に代入し(ステップS511)、ステップS512に移行する。一方、シーン判定部120は、pointのX座標がRectの矩形左上座標のX座標よりも小さくない場合(ステップS510,No)、pointのY座標がRectの矩形左上座標のY座標よりも小さいか否かを判定する(ステップS512)。
シーン判定部120は、pointのY座標がRectの矩形左上座標のY座標よりも小さい場合(ステップS513,Yes)、pointのY座標をRectの矩形左上座標のY座標に代入し(ステップS514)、ステップS515に移行する。一方、シーン判定部120は、pointのY座標がRectの矩形左上座標のY座標よりも小さくない場合(ステップS513,No)、pointのX座標がRectの矩形右下座標のX座標よりも大きいか否かを判定する(ステップS515)。
シーン判定部120は、pointのX座標がRectの矩形右下座標のX座標よりも大きい場合(ステップS516,Yes)、pointのX座標をRectの矩形右下座標のX座標に代入し(ステップS517)、ステップS518に移行する。一方、シーン判定部120は、pointのX座標がRectの矩形右下座標のX座標よりも大きくない場合(ステップS516,No)、pointのY座標がRectの矩形右下座標のY座標よりも大きいか否かを判定する(ステップS518)。
シーン判定部120は、pointのY座標がRectの矩形右下座標のY座標よりも大きい場合(ステップS519,Yes)、pointのY座標をRectの矩形右下座標のY座標に代入し(ステップS520)、ステップS521に移行する。一方、シーン判定部120は、pointのY座標がRectの矩形右下座標のY座標よりも大きくない場合(ステップS519,No)、iを1増やし(ステップS521)、ステップS505に移行する。
次に、図13のステップS107に示したグループの大きさ判定処理の処理手順について説明する。図18に示すように、シーン判定部120は、iの値を0に設定し(ステップS601)、iの数が矩形記録領域数よりも小さいか否かを判定する(ステップS602)。シーン判定部120は、iの数が矩形記録領域数よりも小さくない場合(ステップS603,No)、グループの大きさ判定処理を終了する。
シーン判定部120は、iの数が矩形記録領域よりも小さい場合に(ステップS603,Yes)、矩形[i]の幅および高さ両方が閾値以上であるか否かを判定する(ステップS604)。シーン判定部120は、矩形[i]の幅および高さ両方が閾値以上の場合(ステップS605,Yes)、矩形[i]のグループを人工物と判定し(ステップS606)、ステップS609に移行する。
一方、シーン判定部120は、矩形[i]の幅および高さ両方が閾値未満の場合(ステップS605,No)、矩形[i]の面積が閾値以上であるか否かを判定する(ステップS607)。シーン判定部120は、矩形[i]の面積が閾値以上の場合(ステップS608,Yes)、ステップS606に移行する。シーン判定部120は、矩形[i]の面積が閾値未満の場合(ステップS608,No)、iを1増やし(ステップS609)、ステップS602に移行する。
上述してきたように、本実施例2にかかる画像処理装置100は、シーン判定部120が、入力された画像に基づいて所定の角度で相互に連結する複数の線分を検出し、検出した各線分を同一のグループに登録する。そして、シーン判定部120は、同一のグループに含まれる各線分に基づいて画像のシーンが街中であるか否かを判定するので、画像のシーンを判定する処理を短縮することができる。
なお、線分構造解析部125が連結している線分を判定する場合に、垂直の線分[i]を基準としていたが、これに限定されるものではない。例えば、線分構造解析部125は、水平な線分を基準として連結している線分を判定してもよいし、画像の消失点に向かう線分を基準として連結している線分を判定してもよい。
線分構造解析部125が、画像の消失点を特定する方法は如何なる周知技術を用いても構わない。例えば、線分構造解析部125は、ノイズを除去した直線検出画像に含まれる各線分を延長し、延長した線分の交点を求める。そして、線分構造解析部125は、求めた交点のうち最も線分が重なっている交点を消失点として算出してもよい。
ところで、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、画像入力部110、画像補正部130、補正結果出力部140を画像処理装置100の外部装置としてネットワーク経由で接続するようにしてもよい。また、シーン判定部120と画像補正部120を同一のチップに実装してもよいし、別々のチップに実装してもよい。
なお、画像処理装置100は、既知のパーソナルコンピュータ、ワークステーション、携帯電話、PHS端末、移動体通信端末またはPDAなどの情報処理装置に、上記した各部110〜140の各機能を搭載することによって実現することもできる。
図19は、実施例にかかる画像処理装置を構成するコンピュータのハードウェア構成を示す図である。図19に示すように、このコンピュータ200は、各種演算処理を実行するCPU(Central Processing Unit)201と、ユーザからのデータの入力を受け付ける入力装置202と、モニタ203を有する。また、コンピュータ200は、記憶媒体からプログラム等を読取る媒体読み取り装置204と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置205を有する。また、コンピュータ200は、画像を撮影するカメラ206と、各種情報を一時記憶するRAM(Random Access Memory)207と、ハードディスク装置208を有する。各装置201〜208は、バス209に接続される。
そして、ハードディスク装置208には、図2に示したシーン判定部120と同様の機能を有するシーン判定プログラム208aと、画像補正部130と同様の機能を有する画像補正プログラム208bを記憶する。また、ハードディスク装置208は、カメラ206が撮影する画像データ208cを記憶する。
CPU201がシーン判定プログラム208aと画像補正プログラム208bをハードディスク装置208から読み出してRAM207に展開することにより、シーン判定プログラム208aは、シーン判定プロセス207aとして機能するようになる。また、画像補正プログラム208bは、画像補正プロセス207bとして機能するようになる。そして、シーン判定プロセス207aは、画像データ208cを参照して、画像のシーンが街中か否かを判定し、画像補正プロセス207bはシーンに応じて画像を補正する。
なお、上記のシーン判定プログラム208a、画像補正プログラム208bは、必ずしもハードディスク装置208に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたプログラムを、コンピュータ200が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等にこのプログラムを記憶させておき、コンピュータ200がこれらからプログラムを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)入力された画像から所定の角度で相互に連結する複数の線分を検出し、検出した各線分を同一のグループに登録する線分検出部と、
前記同一のグループに含まれる各線分に基づいて前記画像が特定の種別の画像であるか否かを判定する判定部と
を有することを特徴とする画像判定装置。
(付記2)前記判定部は、前記同一のグループに含まれる各線分が前記画像に存在する領域を判定し、当該領域が閾値以上か否かに基づいて、前記画像が特定の種別の画像であるか否かを判定することを特徴とする付記1に記載の画像判定装置。
(付記3)前記判定部の判定結果に基づいて、入力された画像を補正する画像補正部を更に有することを特徴とする付記1または2に記載の画像判定装置。
(付記4)コンピュータに、
入力された画像から所定の角度で相互に連結する複数の線分を検出し、検出した各線分を同一のグループに登録する線分検出手順と、
前記同一のグループに含まれる各線分に基づいて前記画像が特定の種別の画像であるか否かを判定する判定手順と
を実行させることを特徴とする画像判定プログラム。
(付記5)前記判定手順は、前記同一のグループに含まれる各線分が前記画像に存在する領域を判定し、当該領域が閾値以上か否かに基づいて、前記画像が特定の種別の画像であるか否かを判定することを特徴とする付記4に記載の画像判定プログラム。
(付記6)前記判定手順の判定結果に基づいて、入力された画像を補正する画像補正手順を更に実行させることを特徴とする付記4または5に記載の画像判定プログラム。
(付記7)画像判定装置が、
入力された画像から所定の角度で相互に連結する複数の線分を検出し、検出した各線分を同一のグループに登録する線分検出ステップと、
前記同一のグループに含まれる各線分に基づいて前記画像が特定の種別の画像であるか否かを判定する判定ステップと
を含んだことを特徴とする画像判定方法。
(付記8)前記判定ステップは、前記同一のグループに含まれる各線分が前記画像に存在する領域を判定し、当該領域が閾値以上か否かに基づいて、前記画像が特定の種別の画像であるか否かを判定することを特徴とする付記7に記載の画像判定方法。
(付記9)前記判定ステップの判定結果に基づいて、入力された画像を補正する画像補正ステップを更に含んだことを特徴とする付記7または8に記載の画像判定方法。