(57)【特許請求の範囲】
【請求項１】
テクスチャマップ機能、α-ブレンディング機能およびｍｕｌｔｉ-ｔｅｘｔｕｒｅ機構を有するグラフィクスハードウェアを備える装置を用い、
ボリュームデータ全体をテクスチャマップ機能とα-ブレンディング機能を用いてスライスデータの積み重ねで表現する基本スライスデータ作成ステップ（Ａ）と、
前記基本スライスデータの間に中間スライスデータを線形補間して挿入する中間スライスデータ作成ステップ（Ｂ）と、
ボリューム全体Ｖを固定サイズ２３ＮのブロックＶＢに分割する２３Ｎブロック分割ステップ（Ｃ）と、
分割した各ブロック毎に解像度をＮから順に１つ減少させて、その際に生じる元のデータとの誤差を計算するブロック誤差計算ステップ（Ｄ）と、
全てのブロックの計算誤差のうち、最も誤差が小さいブロックの解像度を下げる解像度低減ステップ（Ｅ）とを有し、ステップ（Ｄ）と（Ｅ）を繰り返して、全体としてデータのサイズを減少させながら、各ブロックに対する最適な解像度を決定する、ことを特徴とするボリュームレンダリング方法。
【請求項２】
前記中間スライスデータの挿入間隔は、描画の際に必要な解像度に応じてスライスデータ上でのサンプリング間隔と同一またはそれより狭くする、ことを特徴とする請求項１に記載のボリュームレンダリング方法。
【請求項３】
前記中間スライスデータのテクスチャは、グラフィクスハードウェアのｍｕｌｔｉ-ｔｅｘｔｕｒｅ機構を使って描画時に作成する、ことを特徴とする請求項１に記載のボリュームレンダリング方法。
【請求項４】
ボリュームデータ全体を階層表現せずに固定解像度のブロックで表現してデータ構造を簡略化し、かつ各ブロック内のデータの局所性を利用してデータ量を削減してメモリ利用を効率化する、ことを特徴とする請求項１に記載のボリュームレンダリング方法。
【請求項５】
ボリュームデータ全体をテクスチャマップ機能とα-ブレンディング機能を用いてスライスデータの積み重ねで表現する基本スライスデータ作成ステップ（Ａ）と、
前記基本スライスデータの間に中間スライスデータを線形補間して挿入する中間スライスデータ作成ステップ（Ｂ）と、
ボリューム全体Ｖを固定サイズ２３ＮのブロックＶＢに分割する２３Ｎブロック分割ステップ（Ｃ）と、
分割した各ブロック毎に解像度をＮから順に１つ減少させて、その際に生じる元のデータとの誤差を計算するブロック誤差計算ステップ（Ｄ）と、
全てのブロックの計算誤差のうち、最も誤差が小さいブロックの解像度を下げる解像度低減ステップ（Ｅ）とを有し、ステップ（Ｄ）と（Ｅ）を繰り返して、全体としてデータのサイズを減少させながら、各ブロックに対する最適な解像度を決定する、ことを特徴とするボリュームレンダリングプログラム
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通常のＰＣ（パーソナルコンピュータ）やゲーム機を用いてボリュームレンダリングを行うボリュームレンダリング方法とそのプログラムに関する。
【０００２】
【従来の技術】
ボリュームレンダリングとは、空間の密度のデータであるボリュームデータを直接表示する画像表示手段である。ボリュームレンダリングでは、視線を伸ばし、その視線上にあるボクセルの密度を合計していく。このような手法を『レイキャスティング』と呼ぶ。従ってボリュームレンダリングでは、最終的な数値を元にして、透明度を考慮した画像を生成する。
【０００３】
言い換えれば、ボリュームレンダリングは３次元のスカラー場を２次元の画面に表示するための可視化手法であり、その方法は大きく間接法と直接法に分類できる。
間接法（ｉｎｄｉｒｅｃｔ  ｖｏｌｕｍｅ  ｒｅｎｄｅｒｉｎｇ）では、前処理によって表示する情報を抽出し、データの一部分を表示する。代表的なものにＭａｒｃｈｉｎｇ  Ｃｕｂｅｓ法を利用した等値面表示がある。
直接法（ｄｉｒｅｃｔ  ｖｏｌｕｍｅ  ｒｅｎｄｅｒｉｎｇ）は、全てのサンプル点の寄与を計算して全体を表示する方法であり、描画面から視線方向に沿って輝度を積分（ｂａｃｋｗａｒｄ  ｐｒｏｊｅｃｔｉｏｎ）するＲａｙ  Ｃａｓｔｉｎｇ、サンプル点を描画面に投影（ｆｏｒｗａｒｄ  ｐｒｏｊｅｃｔｉｏｎ）するＣｅｌｌ  Ｐｒｏｊｅｃｔｉｏｎ、Ｓｈｅａｒ−Ｗａｒｐ  Ｆａｃｔｏｒｉｚａｔｉｏｎ、Ｓｐｌａｔｔｉｎｇ等が知られている。通常、ボリュームレンダリングという場合には直接法を指し、本発明でも直接法を扱う。
【０００４】
【発明が解決しようとする課題】
ボリュームレンダリングを用いると高画質でデータの全体の様子を把握することが容易な画像を得ることができるため、工学、医学、娯楽などの分野で幅広く利用されている。しかし計算に必要な時間が長く、必要な記憶容量が大きい問題点があった。そのため、従来は、速度が問題にならない場合や、大規模な計算機環境や特殊な高速ハードウェアを使える場合に利用が限られていた。
【０００５】
すなわち、従来のボリュームレンダリングには、以下の問題点があった。
（１）計算コストが高い。すなわち、記憶容量が大きい大規模な計算機環境や特殊な高速ハードウェアを利用できない限り、インタラクティブな速度で描画を行うことができなかった。
（２）通常のＰＣ（パーソナルコンピュータ）やゲーム機でボリュームレンダリングを行う場合には、扱えるボリュームデータのデータ容量が小さい。
例えば、６４×６４×６４程度の小さいボリュームデータであれば、３０ｆｐｓ（１秒間に３０フレーム）程度のインタラクティブな速度（待ち時間のほとんどない快適な速度）で従来もボリュームレンダリングを行うことができるが、２５６×２５６×２５６（１６Ｍｂｙｔｅ）程度のボリュームデータでは例えば２０ｆｐｓ以下に低下し、快適な利用ができない。さらに、５１２×５１２×５１２（１２８Ｍｂｙｔｅ）程度のボリュームデータでは、１ｆｐｓ以下までに低下してしまいほとんど実用できなくなる。
（３）通常のＰＣやゲーム機で描画速度を高めるために、データを間引くなどの処理を行うと、モアレ等が激しくなり、画質の劣化が目立つ。
【０００６】
本発明は、これらの問題点を解決するために創案されたものである。すなわち、本発明の目的は、（１）通常のＰＣ（パーソナルコンピュータ）やゲーム機を用いてボリュームレンダリングを行うことができ、（２）１２８Ｍｂｙｔｅ程度以上の比較的大きいボリュームデータをインタラクティブな速度で扱うことができ、（３）更に画質の劣化を最小限に抑えることができるボリュームレンダリング方法とそのプログラムを提案することにある。
【０００７】
【課題を解決するための手段】
本発明によれば、テクスチャマップ機能、α-ブレンディング機能およびｍｕｌｔｉ-ｔｅｘｔｕｒｅ機構を有するグラフィクスハードウェアを備える装置を用い、
ボリュームデータ全体をテクスチャマップ機能とα-ブレンディング機能を用いてスライスデータの積み重ねで表現する基本スライスデータ作成ステップ（Ａ）と、
前記基本スライスデータの間に中間スライスデータを線形補間して挿入する中間スライスデータ作成ステップ（Ｂ）と、
ボリューム全体Ｖを固定サイズ２３ＮのブロックＶＢに分割する２３Ｎブロック分割ステップ（Ｃ）と、
分割した各ブロック毎に解像度をＮから順に１つ減少させて、その際に生じる元のデータとの誤差を計算するブロック誤差計算ステップ（Ｄ）と、
全てのブロックの計算誤差のうち、最も誤差が小さいブロックの解像度を下げる解像度低減ステップ（Ｅ）とを有し、ステップ（Ｄ）と（Ｅ）を繰り返して、全体としてデータのサイズを減少させながら、各ブロックに対する最適な解像度を決定する、ことを特徴とするボリュームレンダリング方法が提供される。
グラフィクスハードウェアは、例えばＰＣグラフィクスカードであるが、ワークステーションに搭載される同様の機能のグラフィクスハードウェアでもよい。また、装置は、例えばパーソナルコンピュータであるが、同様の機能を有するゲーム機や、その他の機器でもよい。
【０００８】
上記本発明の方法によれば、ボリュームデータ全体をテクスチャマップ機能とα-ブレンディング機能を用いてスライスデータの積み重ねで表現することにより、グラフィクスハードウェア（例えばＰＣグラフィクスカード）のポリゴン表示機能を利用して高速なボリュームレンダリングを実現できる。
また、基本スライスデータの間に中間スライスデータを線形補間して挿入することにより、スライスと垂直な方向への補間精度の不足を補い、補間精度の不一致による画質上の不具合（例えばモアレの発生）を防止することができる。
またこの方法により、全体として同じボリュームのサイズでも、描画結果の画質を高画質に保つことが可能となる。
【０００９】
本発明の好ましい実施形態によれば、前記中間スライスデータの挿入間隔は、描画の際に必要な解像度に応じてスライスデータ上でのサンプリング間隔と同一またはそれより狭くする。
この方法によりモアレを効果的に防ぐことができる。
【００１０】
また、前記中間スライスデータのテクスチャは、グラフィクスハードウェアのｍｕｌｔｉ−ｔｅｘｔｕｒｅ機構を使って描画時に作成する。
この方法により中間スライスデータのテクスチャをメモリ上に保持しないので、必要なメモリ容量を増やすことなくスライスと垂直な方向にサンプル点を増加させることができる。
【００１１】
また本発明によれば、ボリュームデータ全体を階層表現せずに固定解像度のブロックで表現してデータ構造を簡略化し、かつ各ブロック内のデータの局所性を利用してデータ量を削減してメモリ利用を効率化する、ことを特徴とするボリュームレンダリング方法が提供される。
【００１２】
上記本発明の方法によれば、入力データのサイズを縮小し、ハードウェアの容量を上回るボリュームも画質の劣化を抑えつつ高速に描画することが可能となる。
【００１４】
また本発明によれば、ボリュームデータ全体をテクスチャマップ機能とα−ブレンディング機能を用いてスライスデータの積み重ねで表現する基本スライスデータ作成ステップ（Ａ）と、前記基本スライスデータの間に中間スライスデータを線形補間して挿入する中間スライスデータ作成ステップ（Ｂ）と、ボリューム全体Ｖを固定サイズ２３ＮのブロックＶＢに分割する２３Ｎブロック分割ステップ（Ｃ）と、分割した各ブロック毎に解像度をＮから順に１つ減少させて、その際に生じる元のデータとの誤差を計算するブロック誤差計算ステップ（Ｄ）と、全てのブロックの計算誤差のうち、最も誤差が小さいブロックの解像度を下げる解像度低減ステップ（Ｅ）とを有し、ステップ（Ｄ）と（Ｅ）を繰り返して、全体としてデータのサイズを減少させながら、各ブロックに対する最適な解像度を決定する、ことを特徴とするボリュームレンダリングプログラムが提供される。
【００１５】
このプログラムを、テクスチャマップ機能、α−ブレンディング機能およびｍｕｌｔｉ−ｔｅｘｔｕｒｅ機構を有するグラフィクスハードウェアを備える装置で実行することにより、グラフィクスハードウェアのポリゴン表示機能を利用して高速なボリュームレンダリングを実現でき、補間精度の不一致による画質上の不具合（例えばモアレの発生）を防止することができ、全体として同じ誤差でもボリュームのサイズをより小さくすることが可能となり、入力データのサイズを縮小し、ハードウェアの容量を上回るボリュームも高速に描画することが可能となる。
【００１６】
【発明の実施の形態】
以下、本発明の好ましい実施形態を図面を参照して説明する。
【００１７】
１．ボリュームレンダリングを用いると高画質でデータの全体の様子を把握することが容易な画像を得ることができるため、工学、医学、娯楽などの分野で幅広く利用されている。しかし計算に必要な時間や記憶容量が大きいことから、速度が問題にならない場合や、大規模な計算機環境や特殊ハードウェアを使える場合に利用が限られている。
計算コストが高い理由としては主に１）視線に沿った輝度の累積計算の際に必要なデータのメモリ局所性が低く、メモリアクセスの効率が悪い点、２）入力データの再サンプリングの際に必要な３次線形補間が複雑である点、３）多くの場合、入力データ量が膨大である点、が挙げられる。速度を向上させるために、必要のない累積計算を途中で打ち切るｅａｒｌｙ  ｒａｙ  ｔｅｒｍｉｎａｔｉｏｎ最適化や、ｏｃｔｒｅｅやｋ−ｄ木を使ってデータの局所的性質を利用する方法等、アルゴリズムに対する改良がされている。しかしこれらの最適化を行っても依然として計算量は大きいため、インタラクティブな速度で描画するために、並列計算機や専用の特殊ハードウェアを利用する必要があった。
【００１８】
一方でＰＣグラフィックスカードの描画速度と機能が向上したため、これを利用してさまざまな可視化手法を通常のＰＣで実現することが盛んに研究されている。ボリュームレンダリングに関しても、ボリュームを座標軸に垂直なスライスの重ねあわせで表現し、テクスチャマップされたポリゴンのαブレンディングを使って描画する方法が提案されている。
【００１９】
ここで、テクスチャマップまたは「テクスチャマッピング」とは、オブジェクトの表面にテクスチャと呼ばれる画像を貼り付けるもので、３Ｄオブジェクトをリアルに見せるためのもっとも基本的な技術の一つである。コンピュータによって描かれる３Ｄオブジェクト（立体物）は、「ポリゴン」という三角形の板で構成され、その大きさが（キメ）細かくなればなるほど、オブジェクトの細部を表現できるため、形状はよりリアルになるが、これだけでは、オブジェクトの表面の模様や質感などを表わすことはできないため、テクスチャマップが必要となる。
【００２０】
また、αブレンディングまたは「アルファブレンディング（Ａｌｐｈａ  Ｂｌｅｎｄｉｎｇ）」とは、半透明処理のことを指す。ある画像の上に別の画像を半透明に重ね合わせるとき、透明度を表わす値を「アルファ（Ａｌｐｈａ）値」と呼び、この値にもとづいて画像を合成（ブレンド）することからアルファブレンディングと名付けられている。３Ｄ処理においては、単純なガラス板から、水、雲や煙などの不定形なものまで、さまざまな半透明処理に用いられる。
【００２１】
上述したスライスを使う方法は、描画にハードウェアの加速が利用できるため高速であるという利点がある一方、スライスと垂直な方向へのデータの補間・サンプリングが行われないために画質が悪く、またＰＣグラフィクスカードの記憶容量の制限から、扱えるデータサイズが小さいという欠点があった。
【００２２】
本発明では、スライスの重ね合わせに基づくボリュームレンダリングを元に、画質と扱えるデータサイズの２点に関して改良した。１点目に関しては、グラフィクスハードウェア（例えばＰＣグラフィクスカード）のｍｕｌｔｉ−ｔｅｘｔｕｒｅ機能を利用し、描画に必要なメモリ容量を増やすことなくスライスと垂直な方向にサンプル点を増加させ、結果の画質を向上させた。２点目に関しては、高速度描画に適したボリュームの適応的サンプリングを行って入力データのサイズを縮小し、ハードウェアの容量を上回るボリュームも高速に描画することを可能にした。また以上の手法を一般のＰＣグラフィクスカード上で実装し、十分大きいサイズのボリュームデータを、十分な画質で、インタラクティブな速度で描画できることを確認した。
【００２３】
ｍｕｌｔｉ−ｔｅｘｔｕｒｅ機能または「マルチテクスチャ（Ｍｕｌｔｉ  Ｔｅｘｔｕｒｅ）」とは、その名のとおり複数のテクスチャ（ＤｉｒｅｃｔＸ  ７では最大８枚）を重ねる（合成）機能である。
ビデオチップの機能で、俗に「マルチテクスチャ対応」という場合は、上記の重ね合わせ処理を１回のポリゴン描画の際にまとめて行なう、「シングルパス・マルチプル・テクスチャ・ブレンディング（ＳｉｎｇｌｅＰａｓｓ  Ｍｕｌｔｉｐｌｅ  Ｔｅｘｔｕｒｅ  Ｂｌｅｎｄｉ  ｎｇ）」という方法を指す。これに対してソフトウェアで複数回違うテクスチャが貼り込まれたポリゴンを描画することで実現する方法を、マルチパス・テクスチャ・ブレンディング（ＭｕｌｔｉＰａｓｓ  Ｔｅｘｔｕｒｅ  Ｂｌｅｎ  ｄｉｎｇ）と呼ぶ。基本的にどちらの手法でも描画結果は同じだが、前者のほうが高速に処理を行なうことができる。
【００２４】
２．  Ｄｉｒｅｃｔ  Ｖｏｌｕｍｅ  Ｒｅｎｄｅｒｉｎｇ
２．１  Ｒｅｎｄｅｒｉｎｇ  Ｅｑｕａｔｉｏｎ
図１は、従来の直接法のボリュームレンダリングの模式図である。ボリュームレンダリングは、描画面から視線方向に輝度を累積する方法（ｂａｃｋｗａｒｄｐｒｏｊｅｃｔｉｏｎ）とサンプル点を描画面に投影する方法（ｆｏｒｗａｒｄ  ｐｒｏｊｅｃｔｉｏｎ）に分けられるが、どちらの場合も描画の方程式は共通で、描画面の各画素から視線方向に伸びる光線に沿ってボリュームの輝度値を積分する。
描画面からの光線に沿った距離をλ、ボリューム内の位置をｘ（λ）とすると、描画面上の画素値Ｉは式（１）で求められる。ここでｃ〜は各点で放出される色（ＲＧＢ値）を表す関数、τは各点における光線の減衰率を表す関数である。これらを用いて、ボリュームデータとして与えられるスカラー値ｓ（ｘ）に表示色を割り当てる。通常τはｓ（ｘ）の関数として定義されるが、ｔｉｌｄｅｃの計算は次の２つの段階を経て行われる。
【００２５】
【数１】
0003589654.tif 000002
【００２６】
まず最初にスカラー値ｓ（ｘ）から色（ＲＧＢ値）への変換関数を通すことで、各点のスカラー値による色の寄与を決定する（ｃｌａｓｓｉｆｉｃａｔｉｏｎ）。これはボリュームの各点から放出される光の効果に相当する。この変換関数は通常ユーザーによって定義され、レンダリングの途中で変更されることがあるが、視点には依存せず一定である。次に各点と光源の位置関係から与えられる色情報を付加する（ｓｈａｄｉｎｇ）。これには光の拡散反射や鏡面反射の成分が含まれる。ｃｌａｓｓｉｆｉｃａｔｉｏｎの効果とｓｈａｄｉｎｇの効果は個別に計算して、加算により合成することが可能である。入力のスカラー値の分布をそのまま可視化する場合には、ｃｌａｓｓｉｆｉｃａｔｉｏｎだけを使って描画することもできるが、物体の幾何形状を表示する際には、３次元の空間を正確に認識するためにｓｈａｄｉｎｇが必要である。ボリュームに対してｓｈａｄｉｎｇを行う具体的な方法は５．で説明する。
【００２７】
２．２  Ｄｉｓｃｒｅｔｉｚａｔｉｏｎ
描画計算を行うために式（１）の光の減衰率の部分を離散化すると式（２）〜（４）と書ける。ただしＤはサンプリング幅、ｉはサンプル点の番号で、式（５）と置いた。αｉは不透明度（α値）と呼ばれる値である。
【００２８】
【数２】
0003589654.tif 000003
【００２９】
式（５）で定義されたαｉを使って、ｃ〜＝αｃｉと表せる。ここでｃｉは透明度を考慮しないＲＧＢ値であり、αｃｉはｏｐａｃｉｔｙ−ｗｅｉｇｈｔｅｄ  ｃｏｌｏｒまたはａｓｓｏｃｉａｔｅｄ  ｃｏｌｏｒと呼ばれ、不透明度を考慮した時の色である。離散化されたｉ番目の微小領域領域からの色の寄与を式（６）と書くと、式（５）を使って式（１）を離散化した結果は式（７）となる。光線の無限遠方からｉまでの累積輝度Ｃｉ’を使ってこの式を変形して、式（８）を得る。最終的に求めたい値はＩ＝Ｃ０’である。
【００３０】
【数３】
0003589654.tif 000004
【００３１】
２．３  Ｓｌｉｃｅ−ｂａｓｅｄ  Ｖｏｌｕｍｅ  Ｒｅｎｄｅｒｉｎｇ
式（８）は、ボリュームのサンプリングを視線方向に伸びる光線に沿って一定間隔で行い、描画面から遠いほうから順にＲＧＢ値を繰り返しαブレンディングすることでボリュームレンダリングの計算が実現できることを示している。そこで、ボリューム全体を視線方向になるべく垂直な複数のスライスの積み重ねで表現し、テクスチャマップされたポリゴンのαブレンディング計算でボリュームレンダリングを行うことを考える（図２）。このように表現することでグラフィクスハードウェア（例えばＰＣグラフィクスカード）のポリゴン表示機能を利用して高速なボリュームレンダリングを実現できる。
ハードウェアがソリッドテクスチャ（３次元テクスチャ）をサポートしている場合には、視線に垂直な面（ｉｍａｇｅ−ａｌｉｇｎｅｄ  ｓｌｉｃｅ：図３Ｂ）を生成し、ボリュームをソリッドテクスチャとして持つ方法が可能である。視線と面が常に垂直であるためには、視点変更の度にスライスの位置とテクスチャ座標を再計算する必要がある。
【００３２】
ソリッドテクスチャが利用できない場合には２次元のテクスチャマップを利用する。ボリュームを座標軸に沿って切断したスライス（ｏｂｊｅｃｔ−ａｌｉｇｎｅｄ  ｓｌｉｃｅｓ：図３Ａ）の集合を生成して、ボリュームの断面画像を２次元テクスチャとしてマップする。表示の際には視線方向と座標軸の関係を調べ、視線とスライスの法線のなす角が常に一定以下になるようにスライスする軸の方向を選択する。スライス軸の変更の際にテクスチャを切り替える必要があり、インタラクティブ性を保証するためにはｘ、ｙ、ｚ軸方向のスライスを３組用意しておく必要がある。この場合、ハードウェアの制限から各テクスチャ画像はメモリ中で連続領域を占めていなければならないので、テクスチャは軸方向ごとに合計３組の複製を持つ必要がある。
多くのハードウェアでソリッドテクスチャよりも２次元のテクスチャのほうが高速のため、ｏｂｊｅｃｔ−ａｌｉｇｎｅｄなスライスを切り替えて表示する方法が描画速度は速い。
【００３３】
３．  Ｉｍｐｒｏｖｅｍｅｎｔ  ｏｆ  ｖｉｓｕａｌ  ｑｕａｌｉｔｙ    通常のボリュームレンダリングでは入力のスカラー値を３次線形補間しながらサンプリングするのに対し、スライスを使ったレンダリングではスライス上で２次線形補間しながらサンプリングする。スライス方向には任意の解像度でサンプリングが可能であるのに対し、スライスの法線方向には一定間隔でしかサンプリングできないため、描画する解像度や視点を変更すると、補間精度の不一致により画質上の不具合が現れることがある。図４Ａに見られる縞状の模様は、スライスを使ったレンダリングの際に、スライスと垂直な方向への補間精度が不足することによって生じるモアレである。
【００３４】
３次補間を近似してサンプリング幅を合わせるの方法のひとつに、元のスライス間に上下のスライスを線形補間して得られる中間スライスを挿入する方法がある（図５）。モアレを防ぐためには、中間スライスの発生間隔を、描画の際のスライス上でのサンプリング間隔と同程度にする必要がある。中間スライスのテクスチャはメモリ上に保持するのではなく、ｍｕｌｔｉ−ｔｅｘｔｕｒｅ機構を使って描画時に生成できる。
隣接するスライスＳｉとＳｉ＋１の間の、ｉ＋αの位置に発生させる中間スライスＳｉ＋αは式（９）と定義できる。座標の補間により中間スライスの位置を決定し、新規に発生したポリゴンにグラフィクスハードウェアのｍｕｌｔｉ−ｔｅｘｔｕｒｅ機能で生成したテクスチャをマップする。
【００３５】
【数４】
0003589654.tif 000005
【００３６】
モアレを防ぐためには、ポリゴンの描画の際のポリゴン上でのサンプリング幅とスライス幅が同程度であればよい。そこで描画の際に画面上で１つのスライスが占める領域を調べ、そのサイズに応じて中間スライスの発生枚数を変更することでモアレを解消することができる（図４Ｂ）。中間スライスの発生枚数を変更すると式（５）のＤが変わるため、各点におけるα値を更新する必要がある。
【００３７】
４．  Ａｄａｐｔｉｖｅｌｙ  ｓａｍｐｌｅｄ  ２３Ｎ  −ｂｌｏｃｋ
テクスチャマップとαブレンディングを使うと、グラフィクスハードウェア（例えばＰＣグラフィクスカード）の加速を利用して高速にボリュームレンダリングできるが、テクスチャ保持するビデオメモリ（ＶＲＡＭ）のサイズには制限があるため、メモリ容量を上回る巨大なデータを描画する際には速度が劇的に落ちる。一般にＶＲＡＭは主記憶と比べて１０倍から１００倍程度小さく、サイズの制限は大きな問題になる。
【００３８】
データの局所性を仮定できるボリュームデータに対しては、ｏｃｔｒｅｅ表現を使うことでメモリの利用効率を上げることが期待できる。しかしｏｃｔｒｅｅの階層構造が多段になり複雑化すると、データの局所的な連続性が落ちることからデータアクセスに必要な時間が増す。したがって処理速度が必要な場合にはｏｃｔｒｅｅを使うことは必ずしも効果的ではない。多重解像度表現のメモリ効率の優位性を確保しながら同時に処理速度を落とさない表現方法として、８分木（ｏｃｔｒｅｅ）の一般化である２３Ｎ分木（２３Ｎ−ｔｒｅｅ）を使う方法がある。この方法は、処理の対象となるシーン全体が巨大で、物体への距離に応じた詳細度制御（ｌｅｖｅｌｓ  ｏｆ  ｄｅｔａｉｌ）や視界の外側にあるデータの切り捨て（ｖｉｅｗ  ｆｒｕｓｔｕｍ  ｃｕｌｌｉｎｇ）が必要がある場合に効果的である。
【００３９】
一方、通常のボリュームレンダリングでは、多くの場合データの解像度は画面の解像度より十分小さいため、階層構造のレベルを上下する必要はない。またテクスチャの読み込みには比較的時間がかかるため、インタラクティブ性を確保するためには、常に全てのデータを最高解像度で保持しておくほうが望ましい。そこで、本発明ではデータを階層表現せずに固定解像度のブロックで表現することでデータ構造を簡略化してインタラクティブ性を確保すると同時に、ブロック内の局所性を利用してデータ量を削減することでメモリ利用の効率化を行う。
【００４０】
まず（１）最初にボリューム全体Ｖを固定サイズ２３ＮのブロックＶＢに分割する（２３Ｎ−ｂｌｏｃｋｉｎｇ）。このとき各ブロックには２３Ｎサイズの部分ボリュームが割り当てられる。次に（２）各ブロック毎に解像度をＮから順に１つ減少させて、その際に生じる元のデータとの誤差を計算する。（３）全てのブロックで誤差計算を行い、最も誤差が小さいブロックの解像度を下げる操作を繰り返すことで、全体としてデータのサイズを減少させながら、各ブロックに対する最適な解像度を決定する。
【００４１】
ブロック番号をＢとして、このブロックにおける解像度ｎのボリュームをＶｎＢと書くと、元のボリュームはＶＮＢと表される。解像度を変化させた時、ＶＮＢとＶｎＢの誤差は、それぞれのボリュームをＶＮＢのサンプル点の位置で３次線形補間を使ってサンプリングした値の自乗誤差で定義する。即ち、ブロックＢ内の座標（ｉ、ｊ、ｋ）におけるＶｎＢの値をｖｎＢ（ｉ、ｊ、ｋ）とすると、ブロックＢの解像度ｎにおける元のボリュームとの誤差ＲｎＢは式（１０）と表せる。
【００４２】
【数５】
0003589654.tif 000006
【００４３】
全てのブロックに対して式（１０）を計算し、この値が最も小さくなるブロックの解像度ｎを減少させ、インタラクティブな速度で処理を行うのに必要なサイズまで全体のボリュームサイズを縮小する。図７に実際のデータに対するブロック化の過程とデータサイズの変化の様子を示す。以上のボリュームサイズ縮小のアルゴリズムを図６に示す。
ＲｎＢ＝０の場合は画質を全く変えずに解像度を減らすことができる。そうでない場合は、最も画質の損失が少ないと期待されるブロックから順に、必要メモリ容量がハードウェアがサポートしている容量に収まるようになるまで、解像度を落としていく。
【００４４】
ｉｍａｇｅ−ａｌｉｇｎｅｄなスライスを使ったボリュームレンダリングでは、２３Ｎ−ｂｌｏｃｋｉｎｇを行った後、各ブロックに１つのソリッドテクスチャ、１組のスライス集合を与えて、ブロックごとに描画する。ｏｂｊｅｃｔ−ａｌｉｇｎｅｄなスライスを使ったレンダリング時には、同様のブロック化のほかに、２次元の各スライス内で２３Ｎ−ｂｌｏｃｋｉｎｇをすることができる。これによって全体として同じ誤差でもボリュームのサイズをより小さくすることが可能である。ただし、この場合には、誤差があまり大きくなると、隣接スライス間での解像度の変動が大きくなり、結果としてモアレが強く現れることがある。
【００４５】
５．Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ
５．１  Ｉｎｔｅｒｍｅｄｉａｔｅ  ｓｌｉｃｅｓ
中間スライスを生成するためには、混合比を指定しながらｍｕｌｔｉ−ｔｅｘｔｕｒｅ処理を行う必要がある。本発明ではＯｐｅｎＧＬグラフィクスライブラリのＣＯＭＢＩＮＥテクスチャ環境使ってこれを実現する。
【００４６】
ｍｕｌｔｉ−ｔｅｘｔｕｒｅが利用できる環境では２つ以上のテクスチャユニットが図８のように接続している。各ユニットは別々のテクスチャ、テクスチャ座標、テクスチャ環境を持ち、それぞれＴＥＸＴＵＲＥ（テクスチャ値）の他に、ＰＲＩＭＡＲＹ＿ＣＯＬＯＲ（ｄｉｆｆｕｓｅ値）、ＰＲＥＶＩＯＵＳ（直前ユニットの出力）、ＣＯＮＳＴＡＮＴ（ユーザー定義の定数）を入力として利用できる。
【００４７】
中間スライスのテクスチャの生成ははじめの２つのユニットで行う（図８）。まず定数として中間スライスの位置を保存し、ユニット１でＳｉの、ユニット２でＳｉ＋１のテクスチャ値を取得する。ユニット１はＲＥＰＬＡＣＥテクスチャ環境を使い、テクスチャ値をそのまま取り出す。ユニット２ではＣＯＭＢＩＮＥテクスチャ環境のＩＮＴＥＲＰＯＬＡＴＥ関数を使い、ＲＧＢおよびαチャネル共にテクスチャ値をαブレンドする。ＩＮＴＥＲＰＯＬＡＴＥ関数は３つの引数をとり、それぞれＡｒｇ０、Ａｒｇ１、Ａｒｇ２としたとき式（１１）という式でテクスチャを混合するので、Ａｒｇ０＝ＴＥＸＴＵＲＥ（＝Ｓｉ）、Ａｒｇ１＝ＰＲＥＶＩＯＵＳ（＝Ｓｉ＋１）、Ａｒｇ２＝ＣＯＮＳＴＡＮＴ（＝α）とすると式（１１）より式（１２）となり、これは式（９）の中間スライスの式と一致する。生成された中間スライスのテクスチャは、常のテクスチャと同様に扱うことができる。
【００４８】
【数６】
0003589654.tif 000007
【００４９】
テクスチャと同様にポリゴンの座標をαで補間して得られる中間スライスのポリゴンに対して、この補間されたテクスチャをマップすると、中間スライスが得られる。中間スライスを他のスライスと同様にαブレンディングすることで、処理に必要なメモリ容量を増やすことなく、スライス枚数を増やすことができる。
【００５０】
５．２  Ｖｏｌｕｍｅ  Ｓｈａｄｉｎｇ
３次元形状の認識を容易にするために、光源を考慮したｓｈａｄｉｎｇを行うことは有効である。特にデータが均質で不透明度が高い場合、光源を考慮しないボリュームレンダリングでは元の形状の輪郭線以外を識別することは困難である（図１０）。
ここでは、光源の影響として拡散反射のみを考え、Ｇｏｕｒａｎｄ  ｓｈａｄｉｎｇを使って表示する方法を説明する。２．１．で述べたように、ボリュームは各点において光を放出すると考えられるので、描画結果はこの放射光と拡散反射光の合成になる。光源方向をｌ、ボリュームの輝度勾配をｎ、ボリュームの各点における光の放出をＩｅ、光源の光の反射をＩｄとすると各点でのｓｈａｄｉｎｇは式（１３）を使って計算する。
【００５１】
【数７】
0003589654.tif 000008
【００５２】
あらかじめ、適当なフィルタ処理を行ってスカラー場の勾配ベクトルを計算しておき、その値である３次元ベクトルをボクセルのＲＧＢ値として保持するボリュームを用意しておくことで、効率よく拡散反射成分を計算することができる。ここではＣＯＭＢＩＮＥテクスチャ環境のＤＯＴ３＿ＲＧＢ関数を使うことで光源のパラメータをインタラクティブに変更する方法を説明する。
ＤＯＴ３＿ＲＧＢ関数はテクスチャ値のＲＧＢチャネルを３次元ベクトルとみなし、その内積結果をテクスチャ値のＲＧＢチャネルに返す関数である。この関数は２つの引数をとり、それぞれＡｒｇ０、Ａｒｇ１としたとき、式（１４）をＲＧＢ値としてそれぞれ返す。返り値は［０、１］で切り捨てられる。この関数を使うことで拡散反射の計算に必要な内積ｎ・ｌを計算する。光源の色Ｉｄはｎ・ｌの結果にＭＯＤＵＬＡＴＥ関数を使ってＩｄを掛けることで実現できるが、ここでは簡単のためにＩｄ＝（１、１、１）（白色光）の拡散反射のみを考える。最後にＡＤＤ関数を使って放射光の反射成分と混合する。
【００５３】
【数８】
0003589654.tif 000009
【００５４】
具体的には、図９にあるようにテクスチャユニットにおいて、定数に光源方向ｌを与え、１つ目のテクスチャユニットで輝度勾配ｎ、２つ目のユニットで放射光Ｉｅを取得する。そして１つ目のユニットでＤＯＴ３＿ＲＧＢ関数を使ってＩｄ（ｎ・ｌ）を計算し、２つ目のユニットでＡＤＤ関数を使ってＩａ＋Ｉｄ（ｎ・ｌ）を計算する。
【００５５】
【実施例】
６．  Ｅｘｐｅｒｉｍｅｎｔｓ
ＯｐｅｎＧＬグラフィクスライブラリを利用してＰＣ上で実験を行った。使用した環境はＣＰＵがＰｅｎｔｉｕｍ４  １．７ＧＨｚ、主記憶が１ＧＢ、使用したＰＣグラフィクスカードはＧｅＦｏｒｃｅ３  ＡＧＰ４ｘ  ６４ＭＢ  ＤＤＲ、ＯＳがＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ２０００である。
【００５６】
３．で述べた、中間スライスを使った３次線形補間の近似を行った結果を図４に示す。入力はサイズは２５６×２５６×１２８で描画面サイズは約２倍である。元の結果では特に輝度変化の激しいところでモアレが観察できる（図４Ａ）が、各スライス間に中間スライスを１枚発生させてスライス枚数を２倍に増やした結果、画質が改善された（図４Ｂ）。
【００５７】
４．で述べた、ブロック単位での適応的な解像度変化を行った場合のサイズの変化を表１に示す。誤差の許容値は、元のボリュームと空ボリューム（全ボクセルが０）との差の５％とした。２３Ｎブロック（２Ｎ×２Ｎ×２Ｎ）を使った場合に２５％から７５％程度の、２３Ｎブロックを使った場合にはさらにデータを縮小できていることが分かる。
【００５８】
【表１】
0003589654.tif 000010
【００５９】
一般に、断層撮影などから得られるボリュームデータは全体の７０％から９５％が透明領域であり、この部分のデータ量をブロック化により効果的に削減できる。一般にボリュームの縮小化を進めるほど画質は劣化するが、２３Ｎ−ｂｌｏｃｋｉｎｇを使うとほとんどが質の劣化なく、データ量を大幅に削減できる。図１１に実際のデータに対してｂｌｏｃｋｉｎｇを行いデータを削減した時の画質の変化を示す。
【００６０】
ブロックサイズは、小さくなると描画時のオーバーヘッドが増加し、大きくなるとデータの局所性を利用しにくくなるため、最適値は処理系とデータに依存する。実験では、２５６×２５６×２５６サイズの８ｂｉｔボリュームデータでさまざまなサイズに関して描画速度を比較した結果、Ｎ＝５、すなわち１辺の長さが３２の場合に最も高速となった（図１２）。Ｎ＝４の時データサイズが最も小さくなるが、描画速度が高速にならないのは、ブロック数が増えることによる描画のオーバーヘッドが増加するためだと思われる。
【００６１】
最後に、さまざまなデータに対して２３Ｎブロック化を行い、レンダリング速度の変化を調べた結果を表２に示す。様々なデータに対して、解像度変化無し、誤差の許容値５％、許容値１０％の単純化を行った結果、単純化の効果はデータの性質に依存するが、一定の速度向上が得られており、１０％の許容値を設定することで巨大なボリュームをインタラクティブな速度で描画できる事がわかる。なお、一般的に、３０ｆｐｓ（１秒間に３０フレーム）以上であれば、待ち時間のほとんどないインタラクティブな速度（非常に快適な速度）であるといえ、１０ｆｐｓ以上が実用範囲とされている。
【００６２】
【表２】
0003589654.tif 000011
【００６３】
７．Ｃｏｎｃｌｕｓｉｏｎｓ
グラフィクスハードウェア（例えばＰＣグラフィクスカード）の機能を使ってインタラクティブなボリュームレンダリングを行う方法を提案した。グラフィクスカードの加速を利用するためにスライスを使ったレンダリングを行う際に問題となる視覚的な画質の問題を中間スライスを使って解決し、扱えるサイズの問題をスライスに適した単純化を行うことで改善した。その結果、特殊なハードウェアなしに高画質のボリュームレンダリングをインタラクティブな速度で実現でき、最大５１２×５１２×５１２のサイズの巨大なデータに対してもほとんど画質を損なうことなく十分な速度で描画することができた。
ボリュームレンダリングは計算量が大きく、インタラクティブに行うためには特殊な計算機や専用のハードウェアが必要であった。本発明の方法を用いると、通常のＰＣでも大きいサイズのボリュームデータをインタラクティブにレンダリングできることから、従来速度の点からボリュームを扱うことができなかった分野への応用が期待できる。
【００６４】
なお本発明では、直接法のボリュームレンダリングだけを対象としたが、等値面抽出を同じ枠組みで行う方法、またポリゴンとボリュームを同時に表示する方法、などにも適用可能である。
【００６５】
【発明の効果】
上述したように、本発明では、ボリュームレンダリングの計算コストを低減するために、グラフィクスハードウェア（ＰＣグラフィクスカード）を備える装置（パーソナルコンピュータ）を用い、ボリュームをスライスの積み重ねで表現し、ハードウェアの加速を利用したテクスチャマップ機能とα−ブレンディング機能を使うことで、高速描画を可能にした。またこの方法ではデータ補間の不足により深刻な画質の劣化が起こるため、ｍｕｌｔｉ−ｔｅｘｔｕｒｅ機能を使ってサンプル点を増やすことにより画質を向上させた。またグラフィクスハードウェア（ＰＣグラフィクスカード）のメモリ容量の制限から扱えるデータサイズが小さくなるので、２３Ｎブロック化を使った単一階層の適応的サンプリングを行い、画質の劣化を最小限に抑えてインタラクティブな速度で描画を行うことを可能にした。
【００６６】
従って、本発明のボリュームレンダリング方法とそのプログラムは、（１）通常のＰＣ（パーソナルコンピュータ）やゲーム機を用いてボリュームレンダリングを行うことができ、（２）１２８Ｍｂｙｔｅ程度以上の比較的大きいボリュームデータをインタラクティブな速度で扱うことができ、（３）更に画質の劣化を最小限に抑えることができる、等の優れた効果を有する。
【図面の簡単な説明】
【図１】従来の直接法のボリュームレンダリングの模式図である。
【図２】本発明のスライスデータに基づく直接法のボリュームレンダリングの模式図である。
【図３】スライス方向の説明図である。
【図４】補間精度の不足時と線形補間時のディスプレイ上の画像である。
【図５】本発明による線形補間を示す模式図である。
【図６】本発明によるボリュームサイズ縮小のアルゴリズムを示すフロー図である。
【図７】本発明による実際のデータに対するブロック化の過程とデータサイズの変化の様子を示すディスプレイ上の画像である。
【図８】本発明による中間スライスのテクスチャ生成を示す模式図である。
【図９】Ｓｈａｄｉｎｇによる中間スライスのテクスチャ生成を示す模式図である。
【図１０】光源を考慮したｓｈａｄｉｎｇの相違によるディスプレイ上の画像である。
【図１１】実際のデータに対してｂｌｏｃｋｉｎｇを行いデータを削減した時の画質の変化を示すディスプレイ上の画像である。
【図１２】８ｂｉｔボリュームデータのブロックサイズとデータサイズ及びレンダリング速度との関係図である。
【図１】
0003589654.tif 000012
【図２】
0003589654.tif 000013
【図３】
0003589654.tif 000014
【図４】
0003589654.tif 000015
【図５】
0003589654.tif 000016
【図６】
0003589654.tif 000017
【図７】
0003589654.tif 000018
【図８】
0003589654.tif 000019
【図９】
0003589654.tif 000020
【図１０】
0003589654.tif 000021
【図１１】
0003589654.tif 000022
【図１２】
0003589654.tif 000023