図1は本実施の形態の画像処理技術を適用できる画像処理システムの構成例を示す。画像処理システム10は、それぞれが所定の計測を行うセンサ12_1、12_2、・・・12_NからなるN個のセンサ群12、各センサから計測結果を取得し可視化する画像処理装置20、ユーザが画像処理装置20への指示入力を行うための入力装置15、画像処理装置20が生成した画像を表示する表示装置14を含む。
画像処理装置20と、センサ群12、表示装置14とは、有線ケーブルで接続されてよく、また無線LAN(Local Area Network)などにより無線接続されてもよい。センサ群12、画像処理装置20、表示装置14のうちいずれか2つ、または全てが組み合わされて一体的に装備されていてもよい。
また後述するように画像処理装置20が行う処理には、計測結果から基本となる2次元画像データを生成する段階と、2次元画像データから表示画像を生成する段階があり、それぞれを独立に行えるため、画像処理装置20、センサ群12、表示装置14の全てが同時に接続されていなくてもよい。表示装置14は、液晶ディスプレイやプラズマディスプレイなど単体で画像を表示する装置でもよいし、画像を投影するプロジェクターとスクリーンとの組み合わせなどでもよい。
N個のセンサ12_1、12_2、・・・、12_Nはそれぞれ所定の物理量を、対象物16を横切る平面18など、所定の位置および向きの複数の平面における分布として取得する。ここで所定の物理量とは、色、温度、含有水分、硬度など、一般的なセンシング技術により可視光、X線、磁気、電気、超音波などを利用して求められる情報であればその種類は限定されない。また図中、センサ12_1、12_2、・・・、12_Nの配置や形状はあくまで例示であり、用いるセンシング技術によって様々な態様が考えられることは当業者には理解されるところである。
画像処理装置20は、センサ群12が計測した複数の平面における物理量の分布を統合し、当該平面が積層した計測空間を3次元のオブジェクトとして可視化する。当該オブジェクトは、入力装置15を介して受け付けたユーザからの視点移動要求に応じて任意の方向から見ることを可能にする。画像処理装置20はその他、センサ群12が物理量を取得する対象となる平面を制御したり、表示装置14における表示を制御したりするなど、画像処理システム10全体を統括的に制御する。
なおセンサ群12を含み、センサによる計測処理や積層画像情報の出力を制御する機構を有するセンシング装置を、画像処理装置20とは個別に導入してもよい。そしてセンサが計測した物理量の分布を当該センシング装置が内部で画像化し、画像処理装置20はその画像データを取得するようにしてもよい。この場合、センサが計測した物理量に代わり、RGBなどの画素値の分布が得られることになるが、以後の説明ではそのような画素値も「物理量」として同様に扱う。
表示装置14は、画像処理装置20が物理量の分布を可視化した結果として生成した3次元オブジェクトを含む画像を表示する。入力装置15は、上述のように、表示装置14に表示された3次元オブジェクトに対する視点移動要求のほか、センサ群12による物理量の計測開始、計測結果の取得開始、画像やデータの加工、表示装置14によるオブジェクト表示の開始などの要求をユーザより受け付け、画像処理装置20へ通知する。入力装置15は図示するマウスの他、キーボード、コントローラ、ジョイスティックなど一般的な入力装置のいずれかでよく、表示装置14の画面に搭載したタッチパネルなどでもよい。
図2はセンサ群12が計測した結果、画像処理装置20が取得する情報の形態を模式的に示している。センサ群12に含まれる各センサは、同図に示すように所定の軸(z軸)と垂直な複数の平面19a、19b、・・・、19nに対して所定の物理量の分布を取得する。平面19a、19b、・・・、19nはz軸に対し異なる位置にあり、それに垂直なxy平面に対して同じ範囲にあるとする。
以後、同図のz軸のように、センサ群12によって物理量の分布を取得する平面を移動させる方向を「センサ軸」と呼び、当該平面を「スライス平面」と呼ぶ。センサ群12を、センサ軸が複数設定できるように設けてもよい。この場合、複数のスライス平面群が各センサ軸に対し設定され、それぞれの平面に対して物理量の分布が得られる。なお図2においてスライス平面はセンサ軸に垂直であったが、計測する物理量やセンサの構造などによって必ずしも垂直である必要はない。
「分布」はそのような各スライス平面上の位置座標に対する値として得られるため、図1に示すようにセンサ群12がN個のセンサ12_1、12_2、・・・、12_Nからなるとすると、あるスライス平面上のある位置に対する値がN個得られることになる。結果として画像処理装置20が取得する情報は、各スライス平面19a、19b、・・・、19nに対して設定した複数の位置P1、P2、・・・ごとに、その位置座標(x,y)と、N個の値からなるベクトル値(V_1,V_2,・・・,V_N)を対応づけた情報となる。
なお位置P1、P2、・・・は、実際には一般的な画素程度の間隔で設定してよく、センサの分解能などによっては適宜、計測値の補間や間引きを行うことにより、各位置P1、P2、・・・に対して同じ次元数のベクトル値が得られるようにする。センサ群12が所定の時間間隔で計測を繰り返し、画像処理装置20は図2で示した情報を各時刻で取得してもよい。この場合、最終的に表示される3次元オブジェクトは時間経過とともに変化する動画となる。
図3は画像処理装置20が生成し表示装置14に表示される画像の例を示している。画像例4は、図2で示した計測情報を可視化したものであり、計測空間を示す3次元オブジェクト6の内部に対象物16が内在した状態で表示される。ユーザは入力装置15を操作することにより仮想的な視点を移動させ、3次元オブジェクト6を所望の角度に回転させることができるため、対象物の裏側や側面を確認することができる。
また3次元オブジェクト6中、対象物16以外の領域、対象物16の領域、など所望の領域の透過率をユーザの操作により変化させ、透明または半透明とすることができる。これにより対象物が複数ある場合もそれらの位置関係や大きさを所望の方向から観察できる。3次元オブジェクトの対象物以外の領域を透明になるように表示した場合などは、3次元オブジェクトは目視できず、対象物だけが目視できる状態となる。以後の説明ではこのような透明な領域も含め「3次元オブジェクト」としている。3次元オブジェクト6を動画とした場合、対象物の動きや新たな対象物の生成なども観測できる。また、矢印形状のカーソル8など、計測結果とは別のオブジェクトを3次元オブジェクト6の内部に入り込んだ形で表示させることもできる。
図4は画像処理装置20の構成を詳細に示している。図4において、様々な処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、GPU(Graphics Porcessing Unit)、メモリ、その他のLSIで構成することができ、ソフトウェア的には、画像処理を行うプログラムなどによって実現される。
したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。また画像処理装置20は上述のとおり、画像処理システム10内の他の装置とのデータの送受信制御などを行うが、このような処理には一般的な技術を適用できるためここでは図示を省略している。
画像処理装置20はセンサからの出力情報を取得し、表示に用いる2次元画像データを生成する画像データ生成部30、および当該2次元画像データを利用して3次元オブジェクトを描画する表示処理部32を含む。なお上述のとおり、画像データ生成部30が行う処理と表示処理部32が行う処理は独立して実施可能であるため、同じ装置内に双方を設けず、それぞれの機能を有する個別の装置としてもよい。
画像データ生成部30は、センサ群12からの出力データを取得するセンサ出力データ取得部42、分布を取得したスライス平面ごとに2次元画像のデータを生成するスライス画像生成部44、センサ軸と異なる軸と所定の角度を有する複数の平面に対し同様の2次元画像のデータを生成する画像軸変換部50、センサ出力データ取得部42が生成したデータを格納するベクトル値情報記憶部46、スライス画像生成部44および画像軸変換部50が生成したデータを格納するスライス画像記憶部48を含む。
センサ出力データ取得部42は、センサ群12からスライス平面ごとに物理量の分布情報を取得し、図2で示したような、位置座標とベクトル値とを対応づけたベクトル値情報を生成する。ベクトル値情報はスライス平面の識別情報に対応づけてベクトル値情報記憶部46に一旦格納し、その旨をスライス画像生成部44および画像軸変換部50に通知する。ここでスライス平面の識別情報は、センサ軸の向きと当該センサ軸上の位置などによって構成する。
スライス画像生成部44は、ベクトル値情報記憶部46に格納されたベクトル値情報に基づき、スライス平面ごとに、3次元オブジェクトの元となる2次元画像のデータを生成する。以後、このような2次元画像を「スライス画像」と呼ぶ。スライス画像は画素ごとに、色空間の情報のほか、透過率を表すアルファ値を保持する。画像表示段階でスライス画像をセンサ軸方向に配列し、アルファブレンディング描画することにより、3次元オブジェクトの内部が透けて見えるように表現する。色空間情報およびアルファ値の設定手法については後に詳述する。生成したスライス画像のデータは、スライス平面の識別情報に対応づけてスライス画像記憶部48に格納する。また、アルファ値をスライス画像の画素値から計算する方法もあり、この場合、描画部でアルファ値を計算しつつブレンディングに使えばアルファ値をスライス画像記憶部に格納する必要がなくなる。
画像軸変換部50は、センサ軸とは異なる所定の軸、例えば図2のようにz軸をセンサ軸としたとき、それと直交するx軸およびy軸のそれぞれに対し、それと所定の角度を有する複数の平面を発生させ、各平面に対し、図2で示したのと同様のベクトル値情報を生成する。すなわちセンサ群12が計測したスライス平面上の物理値から、向きの異なる平面上の各位置に対応する値を拾っていくことにより、当該平面に対する分布としてデータを再構築する。
そしてスライス画像生成部44と同様の処理によって、各平面に対応する2次元画像のデータを生成する。以後、この2次元画像も「スライス画像」と呼ぶが、このときの平面に対する軸を「画像軸」として「センサ軸」と区別する。画像軸変換部50が生成したスライス画像のデータも、画像軸の向きと当該軸上の位置に対応づけてスライス画像記憶部48に格納する。
表示処理部32は、視点の位置などに応じて描画に用いるスライス画像を管理するスライス画像管理部52、描画に必要な画像のデータを逐次格納する描画用メモリ56、カーソルなど付加的に表示するオブジェクトの画像データを格納する付加オブジェクト画像記憶部58、スライス画像のデータを用いて3次元オブジェクトを描画する画像描画部54を含む。
スライス画像管理部52は、視点の移動によって描画に用いるスライス画像の軸を切り替え、スライス画像記憶部48から必要なスライス画像のデータを描画用メモリ56に読み出す。なお画像データ生成部30が生成したスライス画像から即時にオブジェクトを生成する場合などは、スライス画像記憶部48が描画用メモリ56を兼ねていてもよい。一方、二次記憶装置などで実装されるスライス画像記憶部48にスライス画像のデータを全て格納してしまい、表示段階として別の機会に描画用メモリ56にロードする態様においては、描画に必要な順にデータを徐々にロードしながら描画処理を行う。
3次元オブジェクトを描画する際は基本的に、視点から遠い順にスライス画像をアルファブレンディング処理により重ねていく。従って描画用メモリ56へのスライス画像データのロードも基本的にはその順で行う。これにより視点移動などによって別のスライス画像が必要となっても表示までのレイテンシを抑えることができる。このロード処理は、スライス画像管理部52が制御するメモリコントローラなどによって行ってよい。
スライス画像管理部52はさらに、視点と3次元オブジェクトとの距離の減少に応じて、スライス画像間の補間を行う。スライス画像はセンサ軸または画像軸上の離散的な位置に対して生成されており、視点がオブジェクトに近づくとその不連続性が視認されやすくなる。そこで、隣り合うスライス画像の画素値を軸上の位置に対して補間する画素値を有する新たなスライス画像を生成する。生成したスライス画像を元のスライス画像間に挿入し、スライス画像の間隔を狭くすることにより不連続性を目立たなくさせる。挿入するスライス画像の枚数は、視点までの距離に反比例するように徐々に増加させてもよいし、距離としきい値との比較によって段階的に増加させてもよい。
画像描画部54は、必要なスライス画像のデータが描画用メモリ56にロードされた旨の通知をスライス画像管理部52から取得すると、当該データを用い、3次元オブジェクトを描画する。基本的には、各スライス画像を軸上のそれぞれの位置に配列させ、視点から遠いスライス画像から順にスクリーン座標へ投影することで重ね合わせを行う。このようにして表される計測空間の3次元オブジェクトは、アルファ値の設定によって、例えば対象物のない空間などは透明、あるいは半透明の状態となる。そこで画像描画部54はさらに、このような空間にカーソルなどの付加オブジェクトを描画する。
付加オブジェクトはユーザが入力装置15を介して動かせるようにしたり、対象物に追随して動かしたり発生させたりする。そのため画像描画部54は、それらのモードに応じて付加オブジェクトの表示位置を計算したうえ、画像のデータを描画用メモリ56に読み出し、描画する。さらに画像描画部54は、複数の視点について同様の3次元オブジェクト描画処理を行うことにより立体視を実現してもよい。この場合の視点の相対位置などは導入する立体視の方式に応じて適宜決定できる。
次に、上記のような構成によって実現できる画像処理装置20の動作について説明する。図5は画像データ生成部30がスライス画像のデータを生成する処理手順を示すフローチャートである。まずセンサ出力データ取得部42は、入力装置15を介したユーザの指示などに応じて、センサ軸の複数のスライス平面に対するN個の物理量の分布をセンサ群12から取得し、各平面上の位置と、物理量のセットからなるベクトル値とを対応づけたベクトル値情報を生成する(S10)。
この処理においてベクトル値情報に含まれるベクトル値は、センサ群12から送信されたN個の物理量そのものでなくてもよい。例えば最終的に表示させたい情報などに鑑み必要のない物理量を要素から除外してもよいし、異なる物理量同士で演算を行った結果得られた値をベクトル値の新たな要素として追加してもよい。また、ある物理量がしきい値を超えたら別の物理量を0とするなど、しきい値判定によるマスキングを行ってもよい。例えばある温度以下の対象物のみを表示する場合などはこの手法が有効である。
このように計測値を操作して得られるベクトル値情報を複数パターン生成するようにし、表示時の操作によって表示対象を切り替えてもよい。物理量の具体的な加工規則は、ユーザが決定するなどして付加データとして図示しないメモリなどに記憶させておき、センサ出力データ取得部42がベクトル値情報作成時に参照する。
次にスライス画像生成部44は、各スライス平面に設定した2次元配列の画素ごとに、ベクトル値に基づきアルファ値を決定する(S12)。アルファ値の具体的な決定手法は後述する。さらにスライス画像生成部44は、ベクトル値に基づき当該画素ごとに色情報を決定することで、画素値として色情報およびアルファ値を保持するスライス画像のデータを生成し、スライス画像記憶部48に格納する(S14)。RGB、YCbCrなど、色情報の表色系は限定されない。また上述したように、画像描画部54における描画時にスライス画像からアルファ値を生成する場合、スライス画像生成部44ではアルファ値を設定する必要がないためスライス画像記憶部48にはアルファ値が格納されない。
色情報は、物理量の種類や表示目的などに応じてあらかじめ設定した規則に従い決定する。例えば3つのセンサ12_1、12_2、12_3が計測した値をそれぞれ、赤色の輝度、緑色の輝度、青色の輝度としてRGBを表してもよい。この場合、最終的に表示される3次元オブジェクトにおいて、センサ12_1が計測する物理量が大きくなる物質は赤色、12_2が計測する物理量が大きくなる物質は緑色、12_3が計測する物理量が大きくなる物質は青色が強く表れ、物質によって色分けができる。
あるいは、あるセンサ12_1が計測したひとつの値をR、G、Bの全てに代入し、白色の輝度によって物理量の大小を表すなどでもよい。アルファ値や色情報の決定規則は、ユーザが表示内容や表示目的などに応じて適宜決定し、図示しないモリなどに記憶させておく。または実際の表示を確認しながら、入力装置15を介してその場で設定していくようにしてもよい。
センサ軸に対する全てのスライス画像を生成するまで、S12とS14の処理を繰り返す(S16のN、S12、S14)。全てのスライス画像が生成されたら、画像軸変換部50は、所定の画像軸に対するスライス平面を、物理量が得られている位置で複数準備し、各平面上の位置と、物理量のセットからなるベクトル値とを対応づけたベクトル値情報を、画像軸ごとに生成する(S16のY、S18のN、S20、S10)。あとは上記と同様、各平面上に設定した画素に対しアルファ値と色情報を決定しスライス画像を生成、格納する処理を、各軸に対する全スライス画像が生成されるまで繰り返す(S12、S14、S16のN)。
全ての画像軸に対し全てのスライス画像が生成されたら(S18のY)、別のセンサ軸によって物理量が取得できる環境であればS10からS20の処理を繰り返す(S22のN)。全てのセンサ軸でスライス画像が生成されたら処理を終了する(S22のY)。本実施の形態において最終的に表示する3次元オブジェクトを好適に描画するためには、3つの軸に対するスライス画像を準備することが望ましい。最も単純には互いに直交するx軸、y軸、z軸に対してスライス画像を生成する。これらの3方向の軸のいずれを画像軸としてもよいし、画像軸が含まれなくてもよい。
つまり当該3方向の軸をセンサ軸として計測可能であれば画像軸変換部50は処理を行わなくてもよい。一方、センサ軸が一方向のみの場合、その他の画像軸に対するスライス画像は画像軸変換部50が生成し、S22の分岐はなくなる。センサ軸が2方向のときは残りの1方向を画像軸として画像軸変換部50がスライス画像を生成するなど、センサ軸として設定できる方向やその数に応じて画像軸の設定は適宜変化させてよい。
図6は図5のS12においてスライス画像のアルファ値を決定する手法の例を示している。同図上側が、あるスライス平面19iにおけるベクトル値情報を、下側が、対応するスライス画像100aにおいて設定するアルファ値を、それぞれ模式的に表している。スライス平面19iにおいて、例えば対象物が存在する領域102とそれ以外の領域104とでは、そのベクトル値の少なくともいずれかが大きく変化する。同図ではその差を2種類の網掛けで表している。
この差を反映したアルファ値を設定するため、次のような条件分岐を行う。
if max(V_1, V_2, ・・・, V_N) < Th
A = 0;
else A = 1;
ここでThはあらかじめ定めたしきい値、Aは各画素に与えるアルファ値である。つまりベクトル値(V_1, V_2, ・・・, V_N)のうち最大値がしきい値Thより小さければアルファ値は0、しきい値Th以上であればアルファ値は1とする。図6のスライス画像100aにおいて、領域102はアルファ値が1、領域104はアルファ値が0であることを、それぞれ白色、黒色で示している。ベクトル値情報のスライス平面においてベクトル値を保持する位置と、スライス画像において画素を定義する位置は異なっていてもよく、その場合は前者の位置においてアルファ値を決定し、それを適宜補間することによって画素ごとの値を決定する。
上記のような条件を用いる場合、ベクトル値を構成する物理量の種類が異なるときは、スケールをそろえるために全ての値を正規化しておく。また分岐判断の対象とする物理量を選択してから条件分岐させてもよい。対象物の範囲で値が高くなる物理量をベクトル値に含めたうえこのような条件分岐によりアルファ値を与えると、対象物のない領域は透明に、対象物のある領域は不透明になる。結果としてαブレンディング描画した際、対象物のない領域のみその向こう側が見渡せるような表示となる。
図7はスライス画像のアルファ値を決定する手法の別の例を示している。図の表し方は図6と同様である。この場合の条件分岐は次のように設定している。
if max(V_1, V_2, ・・・, V_N) < Th
A = 0;
else A = max(V_1, V_2, ・・・, V_N);
ベクトル値(V_1, V_2, ・・・, V_N)のうち最大値がしきい値Thより小さければアルファ値を0とする点は図6と同じであるが、最大値がしきい値Th以上のときは、この最大値自身をアルファ値とする。ここでベクトル値を構成する各物理量は正規化されているものとする。同図のスライス画像100bでは、領域102のアルファ値がTh≦A≦1の範囲で変化していることをグラデーションで表している。
このような条件分岐によれば、例えば対象物の内部における物理量の変化を色の透過率によって表すことができる。また図6に示した例に比べ、対象物の輪郭付近でのアルファ値を緩やかに変化させることができるため、輪郭にジャギーやノイズが発生しても目立ちにくい。
ベクトル値からアルファ値を決定するための条件はこの他にも様々考えられる。例えば図7の場合と逆に、次のような条件分岐を設定してもよい。
if max(V_1, V_2, ・・・, V_N) < Th
A = max(V_1, V_2, ・・・, V_N);
else A = 1;
この設定によれば、対象物のない領域などにおいて、ベクトル値を構成する物理量の大きさに応じてアルファ値を変化させることができる。例えば対象物の周辺温度や周囲の湿度などを色の透過率によって表すことができる。
さらに、ベクトル値を構成する物理量のうち1つの物理量V_iにのみ着目することにより、次のような条件分岐も考えられる。
if V_i < Th
A = 0;
else A = 1;
または
if V_i < Th
A = 0;
else A = V_i;
上記の2つの条件分岐は1つの物理量V_iを分岐判断の対象とする以外は、図6および図7に示したのと同様である。例えば物質によって異なる物理量が高くなる場合、対象とする物理量V_iを切り替えることにより、対象物として表示する物質を切り替えることができる。
さらにしきい値をTh1、Th2(Th1<Th2)の2つ設け、以下の条件分岐を設定してもよい。
if max(V_1, V_2, ・・・, V_N) < Th2 || min(V_1, V_2, ・・・, V_N) > Th1
A = 0;
else A = 1;
つまりベクトル値(V_1, V_2, ・・・, V_N)のうち最大値が大きい方のしきい値Th2より小さいか、最小値が小さい方のしきい値Th1より大きい場合、すなわちベクトル値が所定の中間的な範囲に収まっている場合に、アルファ値を0として透明化する。この例は、対象物の領域で、あるセンサが取得する物理量は小さくなり、別のセンサが取得する物理量は大きくなるような状況において、どちらかのセンサが反応すればそれらを全て対象物として表示させたい場合に適用できる。
図6、図7に示すようにしきい値Thとベクトル値の最大値との大小関係によってアルファ値の設定を分岐させる場合、対象物の輪郭付近など最大値がしきい値Thの近傍となる部分は、わずかなベクトル値の変化でアルファ値の設定が大きく変化するため、表示時にノイズが生じやすい。図8は、アルファ値の設定においてそのようなノイズの発生を抑える手法を説明するための図である。
まず左上のグラフは、ベクトル値のうち最大値を横軸に、図7を参照して示した条件分岐で決定したアルファ値Aを縦軸に示している。この手法では、条件分岐で決定したアルファ値を所定の規則で変換することにより最終的なアルファ値Aを決定する。したがって同グラフのアルファ値は同図に示すように暫定値とする。グラフに示すように、ベクトル値の最大値がしきい値Thより小さいとき、アルファ値Aの暫定値は0である。当該最大値がしきい値Thと等しくなると、アルファ値Aの暫定値はその最大値Thとなる。
このような急激なアルファ値の変化を抑制するため、同図右上に示すような関数f(A)を作用させて最終的なアルファ値Aを算出する。関数f(A)は例えば、しきい値Thより所定の幅ΔAだけ小さいアルファ値の暫定値において0から緩やかに立ち上がり、さらに暫定値がしきい値Thより所定の幅ΔAだけ大きくなる間に1に達するような関数である。このような関数から得られる値をアルファ値Aの暫定値に乗算すると、同図下に示すグラフのようになる。
すなわち、横軸に示した、ベクトル値の最大値がしきい値Thより小さいときは、暫定値同様、アルファ値Aは0である。当該最大値がしきい値Thと等しくなると、f(Th)を暫定値Thに乗算した結果、アルファ値Aはその暫定値より小さく抑えられる。結果としてベクトル値の最大値のわずかな変化でアルファ値が急激に変化することがなくなる。関数f(A)は実際の表示画像におけるノイズの発生率などに応じて最適化しておく。なおアルファ値Aの暫定値を関数fに代入して出力される値をアルファ値Aとしてもよい。
これまでのアルファ値の設定手法は条件分岐に基づく比較的シンプルなものであった。より複雑なスキームでアルファ値を設定したい場合は、例えばベクトル値を構成するN個の物理量からなるN次元空間における位置座標に対しアルファ値をあらかじめ準備しておいてもよい。例えばベクトル値を構成する物理量ごとに異なるしきい値でアルファ値を設定する場合、条件分岐が複雑になることが考えられる。
そこで、全ての条件に対するアルファ値を、N次元空間における位置座標、すなわちN個の値の組み合わせに対応づけたテーブルを前もって作成しておく。このようにすると条件分岐処理などを経ず、当該テーブルを参照するのみで、ベクトル値から直接アルファ値を引いてくることができる。
またベクトル値を構成する物理量のいずれかまたは組み合わせを変数として所定の関数を計算し、その結果を用いてアルファ値を決定する場合なども同様に、ベクトル値のN個の値の全ての組み合わせに対してアルファ値を先に計算しておき、テーブルとして準備しておく。これにより複雑なスキームでアルファ値を求める場合でも、処理の負荷や決定までの所要時間を抑えることができる。
図9は表示処理部32が3次元オブジェクトの表示処理を行う処理手順を示すフローチャートである。まずユーザが入力装置15を介して表示開始の指示を入力すると(S30)、スライス画像管理部52は、3次元オブジェクトの初期画像を表示させるためにあらかじめ定めた視点座標を初期視点として設定し、当該視点から3次元オブジェクトを描画するために必要なスライス画像のデータを描画用メモリ56にロードする(S32、S34)。実際には上述のとおり必要なスライス画像から順にロードすることで、以後のオブジェクトの描画処理と並行させることができる。
次にスライス画像管理部52は、視点と3次元オブジェクトとの距離に応じて、スライス画像の量を調整する(S36)。新たに補間用のスライス画像を生成した場合は、それを描画用メモリ56に格納する。このとき挿入先の位置が識別できるように、画像データそのものを前後のスライス画像のデータ間に挿入するか、軸上の位置と対応づけておく。
次に画像描画部54は、入力装置15を介したユーザからの指示入力などに応じて、3次元オブジェクトの内部に表すべき付加オブジェクトを描画する(S38)。付加オブジェクトは上述のとおり、ユーザの操作によって移動するカーソル、対象物に接して表示されるマーカ、対象物の軌跡を表す線などであり、ユーザが選択できるようにする。画像描画部54は、ユーザによる指定や、エッジ抽出処理によって求めた対象物の輪郭線などに基づき付加オブジェクトを表示させる位置を決定したうえ、描画用メモリ56にロードした画像データを用いて付加オブジェクトを描画する。
次に画像描画部54は、描画用メモリ56にロードしたスライス画像を視点から遠い順にアルファブレンディングにより重ね合わせていくことにより、計測空間を表す3次元オブジェクトを描画する(S40)。なお後述するように、S38の付加オブジェクトの描画処理は、S40のアルファブレンディング描画と同時に行ってもよい。
ユーザが入力装置15を用いて視点を移動させる操作を行ったら(S44のY)、S34からS40の処理を、視点の変化に対応させて繰り返す。視点移動や表示停止の操作がなされない間はその時点の表示を継続し(S44のN、S46のN)、表示停止の操作がなされたら処理を終了する(S46のY)。
図10は図9のS40において、画像描画部54がアルファブレンディング描画を行う様子を模式的に示している。視点114に近い方から、スクリーン116、オブジェクトに対応するスライス画像110a、110b、・・・、110n、背景118が位置する。このときスクリーン116のある点115に投影される像は、視点114と点115を通る視線119と、スライス画像110a、110b、・・・、110nおよび背景118との交点112a、112b、・・・、112n、117の像を視点114から遠い方から重ね合わせたものとなる。同図の場合、交点117、112n、・・・、112b、112a、の順となる。
図11は、図10で示したスクリーン上の点115におけるRGBの値を求める処理手順を示すフローチャートである。まず変数Ri、Gi、Bi(iは−1以上の整数)を準備し、R−1、G−1、B−1に、背景118の交点117におけるRGB値、Rb、Gb、Bbをそれぞれ代入する(S50)。視点から最も遠いスライス画像110n上の交点112nのRGB値およびアルファ値を(R0,G0,B0,A0)とすると、背景118の交点117とスライス画像110n上の交点112nとを重ね合わせたときRGB値は以下のようになる(S52、S54、S56、S58)。
R=Kr×A0×R0+(1−Kr×A0)×R−1
G=Kg×A0×G0+(1−Kg×A0)×G−1
B=Kb×A0×B0+(1−Kb×A0)×B−1
・・・(式1)
ここでKr、Kg、Kbは、スライス画像が保持するアルファ値を色によって調整する場合に、赤、緑、青それぞれにかかるアルファ値の係数であり必要に応じて0<K<1の範囲で設定する。色による調整が必要ない場合はKr=Kg=Kb=1とする。上式のR、G、Bを新たなR0、G0、B0としてiをインクリメントしながら最後のスライス画像(i=nslice−1)の交点まで、視点に近づく方向に順に行うことにより(S60のY、S62)、透明、半透明の状態を許容しながらnslice枚のスライス画像の交点を全て重ね合わせたRGB値が得られる(S60のN)。
ただし描画の処理手順はこれに限定されない。例えば以下のようにしてRGB値を求めることも考えられる。すなわち、式1を、k+1番目のスライス画像(i=k)まで重ね合わせたときのRGB値として一般化すると次のようになる。
R’k=Kr×Ak×Rk+(1−Kr×Ak)×R’k−1
G’k=Kg×Ak×Gk+(1−Kg×Ak)×G’k−1
B’k=Kb×Ak×Bk+(1−Kb×Ak)×B’k−1
・・・(式2)
式2において、重ね合わせ後のRGB値を(R’k,G’k,B’k)として、k+1番目のスライス画像のみのRGB値(Rk,Gk,Bk)と区別している。式2の関係を利用し、最後のスライス画像(i=nslice−1)まで重ね合わせたときの最終的なRGB値を背景のRGB値まで遡及させて展開すると、当該最終的なRGB値(R’nslice−1,G’nslice−1,B’nslice−1)は次のようにスライス画像ごとのRGB値の線形結合で表すことができる。
ここで(Bri,Bgi,Bbi)はi+1番目のスライス画像のRGB値(Ri,Gi,Bi)の係数であり、スライス画像のアルファ値から算出される。したがって描画前に全てのスライス画像のアルファ値を決定しておく態様においては、係数(Bri,Bgi,Bbi)を視点に応じて先に求めたうえで式3を用いて最終的なRGB値を算出してもよい。
図12は図9のS34において、スライス画像管理部52が視点に応じて必要なスライス画像のデータを決定する処理を説明するための図である。上述のようにスライス画像は所定の軸に対して離散的な位置における物理量の分布を画像化したものである。センサ軸が同図縦方向のz軸であった場合、基本的に生成されるスライス画像はスライス画像群120のようにxy平面を構成する平行な複数の面となる。このスライス画像群120を用いて同図上側または下側から見た3次元オブジェクト126を表示する場合、図10で説明したような重ね合わせを行うことにより違和感のない画像を描画できる。
一方、同図横方向のx軸や、奥行き方向のy軸に近い位置に視点を置くと、スライス画像の間の空間が見えてしまうことになる。そこで上述のとおり、センサ軸と異なる画像軸に対してスライス画像を生成したり、複数のセンサ軸について物理量を計測したりして複数の軸に対してスライス画像群を生成しておき、視点の移動によって用いるスライス画像群を切り替える。同図の例では、x軸を画像軸としたスライス画像群122とy軸を画像軸としたスライス画像群124を準備している。
そして表示すべき3次元オブジェクト126の周囲の3次元空間を区分けして、どの区分内に視点が位置しているかによって、描画に用いるスライス画像群を切り替える。例えば同図の点線に示すように、3次元オブジェクト126の各頂点から、当該頂点を形成する3次元オブジェクト126の3つの辺と所定の角度をなす境界線を設定する。そしてそれらの境界線を側面の辺とし3次元オブジェクトの各面を上面とするおよそ台形の空間を1つの区分とする。
例えば同図において3次元オブジェクト126の上面または下面にある区分内に視点があるときは、視線がz軸に最も近いため、z軸を軸とするスライス画像群120を描画に用いる。同様に、3次元オブジェクト126の左面または右面にある区分内に視点があるときは、視線がx軸に最も近いため、x軸を軸とするスライス画像群122を描画に用いる。3次元オブジェクト126の手前の面または奥の面にある区分内に視点があるときは、視線がy軸に最も近いため、y軸を軸とするスライス画像群124を描画に用いる。
図13は境界線の角度を決定する手法の例を説明するための図である。まず直交する2方向、図12の例ではx軸、y軸を軸とするスライス画像群を考える。同図は同じxy平面にx軸を軸とするスライス画像群122(点線)とy軸を軸とするスライス画像群124(実線)を配列させ、z軸方向から見た様子を示している。図中、左上から3次元オブジェクトを見た場合、視点の位置によって、頂点vを通る視線は矢印128、129、130のように変化する。
各視線との交点を有するスライス画像群の枚数は、x軸を軸とするスライス画像群122/y軸を軸とするスライス画像群124の順に次のようになる。
矢印128の視線:4枚/6枚
矢印129の視線:6枚/6枚
矢印130の視線:7枚/6枚
すなわち矢印129の視線において、どちらのスライス画像群のデータを用いても同じ回数のアルファブレンディング処理がなされるため、同じ表示画像が得られることになる。したがって矢印129の方向を境界線とすることで、切り替え前後の表示画像が連続的につながる。x軸を軸とするスライス画像群122の画像の間隔をWx、y軸を軸とするスライス画像群124の画像の間隔をWyとすると、矢印129の角度θは|tanθ|=Wy/Wxを満たすため、次の条件でスライス画像群を切り替える。
|tanθ|≧Wy/Wxのときy軸を軸とするスライス画像群
|tanθ|<Wy/Wxのときx軸を軸とするスライス画像群
上記を3次元に拡張し、視線ベクトルを(X,Y,Z)、z軸、x軸、y軸を軸とするスライス画像群をそれぞれSz、Sx、Syと表記すると、次の切り替え条件となる。
|Z/X|≧Wz/Wxかつ|Z/Y|≧Wz/WyのときSz
|Z/X|<Wz/Wxかつ|X/Y|≧Wx/WyのときSx
|Z/Y|<Wz/Wyかつ|X/Y|<Wx/WyのときSy
上記条件の境界となる視線ベクトルが図12の点線で示した境界線に対応する。これにより、視点の変化によって表示に用いるスライス画像群を切り替えても、切り替え前後をシームレスにつなげることができる。なお図12、13の例はセンサ軸または画像軸がスライス画像と垂直であったが、上述のとおり本実施の形態はそれに限定されない。例えばスライス画像がセンサ軸と垂直でない計測系の場合は、当該計測値を再構築して画像軸変換部50が生成するスライス画像もまた、画像軸と垂直でなくてよい。センサ軸と画像軸も直交していなくてよい。これらの場合も上記と同様の理論により境界線を設定することができ、視点に応じたスライス画像の切り替えおよびアルファブレンディング描画の処理も同様となる。
図14は3次元オブジェクトを描画する別の手法を説明するための図である。同図の場合、x軸、y軸、z軸に対するスライス画像群を3方向のテクスチャ画像として同時に使用する。各面にテクスチャを貼り付けた3次元オブジェクト136を視点132の位置に応じて描画する手法は一般的なコンピュータグラフィックスの描画処理を応用できる。一方、本実施の形態の場合は上述のとおり各方向のスライス画像がアルファチャンネルを有するため、視点132から遠い画素からの重ね合わせが必要となる。
しかし3方向のスライス画像を同時に用いる場合、視点から遠い順にスライス画像の組み合わせを特定するのは困難である。そこで同図に示すように、3次元オブジェクト136を、3方向のスライス画像群で格子状に区分けする。図中、3次元オブジェクト136中に表した互いに交差する直線は、各スライス画像の縁を表す。このような区分けによって得られる小さい直方体の3次元配列を対象とすれば、視点132から遠い順番を容易に特定できる。
同図の矢印138はそのような順番を模式的に示している。そしてこの矢印138の順序で、各直方体の面を構成するスライス画像の画素値を用いてスクリーン上に重ね合わせていくことにより、3次元オブジェクト136を透明、半透明の状態を可能として表現できる。この態様の場合、スライス画像管理部52は視点の位置によらず3方向のスライス画像群のデータをロードする。
次に図9のS38において、画像描画部54が付加オブジェクトを描画する手法を説明する。3次元オブジェクトの半透明の空間に浮いたような状態で付加オブジェクトを描画するためには、3次元オブジェクトのアルファブレンディング描画との描画順を考慮する必要がある。図15はその一つの方法として、先に付加オブジェクトを描画してから3次元オブジェクトを描画する処理手順を模式的に示している。
まず視点の位置に応じて、最終的に3次元オブジェクトが描画される仮想の直方体142を準備し、当該直方体142の内部の必要な位置に付加オブジェクト140を一般的な手法で描画する(S70)。同図の例では付加オブジェクト140は矢印状のカーソル図形である。次に上述の方法でスライス画像を用いて3次元オブジェクトを描画していく(S72)。付加オブジェクト140を先に描画しておくことで、アルファ値が0に近い透過率の高い領域では、そのまま付加オブジェクト140が残った状態となる。
そして視点に最も近いスライス画像まで重ね合わせが完了すると、3次元オブジェクト146内に付加オブジェクト140としてカーソルが浮いた状態を描画できる(S74)。例えばカーソルを、3次元オブジェクト146内に存在する対象物148を指すようにすることで、表示を用いたプレゼンテーションなどを好適に行える。対象物が時間とともに移動する様を動画として表示する場合は対象物の軌跡を表示してもよい。また観測されたデータから予測される位置に、人工的に別の対象物(生成物)を表してもよい。この場合、生成物の位置の計算は別途行い、ユーザが入力値として入力するようにしてもよい。
図16は付加オブジェクトを描画する別の手法の処理手順を模式的に示している。この例は、スライス画像を用いた3次元オブジェクトの描画と付加オブジェクトの描画を並行に進める手法である。まず付加オブジェクトを描画する位置までスライス画像を用いたアルファブレンディング描画を進める(S80)。そして、この時点で最も上にあるスライス画像150aから次のスライス画像までの空間にあるべき付加オブジェクトの部分152aを描画する(S82)。
続いてスライス画像150aの次に位置するスライス画像150bを重ね合わせる(S84)。そして当該スライス画像150bから次のスライス画像までの空間にあるべき付加オブジェクトの部分152bを描画する(S86)。同図の場合、この段階で付加オブジェクト全体が描画されている。その後は残りのスライス画像を重ね合わせていくことにより、図15と同様、3次元オブジェクト146内に付加オブジェクト140としてカーソルが浮いた状態を描画できる(S88)。
図17はセンサ群12が所定のレートで計測を行った結果を3次元オブジェクトの動画として表示する際のスライス画像データの読み出し手順を模式的に示している。この場合、スライス画像記憶部48には各計測時刻t=0、1、・・・、Tのそれぞれに対しスライス画像群が生成される。実際には各時刻に対し3方向のスライス画像群が生成されるがここでは図示を省略している。
このようなスライス画像を用いて動画を表示する場合は特に、視点および時間双方のパラメータの変化に追随させて新たなスライス画像データをロードし、描画する必要があるため、各処理の効率化が求められる。動画とせずに視点の移動のみで表示を変化させる場合も同様である。スライス画像記憶部48を2次記憶装置として構成した場合、描画用メモリ56へのデータ転送処理は描画遅延の原因となりやすい。
そこでスライス画像管理部52は、描画に必要なスライス画像の順に描画メモリ56にロードするようにする。例えば視点の位置から最も遠いスライス画像を特定し、当該スライス画像のデータから順にロードしていく。このとき転送経路となるバスの帯域幅などによって複数のスライス画像からなるロード単位を形成し、当該ロード単位でロードしてもよい。同図の例では太枠で示した3枚のスライス画像のデータをロード単位として同時にロードしている。
最初のスライス画像データがロードされた直後から、画像描画部54はスライス画像データを描画用メモリ56から順に読み出し、アルファブレンディング描画を実行していく。この描画処理と並行して、スライス画像管理部52は以降のスライス画像のデータをロード単位でロードしていく。t=0のスライス画像群のロードが完了したら、t=1のスライス画像群を同様にロードしていく。本実施の形態ではスライス画像を順に重ね合わせて3次元オブジェクトを描画するため、このような並行処理が可能であり、ひいては視点移動要求に対する応答性を向上させたり、動画の円滑な表示が実現できる。
以上述べた本実施の形態によれば、対象物の断面情報を平行な複数の平面で取得した積層画像情報からアルファチャンネルを有するスライス画像を作成し、アルファブレンディング描画することで、計測空間を3次元オブジェクトで表現する。これにより一般的な画像処理機能を用い、処理の負荷や必要なリソースを増大させることなく、対象物やその周囲の状態を、直感的に理解可能な形態で可視化することが容易にできる。
スライス画像を生成する段階で、アルファ値や色情報の決定規則を様々変化させることができるため、画像を作成するユーザ自身が、表示内容や表示目的に適した加工を行うことが容易である。また最初に取得した積層画像情報が一つの軸に対するものであっても、あらかじめ複数の軸に対するスライス画像を生成しておき、3次元オブジェクト表示時には視点の位置に応じて用いるスライス画像を切り替える。さらに視点の近さに応じてスライス画像の量を調整する。これらの構成により、ソースデータが離散的な2次元画像であっても、3次元オブジェクトを全方位から違和感なく表示させることができる。また複数の軸に対するスライス画像は描画に必要になったとき生成することもできる。このようにすればスライス画像を格納するメモリの容量を削減できる。
さらに、3次元オブジェクト内に透明、半透明の空間を生成させることができるため、カーソルなどの付加オブジェクトを3次元オブジェクト内に表示できる。結果として、対象物を指し示したり、対象物に追随するマーカーをつけたり軌跡を可視化したり、といったことが容易にでき、プレゼンテーションなどにおいて好適な表示を実現できる。
さらに3次元オブジェクトを表示する際は、視点の位置に応じて用いるスライス画像の順序を確定できるため、二次記憶装置からメモリへのデータのロードをその順で行えば、ロード処理と描画処理を並行させることができる。これにより、視点を移動させたり3次元オブジェクトを動画にしたりして、スライス画像のデータのロード頻度が高くなる状況においても表示までのレイテンシを抑えられる。結果として、メモリ容量を増大させることなく円滑な表示変化を実現できる。
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば本実施の形態のスライス平面は、センサ軸や画像軸と所定の角度を有する平面であったが、平面に限らず球面やゆらぎのある曲面などの曲面であってもよい。図18は部分円筒状の曲面あるいは部分球面に対する分布を計測する場合のスライス画像の形状を模式的に示している。同図においてセンサ群208は対象物216の存在する計測空間を測定するが、このときの計測値の分布は、同図縦方向のz軸をセンサ軸とし、それを中心とする平行な複数の曲面210a、210b、・・・、210nに対するものである。同図ではこれらの曲面を、センサ軸を通る断面における扇形の曲線で示している。
このようなスライス曲面210a、210b、・・・、210nに対し、スライス画像生成部44は、実施の形態で述べたのと同様にスライス画像を生成するが、このとき生成されるスライス画像はスライス曲面と同じ曲面状となる。スライス画像をテクスチャとして扱うことにより、その形状が平面か曲面かに関わらず同様の処理が可能となる。また画像軸変換部50は、スライス曲面210a、210b、・・・、210nを所定の角度で横切る平面あるいは曲面を複数準備し、当該面上の計測値を抽出することでスライス曲面210a、210b、・・・、210nとは向きの異なるスライス画像群を生成する。
同図の例では、スライス曲面210a、210b、・・・、210nを垂直に横切る、図面に対し垂直な平面212a、212b、・・・、212nについてスライス画像群を生成している。さらに同図の奥行き方向に並ぶスライス画像群も生成する。このようにして生成した3方向のスライス画像群を用いて描画を行うことにより、部分円筒または部分球形状の3次元オブジェクトを表示できる。この場合は、各方向のスライス画像群で区分けされた小さい立体ごとに、図14で示したのと同様の順序で描画していく。
上述したように本実施の形態では、スライス画像の形状によらず画像をテクスチャとして扱うことにより、一般的なコンピュータグラフィックス技術によって3次元オブジェクトを描画することができる。したがって、その形状や交差する角度がどのようなものであっても、それらが既知であれば同様かつ容易に計測結果を可視化することができる。