第1実施形態にかかる情報処理装置、情報処理プログラム、情報処理システム、情報処理方法について、図1〜図28を参照して説明する。
第1実施形態にかかる情報処理装置は、画像の境界線を特定する境界線特定装置として用いられる。情報処理装置は、例えば、河川画像の喫水線を特定する。
(システム構成)
はじめに、第1実施形態の構成について、図1〜図3を用いて説明する。
図1は、第1実施形態にかかる情報処理システム(境界線特定システム100)の全体構成を示す図である。図1に示すように、境界線特定システム100は、撮像部101と画像送信部102とを有する端末103と、情報処理装置120と、情報表示装置105とを備える。端末103は、例えば、河川付近に設置されたカメラである。端末103と情報処理装置120と情報表示装置105は、ネットワーク104を介して相互に通信可能となっている。端末103はデータを取得し、情報処理装置120にデータを送信する。データの取得は、撮像部101が撮像することによって行われる。撮像部101で撮像され、情報処理装置120にて処理されるデータとは、画像や映像である。情報処理装置120は送信されたデータについて情報処理を行い、処理結果を情報表示装置105に送信する。情報表示装置105は送信された処理結果について表示する。情報表示装置105は、端末103や情報処理装置120に備えられていてもよい。
(ハードウェア構成)
図2は、第1実施形態にかかる情報処理装置のハードウェア構成を示すブロック図である。情報処理装置120は、例えば、サーバーであり、図2に示すように、CPU(Central Processing Unit)121と、ROM(Read Only Memory)122と、補助記憶デバイス123と、ネットワーク104に接続された通信制御デバイス124と、入力デバイス125と、出力デバイス126と、RAM(Random Access Memory)127とを構成部として備える。また、各構成部はバス128によってそれぞれ接続されている。
CPU121が、ROM122や補助記憶デバイス123やRAM127の少なくとも何れか1つに格納された第1実施形態のプログラムを読み出して実行することで、後述するように、情報処理装置120は処理対象に写る境界線を特定する機能を実現する。RAM127は、例えば、DRAMやフラッシュメモリであって、CPU121のワークエリアとしても使用される。補助記憶デバイス123は、例えば、ハードディスクドライブやフラッシュメモリであって、CPU121の計算結果をデータとして記録する装置としても利用される。なお、CPU121が補助記憶デバイス123に記録されたデータを読み出すこともある。入力デバイス125は、例えば、キーボード、マウス、スキャナである。出力デバイス126は、例えば、ディスプレイ、プリンタである。出力デバイス126は、情報処理装置120とは別に、境界線特定システム100に備えられた情報表示装置105である場合もある。通信制御デバイス124は、例えば、モデムやLANアダプタ等のネットワークインターフェースカードであって、情報処理装置120は通信制御デバイス124を介してネットワーク104に接続され、ネットワーク104を介して他の情報処理装置と通信する。
(機能部の構成)
図3は、第1実施形態にかかる情報処理装置の機能的構成を示すブロック図である。情報処理装置120は、処理対象画像作成部140と、記録部150と、計算部160と、特定部170と、出力部180とを機能部として有する。
処理対象画像作成部140は、図1に示される撮像部101によって撮像されたデータである画像や映像等について、所定方向を基準として角度の補正を行い、後述する画像処理を行う処理対象範囲を決定することで処理対象画像を作成する機能を有する。
記録部150は、撮像部101にて撮像され、入力されたデータや処理対象画像作成部140にて作成された処理対象画像を記録する機能を有する。また、記録部150は、計算部160にて計算された計算結果や特定部170にて特定された境界線を記録する機能を有する。記録部150は、例えば、RAM127や補助記憶デバイス123である。
計算部160は、処理対象画像作成部140にて作成された処理対象画像に対し、後述する特定部170にて境界線候補を検出するために用いる特徴量を計算する機能を有する。
特定部170は、計算部160にて計算された特徴量を用いて、境界線候補を検出し、画像に写る境界線を特定する機能を有する。
処理対象画像作成部140と、記録部150と、計算部160と、特定部170は、CPU121が実施形態にかかるプログラムを実行することによって実現される。
出力部180は、特定部170にて特定された境界線の情報を出力する機能を有する。出力部180は、出力デバイス126によって実現される。出力部180は、記録部150に記録されたデータや処理対象画像に対して、特定された境界線を重畳表示する等の処理を施して出力してもよい。
計算部160は、画素値計算部161と、勾配計算部162と、エッジベクトル計算部163と、特徴量計算部164とを有する。
画素値計算部161は、処理対象画像作成部140にて作成された処理対象画像に対し、画素毎の明度、色相、輝度等を数値化した値を、画素毎の画素値として計算する機能を有する。画素値計算部161は、例えば、処理対象画像の画素毎の明度を画素値として計算する。また、画素値計算部161は、画素毎の画素値に基づいて処理対象画像をグレースケールで表した画素値画像を作成してもよい。
勾配計算部162は、画素値計算部161にて計算された画素値を用いて、周辺画素値の画素値勾配を画素毎に計算する機能を有する。
エッジベクトル計算部163は、勾配計算部162にて計算された画素毎の画素値勾配を用いて、画素毎のエッジベクトルを計算する機能を有する。
特徴量計算部164は、後述する統計分布作成部181にて統計分布を作成するための特徴量を画素毎に計算する機能を有する。特徴量は、画素毎のエッジベクトルを画像の所定方向に射影した射影ベクトルの正規化によって得られる。
特定部170は、統計分布作成部171と、ピーク検出部172と、境界線候補検出部173と、境界線決定部174とを有する。
統計分布作成部171は、計算部160にて計算された画素毎の特徴量について、統計処理を行うことで統計分布を作成する機能を有する。統計分布作成部171は、例えば、一次射影加算の処理によってヒストグラムを作成する。統計分布は、画像において所定方向に定められる複数の走査線毎に走査線上にある複数の画素の特徴量を統計処理し、走査線ごとの特徴量の強度について計算することで得られる。
ピーク検出部172は、統計分布作成部171にて作成された統計分布の極大値のうち、強度の大きい1以上の極大値をピークとして検出する機能を有する。
境界線候補検出部173は、ピーク検出部172にて検出されたピークを用いて、境界線候補を検出する機能を有する。境界線候補は、検出されたピークに対応する走査線上にある複数の画素の座標を取得することで得られる。境界線候補検出部173は、記録部150に記録された処理対象画像を読み込み、ピークに対応する位置に境界線候補を重畳表示してもよい。
境界線決定部174は、境界線候補検出部173にて計算された境界線候補のうち一つを選択し、境界線として決定する機能を有する。
各々の機能部が実行する処理は、図15〜図19、図21、図22、図27、図28に示した処理の説明に併せて後述する。
(処理対象画像の一例)
次に、第1実施形態にかかる情報処理装置の処理対象となる画像の一例について、図4〜図9を用いて説明する。
図4は、処理対象の一例である河川画像の一例を示す図である。河川画像200には画像Y方向の下から、河川の水面と、陸地(河川敷と緑地)とが写っている。また、図4に示された点線は、河川画像200に写る、水面と陸地との境界線である喫水線201とその延長線である。情報処理装置120の検出対象は、河川画像200に写る喫水線201である。
図5は、河川画像の一例を構成 する一つの画素とその周辺画素を示す図である。河川画像200が画像データとして処理された際の、河川画像200を構成する画素1つ1つを正方形で表しており、画素それぞれに付された文字(i、j)等は、河川画像200を構成する画素の座標を示す。例えば、画素211は、河川画像200のi行目、j列目の位置にある。画素212〜219は、画素211を取り囲む8つの画素であって、画素211に対する周辺画素である。例えば、画素211に対する周辺画素は、同様に、画素212を取り囲む8つの画素となる。河川画像200を構成する画素はそれぞれ、画素値計算部161によって明度、色相、輝度等を数値化可能な値である画素値を有する。
図6は、河川画像の一例における一つの画素のエッジベクトルを示す図である。河川画像200を構成する画素はそれぞれ、勾配計算部162によって画素値勾配を計算され、エッジベクトル計算部163によって画素毎のエッジベクトルが計算される。ここで、エッジベクトルとは、画素値勾配の方向と直交する方向に定義されるベクトルである。計算された画素毎のエッジベクトルの大きさと方向は、対応する画素の座標にに対応させて記録される。図6では、画素211に対応するエッジベクトル223を示している。エッジベクトル223は、X方向成分ベクトル221と、Y方向成分ベクトル222とを足し合わせることで得られる。ここで、エッジベクトル223とは、画素211に着目し、画素211に対する周辺画素212〜219の画素値に基づく画素値勾配が計算され、画素値勾配の方向と直交する方向に定義されるベクトルである。エッジベクトル223に付された文字は、エッジベクトル223の成分を示す。ここで、詳細は後述するが、X方向成分ベクトル221は、周辺画素212〜219の画素値に基づく画素値勾配を河川画像200のX方向に対して用いて求められたベクトルであり、Y方向成分ベクトル222は周辺画素212〜219の画素値に基づく画素値勾配を河川画像200のX方向と垂直なY方向に対して求めたベクトルである。エッジベクトル223の大きさ|v|がエッジ強度として下記式(1)により定義される。
画像データに写る境界線に対応する画素は、周辺画素の画素値の変化が所定方向に沿って急峻であり、その結果、画素値勾配が大きくエッジ強度も大きくなる。このように、境界線では、写る物体の違いによる、明るさの違い等のコントラストが、画素値勾配の大きさとして表れる。
図7は、河川画像の一例の画素毎のエッジ強度をグレースケールで表したエッジ強度画像を示す図である。エッジ強度画像200aは、河川画像200について画素毎のエッジ強度をグレースケールで表すよう画像変換を行ったものである。また、図7に示された点線は、エッジ強度画像200aに写る、水面と陸地との境界線である喫水線201とその延長線である。喫水線201に対応する座標の画素は、エッジ強度の大きい画素として白く表示されている。
図8は、河川画像の一例について作成されたエッジ強度ヒストグラムを示す図である。ヒストグラム260は、例えば、河川画像200の画素毎のエッジ強度を特徴量として、河川画像200において所定方向に定められる複数の走査線250について、複数の走査線250毎に走査線上にある複数の画素の特徴量を加算することで得られる。ヒストグラム260は、特徴量の加算値の強度分布を示す。ヒストグラムを作成する際の特徴量は、例えば、下記式(2)で表される。所定方向は、河川画像において喫水線が延在すると推定される方向である。複数の走査線は、河川画像において所定方向に直行する方向に並ぶ複数の走査線である。
vij:i行j列の画素におけるエッジベクトル
ヒストグラム260は、河川画像200のY方向に並ぶ複数の走査線250の位置と、複数の走査線250毎の走査線上にある複数の画素の特徴量の加算値とを軸にとっている。ヒストグラム260は、喫水線に対応する位置の極大値261を有する。河川画像200において所定方向に定められる複数の走査線250のうち、喫水線201の位置で走査される喫水線に対応する走査線250aの位置に対応する。対応喫水線に対応する位置の極大値261は、ヒストグラム260の他の極大値よりも十分大きく、ピーク検出部172によってピークとして検出される。情報処理装置120は、ピークとして検出される喫水線に対応する位置の極大値261に対応する、喫水線に対応する走査線250a上の画素を喫水線候補として検出するため、河川画像200のように、河川画像200から作成されたヒストグラム260に喫水線に対応する位置の極大値261に対応が一つのピークとして表れる場合、喫水線の特定は容易である。
しかし、撮像時の天候や時間帯、周囲の照明等の影響を受けることで、画像に写る境界線のコントラストが小さくなることがある。
図9は、照明の暗い環境で撮像された河川画像の一例について作成されたエッジ強度ヒストグラムを示す図である。エッジ強度画像200bは、照明の暗い環境で撮像された河川画像の他の例について画素毎のエッジ強度をグレースケールで表したものである。エッジ強度画像200bは、図7のエッジ強度画像200aの喫水線201と比較して、喫水線201bの周囲とのコントラストが小さい。エッジ強度画像200bについて作成されたヒストグラム260bの喫水線に対応する位置の極大値261bは、図8のヒストグラム260の喫水線に対応する位置の極大値261と比較して、強度が小さくヒストグラム260bに現れる他の極大値と区別ができずピーク検出部172がピークとして検出できない可能性がある。
(処理対象画像の他の例)
次に、第1実施形態にかかる情報処理装置の処理対象となる画像の他の例について、図10〜図14を用いて説明する。
図10は、処理対象の一例である河川画像の他の例を示す図である。河川画像300には画像Y方向の下から、河川の水面と、陸地(河川敷と緑地)と、陸地に設置された手すりとが写っている。また、図10に示された画像Y方向のもっとも下にある点線は、河川画像300に写る、水面と陸地との境界線である喫水線301とその延長線である。また、図10に示された画像Y方向の上から3本の点線は、河川画像300に写る、陸地に設置された手すりの3本のライン302とそれらの延長線である。ライン302の周囲とのコントラストは、情報処理装置120の検出対象である喫水線301の周囲とのコントラストよりも大きい。
図11は、河川画像の他の例の画素毎のエッジ強度をグレースケールで表したエッジ強度画像を示す図である。
図11に示された画像Y方向のもっとも下にある点線は、エッジ強度画像300aに写る、水面と陸地との境界線である喫水線301とその延長線である。また、図11に示された画像Y方向の上から3本の点線は、河川画像300aに写る、陸地に設置された手すりの3本のライン302とそれらの延長線である。ライン302に対応する座標の画素は、極端にエッジ強度の大きい画素として白く表示されている。
図12は、河川画像の他の例について作成されたエッジ強度ヒストグラムを示す図である。河川画像300から作成されたヒストグラム360は、喫水線に対応する位置の極大値361と、ラインに対応する位置の極大値362とを有する。喫水線に対応する位置の極大値361は、河川画像300において所定方向に定められる複数の走査線350のうち、喫水線301の位置で走査される喫水線に対応する走査線350aの位置に対応する。ラインに対応する位置の極大値362は、河川画像300において所定方向に定められる複数の走査線350のうち、ライン302の位置で走査される走査線の位置に対応する。ラインに対応する位置の極大値362は、ヒストグラム360の他の極大値よりも極端に強度が大きく、ピーク検出部172によってピークとして検出される。河川画像300のように、喫水線301の他に、周囲とのコントラストが大きいライン302が写っている場合、ライン302のエッジ強度が極端に大きいため、喫水線301のエッジ強度は相対的に小さくなり、喫水線に対応する位置の極大値361は小さく表れる。喫水線に対応する位置の極大値361は、強度が小さくヒストグラム360に表れる他の極大値と区別ができずピーク検出部172がピークとして検出できない可能性がある。
図13は、河川画像の他の例について作成されたエッジ強度ヒストグラムの拡大図である。
図14は、河川画像の他の例に写る場所毎のエッジベクトルの方向と大きさを示す図である。画素群371、372、373はそれぞれ、河川画像300に写る喫水線、手すり、水面の位置に対応する画素を含む。画素群371に含まれる画素311、312、313はそれぞれ、互いに方向が揃ったエッジベクトルを有する。画素群371に含まれる画素311、312、313はそれぞれ、互いに方向が揃ったエッジベクトルを有し、画素群372の画素よりもエッジベクトルの大きさは相対的に大きい。画素群371に含まれる画素311、312、313はそれぞれ、方向が揃っていないエッジベクトルを有する。
エッジ強度ヒストグラムを用いて河川画像300の喫水線301を画像処理によって特定しようとする場合、エッジベクトルの大きさが極端に大きいライン302が写っていることで、エッジベクトルの大きさが相対的に小さい喫水線301の検出が行えないため、このような場合、喫水線を特定する際の精度が下がるという課題がある。
(処理手順)
次に、第1実施形態にかかる情報処理装置による処理手順を説明する。
図15は、第1実施形態にかかる情報処理装置による処理手順を示すフローチャートである。
図15に示すように、まず、処理対象画像作成部140が入力されたデータを取得する(ステップS100)。処理対象となるデータは、撮像部101にて撮像されたデータが入力されてもよいし、記録部150から読み出されてもよい。そして、ステップS100にて取得されたデータを用いて処理対象画像作成部140が処理対象画像を作成する(ステップS200)。ステップS200にて作成された処理対象画像を記録部150が記録する(ステップS300)。ステップS200にて作成された処理対象画像について計算部160が画素毎の特徴量を計算する(ステップS400)。ステップS400にて計算された特徴量を用いて特定部170が境界線を特定する(ステップS500)。ステップS500にて特定された境界線について出力部180が出力し(ステップS600)、一連の処理を終了する。出力部180は、特定された境界線を記録部150から読み出される処理対象画像と併せて出力してもよい。
以下、図15において処理対象画像作成部が処理を行うステップS200について、図16に沿って詳細に説明する。
図16は、第1実施形態にかかる情報処理装置の処理対象画像作成部が行う処理(ステップS200)の詳細な処理を示すフローチャートである。ステップS100にて取得されたデータを対象として処理が開始され、この入力されたデータが映像データか否かを判断する(ステップS210)。入力されたデータが映像データでない場合(ステップS210:No)、ステップS220を飛ばし、入力されたデータを画像1として記録する(ステップS240)。一方、入力されたデータが映像データである場合(ステップS210:Yes)、映像データのフレーム平均をとり画像データを作成する(ステップS220)。次いで、ステップS220により作成された画像データを記録部150に画像1として記録する(ステップS240)。次いで、画像1をθだけ回転させることで所定の角度θの角度補正を行い、画像2を作成する(ステップS250)。画像1を所定の角度θだけ回転させる処理は、下記式(3)で表されるような角度補正オペレータによって計算する。所定の角度θを決定する方法は後述する。
次いで、ステップS250にて作成された画像2の一部領域を切り出して画像3を作成する(ステップS260)。切り出す一部領域は境界線を含むように選択され、一部領域を選択する方法は後述する。ステップS260にて作成された画像3を処理対象画像として決定する(ステップS270)。元の画像データの一部領域を処理対象画像とすることで、後述する情報処理装置の処理を行う対象のデータが小さくなり、境界線を特定するまでの処理の速度が高まる。
以下、図15において計算部が処理を行うステップS400について、図17に沿って詳細に説明する。
図17は、第1実施形態にかかる情報処理装置の計算部が行う処理(ステップS400)を示すフローチャートである。ステップS300にて処理対象画像が記録されたことを契機に処理が開始され、処理対象画像の画素毎の画素値について画素値計算部161が計算を行う(ステップS410)。画素値計算部161は、計算した画素値に基づいて、処理対象画像を画素値のグレースケールで表した画素値画像に変換を行ってもよい。処理対象画像を画素値画像に変換することで、後述する情報処理装置の処理を行う対象のデータが小さくなり、境界線を特定するまでの処理の速度が高まる。ステップS410にて計算された画素値を用いて勾配計算部162が処理対象画像の画素毎の画素値勾配を計算する(ステップS420)。ステップS420にて計算された画素値勾配を用いてエッジベクトル計算部163が画素毎のエッジベクトルを計算する(ステップS430)。画素毎のエッジベクトルは、画素値勾配の所定方向成分を用いて定義されるエッジベクトル成分を足し合わせることによって計算される。ステップS430にて計算されるエッジベクトルを用いて特徴量計算部164が画素毎の特徴量を計算する(ステップS440)。
以下、図17において勾配計算部162が処理を行うステップS420について、図18に沿って詳細に説明する。
図18は、第1実施形態にかかる情報処理装置の計算部のうち勾配計算部が行う処理(ステップS420)を示すフローチャートである。ステップS410にて画素値が計算されたことを契機に処理が開始され、画素毎の画素値を計算された処理対象画像について、画像X方向第i番目(第i行目)、画像Y方向第j番目(第j列目)の画素Pijを選択する(ステップS421)。ステップS421にて選択された画素Pijと画素Pijの周辺画素に、画素値の勾配を計算する第1オペレータを適用する(ステップS422)。第1オペレータは、例えば、画像X方向について画素値のX方向勾配を計算する。第1オペレータとして、下記式(4)で表されるようなPrewittフィルタが用いられる。
画素Pijと画素Pijの周辺画素に、画素値の勾配を計算する第2オペレータを適用する(ステップS423)。第2オペレータは、例えば、画像Y方向について画素値のY方向勾配を計算する。第2オペレータとして、下記式(5)で表されるような、第1オペレータと垂直方向の勾配を計算するPrewittフィルタが用いられる。
画素値の勾配を計算するオペレータは、Prewittフィルタに限られず、例えば、下記式(6)に表されるようなSobelフィルタや下記式(7)に表されるような微分フィルタを用いてもよい。
次いで、ステップS422、S423の計算結果である画素値勾配の大きさと方向を画素Pijに対応させて記録部150に記録する(ステップS424)。そして、処理対象画像を構成する画素の行番号であるiをインクリメントし(ステップS425)、行番号iがi>Iであるか否かを判断する(ステップS426)。ここで、Iは、処理対象画像を構成する画素の行数である。i>Iでない場合(ステップS426:No)、ステップS422に戻る。一方、i>Iである場合(ステップS426:Yes)、処理対象画像を構成する画素の列番号jをインクリメントし(ステップS427)、列番号jがj>Jであるか否かを判断する(ステップS428)。ここで、Jは、処理対象画像を構成する画素の列数である。j>Jでない場合(ステップS428:No)、ステップS422に戻る。一方、j>Jである場合(ステップS428:Yes)、処理対象画像を構成する画素全てについて画素値勾配の計算が終了したとして、繰り返し処理を終了する。
以下、図17において特徴量計算部164が処理を行うステップS440について、図19に沿って詳細に説明する。
図19は、第1実施形態にかかる情報処理装置 の計算部のうち特徴量計算部が行う処理(ステップS440)を示すフローチャートである。特徴量計算部164にて計算される特徴量は、後述する走査線が走査される所定方向が決定され、画素毎のエッジベクトルが所定方向に射影され、かつ正規化されることで求められる。計算される特徴量は、例えば、下記式(8)で表されるような、所定方向の単位ベクトルと画素毎のエッジベクトルとの内積を、エッジベクトルの大きさで除することで計算される。
αij:i行j列の画素におけるエッジベクトルvijと所定方向との成す角度
e:所定方向の単位ベクトル
ステップS430にて画素毎のエッジベクトルが計算されたことを契機に処理が開始され、処理対象画像に対して、所定方向を決定する(ステップS441)。所定方向は、例えば、処理対象画像の側面の方向で、処理対象画像を構成する画素が並ぶ行方向である。また、所定方向は、処理対象画像において境界線が延在すると推定される方向として予め設定してもよい。
処理対象画像について、処理対象画像X方向第i番目(第i行目)、処理対象画像Y方向第j番目(第j列目)の画素Pijを選択する(ステップS442)。ステップS442にて選択された画素Pijのエッジベクトルの大きさと方向とを取得する(ステップS443)。ステップS443にて取得されたエッジベクトルを用いて、画素Pijのエッジベクトルと所定方向との成す角度αijを計算する(ステップS444)。ステップS444にて計算された角度αijを用いて、画素Pijのエッジベクトルを所定方向に射影した射影ベクトルについて計算し、射影ベクトルをエッジベクトルの大きさで除することで正規化を行う(ステップS445)。そして、処理対象画像を構成する画素の行番号であるiをインクリメントし(ステップS446)、行番号iがi>Iであるか否かを判断する(ステップS447)。i>Iでない場合(ステップS447:No)、ステップS443に戻る。一方、i>Iである場合(ステップS447:Yes)、処理対象画像を構成する画素の列番号jをインクリメントし(ステップS448)、列番号jがj>Jであるか否かを判断する(ステップS449)。j>Jでない場合(ステップS449:No)、ステップS443に戻る。一方、j>Jである場合(ステップS449:Yes)、処理対象画像を構成する画素全てについて特徴量の計算が終了したとして、繰り返し処理を終了する。計算された特徴量は、画素の座標に対応づけて記録部150に記録される。
図20は、第1実施形態にかかる情報処理装置の計算部が計算する特徴量を説明する図である。図20では、図14にて説明される河川画像300の喫水線に対応する位置の画素群371を示しており、画素群371に含まれる画素311、312、313と、画素311、312、313とそれぞれ対応したエッジベクトル321、322、323と、河川画像300の所定方向に定められる複数の走査線のうち喫水線の位置に対応する走査線450aと、エッジベクトル321、322、323をそれぞれ所定方向に射影した射影ベクトル381、382、383とを示している。喫水線の位置に対応する走査線450aは点線で示される。エッジベクトルと射影ベクトルはそれぞれ、対応する画素の中心の黒丸を始点とした実線で示される。画素群371に含まれる画素311、312、313はそれぞれ、勾配計算部162によって画素値勾配を計算され、エッジベクトル計算部163によって画素毎のエッジベクトルが計算される。計算されたエッジベクトル321、322、323の大きさと方向は、対応する画素311、312、313の座標に対応させて記録部150に記録される。喫水線に対応する走査線450aは、画素311、312、313と重なる。エッジベクトル321、322、323は、所定方向の単位ベクトルと角度α1、α2、α3を成す。角度α1、α2、α3に基づいて、エッジベクトル321、322、323を所定方向に射影した射影ベクトル381、382、383が計算される。射影ベクトル381、382、383はそれぞれ、エッジベクトル321、322、323の大きさで除することによって正規化される。つまり、求められる特徴量は、画素毎のエッジベクトルと所定方向とが成す角度に基づく値であり、例えば、エッジベクトル321、322、323と所定方向との成す角度の余弦の絶対値である。エッジベクトル321、322、323と所定方向との成す角度が小さい、つまりエッジベクトル321、322、323が所定方向と揃っているときに特徴量は最大値を示す。
ここで、所定方向と角度α1を成すエッジベクトル321を有する画素311の特徴量と、角度α1と同じ成す角度α2を有し、エッジベクトル321よりも大きいエッジベクトル322を有する画素312の特徴量とを比較する。エッジベクトル322の大きさはエッジベクトル321よりも大きいため、射影ベクトル382の大きさも射影ベクトル381よりも大きくなるが、それぞれのエッジベクトルの大きさで除することで正規化されるため、所定方向と同じ角度を成す画素311の特徴量と画素312の特徴量は等しくなる。
このような特徴量の計算方法によって、大きさが小さく所定方向と方向の揃ったエッジベクトルを有する画素の特徴量と、極端に大きいエッジベクトルを有する画素の特徴量を、所定方向と成す角度のみに基づいて計算することができる。
このような特徴量を用いることで、コントラストの小さい喫水線に対応する画素の特徴量強度が相対的に小さくなることなく、統計分布にて十分に大きい極大値を示しピークとして検出されるので、喫水線を検出することができる。
以下、図15において特定部170が処理を行うステップS500について、図21に沿って詳細に説明する。
図21は、第1実施形態にかかる情報処理装置の特定部が行う処理(ステップS500)を示すフローチャートである。ステップS400にて画素毎の特徴量が計算されたことを契機に処理が開始され、特徴量を用いて統計分布作成部171が統計分布を作成する(ステップS510)。統計分布は極大値を有するものであり、例えば、特徴量の加算値を強度で示したヒストグラムである。統計分布の極大値からピーク検出部172がピークを検出し(ステップS520)、検出されたピークを用いて境界線候補検出部173が境界線候補を検出する(ステップS530)。次いで、境界線決定部174が境界線候補のうちひとつを境界線として決定する(ステップS540)。ここで、境界線決定部174は、ステップS530にて検出された境界線候補のうち、処理対象画像の特定の側面に最も近い位置に現れる境界線候補を境界線として決定する。例えば、境界線決定部174は、処理対象画像Y方向のもっとも下方に現れる境界線候補を境界線として決定する。これは、情報処理装置120の処理対象画像である河川画像が、特徴量強度の小さい水面を下方にして撮像されるため、検出される境界線候補が1以上ある場合、真の境界線は処理対象画像のもっとも下方に現れると推定されるためである。また、境界線決定部174は、決定した境界線について、記録部150に記録させてもよい。
以下、図21において統計分布作成部171が処理を行うステップS510について、図22に沿って詳細に説明する。
図22は、第1実施形態にかかる情報処理装置の特定部のうち統計分布作成部が行う処理(ステップS510)を示すフローチャートである。ステップS400にて画素毎の特徴量が計算されたことを契機に処理が開始され、処理対象画像の所定方向にK本の走査線を走査する(ステップS511)。走査線の走査される所定方向とは、図20にて説明した射影ベクトルを射影する所定方向である。複数の走査線は、処理対象画像において所定方向に直行する方向に並ぶ複数の走査線である。走査された走査線のうち、処理対象画像の側面の端から第k番目の走査線Skを選択する(ステップS512)。第k番目の走査線Sk上の第l番目の画素Plを選択し、記録部150に記録された画素Pklの特徴量を取得する(ステップS513)。そして、第k番目の走査線Sk上の画素の番号であるlをインクリメントし(ステップS514)、番号lがl>Lkであるか否かを判断する(ステップS515)。ここで、Lkは、第k番目の走査線Sk上の画素数である。l>Lkでない場合(ステップS515:No)、ステップS513に戻る。一方、l>Lkである場合(ステップS515:Yes)、第k番目の走査線Sk上の画素全てについて特徴量の計算が終了したとして、繰り返し処理を終了する。次いで、ステップS513〜S515にて取得された第k番目の走査線上のL個の画素の特徴量を加算することで、総和Tkを計算する(ステップS516)。そして、K本の走査線の番号であるkをインクリメントし(ステップS517)、番号kがk>Kであるか否かを判断する(ステップS518)。k>Kでない場合(ステップS518:No)、ステップS513に戻る。一方、k>Kである場合(ステップS518:Yes)、K本の走査線上の画素の特徴量の総和全てについて計算が終了したとして、繰り返し処理を終了する。計算された走査線上の特徴量の総和は、走査線に対応づけて記録部150に記録される。
図23は、第1実施形態にかかる情報処理装置の特定部のうち統計分布作成部が、河川画像の他の例について作成するヒストグラムを示す図である。統計分布作成部171によって河川画像300から作成されたヒストグラム460は、喫水線に対応する位置の極大値461と、ラインに対応する位置の極大値462とを有する。喫水線に対応する位置の極大値461は、河川画像300において所定方向に定められる複数の走査線450のうち、喫水線301の位置で走査される喫水線に対応する走査線450aの位置に対応する。ラインに対応する位置の極大値462は、河川画像300において所定方向に定められる複数の走査線450のうち、ライン302の位置で走査される走査線の位置に対応する。
図24は、第1実施形態にかかる情報処理装置の特定部のうち統計分布作成部が、河川画像の他の例について作成されたヒストグラムの拡大図である。所定の閾値Thの値に対応する位置に点線463が示されている。喫水線に対応する位置の極大値461とラインに対応する位置の極大値462とは、点線463の縦軸方向の高さよりも高い位置に頂点を有する。
喫水線に対応する位置の画素は、所定方向に定められる複数の走査線と成す角度が小さいことから、大きい特徴量の値を示すため、喫水線に対応する位置の極大値461はヒストグラム460のノイズとなる極大値よりも十分大きく、ピーク検出部172によってピークとして検出される。ヒストグラム460の極大値をピークとノイズとに区別するために、例えば、所定の閾値Thを設定し、Th以上の値を有する極大値をピークとして検出する。図10に説明される河川画像300のような、喫水線301の他に周囲とのコントラストが大きくエッジ強度が大きいライン302が写っている場合でも、喫水線301を喫水線候補として検出できる。
図25は、第1実施形態にかかる情報処理装置の計算部が計算する特徴量について、喫水線に対応する画素と手すりに対応する画素とをそれぞれ示す図である。図25では、図20にて説明される画素群371と、図14にて説明されるラインに対応する位置の画素群372を示しており、画素群372に含まれる画素314、315、316と、画素314、315、316とそれぞれ対応するエッジベクトル324、325、326と、河川画像300の所定方向に定められる複数の走査線450と、エッジベクトル324、325、326をそれぞれ所定方向に射影した射影ベクトル384、385、386とを示している。河川画像300の所定方向に定められる複数の走査線450は、画素314、315、316と重なる。エッジベクトル324、325、326は、所定方向の単位ベクトルと角度α4、α5、α6を成す。角度α4、α5、α6に基づいて、エッジベクトル324、325、326を所定方向に射影した射影ベクトル384、385、386が計算される。射影ベクトル384、385、386はそれぞれ、エッジベクトル324、325、326の大きさで除することによって正規化される。
ここで、所定方向と角度α1を成すエッジベクトル321から求められる画素311の特徴量と、角度α1と同じ成す角度α4を成す、エッジベクトル321よりも極端に大きいエッジベクトル324から求められる画素314の特徴量とを比較する。エッジベクトル324の大きさはエッジベクトル321よりも極端に大きいため、射影ベクトル384の大きさも射影ベクトル381よりも極端に大きくなるが、それぞれのエッジベクトルの大きさで除することで正規化されるため、所定方向と同じ角度を成す画素311の特徴量と画素314の特徴量は等しくなる。
射影ベクトルを正規化することによって所定方向と成す角度のみに基づいて計算することができ、極端に大きいエッジベクトルを有する画素について、特徴量の強度が極端に大きく計算されることを防ぐ。
図26は、第1実施形態にかかる情報処理装置の計算部が計算する特徴量について、喫水線に対応する画素と水面に対応する画素とをそれぞれ示す図である。図26では、図20にて説明される画素群371と、図14にて説明される水面に対応する位置の画素群373を示しており、画素群373に含まれる画素317、318、319と、画素317、318、319とそれぞれ対応するエッジベクトル327、328、329と、河川画像300の所定方向に定められる複数の走査線450と、エッジベクトル327、328、329をそれぞれ所定方向に射影した射影ベクトル387、388、389とを示している。河川画像300の所定方向に定められる複数の走査線450は、画素317、318、319と重なる。エッジベクトル327、328、329は、所定方向の単位ベクトルと角度α7、α8、α9を成す。角度α7、α8、α9に基づいて、エッジベクトル327、328、329を所定方向に射影した射影ベクトル387、388、389が計算される。ここで、角度α9は270°であり、射影ベクトル389の大きさは0となるので、図26に射影ベクトル389は図示しない。他にも、エッジベクトルが所定方向と直行する場合(エッジベクトルと所定方向とが成す角度が90°、270°となる場合)、射影ベクトルの大きさは0となる。射影ベクトル387、388、389はそれぞれ、エッジベクトル327、328、329の大きさで除することによって正規化される。
水面に対応する位置の画素317、318、319のエッジベクトル327、328、329は所定方向と方向が揃っておらず、画素群373に含まれる画素317、318、319のエッジベクトル327、328、329は、所定方向と成す角度α7、α8、α9は、画素群371に含まれる画素のエッジベクトルの成す角度と比較して大きい。このため、画素317、318、319の特徴量は小さく計算され、図24にて説明されるヒストグラム460においてピークを示さない。
以下、図21においてピーク検出部172が処理を行うステップS520について、図27に沿って詳細に説明する。
図27は、第1実施形態にかかる情報処理装置の特定部のうちピーク検出部が行う処理(ステップS520)を示すフローチャートである。ステップS510にて統計分布が作成されたことを契機に処理が開始され、所定の閾値Thを決定する(ステップS521)。ここで、所定の閾値Thとして、統計分布の平均値が用いられる。所定の閾値Thは、例えば、一次射影加算の処理によって作成されたヒストグラムにおける、複数の走査線毎の特徴量を加算した値の各々に基づく平均値である。次いで、K本の走査線のうち、処理対象画像の側面の端から第k番目の走査線Skを選択する(ステップS522)。記録部150に記録された、第k番目の走査線Sk上の画素の特徴量の総和Tkについて取得し(ステップS523)、総和TkがTk>Thであるか否かを判断する(ステップS524)。Tk>Thである場合(ステップS524:Yes)、第k番目の走査線Skをピークとして記録部150に記録する(ステップS525)。一方、Tk>Thでない場合(ステップS524:No)、ステップS525を飛ばし、走査線の番号であるkをインクリメントし(ステップS526)、番号kがk>Kであるか否かを判断する(ステップS527)。k>Kでない場合(ステップS527:No)、ステップS523に戻る。一方、k>Kである場合(ステップS527:Yes)、K本の走査線全てについてピークか否かの判断が終了したとして、繰り返し処理を終了する。
以下、図21において境界線候補検出部173が処理を行うステップS530について、図28に沿って詳細に説明する。
図28は、第1実施形態にかかる情報処理装置の特定部のうち境界線候補検出部が行う処理(ステップS530)を示すフローチャートである。ステップS520にてピークが検出されたことを契機に処理が開始され、ピークとして記録された走査線Sk上の記録部150に記録された画素の座標を全て取得する(ステップS531)。次いで、記録部150に記録された処理対象画像を取得する(ステップS532)。取得した処理対象画像の画素と、走査線Sk上の画素とを対応づける(ステップS533)。特徴量の総和が十分大きくピークとして検出された走査線を境界線候補とし、走査線を構成する画素の座標を取得することによって、処理対象画像上の喫水線候補を検出する。
図29は、第1実施形態にかかる情報処理装置の特定部の計算する境界線候補を河川画像の他の例に重畳表示した図である。図29に示すように、処理対象画像300の手すりと喫水線に対応する位置に、喫水線候補491、492が重畳表示される。
(複数回処理)
上記のような一連の処理は、一つの画像に対して複数回行ってもよい。一つの画像に対して複数回一連の処理を行うときに、画像の境界線を特定するために計算された計算結果を記録部150に記録し、続く処理に用いることで、境界線の特定する精度を高めることができる。
処理対象画像作成部140は、ステップS250にて所定の角度θを決定するときに、記録部150に記録された計算結果を用いることができる。処理対象画像作成部140は、処理対象画像に対する所定方向に定められる複数の走査線を用いて作成された統計分布を、記録された計算結果である第1統計分布として、記録部150から読み出す。そして、所定方向に対して所定の角度θだけ回転させることで処理対象画像を作成する。作成された処理対象画像を用いて統計分布作成部171は統計処理を行い、第2統計分布を作成する。第1統計分布における極大値と第2統計分布の極大値との何れか大きい方に基づいて、特定部170は境界線の特定を行う。特定部170は、境界線を特定するための特徴量として、所定方向に対する画素毎のエッジベクトルの角度に基づく値を用いているため、画像を所定方向に対して所定の角度θだけ回転させる前後で、画素毎の特徴量は変化し、統計分布作成部171が作成する統計分布の値は変化する。境界線の方向と所定方向とが揃っているほど、処理対象画像について作成された統計分布は鋭く大きなピークを示す。そのため、一連の処理を複数回行う際に、処理対象画像について作成された統計分布が大きなピークを示すような所定の角度θだけ回転させることで、境界線を特定する精度が高まる。
また、画像を所定方向に対して所定の角度θだけ回転させる前後で、所定の閾値以上の値を有する極大値の数が変化する場合がある。境界線と複数のラインが写っている場合、所定方向に対して所定の角度θだけ回転させる前後の画像からそれぞれ得られる第1統計分布と第2統計分布は、一方には所定の閾値以上の値を有する極大値が2つ以上、他方には前記閾値以上の値を有する極大値が1つ現れる。このとき、特定部170は、閾値以上の値を有する極大値が1つ現れる統計分布を用いて境界線の特定を行う。境界線と複数のラインが写っている場合とは、例えば、河川画像において喫水線と、喫水線と異なる角度の人工物のラインとが写っている場合である。上記の処理によって、ピークが一つ現れる統計分布から容易に境界線を特定できる。
(複数画像処理)
また、上記のような一連の処理は、境界線を特定した画像を含む、特定の撮像対象について異なる時間毎に撮像した複数の画像に対して境界線を各々特定する場面に用いてもよい。特定の撮像対象について異なる時間毎に撮像した複数の画像は、例えば、所定の場所に固定されたカメラによって、河川の同じ場所について異なる時間毎に撮像された複数の河川画像である。
処理対象画像作成部140が画像を回転させる所定の角度θを得るために、一つの処理対象画像に対して複数回一連の処理を行う代わりに、特定の撮像対象について異なる時間毎に撮像した複数の画像に対して処理を行い、その結果を用いてもよい。
また、処理対象画像作成部140は、ステップS260にて境界線を含む一部領域を切り出すときに、記録部150に記録された複数の画像についての計算結果を用いることができる。複数の画像についての計算結果を用いて、特定された境界線に対応する画素を含むように一部領域を切り出すことで、情報処理装置の処理を行う対象のデータが小さくなり、境界線を決定するまでの処理の速度が高まり、かつ境界線を特定する精度が高まる。
第2実施形態にかかる情報処理装置及び情報処理方法について、図30〜図33を参照して説明する。第1実施形態と共通する要素については説明を割愛する。第2実施形態にかかる情報処理装置は、複数の画像における境界線の移動量を計算し、警報を出力するか否か判断する装置として用いられる。第1実施形態にかかる情報処理装置と同様に画像の境界線を特定することに加え、境界線を特定した画像と同じ撮像対象が写る画像について境界線を特定し、境界線の位置の移動が所定の位置に達するまでの移動であると判断した場合に、近隣に警報を鳴らす機能を備える。例えば、河川の同じ場所を異なる時間毎に撮像した複数の河川画像について喫水線を特定し、異なる時間毎の喫水線の位置を記録し、喫水線の位置の移動量から、河川の氾濫する危険水位に達すると判断されたときに、近隣に警報を出力する。
図30は、第2実施形態にかかる情報処理システム(警報システム500)の全体構成を示す図である。図30に示すように、警報システム500は、撮像部101と画像送信部102とを有する端末503と、情報処理装置520と、警報出力装置506とを備える。端末503と情報処理装置520と警報出力装置506とは、ネットワーク104を介して相互に通信可能となっており、撮像部101によって撮像されたデータが画像送信部102から情報処理装置520に送信され、情報処理装置520にて警報を出力する判断がなされた場合、警報出力装置506に出力命令が送信される。図示しないが、警報システム500は、情報出力装置を備え、情報処理装置520の処理結果を情報出力装置によって表示してもよい。
図31は、第2実施形態にかかる情報処理装置の機能的構成を示すブロック図である。情報処理装置520は、第1実施形態にかかる情報処理装置の出力部180に代わり、警報判断部580を機能部として有する。警報判断部580は、特定部170にて特定された境界線を用いて、警報を出力するか否か判断する機能を有する。警報判断部580は、警報出力装置506に警報を出力する命令を出してもよい。警報判断部580は、特定部170にて特定された境界線と、記録部150に記録された境界線について比較することで所定位置に達するまでの境界線の移動があるか否かを判断する機能を有する。各々の機能部が実行する処理は、図32で説明する処理と併せて後述する。警報判断部580は、CPU121が実施形態にかかるプログラムを実行することによって実現される。
図32は、第2実施形態にかかる情報処理装置の処理手順を示すフローチャートである。第1実施形態にかかる情報処理装置の処理手順におけるステップS600の代わりに、ステップS500にて特定された境界線を用いて警報判断部580が警報を出力するか否かを判断し(ステップS700)、一連の処理を終了する。
以下、図32において警報判断部580が処理を行うステップS700について、図33に沿って詳細に説明する。
図33は、第2実施形態にかかる情報処理装置の警報判断部が行う処理(ステップS700)を示すフローチャートである。ステップS500にて境界線が特定されたことを契機に処理が開始され、記録部150に記録された境界線の位置を第m番目の境界線Bmの位置として取得する(ステップS710)。このとき、記録部150は、特定の撮像対象を異なる時間毎に撮像した複数の画像について各々特定された境界線を記録している。次いで、ステップS710にて取得された境界線Bmの位置と、画像の所定位置との差Dを計算する(ステップS720)。画像の所定位置は、例えば、河川画像における氾濫危険水位の位置である。次いで、記録された画像について、所定の移動量閾値Mを設定する(ステップS730)。所定の移動量閾値Mは、ステップS720にて計算された、境界線Bmの位置と画像の所定位置との差Dよりも小さい値が設定される。所定の移動量閾値Mは、例えば、河川画像において短時間で危険水位に達することが予測されるような、急峻な喫水線の移動を示す移動量が設定される。次いで、ステップS500にて特定された境界線の位置を第m+1番目の境界線Bm+1の位置と決定し(ステップS740)、境界線Bmの位置と境界線Bm+1の位置との差である境界線の移動量Mmを計算する(ステップS750)。境界線の移動量MmについてMm>Dか否か判断する(ステップS760)。Mm>Dである場合(ステップS760:Yes)、警報を出力すると判断し(ステップS770)、一連の処理を終了する。一方、Mm>Dでない場合(ステップS760:No)、境界線の移動量MmについてMm>Mか否か判断する(ステップS780)。Mm>Mである場合(ステップS780:Yes)、警報を出力すると判断し(ステップS770)、一連の処理を終了する。一方、Mm>Mでない場合(ステップS780:No)、ステップS770を飛ばし、一連の処理を終了する。
上記のような処理を行う警報装置は、境界線の位置が所定の位置に達していない場合でも、境界線の位置の移動量が大きいときに予備的な警報を出力することができる。例えば、河川の急激な喫水線の移動、つまり水位の上昇を検出して予備的な警報を鳴らすことができる。