以下、本発明の実施形態について説明するが、本発明の実施形態は、以下に説明する実施形態に限定されるものではない。なお、以下の実施形態では、画像処理装置および撮像システムの一例として、2つの魚眼レンズを光学系に含む撮像体を備えるとともに、2つの魚眼レンズで自身が撮像した2つの部分画像に対し歪曲補正および射影変換を行い、画像つなぎ合わせを行って、全天球画像を生成する画像処理機能を備えた、全天球撮像システム10を用いて説明する。
[全体構成]
以下、図1〜図3を参照しながら、本実施形態による全天球撮像システムの全体構成について説明する。図1は、本実施形態による全天球撮像システム(以下、単に、撮像システムと参照する。)10を示す断面図である。図1に示す撮像システム10は、撮像体12と、上記撮像体12およびコントローラやバッテリなどの部品を保持する筐体14と、上記筐体14に設けられたシャッター・ボタン18とを備える。図1に示す撮像体12は、2つの結像光学系20A,20Bと、CCD(Charge Coupled Device)センサやCMOS(Complementary Metal Oxide Semiconductor)センサなどの2つの固体撮像素子22A,22Bとを含む。結像光学系20と固体撮像素子22とを1個ずつ組み合わせたものを撮像光学系と参照する。結像光学系20各々は、例えば6群7枚の魚眼レンズとして構成することができる。上記魚眼レンズは、図1に示す実施形態では、180度(=360度/n;n=2)より大きい全画角を有し、好適には、185度以上の画角を有し、より好適には、190度以上の画角を有する。
2つの結像光学系20A,20Bの光学素子(レンズ、プリズム、フィルタおよび開口絞り)は、固体撮像素子22A,22Bに対して位置関係が定められる。位置決めは、結像光学系20A,20Bの光学素子の光軸が、対応する固体撮像素子22の受光領域の中心部に直交して位置するように、かつ、受光領域が、対応する魚眼レンズの結像面となるように行われる。固体撮像素子22各々は、受光領域が面積エリアを成す2次元の固体撮像素子であり、組み合わせられる結像光学系20により集光された光を画像信号に変換する。
図1に示す実施形態では、結像光学系20A,20Bは、同一仕様のものであり、それぞれの光軸が合致するようにして、互いに逆向きに組み合わせられる。固体撮像素子22A,22Bは、受光した光分布を画像信号に変換して、図示しないコントローラ上の画像処理手段に出力する。画像処理手段では、詳細は後述するが、固体撮像素子22A,22Bからそれぞれ入力される部分画像をつなぎ合わせて合成し、立体角4πラジアンの画像(以下「全天球画像」と参照する。)を生成する。全天球画像は、撮影地点から見渡すことのできる全ての方向を撮影したものとなる。ここで、図1に示す実施形態では、全天球画像を生成しているが、水平面のみ360度を撮影した、いわゆるパノラマ画像であってもよい。
また、ここで、固体撮像素子22A,22Bの走査方向を、互いに一致させることで、各々の撮像画像をつなぎ合わせやすくすることができる。つまり、それぞれの固体撮像素子22の走査方向と順序を、互いにつなぎ合わせる部分で一致させることで、互いのカメラの境界にある物体、特に、移動物体のつなぎ合わせに効果が得られる。例えば、固体撮像素子22Aで撮影された撮像画像の左上の部分と、固体撮像素子22Bで撮影された撮像画像の左下の部分が、画像のつなぎ合わせる部分として一致する場合は、固体撮像素子22Aの走査は、固体撮像素子の上から下に向かって、右から左に走査する。一方、固体撮像素子22Bの走査は、固体撮像素子の下から上に向かって、右から左に走査する。このように、画像のつなぎ合わせる部分に基づいて、各固体撮像素子の走査方向を一致させるように制御することで、つなぎ合わせ易いという効果が得られる。
上述したように、魚眼レンズが180度を超える全画角を有するため、全天球画像を構成する際には、各撮像光学系による撮影画像において、重複する画像部分が、同一像を表す基準データとして画像つなぎ合わせの参考とされる。生成された全天球画像は、例えば、撮像体12に備えられる、または撮像体12に接続されているディスプレイ装置、印刷装置、SD(登録商標)カードやコンパクトフラッシュ(登録商標)などの外部記憶媒体などに出力される。
図2は、本実施形態による撮像システム10のハードウェア構成を示す。撮像システム10は、デジタル・スチルカメラ・プロセッサ(以下、単にプロセッサと参照する。)100と、鏡胴ユニット102と、プロセッサ100に接続される種々のコンポーネントから構成される。鏡胴ユニット102は、上述した2組のレンズ光学系20A,20Bと、固体撮像素子22A,22Bとを有する。固体撮像素子22は、プロセッサ100内の後述するCPU130からの制御指令により制御される。
プロセッサ100は、ISP(Image Signal Processor)108と、DMAC(Direct Memory Access Controller)110と、メモリアクセスの調停のためのアービタ(ARBMEMC)112と、メモリアクセスを制御するMEMC(Memory Controller)114と、歪曲補正・画像合成ブロック118とを含む。ISP108A,108Bは、それぞれ、固体撮像素子22A,22Bの信号処理を経て入力された画像データに対し、ホワイト・バランス設定やガンマ設定を行う。MEMC114には、SDRAM116が接続される。SDRAM116には、ISP108A,180Bおよび歪曲補正・画像合成ブロック118において処理を施す際にデータが一時的に保存される。歪曲補正・画像合成ブロック118は、2つの撮像光学系から得られた2つの部分画像に対し、3軸加速度センサ120からの情報を利用して、歪曲補正とともに天地補正を施し、画像合成する。
プロセッサ100は、さらに、DMAC122と、画像処理ブロック124と、CPU130と、画像データ転送部126と、SDRAMC128と、メモリカード制御ブロック140と、USBブロック146と、ペリフェラル・ブロック150と、音声ユニット152と、シリアルブロック158と、LCD(Liquid Crystal Display)ドライバ162と、ブリッジ168とを含む。
CPU130は、当該撮像システム10の各部の動作を制御する。画像処理ブロック124は、リサイズブロック132、JPEGブロック134、H.264ブロック136などを用いて、画像データに対し各種画像処理を施す。リサイズブロック132は、画像データのサイズを補間処理により拡大または縮小するためのブロックである。JPEGブロック134は、JPEG圧縮および伸張を行うコーデック・ブロックである。H.264ブロック136は、H.264などの動画圧縮および伸張を行うコーデック・ブロックである。画像データ転送部126は、画像処理ブロック124で画像処理された画像を転送する。SDRAMC128は、プロセッサ100に接続されるSDRAM138制御し、SDRAM138には、プロセッサ100内で画像データに各種処理を施す際に、画像データを一時的に保存する。
メモリカード制御ブロック140は、メモリカードスロット142に挿入されたメモリカードおよびフラッシュROM144に対する読み書きを制御する。メモリカードスロット142は、撮像システム10にメモリカードを着脱可能に装着するためのスロットである。USBブロック146は、USBコネクタ148を介して接続されるパーソナル・コンピュータなどの外部機器とのUSB通信を制御する。ペリフェラル・ブロック150には、電源スイッチ166が接続される。音声ユニット152は、ユーザが音声信号を入力するマイク156と、記録された音声信号を出力するスピーカ154とに接続され、音声入出力を制御する。シリアルブロック158は、パーソナル・コンピュータなどの外部機器とのシリアル通信を制御し、無線NIC(Network Interface Card)160が接続される。LCDドライバ162は、LCDモニタ164を駆動するドライブ回路であり、LCDモニタ164に各種状態を表示するための信号に変換する。
フラッシュROM144には、CPU130が解読可能なコードで記述された制御プログラムや各種パラメータが格納される。電源スイッチ166の操作によって電源がオン状態になると、上記制御プログラムがメインメモリにロードされる。CPU130は、メインメモリに読み込まれたプログラムに従って、装置各部の動作を制御するとともに、制御に必要なデータをSDRAM138と、図示しないローカルSRAMとに一時的に保存する。
図3は、本実施形態による撮像システム10における画像処理全体の流れを示す図である。まず、ステップS101A,101Bでは、固体撮像素子22A,22B各々によって、画像が撮像される。ステップS102A,102Bでは、固体撮像素子22A,22B各々から出力されたベイヤーRAWの画像に対し、図2に示したISP108により、オプティカル・ブラック補正処理、欠陥画素補正処理、リニア補正処理、シェーディング処理および領域分割平均処理が行われる。ステップS103A,103Bでは、メモリに保存される。ステップS104A,104Bでは、図2に示したISP108により、さらに、ホワイト・バランス処理、ガンマ補正処理、ベイヤー補間処理、YUV変換処理、エッジ強調処理および色補正処理が行われ、ステップS105A,105Bで、メモリに保存される。
2つの固体撮像素子22A,22B各々について上述した処理が完了すると、ステップS106では、上記処理が施された各部分画像に対し、歪曲補正および合成処理が行われる。ステップS107では、適宜タグ付けされて、全天球画像が内蔵メモリまたは外部ストレージにファイル保存される。また、上記歪曲補正および合成処理の過程では、適宜、3軸加速度センサ120からの情報を得て傾き天地補正が行われてもよい。また、保存される画像ファイルには、適宜圧縮処理が施されても良い。
[全天球画像合成機能]
以下、図4〜図21を参照しながら、本実施形態による撮像システム10が備える全天球画像合成機能について詳細を説明する。図4は、本実施形態による撮像システム10上に実現される全天球画像合成処理の主要な機能ブロック200を示す。歪曲補正・画像合成ブロック118は、図4に示すように、位置検出用歪み補正部202と、つなぎ位置検出部204と、テーブル修正部206と、テーブル生成部208と、画像合成用歪み補正部210と、画像合成部212とを含み構成される。
また、歪曲補正・画像合成ブロック118には、2つの固体撮像素子22A,22Bから、ISP108A,108Bによる各画像信号処理を経て、2つの部分画像が入力される。ここで、固体撮像素子22A,22Bに対し「0」および「1」の番号を付して参照し、固体撮像素子22Aをソースとする画像を「部分画像0」のように参照し、固体撮像素子22Bをソースとする画像を「部分画像1」のように参照する。さらに、歪曲補正・画像合成ブロック118には、それぞれのレンズ光学系の設計データ等に基づいて、所定の投影モデルに従い製造元等で予め作成された、位置検出用変換テーブル220が提供される。
位置検出用歪み補正部202は、つなぎ位置検出処理の前段の処理として、入力される部分画像0および部分画像1に対し、位置検出用変換テーブル220を用いて歪み補正を施し、位置検出用補正画像(以下、単に補正画像と参照する場合がある。)0および位置検出用補正画像1を生成する。入力される部分画像0,1は、受光領域が面積エリアを成す2次元の固体撮像素子で撮像されたものであり、平面座標系(x,y)で表現された画像データとなる。これに対し、位置検出用変換テーブル220を用いて歪み補正がかけられた補正画像は、入力画像とは異なる座標系の画像データであり、より具体的には、球面座標系(動径を1とし、2つの偏角θ,φを有する極座標系である。)で表現された全天球画像フォーマットの画像データとなる。
図6は、魚眼レンズを用いた撮像システムにおける射影関係を説明する図である。本実施形態において、1つ魚眼レンズで撮影された画像は、撮影地点から概ね半球分の方位を撮影したものとなる。また、魚眼レンズは、図6に示すように、光軸に対する入射角度φに対応した像高hで画像生成される。像高hと、入射角度φとの関係は、所定の投影モデルに応じた射影関数で決定される。射影関数は、魚眼レンズの性質によって異なるが、等距離射影方式と呼ばれる投影モデルの魚眼レンズでは、fを焦点距離として、下記式(1)で表現される。
上記投影モデルとしては、その他、中心投影方式(h=f・tanφ)、立体射影方式(h=2f・tan(φ/2))、等立体角射影方式(h=2f・sin(φ/2))および正射影方式(h=f・sinφ)を挙げることができる。いずれの方式においても、光軸からの入射角度φと焦点距離fとに対応して結像の像高hが決定される。また、本実施形態では、画像対角線よりもイメージサークル径が小さな、いわゆる円周魚眼レンズの構成を採用するものとし、得られる部分画像は、図6(B)に示すように、撮影範囲の概ね半球分が投影されたイメージサークル全体を含む平面画像となる。
図7は、本実施形態で用いられる全天球画像フォーマットの画像データのデータ構造を説明する図である。図7に示すように、全天球画像フォーマットの画像データは、所定の軸に対するなす角度に対応する垂直角度φと、上記軸周りの回転角に対応する水平角度θとを座標とした画素値の配列として表現される。水平角度θは、0〜360度(−180度〜+180度とも表現できる。)の範囲となり、垂直角度φは、0〜180度(同様に−90度〜+90度とも表現できる。)の範囲となる。各座標値(θ,φ)は、撮影地点を中心とした全方位を表す球面上の各点と対応付けられており、全方位が全天球画像上にマッピングされる。魚眼レンズで撮影された画像の平面座標と、全天球画像フォーマットの球面上の座標との関係は、図6で説明したような射影関数を用いることによって対応付けることができる。
図8は、位置検出用歪み補正部202および画像合成用歪み補正部210が参照する変換データを説明する図である。変換テーブル220,224は、平面座標系で表現される部分画像から、球面座標系で表現される画像への射影を規定する。変換テーブル220,224は、図8(A)および(B)に示すように、各魚眼レンズ毎に、補正後画像の座標値(θ,φ)と、該座標値(θ,φ)にマッピングされる補正前の部分画像の座標値(x、y)とを対応付ける情報を、全座標値(θ,φ)(θ=0,・・・360度,φ=0,・・・,180度)に対して保持する。図8の例示では、1画素が担当する角度は、φ方向およびθ方向いずれも1/10度であり、変換テーブル220,224は、各魚眼レンズについて、3600×1800の対応関係を示す情報を有することになる。
つなぎ位置検出で使用する位置検出用変換テーブル220は、事前に製造元等で、レンズ設計データなどを元に、図6で説明したレンズの射影関係に基づき、放射歪曲および偏心歪曲等に起因した理想的なレンズモデルからの歪みを補正した上で計算され、テーブル化されたものである。これとは対照的に、画像合成用変換テーブル224は、詳細は後述するが、位置検出用変換テーブル220から所定の変換処理よって生成されるものである。なお、説明する実施形態では、変換データは、座標値の対応関係がテーブル化されたデータとしている。しかしながら、他の実施形態では、変換データは、平面座標系で表現される部分画像(x,y)から、球面座標系で表現される画像(θ,φ)への射影を規定する1または複数の関数の係数データとしてもよい。
再び図4を参照すると、位置検出用歪み補正部202は、位置検出用変換テーブル220を参照して、部分画像0および部分画像1を変換し、位置検出用補正画像0および位置検出用補正画像1を生成する。より具体的には、位置検出用歪み補正部202は、変換後の補正画像の全座標値(θ,φ)について、位置検出用変換テーブル220を参照し、各座標値(θ,φ)にマッピングされる変換前の部分画像の座標値(x,y)を求め、該座標値(x,y)の部分画像における画素値を参照する。これによって、補正画像が生成される。
図9は、位置検出処理の際における、2つの魚眼レンズで撮像された2つの部分画像の球面座標系へのマッピングを説明する図である。位置検出用歪み補正部202による処理の結果、魚眼レンズで撮像された2つの部分画像0,1は、図9に示すように、全天球画像フォーマット上に展開される。魚眼レンズ0により撮影された部分画像0は、典型的には、全天球のうちの概ね上半球にマッピングされ、魚眼レンズ1により撮影された部分画像1は、全天球のうちの概ね下半球にマッピングされる。全天球フォーマットで表現された補正画像0および補正画像1は、魚眼レンズの全画角が180度を超えるため、それぞれ半球からはみ出し、その結果、補正画像0および補正画像1を重ね合わせると、画像間で撮影範囲が重複する重複領域が発生する。
詳細を後述するように、位置検出用歪み補正部202による補正後は、つなぎ位置検出部204により、上記重複領域において、画像間のつなぎ位置が検出されることになる。本実施形態による位置検出用変換テーブル220では、図9に示すように、2つのレンズ光学系各々の光軸を球面の2つの極(φ=0度,180度)に射影するとともに、画像間の重複領域を球面の赤道近傍(φ=90度±((全画角−180度)/2))に射影するように作成される。球面座標系では、垂直角度φが0度または180度である極に近接するほど、歪みが大きくなり、つなぎ位置検出精度が劣化してしまう。これに対し、上述したような射影とすることによって、θ方向にずれたときの歪み量が小さな垂直角度90度付近に、重複領域を位置させて、つなぎ位置検出が行われることになり、つなぎ位置検出精度を向上させることができる。ひいては、歪みの大きなレンズ光学系で撮像された画像であっても、高い精度でつなぎ位置を検出することが可能となる。
ここで、再び図4を参照すると、つなぎ位置検出部204は、位置検出用歪み補正部202により変換された補正画像0,1の入力を受けて、パターンマッチング処理により、入力された補正画像0,1間のつなぎ位置を検出し、検出結果データ222を生成する。
パターンマッチングでは、典型的には、マッチングを行う対象領域が、その画像が平坦であったり、同じ模様が繰り返された領域であったりして特徴が少ないと、精度高くつなぎ位置を検出することが難しくなる。そこで、本実施形態によるつなぎ位置検出部204は、マッチングを行う対象領域の画像が有する特徴の程度を指標する特徴量を測定し、この測定された特徴量を用いて、対象領域のつなぎ位置を決定する構成を採用する。これにより、特徴の大きな領域で優先してつなぎ合わせを行って、得られる全天球画像の品質の向上を図っている。
図10は、図4に示した本実施形態によるつなぎ位置検出部の機能ブロックを示す図である。図10に示すつなぎ位置検出部204は、より詳細には、テンプレート生成部232と、テンプレート特徴量算出部234と、テンプレート順位付け部236と、仮位置算出部238と、探索範囲設定部240と、マッチング計算部242と、スコア補正部244と、つなぎ位置決定部246と、検出結果生成部248とを含み構成される。以下、テンプレート・マッチングによるつなぎ位置検出処理について説明するが、説明の便宜上、テンプレート側を位置検出用補正画像1とし、探索される側を位置検出用補正画像0とする。
テンプレート生成部232は、テンプレート・マッチングにおけるテンプレート用画像として位置検出用補正画像1を用い、位置検出用補正画像1から、それぞれ探索用画像内で探索する対象となる複数の画像(以下、テンプレート画像という。)を生成する。テンプレート・マッチングによるつなぎ位置検出処理では、それぞれ位置検出用補正画像1の一部分であるテンプレート画像各々に対し、位置検出用補正画像0へのつなぎ位置が求められる。ここでは、両補正画像0,1間の重複領域におけるつなぎ位置を目的としているので、位置検出用補正画像1全体のうちの重複領域の部分から複数のテンプレート画像が生成される。
テンプレート特徴量算出部234は、テンプレート生成部232により生成された複数のテンプレート画像各々に対し特徴量を算出する。ここで、特徴量とは、テンプレート画像が有する特徴の程度を定量する指標する値であり、本実施形態において、特徴量が大きいとは、画像に大きな特徴が認められることを意味し、特徴量が小さいとは、画像の特徴が少なく無個性であることを意味するものとする。特徴量としては、テンプレート画像から抽出されるエッジ量、テンプレート画像から算出される分散および標準偏差の少なくとも1つを用いることができるが、特に限定されるものではない。
図11は、特定の実施形態によるテンプレート特徴量算出部のブロック図を示す。図11(A)〜(C)は、エッジ量を指標とする実施形態によるテンプレート特徴量算出部234Aの構成を示す。これに対し図11(D)は、標準偏差または分散を指標とする実施形態によるテンプレート特徴量算出部234Bの構成を示す。
テンプレート画像の特徴量としてエッジ量を用いる場合は、図11(A)に示すようなエッジ強調を行うためのエッジ強調ブロックを用いることができる。図11(A)に示すエッジ強調ブロックは、エッジ抽出フィルタ部250と、ゲイン乗算部252と、LPF(Low-Pass Filter)部254とを含み構成される。エッジ強調ブロックでは、エッジ抽出フィルタ部250で抽出されたエッジ量に対しゲイン乗算部252でゲインを掛けてエッジ量を調整した信号が生成される。そして、調整された信号と、LPF部254で入力信号にLPF処理してノイズ除去した信号とを加算部256で足し合わせた信号が、エッジ強調された信号として出力される。
本実施形態では、エッジのみを抽出すればよい。このため、例えば図11(C)に示すようなLPF係数を用いることでLPF処理した信号をゼロにし、図11(B)に示すエッジ抽出フィルタ係数を用いてエッジ抽出フィルタ部250で抽出したエッジ量のみを出力させればよい。図11(A)に示すエッジ強調ブロックにテンプレート画像を入力することにより、各画素毎のエッジ量が出力される。テンプレート画像に対する特徴量としては、テンプレートの全画素のエッジ量の合計を用いてもよいし、エッジ量の平均としてもよい。テンプレート画像のエッジ合計量が大きいほど、画像に明るさが不連続に変化している箇所が多く含まれることを意味する。したがって、平坦な画像は、典型的には、エッジ量が小さくなり、特徴量が小さくなる。
テンプレート画像の特徴量として画像の標準偏差(または分散)を用いる場合は、図11(D)に示すような構成を備えることができる。図11(D)に示す標準偏差(または分散)計算部258は、テンプレート画像の標準偏差σ(または分散σ2)を下記算出式(2)で求める。なお、下記式(2)においては、テンプレート画像の総画素数をN(=W画素×H画素)とし、テンプレート画像の座標(i,j)における輝度をT(i,j)としている。テンプレート画像の標準偏差(または分散)が大きいほど、ヒストグラムにおいて輝度が広く分布していることを意味する。したがって、平坦な画像は、典型的には画像の輝度の分布が狭くなり、特徴量が小さくなる。
なお、テンプレート画像の特徴量として、標準偏差および分散を例示したが、テンプレート画像から求められる濃度ヒストグラムにおける尖度(ヒストグラムの分布が平均値周りに集中しているか裾の方へ広がっているかの程度を表す。)や歪度(ヒストグラムの形状が対称な形から歪んでいる程度を表す)などの濃度ヒストグラムに基づく指標、差分統計量に基づくコントラストなど他の統計的な指標を計算し、これらの指標を用いて、テンプレート画像を特徴付けてもよい。また、上述した説明では、輝度値を用いて特徴量を計算するものとして説明したが、RGBの各色毎に特徴量を計算し、その総和としてテンプレート画像の特徴量を計算してもよい。エッジ量や標準偏差、分散などの特徴量は、目的とする画像から簡単に算出することができ、演算コストが少なく、良好な検出結果が得られることから、好適である。しかしながら、これに限定されるものではなく、画像が有する特徴の程度を指標する如何なる指標値を採用することができる。
再び図10を参照すると、テンプレート順位付け部236は、テンプレート特徴量算出部234で算出された特徴量に基づいて、複数のテンプレート画像の処理の順序を順位付けし、テンプレート画像間の特徴量の相対的な関係を規定する。
仮位置算出部238は、生成された複数のテンプレート画像のうちの、注目する注目テンプレート画像について、後述するテンプレート・マッチング処理の基準とする仮位置を算出する。ここでは、注目テンプレート画像と、その位置検出用補正画像1上でその周辺にある周辺テンプレート画像各々との間の特徴量の相対的な関係に基づいて仮位置が算出される。
テンプレート・マッチングは、テンプレート画像を、探索する対象となる探索用画像の中から探索する処理であるが、ある程度テンプレート画像に対応する領域が特定されている場合は、探索用画像中の探索範囲を限定することができる。探索範囲設定部240は、上記注目テンプレート画像について、注目テンプレート画像と周辺テンプレート画像各々との間の特徴量の相対的な関係に基づいて、テンプレート・マッチングでの探索範囲を設定する。典型的には、上記仮位置算出部238により算出された仮位置を中心とした位置検出用画像0における所定の探索範囲が設定される。また、周辺テンプレート画像について決定済みのつなぎ位置に基づいて、さらに、絞り込まれた探索範囲を設定してもよい。
マッチング計算部242は、上記注目テンプレート画像について、典型的にはテンプレート・マッチング方式により、上記算出された仮位置に基づいて、上記注目テンプレート画像と、位置検出用補正画像における各部分とのマッチングを計算する。マッチングの計算では、上記探索範囲設定部240によって設定された仮位置を中心とした探索範囲で、テンプレート画像を移動させながら、各位置での画像の類似度に基づく評価値であるマッチング・スコアが計算される。
スコア補正部244は、上記注目テンプレート画像について、上述したマッチング計算部242により算出された画像の類似度に基づくスコアに対し、上記算出された仮位置を中心として優先的にスコアが高くなるようなオフセット補正を行う。これにより、テンプレート画像間の特徴量の相対的な関係に基づいて算出された仮位置を加味したスコアが計算される。
つなぎ位置決定部246は、上記注目テンプレート画像に対して、位置検出用補正画像0上で上記補正されたスコアが最大化される位置につなぎ位置を決定する。このとき決定されるつなぎ位置は、注目テンプレート画像よりも特徴量が大きい周辺テンプレート画像のつなぎ位置が加味されたものとなる。
上述した仮位置算出部238、探索範囲設定部240、マッチング計算部242、スコア補正部244およびつなぎ位置決定部246による処理が、複数のテンプレート画像各々について行われると、テンプレート画像各々に対応した位置検出用補正画像0上のつなぎ位置が求められる。検出結果生成部248は、ここで求められた各テンプレート画像に対応するつなぎ位置のデータ・セットに基づいて、全天球フォーマットの各画素(θ,φ)毎のつなぎ位置を計算し、検出結果データ222を生成する。
再び図4を参照すると、テーブル修正部206は、検出結果データ222に基づいて、事前準備された位置検出用変換テーブル220に対して修正を施し、テーブル生成部208に渡す。テーブル生成部208は、上記テーブル修正部206により修正された変換データから、回転座標変換に基づき、画像合成用変換テーブル224を生成する。
画像合成用歪み補正部210は、画像合成処理の前段の処理として、元の部分画像0および部分画像1に対し、画像合成用変換テーブル224を用いて歪み補正をかけ、画像合成用補正画像0および画像合成用補正画像1を生成する。生成される画像合成用補正画像は、位置検出用補正画像と同様に、球面座標系で表現されている一方で、上記回転座標変換により、位置検出用補正画像とは座標軸の定義が異なったものとなる。画像合成部212は、得られた画像合成用補正画像0および画像合成用補正画像1を合成し、全天球画像フォーマットの合成画像を生成する。なお、つなぎ位置検出部204、テーブル修正部206、テーブル生成部208、画像合成用歪み補正部210および画像合成部212が実行する処理については、処理フローの説明とともに詳細を後述する。
図4に示す機能ブロック200は、さらに、表示画像生成部214を含むことができる。上記生成された合成画像は、全天球画像フォーマットで表現されるため、そのまま、ディスプレイなどの平面表示デバイスに表示させると、垂直角度0度および180度に近づくほど画像が歪んで表示されることになる。表示画像生成部214は、全天球画像を平面表示デバイスに投影するための画像処理を実行する手段である。表示画像生成部214は、例えば、全天球画像フォーマットの合成画像から、球面座標系から特定方向および特定画角の平面座標系へ変換し、ユーザが指定する特定の視野方向の一定画角の画像に投影する処理を行うことができる。
[全天球画像合成処理の流れ]
以下、図5、図12および図20を参照して、本実施形態による全天球画像合成処理の流れを説明する。図5は、本実施形態による撮像システム10が実行する全天球画像合成処理の全体的な流れを示すフローチャートである。図5に示す処理は、例えば、シャッター・ボタン18の押下により2つの撮像光学系で撮影が指示され、CPU130から指令が発行されたことに応答して、ステップS200から開始される。
ステップS201では、撮像システム10は、位置検出用歪み補正部202により、2つの固体撮像素子22A,22Bによって取得された部分画像0および部分画像1に対し、位置検出用変換テーブル220を用いて歪み補正を行う。これによって、位置検出用補正画像0および位置検出用補正画像1が得られる。これにより、図9に示すような全天球画像フォーマットの補正画像が得られる。ステップS202では、撮像システム10は、つなぎ位置検出部204により、位置検出用補正画像0および位置検出用補正画像1の重複領域において、画像間のつなぎ位置検出を行う。
図12は、本実施形態による撮像システム10が実行する、つなぎ位置検出処理を示すフローチャートである。図12に示す処理は、図5に示したステップS202で呼び出されて、ステップS300から開始される。ステップS301では、撮像システム10は、テンプレート用画像、探索される探索用画像、テンプレートのブロック・サイズ、テンプレートを生成する開始座標、テンプレートの生成間隔および全ブロック数の初期設定を行う。
図13は、本実施形態によるテンプレート生成部によるテンプレート画像の生成方法を説明する図である。説明する実施形態では、テンプレート用画像300は、位置検出用補正画像1の重複領域の部分の画像であり、探索用画像310は、位置検出用補正画像0の重複領域の部分の画像である。上記ブロック・サイズは、テンプレート画像を構成する画素サイズであり、上記生成間隔は、隣接するテンプレート画像が生成される間隔である。上記生成開始座標は、最初のテンプレート画像を切り出す座標である。なお、ブロック・サイズおよび生成間隔は、つなぎ合わせの所望の精度および処理量を勘案して定めればよい。
ブロック・サイズをW画素×H画素とし、生成開始座標を(sx,sy)とし、生成間隔をstep画素とすると、図13に示すような態様で複数のテンプレート画像302−1〜302−#が生成される。生成されるテンプレートのブロック数#は、テンプレート生成用画像300の水平方向サイズ(説明する実施形態で全天球フォーマットの幅サイズ=3600画素)を生成間隔(step)で割った値の整数値となる。
ここで生成された複数のテンプレート画像302−1〜302−#に対し、探索用画像310上での対応部分314が所定の探索範囲312内で探索されることになる。なお、全天球画像フォーマットのθ座標の両端(0度および360度)はつながっているため、テンプレート画像の生成やテンプレート・マッチングの際は、右端の隣は左端として、左端の隣は右端として取り扱うことができる。
図12を参照すると、ステップS302では、現在の座標(sx,sy)に基づいて、テンプレート画像を生成する。第1回目のループでは、ステップS301で初期設定された生成開始座標(sx,sy)からブロック・サイズの領域(W画素×H画素)が切り出されてテンプレート画像が生成される。テンプレート画像生成後は、座標を(sx+step,sy)に更新し、2回目以降のテンプレート生成は、同様にして更新された座標からブロック・サイズの領域を指定して生成されることになる。テンプレート画像が生成されると、生成されたテンプレート画像に対し、図13に模式的に示すようなテンプレート番号(以下、単に番号と参照することもある。)が付与される。なお、特に限定されるものではないが、説明する実施形態では、テンプレート画像は、重複領域においてθ方向に一列、一周分、生成されるものとする。
ステップS303では、撮像システム10は、ステップS302で生成されたテンプレート画像から特徴量を算出する。ステップS304では、撮像システム10は、生成されるべき全てのブロックの処理が終了しているか否かを判定する。ステップS304で、終了していないと判定された場合(NO)は、ステップS302へループさせて、次のテンプレート画像の生成および特徴量の算出に処理を進める。一方、ステップS304で、全てのブロックの処理が終了したと判定された場合(YES)は、ステップS305へ処理を分岐させる。
ステップS305では、撮像システム10は、全てのブロックのテンプレート画像を、その特徴量の大きい方から小さい方へ順位付ける。これにより、ステップS306以降の処理順序が規定される。図14(A)は、本実施形態によるテンプレート画像の順位付けを説明する図である。図14(A)に示すように、各番号のテンプレート画像に対し、特徴量の大きい順にテンプレート順位が付される。図12に示すステップS306〜ステップS311の処理は、ステップS305で決定された順序で、順位の高いテンプレート画像から順に処理対象として選択され処理が行われる。
図12を参照すると、ステップS306では、撮像システム10は、処理対象として注目する注目テンプレート画像に対し、仮位置を算出する。図14(B)は、本実施形態による仮位置算出部が行う、順位付けに基づくテンプレート画像の仮位置の第1の算出方法を説明する図である。第1の計算方法においては、まず、注目テンプレート画像の周辺に位置する周辺テンプレート画像に対して設定されているつなぎ位置を取得する。
説明する実施形態では、テンプレート画像は、重複領域においてθ方向に一列に生成され、左側から順にテンプレート番号が付されているので、番号で隣接関係が識別される。図14(B)に示す例では、注目テンプレート画像(図中では番号3のもの)の前後のテンプレート画像(図中では番号2および番号4のもの)のつなぎ位置が取得される。テンプレート画像各々には、図12のステップS305でテンプレート順位が付されており、図12のステップS306〜ステップS311までのつなぎ位置を検出する処理は、順位の高いものから実施される。このため、注目テンプレート画像よりも大きな特徴量を有し、順位がより高いテンプレート画像に対しては、既につなぎ位置が決定していることになる。
したがって、図14(B)の例示では、注目テンプレート画像(番号3)の順位が3位であるため、テンプレート順位が1位および2位であるテンプレート画像(番号4および番号1のもの)のつなぎ位置が既に決定済みということになる。一方、図14(B)において反転表示されている4位〜6位のテンプレート画像(番号2、番号5および番号6のもの)に対しては、つなぎ位置が未決定であり、初期つなぎ位置として(0,0)が設定されている。なお、注目テンプレート画像(番号3)のつなぎ位置も、現時点では初期つなぎ位置(0,0)となっている。つなぎ位置は、補正画像1の重複領域におけるテンプレート画像の座標と、補正画像0の重複領域における対応する領域の座標とのズレ量を表し、つなぎ位置(0,0)は、テンプレート画像が、補正画像1上の座標位置そのままでつなぎ合わされることを意味する。
よって、図14(B)の例示では、周辺テンプレート画像のつなぎ位置として、注目テンプレート画像(図中では番号3のもの)の右側のテンプレート画像(図中では番号4のもの)の決定済みのつなぎ位置と、左側のテンプレート画像(図中では番号2のもの)の初期つなぎ位置とが取得される。
そして、取得された周辺テンプレート画像のつなぎ位置を平均処理し、その平均値を注目テンプレートの仮位置とすることができる。この際、単純な相加平均を計算してもよいが、好適には、決定済みのつなぎ位置と、未決定のつなぎ位置(初期つなぎ位置)とで重みを変えて、重み付き平均を行うことができる。具体的には、決定済みのつなぎ位置の方の影響が強くなるように重みを大きくすることができる。
注目テンプレート画像(番号i)の仮位置(txi,tyi)は、下記計算式(3)により計算することができる。下記式(3)においては、左側のテンプレート画像(番号i−1)のつなぎ位置を(xi−1,yi−1)、その重みをw−とし、右側のテンプレート画像(i+1)のつなぎ位置を(xi+1,yi+1)、その重みをw+としている。w−およびw+は、対応する隣接テンプレート画像のつなぎ位置が決定済みか否かに応じた重み値である。
図14(B)の例示において、例えば、決定済みの重み係数wHを「0.7」、未決定の重み係数wLを「0.3」とし、決定済みのテンプレート番号4のつなぎ位置を(2,−2)、未決定のテンプレート番号2のつなぎ位置を初期値(0,0)とすると、上記計算式(3)により、注目テンプレート画像(番号3)の仮位置は(1.4,−1.4)となる。
図14(C)は、本実施形態による仮位置算出部が行う、順位付けに基づくテンプレート画像の仮位置の第2の算出方法を説明する図である。図14(C)に示す第2の算出方法においては、まず、注目テンプレート画像の周辺テンプレート画像として、すべてのテンプレート画像について、注目テンプレート画像からの距離と、設定されているつなぎ位置とが取得される。つなぎ位置が未決定のものについては、上記と同様に初期つなぎ位置(0,0)が取得される。テンプレート画像間の距離は、単純にブロック数を単位とすればよい。図14(C)においては、例えば、注目テンプレートをテンプレート番号3として、番号2および番号4のテンプレート画像に対しては距離1が、番号1および番号5のものに対しては距離2が、番号6のものに対しては距離3が与えられる。
そして、取得された周辺テンプレート画像のつなぎ位置を距離で重み付けして平均処理し、その平均値を注目テンプレート画像の仮位置とすることができる。距離に基づく重み付けは、距離が近いほど大きくなるような関数を用いることができる。例えば、距離の逆数(1/距離)を重み値として使用することができる。
注目テンプレート画像(番号i)の仮位置を(txi,tyi)として、各テンプレート画像(番号j=1〜N)のつなぎ位置を(xj,yj)、その距離をDijとすると、下記計算式(4)により、仮位置(txi,tyi)を計算することができる。図14(C)に示す第2の算出方法によれば、隣接以外の遠くのテンプレート画像のつなぎ位置も考慮されるので、周辺との連続性をより良好に維持することができる。なお、注目テンプレート画像の周辺テンプレート画像として、すべてのテンプレート画像の距離およびつなぎ位置を取得するものとしたが、距離で所定の打ち切りを行ってもよい。
なお、上記説明では、隣接テンプレート画像のつなぎ位置が決定済みか否かに応じた重み値、またはテンプレート画像間の距離に応じた重み値を用いるものとして説明した。しかしながら、上述した計算方法は、一例であり、特に限定されるものではない。他の実施形態では、隣接テンプレート画像のつなぎ位置が決定済みか否かに応じ、かつ、テンプレート画像間の距離に応じて、重み付けを行ってもよい。
再び図12を参照すると、ステップS307では、撮像システム10は、テンプレート・マッチングを行う探索領域の探索範囲を設定する。図15は、本実施形態による探索範囲設定部が行う探索範囲の設定方法を説明する図である。テンプレート・マッチングでは、注目テンプレート画像について、所定サイズの探索領域が探索用画像から切り出される。探索用画像である位置検出用画像0と、テンプレート用画像である位置検出用画像1とは、事前定義された位置検出用変換テーブルによって生成されるので、ある程度の精度で重ね合わせられている。このため、テンプレート画像に対応する部分は、対応する補正画像0上の座標の近傍に見出されることが予測されるので、この座標を基準として探索領域が切り出される。上記探索範囲は、探索領域においてテンプレート・マッチングを行う範囲を決めるもので、この探索範囲内でテンプレート画像を縦横に位置をずらしながら探索領域の画像とマッチングが行われる。このため、探索範囲が広くなるにつれて処理時間が長くなる。
図15(A)は、通常の探索範囲360の設定方法を説明するものであり、通常の設定方法では、初期位置(○:テンプレート画像の座標と一致)を中心にした探索領域330をそのまま探索範囲360Aとする。この場合、探索領域330と探索範囲360Aとが同じとなり、探索領域全てでマッチング計算を行う必要がある。
これに対して、図15(B)は、算出された仮位置に基づいて探索範囲を設定する方法を説明する。通常、決定された仮位置(図では●で示す。)334は、特徴のあるテンプレートの影響を受けて初期位置(図では○で示す。)332から移動しているため、仮位置(●)を中心にして探索領域を移動させ(350)、元の探索領域330と重なる領域を探索範囲360Bとすることにより、探索範囲を狭め、処理時間を短縮することができる。
図15(C)は、さらに、隣接するテンプレート画像について決定済みのつなぎ位置に基づいて探索範囲を設定する方法を説明するものである。図15(B)に示す方法と同様に、決定された仮位置(●)を中心にして探索領域を移動させ(350)、元の探索領域330と重なる領域を求める。続いて、隣接するテンプレート画像について決定済みのつなぎ位置を参照し、さらに絞り込んだ探索範囲360Cを決定する。例えば、両側の隣接テンプレート画像のつなぎ位置が決定済みの場合には、注目テンプレートのつなぎ位置は、概ねその間に限定されると考えられる。そこで、図15(C)のように両側のテンプレート画像の縦方向のつなぎ位置336U,336Lを利用して縦方向に制限を与えて、探索範囲360Bを狭めることで、さらに処理時間を短縮することができる。
再び図12を参照すると、ステップS308では、撮像システム10は、ステップS307で設定された探索範囲内で、探索領域上でテンプレート画像を縦方向および横方向にずらしながら、マッチングを計算し、類似度のスコアを求める。
以下、図16を参照して、テンプレート・マッチングの一例として、ゼロ平均正規化相互相関(Zero-mean Normalized Cross-Correlation)法について説明する。図16は、(A)テンプレート画像と、(B)パターンマッチングにより探索範囲でテンプレート画像を探索する処理を説明する図である。テンプレートの全画素数をN(=W画素×H画素)とし、探索範囲上での探索位置を(kx,ky)で表す。探索位置(kx,ky)を基準座標(0,0)とした場合の座標(i,j)におけるテンプレート画像の輝度値をT(i,j)とし、探索用画像上の輝度値をS(kx+i,ky+j)とすると、ZNCC法によるマッチング・スコアM(kx,ky)は、下記式(5)で求めることができる。なお、図16では、探索位置(kx,ky)をテンプレート画像の左上に設定しているが、座標の取り方は、特に限定されるものではなく、テンプレート画像の中心に設定してもよい。
スコアM(kx,ky)が1のときは、完全一致となり、−1のときはネガポジ反転となる。スコアM(kx,ky)が高い方が、テンプレート画像との類似度が高いことを示す。図16(B)に示すように探索範囲内でテンプレート画像を縦横に位置をずらしながら、テンプレート・マッチングが行われ、各探索位置におけるマッチング・スコアM(kx,ky)が算出される。
なお、上述したZNCC法は、画像のゲインの変動を吸収することができ、また、画像の平均明るさの変動を吸収することができる点で好適なものであるが、スコアM(kx,ky)の算出方法は、ZNCC法に限定されるものではない。他の実施形態では、SSD(Sum of Square Difference)法、SAD(Sum of Absolute Difference)法、ZSSD(Zero-mean Sum of Square Difference)法、ZSAD(Zero mean Sum of Absolute Difference)法、NCC(Normalized Cross-Correlation)法などを採用してもよい。
再び図12を参照すると、ステップS309では、撮像システム10は、ステップS308で計算された各位置における類似度に基づくマッチング・スコアM(kx,ky)に対し、オフセット補正を行って、補正された最終的なスコアを計算する。ステップS310では、撮像システム10は、ステップS309で計算された各位置における補正後のスコアに基づいて、当該注目テンプレート画像に対するつなぎ位置を決定する。
図17(A)は、マッチング・スコアに対するオフセット関数を探索位置(kx/ky)に対してプロットしたグラフを示す。ステップS309の処理では、マッチング・スコアM(kx,ky)に対し、図17(A)に示すようなオフセット関数(kx、ky)により仮位置からの距離に応じたオフセット値を加算する。図17(A)に示すオフセット関数は、仮位置でオフセット値が最大になり、仮位置から距離が離れるにつれて単調減少する関数である。オフセット関数は、上記マッチング・スコアMの取り得る値の範囲に基づいて定めればよい。図17(B)および(C)は、補正前のスコアおよび補正後のスコアを探索位置(kx/ky)でプロットしたグラフを補正前のスコアに基づくマッチング位置および補正後のスコアに基づくマッチング位置とともに示す図である。図17(B)は、特徴量が大きいテンプレート画像の場合を例示し、図17(C)は、特徴量が小さいテンプレート画像の場合を例示する。
図17(B)に示すように、オフセット補正により、最終的なマッチング・スコアは、仮位置を中心としてかさ上げされる。しかしながら、テンプレート画像の特徴量が大きい場合は、位置の変化による類似度が大きく変動するので、類似度に基づくマッチング・スコアの影響が色濃く残される。このため、オフセット補正が行われるか否かにかかわらず、概ね類似度に基づくマッチング・スコアが最大となる位置がマッチング位置として決定される。すなわち、類似度のマッチング・スコアのピークが明確に残る程度に特徴量が大きければ、類似度が優勢的につなぎ位置を決定付けることになる。
一方、図17(C)に示すように、テンプレート画像の特徴量が小さい場合は、通常のマッチング・スコアでは明瞭なピークが認められず、類似度に基づくマッチング・スコアよりも、仮位置からの距離に応じたオフセットの影響が色濃く反映される。このため、概ねオフセット関数が最大となる仮位置の近傍がマッチング位置として決定される。すなわち、特徴量が小さい場合は、仮位置が優勢的につなぎ位置を決定付けることになる。
マッチング位置が決定されると、注目テンプレート画像(番号i)に対し、位置検出用補正画像0のそのままの座標値上に重ね合わせた位置からのずらし量(Δθi,Δφi)としてつなぎ位置が求められる。
上述したオフセット補正を行うことにより、類似度に基づくスコアに明確なピークがあり、類似度が大きい場合はその位置がつなぎ位置となる。特徴のない場合など明確なピークがあらわれない場合は、仮位置付近がつなぎ位置となり、隣接ブロックとの連続性が保たれ、仮位置から大きく外れた位置でつなぎ位置が決定されてしまう割合を低減することができる。
再び図12を参照すると、ステップS311では、撮像システム10は、全てのテンプレート画像のブロックに対する処理が終了しているか判定する。ステップS311で、終了していないと判定された場合(NO)は、ステップS306に戻されて、全てのブロックに対する処理が完了するまで繰り返させる。一方、ステップS311で、全ての処理が終了したと判定された場合(YES)は、ステップS312へ処理を進める。
上述したステップS306からステップS311までの処理により、生成された複数のテンプレート画像(番号i:i=1〜#)すべてに対応したつなぎ位置(Δθi,Δφi)が求められる。ステップS312では、撮像システム10は、得られた各テンプレート画像に対応するつなぎ位置のデータ・セットに基づいて、全天球フォーマットの各画素(θ,φ)毎のつなぎ位置(Δθ,Δφ)を計算し、検出結果データ222を生成する。ステップS313では、撮像システム10は、本つなぎ位置検出処理を終了させ、図5に示す処理に戻る。
図18は、本実施形態において、つなぎ位置検出部204により生成される検出結果データのデータ構造を示す図である。図19は、本実施形態の位置検出部204による検出結果データを生成する処理を説明する図である。上記ステップS312での処理により、図18に示すような、変換後の各座標値(θ,φ)に対して、ずらし量(Δθ,Δφ)が対応付けられた情報を全座標値について保持する検出結果データ222が得られる。このとき、各座標値(θ,φ)に対応するずらし量(Δθ,Δφ)は、上記つなぎ位置検出処理により求められたテンプレート・ブロック(i)毎のずらし量(Δθi,Δφi)を、各テンプレート・ブロックの中心座標の値として設定し、補間して計算することができる。
具体的には、まず、図19(A)に示すように、水平方向の座標値θがテンプレート・ブロックの中心座標の値と等しく、かつ、上端(φ=0)および下端(高さが1800画素の場合は、φ=1799である。)に位置する各座標におけるずらし量(Δθ,Δφ)を(0,0)として設定する。その他のずらし量未設定の座標については、図19(B)に示すように、近傍の設定済み4点(図中A〜Dで示す。)からなる格子を考え、その中で2次元線形補間演算によりずらし量を算出する。点Qを、4点の格子においてθ軸方向にdθ:1−dθ、φ軸方向にdφ:1−dφに内分する点だとすると、点Qにおけるずらし量(ΔθQ,ΔφQ)は、近傍4点におけるずらし量((ΔθA,ΔφA),…,(ΔθD,ΔφD))を用いて、下記式(6)により計算することができる。
なお、説明する実施形態では、全天球フォーマットにおける上端(φ=0)および下端(上記例ではφ=1799)に対しずらし量(0,0)を設定するようにした。しかしながら、各座標値(θ,φ)に対応するずらし量(Δθ,Δφ)の計算方法は、特に限定されるものではない。ここでは、部分画像0,1を矛盾無くつなぎ合わせられればよいので、他の実施形態では、より内側にずらし量(0,0)とする座標を設定して上記2次元線形補間演算を行うことができる。この場合、その座標よりφ方向が外側である座標においては、全てずらし量(0,0)を設定するようにすればよい。
再び図5を参照すると、ステップS203では、撮像システム10は、テーブル修正部206により、上記検出結果データ222を用いて、位置検出用変換テーブル220を画像が球面座標上で位置合わせされるように修正する。ステップS202のつなぎ位置検出処理により、図18に示すように、全天球画像フォーマットの座標値毎に、ずらし量が求まるので、ステップS203では、具体的には、部分画像0の歪み補正に用いた検出用歪み補正テーブル0において、入力座標値(θ,φ)に対し、修正前には(θ+Δθ,φ+Δφ)に対応付けられていた(x,y)を対応付けるように修正する。なお、部分画像1の歪み補正に用いた検出用歪み補正テーブル1については対応付けを変える必要はない。
ステップS204では、撮像システム10は、テーブル生成部208により、修正された位置検出用変換テーブル220から、回転座標変換することによって、画像合成用変換テーブル224を生成する。
図20は、本実施形態による撮像システム10が実行する、画像合成用変換テーブルの生成処理を示すフローチャートである。図21は、画像合成処理の際における、2つの魚眼レンズで撮像された2つの部分画像の球面座標系へのマッピングを説明する図である。図20に示す処理は、図5に示したステップS204で呼び出されて、ステップS400から開始する。ステップS401〜ステップS406のループでは、テーブル生成部208は、画像合成用歪み補正テーブルの入力値となる画像合成用の球面座標系の座標値(θg,φg)毎に、ステップS402〜S405の処理を実行する。設定される座標値の範囲は、水平角度の全範囲(0〜360度)および垂直角度の全範囲(0〜180度)で定義される範囲となる。入力値になる全座標値について変換処理を行うため、ここで各座標値が順に設定される。
ステップS402では、テーブル生成部208は、回転座標変換により、上記座標値(θg,φg)に対応する、つなぎ位置検出用の球面座標系の座標値(θd,φd)を求める。回転座標変換により、図9に示すような、一方のレンズ光学系の光軸を軸とした水平角度θdおよび垂直角度φdの座標軸の定義から、図21に示すような、光軸に垂直な軸を基準とした水平角度θgおよび垂直角度φgの定義に変換される。上記座標(θg,φg)に対応する座標(θd,φd)は、回転座標変換に基づき、動径を1とし、画像合成用の球面座標系の座標(θg,φg)に対応する3次元直交座標(xg,yg,zg)および位置検出用の球面座標系の座標(θd,φd)に対応する3次元直交座標(xd,yd,zd)を用いて、下記式(7)で計算することができる。なお、下記式(7)中、係数βは、3次元直交座標におけるx軸周りの回転座標変換を規定する回転角であり、説明する実施形態では、90度である。
位置検出用変換テーブル220では、光軸が球面の極に、画像間の重複部分が球面の赤道近傍に射影され、全天球画像フォーマットの上下方向と、撮影されたシーンの天頂方向が一致していない。これに対して、上記回転座標変換により、画像合成用変換テーブル224では、光軸が球面の赤道上に射影され、全天球画像フォーマットの上下方向と、撮影されたシーンの天頂方向とが一致するようになる。
ステップS403〜ステップS405のループでは、画像0および画像1毎に、テーブル生成部208は、ステップS404の処理を実行する。ステップS404では、テーブル生成部208は、各画像(0,1)について、(θd,φd)に対応付けられる部分画像(0,1)の座標値(x,y)を、修正後のつなぎ位置検出用変換テーブルを参照して求める。なお、変換テーブル220,224は、θdおよびφd共に、1画素きざみで対応する座標値(x,y)を保持しているが、変換により算出される座標値(θd,φd)は、典型的には、小数点以下の値で取得される。簡便には、対応付けられる部分画像(0,1)の座標値(x,y)は、算出された座標値(θd,φd)の最近傍のテーブル中に存在する座標値に対応付けられる座標値(x,y)を採用することができる。また、好適な実施形態では、テーブルに存在するうち、最近傍の座標値およびその周囲の座標値に対応付けられる複数の座標値(x,y)を参照して、算出された座標(θd,φd)からの距離に応じて重み付け補間を行って、対応付けられる部分画像(0,1)の座標値(x,y)を計算することもできる。
ステップS403〜ステップS405のループで、すべての画像(0,1)について計算が行われ、ステップS402〜ステップS406のループで、入力値となるすべての座標値に対する計算が完了すると、ステップS407では、本処理を終了させる。これにより、画像合成用変換テーブル224の全データが生成される。
再び図5を参照すると、ステップS205では、撮像システム10は、画像合成用歪み補正部210により、画像合成用変換テーブル224を用いて、元の部分画像0および部分画像1に対し歪み補正を行い、画像合成用補正画像0および画像合成用補正画像1を得る。これにより、画像合成用歪み補正部210による処理の結果、魚眼レンズで撮像された2つの部分画像0,1は、図21に示すように、全天球画像フォーマット上に展開される。魚眼レンズ0により撮影された部分画像0は、典型的には、全天球のうちの概ね左半球にマッピングされ、魚眼レンズ1により撮影された部分画像1は、全天球のうちの概ね右半球にマッピングされる。
図9および図21を比較すると明確であるが、全天球フォーマットに対し、異なった位置に部分画像0および部分画像1がマッピングされており、シーンの天頂方向が画像の上下方向となるφ方向に一致している。部分画像0,1の中心部が、より歪みの少ない赤道上にマッピングされ、補正画像0および補正画像1間の重複領域は、図9に示したものと異なり、垂直角度0度および180度付近、並びに、水平角度0度および180度の近傍領域にマッピングされる。
ステップS206では、画像合成部212により、画像合成用補正画像0および画像合成用補正画像1を合成する。合成処理では、画像間で重複する重複領域については、ブレンド処理等が行われ、片方しか画素値が存在しない領域については、存在するそのままの画素値が採用されることになる。上記合成処理により、魚眼レンズにより撮像された2枚の部分画像から、1枚の全天球画像が生成される。
以上説明したように、本実施形態では、マッチングを行う対象となるテンプレート画像が有する特徴の程度を指標する特徴量を測定し、この測定された特徴量を用いて、テンプレート画像のつなぎ位置を決定している。そして、特徴の大きな領域で優先してつなぎ合わせが行われ、そのつなぎ位置を参考にして特徴のより小さな領域のつなぎ合わせが行われる。これにより、画像が平坦であったり、同じ模様が繰り返された領域であったりして特徴が少ない領域に対しても、精度高くつなぎ位置を検出することができ、ひいては、得られる全天球画像の品質が向上される。また、同じ模様が繰り返された場合のように、類似度にだけでは複数のつなぎ位置の候補が存在するような場合でも、隣接した特徴がある領域のつなぎ位置を参考に一意につなぎ位置を決定することができる。
さらに、特徴の少ない不適切なマッチング領域を除外して計算する処理を採用しないので、アルゴリズムの簡素化が図られる。また、全天球撮像システム10では、全方位が撮影範囲となるため、重複領域に空などの平坦で特徴が少なくつなぎ合わせに適切ではない領域が広く含まれるシーンが多々発生する。本実施形態による複数の画像のつなぎ合わせ処理は、このような性質を有する全天球画像のつなぎ合わせに対し、好適に適用することができる。
[他の実施形態]
上述した実施形態では、画像処理装置および撮像システムの一例として、全天球の静止画を自身が備える撮像光学系により撮影し、内部の歪曲補正・画像合成ブロックで合成する撮像システム10を用いて説明した。しかしながら、画像処理装置および撮像システムの構成は、特に限定されるものではない。他の実施形態では、全天球を動画撮影する全天球動画撮像システムとして構成してもよく、複数の撮像光学系で撮影された複数の部分画像(静止画または動画)の入力を受けて全天球画像(静止画または動画)を生成するカメラ・プロセッサ、撮影を専ら担当する全天球撮像装置で撮影された複数の部分画像(静止画または動画)の入力を受けて全天球画像(静止画または動画)を合成するパーソナル・コンピュータ、ワークステーション、物理コンピュータ・システム上の仮想マシンなどの情報処理装置、スマートフォン、タブレットなどの携帯情報端末などを上記画像処理装置として構成することもできる。また、上述したようなカメラ・プロセッサ、情報処理装置、携帯情報端などの画像処理装置と、該画像処理装置から分離された撮像光学系とを含む撮像システムとして構成してもよい。
以下、図22および図23を参照しながら、全天球撮像装置と、この全天球撮像装置で撮影された複数の部分画像の入力を受けて、合成された全天球画像を生成する外部のコンピュータ装置とを含む、他の実施形態における全天球撮像システムについて説明する。図22は、他の実施形態における全天球撮像システム400の概略を示す。
図22に示す実施形態による全天球撮像システム400は、専ら撮像を担当する全天球撮像装置410と、この全天球撮像装置410と接続され、専ら画像処理を担当するコンピュータ装置430とを含み構成される。なお、図22には、主要な構成のみが示されており、詳細な構成が省略させていることに留意されたい。また、図1〜図21を参照して説明した実施形態と同様のはたらきをする構成要素については、同一符番を付して参照する。また、図22および図23に示す実施形態による全天球撮像システム400は、全天球画像を合成する画像処理が専らコンピュータ装置430で行われることを除いて、図1〜図21を参照して説明した実施形態と同様の構成を備えるので、以下、相違点を中心に説明する。
図22に示す実施形態において、全天球撮像装置410は、デジタル・スチルカメラ・プロセッサ100と、鏡胴ユニット102と、プロセッサ100に接続される3軸加速度センサ120とを含む。鏡胴ユニット102は、図2に示したものと同様の構成を有するものであり、プロセッサ100も、図2に示したものと同様の構成を有するものである。
プロセッサ100は、ISP108と、USBブロック146と、シリアルブロック158とを含み、USBコネクタ148を介して接続されるコンピュータ装置430とのUSB通信を制御する。シリアルブロック158には、無線NIC160が接続されており、ネットワークを介して接続されるコンピュータ装置430との無線通信を制御している。
図22に示すコンピュータ装置430は、デスクトップ型のパーソナル・コンピュータ、ワークステーションなどの汎用コンピュータなどとして構成することができる。コンピュータ装置430は、プロセッサ、メモリ、ROM、ストレージなどのハードウェア・コンポーネントを備える。図22に示す実施形態において、コンピュータ装置430は、USBインタフェース432と、無線NIC434とを含み、USBバスまたはネットワークを介して、全天球撮像装置410と接続されている。
コンピュータ装置430は、さらに、画像合成にかかる処理ブロックとして、位置検出用歪み補正部202と、つなぎ位置検出部204と、テーブル修正部206と、テーブル生成部208と、画像合成用歪み補正部210と、画像合成部212とを含み構成される。本実施形態では、鏡胴ユニット102の複数の撮像光学系により撮像された2つの部分画像と、全天球撮像装置410の位置検出用変換テーブルとが、USBバスまたはネットワークを介して外部のコンピュータ装置430に転送される。
コンピュータ装置430において、位置検出用歪み補正部202は、全天球撮像装置410から転送された部分画像0,1に対し、併せて転送された位置検出用変換テーブルを用いて歪み補正を施し、位置検出用補正画像0,1を生成する。つなぎ位置検出部204は、変換された補正画像0,1間のつなぎ位置を検出し、検出結果データを生成する。テーブル修正部206は、検出結果データに基づいて、転送された位置検出用変換テーブルに対して修正を施す。テーブル生成部208は、修正された変換データから、回転座標変換を施し、画像合成用変換テーブルを生成する。
画像合成用歪み補正部210は、画像合成処理の前段の処理として、元の部分画像0および部分画像1に対し、画像合成用変換テーブルを用いて歪み補正をかけ、画像合成用補正画像0,1を生成する。画像合成部212は、得られた画像合成用補正画像0,1を合成し、全天球画像フォーマットの合成画像を生成する。
図22に示す機能ブロックは、さらに、表示画像生成部214を含むことができる。表示画像生成部214は、全天球画像を平面表示デバイスに投影するための画像処理を実行する。本実施形態によるコンピュータ装置430は、ROMやHDDなどからプログラムを読み出し、RAMが提供する作業空間に展開することにより、CPUの制御の下、上述した各機能部および以下後述する各処理を実現する。
図23は、他の実施形態における全天球撮像システム400における全天球画像合成処理の全体的な流れを示すフローチャート図である。図23には、全天球撮像装置410で撮像画像が入力された後、当該画像がコンピュータ装置430で保存されるまでの流れが説明されている。
図23に示す処理は、例えば、全天球撮像装置410でシャッター・ボタンの押下により2つの撮像光学系で撮影が指示されたことに応答して、ステップS500から開始される。まず、全天球撮像装置410内での処理が実行される。
ステップS501では、全天球撮像装置410は、2つの固体撮像素子22A,22Bによって部分画像0および部分画像1を撮影する。ステップS502では、全天球撮像装置410は、USBバスあるいはネットワークを介して、部分画像0および部分画像0をコンピュータ装置430へ転送する。併せて、上記位置検出用変換テーブルが、USBバスあるいはネットワークを介してコンピュータ装置430に転送される。このとき、傾き補正もコンピュータ装置430側で行われる場合は、3軸加速度センサ120で取得された傾き情報がコンピュータ装置430へ転送される。
なお、上述した全天球撮像装置410の位置検出用変換テーブルは、全天球撮像装置410とコンピュータ装置430との間で互いに認識し合った際に転送しておいておけばよい。つまり、位置検出用変換テーブルは、一度、コンピュータ装置430に転送されていれば充分であり、毎回、変換テーブルを転送することを要さない。位置検出用変換テーブルは、例えば、図示しないSDRAMなどに記憶されており、ここから読み出され、転送される。ここまでが、全天球撮像装置410内における処理であり、次のステップS503からは、転送先のコンピュータ装置430内において実行される処理である。
ステップS503では、コンピュータ装置430は、位置検出用歪み補正部202により、転送された部分画像0および部分画像1に対し、転送された位置検出用変換テーブルを用いて歪み補正を行い、位置検出用補正画像0,1を得る。このとき、傾き補正が転送先コンピュータ装置430側で行われる場合は、転送された傾き情報に基づき、位置検出用変換テーブルに対し鉛直方向に応じた補正が事前に行われてもよい。ステップS504では、コンピュータ装置430は、つなぎ位置検出部204により、位置検出用補正画像0,1の重複領域において、画像間のつなぎ位置検出を行い、検出結果データを得る。ステップS505では、コンピュータ装置430は、テーブル修正部206により、検出結果データを用いて、転送された位置検出用変換テーブルを、画像が球面座標上で位置合わせされるように修正する。ステップS506では、コンピュータ装置430は、テーブル生成部208により、修正された位置検出用変換テーブルから、回転座標変換することによって、画像合成用変換テーブルを生成する。
ステップS507では、コンピュータ装置430は、画像合成用歪み補正部210により、画像合成用変換テーブルを用いて、元の部分画像0,1に対し歪み補正を行い、画像合成用補正画像0,1を得る。ステップS508では、コンピュータ装置430は、画像合成部212により、画像合成用補正画像0,1を合成する。上記合成処理により、魚眼レンズにより撮像された2枚の部分画像から、1枚の全天球画像が生成される。そして、ステップS509では、コンピュータ装置430は、ステップS508で生成された全天球画像を外部ストレージに保存し、ステップS510で終了する。
なお、図23に示した他の実施形態におけるフローチャートにかかる動作も、コンピュータ上のプログラムに実行させることができる。すなわち、全天球撮像装置410の動作を制御するCPU、コンピュータ装置430の動作を制御するCPUが、それぞれ、ROM、RAMなどの記憶媒体に格納されたプログラムを読み出し、メモリ上に展開することにより、上述した全天球画像合成処理の各担当部分の処理を実現する。なお、図22および図23は、分離して構成された全天球画像撮像システムを例示するものであり、図22および図23に示した具体的な実施形態に限定されるものではない。全天球画像撮像システムを実現するための各機能部は、1以上の撮像装置、1以上のコンピュータ・システム上に種々の態様で分散実装することができる。
以上説明した実施形態によれば、複数の入力画像間でつなぎ位置を検出する場合に、入力画像の特徴が少ない部分領域に対しても適切なつなぎ位置を検出することが可能な画像処理装置、画像処理方法、プログラムおよび撮像システムを提供することができる。
なお、上述した実施形態では、複数の部分画像は、それぞれ、異なるレンズ光学系を用いて略同時に撮像されたものとしたが、他の実施形態では、同じレンズ光学系を用い、時を異にして、所定の撮影点から、異なる撮影方向(方位)を向いて撮影撮像された複数の部分画像の重ね合わせに適用してもよい。さらに、上述した実施形態では、180度より大きな画角を有するレンズ光学系で撮像された2つの部分画像を重ね合わせて合成するものとしたが、他の実施形態では、1または複数のレンズ光学系により撮像された3以上の部分画像の重ね合わせ合成に適用してもよい。また、上述した実施形態では、魚眼レンズを用いた撮像システムを一例に説明してきたが、超広角レンズを用いた全天球撮像システムに適用してもよい。さらに、上述した好適な実施形態では、全天球画像の重ね合わせについて説明したが、特に限定されるものではなく、複数の画像のつなぎ位置を検出するいかなる画像処理に適用可能であることは言うまでもない。
また、上記機能部は、アセンブラ、C、C++、C#、Java(登録商標)などのレガシープログラミング言語やオブジェクト指向プログラミング言語などで記述されたコンピュータ実行可能なプログラムにより実現でき、ROM、EEPROM、EPROM、フラッシュメモリ、フレキシブルディスク、CD−ROM、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、ブルーレイディスク、SDカード、MOなど装置可読な記録媒体に格納して、あるいは電気通信回線を通じて頒布することができる。また、上記機能部の一部または全部は、例えばフィールド・プログラマブル・ゲート・アレイ(FPGA)などのプログラマブル・デバイス(PD)上に実装することができ、あるいはASIC(特定用途向集積)として実装することができ、上記機能部をPD上に実現するためにPDにダウンロードする回路構成データ(ビットストリームデータ)、回路構成データを生成するためのHDL(Hardware Description Language)、VHDL(Very High Speed Integrated Circuits Hardware Description Language)、Verilog−HDLなどにより記述されたデータとして記録媒体により配布することができる。
これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。