以下、本発明の好適な実施の形態について、添付の図面を参照しつつ、詳細に説明する。ただし、以下の説明において特に断らない限り、方向や向きに関する記述は、当該説明の便宜上、図面に対応するものであり、例えば実施品、製品または権利範囲等を限定するものではない。
<1. 実施の形態>
図1は、角度検出システム1を示す図である。
角度検出システム1は、ドーム形状の全方位カメラ2と、一般的なパーソナルコンピュータである閲覧装置3とがネットワーク8を介して接続された形態である。角度検出システム1は、全方位カメラ2によって撮像された画像を閲覧装置3において閲覧することにより、監視システムとしての機能を有している。
なお、図1に示す部屋9は、角度検出システム1の全方位カメラ2が設置される空間を形成している。部屋9は、天井90、当該天井90に隣接する第1壁面91、第1壁面91に対向する第2壁面92、および、天井90と第1壁面91との境界93から形成されている。図1に示す例では、全方位カメラ2は、第2壁面92に設置される。
また、図1に示すように、実空間における鉛直方向上向きのU軸、U軸に対して垂直なV軸、U軸およびV軸に対して垂直なW軸を定義する。これにより、V軸およびW軸は、水平面内に定義される軸となる。
また、ネットワーク8は、有線を用いる通信網であってもよいし、無線を用いるものであってもよい。また、ネットワーク8は、全方位カメラ2および閲覧装置3以外の装置を接続する機能を有していてもよい。さらに、角度検出システム1が備える全方位カメラ2および閲覧装置3は、いずれも1台の装置に限定されるものではない。
図2は、全方位カメラ2のブロック図である。全方位カメラ2は、CPU20、記憶装置21、操作部22、表示部23、撮像部24および通信部25を備えている。
CPU20は、記憶装置21に格納されているプログラム210を読み取りつつ実行し、各種データの演算や制御信号の生成等を行う。これにより、CPU20は、全方位カメラ2が備える各構成を制御するとともに、各種データを演算し作成する機能を有している。すなわち、全方位カメラ2は、一般的なコンピュータとして構成されている。
記憶装置21は、全方位カメラ2において各種データを記憶する機能を提供する。言い換えれば、記憶装置21が全方位カメラ2において電子的に固定された情報を保存する。
記憶装置21としては、CPU20の一時的なワーキングエリアとして使用されるRAMやバッファ、読み取り専用のROM、不揮発性のメモリ(例えばNANDメモリなど)、専用の読み取り装置に装着される可搬性の記憶媒体(PCカード、SDカード、USBメモリなど)等が該当する。図2においては、記憶装置21を、あたかも1つの構造物であるかのように図示している。しかし、通常、記憶装置21は、上記例示した各種装置(あるいは媒体)のうち、必要に応じて採用される複数種類の装置から構成されるものである。すなわち、記憶装置21は、データを記憶する機能を有する装置群の総称である。
また、現実のCPU20は高速にアクセス可能なRAMを内部に備えた電子回路である。しかし、このようなCPU20が備える記憶装置も、説明の都合上、記憶装置21に含めて説明する。すなわち、一時的にCPU20自体が記憶するデータも、記憶装置21が記憶するとして説明する。図2では、記憶装置21がプログラム210のみを記憶するかのように示している。しかし、例えば、画像情報240など他の情報を記憶するために記憶装置21を使用してもよい。
操作部22は、全方位カメラ2に対してオペレータ等が指示を入力するために操作するハードウェアである。操作部22としては、例えば、電源ボタン(撮像開始ボタン)などが想定される。ただし、操作部22は、これに限定されるものではなく、各種キーやボタン類、スイッチ、タッチパネル、ポインティングデバイスなどであってもよい。
表示部23は、各種データを表示することによりオペレータ等に対して出力する機能を有するハードウェアである。表示部23としては、例えば、撮像が正常に実行されていることを示すLEDなどが想定される。ただし、表示部23はLEDに限定されるものではなく、各種ランプや液晶ディスプレイ、液晶パネルなどであってもよい。
撮像部24は、図示しない光電変換素子を備えており、周囲を撮像することにより、画像情報240を取得する機能を有している。図示を省略するが、撮像部24が撮像する画像情報240において上向きの軸を「X軸」、X軸に垂直な軸を「Y軸」、X軸およびY軸に垂直な軸を「Z軸」と定義する。全方位カメラ2において、X軸およびY軸は全方位カメラ2を取り付けるための平坦な設置面(図示せず。)と平行となり、Z軸は当該設置面と垂直となる。このようなX軸、Y軸およびZ軸は、全方位カメラ2が設計・製造されるときに決定される。
撮像部24は、Z軸を中心とした全方位を撮像する機能を有している。さらに、撮像部24は、天井90と天井90に隣接する第1壁面91との境界93を画像情報240として撮像する。言い換えれば、オペレータは、撮像部24が、境界93を撮像することができるように全方位カメラ2を第2壁面92に設置する。
一般的なオフィスなどでは、部屋9によって形成される空間が略直方体となるように設計されており、第1壁面91と第2壁面92とは互いに対向し、第1壁面91および第2壁面92はいずれも平坦面である。このように、第1壁面91が曲面ではなく平坦面であることから、境界93は直線状となる。また、オペレータが全方位カメラ2を、第1壁面91に対向する第2壁面92に設置することにより、全方位カメラ2のZ軸方向に平行な方向と境界93とが互いに垂直の位置関係となる。
通信部25は、撮像部24により取得された画像情報240をネットワーク8を介して閲覧装置3に向けて送信する機能を有している。なお、通信部25は、画像情報240以外の情報を送信する機能を有していてもよいし、閲覧装置3から送信される各種情報を受信する機能を有していてもよい。
図3は、閲覧装置3のブロック図である。閲覧装置3は、CPU30、記憶装置31、操作部32、表示部33および通信部35を備えている。
CPU30は、記憶装置31に格納されているプログラム310を読み取りつつ実行し、各種データの演算や制御信号の生成等を行う。これにより、CPU30は、閲覧装置3が備える各構成を制御するとともに、各種データを演算し作成する機能を有している。すなわち、閲覧装置3は、一般的なコンピュータとして構成されている。
記憶装置31は、閲覧装置3において各種データを記憶する機能を提供する。言い換えれば、記憶装置31が閲覧装置3において電子的に固定された情報を保存する。
記憶装置31としては、CPU30の一時的なワーキングエリアとして使用されるRAMやバッファ、読み取り専用のROM、不揮発性のメモリ(例えばNANDメモリなど)、比較的大容量の情報を記憶するハードディスク、専用の読み取り装置に装着される可搬性の記憶媒体(CD−ROM、DVD−ROM、PCカード、SDカード、USBメモリなど)等が該当する。図3においては、記憶装置31を、あたかも1つの構造物であるかのように図示している。しかし、通常、記憶装置31は、上記例示した各種装置(あるいは媒体)のうち、必要に応じて採用される複数種類の装置から構成されるものである。すなわち、記憶装置31は、データを記憶する機能を有する装置群の総称である。
また、現実のCPU30は高速にアクセス可能なRAMを内部に備えた電子回路である。しかし、このようなCPU30が備える記憶装置も、説明の都合上、記憶装置31に含めて説明する。すなわち、一時的にCPU30自体が記憶するデータも、記憶装置31が記憶するとして説明する。図3に示すように、記憶装置31は、プログラム310、画像情報240および修正画像情報311を記憶する。ただし、記憶装置31が記憶する情報は、これらの情報に限定されるものではない。
操作部32は、閲覧装置3に対してオペレータ等が指示を入力するために操作するハードウェアである。操作部32としては、例えば、各種キーやボタン類、スイッチ、タッチパネル、ポインティングデバイス、ジョグダイヤルなどが該当する。
表示部33は、各種データを表示することによりオペレータ等に対して出力する機能を有するハードウェアである。特に、表示部33は、修正画像情報311を表示する。表示部33としては、例えば、CRTや液晶ディスプレイ、液晶パネルなどが該当する。ただし、表示部33は、各種ランプやLEDなどを含んでいてもよい。
通信部35は、全方位カメラ2から送信された画像情報240をネットワーク8を介して受信する機能を有している。なお、通信部35は、画像情報240以外の情報を受信する機能を有していてもよいし、閲覧装置3から全方位カメラ2に向けて各種情報を送信する機能を有していてもよい。
図4は、閲覧装置3が備える機能ブロックをデータの流れとともに示す図である。図4に示す境界検出部300、水平方向検出部301、回転角演算部302、および、画像修正部303は、CPU30がプログラム310に従って動作することにより実現される機能ブロックである。
境界検出部300は、全方位カメラ2の撮像部24により撮像され、通信部35により受信された画像情報240に撮像されている境界93を検出する。すなわち、境界検出部300は、画像処理(詳細は後述する。)によって画像情報240に撮像されてい被写体から境界93を認識し、抽出する機能を有している。このように境界検出部300によって境界93として検出された画像(境界93と推定された画像部分)は、境界情報312に記録される。
水平方向検出部301は、境界検出部300により検出された境界93(境界情報312)に応じて、当該境界93が検出された画像情報240における水平方向を検出する。水平方向検出部301によって検出された水平方向を示す情報は、水平方向情報313として記録される。
回転角演算部302は、水平方向情報313を参照し、水平方向検出部301により検出された画像情報240における水平方向に基づいて、当該画像情報240の実空間に対する回転角(以下、「回転角Δθ」と称する。)を演算により推定する。回転角演算部302により求められる回転角(回転角Δθの推定値。以下、「回転角Δω」と称する。)は、回転角情報314に記録される。
画像修正部303は、回転角情報314を参照し、回転角演算部302により演算された回転角Δωに応じて、画像情報240を回転させた修正画像情報311を作成する。このように、全方位カメラ2が設置されたときの撮像部24のズレ角(回転角Δθ)を、画像修正部303が較正するのである。
以上が、角度検出システム1の構成および機能の説明である。次に、角度検出システム1を用いて回転角Δθを演算する角度検出方法について説明する。
図5は、角度検出システム1の動作を示す流れ図である。なお、図5に示す各工程が開始されるまでに、全方位カメラ2が設置され、全方位カメラ2と閲覧装置3との間のデータ通信が可能な状態にされているものとする。
角度検出システム1は、運用が開始されると、所定の初期設定を実行した後に、撮像タイミングと、動作モードが解析モードであるか否かと、表示タイミングとをそれぞれ監視する状態となる(ステップS11,S16,S22)。角度検出システム1におけるこの状態を、以下、「待機状態」と称する。
なお、解析モードとは、角度検出システム1に定義される動作モードであって、画像情報240を解析して回転角Δωを求めるための動作モードである。また、角度検出システム1において、全方位カメラ2と閲覧装置3との間のデータ通信が確立され最初の画像情報240が閲覧装置3に記録されたときに、自動的に動作モードが解析モードに移行するものとする。ただし、解析モードへの移行契機はこれに限定されるものではなく、例えば、オペレータが、全方位カメラ2の操作部22を操作し、動作モードを解析モードに移行させるための指示を入力した場合などにおいても、動作モードが移行するように構成してもよい。
待機状態において、撮像タイミングが到来すると、全方位カメラ2のCPU20がステップS11においてYesと判定し、周囲の被写体を撮像するように撮像部24を制御する。これにより、撮像部24が撮像を行い(ステップS12)、画像情報240が作成される。
図6は、撮像部24によって撮像された画像情報240aを例示する図である。なお、一般的な全方位カメラにおいては、魚眼レンズなどを用いることにより、全方位を撮像するように設計されている場合がある。このように魚眼レンズなどを用いた場合、画像情報240の画像は歪んだ画像となり、画像情報240における水平方向も直線とはならない。しかし、以下では、説明を簡単にするために、図6に示すように、このような歪みのない補正された画像(いわゆるノーマル展開された画像)で説明する。このような補正は、例えば、撮像部24が備える魚眼レンズの曲率(既知)などに基づいて容易に実行することができるため、ここでは詳細な説明を省略する。
全方位カメラ2は、図1に示すように、第2壁面92に設置され、部屋9内を撮像することによって、天井90と、第1壁面91とを撮像する。このように天井90と、天井90に隣接する第1壁面91とが撮像されることにより、天井90と第1壁面91との境である境界93も撮像される。
言い換えれば、全方位カメラ2の設置工事担当者は、少なくとも天井90と第1壁面91とが撮像されるように、全方位カメラ2を設置する。一般的な全方位カメラは、平坦面に取り付ける際に、当該平坦面に対する法線方向を中心とした全方位を撮像するように設計されている。したがって、オペレータは、全方位カメラ2を第2壁面92に設置さえすれば、特に意識しなくても、図6に示すような画像情報240a(境界93を含むように撮像された画像情報240)を撮像させることができる。すなわち、全方位カメラ2を設置するときに、境界93を撮像するように設置することをオペレータに要求したとしても、オペレータの負担は大きなものとはならない。
一方で、オペレータは、撮像部24の回転位置(Z軸を中心軸とした回転位置)については、正確に調整することなく、アバウトに設置する。このように、オペレータが撮像部24の回転位置について意識することなく適当に設置すると、全方位カメラ2によって撮像される画像は、図6に示す画像情報240aのように、画像情報240における水平方向が実空間の水平方向に対して傾いた画像となる。
このようにして画像情報240に生じる実空間に対する傾きは、「回転角Δθ」である。すでに説明したように、この「回転角Δθ」は、オペレータが全方位カメラ2を設置した際に生じるズレ(誤差)である。したがって、全方位カメラ2の姿勢が改められない限り(すなわち、全方位カメラ2が設置しなおされない限り)、当該回転角Δθは変化することはなく、一定である。
さらに、図6から明らかなように、ここに例示する画像情報240aには、床面95も撮像されており、第1壁面91と床面95とによって形成される境界96も撮像されている。また、天井90には、複数の照明94が設置され、撮像されている。
図5に示すステップS12が実行されて、画像情報240が取得されると、通信部25は、取得された画像情報240を閲覧装置3に向けて送信する(ステップS13)。
なお、図5に示す例では、画像情報240が撮像されると、新たに作成された画像情報240が直ちに閲覧装置3に向けて送信される。しかし、ステップS12とステップS13との間にタイムラグがあってもよい。例えば、撮像された画像情報240を、一旦、記憶装置21に格納し、所定の期間が経過し、送信タイミングが到来したときに、記憶装置21に格納されている画像情報240がまとめて送信されるように構成してもよい。
全方位カメラ2から画像情報240が送信されると、閲覧装置3の通信部35がネットワーク8を介して当該画像情報240を受信し(ステップS14)、記憶装置31に記録する(ステップS15)。このようにして、角度検出システム1は、撮像タイミングが到来するたびに、閲覧装置3に新たな画像情報240が送信され、順次、蓄積される。なお、ステップS15を実行すると、角度検出システム1は、待機状態に戻る。
待機状態において、動作モードが解析モードになると、閲覧装置3のCPU30がステップS16においてYesと判定し、境界検出処理を実行する(ステップS17)。なお、境界検出処理とは、画像情報240から境界93を検出する処理である。詳細は後述するが、境界検出部300は、画像情報240から、天井90に相当する画素で構成される領域を検出し、当該領域の周縁部として境界93に相当する画素を検出する。
図7は、境界検出処理を示す流れ図である。
境界検出処理が開始されると、まず、境界検出部300は、記憶装置31に記憶されている画像情報240から、演算に使用する画像情報240を特定して読み出す(ステップS31)。
なお、ステップS31において読み出される画像情報240は、これまでに回転角Δωを演算するための対象となっていなかったものであることが好ましい。また、ステップS31において読み出される画像情報240は1つに限定されるものではなく、複数の画像情報240に基づいて回転角Δωを演算するように構成してもよい。
次に、境界検出部300は、画像情報240に含まれる複数の画素について、それぞれ輝度値を取得し(ステップS32)、取得した輝度値が閾値(以下、「閾値Q」と称する。)以上の画素を、天井照明領域を示す画素としてラベリングする(ステップS33)。
なお、ステップS33において使用する閾値Qは、点灯状態の照明に相当する画素を判別するための閾値であり、比較的高い値として設定することが好ましい。この閾値Qを高い値として設定することにより、例えば、第1壁面91に窓などの比較的明るい被写体が存在する場合にも当該窓を天井照明領域と誤認識することを防止することができる。
図8は、図6に示す画像情報240aに対して、天井照明領域をラベリングした状態を概念的に示す図である。ステップS33が実行されたことにより、照明94に相当する画素の領域は、天井照明領域70,71,72,73,74,75,76としてラベリングされる。
一方で、図8に示すように、画像情報240aにおいて人物の白い服を示す画素であった領域も、輝度値が比較的高くなるため、天井照明領域77としてラベリングされている。この天井照明領域77は、天井90に設けられた照明94を示す画素ではなく、天井照明領域としては誤検出である。
このように、画素の輝度値を閾値Qと比較するだけでは、例に示すように、白い服を示す画素や机上の照明を示す画素、あるいは、照明光を反射している物体などを天井照明領域として誤って検出してしまう。これらの誤検出に対する対処方法は、後述する。
図7に戻って、天井照明領域のラベリングが終了すると、境界検出部300は、検出された各天井照明領域70ないし77の面積(画素数)に応じた数の画素を含む統合用ブロックを、各天井照明領域70ないし77に対してそれぞれ定義する。そして、定義した当該統合用ブロックを、対応する天井照明領域70ないし77の周囲を囲むように配置し、各統合用ブロックに含まれる画素の輝度値のヒストグラムを求める(ステップS34)。
さらに、境界検出部300は、ステップS34において求めたヒストグラムが互いに類似する統合用ブロックに含まれる画素を、1つの天井候補領域を構成する画素として統合する(ステップS35)。なお、ヒストグラムの類似度を判定する手法としては、例えば、バタチャリア距離を演算する手法を用いることができるが、これに限定されるものではない。
図9は、図6に示す画像情報240に対して、天井候補領域60,61を抽出した様子を示す図である。
図9に示すように、天井照明領域70ないし76の周囲に配置された統合用ブロックのヒストグラムについて、類似する統合用ブロックに含まれる画素を統合した結果、天井候補領域60が抽出されている。また、天井照明領域77の周囲に配置された統合用ブロックのヒストグラムについて、類似する統合用ブロックに含まれる画素を統合した結果、天井候補領域61が抽出されている。なお、天井候補領域60と天井候補領域61との境は、天井候補領域60の周縁部5として検出されている。
多数の天井照明領域として検出された天井照明領域70ないし76は、いずれも照明94に相当する画素の領域であり、天井90に相当する画素が周囲に存在する。したがって、天井照明領域70ないし76の周囲に配置された統合用ブロックのヒストグラムは互いに類似し、これらの統合用ブロックを構成する画素が1つの天井候補領域60に統合される。
また、天井照明領域77は、照明94に相当する画素ではない画素の領域であるが、たまたま周囲に第1壁面91に相当する画素が存在している。したがって、天井照明領域77の周囲に配置された統合用ブロックのヒストグラムは互いに類似し、これらの統合用ブロックを構成する画素が1つの天井候補領域61に統合される。天井候補領域61は、天井照明領域77が誤検出され、かつ、天井照明領域77の周囲に配置された複数の統合用ブロックのヒストグラムが互いに類似するような被写体(第1壁面91)が当該天井照明領域77の周囲に撮像されていたために誤検出されたものである。
しかし、例えば、天井照明領域77以外に誤検出された天井照明領域が存在したとしても、その周囲に配置された複数の統合用ブロックのヒストグラムが互いに類似するような被写体が当該誤検出された天井照明領域の周囲に撮像されていない場合には、誤検出された天井照明領域によって、天井候補領域が誤検出されることはない。
例えば、机上には卓上の照明装置が設置されることがあり、これが天井照明領域として誤検出される事態は容易に想定される。しかし、一般に、机上には、様々な被写体が混在する。したがって、当該誤検出された天井照明領域の周囲に複数の統合用ブロックを配置した場合、これらのヒストグラムが互いに類似する事態は想定しにくい。すなわち、ステップS34,S35を実行することにより、実際の天井90以外の場所で誤検出された天井照明領域の影響を、かなり排除することができる。
また、天井90に相当する画素ではない画素を含む統合用ブロックのヒストグラムと、天井90に相当する画素を含む統合用ブロックのヒストグラムとは、類似しない蓋然性が高い。すなわち、統合用ブロックのヒストグラムの類似度によって当該統合用ブロックに含まれる画素の統合を行うことにより、天井候補領域60が天井90に相当する画素ではない画素の領域まで拡大(統合)されることも防止される。したがって、例えば、図9に示す天井候補領域61が抽出されない場合でも、天井候補領域60さえ検出されていれば、当該天井候補領域60の周縁部5は検出される。
図7に戻って、ステップS35を実行すると、境界検出部300は、天井候補領域が複数検出されたか否かを判定する(ステップS36)。
ステップS35によって検出された天井候補領域が1つの場合(ステップS36においてNo。)、当該天井候補領域を天井領域として決定する(ステップS37)。
一方で、ステップS35によって検出された天井候補領域が複数の場合(ステップS36においてYes。)、境界検出部300は、検出された各天井候補領域をラスタースキャンするためのスキャンブロックを定義する。このとき定義されるスキャンブロックは4以上の画素を含むサイズとして定義され、当該スキャンブロックには縦方向および横方向にそれぞれ2分割された4つの分割領域が定義される。すなわち、4つの分割領域は、それぞれが1以上の画素から成り、スキャンブロック内において2行2列に配置される。
次に、境界検出部300は、定義したスキャンブロックを用いて、各天井候補領域をそれぞれラスタースキャンし(ステップS38)、各天井候補領域にカウント条件を満たす回数をカウントする。ここでは、カウント条件は、スキャンブロック内に定義される4つの分割領域のうち、右下に配置される分割領域のみが天井照明領域(高輝度画素領域)となり、他の3つの分割領域が天井候補領域(低輝度画素領域)となった状態とする。このようなカウント条件を満たす回数は、各天井候補領域内に存在する天井照明領域の数に対応して増加するとみなせる。
そこで、境界検出部300は、検出された複数の天井候補領域のうち、カウントされたカウント条件を満たす回数が最も多かった天井候補領域を天井領域として決定する(ステップS39)。
一般的なオフィスなどでは、天井には多くの照明が設置される。したがって、照明が多く存在しているとみなせる領域を、より天井らしいとみなし、天井領域として決定することにより、複数の天井候補領域の中から、最も天井領域らしい領域を選択することができる。
図9に示す例では、天井候補領域60の方が天井候補領域61よりも天井照明領域を多く内包している。したがって、スキャンブロックによるラスタースキャンの結果、天井候補領域60の方が天井候補領域61よりもカウントされる回数が多くなる。これにより、ステップS39において天井候補領域60が天井領域として決定される。このようにして、境界検出部300は、複数の天井候補領域60,61の中から1つの天井領域を決定し、誤検出された天井候補領域61を除外する。
なお、画像情報240において複数の天井候補領域が検出された場合、いずれの天井候補領域を天井領域として決定するかについては、他の手法を用いることもできる。例えば、画像情報240内における各天井候補領域の位置関係や、各天井候補領域の形状などから判定することも想定できる。また、このような複数の手法を重畳的に用いて、最も天井領域らしい天井候補領域を決定してもよい。ただし、回転角Δθの大きさによっては、天地が逆転して撮像されることもあり得るため、単純に位置関係のみで決定すると、誤検出を招くおそれもある。
また、カウント条件は上記例に示した条件に限定されるものではない。例えば、スキャンブロック内に定義される4つの分割領域のうち、左下に配置される分割領域のみが天井照明領域(高輝度画素領域)となり、他の3つの分割領域が天井候補領域(低輝度画素領域)となった状態をカウント条件とすることもできる。
ステップS37またはステップS39が実行され、天井領域を決定すると、境界検出部300は、画像情報240から検出した天井領域に基づいて、当該画像情報240から境界93を検出し、境界情報312を作成する(ステップS40)。
具体的には、境界検出部300は、検出した天井領域の周縁部5(画像情報240内における、天井領域とその他の領域との境界)と、撮像領域241の周縁部との交点(2点存在する。)から、それぞれ仮想の境界線(ただし、周縁部5以外の天井領域内の画素を含まない線)を引き、2本の仮想の境界線のうち、周縁部5と一致する画素の数が多い方を境界93とみなす。
図9に示す例は、周縁部5が直線として検出されており、いわば理想的な検出例である。このような場合において、周縁部5と、撮像領域241の周縁部との交点からそれぞれ仮想の境界線を引くと、2本の仮想の境界線がいずれも周縁部5に一致する(2本の仮想の境界線の傾きが一致する。)。したがって、図9に示す例では、2本の仮想の境界線がそのまま境界93として検出される。
図10は、周縁部5が曲線形状として検出された場合の境界93を決定する様子を示す図である。
まず、天井領域の周縁部5と、撮像領域241の周縁部との交点として、点Aと点Bとを決定する。次に、点Aから仮想の境界線100を引くとともに、点Bから仮想の境界線101を引く。先述のように、このようにして引かれた2本の境界線100,101を比較して、周縁部5と一致する画素の数が多い方を境界93とみなすので、図10に示す例では、境界線101が境界93として検出される。
なお、図示は省略するが、2本の仮想の境界線の傾きが互いに一致せず、かつ、周縁部5と一致する画素の数が同数であった場合は、2本の仮想の境界線の中間の傾きの仮想の境界線をさらに引き、これを境界93とする。
境界情報312が作成されると、角度検出システム1は、図7に示す境界検出処理を終了して、図5に示す処理に戻る。
図5に戻って、ステップS17の境界検出処理が終了すると、水平方向検出部301が、画像情報240における水平方向を検出する(ステップS18)。
画像情報240における水平方向は、当該画像情報240から検出された境界93の傾きと平行な方向である。言い換えれば、そのように画像情報240が撮像されている。また、すでに説明したように、画像情報240から検出される境界93は、当該画像情報240において必ず直線である。
したがって、ステップS18において、水平方向検出部301は、境界情報312を参照することにより、境界検出部300によって検出された境界93(厳密には現実の境界93と一致するとは限らない。)の画像を参照し、当該境界93の傾きを、画像情報240における水平方向として検出する。具体的には、画像情報240から検出された境界93によってXY平面(X軸およびY軸に平行な面)上に描かれる直線の傾きを、画像情報240における水平方向として検出し、水平方向情報313を作成する。
境界93によって描かれる直線は、例えば、以下に示す式1で表現できる。
y=αx+β ・・・ 式1
ただし、式1において、x,yはX軸およびY軸の座標であり、α,βは定数である。
境界93によって描かれる直線が式1で表現される場合、水平方向検出部301は、水平方向情報313を「α」とする。
次に、回転角演算部302が、水平方向情報313に基づいて、以下に示す式2により回転角Δωを演算する(ステップS19)。
Δω=arctan(α) ・・・ 式2
また、回転角Δωが求まると、回転角演算部302は、求めた回転角Δωに基づいて回転角情報314を作成する(ステップS20)。
回転角情報314が作成されると、角度検出システム1は、解析モードを終了して(ステップS21)、再び、待機状態に戻る。
待機状態において、表示タイミングが到来すると、CPU30がステップS22においてYesと判定し、画像修正部303が修正画像情報を作成する(ステップS23)。
画像修正部303は、記憶装置31に記憶されている回転角情報314を読み出して、当該回転角情報314に格納されている回転角Δωを取得する。そして、取得した回転角Δωに応じて、画像情報240に含まれる各画素の位置を座標変換して、修正画像情報311を作成する。したがって、画像情報240の画像が回転角Δωを打ち消すように回転した画像(修正画像情報311)が作成される。すでに説明したように、回転角Δωは、回転角Δθとみなせるので、修正画像情報311は、全方位カメラ2(撮像部24)の回転角Δθを較正した画像となる。
修正画像情報311が作成されると、表示部33は、修正画像情報311を表示する(ステップS24)。これにより、オペレータは、設置時に発生した全方位カメラ2(撮像部24)の回転角Δθを適切に較正した画像を閲覧することができ、オペレータによる視認性が向上する。
以上のように、角度検出システム1は、天井90と天井90に隣接する第1壁面91との境界93を画像情報240として撮像する撮像部24と、撮像部24により撮像された画像情報240に撮像されている境界93を境界情報312として検出する境界検出部300と、境界検出部300により検出された境界情報312に応じて、当該境界93が検出された画像情報240における水平方向を水平方向情報313として検出する水平方向検出部301と、水平方向検出部301により検出された画像情報240における水平方向に基づいて、当該画像情報240の実空間に対する回転角Δθを演算により推定する回転角演算部302とを備える。これにより、画像情報240に基づいて、当該画像情報240の実空間に対する回転角Δθを求めることができる。したがって、人手を要することなく、負担を軽減することができる。
また、境界検出部300は、撮像部24により撮像された画像情報240から天井90が撮像されている天井領域を検出し、検出した当該天井領域の周縁部5に応じて境界93を検出する。これにより、容易に、かつ、精度よく境界93を検出することができる。
また、境界検出部300は、撮像部24により撮像された画像情報240に含まれる各画素の画素値(輝度値)に応じて、照明94が撮像されている天井照明領域を検出することにより、天井領域を検出する。これにより、照明94を示す蓋然性の高い天井照明領域に基づいて、照明94が設置されている天井90を示す天井領域を検出することで、天井領域の検出精度が向上する。
また、境界検出部300は、撮像部24により撮像された画像情報240において、当該画像情報240から検出した天井照明領域の周囲の領域を所定数の画素を含む統合用ブロックに分割し、当該統合用ブロックに含まれる画素の画素値によるヒストグラムを統合用ブロックごとに求め、これら統合用ブロックのヒストグラムの類似度に応じて天井領域を検出する。これにより、誤検出された天井照明領域を排除することができる。
また、回転角演算部302により演算された回転角Δθに応じて、画像情報240を回転させた修正画像情報311を作成する画像修正部303をさらに備えることにより、実空間に対して忠実な画像に関する情報を作成することができる。
なお、図6に示す画像情報240aには、第1壁面91と床面95との境界96も撮像されている。そして、境界96の画像情報240a内における傾きも境界93の場合と同様に、回転角Δθを推定するために用いることができる。しかし、通常、部屋9の床面95には様々な物体が置かれるため、これらの物体によって境界96が遮られる。すなわち、境界96は、撮像部24により確実に撮像されるとは限らない。したがって、境界96を検出するのではなく、角度検出システム1のように境界93を検出するように構成することが好ましい。
<2. 変形例>
以上、本発明の実施の形態について説明してきたが、本発明は上記実施の形態に限定されるものではなく様々な変形が可能である。
例えば、上記実施の形態に示した各工程は、あくまでも例示であって、上記に示した順序や内容に限定されるものではない。すなわち、同様の効果が得られる範囲内において、適宜、順序や内容が変更されてもよい。
また、上記実施の形態に示した機能ブロック(例えば、境界検出部300や水平方向検出部301など)は、CPU30がプログラム310に従って動作することにより、ソフトウェア的に実現されると説明した。しかし、これらの機能ブロックの一部または全部を専用の論理回路で構成し、ハードウェア的に実現してもよい。
また、閲覧装置3が備える機能ブロックのうちの一部が全方位カメラ2に設けられていてもよい。例えば、回転角Δωを全方位カメラ2のCPU20が演算するとともに、画像情報240を修正した修正画像情報311に相当する情報を作成してから、閲覧装置3に向けて当該情報を送信するように構成してもよい。
また、全方位カメラ2および閲覧装置3が一体的な装置によって構成されていてもよい。すなわち、角度検出システム1は、必ずしもネットワーク8によって複数の装置が接続される形態に限定されるものではない。
また、角度検出システム1は、回転角演算部302によって演算された回転角情報314に応じて、全方位カメラ2の撮像部24を回転させることにより、撮像部24の姿勢を較正する回転機構をさらに備えていてもよい。すなわち、回転角情報314を全方位カメラ2に向けて送信し、CPU20が当該回転機構を制御して、撮像部24のZ軸を中心軸として当該撮像部24を回転角情報314に応じて回転させることにより、撮像部24の水平方向(姿勢)を較正してもよい。このように構成することにより、調整後は、実空間に対して忠実な画像情報240を撮像することができる。
また、閲覧装置3は、所定の時間間隔で回転角Δωを演算し、検出した回転角Δωの絶対値が閾値以下となったときに、較正不要を示す一致情報を全方位カメラ2に向けて送信するようにしてもよい。この場合、全方位カメラ2は、当該一致情報を受信したときに、表示部23にその旨を示す情報を表示してもよい。表示の仕方としては、例えば、一致情報を受信したときに、表示部23のランプの光を「赤」から「緑」に変更するなどが想定される。この場合、設置工事担当者は、表示部23のランプが「緑」になるまでは、全方位カメラ2の姿勢を動かし、当該ランプが「緑」になったことを確認したときに、その姿勢で全方位カメラ2を固定し設置するようにする。このように構成することにより、設置工事担当者は、直接、閲覧装置3の表示部33を閲覧して画像情報240を確認する必要がなく、設置工事担当者の負担が軽減されるとともに、全方位カメラ2に回転機構などを設ける必要もない。