映像歪み補正方法及び同方法用プログラム
【課題】 投影中に観察者の位置が移動しても、歪み補正により映像が自然な形で見えるようにした映像歪み補正方法を提供する。
【解決手段】 歪み補正の準備処理として、観察者の位置などの観察条件、プロジェクタの位置・方向・画角・アスペクト比などの投影条件及びスクリーン形状を表す多角形メッシュの3種のパラメータのうち、投影条件及びスクリーン形状条件は記憶部に記録しておき、投影時の処理として、入力された原画像を、観察条件を位置検出装置から随時取込みながら、前記3種のパラメータを含む所定の計算式により演算して透視変換を行い、かつ、透視変換後の座標系をテクスチャ座標系に変換し、そのテクスチャ座標系を用いてグラフィックス・アクセラレータのテクスチャマッピング機能により補正画像をフレームバッファに描画して、その補正画像を映像信号としてプロジェクタに出力するようにした。
【解決手段】 歪み補正の準備処理として、観察者の位置などの観察条件、プロジェクタの位置・方向・画角・アスペクト比などの投影条件及びスクリーン形状を表す多角形メッシュの3種のパラメータのうち、投影条件及びスクリーン形状条件は記憶部に記録しておき、投影時の処理として、入力された原画像を、観察条件を位置検出装置から随時取込みながら、前記3種のパラメータを含む所定の計算式により演算して透視変換を行い、かつ、透視変換後の座標系をテクスチャ座標系に変換し、そのテクスチャ座標系を用いてグラフィックス・アクセラレータのテクスチャマッピング機能により補正画像をフレームバッファに描画して、その補正画像を映像信号としてプロジェクタに出力するようにした。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、映像プロジェクタ(以下、単にプロジェクタという。)によりスクリーンに投影される映像の歪みを補正する方法、とくに、投影中に観察者の視錘台の位置が移動する場合の映像の歪みを補正するもの、及び同映像歪み補正方法用プログラムに関する。
【背景技術】
【0002】
プロジェクタで映像をスクリーンに投影する場合、プロジェクタの位置・投射方向など(以下、投影条件という。)及び観察者の位置など(以下、観察条件という。)により、映像が歪んで見えることがある。このような映像の歪みを解消する方法の一つとして、スクリーンの距離、傾斜角及び方位角などのパラメータを算出し、入力する原画像を上記パラメータを用いて補正(透視変換)して補正画像を出力するものが、特許文献1に開示されているが、上記従来方法は、具体的な実装方法についての記述がなく、処理速度に関する考慮もなされていない。従って、動画像の再生などのように、補正処理に高速性を要求されるアプリケーションへの適用が可能であるか甚だ疑問である。
【特許文献1】特開2001−61121号公報
【0003】
そこで、本出願人は、特許文献2に、高速な歪み補正処理を実現し、映像の自然な運動表現が可能な映像歪み補正方法の発明(旧発明1)を提案した。また、投影条件、観察条件及びスクリーン形状のいかんを問わず、スクリーンに投影される映像が観察者から見て歪まないよう補正することができ、しかも、投影条件又は観察条件が変更された場合でも、ハード的、プログラム的には何ら変更を要することなく、パラメータ変更のみで対応できる映像歪み補正方法の発明(旧発明2)を提案した。さらに、上記映像補正方法を実現するための、様々なユーザプログラムに組み込んで使用可能なプログラム(ライブラリ)の発明(旧発明3)を提案した。
【特許文献2】特開2004−72553号公報
【0004】
上記旧発明1に係る映像歪み補正方法の基本的な考え方を、図1を参照しながら説明する。図1はスクリーンに投影される映像の歪みの原因と、その歪み補正の原理を説明する模式図である。図1において、Aは観察者、Pはプロジェクタ、Sはスクリーンである。
【0005】
観察者Aの視錘台(Viewing frustum)とプロジェクタPの投影錘台(Projection frustum)が一致する状態でスクリーンSに投影した映像(a)は、観察者Aの目に歪みのない状態で入るはずである。しかし、観察者Aの視錘台とプロジェクタPの投影錘台が不一致の状態でスクリーンSに投影した映像(b)は、観察者には歪んで見える。従って、プロジェクタPからスクリーンSに投影される映像の歪みをキャンセルするには、そのプロジェクタPの位置から投影された映像(b)が結果的に(a)と一致するように、逆シミュレーションにより予め映像(b)を歪めておけば良い。
【0006】
従って、1)スクリーンSの形状を表す多角形メッシュに対して、観察者の視錘台を使用して原画像をテクスチャとして貼り付け(Projection mapping)、次に、2)原画像が貼りついた状態のスクリーンSの多角形メッシュをプロジェクタPの投影錘台を使用して描画し、3)結果として得られた画像をプロジェクタPから投影すれば、観察者Aは、歪みのない画像を見ることができる。
【0007】
上記知見に基き、旧発明1の画像歪み補正方法は、歪み補正の準備処理として、観察者の位置などの観察条件、プロジェクタの位置・方向・画角・アスペクト比などの投影条件、及びスクリーン形状を表す多角形メッシュをパラメータとして記録しておき、投影時の処理として、入力された原画像を前記パラメータを含む所定の計算式により演算して透視変換を行い、かつ、透視変換後の座標系をテクスチャ座標系に変換し、そのテクスチャ座標系を用いてグラフィックス・アクセラレータのテクスチャマッピング機能により補正画像をフレームバッファに描画して、その補正画像を映像信号としてプロジェクタに出力するようにしたものである。
【0008】
従来、映像歪み補正に限らず、画像データに対する幾何学補正は、一旦メインメモリ上に画像データを展開し、CPUを使用して各画素を操作し、フレームバッファに処理済の画像データを転送するといった方法を取るのが一般的であった。この方法は下記のような理由により処理時間が長くなる可能性が高い。
一般的なPC・WS環境では、CPUは全てのタスク間で共用されるので、一般的に、CPUは大量のベクトルデータに対する演算には不向きである。原画像がフレームバッファ上にある場合には、これを一旦メインメモリ上に展開しなくてはならない(余分なバス転送が発生する)。
【0009】
これに対し、旧発明1では、補正前画像の画素Rを補正後画像の画素R’に変換する計算処理全般に、グラフィックス・アクセラレータのテクスチャマッピング機能を利用するので、上記問題を解決し、高速な補正処理を実現可能である。
【0010】
旧発明2の画像歪み補正方法は、請求項1の発明におけると同一の準備処理に続き、投影時の処理として、上記パラメータを用いて、次の(a)及び(b)の2段階の処理を行うことによりフレームバッファに補正済み画像を格納し、前記フレームバッファに格納された補正済み画像を、映像信号として映像プロジェクタに出力するようにしたものである。すなわち、
(a)入力された原画像をテクスチャとしてポリゴンにより構成されるスクリーン形状に対して貼り付ける第1段階の処理。この場合、前記スクリーン形状の各頂点座標とテクスチャとして参照される原画像の画素座標の対応は、前記視錘台のパラメータを含む次の行列式(数式1)により決定される。
【数5】
(b)原画像を貼り付けた前記スクリーン形状を前記フレームバッファに描画する第2段階の処理。この場合、前記スクリーン形状の各頂点座標と出力画像の画素座標の対応は、前記投影錘台のパラメータを含む次の行列式(数式2)により決定される。
【数6】
【発明の開示】
【発明が解決しようとする課題】
【0011】
本出願人が先に提案した発明は、投影中に観察者の(視錘台の)位置が移動しないことを前提としたものであった。投影終了後は、移動後の観察者の位置に応じて新たにパラメータを設定し記憶させれば、新視点に対応した映像補正が実行される。
ところで、投影されている映像又はその一部に対して観察者が何らかの模擬行動、例えば、撮影、射撃、離着陸等の訓練を行う場合は、その観察者(訓練者)が投影中に観察位置(視点)を間欠的に又は連続的に移動することが少なくない。上述した先発明では、このような投影中の観察者の移動に迅速に対応することができなかった。
そこで、本発明は、投影中の観察者の移動に迅速に対応することができる映像歪み補正方法を提供することを第一の課題としている。
また、別の課題は、その映像歪み補正方法を実現するための、様々なユーザプログラムに組み込んで使用できるプログラム(ライブラリ)を提供することにある。
【課題を解決するための手段】
【0012】
本発明は、第一の課題を解決するため、映像歪み補正方法において、準備処理として、映像プロジェクタの位置、投影方向、画角などにより決定される投影錘台のパラメータ及びスクリーンの形状のパラメータを記憶部に記録して置き、投影時の処理として、観察者の位置、視線方向、視野角などにより決定される視錘台のパラメータを随時取込み、そのパラメータ及び前記記憶部から読出したパラメータを含む所定の計算式により演算して入力された原画像の透視変換を行い、かつ、透視変換後の座標系をテクスチャ座標系に変換し、そのテクスチャ座標系を用いてグラフィックス・アクセラレータのテクスチャマッピング機能により補正画像をフレームバッファに描画して、その補正画像を映像信号として前記映像プロジェクタに出力することを特徴としている(請求項1)。
【0013】
また、上記第一の課題は、準備処理として、映像プロジェクタの位置、投影方向、画角などにより決定される投影錘台のパラメータ及びスクリーンの形状のパラメータを記憶部に記録して置き、投影時の処理として、観察者の位置、視線方向、視野角などにより決定される視錘台のパラメータを随時取込み、そのパラメータ及び前記記憶部から読出したパラメータを用いて、次の(a)及び(b)の2段階の処理を行うことによりフレームバッファに補正済み画像を格納し、前記フレームバッファに格納された補正済み画像を、映像信号として映像プロジェクタに出力することによっも、解決される(請求項2)。
(a)入力された原画像をテクスチャとしてポリゴンにより構成されるスクリーン形状に対して貼り付ける第1段階の処理。この場合、前記スクリーン形状の各頂点座標とテクスチャとして参照される原画像の画素座標の対応は、前記視錘台のパラメータを含む次の行列式(数式1)により決定される。
【数7】
(b)原画像を貼り付けた前記スクリーン形状を前記フレームバッファに描画する第2段階の処理。この場合、前記スクリーン形状の各頂点座標と出力画像の画素座標の対応は、前記投影錘台のパラメータを含む次の行列式(数式2)により決定される。
【数8】
【0014】
そして、前記別の課題を解決するため、本発明による映像歪み補正方法用プログラムは、スクリーン形状の各頂点座標とテクスチャとして参照される原画像の画素座標との対応を、前記数式1により決定して、入力された原画像をテクスチャとしてスクリーン形状に対して貼り付けるステップと、スクリーン形状の各頂点座標と、出力画像の画素座標との対応を、前記数式2により決定して、原画像を貼り付けたスクリーン形状をフレームバッファに描画するステップと、前記フレームバッファに格納された補正済み画像を映像信号としてプロジェクタに出力するステップとを含むことを特徴としている(請求項3)。
【0015】
この画像歪み補正方法用ライブラリは、OpenGL又はDirectX対応のグラフィックス・アクセラレータを搭載したPC又はWSにおいて、観察者の位置検出データに基づき随時入力する観察条件を取り込むとともに、設定ファイルに記録された投影条件、スクリーン形状などの各種パラメータを読み込み、歪み補正処理に必要な実行環境を整え、メインメモリ上に展開された原画像、又はフレームバッファ上の原画像をテクスチャメモリへ転送し、グラフィックス・アクセラレータのテクスチャ座標変換機構及び頂点座標変換機構を適宜設定してスクリーン形状を描画することにより、フレームバッファ上に補正済み画像を得るようにし、処理終了時にはシステムリソースを適宜解放するためのアプリケーション・プログラミング・インタフェース(API)を有している。そのため、映像投影用ユーザプログラムにおいて画像歪み補正を必要とする場合は、そのユーザプログラムに組み込んで使用することが可能である。
【発明の効果】
【0016】
上述のように、請求項1の発明によれば、原画像を随時入力される観察条件、及び記憶部から読み取った投影条件及スクリーン形状のパラメータを含む所定の計算式により演算して透視変換し、かつ、透視変換後の座標系をテクスチャ座標系に変換し、そのテクスチャ座標系を用いて、高速処理が可能なグラフィックス・アクセラレータのテクスチャマッピング機能により補正画像を得るようにしたので、高速な歪み補正処理を実現し、映像の自然な運動表現が可能となった。
【0017】
また、請求項2の発明によれば、投影時の処理として、スクリーン形状の各頂点座標とテクスチャとして参照される原画像の画素座標の対応を随時入力される観察条件パラメータを含む数式1により決定して、入力された原画像をテクスチャとしてポリゴンにより構成されるスクリーン形状に対して貼り付ける処理と、前記スクリーン形状の各頂点座標と出力画像の画素座標の対応を、投影条件パラメータを含む数式2により決定して、原画像を貼り付けた前記スクリーン形状を前記フレームバッファに描画する処理の2段階の処理を行うことにより、補正画像を生成し、その補正画像を映像信号として映像プロジェクタに出力するので、投影条件、観察条件及びスクリーン形状のいかんを問わず、スクリーンに投影される映像が観察者から見て歪まないよう補正することができ、しかも、観察条件が時々刻々変化する場合でも、ハード的、プログラム的には何ら変更を要することなく、位置検出装置などのパラメータ変更のみで対応できる。
【0018】
さらに、請求項3の発明によれば、様々なユーザプログラムに組み込んで使用可能な映像補正用ライブラリを提供することができる。
【発明を実施するための最良の形態】
【0019】
次に、本発明の実施の形態について、図2以下の図面を参照して説明する。
図2は、本発明による映像歪み補正方法を採用する映像投影装置の全体構成を示す斜視図、図3は観察台移動装置の一例を示す側面図、図4は位置検出装置の一例を示す回路図、図5は映像投影装置の映像歪み補正に係る主たる構成を概略的に示すブロック図、図6は透視変換における観察条件パラメータ(錘台)の説明図である。
【0020】
本発明方法を用いる映像投影装置10は、図5に示すように、各種の演算及び各部の制御を司るCPU11と、データバス12に接続されたグラフィックス・アクセラレータ13と、データバス12を介して入力するデータの格納、CPU11による展開のためのデータの授受、前記グラフィックス・アクセラレータ13へのデータの入出力を行うメインメモリ14とを有している。
【0021】
映像投影装置10は、その機能を実現する基本的構成要素として、グラフィックス・アクセラレータ13を有する。また、外部のビデオ映像に対して歪み補正を行う場合には、ビデオキャプチャ15が必要となる。さらに、プログラムデータやワーキングデータ等を格納しておくための外部記憶装置、処理された画像を印刷する場合のプリンタ等の他のI/O機器16がインタフェース(図示省略)を介してデータバス12に接続され、処理された画像を監視する場合は、モニターがグラフィックス・アクセラレータ13に接続される。
【0022】
そして、本発明の視点が随時又は連続的に移動する場合に対応する付加構成要素として、移動観察台101に関連して設けられた位置検出装置17がインタフェース(図示省略)を介してデータバス12に接続されている。
【0023】
グラフィックス・アクセラレータ13は、原画像を格納するのに充分な容量のテクスチャメモリ13a及び1フレーム分の映像データを格納可能なフレームバッファ13bを有するともに、描画パイプラインの一部として、3つの機能、すなわち、(ア)テクスチャマッピング機能、(イ)テクスチャ座標変換機能、(ウ)頂点座標変換機能を有する。
【0024】
テクスチャマッピング機能は、三次元モデルであるスクリーン形状(ポリゴン座標系)にテクスチャメモリ13aに格納されている二次元画像であるテクスチャを貼り付ける機能である。テクスチャ座標変換機能は、設定された行列により、入力されたテクスチャ座標を変換してテクスチャメモリ13a内の画素位置として出力する機能である。また、頂点座標変換機能は、設定された行列により、入力された各ポリゴンの頂点座標を変換してフレームバッファ13b内の画素位置として出力する機能である。
現在市販されているパーソナルコンピュータ(PC)用グラフィックス・アクセラレータ及びグラフィックスワークステーション(WS)の大多数は、上記3機能を提供している。
【0025】
移動観察台101は、図2及び図3に示すように、コックピット、撮影台、射撃台などスクリーンに投影された映像に向けて何らかの模擬行動をする人が乗り込み、映像を観察するためのものであり、第1テーブル102に固定されている。図3において、移動観察台101の左側がスクリーンSに対向する前方であり、右側が後方である。第1テーブル102は、第1サーボモータM1により駆動される昇降手段103により昇降される。104は、観察台101を負荷とする第1テーブル102の昇降時及び人員乗降の際のバランスを保つためのコイルスプリング又はガ゛ススプリングなどの弾性支持手段である。
【0026】
昇降手段103及び弾性支持手段104の下端部は、第2テーブル105の上面に固定されている。第1サーボモータM1の回転により、観察台101は上下方向、すなわち、Z軸方向に移動可能である。
【0027】
第2テーブル105の下面には、一例として、4個の車輪106が矩形の各角部に相当する位置に設けられ、少なくとも後方の一対の車輪は第2サーボモータM2により正方向又は逆方向に回転されるようになっている。
【0028】
前記4個の車輪106は、その下側に設置されていて、前後方向に長い第3テーブル107の上面に平行に敷設してある2本のレール108に沿って転動可能である。そして、第2サーボモータM2の回転により、観察台101は前後方向、すなわち、Y軸方向に移動可能である。109は、前後両終端で第2テーブルを止めるストッパである。
【0029】
第3テーブル107は、その前後方向の複数箇所において、映像投影室の床面110に突設された支持レール111の上面に回転自在に設けられたローラ112によって支持されている。そして、第3テーブル107の下面に突設されたガイドローラ113が各支持レール111の互いに反対側の面に当接されて、一定の位置で左右方向に移動自在に支持されている。その少なくとも1個のガイドローラが第3サーボモータM3により回転されて、第3テーブル107は、スクリーンS方向に対して直角方向、すなわち、X軸方向に移動されるようになっている。
【0030】
上記の構成により、各サーボモータM1,M2,M3を制御された回転角度まで回転させることにより、観察台101は、X,Y,Zの3座標値により決められた位置に移動可能である。
【0031】
通常は、観察台101がスクリーンSの中心を通る水平直線上(支持レール111の長手方向中央)、レール108の前後方向の中央、第1テーブル102の最下位に存在するときが、X,Y,Zの座標値0(X0,Y0,Z0)、すなわち、原点とされ、その原点より右側が+X,左側が−X,原点から前方が+Y,後方が−Y,原点から上方が+Z,下方が−Zなどに決定することができる。
【0032】
そして、観察台101の時々刻々変わりうる現在位置を座標データで表すために位置検出装置114が備えられている。位置検出装置114は、各モータM1,M2,M3により回転されるロータリーエンコーダE1,E2,E3と、各ロータリーエンコーダから出力されるパルスを受信して計数するカウンタC1,C2,C3と、各カウント値を座標値に変換するコンバータCNVとからなっている。このコンバータCNVの出力値がデータバス12を介して記憶部(RAM)に随時取り込まれるようになっている。
【0033】
なお、第3テーブル107の支持機構及び移動機構、並びに位置検出装置は、上述されたものに限られない。とくに、位置検出装置は、レーザー光や赤外線等を用いる光学的位置検出方法、レールに沿って設けた磁気的検出方法などの既知の方法を用いることができる。
【0034】
本発明方法においては、画像歪み補正を行うために、準備処理として、3種のパラメータである観察条件パラメータ(視錘台)、投影条件パラメータ(投影錘台)、及びスクリーンの形状パラメータのうち、変動のない投影条件パラメータとスクリーン形状パラメータは、外部記憶装置に記録されている。しかし、観察条件パラメータについては、投影処理時に、上記位置検出装置から随時入力されて記憶部(RAM)に取り込まれるデータを用いるようになっている。
【0035】
次に、このパラメータの取込み処理について詳細に説明する。
錘台は透視変換を表現するため一般的に用いられる概念であり、図6に示すように、頂点(Apex)30を基準としたl(left),r(right );b(bottom),t(top );n(near),f(far )の6つの値により決定されるが、上記位置検出送致から取り込まれる座標値−X,+X;−Y,+Y;−Z,+Zがそれぞれl(left),r(right );n(near),f(far );b(bottom),t(top )に相当する。
【0036】
準備処理における視錘台・投影錘台の指定は、下記のいずれかの方法で行う。
1)l,r,b,t,n,fを直接指定する。
2)視野角/画角、アスペクト比、n,fにより間接的にl,r,b,tを指定する。 ただし、左右上下に非対称な錘台を指定する場合は、1)の方法を用いる必要がある。 スクリーン形状は、何らかの方法、例えば、スクリーン設計時のCADデータを使用したり、三次元形状スキャナを使用したりなどにより、多角形メッシュとして表現され得るものである。準備処理では、この多角形メッシュを構成する頂点配列をパラメータとして指定する。
準備処理において指定する全てのパラメータは、原点の位置、座標系(XYZ各軸の方向と、回転の正負方向)及び単位系(メートル、ラジアンなど)の情報を共有する必要がある。
【0037】
続いて、図6及び図7に基づいて投影時の処理の詳細について説明する。図6は投影時処理のフローチャート、図7はグラフィックス・アクセラレータによるテクスチャ座標変換及び頂点座標変換を説明する概念図である。
投影時の処理は、上述の記録されたパラメータを用いて、次の処理を行うことにより、フレームバッファに補正済み画像を格納する。そして、そのフレームバッファに格納された補正済み画像を、映像信号としてプロジェクタに出力するようになっているが、投影時の処理においては、まず、
1)S41において、入力する原画像をテクスチャメモリ13aに転送して格納する。 原画像をテクスチャメモリに格納するには、下記の幾通りかの方法が採用可能である。すなわち、ビデオキャプチャ14により入力した画像をテクスチャメモリ13aに転送する方法。フレームバッファ13b上の画像をテクスチャメモリ13aに複写する方法。及び、テクスチャメモリ13aに対して直接描画する方法である。
2)次に、S42において、随時取り込まれる観察条件に従って、スクリーン形状の各頂点にテクスチャ座標を設定する。実際の処理では、図5に示すように、数式1の行列Moを上述されたグラフィックス・アクセラレータ13のテクスチャ座標変換機構131に設定する。
3)また、S43において、投影条件に従って、スクリーン形状の各頂点を座標変換する。実際の処理では、図8に示すように、数式2の行列Mpをグラフィックス・アクセラレータ13の頂点座標変換機構132に設定する。
4)そして、S44において、頂点座標変換機構132及びテクスチャ座標変換機構131にスクリーン形状の頂点座標Vを入力することにより、スクリーン形状を描画する。 結果として、図8に示すように、テクスチャとして参照される原画像の画素座標Rから出力画像の画素座標R’への転送(R→R’)が行われる。これをスクリーン形状の全頂点に対して連続的に行って、スクリーン形状を描画することにより、フレームバッファ13bに補正済み画像を得る。この補正済み画像が、映像信号として図2のプロジェクタなどに出力される。
なお、フレームバッファ13bの各R’の間の画素は、グラフィックス・アクセラレータにより適宜補間された値が設定される。
【0038】
上述した映像歪み補正方法を実行するプログラムは、映像投影アプリケーションプログラムの一部に組み込んで使用される単体プログラムとして、すなわち、歪み補正ソフトウェアライブラリ(以下、補正ライブラリ)として、次の内容を有して提供可能である。
補正ライブラリは、下記の特徴を有している。
補正ライブラリは、ANSI(American National Standard Institute)C/C++規格に準拠して記述されており、様々なプラットフォームに容易に移植可能である。また、補正ライブラリは、グラフィックス・アクセラレータへのインタフェースとして、広く一般的に使用されているプラットフォームであるOpenGL又はDirectXのいずれかを選択的に使用可能になっており、両者のいずれかをサポートするグラフィックス・アクセラレータを使用可能である。
【0039】
補正ライブラリは、アプリケーション・プログラミング・インタフェース(API)として、下記の関数群をエクスポートする。
1)初期化関数
これは、準備処理において、ハードディスクなどで構成されるファイルシステム上のファイル(以下、設定ファイルという)に記録された、観察条件、投影条件、スクリーン形状などの各種パラメータを読み込み、歪み補正処理に必要な実行環境を整えるものである。
2)テクスチャメモリへの画像転送関数
これは、メインメモリ14上に展開された原画像又はフレームバッファ13b上の原画像をテクスチャメモリ13aへ転送するものである。
3)歪み補正実行関数
これは、グラフィックス・アクセラレータ13の前記テクスチャ座標変換機構41及び頂点座標変換機構42を適宜設定し、スクリーン形状を描画することにより、フレームバッファ13b上に補正済み画像を得るものである。
4)終了関数
これは、前記初期化関数で確保した各種システムリソース(メインメモリ領域、テクスチャメモリ領域など)を解放して、上記映像歪み補正処理を終了するためのものである。
【0040】
上記のような補正ライブラリは、前記APIを通じて、映像歪み補正処理を必要とする様々なユーザプログラムに組み込んで利用することが可能である。例として、下記の3種のユーザプログラムに組み込んで使用する場合を、項を分けて説明する。
【0041】
1)静止画像表示プログラムの場合
このプログラムは、ハードディスクなどに記録された画像ファイルを読み込み、これを描画(すなわち、フレームバッファに転送)し、映像出力する類のプログラムである。この種のプログラムに映像歪み補正機能を組み込むには、補正ライブラリを図9に示すように使用する。
このプログラムは、S61において、補正ライブラリの初期化関数を呼び出すことにより、設定ファイルを読み込み、数式1及び数式2の行列Mo、Mpを作成してメインメモリに記憶し、原画像を格納する為に必要なテクスチャメモリ領域を確保する。
S62において、任意の方法により対象となる画像ファイルを特定して、画像データをメインメモリに展開する。
S63において、補正ライブラリの画像転送関数を呼び出すことにより、メインメモリに展開された画像データをテクスチャメモリに転送する。
S64において、補正ライブラリの歪み補正実行関数を呼び出すことにより、フレームバッファに補正済み画像を得る。
S65おいてプログラム終了時には、S66おいて、補正ライブラリの終了関数を呼び出すことにより、初期化関数で確保した各種システムリソースを解放して、処理を終了する。
【0042】
2)動画像表示プログラムの場合
このプログラムは、ハードディスクなどに記録された動画ファイルから1フレームずつ連続して画像データを読み込み・描画し、動画像として映像出力する類のプログラムである。この種のプログラムに映像歪み補正機能を組み込むには、補正ライブラリを図10のように使用する。すなわち、
このプログラムは、S71において、補正ライブラリの初期化関数を呼び出すことにより、設定ファイルを読み込み、数式1・2の行列Mo、Mpを作成してメインメモリに記憶し、原画像を格納する為に必要なテクスチャメモリ領域を確保する。
S72において、任意の方法により対象となる動画ファイルを特定して、データストリームへのハンドルを得る(すなわち、オープンする)。
S73において、データストリームから1フレーム分の画像データを読み込み、メインメモリに展開する。
S74において、補正ライブラリの画像転送関数を呼び出すことにより、メインメモリに展開された画像データをテクスチャメモリに転送する。
S75において、補正ライブラリの歪み補正実行関数を呼び出すことにより、フレームバッファに補正済み画像を得る。
S76において、最終フレームの処理を終えたら、S77において、動画ファイルのデータストリームを解放する(すなわち、クローズする)。
S78において、プログラム終了時には、S79において、補正ライブラリの終了関数を呼び出すことにより、初期化関数で確保した各種システムリソースを解放して、処理を終了する。
【0043】
3)リアルタイムCGプログラムの場合
このプログラムは、ユーザの入力などのイベントにより動的に変化するシーンを1フレームずつ描画していく類のプログラムである。この種のプログラムに映像歪み補正機能を組み込むには、補正ライブラリを図11のように使用する。
このプログラムは、S81において、補正ライブラリの初期化関数を呼び出すことにより、設定ファイルを読み込み、数式1・2の行列Mo、Mpを作成してメインメモリに記憶し、原画像を格納する為に必要なテクスチャメモリ領域を確保する。
【0044】
S82において、キーボード、マウス入力などのイベントに応じて、表示すべきシーンの内容を適宜変化させる。
S84において、シーンを描画し、フレームバッファに1フレーム分の画像を得る。
S83において、プログラム未終了時には、S84において、補正ライブラリの画像転送関数を呼び出すことにより、フレームバッファ上の画像データをテクスチャメモリに複写する。(ただし、グラフィックス・アクセラレータによっては、テクスチャメモリに対して直接描画することができる場合がある。この場合は、S85の処理は不要となる。) S86において、補正ライブラリの歪み補正実行関数を呼び出すことにより、フレームバッファに補正済み画像を得る。
S83においてプログラム終了時には、S87において、補正ライブラリの終了関数を呼び出すことにより、初期化関数で確保した各種システムリソースを解放して、処理を終了する。
【0045】
上記実施の形態において、図7のS41,S42,S43,S44はそれぞれ、入力する原画像をテクスチャメモリに転送する手段、観察条件に従ってスクリーン形状の各頂点にテクスチャ座標を設定する手段、投影条件に従ってスクリーン形状の各頂点を座標変換する手段、座標変換をされたスクリーン形状を描画する手段を構成する。また、図8の131及び132は、それぞれS42による設定に基づきテクスチャ座標を変換するテクスチャ座標変換手段、S43による設定に基づきスクリーン形状の各頂点の座標を変換する頂点座標変換手段を構成している。
【図面の簡単な説明】
【0046】
【図1】スクリーンに投影される映像の歪みの原因と、その歪み補正の原理を説明する模式図。
【図2】本発明による映像歪み補正方法を採用する映像投影装置の全体構成を示す斜視図。
【図3】観察台移動装置の一例を示す側面図。
【図4】位置検出装置の一例を示す回路図。
【図5】映像投影装置の映像歪み補正に係る主たる構成を概略的に示すブロック図。
【図6】透視変換における観察条件パラメータ(錘台)の説明図。
【図7】投影時処理のフローチャート。
【図8】グラフィックス・アクセラレータによるテクスチャ座標変換及び頂点座標変換を説明する概念図。
【図9】本発明のライブラリを静止画像表示プログラムに組み込んで使用する場合のフローチャート。
【図10】本発明のライブラリを動画像表示プログラムに組み込んで使用する場合のフローチャート。
【図11】本発明のライブラリをリアルタイムCGプログラムに組み込んで使用する場合のフローチャート。
【技術分野】
【0001】
本発明は、映像プロジェクタ(以下、単にプロジェクタという。)によりスクリーンに投影される映像の歪みを補正する方法、とくに、投影中に観察者の視錘台の位置が移動する場合の映像の歪みを補正するもの、及び同映像歪み補正方法用プログラムに関する。
【背景技術】
【0002】
プロジェクタで映像をスクリーンに投影する場合、プロジェクタの位置・投射方向など(以下、投影条件という。)及び観察者の位置など(以下、観察条件という。)により、映像が歪んで見えることがある。このような映像の歪みを解消する方法の一つとして、スクリーンの距離、傾斜角及び方位角などのパラメータを算出し、入力する原画像を上記パラメータを用いて補正(透視変換)して補正画像を出力するものが、特許文献1に開示されているが、上記従来方法は、具体的な実装方法についての記述がなく、処理速度に関する考慮もなされていない。従って、動画像の再生などのように、補正処理に高速性を要求されるアプリケーションへの適用が可能であるか甚だ疑問である。
【特許文献1】特開2001−61121号公報
【0003】
そこで、本出願人は、特許文献2に、高速な歪み補正処理を実現し、映像の自然な運動表現が可能な映像歪み補正方法の発明(旧発明1)を提案した。また、投影条件、観察条件及びスクリーン形状のいかんを問わず、スクリーンに投影される映像が観察者から見て歪まないよう補正することができ、しかも、投影条件又は観察条件が変更された場合でも、ハード的、プログラム的には何ら変更を要することなく、パラメータ変更のみで対応できる映像歪み補正方法の発明(旧発明2)を提案した。さらに、上記映像補正方法を実現するための、様々なユーザプログラムに組み込んで使用可能なプログラム(ライブラリ)の発明(旧発明3)を提案した。
【特許文献2】特開2004−72553号公報
【0004】
上記旧発明1に係る映像歪み補正方法の基本的な考え方を、図1を参照しながら説明する。図1はスクリーンに投影される映像の歪みの原因と、その歪み補正の原理を説明する模式図である。図1において、Aは観察者、Pはプロジェクタ、Sはスクリーンである。
【0005】
観察者Aの視錘台(Viewing frustum)とプロジェクタPの投影錘台(Projection frustum)が一致する状態でスクリーンSに投影した映像(a)は、観察者Aの目に歪みのない状態で入るはずである。しかし、観察者Aの視錘台とプロジェクタPの投影錘台が不一致の状態でスクリーンSに投影した映像(b)は、観察者には歪んで見える。従って、プロジェクタPからスクリーンSに投影される映像の歪みをキャンセルするには、そのプロジェクタPの位置から投影された映像(b)が結果的に(a)と一致するように、逆シミュレーションにより予め映像(b)を歪めておけば良い。
【0006】
従って、1)スクリーンSの形状を表す多角形メッシュに対して、観察者の視錘台を使用して原画像をテクスチャとして貼り付け(Projection mapping)、次に、2)原画像が貼りついた状態のスクリーンSの多角形メッシュをプロジェクタPの投影錘台を使用して描画し、3)結果として得られた画像をプロジェクタPから投影すれば、観察者Aは、歪みのない画像を見ることができる。
【0007】
上記知見に基き、旧発明1の画像歪み補正方法は、歪み補正の準備処理として、観察者の位置などの観察条件、プロジェクタの位置・方向・画角・アスペクト比などの投影条件、及びスクリーン形状を表す多角形メッシュをパラメータとして記録しておき、投影時の処理として、入力された原画像を前記パラメータを含む所定の計算式により演算して透視変換を行い、かつ、透視変換後の座標系をテクスチャ座標系に変換し、そのテクスチャ座標系を用いてグラフィックス・アクセラレータのテクスチャマッピング機能により補正画像をフレームバッファに描画して、その補正画像を映像信号としてプロジェクタに出力するようにしたものである。
【0008】
従来、映像歪み補正に限らず、画像データに対する幾何学補正は、一旦メインメモリ上に画像データを展開し、CPUを使用して各画素を操作し、フレームバッファに処理済の画像データを転送するといった方法を取るのが一般的であった。この方法は下記のような理由により処理時間が長くなる可能性が高い。
一般的なPC・WS環境では、CPUは全てのタスク間で共用されるので、一般的に、CPUは大量のベクトルデータに対する演算には不向きである。原画像がフレームバッファ上にある場合には、これを一旦メインメモリ上に展開しなくてはならない(余分なバス転送が発生する)。
【0009】
これに対し、旧発明1では、補正前画像の画素Rを補正後画像の画素R’に変換する計算処理全般に、グラフィックス・アクセラレータのテクスチャマッピング機能を利用するので、上記問題を解決し、高速な補正処理を実現可能である。
【0010】
旧発明2の画像歪み補正方法は、請求項1の発明におけると同一の準備処理に続き、投影時の処理として、上記パラメータを用いて、次の(a)及び(b)の2段階の処理を行うことによりフレームバッファに補正済み画像を格納し、前記フレームバッファに格納された補正済み画像を、映像信号として映像プロジェクタに出力するようにしたものである。すなわち、
(a)入力された原画像をテクスチャとしてポリゴンにより構成されるスクリーン形状に対して貼り付ける第1段階の処理。この場合、前記スクリーン形状の各頂点座標とテクスチャとして参照される原画像の画素座標の対応は、前記視錘台のパラメータを含む次の行列式(数式1)により決定される。
【数5】
(b)原画像を貼り付けた前記スクリーン形状を前記フレームバッファに描画する第2段階の処理。この場合、前記スクリーン形状の各頂点座標と出力画像の画素座標の対応は、前記投影錘台のパラメータを含む次の行列式(数式2)により決定される。
【数6】
【発明の開示】
【発明が解決しようとする課題】
【0011】
本出願人が先に提案した発明は、投影中に観察者の(視錘台の)位置が移動しないことを前提としたものであった。投影終了後は、移動後の観察者の位置に応じて新たにパラメータを設定し記憶させれば、新視点に対応した映像補正が実行される。
ところで、投影されている映像又はその一部に対して観察者が何らかの模擬行動、例えば、撮影、射撃、離着陸等の訓練を行う場合は、その観察者(訓練者)が投影中に観察位置(視点)を間欠的に又は連続的に移動することが少なくない。上述した先発明では、このような投影中の観察者の移動に迅速に対応することができなかった。
そこで、本発明は、投影中の観察者の移動に迅速に対応することができる映像歪み補正方法を提供することを第一の課題としている。
また、別の課題は、その映像歪み補正方法を実現するための、様々なユーザプログラムに組み込んで使用できるプログラム(ライブラリ)を提供することにある。
【課題を解決するための手段】
【0012】
本発明は、第一の課題を解決するため、映像歪み補正方法において、準備処理として、映像プロジェクタの位置、投影方向、画角などにより決定される投影錘台のパラメータ及びスクリーンの形状のパラメータを記憶部に記録して置き、投影時の処理として、観察者の位置、視線方向、視野角などにより決定される視錘台のパラメータを随時取込み、そのパラメータ及び前記記憶部から読出したパラメータを含む所定の計算式により演算して入力された原画像の透視変換を行い、かつ、透視変換後の座標系をテクスチャ座標系に変換し、そのテクスチャ座標系を用いてグラフィックス・アクセラレータのテクスチャマッピング機能により補正画像をフレームバッファに描画して、その補正画像を映像信号として前記映像プロジェクタに出力することを特徴としている(請求項1)。
【0013】
また、上記第一の課題は、準備処理として、映像プロジェクタの位置、投影方向、画角などにより決定される投影錘台のパラメータ及びスクリーンの形状のパラメータを記憶部に記録して置き、投影時の処理として、観察者の位置、視線方向、視野角などにより決定される視錘台のパラメータを随時取込み、そのパラメータ及び前記記憶部から読出したパラメータを用いて、次の(a)及び(b)の2段階の処理を行うことによりフレームバッファに補正済み画像を格納し、前記フレームバッファに格納された補正済み画像を、映像信号として映像プロジェクタに出力することによっも、解決される(請求項2)。
(a)入力された原画像をテクスチャとしてポリゴンにより構成されるスクリーン形状に対して貼り付ける第1段階の処理。この場合、前記スクリーン形状の各頂点座標とテクスチャとして参照される原画像の画素座標の対応は、前記視錘台のパラメータを含む次の行列式(数式1)により決定される。
【数7】
(b)原画像を貼り付けた前記スクリーン形状を前記フレームバッファに描画する第2段階の処理。この場合、前記スクリーン形状の各頂点座標と出力画像の画素座標の対応は、前記投影錘台のパラメータを含む次の行列式(数式2)により決定される。
【数8】
【0014】
そして、前記別の課題を解決するため、本発明による映像歪み補正方法用プログラムは、スクリーン形状の各頂点座標とテクスチャとして参照される原画像の画素座標との対応を、前記数式1により決定して、入力された原画像をテクスチャとしてスクリーン形状に対して貼り付けるステップと、スクリーン形状の各頂点座標と、出力画像の画素座標との対応を、前記数式2により決定して、原画像を貼り付けたスクリーン形状をフレームバッファに描画するステップと、前記フレームバッファに格納された補正済み画像を映像信号としてプロジェクタに出力するステップとを含むことを特徴としている(請求項3)。
【0015】
この画像歪み補正方法用ライブラリは、OpenGL又はDirectX対応のグラフィックス・アクセラレータを搭載したPC又はWSにおいて、観察者の位置検出データに基づき随時入力する観察条件を取り込むとともに、設定ファイルに記録された投影条件、スクリーン形状などの各種パラメータを読み込み、歪み補正処理に必要な実行環境を整え、メインメモリ上に展開された原画像、又はフレームバッファ上の原画像をテクスチャメモリへ転送し、グラフィックス・アクセラレータのテクスチャ座標変換機構及び頂点座標変換機構を適宜設定してスクリーン形状を描画することにより、フレームバッファ上に補正済み画像を得るようにし、処理終了時にはシステムリソースを適宜解放するためのアプリケーション・プログラミング・インタフェース(API)を有している。そのため、映像投影用ユーザプログラムにおいて画像歪み補正を必要とする場合は、そのユーザプログラムに組み込んで使用することが可能である。
【発明の効果】
【0016】
上述のように、請求項1の発明によれば、原画像を随時入力される観察条件、及び記憶部から読み取った投影条件及スクリーン形状のパラメータを含む所定の計算式により演算して透視変換し、かつ、透視変換後の座標系をテクスチャ座標系に変換し、そのテクスチャ座標系を用いて、高速処理が可能なグラフィックス・アクセラレータのテクスチャマッピング機能により補正画像を得るようにしたので、高速な歪み補正処理を実現し、映像の自然な運動表現が可能となった。
【0017】
また、請求項2の発明によれば、投影時の処理として、スクリーン形状の各頂点座標とテクスチャとして参照される原画像の画素座標の対応を随時入力される観察条件パラメータを含む数式1により決定して、入力された原画像をテクスチャとしてポリゴンにより構成されるスクリーン形状に対して貼り付ける処理と、前記スクリーン形状の各頂点座標と出力画像の画素座標の対応を、投影条件パラメータを含む数式2により決定して、原画像を貼り付けた前記スクリーン形状を前記フレームバッファに描画する処理の2段階の処理を行うことにより、補正画像を生成し、その補正画像を映像信号として映像プロジェクタに出力するので、投影条件、観察条件及びスクリーン形状のいかんを問わず、スクリーンに投影される映像が観察者から見て歪まないよう補正することができ、しかも、観察条件が時々刻々変化する場合でも、ハード的、プログラム的には何ら変更を要することなく、位置検出装置などのパラメータ変更のみで対応できる。
【0018】
さらに、請求項3の発明によれば、様々なユーザプログラムに組み込んで使用可能な映像補正用ライブラリを提供することができる。
【発明を実施するための最良の形態】
【0019】
次に、本発明の実施の形態について、図2以下の図面を参照して説明する。
図2は、本発明による映像歪み補正方法を採用する映像投影装置の全体構成を示す斜視図、図3は観察台移動装置の一例を示す側面図、図4は位置検出装置の一例を示す回路図、図5は映像投影装置の映像歪み補正に係る主たる構成を概略的に示すブロック図、図6は透視変換における観察条件パラメータ(錘台)の説明図である。
【0020】
本発明方法を用いる映像投影装置10は、図5に示すように、各種の演算及び各部の制御を司るCPU11と、データバス12に接続されたグラフィックス・アクセラレータ13と、データバス12を介して入力するデータの格納、CPU11による展開のためのデータの授受、前記グラフィックス・アクセラレータ13へのデータの入出力を行うメインメモリ14とを有している。
【0021】
映像投影装置10は、その機能を実現する基本的構成要素として、グラフィックス・アクセラレータ13を有する。また、外部のビデオ映像に対して歪み補正を行う場合には、ビデオキャプチャ15が必要となる。さらに、プログラムデータやワーキングデータ等を格納しておくための外部記憶装置、処理された画像を印刷する場合のプリンタ等の他のI/O機器16がインタフェース(図示省略)を介してデータバス12に接続され、処理された画像を監視する場合は、モニターがグラフィックス・アクセラレータ13に接続される。
【0022】
そして、本発明の視点が随時又は連続的に移動する場合に対応する付加構成要素として、移動観察台101に関連して設けられた位置検出装置17がインタフェース(図示省略)を介してデータバス12に接続されている。
【0023】
グラフィックス・アクセラレータ13は、原画像を格納するのに充分な容量のテクスチャメモリ13a及び1フレーム分の映像データを格納可能なフレームバッファ13bを有するともに、描画パイプラインの一部として、3つの機能、すなわち、(ア)テクスチャマッピング機能、(イ)テクスチャ座標変換機能、(ウ)頂点座標変換機能を有する。
【0024】
テクスチャマッピング機能は、三次元モデルであるスクリーン形状(ポリゴン座標系)にテクスチャメモリ13aに格納されている二次元画像であるテクスチャを貼り付ける機能である。テクスチャ座標変換機能は、設定された行列により、入力されたテクスチャ座標を変換してテクスチャメモリ13a内の画素位置として出力する機能である。また、頂点座標変換機能は、設定された行列により、入力された各ポリゴンの頂点座標を変換してフレームバッファ13b内の画素位置として出力する機能である。
現在市販されているパーソナルコンピュータ(PC)用グラフィックス・アクセラレータ及びグラフィックスワークステーション(WS)の大多数は、上記3機能を提供している。
【0025】
移動観察台101は、図2及び図3に示すように、コックピット、撮影台、射撃台などスクリーンに投影された映像に向けて何らかの模擬行動をする人が乗り込み、映像を観察するためのものであり、第1テーブル102に固定されている。図3において、移動観察台101の左側がスクリーンSに対向する前方であり、右側が後方である。第1テーブル102は、第1サーボモータM1により駆動される昇降手段103により昇降される。104は、観察台101を負荷とする第1テーブル102の昇降時及び人員乗降の際のバランスを保つためのコイルスプリング又はガ゛ススプリングなどの弾性支持手段である。
【0026】
昇降手段103及び弾性支持手段104の下端部は、第2テーブル105の上面に固定されている。第1サーボモータM1の回転により、観察台101は上下方向、すなわち、Z軸方向に移動可能である。
【0027】
第2テーブル105の下面には、一例として、4個の車輪106が矩形の各角部に相当する位置に設けられ、少なくとも後方の一対の車輪は第2サーボモータM2により正方向又は逆方向に回転されるようになっている。
【0028】
前記4個の車輪106は、その下側に設置されていて、前後方向に長い第3テーブル107の上面に平行に敷設してある2本のレール108に沿って転動可能である。そして、第2サーボモータM2の回転により、観察台101は前後方向、すなわち、Y軸方向に移動可能である。109は、前後両終端で第2テーブルを止めるストッパである。
【0029】
第3テーブル107は、その前後方向の複数箇所において、映像投影室の床面110に突設された支持レール111の上面に回転自在に設けられたローラ112によって支持されている。そして、第3テーブル107の下面に突設されたガイドローラ113が各支持レール111の互いに反対側の面に当接されて、一定の位置で左右方向に移動自在に支持されている。その少なくとも1個のガイドローラが第3サーボモータM3により回転されて、第3テーブル107は、スクリーンS方向に対して直角方向、すなわち、X軸方向に移動されるようになっている。
【0030】
上記の構成により、各サーボモータM1,M2,M3を制御された回転角度まで回転させることにより、観察台101は、X,Y,Zの3座標値により決められた位置に移動可能である。
【0031】
通常は、観察台101がスクリーンSの中心を通る水平直線上(支持レール111の長手方向中央)、レール108の前後方向の中央、第1テーブル102の最下位に存在するときが、X,Y,Zの座標値0(X0,Y0,Z0)、すなわち、原点とされ、その原点より右側が+X,左側が−X,原点から前方が+Y,後方が−Y,原点から上方が+Z,下方が−Zなどに決定することができる。
【0032】
そして、観察台101の時々刻々変わりうる現在位置を座標データで表すために位置検出装置114が備えられている。位置検出装置114は、各モータM1,M2,M3により回転されるロータリーエンコーダE1,E2,E3と、各ロータリーエンコーダから出力されるパルスを受信して計数するカウンタC1,C2,C3と、各カウント値を座標値に変換するコンバータCNVとからなっている。このコンバータCNVの出力値がデータバス12を介して記憶部(RAM)に随時取り込まれるようになっている。
【0033】
なお、第3テーブル107の支持機構及び移動機構、並びに位置検出装置は、上述されたものに限られない。とくに、位置検出装置は、レーザー光や赤外線等を用いる光学的位置検出方法、レールに沿って設けた磁気的検出方法などの既知の方法を用いることができる。
【0034】
本発明方法においては、画像歪み補正を行うために、準備処理として、3種のパラメータである観察条件パラメータ(視錘台)、投影条件パラメータ(投影錘台)、及びスクリーンの形状パラメータのうち、変動のない投影条件パラメータとスクリーン形状パラメータは、外部記憶装置に記録されている。しかし、観察条件パラメータについては、投影処理時に、上記位置検出装置から随時入力されて記憶部(RAM)に取り込まれるデータを用いるようになっている。
【0035】
次に、このパラメータの取込み処理について詳細に説明する。
錘台は透視変換を表現するため一般的に用いられる概念であり、図6に示すように、頂点(Apex)30を基準としたl(left),r(right );b(bottom),t(top );n(near),f(far )の6つの値により決定されるが、上記位置検出送致から取り込まれる座標値−X,+X;−Y,+Y;−Z,+Zがそれぞれl(left),r(right );n(near),f(far );b(bottom),t(top )に相当する。
【0036】
準備処理における視錘台・投影錘台の指定は、下記のいずれかの方法で行う。
1)l,r,b,t,n,fを直接指定する。
2)視野角/画角、アスペクト比、n,fにより間接的にl,r,b,tを指定する。 ただし、左右上下に非対称な錘台を指定する場合は、1)の方法を用いる必要がある。 スクリーン形状は、何らかの方法、例えば、スクリーン設計時のCADデータを使用したり、三次元形状スキャナを使用したりなどにより、多角形メッシュとして表現され得るものである。準備処理では、この多角形メッシュを構成する頂点配列をパラメータとして指定する。
準備処理において指定する全てのパラメータは、原点の位置、座標系(XYZ各軸の方向と、回転の正負方向)及び単位系(メートル、ラジアンなど)の情報を共有する必要がある。
【0037】
続いて、図6及び図7に基づいて投影時の処理の詳細について説明する。図6は投影時処理のフローチャート、図7はグラフィックス・アクセラレータによるテクスチャ座標変換及び頂点座標変換を説明する概念図である。
投影時の処理は、上述の記録されたパラメータを用いて、次の処理を行うことにより、フレームバッファに補正済み画像を格納する。そして、そのフレームバッファに格納された補正済み画像を、映像信号としてプロジェクタに出力するようになっているが、投影時の処理においては、まず、
1)S41において、入力する原画像をテクスチャメモリ13aに転送して格納する。 原画像をテクスチャメモリに格納するには、下記の幾通りかの方法が採用可能である。すなわち、ビデオキャプチャ14により入力した画像をテクスチャメモリ13aに転送する方法。フレームバッファ13b上の画像をテクスチャメモリ13aに複写する方法。及び、テクスチャメモリ13aに対して直接描画する方法である。
2)次に、S42において、随時取り込まれる観察条件に従って、スクリーン形状の各頂点にテクスチャ座標を設定する。実際の処理では、図5に示すように、数式1の行列Moを上述されたグラフィックス・アクセラレータ13のテクスチャ座標変換機構131に設定する。
3)また、S43において、投影条件に従って、スクリーン形状の各頂点を座標変換する。実際の処理では、図8に示すように、数式2の行列Mpをグラフィックス・アクセラレータ13の頂点座標変換機構132に設定する。
4)そして、S44において、頂点座標変換機構132及びテクスチャ座標変換機構131にスクリーン形状の頂点座標Vを入力することにより、スクリーン形状を描画する。 結果として、図8に示すように、テクスチャとして参照される原画像の画素座標Rから出力画像の画素座標R’への転送(R→R’)が行われる。これをスクリーン形状の全頂点に対して連続的に行って、スクリーン形状を描画することにより、フレームバッファ13bに補正済み画像を得る。この補正済み画像が、映像信号として図2のプロジェクタなどに出力される。
なお、フレームバッファ13bの各R’の間の画素は、グラフィックス・アクセラレータにより適宜補間された値が設定される。
【0038】
上述した映像歪み補正方法を実行するプログラムは、映像投影アプリケーションプログラムの一部に組み込んで使用される単体プログラムとして、すなわち、歪み補正ソフトウェアライブラリ(以下、補正ライブラリ)として、次の内容を有して提供可能である。
補正ライブラリは、下記の特徴を有している。
補正ライブラリは、ANSI(American National Standard Institute)C/C++規格に準拠して記述されており、様々なプラットフォームに容易に移植可能である。また、補正ライブラリは、グラフィックス・アクセラレータへのインタフェースとして、広く一般的に使用されているプラットフォームであるOpenGL又はDirectXのいずれかを選択的に使用可能になっており、両者のいずれかをサポートするグラフィックス・アクセラレータを使用可能である。
【0039】
補正ライブラリは、アプリケーション・プログラミング・インタフェース(API)として、下記の関数群をエクスポートする。
1)初期化関数
これは、準備処理において、ハードディスクなどで構成されるファイルシステム上のファイル(以下、設定ファイルという)に記録された、観察条件、投影条件、スクリーン形状などの各種パラメータを読み込み、歪み補正処理に必要な実行環境を整えるものである。
2)テクスチャメモリへの画像転送関数
これは、メインメモリ14上に展開された原画像又はフレームバッファ13b上の原画像をテクスチャメモリ13aへ転送するものである。
3)歪み補正実行関数
これは、グラフィックス・アクセラレータ13の前記テクスチャ座標変換機構41及び頂点座標変換機構42を適宜設定し、スクリーン形状を描画することにより、フレームバッファ13b上に補正済み画像を得るものである。
4)終了関数
これは、前記初期化関数で確保した各種システムリソース(メインメモリ領域、テクスチャメモリ領域など)を解放して、上記映像歪み補正処理を終了するためのものである。
【0040】
上記のような補正ライブラリは、前記APIを通じて、映像歪み補正処理を必要とする様々なユーザプログラムに組み込んで利用することが可能である。例として、下記の3種のユーザプログラムに組み込んで使用する場合を、項を分けて説明する。
【0041】
1)静止画像表示プログラムの場合
このプログラムは、ハードディスクなどに記録された画像ファイルを読み込み、これを描画(すなわち、フレームバッファに転送)し、映像出力する類のプログラムである。この種のプログラムに映像歪み補正機能を組み込むには、補正ライブラリを図9に示すように使用する。
このプログラムは、S61において、補正ライブラリの初期化関数を呼び出すことにより、設定ファイルを読み込み、数式1及び数式2の行列Mo、Mpを作成してメインメモリに記憶し、原画像を格納する為に必要なテクスチャメモリ領域を確保する。
S62において、任意の方法により対象となる画像ファイルを特定して、画像データをメインメモリに展開する。
S63において、補正ライブラリの画像転送関数を呼び出すことにより、メインメモリに展開された画像データをテクスチャメモリに転送する。
S64において、補正ライブラリの歪み補正実行関数を呼び出すことにより、フレームバッファに補正済み画像を得る。
S65おいてプログラム終了時には、S66おいて、補正ライブラリの終了関数を呼び出すことにより、初期化関数で確保した各種システムリソースを解放して、処理を終了する。
【0042】
2)動画像表示プログラムの場合
このプログラムは、ハードディスクなどに記録された動画ファイルから1フレームずつ連続して画像データを読み込み・描画し、動画像として映像出力する類のプログラムである。この種のプログラムに映像歪み補正機能を組み込むには、補正ライブラリを図10のように使用する。すなわち、
このプログラムは、S71において、補正ライブラリの初期化関数を呼び出すことにより、設定ファイルを読み込み、数式1・2の行列Mo、Mpを作成してメインメモリに記憶し、原画像を格納する為に必要なテクスチャメモリ領域を確保する。
S72において、任意の方法により対象となる動画ファイルを特定して、データストリームへのハンドルを得る(すなわち、オープンする)。
S73において、データストリームから1フレーム分の画像データを読み込み、メインメモリに展開する。
S74において、補正ライブラリの画像転送関数を呼び出すことにより、メインメモリに展開された画像データをテクスチャメモリに転送する。
S75において、補正ライブラリの歪み補正実行関数を呼び出すことにより、フレームバッファに補正済み画像を得る。
S76において、最終フレームの処理を終えたら、S77において、動画ファイルのデータストリームを解放する(すなわち、クローズする)。
S78において、プログラム終了時には、S79において、補正ライブラリの終了関数を呼び出すことにより、初期化関数で確保した各種システムリソースを解放して、処理を終了する。
【0043】
3)リアルタイムCGプログラムの場合
このプログラムは、ユーザの入力などのイベントにより動的に変化するシーンを1フレームずつ描画していく類のプログラムである。この種のプログラムに映像歪み補正機能を組み込むには、補正ライブラリを図11のように使用する。
このプログラムは、S81において、補正ライブラリの初期化関数を呼び出すことにより、設定ファイルを読み込み、数式1・2の行列Mo、Mpを作成してメインメモリに記憶し、原画像を格納する為に必要なテクスチャメモリ領域を確保する。
【0044】
S82において、キーボード、マウス入力などのイベントに応じて、表示すべきシーンの内容を適宜変化させる。
S84において、シーンを描画し、フレームバッファに1フレーム分の画像を得る。
S83において、プログラム未終了時には、S84において、補正ライブラリの画像転送関数を呼び出すことにより、フレームバッファ上の画像データをテクスチャメモリに複写する。(ただし、グラフィックス・アクセラレータによっては、テクスチャメモリに対して直接描画することができる場合がある。この場合は、S85の処理は不要となる。) S86において、補正ライブラリの歪み補正実行関数を呼び出すことにより、フレームバッファに補正済み画像を得る。
S83においてプログラム終了時には、S87において、補正ライブラリの終了関数を呼び出すことにより、初期化関数で確保した各種システムリソースを解放して、処理を終了する。
【0045】
上記実施の形態において、図7のS41,S42,S43,S44はそれぞれ、入力する原画像をテクスチャメモリに転送する手段、観察条件に従ってスクリーン形状の各頂点にテクスチャ座標を設定する手段、投影条件に従ってスクリーン形状の各頂点を座標変換する手段、座標変換をされたスクリーン形状を描画する手段を構成する。また、図8の131及び132は、それぞれS42による設定に基づきテクスチャ座標を変換するテクスチャ座標変換手段、S43による設定に基づきスクリーン形状の各頂点の座標を変換する頂点座標変換手段を構成している。
【図面の簡単な説明】
【0046】
【図1】スクリーンに投影される映像の歪みの原因と、その歪み補正の原理を説明する模式図。
【図2】本発明による映像歪み補正方法を採用する映像投影装置の全体構成を示す斜視図。
【図3】観察台移動装置の一例を示す側面図。
【図4】位置検出装置の一例を示す回路図。
【図5】映像投影装置の映像歪み補正に係る主たる構成を概略的に示すブロック図。
【図6】透視変換における観察条件パラメータ(錘台)の説明図。
【図7】投影時処理のフローチャート。
【図8】グラフィックス・アクセラレータによるテクスチャ座標変換及び頂点座標変換を説明する概念図。
【図9】本発明のライブラリを静止画像表示プログラムに組み込んで使用する場合のフローチャート。
【図10】本発明のライブラリを動画像表示プログラムに組み込んで使用する場合のフローチャート。
【図11】本発明のライブラリをリアルタイムCGプログラムに組み込んで使用する場合のフローチャート。
【特許請求の範囲】
【請求項1】
準備処理として、映像プロジェクタの位置、投影方向、画角などにより決定される投影錘台のパラメータ及びスクリーンの形状のパラメータを記憶部に記録して置き、
投影時の処理として、観察者の位置、視線方向、視野角などにより決定される視錘台のパラメータを随時取込み、その視錘台のパラメータ及び前記記憶部から読出した投影錘台のパラメータとスクリーンの形状のパラメータを含む所定の計算式により演算して入力された原画像の透視変換を行い、かつ、透視変換後の座標系をテクスチャ座標系に変換し、そのテクスチャ座標系を用いてグラフィックス・アクセラレータのテクスチャマッピング機能により補正画像をフレームバッファに描画して、その補正画像を映像信号として前記映像プロジェクタに出力することを特徴とする映像歪み補正方法。
【請求項2】
準備処理として、映像プロジェクタの位置、投影方向、画角などにより決定される投影錘台のパラメータ及びスクリーンの形状のパラメータを記憶部に記録して置き、
投影時の処理として、観察者の位置、視線方向、視野角などにより決定される視錘台のパラメータを随時取込み、その視錘台のパラメータ及び前記記憶部から読出した投影錘台のパラメータとスクリーンの形状のパラメータを用いて、次の(a)及び(b)の2段階の処理を行うことによりフレームバッファに補正済み画像を格納し、前記フレームバッファに格納された補正済み画像を、映像信号として映像プロジェクタに出力することを特徴とする映像歪み補正方法。
(a)入力された原画像をテクスチャとしてポリゴンにより構成されるスクリーン形状に対して貼り付ける第1段階の処理。この場合、前記スクリーン形状の各頂点座標とテクスチャとして参照される原画像の画素座標の対応は、前記視錘台のパラメータを含む次の行列式(数式1)により決定される。
【数1】
(b)原画像を貼り付けた前記スクリーン形状を前記フレームバッファに描画する第2段階の処理。この場合、前記スクリーン形状の各頂点座標と出力画像の画素座標の対応は、前記投影錘台のパラメータを含む次の行列式(数式2)により決定される。
【数2】
【請求項3】
スクリーン形状の各頂点座標とテクスチャとして参照される原画像の画素座標との対応を、随時取り込まれる観察者の位置・視線方向・視野角などにより決定される視錘台を内容とするパラメータを含む次の行列式(数式1)により決定して、入力された原画像をテクスチャとして前記スクリーン形状に対して貼り付けるステップと、
【数3】
前記スクリーン形状の各頂点座標と出力画像の画素座標との対応を、映像プロジェクタの位置・投影方向・画角などにより決定される投影錘台を内容とするパラメータを含む次の行列式(数式2)により決定して、原画像を貼り付けた前記スクリーン形状をフレームバッファに描画するステップと、
【数4】
前記フレームバッファに格納された補正済み画像を、映像信号として映像プロジェクタに出力するステップと、
を含むことを特徴とする映像歪み補正方法用プログラム。
【請求項1】
準備処理として、映像プロジェクタの位置、投影方向、画角などにより決定される投影錘台のパラメータ及びスクリーンの形状のパラメータを記憶部に記録して置き、
投影時の処理として、観察者の位置、視線方向、視野角などにより決定される視錘台のパラメータを随時取込み、その視錘台のパラメータ及び前記記憶部から読出した投影錘台のパラメータとスクリーンの形状のパラメータを含む所定の計算式により演算して入力された原画像の透視変換を行い、かつ、透視変換後の座標系をテクスチャ座標系に変換し、そのテクスチャ座標系を用いてグラフィックス・アクセラレータのテクスチャマッピング機能により補正画像をフレームバッファに描画して、その補正画像を映像信号として前記映像プロジェクタに出力することを特徴とする映像歪み補正方法。
【請求項2】
準備処理として、映像プロジェクタの位置、投影方向、画角などにより決定される投影錘台のパラメータ及びスクリーンの形状のパラメータを記憶部に記録して置き、
投影時の処理として、観察者の位置、視線方向、視野角などにより決定される視錘台のパラメータを随時取込み、その視錘台のパラメータ及び前記記憶部から読出した投影錘台のパラメータとスクリーンの形状のパラメータを用いて、次の(a)及び(b)の2段階の処理を行うことによりフレームバッファに補正済み画像を格納し、前記フレームバッファに格納された補正済み画像を、映像信号として映像プロジェクタに出力することを特徴とする映像歪み補正方法。
(a)入力された原画像をテクスチャとしてポリゴンにより構成されるスクリーン形状に対して貼り付ける第1段階の処理。この場合、前記スクリーン形状の各頂点座標とテクスチャとして参照される原画像の画素座標の対応は、前記視錘台のパラメータを含む次の行列式(数式1)により決定される。
【数1】
(b)原画像を貼り付けた前記スクリーン形状を前記フレームバッファに描画する第2段階の処理。この場合、前記スクリーン形状の各頂点座標と出力画像の画素座標の対応は、前記投影錘台のパラメータを含む次の行列式(数式2)により決定される。
【数2】
【請求項3】
スクリーン形状の各頂点座標とテクスチャとして参照される原画像の画素座標との対応を、随時取り込まれる観察者の位置・視線方向・視野角などにより決定される視錘台を内容とするパラメータを含む次の行列式(数式1)により決定して、入力された原画像をテクスチャとして前記スクリーン形状に対して貼り付けるステップと、
【数3】
前記スクリーン形状の各頂点座標と出力画像の画素座標との対応を、映像プロジェクタの位置・投影方向・画角などにより決定される投影錘台を内容とするパラメータを含む次の行列式(数式2)により決定して、原画像を貼り付けた前記スクリーン形状をフレームバッファに描画するステップと、
【数4】
前記フレームバッファに格納された補正済み画像を、映像信号として映像プロジェクタに出力するステップと、
を含むことを特徴とする映像歪み補正方法用プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2007−28273(P2007−28273A)
【公開日】平成19年2月1日(2007.2.1)
【国際特許分類】
【出願番号】特願2005−208418(P2005−208418)
【出願日】平成17年7月19日(2005.7.19)
【出願人】(301055240)株式会社リアルビズ (4)
【Fターム(参考)】
【公開日】平成19年2月1日(2007.2.1)
【国際特許分類】
【出願日】平成17年7月19日(2005.7.19)
【出願人】(301055240)株式会社リアルビズ (4)
【Fターム(参考)】
[ Back to top ]