(57)【要約】 【課題】視聴者の所望する立体感が得られる立体映像装置を提供すること。【解決手段】撮影された画像から３次元の画像を生成する立体映像装置において、撮影された画像を記憶する撮影画像記憶手段と、撮影エリアを複数のエリアに分割し、各エリアの距離を測距可能な測距手段とを備えた撮像装置と、３次元の画像を生成する際に立体感の度合いを示す立体感パラメータを入力する、立体感パラメータ入力手段と、前記立体感パラメータと、各エリアの距離データに基づいて、前記撮影された画像の各エリアのシフト量を算出するシフト量算出手段と、前記シフト量に基づいて、前記画像の各エリアをシフトし、左目用と右目用の画像を生成する立体画像生成手段と、備え、前記立体画像生成手段は、シフト演算処理の結果生じるオクルージョン領域を、前記画像記憶手段が記憶した画像から補間して、左目用と右目用の画像を生成することを特徴とする。【選択図】図１
2017085207.tif 000002
【特許請求の範囲】
【請求項１】
撮影された画像から３次元の画像を生成する立体映像装置において、撮影された画像を記憶する撮影画像記憶手段と、撮影エリアを複数のエリアに分割し、各エリアの距離を測距可能な測距手段とを備えた撮像装置と、３次元の画像を生成する際に立体感の度合いを示す立体感パラメータを入力する、立体感パラメータ入力手段と、前記立体感パラメータと、各エリアの距離データに基づいて、前記撮影された画像の各エリアのシフト量を算出するシフト量算出手段と、前記シフト量に基づいて、前記画像の各エリアをシフトし、左目用と右目用の画像を生成する立体画像生成手段と、備え、前記立体画像生成手段は、シフト演算処理の結果生じるオクルージョン領域を、前記画像記憶手段が記憶した画像から補間して、左目用と右目用の画像を生成することを特徴とする立体映像装置。
【請求項２】
距離データが埋めこまれた撮影画像から３次元の画像を生成する立体映像装置において、撮影された画像を記憶する撮影画像記憶手段と、撮影画像から距離データを抽出する被写体距離データ抽出手段と、前記距離データに基づいて、複数のエリアに分割するエリア分割手段と、３次元の画像を生成する際に立体感の度合いを示す立体感パラメータを入力する、立体感パラメータ入力手段と、前記立体感パラメータと、各エリアの距離データに基づいて、前記撮影された画像の各エリアのシフト量を算出するシフト量算出手段と、前記シフト量に基づいて、前記画像の各エリアをシフトし、左目用と右目用の画像を生成する立体画像生成手段と、備え、前記立体画像生成手段は、シフト演算処理の結果生じるオクルージョン領域を、前記画像記憶手段が記憶した画像から補間して、左目用と右目用の画像を生成することを特徴とする立体映像装置。
【請求項３】
前記立体画像生成手段が生成する、ある時刻αの画像は、前記撮影画像記憶手段によって記憶される画像のうち、時刻αよりも前の時刻の画像から、左目用と右目用の画像を生成されることを特徴とする請求項１又は請求項２に記載の立体映像装置。
【請求項４】
前記立体画像生成手段が生成する、時刻αの画像は、前記撮影画像記憶手段によって記憶される画像のうち、時刻αよりも後の時刻の画像から、左目用と右目用の画像を生成されることを特徴とする請求項１又は請求項２に記載の立体映像装置。
【請求項５】
前記シフト量算出手段は、算出するシフト量に任意の値βで制限をかけた上で、前記立体画像生成手段によって、左目用と右目用の画像を生成することを特徴とする請求項１乃至請求項４の何れか一項に記載の立体映像装置。
【請求項６】
前記立体感パラメータは、コンバージェンスポイントに相当するパラメータであり、前記シフト量算出手段は、前記コンバージェンスポイントと、前記各エリアの距離データから、各エリアのシフト量を算出することを特徴とする請求項１乃至請求項５の何れか一項に記載の立体映像装置。
【請求項７】
前記立体感パラメータは、基線長に相当するパラメータであり、前記シフト量算出手段は、前記基線長と、前記各エリアの距離データから、各エリアのシフト量を算出することを特徴とする請求項１乃至請求項６の何れか一項に記載の立体映像装置。
【請求項８】
前記測距手段は、位相差方式による焦点検出手段であり、前記焦点検出手段の出力値に基づいて、前記各エリアの距離を算出することを特徴とする請求項１乃至請求項７の何れか一項に記載の立体映像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、立体映像装置に関するものであり、特に撮影映像から立体映像を生成し出力する立体映像機能を有する立体映像装置に関する。
【背景技術】
【０００２】
従来、単体で利用可能な撮影装置を複数台利用し、立体撮影を行う撮影システムが知られている。立体撮影に使用される一対の撮影装置は、ズーム、フォーカス、絞りなどの制御対象の状態（位置）によって変化する光学条件が常に一致するように同時に駆動する構成となっている。また、撮影時に各々の光軸が交差するコンバージェンスポイントと、各撮像装置間の距離となる基線長とを調整することによって、立体感を調整している。このようにして立体撮影された画像はそれぞれ左目用の映像と右目用の映像として立体合成される。
【０００３】
立体合成された画像は、左目用画像と右目用画像との間で被写体位置が乖離している。この量を視差量と呼び、視差量が大きいほど、視聴者にとって立体感が強く感じられる画像となる。一方、視差量が小さいほど立体感の弱い画像が得られる。視差量が０の被写体は、合成時に立体感は得られない。すなわち、コンバージェンスポイントの位置で撮影された被写体は、立体合成時に視差量が０となり、平面的な画像が得られる。このとき、立体映像出力モニタの位置をスクリーン面と呼ぶ。
【０００４】
コンバージェンスポイントよりも手前の被写体は、立体合成時に、スクリーン面よりも手前に飛び出した画像が得られる。また、コンバージェンスポイントよりも奥の被写体は、立体合成時に、スクリーン面よりも奥側に引っ込んだ画像が得られる。この時、視差量は、被写体位置とコンバージェンスポイントとの距離差に依存する。
【０００５】
また、前述の距離差が同じという状況下において、基線長が長いほど、視差量が大きくなり、立体感の強い画像が得られる。一方、基線長が短いほど、視差量が小さくなり、平面的な画像が得られる。その他、被写体距離や撮影装置のズーム位置によっても視差量が異なる。
【０００６】
このように、様々な撮影シーンに合わせて、視差量が最適となるように、輻輳角を制御することによって、コンバージェンスポイントを調整する手法が提案されている。
【０００７】
一方、上記の手法では、撮影シーンによって、コンバージェンスポイントや基線長を変更しなければならないことから、撮影機材のセットアップが煩雑となる。そこで、撮影後に画像処理による視差量の調整を行うことによって、撮影現場では調整しきれなかった視差量をオフラインで補正する手法も提案されている。
【０００８】
特許文献１によれば、撮影した左目用および右目用画像のコンバージェンスポイントを変更することによって視差量を調整することが可能である。この時、撮影時に被写体距離情報を取得し、設定したコンバージェンスポイントとの距離差から左目用の画像と右目用の画像を再生成している。特許文献１によれば、撮影後でも所望の立体感を得ることが可能としている。
【０００９】
また、特許文献２には、単一の画像から立体画像を得る手法が提案されている。立体感を調節するために、被写体領域をシフト演算する手法が取られている。この際に発生するオクルージョン領域と呼ばれる、所謂存在しない領域が発生する。特許文献２では、シフトした手前側の被写体を拡大画像処理することによって、オクルージョン領域を補間している。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開2008-310696号公報
【特許文献２】特許第3086577号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１で開示されている従来技術では、撮影時に取得する被写体距離情報は、距離用発光素子を用いて取得された所謂アクティブ測距方式の被写体距離情報であり、撮影画面の複数のエリアを個別に精度良く測距することが困難である。そのため、立体画像を生成する際に算出される視差量に誤差が生じ、視聴者にとって違和感のある立体画像となってしまう可能性が高い。
【００１２】
また、特許文献２で開示されている従来技術では、主要被写体の距離情報がないため、最適な立体感を得るための映像シフト量を決めることが困難となる。視差量が大きくなるほど、被写体のシフト演算時に発生するオクルージョン領域は拡大する可能性がある。そのため、オクルージョン領域の拡大に伴って、主被写体の領域が拡大されていくため、原画像から乖離していくこととなる。また、視聴者にとって違和感のある立体映像が生成される可能性が高い。
【００１３】
そこで、本発明の目的は、立体映像装置において、より精度の高い立体画像の合成方法を提案し、所望の立体映像を後から加工できるようにすることにある。
【課題を解決するための手段】
【００１４】
上記の目的を達成するために、本発明に係る立体映像装置によれば、
撮影された画像から３次元の画像を生成する立体映像装置において、撮影された画像を記憶する撮影画像記憶手段と、撮影エリアを複数のエリアに分割し、各エリアの距離を測距可能な測距手段とを備えた撮像装置と、３次元の画像を生成する際に立体感の度合いを示す立体感パラメータを入力する、立体感パラメータ入力手段と、前記立体感パラメータと、各エリアの距離データに基づいて、前記撮影された画像の各エリアのシフト量を算出するシフト量算出手段と、前記シフト量に基づいて、前記画像の各エリアをシフトし、左目用と右目用の画像を生成する立体画像生成手段と、前記シフトの結果生じるオクルージョン領域を検出するオクルージョン検出手段と、前記オクルージョン検出手段が検出したオクルージョン領域を、前記画像記憶手段が記憶した画像から補間して、前記左目用と右目用の画像を補正することを特徴とする。
【発明の効果】
【００１５】
本発明に係る立体映像装置によれば、撮影時に複数のエリアに分割して得られた距離情報と、入力した立体感を示すパラメータとから、立体合成する際の視差量を求めることができ、視聴者が所望する立体映像を提供することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】実施例１における構成図
【図２】実施例１における撮影画像のイメージ図１
【図３】実施例１におけるレンズ装置１００内のフローチャート
【図４】実施例１における撮影画像のイメージ図と領域１および２
【図５】実施例１における撮影画像の領域１における距離データ例
【図６】実施例１における撮影画像の領域２における距離データ例
【図７】実施例１における立体映像装置３００内のメインフローチャート
【図８】実施例１における立体映像装置３００内の視差量演算のフローチャート
【図９】実施例１におけるコンバージェンスポイント基準の変換データ例
【図１０】実施例１におけるシフト量算出の概念図
【図１１】実施例１における立体映像装置３００内のグループ分けのフローチャート１
【図１２】実施例１における立体映像装置３００内のグループ分けのフローチャート２
【図１３】実施例１における立体映像装置３００内のグループ分けのイメージ図
【図１４】実施例１における立体映像装置３００内の映像合成処理のフローチャート１
【図１５】実施例１における立体映像装置３００内の映像合成処理のフローチャート２
【図１６】実施例１におけるシフト演算の概念図１
【図１７】実施例１におけるシフト演算の概念図２
【図１８】実施例１におけるオクルージョン領域を示すデータ例
【図１９】実施例１における立体映像装置３００内のオクルージョン補間処理のフローチャート
【図２０】実施例１における立体映像装置３００内の参照グループ設定処理のフローチャート
【図２１】実施例１における立体映像装置３００内の参照グループ画像合成処理のフローチャート
【図２２】実施例１における撮影画像のイメージ図２
【図２３】実施例１における撮影画像の被写体領域とオクルージョン領域の推移図
【図２４】実施例１における立体映像装置３００内の参照グループ画像を用いたオクルージョン補間処理のフローチャート
【図２５】実施例２における構成図
【図２６】実施例２における立体映像装置３００内のメインフローチャート
【図２７】実施例２における立体映像装置３００内の視差量演算のフローチャート
【図２８】実施例２におけるシフト量算出の概念図
【図２９】実施例３における構成図１
【図３０】実施例３における立体映像装置３００内のメインフローチャート
【図３１】実施例３における構成図２
【発明を実施するための形態】
【００１７】
以下に、本発明の好ましい実施の形態を、添付の図面に基づいて詳細に説明する。図１は本発明の実施形態にかかわる構成図である。
【００１８】
［実施例１］
図１に、本発明の第１の実施例の自動合焦装置の構成図を示す。
【００１９】
レンズ装置１００は、フォーカスレンズ１１１を含む撮像光学系を有し、フォーカスレンズ１１１はモータ１１２により光軸方向に駆動可能な機構で構成されている。モータ１１２はドライバ１１３によって駆動される。また、フォーカスレンズ１１１の位置は位置検出器１１４によって検出される。フォーカスレンズ１１１、モータ１１２、ドライバ１１３、位置検出器１１４で、フォーカス機構を構成している。フォーカスレンズ１１１を通った被写体からの光束は、ハーフミラー１２１を透過した光束とハーフミラー１２１で反射された光束とに分割される。
【００２０】
ハーフミラー１２１を透過した光束は、撮像装置２００内のＣＣＤ２０１に入射する。ハーフミラー１０４で反射された光束は、レンズ装置１内におけるＣＣＤ２０１と共役な位置に設けられたセンサ１２２に入射する。
【００２１】
センサ１２２は、不図示の複数対の二次結像レンズと、不図示の位相差センサを含む。センサ１２２内部には、不図示の複数対のラインセンサ（光電変換素子列）が設けられている。各ラインセンサは、撮影画面を複数に分割したエリア毎に設けられている。各対のラインセンサ上には、ハーフミラー１０４を透過して各対の二次結像レンズによって２つに分割された光束により一対の被写体像（以下、２像という）が形成される。各対のラインセンサ１２１は、該２像を光電変換して２つの像信号を出力する。
【００２２】
レンズ装置１００のＣＰＵ１３０内には、通信部１３１、測距部１３２、制御部１３３、レンズ制御部１３４から成り立っている。測距部１３２は、センサ１２２から得られる像信号の入力に基づいて、公知の相関演算を行った後、レンズ１１１の位置を用いて、撮像エリアを複数に分割した各エリアの被写体距離を算出する。制御部１３３は、測距値に基づいてフォーカスレンズ１１１のフォーカス目標位置を算出する。レンズ制御部１３４は、制御部１３３によって算出されたフォーカス目標位置へフォーカスレンズ１１１を駆動する。また、レンズ制御部１３４は、位置検出器１１４からフォーカスレンズ１１１の位置を取得し記憶する。各エリアの被写体距離は、通信部１３１から外部へ出力される。測距部１３２で算出する処理の詳細については後述する。
【００２３】
レンズ装置１００は、レンズ装置によって結像される被写体像を撮像する撮像装置２００に取り外しが可能な構成であり、レンズ装置１００と撮像装置２００で撮像システムを構成している。画像変換部２０２は、撮像素子２０１から信号を取得した後に映像信号に変換し、撮像装置２００の外部へ出力する。撮像装置２００の外部へ出力された映像信号は、立体映像装置３００へ入力される。
【００２４】
立体映像装置３００には、通信部３０１、画像処理部３０２、画像記憶部３０３、立体パラメータ入力部３０４、画像出力部３０５から成り立っている。
【００２５】
立体映像装置３００内の通信部３０１では、レンズ装置１００の通信部１３１から撮影画面上の各エリアの被写体距離情報を受け取る。画像処理部３０２は、撮影装置２００の画像処理部２０２が出力した映像信号を入力する。画像記憶部３０３は、画像処理部２０２に入力された映像信号を記憶する。画像立体パラメータ入力部３０４は、ボリューム４０１の信号を入力し、その値を画像処理部３０２へ出力する。画像処理部３０２は、入力した映像信号と、それに同期した距離情報および立体パラメータ入力部３０４から入力した立体パラメータに基づいて、立体映像を生成し、画像出力部３０５を通じて外部に出力する。画像処理部３０２で行われる処理の詳細は後述する。
【００２６】
図２は図１の構成によって撮影された画像を示している。
【００２７】
被写体は人と、人の背景に山や太陽が撮影されている。本実施例では、レンズ装置１００で得られる被写体距離情報と撮影装置２００から得られる図２の撮影画像から、立体画像を生成させる例について説明する。
【００２８】
図３はレンズ装置１００における、撮像エリアを複数に分割した各エリアの距離を算出する流れを示したフローチャートである。レンズ装置１００のＣＰＵ１３０は、これらの処理をそれぞれ不図示のメモリに格納されたコンピュータプログラムにしたがって制御する。
【００２９】
まずレンズ装置１００における処理について説明する。
【００３０】
レンズ装置１００に電源が入ると、ＣＰＵ１３０の処理は、図３のステップＳ１１０から順番に処理を実行していく。図３フローチャートはＳ１１０からＳ１５０まで実行すると、再びＳ１１０に戻って実行する。これらは、ＣＰＵ１３０内に備わっている不図示のタイマ等を用いて周期的に処理される。
【００３１】
図３のステップＳ１１０において、ＣＰＵ１３０内の測距部１３２は、センサ１２２の蓄積制御および読出し制御を行う。センサ１２２内部に設けられた各撮影エリアに対応したラインセンサの蓄積を開始し、蓄積の終了まで待つ。蓄積が終了すると、測距部１３２は、センサ１２２から前述の像信号データを取得する。
【００３２】
図３のステップＳ１２０では、公知の相関演算を行い、デフォーカス量を算出する。各撮影エリアの二像信号から位相差を求める。一般的には、相関演算の結果、二像の位相差が０の時は合焦を示し、デフォーカス量は０となる。また、二像の位相差が０ではない場合は、非合焦であることを示し、デフォーカス量は０とは異なる値となる。
【００３３】
次にステップＳ１３０へと進み、レンズ制御１３４は、位置検出器１１４を通して、フォーカスレンズ１１１の位置を算出し、制御部１３３へ出力する。
【００３４】
次に、ステップＳ１４０では、ステップＳ１２０で算出した各エリアのデフォーカス量と、ステップＳ１３０で算出したフォーカスレンズ１１１の位置から、各エリアの距離を算出する。ＣＰＵ１３０内では、フォーカスレンズ１１１の位置と実距離のルックアップテーブルを備えており、テーブルを参照することにより、各エリアの距離データを算出することが可能である。なお、実距離の算出方法については、この方法に限定されず、ズームレンズを別途構成し、ズームレンズおよびフォーカスレンズの位置関係から、距離を算出しても良い。
【００３５】
次に、ＣＰＵ１３０はステップＳ１５０へと進み、ステップＳ１４０で算出した各エリアの距離データを、通信部１３１を通して、立体映像装置３００の通信部３０１へ出力する。各エリアの距離データには、エリアの該当する撮影画素の番号などが含まれている。
【００３６】
ここで、図４に示す撮影画面から領域１および領域２の拡大図を示したものを図５及び図６にそれぞれ示す。図５は図４の領域１を拡大した図であり、被写体である人の距離が「５」、背景の山の距離が「３ｋ」（３０００）であることを示している例である。図６は図４の領域２を拡大した図であり、山との距離が「３ｋ」（３０００）、背景の空の距離が「９９ｋ」（９９０００）であることを示している例である。これら距離データは、画像変換部２０２から出力される映像に同期して出力される。
【００３７】
続いて、立体映像装置３００における画像処理部３０２が行う立体映像合成処理の流れを図７のフローチャートに示す。立体映像装置３００に電源が入ると、画像処理部３０２の処理は、図７のステップＳ２１０から順番に処理を実行していく。図７のフローチャートはＳ２１０からＳ２８０まで実行すると、再びＳ２１０に戻って実行する。
【００３８】
図７のステップＳ２１０において、画像処理部３０２は、画像変換部２０２から入力された映像データを配列データなどへデコードし、画像記憶部３０３に保持する。保持する映像データを配列ＰｉｘＤａｔａＳｏｕｒｃｅで参照可能とする。このとき、画像記憶部３０３は、数フレームにわたって映像データを記憶しておく。記憶するフレーム数は多い方が望ましい。
【００３９】
次に、ＣＰＵ１３０は、ステップＳ２２０に進む。ステップＳ２２０では、通信部３０１は、レンズ装置１００の通信部１３１から現在撮影中の各エリアの距離データを受信し、配列データＤｉｓｔに格納する。配列データＤｉｓｔの要素数は上述のエリアの数であり、距離データと該当する撮影画素の番号などが含まれる。
【００４０】
次に、ステップＳ２３０において、立体パラメータ入力部３０４は、ボリューム４０１の信号を入力し、その値を画像処理部３０２へ出力する。
【００４１】
ステップＳ２４０では、視差量の演算を行う。ステップＳ２４０のサブルーチンを図８に示す。ステップＳ２４０が実行されると、図８のステップＳ２４１へと進む。
【００４２】
図８のステップＳ２４１では、図７のステップＳ２３０で立体パラメータ入力部３０４から入力した値をコンバージェンスポイントに相当する距離データに変換する。立体パラメータ入力部３０４から入力された値とコンバージェンスポイントに相当する距離データとの変換には、例えば変換テーブルを保持して変換処理を行って良い。ここでは、コンバージェンスポイントの算出例として、「２０」という値が設定されたものとして説明を進める。ステップＳ２４１を実行すると、ステップＳ２４２へと進む。
【００４３】
ステップＳ２４２では、基線長パラメータを設定する。ここでは、固定値αとする。αは０以上の任意の値で良い。
【００４４】
次に、ステップＳ２４３へと進み、変数ＡｒｅａＮｏを１にセットする。ＡｒｅａＮｏは、前述の距離データを算出したエリアを表すインデックスであり、後述のステップＳ２４４以降で用いる。
【００４５】
ステップＳ２４４では、ＡｒｅａＮｏがエリア数以下かどうかを判定している。ステップＳ２４４が真である場合は、ステップＳ２４５へと進み、偽である場合は、図８のサブルーチンを終了する。ここでは、ＡｒｅａＮｏを用いて、全エリアに対して処理を行うループを形成している。Ｓ２４４では、全エリアに対し、ステップＳ２４５以降を実行したか否かを判定する処理である。
【００４６】
ステップＳ２４５では、Ｄｉｆｆ［ＡｒｅａＮｏ］を算出する。Ｄｉｆｆとは、前述の距離配列データＤｉｓｔとステップＳ２４１で算出したコンバージェンスポイントとを比較し、各エリアの距離とコンバージェンスポイントとの差分距離を算出したものである。Ｄｉｆｆの算出式を式（１）に示す。Ｃｏｎｖ．Ｐｔとはコンバージェンスポイントである。
【００４７】
式（１）では、コンバージェンスポイントを基準とした差分値を算出しているため、奥側がマイナスとなり、手前側はプラスとなるが、符号については任意の方向で定義して良い。
【００４８】
Diff[AreaNo] = Conv.Pt - Dist[AreaNo] … 式（１）
ここで、ステップＳ２４１で設定されたコンバージェンスポイント「２０」を例に、図６で得られた距離データに式（１）を適用して得られるデータを図９に示す。
【００４９】
図８のフローチャートの説明に戻る。ステップＳ２４６では、ステップＳ２４５で得られたＤｉｆｆデータをもとに、各エリアにおける画像のシフト量ＳｈｉｆｔＮｕｍを算出する。
【００５０】
ここで、図１０にシフト算出のイメージ図を示す。本発明の構成では、単眼の撮影システムであるため、距離データＤｉｓｔは基線長が０の時の被写体までの距離である。図１０では、基線長αだけ乖離したレンズ配置を想定し、被写体を撮影したイメージ図を示している。この時、θを０と近似すれば、シフト量は式（２）で得られる。本実施例では、上述の通り、基線長はαとした。また、画界Ｄとは、撮影装置の画角である。不図示のズームレンズの位置および撮像素子のサイズ等から幾何学的に算出することができる。式（２）のβとは、任意の値で良い。
【００５１】
ステップＳ２４５と同様に、ステップＳ２４６では、全エリアのシフト量を算出する。このシフト量は、後述するステップＳ２５０で左目用の画像と右目用の画像を生成する際に使用するパラメータである。
【００５２】
ShiftNum[AreaNo] = (基線長/ 2)× Diff[AreaNo] / Conv.Pt ×β…式（２）
ステップＳ２４６を実行すると、ステップＳ２４７に進み、ＡｒｅａＮｏをインクリメントし、ステップＳ２４４へ戻る。
【００５３】
図７のフローチャートの説明に戻る。ステップＳ２４０が実行された後は、ステップＳ２５０に進み、被写体を視差量別にグループ分けする。ステップＳ２５０のサブルーチンを図１１に示す。
【００５４】
図１１のステップＳ２５１では、変数ＳｈｉｆｔＧｒおよび変数ＰｉｘＧｒを初期化する。変数ＳｈｉｆｔＧｒは、前述の各エリアを視差量別にグループ分けする際のグループ番号を格納する配列である。また、変数ＰｉｘＧｒは、上記の視差量別に、画像の各ピクセルデータにグループ番号を付与し、管理するための配列である。
【００５５】
図１１のステップＳ２５２では、変数ＡｒｅａＮｏを１にセットする。ＡｒｅａＮｏは、後述のステップＳ２５３以降で用いる。
【００５６】
次にステップＳ２５３へと進み、ＡｒｅａＮｏが全エリア数以下であるかを判定する。ステップＳ２５３が真である場合は、ステップＳ２５４へと進み、偽である場合は、図１１のサブルーチンを終了する。
【００５７】
ステップＳ２５４では、選択されているＡｒｅａＮｏの距離データに基づいて、ＧｒＮｏ（グループナンバー）を付与する。類似した視差量のエリアをグルーピングすることによって、被写体別にグループ分けする。それまでに得られた視差量のエリアとは異なる視差量のＡｒｅａＮｏである場合は、新規にＧｒＮｏを付与する。
【００５８】
次にステップＳ２５５へと進み、ＳｈｉｆｔＧｒにステップＳ２５４で付与されたＧｒＮｏを代入し、エリア毎のＧｒＮｏを保持する。
【００５９】
ステップＳ２５６では、ステップＳ２５５で分けたＧｒＮｏに従って、画像データをグループ分けする。ステップＳ２５６のサブルーチンを図１２に示す。
【００６０】
図１２のステップＳ２５６１では、変数ＰｉｘＮｏに１を代入して初期化する。変数ＰｉｘＮｏは、エリア内の画素位置を参照するための変数である。
【００６１】
次にステップＳ２５６２へと進み、ＰｉｘＮｏがエリア内の画素数以下であるかを判定する。ステップＳ２５６３が真である場合は、ステップＳ２５６４へと進み、偽である場合は、図１２のサブルーチンを終了する。図１２のサブルーチンでは、エリア内の全画素に対して、ステップＳ２５６３〜Ｓ２５６５の処理を実行する。
【００６２】
ステップＳ２５６３では、関数Ｃｏｎｖｅｒｔに変数ＰｉｘＮｏを代入することによって、画像全体の画素インデックスｉｎｄｅｘに変換する。
【００６３】
次に、ステップＳ２５６４では、ステップＳ２５６３で得られたｉｎｄｅｘを用いて、データＰｉｘＧｒのｉｎｄｅｘで示す番地に、前述のＳｈｉｆｔＧｒ［Ａｒｅａ］の値を代入する。ここでは、画像データの各画素が、前述のどのＧｒＮｏに該当するかを求めている。
【００６４】
ステップＳ２５６５では、ＰｉｘＮｏをインクリメントし、ステップＳ２５６２へと戻る。
【００６５】
図１１のフローチャートの説明に戻る。ステップＳ２５６を実行したあとは、ステップＳ２５７へと進み、ＡｒｅａＮｏをインクリメントし、ステップＳ２５３へと戻る。
【００６６】
図１１のサブルーチンを実行することによって、画像データが視差量別にグループ分けされる。図２で示した撮影画像データから、視差量別にグループ分けした図を図１３に示す。
【００６７】
図１３では、視差量別すなわち距離別に、被写体が４つのグループに分けられていることが示されている。図１３の各グループの画像の空白部は、他のグループの画像によって埋められていた画像領域である。例えば、図１３のＧｒ．３の空白部では、Ｇｒ．４の被写体領域がもともと存在していた領域である。
【００６８】
図７のフローチャートの説明に戻る。ステップＳ２５０が実行されると、ステップＳ２６０へと進む。ステップＳ２６０では、左目用の画像と右目用の画像を生成する。ステップＳ２６０のサブルーチンを図１４に示す。図１４では、ステップＳ２６１から処理が実行される。
【００６９】
図１４のステップＳ２６１では、ＡｒｅａＮｏを格納するためのＡｒｅａ配列を作成する。ここでは、左目画像と右目画像を生成する場合に、距離データが奥のエリアから画像シフト処理を実行していく。Ａｒｅａ配列では、各エリアの距離データが最も遠いものから、そのＡｒｅａＮｏを格納していくこととする。
【００７０】
ステップＳ２６２では、配列ＰｉｘＦｌａｇＬおよび配列ＰｉｘＦｌａｇＲの初期化を行う。ＰｉｘＦｌａｇＬおよびＰｉｘＦｌａｇＲは、後述する立体映像の合成処理時に、合成した画素に対応してＧｒＮｏをセットするための変数である。
【００７１】
次にステップＳ２６３へと進み、インデックス用の変数ＡｒｅａＮｏを１にクリアし、次にステップＳ２６４へと進む。
【００７２】
ステップＳ２６４では、インデックスＡｒｅａＮｏがエリア数以下であるかを判定する。ステップＳ２６４が真である場合は、ステップＳ２６５へと進み、偽である場合には、すべてのエリアの処理が終了したと判定して図１４のサブルーチンを終了し、図７のフローチャートへと戻る。
【００７３】
図１４のステップＳ２６４で真と判定された場合には、ステップＳ２６５へと進み、変数ＡｒｅａＩｎｄｅｘにＡｒｅａ配列から得られるＡｒｅａＮｏが代入される。前述の通り、視差量が最も奥側となるＡｒｅａＮｏから順に代入される。ステップＳ２６５が実行されると、ステップＳ２６６へと進む。
【００７４】
ステップＳ２６６では、図８のステップＳ２４６で算出した各エリアのシフト量を取得する。ＳｈｉｔｆＮｕｍ配列にステップＳ２６５で得られたＡｒｅａＮｏをインデックスとして参照することで、該当エリアのシフト量Ｓｈｉｆｔが得られる。
【００７５】
ここで、ステップＳ２５４で得られるＳｈｉｆｔ量は、左目画像用と右目画像用で符号が異なる。例えば、画像の原点を画面左上とすると、画面右方向はプラス方向となり、左方向はマイナス方向となる。この時、左目用の画像では、コンバージェンスポイントよりも手前の被写体は右方向、すなわちプラス方向にシフトすることとなり、コンバージェンスポイントよりも奥側の被写体は左方向、すなわちマイナス方向にシフトすることとなる。一方、右目用の画像では、左目用の画像とは逆方向にシフトすることとなる。
【００７６】
次に図１４のステップＳ２６７に進み、立体映像の合成処理を行う。ステップＳ２６７のサブルーチンを図１５に示す。図１５では、ステップＳ２６７１から処理が実行される。
【００７７】
図１５のステップＳ２６７１では、変数ＰｉｘＮｏに１を代入してステップＳ２６７２へと進む。変数ＰｉｘＮｏは後述するエリア内画像を画素単位で参照するためのインデックス変数である。
【００７８】
ステップＳ２６７２では、ＰｉｘＮｏがエリア内ピクセル数以下であるかを判定する。ステップＳ２６７２が真である場合は、ステップＳ２６７３へと進み、偽である場合は、図１５のサブルーチンを終了し、図１４のフローチャートへ戻る。ステップＳ２６７２以降では、各エリア内の該当する画素データすべてをシフト演算し、左目用および右目用の映像を生成処理するため、エリア内のＰｉｘ数だけループ処理を行っている。
【００７９】
次にステップＳ２６７３へと進み、関数Ｃｏｎｖｅｒｔに変数ＰｉｘＮｏを代入することによって、画像全体の画素インデックスｉｎｄｅｘに変換する。
【００８０】
次にステップＳ２６７４へと進み、該当画素のシフト演算を行う。前述の記憶されている映像データＰｉｘＤａｔａＳｏｕｒｃｅのｉｎｄｅｘ番目の画素データを前述のステップＳ２６６で得たＳｈｉｆｔ画素数分シフトした位置ｉｎｄｅｘ＋Ｓｈｉｆｔへ画素データを代入する。代入先は、図１５のステップＳ２６７４に示している通り、ＰｉｘＤａｔａＬ（左目用の画像データ）および、ＰｉｘＤａｔａＲ（右目用の画像データ）である。このとき、前述の通り、左目用の画像のシフト方向と、右目用の画像のシフト方向が逆となる。左目用の画像では、Ｓｈｉｆｔ画素数分シフト演算し、右目用の画像では、−Ｓｈｉｆｔ画素数分シフト演算する。この時のシフトイメージ図を図１６および図１７に示す。図１６に示した通り、単眼で撮影した画像を左目および右目から撮影した画像に変換する概念となる。そのため、図１７に示すように、左目用の画像では、コンバージェンスポイントよりも手前にいる被写体である人のエリアはプラス側、つまり右側へとシフトしている。また、左目用の画像で、コンバージェンスポイントよりも奥側の山や太陽はマイナス側、つまり左側へシフトしている。右目用の画像では、左目側の画像と逆側にシフト演算している。
【００８１】
図１５のフローチャートの説明に戻る。次に、図１５のステップＳ２６７５へと進み、ＰｉｘＦｌａｇＬおよびＰｉｘＦｌａｇＲに、ＧｒＮｏを設定する。ステップＳ２６７５に示した代入式では、現在処理中のＡｒｅａＮｏをインデックスとして、前述の配列データＳｈｉｆｔＧｒからＧｒＮｏを得ることができる。ＰｉｘＦｌａｇＬおよびＰｉｘＦｌａｇＲにＧｒＮｏを設定することによって、ＰｉｘＤａｔａＬおよびＰｉｘＤａｔａＲのｉｎｄｅｘ番目の各画素にどのＧｒＮｏの被写体が映像として合成されたかを識別可能としておく。ＰｉｘＦｌａｇＬおよびＰｉｘＦｌａｇＲのうち、ＧｒＮｏが設定されない画素は、ＰｉｘＤａｔａＬおよびＰｉｘＤａｔａＲに画素データを持たないことを示す。後述するが、ＰｉｘＦｌａｇＬおよびＰｉｘＦｌａｇＲを参照することで、オクルージョン領域を識別する。
【００８２】
ステップＳ２６７５が実行された後は、次にステップＳ２６７６へと進み、インデックス変数ＰｉｘＮｏをインクリメントしてステップＳ２６７２へと戻る。
【００８３】
このようにして、図１５に示したサブルーチンでは、各エリアの全画素をシフト演算することによって、左目用の画像と右目用の画像を生成している。また、同時に、生成した画像のＧｒＮｏをＰｉｘＦｌａｇＬ／Ｒに記憶しておくことで、生成された画素と生成されていない画素を識別可能としている。全エリアのシフト演算が終了すると、図１５に示したサブルーチンを終了し、図４のステップＳ２５０へと戻る。ステップＳ２５０が終了すると、再びステップＳ２１０から処理を繰り返して実行する。
【００８４】
図１４のフローチャートの説明に戻る。ステップＳ２６７が実行されるとステップＳ２６８へ進み、変数ＡｒｅaＮｏをインクリメントしてステップＳ２６４へと進む。ステップＳ２６４からステップＳ２６８を繰り返して実行することで、すべてのエリアの映像の各画素がシフト演算され、左目用および右目用の映像が生成される。図１４のサブルーチンが実行されると、図７のステップＳ２７０へ進む。
【００８５】
ステップＳ２７０では、オクルージョン補間演算が行われる。前述のステップＳ２６０にて、左目用および右目用の画像を生成した。シフト演算の際に、ＰｉｘＤａｔａＬおよびＰｉｘＤａｔａＲの要素に画素データが代入されないことによって、オクルージョン領域が生成される。図１８に示すように、黒色で示した部分には画素データが埋めこまれないことになる。図１８中の数字は視差量となる。図１８の例では、視差量が−２９８０となる画素のシフト方向と、視差量が＋１５となる画素のシフト方向が異なるためである。この存在しない領域を補間するために、図７のステップＳ２７０を実行する。
【００８６】
図７のステップＳ２７０のサブルーチンを図１９に示す。図１９のフローチャートでは、ステップＳ２７１からステップＳ２７４までを実行する。ステップＳ２７１では、生成した画像ＰｉｘＤａｔａＬおよびＲ、ＰｉｘＦｌａｇＬおよびＲより、上述の方法でオクルージョン領域をサーチする。ステップＳ２７１が真つまり、オクルージョン領域がある場合は、ステップＳ２７２へと進む。ステップＳ２７１が偽、つまりオクルージョン領域が無い場合は、図１９のサブルーチンを終了し、図７のステップＳ２８０へと進む。
【００８７】
ステップＳ２７２では、オクルージョン領域を補間するための参照グループを設定する。ステップＳ２７２のサブルーチンを図２０に示す。
【００８８】
図２０のサブルーチンではステップＳ２７２１から処理を実行する。ステップＳ２７２１では、変数ｉｎｄｅｘにオクルージョン領域の開始位置を示すインデックスを設定する。
【００８９】
次にステップＳ２７２２へと進み、変数ｉｎｄｅｘを用いて、左側にシフトし、オクルージョン領域の左側の境界から外側の画素位置をサーチする。ステップＳ２７２２では、オクルージョン領域の左側に隣接する被写体を探索する。
【００９０】
次にステップＳ２７２３に進み、ステップＳ２７２２で得たｉｎｄｅｘ値を用いて、配列ＰｉｘＦｌａｇを参照する。ここでは、ＰｉｘＦｌａｇからオクルージョン領域の左側に隣接する被写体のＧｒＮｏを取得し、ＧｒＬｅｆｔへセットする。
【００９１】
次にステップＳ２７２４へと進み、変数ｉｎｄｅｘを用いて、右側にシフトし、オクルージョン領域の右側の境界から外側の画素位置をサーチする。ステップＳ２７２４では、オクルージョン領域に隣接する被写体を探索する。
【００９２】
次にステップＳ２７２５に進み、ステップＳ２７２４で得たｉｎｄｅｘ値を用いて、配列ＰｉｘＦｌａｇを参照する。ステップＳ２７２３と同様にして、ステップＳ２７２５では、ＰｉｘＦｌａｇからオクルージョン領域の右側に隣接する被写体のＧｒＮｏを取得し、ＧｒＲｉｇｈｔへセットする。
【００９３】
ステップＳ２７２１からステップＳ２７２５まで処理を実行することによって、オクルージョン領域に隣接する被写体をサーチし、そのＧｒＮｏが取得される。
【００９４】
ステップＳ２７２５が実行されると、ステップＳ２７２６へと進む。ステップＳ２７２６では、ステップＳ２７２３およびステップＳ２７２５で取得したＧｒＬｅｆｔ、ＧｒＲｉｇｈｔを用いて、オクルージョン領域に隣接する被写体の前後関係を得る。ＧｒＬｅｆｔ、ＧｒＲｉｇｈｔに格納されているＧｒＮｏと、ステップＳ２５５で用いたＳｈｉｆｔＧｒからＡｒｅａＮｏを取得する。そして、取得したＡｒｅａＮｏと、ステップＳ２４５で用いた配列Ｄｉｆｆを用いて、被写体距離を比較する。ＧｒＬｅｆｔに該当する被写体がＧｒＲｉｇｈｔに該当する被写体よりも奥側、つまりステップＳ２７２６が真である場合はステップＳ２７２７に進む。ステップＳ２７２６が偽であれば、ステップＳ２７２８へと進む。
【００９５】
ステップＳ２７２７では、変数ＧｒＲｅｆにＧｒＬeｆｔを代入する。ステップＳ２７２８では、変数ＧｒＲｅｆにＧｒＲｉｇｈｔを代入する。ＧｒＲｅｆでは、ステップ２７２３あるいはステップＳ２７２５で算出されたＧｒＮｏが格納される。つまり、オクルージョン領域を補間するために参照するＧｒＮｏが決定されたこととなる。
【００９６】
ステップＳ２７２７およびステップＳ２８２８を実行すると、図２０のサブルーチンを終了し、図１９のステップＳ２７３へと進む。
【００９７】
図１９のステップＳ２７３では、参照グループの画像、つまりオクルージョン領域の部分の画像を合成する。ステップＳ２７３のサブルーチンを図２１に示す。
【００９８】
図２１ではステップＳ２７３１から順番に処理が実行される。ステップＳ２７３１では、時刻変数ｔに時刻ｔ０を代入して、ステップＳ２７３２へと進む。
【００９９】
ステップＳ２７３２では、現在時刻ｔ＿ｎｏｗと時刻変数ｔを比較し、時刻変数ｔがｔ＿ｎｏｗよりも小さい、つまり過去の時刻を参照していれば、真と判定してステップＳ２７３３へと進む。ステップＳ２７３２において、偽であれば、図２１のサブルーチンを終了する。
【０１００】
図２１のステップＳ２７３３では、時刻変数ｔが参照する参照画像を読み出す。前述の通り、本発明の撮影映像は数フレームに跨って記憶されている。図１９のステップＳ２７２で算出されたＧｒＮｏに基づく参照グループに該当する画像を時刻変数ｔに対応づけて読みだす。
【０１０１】
次にステップＳ２７３４へと進み、参照グループに該当する画像をＯＲ加算する。ステップＳ２７３４を実行した後は、ステップＳ２７３２に戻り、記憶しているフレーム数分から、参照グループの画像を読み出し、ＯＲ加算していく。
【０１０２】
図２１のサブルーチンを実行したイメージ図を図２２および図２３に示す。図２３は、時刻ｔ０および時刻ｔ１の撮影映像を示したものである。時刻ｔ０から時刻ｔ１の間に、最も手前側の被写体の「人」が画面左側から右側へと移動している。この間、数フレームの撮影映像が記憶されている。最も手前側の被写体「人」が存在するために、「人」の奥側に位置している「山」の領域の一部がオクルージョン領域となる。前述のＧｒＮｏを求めると、「人」と「山」は異なるＧｒＮｏが付与されることとなる。
【０１０３】
図２３のｔ０に示すように、「山」の領域の一部「人」の奥側の部分がオクルージョン領域となる。図２３では、時刻ｔ０、ｔ０＜ｔ＜ｔ１、ｔ１にわたって、オクルージョン領域が変化していることを示している。図２１のサブルーチンを実行することによって、図２３の（ｔ０｜ｔ１）で示すような、「山」の合成されたグループが像を得ることができる。
【０１０４】
図２１のサブルーチンを終了すると、図１９のステップＳ２７４に進む。ステップＳ２７４では、ステップＳ２７３で得られた参照グループ画像を用いて、オクルージョン領域を補間する。
【０１０５】
図１９のステップＳ２７４のサブルーチンを図２４のフローチャートに示す。図２２のフローチャートでは、ステップＳ２７４１から順番に処理が実行される。
【０１０６】
ステップＳ２７４１では、オクルージョンの開始位置を変数ｏｃＩｎｄｅｘに代入する。変数ｏｃＩｎｄｅｘは、オクルージョン領域および、図１９のステップＳ２７３で合成した参照画像の画素を参照するためのインデックス変数である。
【０１０７】
次にステップＳ２７４２では、変数ｏｃＩｎｄｅｘがオクルージョン領域内であるか否かを判定する。ステップＳ２７４２が真である場合はステップＳ２７４３へと進み、偽である場合は図２４のフローチャートを終了する。
【０１０８】
ステップＳ２７４３では、図１９のステップＳ２７３で合成した参照画像から、インデックス変数ｏｃＩｎｄｅｘを用いて、画素データを読み出し、変数ｐｉｘへ代入する。
【０１０９】
次にステップＳ２７４４へ進み、ｃｏｎｖｅｒｔ関数を用いて、前述と同様にインデックス変数ｏｃＩｎｄｅｘを画像全体のインデックスへ変換する。これを変数ｉｎｄｅｘへ代入して保持しておく。ここで行われる変換処理は、左目用の画像および右目用の画像のオクルージョン領域を参照するインデックスへの変換となる。
【０１１０】
次にステップＳ２７４５へと進み、ステップＳ２７４４で算出したｉｎｄｅｘを用いて、左目用の画像および右目用の画像を保持しているＰｉｘＤａｔａＬおよびＰｉｘＤａｔａＲにデータｐｉｘを代入する。
【０１１１】
ステップＳ２７４５が実行されると、ステップＳ２７４２へ戻り、再びオクルージョン領域の補間処理が１画素ずつ実行される。
【０１１２】
図２４のサブルーチンが終了すると、図１９のステップＳ２７４が終了し、ステップＳ２７１から再び処理を実行する。ステップＳ２７１からステップＳ２７４まで繰返し実行することで、画面内のすべてのオクルージョン領域が参照画像を用いて補間される。
【０１１３】
図１９のサブルーチンを実行すると、図７のステップＳ２８０へと進む。ステップＳ２８０では、ステップＳ２７０までに生成したＰｉｘＤａｔａＬおよびＰｉｘＤａｔａＲを用いて、左目用および右目用の画像を出力する。ステップＳ２８０を実行すると、再びステップＳ２１０から処理を繰り返して実行する。
【０１１４】
このように、本実施例では、撮影と共に各エリアの距離データを算出し、立体映像装置３００に入力した。立体映像装置３００では、ボリューム４０１で入力したコンバージェンスポイントに相当するパラメータを用いて、距離データからコンバージェンスポイント基準のデータへ変換した。さらに、左目画像と右目画像用のシフト量へ変換し、それぞれ左目用、右目用の画像を生成する手順を示した。また、左目用および右目用の画像を生成する際に発生するオクルージョン領域を、参照画像を合成することによって、参照画像から補間する手順を示した。以上のように構成することで、視聴者はボリューム４０１を操作することにより、所望の立体感となるように調整することが可能となる。また、複数の撮影装置で構成しなくても、単眼の撮影装置から、所望の立体感が得られるような立体画像を生成することが可能となる。
【０１１５】
なお、上述の式（２）において、βは固定値としたが、任意の値で良い。ボリューム４０１とは異なる、不図示のボリュームを構成して、視聴者が自由に変更できるように構成しても良い。また、βは、画界Ｄを撮影画像の横方向の全画素数で割った値でも良い。このとき、画界Ｄはレンズ装置のフォーカスレンズ１１１を含む光学系から焦点距離を算出することになる。その場合は、距離データに焦点距離情報を埋め込んでも良い。このように構成すると、さらに精度の高いシフト量の算出が可能となる。このことは以降の実施例についても同様である。
【０１１６】
また、本実施例では、レンズ装置１００内部に測距部を設けることによって距離データを算出したが、撮像素子２０１と一体型の構成としても同様の効果が得られる。このことは以降の実施例についても同様である。
【０１１７】
また、本実施例では、レンズ装置１００と撮像装置２００とを分けて構成したが、一体型としても良い。このことは以降の実施例についても同様である。
【０１１８】
また、上述の式（２）において、図１０のθを０と近似して式を示したが、厳密にθつまり輻輳角を用いて、式（２）を導出しても良い。この場合は、さらに精度の高いシフト量の算出が可能となる。このことは以降の実施例についても同様である。
【０１１９】
以上、本実施例で説明したように構成することによって、視聴者の所望する立体画像を生成、出力する立体映像装置を提供することが可能となる。
【０１２０】
［実施例２］
実施例１では、視聴者が入力するコンバージェンスポイント相当のパラメータを用いて、左目用および右目用画像を生成する例について示した。この時、コンバージェンスポイントの位置を可変としているため、各エリアの立体感は調整できるが、画面全体の視差量のダイナミックレンジを変更することはできない。そこで、本実施例では、基線長αを視聴者が自由に変更できるように構成する。このように構成することで、コンバージェンスポイントを変更することによる飛び出し感と奥行き感を変更し、基線長αを変更することによって、視差量のダイナミックレンジを変更し、立体画像を生成する構成例を示す。
【０１２１】
本実施例における構成図を図２５に示す。図２５に示した構成は、実施例１の図１で示した構成に加え、立体パラメータ入入力部Ａ３１１とボリュームＡ４１１が構成されている。ボリュームＡ４１１はボリューム４０１と同様に、視聴者が操作するためのものであり、ボリュームＡ４１１で操作された値は立体パラメータ入力部Ａを通して、画像処理部３０２に入力されている。これら以外は、実施例１で示した図１と同様の構成であるため、説明を省略する。
【０１２２】
本実施例では、上述のボリュームＡ４１１の入力値にもとづいて視差量のダイナミックレンジを変更する。これらの処理は画像処理部３０２が行うが、詳細は後述する。
【０１２３】
レンズ装置１００における、撮像エリアを複数に分割した各エリアの距離を算出する流れは、実施例１で示した図３フローチャートと同様の処理を行うため、説明を省略する。
【０１２４】
本実施例では、実施例１と同様に、図２に示した撮影画像を用いて立体画像を生成させる例について説明する。実施例１で示した通り、図４で示した領域１および領域２を拡大した領域には、それぞれ図５および図６で示した距離データが格納されているものとする。これらの距離データは、画像変換部２０２から出力される映像に同期してレンズ装置１００から出力される。
【０１２５】
続いて、本実施例における、立体映像装置３００の画像処理部３０２が行う立体映像合成処理の流れを図２６のフローチャートに示す。立体映像装置３００に電源が入ると、画像処理部３０２の処理は、図２６のステップＳ２１０から順番に処理を実行していく。図２６のフローチャートはＳ２１０からＳ２３０、Ｓ３１０、Ｓ３２０、Ｓ２５０からＳ２８０を実行すると、再びＳ２１０に戻って実行する。
【０１２６】
図２６のステップＳ２１０からＳ２３０は、図７で示した処理と同様であるため、説明を省略する。ステップＳ２３０を実行すると、次にステップＳ３１０へと進む。
【０１２７】
図２６のステップＳ３１０では、立体パラメータ入力部Ａ３１１は、ボリュームＡ４１１の信号を入力し、その値を画像処理部３０２へ出力する。
【０１２８】
次に、ステップＳ３２０へと進み、視差量の演算を行う。ここで、図２６のステップＳ３２０のサブルーチンを図２７に示す。
【０１２９】
図２７のサブルーチンでは、ステップＳ２４１から処理が実行される。図１６のステップＳ２４１は、図８のステップＳ２４１と同様に立体パラメータ入力部３０４から入力した値をコンバージェンスポイントに相当する距離データに変換する。ステップＳ２４１を実行すると、ステップＳ３２１へと進む。
【０１３０】
ステップＳ３２１では、基線長パラメータを設定する。図２６のステップＳ３１０で得られた立体パラメータγを基線長パラメータとして設定する。γは任意のレンジで良い。ステップＳ３２１を実行すると、ステップＳ２４３へと進む。ステップＳ２４３からステップＳ２４７は、図８のステップＳ２４３からステップＳ２４７と同様である。ステップＳ２４３からステップＳ２４５は説明を省略する。
【０１３１】
実施例２においても、実施例１と同様に、ステップＳ２４１で設定されたコンバージェンスポイントを「２０」として説明する。
【０１３２】
ステップＳ２４６では、実施例１と同様に、ステップＳ２４５で得られたＤｉｆｆデータをもとに、各エリアにおける画像のシフト量ＳｈｉｆｔＮｕｍを算出する。図２８では、ステップＳ３２１で設定意した基線長γだけ乖離したレンズ配置を想定し、被写体を撮影したイメージ図を示している。この時、実施例１と同様に、θを０と近似すれば、シフト量は式（３）で得られる。また、図２８の画界Ｄとは、実施例１の図１０と同様に撮影装置の画角である。式（３）のβとは、式（２）のβと同様の値であり、任意の値で良い。
【０１３３】
ShiftNum[AreaNo] = (γ/ 2)× Diff[AreaNo] / Conv.Pt ×β…式（２）
ステップＳ２４６では、全エリアのシフト量を算出する。このシフト量は、実施例１の図７のＳ２５０で示したように、左目用の画像と右目用の画像を生成する際に使用するパラメータである。
【０１３４】
本実施例では、式（３）のγがボリュームＡ４１１の入力値に基づいて可変となる。式（３）において、γは係数として作用するため、ＳｈｉｆｔＮｕｍに対しゲインを与えることとなる。したがって、γを変更することにより、視差量を調整することが可能となる。
【０１３５】
図２７のステップＳ２４６を実行すると、ステップＳ２４７に進み、ＡｒｅａＮｏをインクリメントし、ステップＳ２４４へ戻る。こうしてすべてのエリアのシフト演算が完了すると、ステップＳ２４４が偽となり、図２７のサブルーチンを終了する。
【０１３６】
図２６のフローチャートの説明に戻る。ステップＳ３２０が実行された後は、ステップＳ２５０に進む。ステップＳ２５０からステップＳ２８０までの処理は、実施例１の図７で示した処理と同様であるため、説明を省略する。図２６のフローチャート実行することによって、左目用および右目用画像が生成される。
【０１３７】
このように、実施例１で示したボリューム４０１によるコンバージェンスポイントの指令に加え、ボリュームＡ４１１によって、基線長γを入力パラメータとして加えた例について示した。ボリューム４０１の操作によって、各被写体の奥行き感、飛び出し感を調整することができ、ボリュームＡ４１１の操作によって、奥行き量、飛び出し量のダイナミックレンジを変更することができる。視聴者は、立体映像を出力するモニタからの距離や画面サイズによって、所望の立体感となるように調整することが可能となる。
【０１３８】
以上、本実施例で説明したように構成することによって、視聴者の所望する立体画像を生成、出力する立体映像装置を提供することが可能となる。
【０１３９】
［実施例３］
実施例１および実施例２では、レンズ装置１００で撮影画像の距離データを生成し、生成された距離データに基づいて、撮像装置２００から得られる映像を立体映像にオンライン変換した例について示した。これら距離データの埋めこまれた映像データを用いることにより、立体映像をオフラインで生成することも可能である。本実施例では、距離データが埋めこまれた映像データから立体映像を生成する例について示す。
【０１４０】
本実施例の構成図を図２９に示す。図２９では、再生機５００と立体映像装置３００から構成されている。再生機５００からは距離データが埋めこまれた映像が出力され、立体映像装置３００の画像処理部３０２へ入力されている。
【０１４１】
再生機５００から出力される映像に埋めこまれた距離データは、実施例１や実施例２で示したように、複数のエリアに分割されている。例えば、図５や図６で示したような距離データが埋めこまれている。
【０１４２】
図２９の説明に戻る。ボリューム４０１は視聴者が操作することによって、その値が立体パラメータ入力部３０４を通じて、画像処理部３０２へ入力される。画像処理部３０２は後述する立体映像を生成する処理を行い、画像出力部３０５を通じて、立体映像装置３００の外部へ立体映像を出力する。
【０１４３】
続いて、本実施例における、立体映像装置３００の画像処理部３０２が行う立体映像合成処理の流れを図３０のフローチャートに示す。立体映像装置３００に電源が入ると、画像処理部３０２の処理は、図３０のステップＳ２１０から順番に処理を実行していく。図３０のフローチャートはＳ２１０、Ｓ４１０、Ｓ２３０からＳ２８０を実行すると、再びＳ２１０に戻って繰り返して処理を実行する。
【０１４４】
図３０のステップＳ２１０では、画像処理部３０２は、再生機５００から入力された映像データを配列データなどへデコードし、不図示のＲＡＭ等に保持する。実施例１と同様に、数フレーム分の映像を記憶しておく。フレーム数は任意で良い。
【０１４５】
次にステップＳ４１０へと進み、距離データを解読する。再生機５００から出力される映像信号のフォーマットは任意のフォーマットで良い。Ｓ４１０でデコードする距離データは各種映像信号のフォーマットに合わせて、任意の方法で実施して良い。
【０１４６】
ステップＳ４１０で距離データをデコードすると、実施例１の図５や図６で示したような距離データが取得される。ステップＳ４１０が実行されると、ステップＳ２３０に進む。
【０１４７】
図３０のステップＳ２３０からステップＳ２８０は実施例１と同様の処理が実行されるため、説明を省略する。
【０１４８】
視聴者はボリューム４０１を操作することによって、画像出力部３０５から出力される映像の視差量を変更することができ、視聴者の所望する立体感を得ることが可能となる。
【０１４９】
実施例１や実施例２では、レンズ装置１００から距離データを取得したが、本実施例のように、あらかじめ距離データが埋めこまれた映像を再生する再生機５００を構成しても同様の効果が得られる。
【０１５０】
なお、本実施例では、ボリューム４０１を構成したが、実施例２で示したように、ボリュームＡ４１１を同様に構成し、ボリューム４０１によってコンバージェンスポイントを調整し、ボリュームＡ４１１によって、基線長を調整するように構成しても良い。このように構成することによって、実施例２で示した効果と同様の効果を得ることができる。
【０１５１】
以上、本発明の好ましい実施例について説明したが、本発明はこれらの実施形態に限定されないことはいうまでもなく、その要旨の範囲内で種々の変形及び変更が可能である。また、本稿で述べた実施例を組み合わせて実施しても良い。
【０１５２】
なお、本発明では、距離データを複数のエリアに分割して、分割したエリア毎に距離データを持つ構成としたが、撮像画素毎に距離データを保持しても良い。また、再生機５００から出力される映像は任意のフォーマットで良く、映像と共に距離データを埋めこむことが可能な規格であれば、規格は問わずに本発明を適用することが可能である。
【０１５３】
また、本発明では、各被写体を距離別つまり視差量別にグループ化した例について示したが、任意の視差量を超えた範囲の被写体を同一のグループとしてまとめて、立体映像を生成しても良い。視差量が大きいほど、立体映像として破綻してしまう可能性があるためである。上記のように適切な視差量で制限することによって、良好な立体映像が得られる。
【０１５４】
また、図３１に示すように、距離データが埋めこまれた映像データを記憶装置６００に保存しておき、立体映像装置３００は、記憶装置６００から映像を読み出して、立体映像を生成しても良い。その方法は本実施例で示した手順にしたがって実施することができる。さらに、記憶装置６００から映像をデコードする場合は、現在再生中の映像よりも先の時刻のデータを先読みしておくことで、グループ画像を生成し、オクルージョン領域を補間しても良い。
【符号の説明】
【０１５５】
１００  レンズ装置、１１１  フォーカスレンズ、１１２  モータ、１１３  ドライバ、
１１４  位置検出器、１３０  ＣＰＵ、１３１  通信部、１３２  測距部、
１３３  制御部、１３４  レンズ制御部、２００  撮像装置、２０１  撮像素子、
２０２  画像変換部、３００  立体映像装置、３０１  通信部、３０２  画像処理部、
３０３  画像記憶部、３０４  立体パラメータ入力部、３０５  画像出力部、
４０１  立体パラメータ入力部Ａ、４１１  ボリュームＡ、５００  再生機、
６００  記憶装置
【図１】
2017085207.tif 000003
【図２】
2017085207.tif 000004
【図３】
2017085207.tif 000005
【図４】
2017085207.tif 000006
【図５】
2017085207.tif 000007
【図６】
2017085207.tif 000008
【図７】
2017085207.tif 000009
【図８】
2017085207.tif 000010
【図９】
2017085207.tif 000011
【図１０】
2017085207.tif 000012
【図１１】
2017085207.tif 000013
【図１２】
2017085207.tif 000014
【図１３】
2017085207.tif 000015
【図１４】
2017085207.tif 000016
【図１５】
2017085207.tif 000017
【図１６】
2017085207.tif 000018
【図１７】
2017085207.tif 000019
【図１８】
2017085207.tif 000020
【図１９】
2017085207.tif 000021
【図２０】
2017085207.tif 000022
【図２１】
2017085207.tif 000023
【図２２】
2017085207.tif 000024
【図２３】
2017085207.tif 000025
【図２４】
2017085207.tif 000026
【図２５】
2017085207.tif 000027
【図２６】
2017085207.tif 000028
【図２７】
2017085207.tif 000029
【図２８】
2017085207.tif 000030
【図２９】
2017085207.tif 000031
【図３０】
2017085207.tif 000032
【図３１】
2017085207.tif 000033