(57)【要約】【課題】１つの側面では、画像の歪みを考慮したカメラ特性情報の取得精度の向上を図る。【解決手段】1つの態様では、コンピュータが、第１のカメラにより撮影された１または複数の画像から、実空間における位置が異なる複数の所定パターンを検出する第１検出処理を行い、前記複数の所定パターンのうちで前記第１検出処理において検出に成功した１または複数の第１所定パターンに基づいて、前記第１のカメラについてのカメラ特性情報を取得し、取得した前記カメラ特性情報に基づいて前記１または複数の画像に対する補正処理を行い、前記補正処理が行なわれた前記１または複数の画像から、前記複数の所定パターンのうちで前記第１検出処理において検出に失敗した１または複数の第２所定パターンを検出する第２検出処理を行い、検出した前記第２所定パターンに基づいて前記カメラ特性情報を更新する。【選択図】  図２
2019057864.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
第１のカメラにより撮影された１または複数の画像から、実空間における位置が異なる複数の所定パターンを検出する第１検出処理を行い、
前記複数の所定パターンのうちで前記第１検出処理において検出に成功した１または複数の第１所定パターンに基づいて、前記第１のカメラについてのカメラ特性情報を取得し、
取得した前記カメラ特性情報に基づいて前記１または複数の画像に対する補正処理を行い、
前記補正処理が行なわれた前記１または複数の画像から、前記複数の所定パターンのうちで前記第１検出処理において検出に失敗した１または複数の第２所定パターンを検出する第２検出処理を行い、
検出した前記第２所定パターンに基づいて前記カメラ特性情報を更新する、
処理を実行することを特徴とするカメラ制御方法。
【請求項２】
前記カメラ特性情報はカメラの内部パラメータを含むことを特徴とする請求項１記載のカメラ制御方法。
【請求項３】
前記補正処理は、取得した前記カメラ特性情報に基づいて、前記１または複数の画像のいずれかに対する、画像の歪みを補正する処理である、
ことを特徴とする請求項１または２記載のカメラ制御方法。
【請求項４】
前記第１のカメラは魚眼レンズを搭載したカメラであり、
前記補正処理は、取得した前記カメラ特性情報に基づいて、前記魚眼レンズを用いて撮影された前記１または複数の画像のいずれかに対応する正距方位画像を生成することを含む、
ことを特徴とする請求項１〜３のいずれか１項に記載のカメラ制御方法。
【請求項５】
前記１または複数の画像のいずれかは、前記所定の特徴を有する対象物を含む画像であり、
前記コンピュータは、前記１または複数の画像のいずれかにおける前記対象物を通過する直線を、前記１または複数の画像のいずれかの画像上から特定する処理を実行し、
前記補正処理は、特定した前記直線を赤道とする正距方位画像を生成することを含む、
ことを特徴とする請求項４記載のカメラ制御方法。
【請求項６】
前記コンピュータは、
前記第１所定パターンの前記画像における位置と、実空間における前記第１のカメラと前記第１所定パターンに対応する物体との位置関係と、に基づいて前記カメラ特性情報を取得し、
前記第２所定パターンの前記画像における位置と、実空間における前記第１のカメラと前記第２所定パターンに対応する物体との位置関係と、に基づいて前記カメラ特性情報を更新する、
ことを特徴とする請求項１〜５のいずれか１項に記載のカメラ制御方法。
【請求項７】
前記カメラ特性情報はカメラの外部パラメータを含むことを特徴とする請求項１〜６のいずれか１項に記載のカメラ制御方法。
【請求項８】
前記コンピュータは、
前記１または複数の画像の撮影と同期して第２のカメラにより撮影された１または複数の画像のいずれかを用いて、前記第１検出処理、前記第２のカメラについての前記カメラ特性情報を取得する処理、前記補正処理、前記第２検出処理、前記カメラ特性情報を更新する処理を実行し、
更新した前記カメラ特性情報に含まれる、前記第１のカメラの前記外部パラメータと、前記第２のカメラの前記外部パラメータとの差分を算出する、
ことを特徴とする請求項７記載のカメラ制御方法。
【請求項９】
前記コンピュータは、
前記第１のカメラと前記第２のカメラの型式、型番が一致する場合、前記第１のカメラについて取得された前記カメラ特性情報に基づいて、第２のカメラにより撮影された１または複数の画像のいずれかについての前記補正処理を実行する、
ことを特徴とする請求項８記載のカメラ制御方法。
【請求項１０】
第１のカメラにより撮影された１または複数の画像から、実空間における位置が異なる複数の所定パターンを検出する第１検出処理を実行する検出部と、
前記複数の所定パターンのうちで前記第１検出処理において検出に成功した１または複数の第１所定パターンに基づいて、前記第１のカメラについてのカメラ特性情報を取得する取得部と、
取得した前記カメラ特性情報に基づいて前記１または複数の画像に対する補正処理を実行する補正処理部と、
を備え、
前記検出部は、前記補正処理が行なわれた前記１または複数の画像から、前記複数の所定パターンのうちで前記第１検出処理において検出に失敗した１または複数の第２所定パターンを検出する第２検出処理を実行し、
前記取得部は、検出した前記第２所定パターンに基づいて前記カメラ特性情報を更新する、
ことを特徴とするカメラ制御装置。
【請求項１１】
コンピュータに、
第１のカメラにより撮影された１または複数の画像から、実空間における位置が異なる複数の所定パターンを検出する第１検出処理を行い、
前記複数の所定パターンのうちで前記第１検出処理において検出に成功した１または複数の第１所定パターンに基づいて、前記第１のカメラについてのカメラ特性情報を取得し、
取得した前記カメラ特性情報に基づいて前記１または複数の画像に対する補正処理を行い、
前記補正処理が行なわれた前記１または複数の画像から、前記複数の所定パターンのうちで前記第１検出処理において検出に失敗した１または複数の第２所定パターンを検出する第２検出処理を行い、
検出した前記第２所定パターンに基づいて前記カメラ特性情報を更新する、
処理を実行させることを特徴とするカメラ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
カメラ制御方法、カメラ制御装置およびカメラ制御プログラムに関する。
【背景技術】
【０００２】
カメラによって撮影された画像から、画像に含まれる被写体（対象物）の実空間における位置を特定する技術が存在する。画像上の座標と実空間の位置（座標）との対応関係が特定されていれば、カメラによって撮影された対象物の画像から、画像の撮影時における対象物の実空間での位置を求めることができる。
【０００３】
画像上の座標と実空間の座標との対応関係が特定するためには、例えば、画像を取得するカメラについてキャリブレーション（校正）が行なわれる。
【０００４】
ここで、キャリブレーションとは、実空間における大きさと位置（座標）が既知である対象物をカメラで撮影し、取得された画像上の座標を特定することで、画像上の２次元座標を実空間の３次元座標（もしくはその逆）に変換するパラメータを取得する処理である。これにより、カメラの特性に関する情報が取得される。
【０００５】
例えば、カメラを実空間の所定の位置に固定した状態で、画像処理等によって画像から抽出可能な形状の対象物（以降、キャリブレーションパターンと記載する）をカメラで撮影する。このとき、カメラと対象物それぞれの実空間における位置（座標）が既知であり、撮影された対象物の画像上の座標を画像処理等によって特定すれば、画像上の座標と実空間の座標との対応関係が特定できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１０１２６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、カメラとして、広範囲の視野角を有するレンズ（例えば魚眼レンズなどと呼ばれる）を搭載したカメラが用いられることがある。
【０００８】
１つの画像でより広い実空間をカバーできることを長所としているが、レンズへの入射角が大きい領域（画像における外側に近い領域）になるほど、画像に歪みが生じる。入射角が大きい領域にキャリブレーションパターンが存在する場合、画像におけるキャリブレーションパターンの形状は、実物のキャリブレーションパターンに対して大きく変形する。このため、画像処理によってキャリブレーションパターンを認識できない、つまり撮影されたキャリブレーションパターンの画像上の座標が特定できない可能性がある。
【０００９】
そして、キャリブレーションパターンを認識できない領域については、キャブレーションが実行できない、または処理としては実行できたとしても、取得される情報（パラメータ）の精度が大幅に低下してしまう。
【００１０】
１つの側面では、画像の歪みを考慮したカメラ特性情報の取得精度の向上を図ることを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、コンピュータが、第１のカメラにより撮影された１または複数の画像から、実空間における位置が異なる複数の所定パターンを検出する第１検出処理を行い、前記複数の所定パターンのうちで前記第１検出処理において検出に成功した１または複数の第１所定パターンに基づいて、前記第１のカメラについてのカメラ特性情報を取得し、取得した前記カメラ特性情報に基づいて前記１または複数の画像に対する補正処理を行い、前記補正処理が行なわれた前記１または複数の画像から、前記複数の所定パターンのうちで前記第１検出処理において検出に失敗した１または複数の第２所定パターンを検出する第２検出処理を行い、検出した前記第２所定パターンに基づいて前記カメラ特性情報を更新する。
【発明の効果】
【００１２】
１つの側面では、画像の歪みを考慮してカメラ特性情報の取得精度を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】本実施例による実施形態の概略図を示す。
【図２】情報処理装置１の機能的構成を示す機能ブロック図を示す。
【図３】カメラ２−１を用いて撮影する対象物の一例を示す。
【図４】キャリブレーション処理（第１段階）の一連の処理の流れを示すフローチャートを示す。
【図５】管理情報記憶部１２２に記憶されるデータの一例を示す。
【図６】図４に示す一連の処理が実行された場合の、管理情報記憶部１２２に記憶されるデータの例を示す。
【図７Ａ】画像の中央付近に平板３００の全体が写っている画像の例を示す。
【図７Ｂ】画像の外縁付近に平板３００の全体が写っている画像の例を示す。
【図８】カメラ２−１、２−２の双方において平板３００を視野内に写す場合の一例を示す。
【図９Ａ】キャリブレーション処理（第２段階）の一連の処理の流れを示すフローチャート（その１）を示す。
【図９Ｂ】キャリブレーション処理（第２段階）の一連の処理の流れを示すフローチャート（その２）を示す。
【図１０】図７Ｂの画像に対応する補正画像の一例を示す。
【図１１】図９Ａ、図９Ｂに示す一連の処理が実行された場合の、管理情報記憶部１２２に記憶されるデータの例を示す。
【図１２】正距円筒図における赤道の設定についての変形例を示す。
【図１３Ａ】図１２を用いて説明した赤道の設定に基づいて生成した正距方位図の例を示す。
【図１３Ｂ】正距方位図を生成した場合に、平板３００が画像上分断される一例を示す。
【図１４】本実施例における情報処理装置１のハードウェア構成の一例を示す。
【発明を実施するための形態】
【００１４】
本発明を実施する実施例について、図面とともに説明をする。
【００１５】
〔概略〕
図１は、本実施例による実施形態の概略図である。図１には、情報処理装置１、カメラ２−１、２−２が示されている。
【００１６】
カメラ２−１、２−２のそれぞれは、魚眼レンズ２１−１、２１−２を搭載した撮像装置である。カメラ２−１、２−２それぞれの視野角が１８０度以上である場合、例えば、図１に示すように、魚眼レンズ２１−１と魚眼レンズ２１−２とが反対方向を向くようにカメラ２−１、２−２を設置することで、３６０度画像（全天球画像）を取得することもできる。
【００１７】
情報処理装置１は、有線または無線でカメラ２−１、２−２と通信可能に接続されたコンピュータであり、カメラ２−１、２−２を用いた画像取得の制御を実行する。情報処理装置１は、例えば、ＰＣ（Personal Computer）や、スマートフォン、ＰＤＡ（Personal Digital Assistant）などの情報処理装置である。
【００１８】
なお、本実施例において説明する各種の処理は、情報処理装置１およびカメラ２−１、２−２の機能を有する一体の装置で実行されることとしても良い。
【００１９】
〔情報処理装置１の機能的構成〕
図２は、情報処理装置１の機能的構成を示す機能ブロック図である。情報処理装置１は、例えば、通信部１０１、入力部１０２、出力部１０３、処理部１１０、記憶部１２０を備える。
【００２０】
通信部１０１は、有線または無線で、カメラ２−１、２−２を含む他の装置との通信を実行することが可能である。通信部１０１は、例えば、情報処理装置１が備えるネットワークアダプタやＮＩＣ（Network Interface Controller）などの通信デバイスである。あるいは、通信部１０１は、ＵＳＢ（Universal Serial Bus）等の有線接続の通信ポートや、無線通信の送受信機である。
【００２１】
入力部１０２は、ユーザーからの情報入力や操作を受け付ける。入力部１０２は、ハードウェアとしては、例えば、例えばキーボードやマウス、タッチパッド等である。
【００２２】
出力部１０３は、例えば、カメラ２−１、２−２により取得された画像や、取得された画像を用いた画像処理の結果、後述するキャリブレーションの結果などを出力することが可能である。出力部１０３は、ハードウェアとしては、例えば、例えば液晶ディスプレイである。
【００２３】
処理部１１０は、撮影処理部１１１、検出部１１２、判定部１１３、キャリブレーション実行部１１４、補正処理部１１５を備える。
【００２４】
撮影処理部１１１は、カメラ２−１、２−２の少なくとも一方を用いた、画像の撮影を制御する。例えば、カメラ２−１、２−２を用いた全天球画像の撮影を行なう場合には、カメラ２−１、２−２の撮影のタイミングを同期させる制御などを実行する。
【００２５】
検出部１１２は、カメラ２−１、２−２により取得された画像から、キャリブレーションの処理に用いられる特徴点（詳細は後述する）の検出を実行する。
【００２６】
判定部１１３は、検出部１１２による特徴点の検出結果についての判定を行う。
【００２７】
キャリブレーション実行部１１４は、検出部１１２により検出された特徴点に基づいて、カメラ２−１、２−２の少なくとも一方についてのカメラキャリブレーションを実行する。キャリブレーションの結果、キャリブレーション実行部１１４はカメラパラメータ（後述する、カメラの内部パラメータ、外部パラメータ）を取得する。本願における取得部は、例えばキャリブレーション実行部１１４に対応する。
【００２８】
補正処理部１１５は、カメラ２−１またはカメラ２−２を用いて取得された画像に対する補正処理を実行する。
【００２９】
上述した各機能部の動作については、本実施例における一連の処理の流れとともに詳細を後述する。
【００３０】
記憶部１２０は、カメラ画像記憶部１２１、管理情報記憶部１２２、補正画像記憶部１２３、パラメータ情報記憶部１２４を備える。
【００３１】
カメラ画像記憶部１２１は、カメラ２−１、２−２を用いて撮影された画像のデータを記憶する。
【００３２】
管理情報記憶部１２２は、カメラ２−１、２−２を用いて撮影された画像についての情報を記憶する。
【００３３】
補正画像記憶部１２３は、補正処理部１１５により補正されたカメラ画像を記憶する。
【００３４】
パラメータ情報記憶部１２４は、キャリブレーション実行部１１４によるキャリブレーションの結果取得されたカメラパラメータを記憶する。カメラパラメータとは、カメラの特性を示す情報であり、例えば、カメラの内部パラメータ、外部パラメータを情報として含む。
【００３５】
なお、内部パラメータとは、実空間における座標とカメラ画像上の座標との間の座標の変換に関するパラメータである。また、内部パラメータは、カメラについての焦点距離や画像中心のずれ、レンズの歪み等を示すパラメータである。
【００３６】
また、外部パラメータとは、実空間におけるカメラの位置、姿勢を示すパラメータである。外部パラメータは、例えば、実空間上の所定の原点に対するカメラの相対位置（原点に対する回転、並進）として表される。
【００３７】
上述した各記憶部に記憶される情報については、本実施例における一連の処理の流れとともに詳細を後述する。
【００３８】
〔画像の取得〕
まず、本実施例におけるキャリブレーションに用いられる画像の取得（撮影）について説明する。例示として、まずカメラ２−１（１台のカメラ）について説明するが、カメラ２−２を用いる場合にも同様の処理とすることができる。
【００３９】
キャリブレーションにおいては、カメラ２−１を実空間の特定の位置に固定した状態で、実空間における大きさや位置が既知である対象物を撮影した画像を取得する。
【００４０】
図３は、カメラ２−１を用いて撮影する対象物の一例を示す図である。カメラ２−１を用いて撮影する対象物は、例えば、図３のような、市松模様が施された平板３００とすることができる。なお、以降の説明では、平板３００の市松模様を「格子パターン」と記載することがある。キャリブレーションに用いる特徴点は、例えば、市松模様に含まれる四角同士の接点（例えば、図３の点３１０）としてよい。なお、市松模様に含まれる四角同士の接点を特徴点とした場合、図３の平板３００には、点３１０を含め、縦５×横１９の合計９５点の特徴点が含まれることとなる。
【００４１】
平板３００を実空間におけるカメラ２−１の撮像範囲内に設置した状態で、撮影処理部画像を撮影することで、キャリブレーションに用いる特徴点を含むカメラ画像が取得される。なおこのとき、平板３００の全体がカメラ２−１の撮像範囲内に含まれ、撮影時の実空間における平板３００の位置、および格子パターンにおける四角の寸法（特徴点の相対的な位置関係）は予め特定されている必要がある。また、キャリブレーションの精度向上を考慮し、カメラ画像は、平板３００の位置を異ならせて複数枚撮影されることが望ましい。
【００４２】
なお、平板３００は、あくまで対象物の一例である。大きさが既知であり、パターンマッチング等の画像処理によって、カメラ画像から特徴点が検出可能な物体であれば、例示の態様に一意に限定される必要はない。
【００４３】
〔キャリブレーション処理（第１段階）〕
本実施例におけるキャリブレーションの処理について説明する。なお、以降の説明にあたり、前述した態様に基づいて、キャリブレーションに用いられる複数のカメラ画像が事前に取得されているものとする。また、以降の説明では、一旦、カメラ２−１、およびカメラ２−１を用いて撮影された画像に着目して説明する。
【００４４】
図４は、キャリブレーション処理（第１段階）の一連の処理の流れを示すフローチャートである。
【００４５】
まず、検出部１１２は、カメラ画像記憶部１２１に記憶された、カメラ２−１を用いて撮影された画像の中から、未処理の画像を１つ選択する（ステップＳ４０１）。ここで、未処理の画像とは、後述するステップＳ４０２の処理が実行されていない画像である。
【００４６】
図５は、管理情報記憶部１２２に記憶されるデータの一例を示す図である。管理情報記憶部１２２は、例えば、図５のように、撮影時刻１２２１、画像ＩＤ（identifier）（カメラ２−１）１２２２、結果情報（カメラ２−１）１２２３、画像ＩＤ（カメラ２−２）１２２４、結果情報カメラ（２−２）１２２５、実空間位置１２２６を関連付けて記憶する。
【００４７】
撮影時刻１２１１は、画像の撮影時刻を示す情報である。なお、図５では、撮影処理部１１１による同期制御によって、同一のタイミングで、カメラ２−１、２−２の２台のカメラで画像が撮影されたことを示している。これは、全天球画像を撮影するためのカメラキャリブレーションにおいて、対象物（平板３００）が同一の実空間位置の場合の画像を用いる必要があるためである。ただし、カメラ２−１、２−２のそれぞれで、対象物が同一の実空間位置の場合の画像が取得でき、かつ実空間位置ごとに画像の対応付けが可能であれば、画像の撮影時刻が一致していることは必須ではない。
【００４８】
画像ＩＤ（カメラ２−１）１２２２は、カメラ２−１で撮影された画像のそれぞれを一意に識別するための識別情報である。図５では、便宜的に「１−０００１」〜「１−００１０」の値を用いているが、画像のそれぞれが一意に識別可能であれば、具体的な値は図５の態様と異なっても構わない。
【００４９】
結果情報（カメラ２−１）１２２３は、画像それぞれについての検出部１１２による特徴点の検出結果を示す情報である。本実施例において、結果情報（カメラ２−１）１２２３は、未処理、成功、失敗の３つのステータス（詳細は後述する）を取り得る。例えば図５では、未処理のステータスを「未処理」と示しており、これは後述するステップＳ４０２の処理が実行されていない画像であることを示す。ただし、それぞれのステータスが区別可能であれば、データの形式は図５の態様に限定される必要はなく、例えば数値形式やビット形式であっても良い。
【００５０】
画像ＩＤ（カメラ２−２）１２２４、カメラ２−２で撮影された画像のそれぞれを一意に識別するための識別情報である。図５では、便宜的に「２−０００１」〜「２−００１０」の値を用いているが、画像のそれぞれが一意に識別可能であれば、具体的な値は図５の態様と異なっても構わない。
【００５１】
結果情報カメラ（２−２）１２２５は、カメラ２−２を用いて取得された画像について、結果情報（カメラ２−１）１２２３と同様に、画像それぞれについての特徴点の検出結果を示す情報である。
【００５２】
実空間位置１２２６は、例えば、それぞれの画像の撮影時点における、対象物（平板３００）の位置を示す実空間座標である。ここで実空間座標は、例えば、実空間内の所定の点を原点とする３次元座標、および平板３００の姿勢（向き）として良い。ただし、座標の持ち方は一意に限定される必要はなく、格子パターンの寸法と合わせて、各特徴点の実空間位置が算出できるものであれば良い。
【００５３】
図５に示すデータにより、情報処理装置１は、本実施例におけるキャリブレーション処理の進行の制御、およびキャリブレーション処理の進行状況や結果の把握を行なうことができる。
【００５４】
図４の説明に戻ると、ステップＳ４０１の処理は、検出部１１２が、結果情報（カメラ２−１）１２２３の値が「未処理」の画像を１つ選択する処理とも言える。
【００５５】
その後、検出部１１２は、ステップＳ４０１で選択された画像から、格子パターンに対応する特徴点を検出する（ステップＳ４０２）。特徴点の検出は、例えば、格子パターンの形状に基づくパターンマッチング等の画像処理により実現可能であるが、具体的な手法はパターンマッチングに限定されなくとも良い。
【００５６】
そして、判定部１１３は、ステップＳ４０２で実行された特徴点の検出結果を判定する（ステップＳ４０３）。例えば、格子パターンに基づいて検出され得る数（図３の平板３００であれば９５点）と同一数の特徴点がステップＳ４０２で検出された場合、判定部１１３は検出が成功したと判定する。一方、ステップＳ４０２で検出された特徴点の数が、格子パターンに基づいて検出され得る数と一致しない（検出され得る数より少ない）場合、判定部１１３は、検出が失敗したと判定する。
【００５７】
検出が失敗したと判定された場合（ステップＳ４０３、ＮＯ）、判定部１１３は、ステップＳ４０１で選択された画像について、検出が失敗した旨の結果を記録する。具体的には、判定部１１３は、管理情報記憶部１２２に記憶される、ステップＳ４０１で選択された画像についての結果情報（カメラ２−１）１２２３の値を「失敗」に更新する（ステップＳ４０４）。これにより、ステップＳ４０１で選択された画像については検出が失敗した旨、およびステップＳ４０１で選択された画像が処理済（ステップＳ４０２の処理を実行済み）である旨が管理情報記憶部１２２に記憶されることとなる。
【００５８】
一方、検出が成功したと判定された場合（ステップＳ４０３、ＹＥＳ）、判定部１１３は、ステップＳ４０１で選択された画像について、検出が成功した旨の結果を記録する。具体的には、判定部１１３は、管理情報記憶部１２２に記憶される、ステップＳ４０１で選択された画像についての結果情報（カメラ２−１）１２２３の値を「成功」に更新する（ステップＳ４０５）。これにより、ステップＳ４０１で選択された画像については検出が成功した旨、およびステップＳ４０１で選択された画像が処理済（ステップＳ４０２の処理を実行済み）である旨が管理情報記憶部１２２に記憶されることとなる。
【００５９】
ステップＳ４０４またはＳ４０５の処理が実行された後、検出部１１２は、ステップＳ４０１で、対象となる全ての画像が処理済であるか否かを判定する（ステップＳ４０６）。未処理の画像が存在する（結果情報（カメラ２−１）１２２３のデータ列に「未処理」の値が存在する）場合（ステップＳ４０６、ＮＯ）、ステップＳ４０１に戻り、情報処理装置１は、未処理の画像を１つ選択して、上述した一連の処理を繰り返し実行する。
【００６０】
一方、対象となる全ての画像が処理済である場合（ステップＳ４０６、ＹＥＳ）、キャリブレーション実行部１１４は、特徴点の検出が成功した画像（結果情報（カメラ２−１）１２２３の値が「成功」である画像）を用いて、カメラ２−１についてのキャリブレーションを実行する（ステップＳ４０７）。キャリブレーションが実行されることにより、カメラ２−１についての内部パラメータと外部パラメータが取得される。キャリブレーション実行部１１４は、キャリブレーションによって取得された内部パラメータと外部パラメータを、パラメータ情報記憶部１２４に記憶する。なお、カメラキャリブレーションにおいては、導出されるカメラパラメータの精度を考慮すると、特徴点の検出が成功した画像が複数存在する（言い換えれば、キャリブレーションに利用可能な画像が複数パターン存在する）ことが望ましい。そこで、ステップＳ４０７の実行前に、キャリブレーション実行部１１４は、特徴点の検出が成功した画像の数が所定以上（例えば３つ以上）であるか否かを判定し、検出が成功した画像の数が所定以上である場合にキャリブレーションを実行することとしても良い。
【００６１】
ステップＳ４０７が実行された後、図４に示す一連の処理は終了する。
【００６２】
〔キャリブレーション処理（第１段階）における問題〕
図６は、図４に示す一連の処理（少なくともステップＳ４０６がＹＥＳの判定となる段階まで）が実行された場合の、管理情報記憶部１２２に記憶されるデータの例を示す図である。なお、図６においては、前述したカメラ２−１についての処理と同様の要領で、カメラ２−１についても、図４に示す一連の処理が実行されているものとする。
【００６３】
例えば、図６の結果情報（カメラ２−１）１２２３に着目すると、１０画像中の３画像について、特徴点の検出が成功している。特徴点の検出が成功している画像が取得されているので、キャリブレーションによってカメラ２−１についてのカメラパラメータを取得するための最低限の要件は満たしている。
【００６４】
しかしながら、取得されるカメラパラメータの精度向上の観点では、より多く、より多岐にわたる実空間の位置において特徴点が検出されている方が精度の向上が期待できる。すなわち、特徴点の検出が成功した画像が多い方が、カメラパラメータの精度はより高められると考えられる。しかし、図６の場合では、３画像の成功に対して、７画像の検出が失敗しているため、カメラパラメータの精度が十分に確保できない恐れがある。
【００６５】
画像における特徴点の検出に失敗する理由としては、少なくとも２つの理由が考えられる。
【００６６】
１つ目の理由は、画像内にそもそも平板３００が写っていないことである。例えば、カメラ２−１、２−２の２台のカメラを用いて全天球画像の撮影を行なう場合、キャリブレーションにおいて一方のカメラの視野の中央付近に平板３００が写る場合には、他方のカメラにおいて平板３００は視野外であることが考えられる。ただし、この場合においては、そもそも平板３００がカメラの視野外であることに起因する失敗であり、平板３００が視野内に写っているカメラの画像において特徴点の検出ができていれば問題にはならない。例えば、カメラ２−１について、図６における撮影時刻Ｔ３、Ｔ６、Ｔ１０における特徴点検出の失敗は、１つ目の理由に起因する失敗と考えられる。
【００６７】
２つ目の理由は、画像内に平板３００の全体は写っているものの検出ができない場合である。
【００６８】
図７Ａ、図７Ｂは、いずれも画像内に平板３００の全体が写っている画像の例である。魚眼レンズのような視野角の広いレンズを有するカメラで撮影した画像は、レンズへの入射角が大きい領域（画像における外側に近い領域）になるほど、画像に歪みが大きくなる特性を持つ。この特性のために、実空間における平板３００が設置された領域の魚眼レンズ２１−１に対する入射角、言い換えれば、実空間における平板３００の設置位置に応じて、撮影された画像における平板３００の変形（歪み）の度合いが大きく変動する。
【００６９】
図７Ａの画像の場合、図７Ｂの画像よりも画像中の平板３００の位置は画像の中央の領域に近い、すなわち魚眼レンズ２１−１に対する入射角が小さい。この場合、画像における平板３００の歪みは比較的小さく、パターンマッチング等の画像処理によって特徴点の検出が成功する見込みは高い。一方、図７Ａの画像よりも画像中の平板３００の位置が外側の領域になる、すなわち魚眼レンズ２１−１に対する入射角が大きい図７Ｂでは、画像において平板３００の形状が大きく変形している（ひずみが大きい）。この場合、画像上の平板３００の形状が実際の平板３００に対して大きく異なるため、特徴点の検出が困難となる。
【００７０】
したがって、平板３００の位置が画像における外側の領域に位置する画像において特徴点の検出が失敗してしまう結果、特に画像における外側の領域に対応するキャリブレーションが十分に行なわれない事態が発生する。端的に言うと、キャリブレーションにより取得されるカメラパラメータの精度低下が生じる。
【００７１】
特に、カメラ２−１、２−２の２台のカメラを用いて全天球画像の撮影を行なう場合、上記の２つ目の理由による特徴点の検出失敗が問題になると考えられる。２つのカメラの双方において平板３００を視野内に写そうとすると、図８に図示するように、２つのカメラのいずれにおいても平板３００が画像における外側の領域に位置することとなってしまうためである。このとき、カメラ２−１、２−２の２台のカメラ双方において、カメラ画像に平板３００が含まれているにも拘らず、画像の歪みのために特徴点の検出が失敗してしまう可能性が高い。例えば、カメラ２−１（およびカメラ２−２）について、図６における撮影時刻Ｔ２、Ｔ４、Ｔ７、Ｔ９における特徴点検出の失敗は、１つ目の理由に起因する失敗と考えられる。
【００７２】
上記の問題を鑑み、本実施例においては、後述するキャリブレーション処理（第２段階）が実行される。
【００７３】
〔キャリブレーション処理（第２段階）〕
図９Ａおよび図９Ｂは、キャリブレーション処理（第２段階）の一連の処理の流れを示すフローチャートである。なお、説明においては、キャリブレーション処理（第１段階）の説明と同様に、一旦、カメラ２−１、およびカメラ２−１を用いて撮影された画像に着目して説明を行なう。
【００７４】
まず、検出部１１２は、結果情報（カメラ２−１）１２２３のデータ列中の「失敗」のデータ値を全て、「未処理」に更新（変更）する（ステップＳ９０１）。ただし、ステップＳ９０１の処理は、後述するステップＳ９０４の処理が実行されていない結果、データ値が「失敗」となっているケース（ケース１）と、ステップＳ９０４における検出結果が失敗であるためにデータ値が「失敗」となっているケース（ケース２）とを区別するための処理である。上記のケース１とケース２とが区別可能になるのであれば、ステップＳ９０１の処理は例示と異なる処理に代替されても構わない。また、キャリブレーション処理（第１段階）における特徴点検出の成功、失敗によらず、全ての画像についてキャリブレーション処理（第２段階）が実行されることとしても良い。その場合、ステップＳ９０１においては、検出部１１２は、結果情報（カメラ２−１）１２２３のデータ列中のデータ値を全て、「未処理」に更新する。
【００７５】
次に、検出部１１２は、カメラ画像記憶部１２１に記憶された、カメラ２−１を用いて撮影された画像の中から、未処理の画像を１つ選択する（ステップＳ９０２）。ここで、未処理の画像とは、後述するステップＳ９０４の処理が実行されていない画像である。ステップＳ９０２の処理は、検出部１１２が、結果情報（カメラ２−１）１２２３の値が「未処理」の画像を１つ選択する処理とも言える。
【００７６】
その後、補正処理部１１５は、ステップＳ９０２で選択された画像に対する補正処理を実行する（ステップＳ９０３）。補正処理とは、選択された画像における、画像の歪みを除去または低減させる処理である。補正処理は、例えば、ステップＳ９０２で選択された画像と、キャリブレーション処理（第１段階）において取得されたカメラ２−１の内部パラメータとを用いて正距円筒図を生成する処理である。なお、以降の説明では、正距円筒図を含め、補正処理の結果生成された画像を「補正画像」と記載することがある。
【００７７】
図１０に、図７Ｂの画像に対応する補正画像の一例を示す。例えば、補正処理部１１５は、図７Ｂにおける直線７０１が正距円筒図における赤道となるように、図７Ｂの画像に対応する正距円筒図の画像（補正画像１０００）を生成する。図７Ｂにおける直線７０１上の座標は、図１０の直線１００１（補正画像１０００における赤道）上に位置する。なお、図１０における網掛け部分の領域は、図７Ｂの画像の視野外となる領域であり、図７Ｂの画像においては撮影されていない領域である。
【００７８】
ここで、図７Ｂにおける直線７０１は、図７Ｂにおける画像の平板３００の中央部分またはその近傍を通る直線である。補正処理部１１５が、直線７０１のようなカメラ画像中の平板３００の中心を通るような直線を特定し、正距円筒図における赤道とすることで、平板３００が赤道付近に位置するような正距方位図を生成することができる。正距方位図における赤道付近の領域は、特に画像の歪みを小さく抑えることができるため、補正処理の効果をより高めることができる。
【００７９】
カメラ画像（補正前）中の平板３００の中心位置は、例えば、画像処理等によって、補正処理部１１５が、カメラ画像（補正前）中の平板３００の概形を特定し、特定した概形の中心を平板３００の中心位置と決定することとしても良い。ただし、この際に決定される中心位置は、厳密に平板３００の中心であることは必須でなく、おおよその中心位置が特定可能であれば良い。正距方位図における平板３００の画像の歪みを小さく抑えるという点においては、平板３００の位置が赤道の近傍であれば、歪みの抑制効果が十分に期待できるためである。
【００８０】
図１０に示されるように、補正画像１０００における平板３００は、図７Ｂにおける画像の平板３００と比較して、画像の歪みが軽減されている。したがって、補正前の画像では検出されなかった特徴点が、補正後の画像では検出可能となる可能性が高い。特に、正距円筒図の生成による補正処理では、図７Ｂに示されるような平板３００の湾曲的な歪みが大きく軽減されることが見込まれる。パターンマッチングによる特徴点検出においては、湾曲的な歪みの影響が大きい一方、ホモグラフィ変換等を用いることで縦横比の変動や直線的な変形には比較的頑健である。そのため、特徴点検出の可能性を大きく高めることができると考えられる。補正処理部１１５は、例えば、生成した補正画像を、以降の処理のために、補正画像記憶部１２３に記憶することとしても良い。
【００８１】
図９Ａの説明に戻り、ステップＳ９０３の補正処理を実行後、検出部１１２は、補正画像から、格子パターンに対応する特徴点を検出する（ステップＳ９０４）。特徴点の検出は、例えば、格子パターンの形状に基づくパターンマッチング等の画像処理により実現可能であるが、具体的な手法はパターンマッチングに限定されなくとも良い。
【００８２】
そして、判定部１１３は、ステップＳ９０４で実行された特徴点の検出結果を判定する（ステップＳ９０５）。例えば、格子パターンに基づいて検出され得る数（図３の平板３００であれば９５点）と同一数の特徴点がステップＳ９０４で検出された場合、判定部１１３は検出が成功したと判定する。一方、ステップＳ９０４で検出された特徴点の数が、格子パターンに基づいて検出され得る数と一致しない（検出され得る数より少ない）場合、判定部１１３は、検出が失敗したと判定する。
【００８３】
検出が失敗したと判定された場合（ステップＳ９０５、ＮＯ）、判定部１１３は、ステップＳ９０２で選択された画像について、検出が失敗した旨の結果を記録する（ステップＳ９０６）。具体的には、判定部１１３は、管理情報記憶部１２２に記憶される、ステップＳ９０２で選択された画像についての結果情報（カメラ２−１）１２２３の値を「失敗」に更新する。これにより、ステップＳ９０２で選択された画像については検出が失敗した旨、およびステップＳ９０２で選択された画像が処理済（ステップＳ９０４の処理を実行済み）である旨が管理情報記憶部１２２に記憶されることとなる。
【００８４】
一方、検出が成功したと判定された場合（ステップＳ９０５、ＹＥＳ）、判定部１１３は、ステップＳ９０２で選択された画像について、検出が成功した旨の結果を記録する（ステップＳ９０７）。具体的には、判定部１１３は、管理情報記憶部１２２に記憶される、ステップＳ９０２で選択された画像についての結果情報（カメラ２−１）１２２３の値を「成功」に更新する。これにより、ステップＳ９０２で選択された画像については検出が成功した旨、およびステップＳ９０２で選択された画像が処理済（ステップＳ９０４の処理を実行済み）である旨が管理情報記憶部１２２に記憶されることとなる。
【００８５】
ステップＳ９０６またはＳ９０７の処理が実行された後、検出部１１２は、ステップＳ９０２で、対象となる全ての画像が処理済であるか否かを判定する（ステップＳ９０８）。未処理の画像が存在する（結果情報（カメラ２−１）１２２３のデータ列に「未処理」の値が存在する）場合（ステップＳ９０８、ＮＯ）、ステップＳ９０２に戻り、情報処理装置１は、未処理の画像を１つ選択して、上述した一連の処理を繰り返し実行する。
【００８６】
一方、対象となる全ての画像が処理済である場合（ステップＳ９０８、ＹＥＳ）、検出部１１２は、ステップＳ９０４において特徴点の検出が成功した補正画像中の特徴点に対応する、未補正画像上の座標を特定する（ステップＳ９０９、図においては図９Ａから図９Ｂに移行）。ステップＳ９０３の処理の過程において、未補正画像上の座標と補正画像上の座標との対応関係は特定されており、かつ、可逆的な変換が可能である。したがって、補正画像において特徴点の座標が特定できれば、ステップＳ９０４の処理の逆変換に相当する処理によって、特徴点に対応する未補正画像上の座標が特定できる。
【００８７】
ステップＳ９０９の実行後、キャリブレーション実行部１１４は、特徴点の検出が成功した画像（結果情報（カメラ２−１）１２２３の値が「成功」である画像）を用いて、カメラ２−１についてのキャリブレーションを実行する（ステップＳ９１０）。なお、ステップＳ９１０においては、キャリブレーション処理（第１段階）で特徴点の検出が成功した画像と、キャリブレーション処理（第２段階）で特徴点の検出が成功した画像の両方を用いてカメラキャリブレーションが実行できる。
【００８８】
キャリブレーションが実行されることにより、カメラ２−１についての内部パラメータと外部パラメータが取得される。キャリブレーション実行部１１４は、キャリブレーションによって取得された内部パラメータと外部パラメータを、パラメータ情報記憶部１２４に記憶する。言い換えれば、キャリブレーション実行部１１４は、カメラ２−１についての内部パラメータと外部パラメータを更新しているとも言える。なお、キャリブレーション処理（第１段階）において取得された内部パラメータと外部パラメータは、ステップＳ９１０において、パラメータ情報記憶部１２４から消去（上書き）されることとしても良いし、ステップＳ９１０が実行された後、図４に示す一連の処理は終了する。
【００８９】
図１１は、図９Ａ、図９Ｂに示す一連の処理（少なくともステップＳ９０８がＹＥＳの判定となる段階まで）が実行された場合の、管理情報記憶部１２２に記憶されるデータの例を示す図である。なお、図１１においては、前述したカメラ２−１についての処理と同様の要領で、カメラ２−１についても、図９Ａ、図９Ｂに示す一連の処理が実行されているものとする。
【００９０】
図６と図１１それぞれに示される状態の比較を行なうと、キャリブレーション処理（第２段階）により、例えば、撮影時刻Ｔ２、Ｔ４、Ｔ７、Ｔ９において失敗していた特徴点の検出が可能（成功）となっていることが分かる。つまり、カメラ画像の歪みに起因する（上述した２つ目の理由による）と考えられる特徴点検出の失敗が抑制されていることが分かる。
【００９１】
結果として、カメラ２−１、２−２それぞれについて、特徴点検出の成功率が、本実施例の例示においては３０％から７０％に上昇する。これにより、キャリブレーションにより取得されるカメラパラメータの精度を向上させることができる。
【００９２】
〔全天球画像の取得に関する技術的効果〕
図１１の撮影時刻Ｔ２、Ｔ４、Ｔ７、Ｔ９のように、カメラ２−１、２−２の双方において特徴点の検出が可能となることは、全天球画像の取得のためのキャリブレーションにおいても技術的効果を有する。
【００９３】
全天球画像の取得においては、カメラ２−１、２−２それぞれで取得された画像の統合が必要となる。画像の統合のためには、カメラキャリブレーションの際に、カメラ２−１、２−２それぞれの位置関係を特定しておく必要がある。具体的には、下記の条件を満たすカメラ２−１で取得した画像とカメラ２−２で取得した画像の組を用いてカメラキャリブレーションを実行し、それぞれのカメラについての外部パラメータを取得する必要がある。
条件１：画像取得時における平板３００の実空間における位置が同一である。
条件２：カメラ２−１で取得した画像とカメラ２−２で取得した画像の双方について、平板３００（の全体）が視野内にある（画像に写っている）。
【００９４】
そして、取得されたカメラ２−１とカメラ２−２それぞれについての外部パラメータを元に、相対的な外部パラメータを求める必要がある。
【００９５】
上記の条件１、２を満たす画像においては、カメラ２−１とカメラ２−２の双方にとって、レンズへの入射角が大きい領域（画像における外側に近い領域）に平板３００が位置することとなる。つまり、「キャリブレーション処理（第１段階）における問題」にて述べた２つ目の理由に起因して特徴点の検出に失敗する可能性の高い状態であると言える。
【００９６】
これに対して、本実施例において説明した処理によれば、上述の２つ目の理由に起因する特徴点検出の失敗が抑制可能である。そのため、本実施例で例示したような、魚眼レンズを搭載したカメラ２台に対して、カメラキャリブレーションを実行し、２台のカメラそれぞれの外部パラメータを取得することが可能となる。そして、このとき取得された２台のカメラの外部パラメータの差分によって、情報処理装置１は、実空間におけるカメラ２−１とカメラ２−２との、実空間における位置および姿勢（向き）の差分を特定することができる。つまり、情報処理装置１は、カメラ２−１とカメラ２−２との間の相対的な外部パラメータを取得することができる。
【００９７】
〔その他の変形例〕
本実施例で説明した態様については、種々の変形を採用することが可能である。
【００９８】
例えば、本実施例においては、カメラ２−１、カメラ２−２のそれぞれについて、キャリブレーション処理（第１段階）を実行することとしている。ただし、例えば、カメラ２−１、カメラ２−２の型番や型式が同一の場合、２台のカメラの内部パラメータは類似または同一となることが考えられる。そこで、例えば、情報処理装置１は、カメラ２−１→カメラ２−２の順でキャリブレーションを実行する場合は、カメラ２−２についてのキャリブレーション処理（第１段階）を省略しても良い。そして、情報処理装置１は、カメラ２−１についてのキャリブレーション処理（第１段階）で取得されたカメラパラメータ（内部パラメータ）を用いて、カメラ２−２についての画像の補正処理を実行することとしても良い。
【００９９】
また、例えば、本実施例においては、情報処理装置１が、キャリブレーション処理（第２段階）の補正処理に用いる内部パラメータを、キャリブレーション処理（第１段階）を実行することで取得することとしている。ただし、本実施例で使用されるカメラの型式、型番について、基準値となるパラメータ（カメラの個体差を考慮しない、パラメータの参考値など）が与えられていれば、基準値となるパラメータに含まれる内部パラメータを利用して、キャリブレーション処理（第２段階）の補正処理が実行されることとしても良い。
【０１００】
これらの変形例においては、複数台のカメラについてのキャリブレーション処理を実行に要する処理負荷の軽減を図ることができる。
【０１０１】
本実施例において説明した補正処理も、画像の歪みを低減可能な可逆変換処理であれば、必ずしも正距円筒図を用いた補正処理に限定されなくとも良い。また、正距円筒図を用いた補正処理においても、種々の変形例が採用可能である。例えば、図１２は、正距円筒図における赤道の設定についての変形例を示す図である。図１２のように、平板３００を通過する線１２０１が正距円筒図における赤道となるように設定することでも、平板３００が赤道付近に位置するような正距方位図を生成することができる。
【０１０２】
図１３Ａは、図１２を用いて説明した赤道の設定に基づいて生成した正距方位図の例である。図１３Ａでは、図中の赤道１３０１の近傍に図１３Ａにおいてもまた、画像における平板３００の歪みが図１２よりも軽減されていることが分かる。なお、図１０と同様に、図１３Ａにおける網掛け部分の領域は、図１２の画像の視野外となる領域であり、図１２の画像においては撮影されていない領域を示す。
また、このとき、例えば図１２の直線１２０２を正距方位図における画像の中心の経度に対応する線（例えば、正距方位図における画像の両端を東経・西経１８０度とした場合の経度０度線）としてもよい。これにより、正距方位図を生成した場合に、平板３００が図１３Ｂのように、画像上分断されてしまうことを防ぐことができる。例として、正距方位図における画像の中心の経度に対応する線は、図１２では直線１２０２、図１３Ａでは赤道１３０１で示されている。なお、これらの変形例においても、補正処理の目的が達成できる範囲において、正距方位図における赤道や画像の中心の経度に対応する線が、必ずしも平板３００の中心を通らなくとも良い。
【０１０３】
〔ハードウェア構成の例〕
図１４は、本実施例における情報処理装置１のハードウェア構成の一例である。
【０１０４】
情報処理装置１は、例えば、それぞれがバス１４０１で相互に接続された、ＣＰＵ（Central Processing Unit）１４０２、メモリ１４０３、記憶装置１４０４、ＮＩＣ１４０５、媒体読取装置１４０６、入力装置１４０７、表示装置１４０８、を備えるコンピュータである。
【０１０５】
ＣＰＵ１４０２は、情報処理装置１における種々の動作制御を行う。メモリ１４０３、記憶装置１４０４は、本実施例で説明した各種の処理を実行するプログラムや、各種の処理に利用される種々のデータを記憶する。記憶装置１４０４は、例えば、ＨＤＤ（Hard Disk Drive）や、ＳＳＤ（Solid State Drive）等の記憶媒体である。
【０１０６】
ＣＰＵ１４０２は、メモリ１４０３あるいは記憶装置１４０４に記憶されたプログラムを読み出して処理、制御を実行することで、図２に示す処理部１１０に含まれる各機能部が実現されても良い。また、メモリ１４０３、記憶装置１４０４のそれぞれは、例えば、図２に記載した記憶部１２０として機能することができる。なお、ＣＰＵ１４０２は、ＭＰＵ（Micro Processing Unit）、ＡＳＩＣ（Application Specific Integrated Circuit）などのハードウェア回路で代替されても良い。
【０１０７】
ＮＩＣ１４０５は、有線または無線のネットワークを介したデータの送受信に用いられるハードウェアである。ＮＩＣ１４０５は、ＣＰＵ１４０２の制御の下で、通信部１０１として機能することができる。
【０１０８】
媒体読取装置１４０６は、記録媒体からデータを読み取るための装置であり、例えば、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等のディスク媒体に記憶されたデータを読み取るディスクドライブや、メモリカードに記憶されたデータを読み取るカードスロット等である。前述した記憶部３００に記憶されるデータの一部または全部は、媒体読取装置１４０６を用いて読み取り可能な記録媒体に記憶されることとしても良い。
【０１０９】
入力装置１４０７は、ユーザー（システム管理者を含む）からの入力や指定を受け付ける装置である。入力装置１４０７の例としては、例えばキーボードやマウス、タッチパッドが挙げられる。表示装置１４０８は、ＣＰＵ１４０２の制御の下で、種々の情報の表示を行う。表示装置１４０８は、例えば液晶ディスプレイである。
【符号の説明】
【０１１０】
１  情報処理装置
２−１、２−２  カメラ
２１−１、２１−２  魚眼レンズ
１４０１  バス
１４０２  ＣＰＵ
１４０３  メモリ
１４０４  記憶装置
１４０５  ＮＩＣ
１４０６  媒体読取装置
１４０７  入力装置
１４０８  表示装置
【図１】
2019057864.tif 000003
【図２】
2019057864.tif 000004
【図３】
2019057864.tif 000005
【図４】
2019057864.tif 000006
【図５】
2019057864.tif 000007
【図６】
2019057864.tif 000008
【図７Ａ】
2019057864.tif 000009
【図７Ｂ】
2019057864.tif 000010
【図８】
2019057864.tif 000011
【図９Ａ】
2019057864.tif 000012
【図９Ｂ】
2019057864.tif 000013
【図１０】
2019057864.tif 000014
【図１１】
2019057864.tif 000015
【図１２】
2019057864.tif 000016
【図１３Ａ】
2019057864.tif 000017
【図１３Ｂ】
2019057864.tif 000018
【図１４】
2019057864.tif 000019