JP3589654B2 - ボリュームレンダリング方法とそのプログラム - Google Patents
ボリュームレンダリング方法とそのプログラム Download PDFInfo
- Publication number
- JP3589654B2 JP3589654B2 JP2002066249A JP2002066249A JP3589654B2 JP 3589654 B2 JP3589654 B2 JP 3589654B2 JP 2002066249 A JP2002066249 A JP 2002066249A JP 2002066249 A JP2002066249 A JP 2002066249A JP 3589654 B2 JP3589654 B2 JP 3589654B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- texture
- resolution
- volume
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Generation (AREA)
Description
【発明の属する技術分野】
本発明は、通常のPC(パーソナルコンピュータ)やゲーム機を用いてボリュームレンダリングを行うボリュームレンダリング方法とそのプログラムに関する。
【0002】
【従来の技術】
ボリュームレンダリングとは、空間の密度のデータであるボリュームデータを直接表示する画像表示手段である。ボリュームレンダリングでは、視線を伸ばし、その視線上にあるボクセルの密度を合計していく。このような手法を『レイキャスティング』と呼ぶ。従ってボリュームレンダリングでは、最終的な数値を元にして、透明度を考慮した画像を生成する。
【0003】
言い換えれば、ボリュームレンダリングは3次元のスカラー場を2次元の画面に表示するための可視化手法であり、その方法は大きく間接法と直接法に分類できる。
間接法(indirect volume rendering)では、前処理によって表示する情報を抽出し、データの一部分を表示する。代表的なものにMarching Cubes法を利用した等値面表示がある。
直接法(direct volume rendering)は、全てのサンプル点の寄与を計算して全体を表示する方法であり、描画面から視線方向に沿って輝度を積分(backward projection)するRay Casting、サンプル点を描画面に投影(forward projection)するCell Projection、Shear−Warp Factorization、Splatting等が知られている。通常、ボリュームレンダリングという場合には直接法を指し、本発明でも直接法を扱う。
【0004】
【発明が解決しようとする課題】
ボリュームレンダリングを用いると高画質でデータの全体の様子を把握することが容易な画像を得ることができるため、工学、医学、娯楽などの分野で幅広く利用されている。しかし計算に必要な時間が長く、必要な記憶容量が大きい問題点があった。そのため、従来は、速度が問題にならない場合や、大規模な計算機環境や特殊な高速ハードウェアを使える場合に利用が限られていた。
【0005】
すなわち、従来のボリュームレンダリングには、以下の問題点があった。
(1)計算コストが高い。すなわち、記憶容量が大きい大規模な計算機環境や特殊な高速ハードウェアを利用できない限り、インタラクティブな速度で描画を行うことができなかった。
(2)通常のPC(パーソナルコンピュータ)やゲーム機でボリュームレンダリングを行う場合には、扱えるボリュームデータのデータ容量が小さい。
例えば、64×64×64程度の小さいボリュームデータであれば、30fps(1秒間に30フレーム)程度のインタラクティブな速度(待ち時間のほとんどない快適な速度)で従来もボリュームレンダリングを行うことができるが、256×256×256(16Mbyte)程度のボリュームデータでは例えば20fps以下に低下し、快適な利用ができない。さらに、512×512×512(128Mbyte)程度のボリュームデータでは、1fps以下までに低下してしまいほとんど実用できなくなる。
(3)通常のPCやゲーム機で描画速度を高めるために、データを間引くなどの処理を行うと、モアレ等が激しくなり、画質の劣化が目立つ。
【0006】
本発明は、これらの問題点を解決するために創案されたものである。すなわち、本発明の目的は、(1)通常のPC(パーソナルコンピュータ)やゲーム機を用いてボリュームレンダリングを行うことができ、(2)128Mbyte程度以上の比較的大きいボリュームデータをインタラクティブな速度で扱うことができ、(3)更に画質の劣化を最小限に抑えることができるボリュームレンダリング方法とそのプログラムを提案することにある。
【0007】
【課題を解決するための手段】
本発明によれば、テクスチャマップ機能、α-ブレンディング機能およびmulti-texture機構を有するグラフィクスハードウェアを備える装置を用い、
ボリュームデータ全体をテクスチャマップ機能とα-ブレンディング機能を用いてスライスデータの積み重ねで表現する基本スライスデータ作成ステップ(A)と、
前記基本スライスデータの間に中間スライスデータを線形補間して挿入する中間スライスデータ作成ステップ(B)と、
ボリューム全体Vを固定サイズ2 3N のブロックV B に分割する2 3N ブロック分割ステップ(C)と、
分割した各ブロック毎に解像度をNから順に1つ減少させて、その際に生じる元のデータとの誤差を計算するブロック誤差計算ステップ(D)と、
全てのブロックの計算誤差のうち、最も誤差が小さいブロックの解像度を下げる解像度低減ステップ(E)とを有し、ステップ(D)と(E)を繰り返して、全体としてデータのサイズを減少させながら、各ブロックに対する最適な解像度を決定する、ことを特徴とするボリュームレンダリング方法が提供される。
グラフィクスハードウェアは、例えばPCグラフィクスカードであるが、ワークステーションに搭載される同様の機能のグラフィクスハードウェアでもよい。また、装置は、例えばパーソナルコンピュータであるが、同様の機能を有するゲーム機や、その他の機器でもよい。
【0008】
上記本発明の方法によれば、ボリュームデータ全体をテクスチャマップ機能とα-ブレンディング機能を用いてスライスデータの積み重ねで表現することにより、グラフィクスハードウェア(例えばPCグラフィクスカード)のポリゴン表示機能を利用して高速なボリュームレンダリングを実現できる。
また、基本スライスデータの間に中間スライスデータを線形補間して挿入することにより、スライスと垂直な方向への補間精度の不足を補い、補間精度の不一致による画質上の不具合(例えばモアレの発生)を防止することができる。
またこの方法により、全体として同じボリュームのサイズでも、描画結果の画質を高画質に保つことが可能となる。
【0009】
本発明の好ましい実施形態によれば、前記中間スライスデータの挿入間隔は、描画の際に必要な解像度に応じてスライスデータ上でのサンプリング間隔と同一またはそれより狭くする。
この方法によりモアレを効果的に防ぐことができる。
【0010】
また、前記中間スライスデータのテクスチャは、グラフィクスハードウェアのmulti−texture機構を使って描画時に作成する。
この方法により中間スライスデータのテクスチャをメモリ上に保持しないので、必要なメモリ容量を増やすことなくスライスと垂直な方向にサンプル点を増加させることができる。
【0011】
また本発明によれば、ボリュームデータ全体を階層表現せずに固定解像度のブロックで表現してデータ構造を簡略化し、かつ各ブロック内のデータの局所性を利用してデータ量を削減してメモリ利用を効率化する、ことを特徴とするボリュームレンダリング方法が提供される。
【0012】
上記本発明の方法によれば、入力データのサイズを縮小し、ハードウェアの容量を上回るボリュームも画質の劣化を抑えつつ高速に描画することが可能となる。
【0014】
また本発明によれば、ボリュームデータ全体をテクスチャマップ機能とα−ブレンディング機能を用いてスライスデータの積み重ねで表現する基本スライスデータ作成ステップ(A)と、前記基本スライスデータの間に中間スライスデータを線形補間して挿入する中間スライスデータ作成ステップ(B)と、ボリューム全体Vを固定サイズ23NのブロックVBに分割する23Nブロック分割ステップ(C)と、分割した各ブロック毎に解像度をNから順に1つ減少させて、その際に生じる元のデータとの誤差を計算するブロック誤差計算ステップ(D)と、全てのブロックの計算誤差のうち、最も誤差が小さいブロックの解像度を下げる解像度低減ステップ(E)とを有し、ステップ(D)と(E)を繰り返して、全体としてデータのサイズを減少させながら、各ブロックに対する最適な解像度を決定する、ことを特徴とするボリュームレンダリングプログラムが提供される。
【0015】
このプログラムを、テクスチャマップ機能、α−ブレンディング機能およびmulti−texture機構を有するグラフィクスハードウェアを備える装置で実行することにより、グラフィクスハードウェアのポリゴン表示機能を利用して高速なボリュームレンダリングを実現でき、補間精度の不一致による画質上の不具合(例えばモアレの発生)を防止することができ、全体として同じ誤差でもボリュームのサイズをより小さくすることが可能となり、入力データのサイズを縮小し、ハードウェアの容量を上回るボリュームも高速に描画することが可能となる。
【0016】
【発明の実施の形態】
以下、本発明の好ましい実施形態を図面を参照して説明する。
【0017】
1.ボリュームレンダリングを用いると高画質でデータの全体の様子を把握することが容易な画像を得ることができるため、工学、医学、娯楽などの分野で幅広く利用されている。しかし計算に必要な時間や記憶容量が大きいことから、速度が問題にならない場合や、大規模な計算機環境や特殊ハードウェアを使える場合に利用が限られている。
計算コストが高い理由としては主に1)視線に沿った輝度の累積計算の際に必要なデータのメモリ局所性が低く、メモリアクセスの効率が悪い点、2)入力データの再サンプリングの際に必要な3次線形補間が複雑である点、3)多くの場合、入力データ量が膨大である点、が挙げられる。速度を向上させるために、必要のない累積計算を途中で打ち切るearly ray termination最適化や、octreeやk−d木を使ってデータの局所的性質を利用する方法等、アルゴリズムに対する改良がされている。しかしこれらの最適化を行っても依然として計算量は大きいため、インタラクティブな速度で描画するために、並列計算機や専用の特殊ハードウェアを利用する必要があった。
【0018】
一方でPCグラフィックスカードの描画速度と機能が向上したため、これを利用してさまざまな可視化手法を通常のPCで実現することが盛んに研究されている。ボリュームレンダリングに関しても、ボリュームを座標軸に垂直なスライスの重ねあわせで表現し、テクスチャマップされたポリゴンのαブレンディングを使って描画する方法が提案されている。
【0019】
ここで、テクスチャマップまたは「テクスチャマッピング」とは、オブジェクトの表面にテクスチャと呼ばれる画像を貼り付けるもので、3Dオブジェクトをリアルに見せるためのもっとも基本的な技術の一つである。コンピュータによって描かれる3Dオブジェクト(立体物)は、「ポリゴン」という三角形の板で構成され、その大きさが(キメ)細かくなればなるほど、オブジェクトの細部を表現できるため、形状はよりリアルになるが、これだけでは、オブジェクトの表面の模様や質感などを表わすことはできないため、テクスチャマップが必要となる。
【0020】
また、αブレンディングまたは「アルファブレンディング(Alpha Blending)」とは、半透明処理のことを指す。ある画像の上に別の画像を半透明に重ね合わせるとき、透明度を表わす値を「アルファ(Alpha)値」と呼び、この値にもとづいて画像を合成(ブレンド)することからアルファブレンディングと名付けられている。3D処理においては、単純なガラス板から、水、雲や煙などの不定形なものまで、さまざまな半透明処理に用いられる。
【0021】
上述したスライスを使う方法は、描画にハードウェアの加速が利用できるため高速であるという利点がある一方、スライスと垂直な方向へのデータの補間・サンプリングが行われないために画質が悪く、またPCグラフィクスカードの記憶容量の制限から、扱えるデータサイズが小さいという欠点があった。
【0022】
本発明では、スライスの重ね合わせに基づくボリュームレンダリングを元に、画質と扱えるデータサイズの2点に関して改良した。1点目に関しては、グラフィクスハードウェア(例えばPCグラフィクスカード)のmulti−texture機能を利用し、描画に必要なメモリ容量を増やすことなくスライスと垂直な方向にサンプル点を増加させ、結果の画質を向上させた。2点目に関しては、高速度描画に適したボリュームの適応的サンプリングを行って入力データのサイズを縮小し、ハードウェアの容量を上回るボリュームも高速に描画することを可能にした。また以上の手法を一般のPCグラフィクスカード上で実装し、十分大きいサイズのボリュームデータを、十分な画質で、インタラクティブな速度で描画できることを確認した。
【0023】
multi−texture機能または「マルチテクスチャ(Multi Texture)」とは、その名のとおり複数のテクスチャ(DirectX 7では最大8枚)を重ねる(合成)機能である。
ビデオチップの機能で、俗に「マルチテクスチャ対応」という場合は、上記の重ね合わせ処理を1回のポリゴン描画の際にまとめて行なう、「シングルパス・マルチプル・テクスチャ・ブレンディング(SinglePass Multiple Texture Blendi ng)」という方法を指す。これに対してソフトウェアで複数回違うテクスチャが貼り込まれたポリゴンを描画することで実現する方法を、マルチパス・テクスチャ・ブレンディング(MultiPass Texture Blen ding)と呼ぶ。基本的にどちらの手法でも描画結果は同じだが、前者のほうが高速に処理を行なうことができる。
【0024】
2. Direct Volume Rendering
2.1 Rendering Equation
図1は、従来の直接法のボリュームレンダリングの模式図である。ボリュームレンダリングは、描画面から視線方向に輝度を累積する方法(backwardprojection)とサンプル点を描画面に投影する方法(forward projection)に分けられるが、どちらの場合も描画の方程式は共通で、描画面の各画素から視線方向に伸びる光線に沿ってボリュームの輝度値を積分する。
描画面からの光線に沿った距離をλ、ボリューム内の位置をx(λ)とすると、描画面上の画素値Iは式(1)で求められる。ここでc〜は各点で放出される色(RGB値)を表す関数、τは各点における光線の減衰率を表す関数である。これらを用いて、ボリュームデータとして与えられるスカラー値s(x)に表示色を割り当てる。通常τはs(x)の関数として定義されるが、tildecの計算は次の2つの段階を経て行われる。
【0025】
【数1】
【0026】
まず最初にスカラー値s(x)から色(RGB値)への変換関数を通すことで、各点のスカラー値による色の寄与を決定する(classification)。これはボリュームの各点から放出される光の効果に相当する。この変換関数は通常ユーザーによって定義され、レンダリングの途中で変更されることがあるが、視点には依存せず一定である。次に各点と光源の位置関係から与えられる色情報を付加する(shading)。これには光の拡散反射や鏡面反射の成分が含まれる。classificationの効果とshadingの効果は個別に計算して、加算により合成することが可能である。入力のスカラー値の分布をそのまま可視化する場合には、classificationだけを使って描画することもできるが、物体の幾何形状を表示する際には、3次元の空間を正確に認識するためにshadingが必要である。ボリュームに対してshadingを行う具体的な方法は5.で説明する。
【0027】
2.2 Discretization
描画計算を行うために式(1)の光の減衰率の部分を離散化すると式(2)〜(4)と書ける。ただしDはサンプリング幅、iはサンプル点の番号で、式(5)と置いた。αiは不透明度(α値)と呼ばれる値である。
【0028】
【数2】
【0029】
式(5)で定義されたαiを使って、c〜=αciと表せる。ここでciは透明度を考慮しないRGB値であり、αciはopacity−weighted colorまたはassociated colorと呼ばれ、不透明度を考慮した時の色である。離散化されたi番目の微小領域領域からの色の寄与を式(6)と書くと、式(5)を使って式(1)を離散化した結果は式(7)となる。光線の無限遠方からiまでの累積輝度Ci’を使ってこの式を変形して、式(8)を得る。最終的に求めたい値はI=C0’である。
【0030】
【数3】
【0031】
2.3 Slice−based Volume Rendering
式(8)は、ボリュームのサンプリングを視線方向に伸びる光線に沿って一定間隔で行い、描画面から遠いほうから順にRGB値を繰り返しαブレンディングすることでボリュームレンダリングの計算が実現できることを示している。そこで、ボリューム全体を視線方向になるべく垂直な複数のスライスの積み重ねで表現し、テクスチャマップされたポリゴンのαブレンディング計算でボリュームレンダリングを行うことを考える(図2)。このように表現することでグラフィクスハードウェア(例えばPCグラフィクスカード)のポリゴン表示機能を利用して高速なボリュームレンダリングを実現できる。
ハードウェアがソリッドテクスチャ(3次元テクスチャ)をサポートしている場合には、視線に垂直な面(image−aligned slice:図3B)を生成し、ボリュームをソリッドテクスチャとして持つ方法が可能である。視線と面が常に垂直であるためには、視点変更の度にスライスの位置とテクスチャ座標を再計算する必要がある。
【0032】
ソリッドテクスチャが利用できない場合には2次元のテクスチャマップを利用する。ボリュームを座標軸に沿って切断したスライス(object−aligned slices:図3A)の集合を生成して、ボリュームの断面画像を2次元テクスチャとしてマップする。表示の際には視線方向と座標軸の関係を調べ、視線とスライスの法線のなす角が常に一定以下になるようにスライスする軸の方向を選択する。スライス軸の変更の際にテクスチャを切り替える必要があり、インタラクティブ性を保証するためにはx、y、z軸方向のスライスを3組用意しておく必要がある。この場合、ハードウェアの制限から各テクスチャ画像はメモリ中で連続領域を占めていなければならないので、テクスチャは軸方向ごとに合計3組の複製を持つ必要がある。
多くのハードウェアでソリッドテクスチャよりも2次元のテクスチャのほうが高速のため、object−alignedなスライスを切り替えて表示する方法が描画速度は速い。
【0033】
3. Improvement of visual quality 通常のボリュームレンダリングでは入力のスカラー値を3次線形補間しながらサンプリングするのに対し、スライスを使ったレンダリングではスライス上で2次線形補間しながらサンプリングする。スライス方向には任意の解像度でサンプリングが可能であるのに対し、スライスの法線方向には一定間隔でしかサンプリングできないため、描画する解像度や視点を変更すると、補間精度の不一致により画質上の不具合が現れることがある。図4Aに見られる縞状の模様は、スライスを使ったレンダリングの際に、スライスと垂直な方向への補間精度が不足することによって生じるモアレである。
【0034】
3次補間を近似してサンプリング幅を合わせるの方法のひとつに、元のスライス間に上下のスライスを線形補間して得られる中間スライスを挿入する方法がある(図5)。モアレを防ぐためには、中間スライスの発生間隔を、描画の際のスライス上でのサンプリング間隔と同程度にする必要がある。中間スライスのテクスチャはメモリ上に保持するのではなく、multi−texture機構を使って描画時に生成できる。
隣接するスライスSiとSi+1の間の、i+αの位置に発生させる中間スライスSi+αは式(9)と定義できる。座標の補間により中間スライスの位置を決定し、新規に発生したポリゴンにグラフィクスハードウェアのmulti−texture機能で生成したテクスチャをマップする。
【0035】
【数4】
【0036】
モアレを防ぐためには、ポリゴンの描画の際のポリゴン上でのサンプリング幅とスライス幅が同程度であればよい。そこで描画の際に画面上で1つのスライスが占める領域を調べ、そのサイズに応じて中間スライスの発生枚数を変更することでモアレを解消することができる(図4B)。中間スライスの発生枚数を変更すると式(5)のDが変わるため、各点におけるα値を更新する必要がある。
【0037】
4. Adaptively sampled 23N −block
テクスチャマップとαブレンディングを使うと、グラフィクスハードウェア(例えばPCグラフィクスカード)の加速を利用して高速にボリュームレンダリングできるが、テクスチャ保持するビデオメモリ(VRAM)のサイズには制限があるため、メモリ容量を上回る巨大なデータを描画する際には速度が劇的に落ちる。一般にVRAMは主記憶と比べて10倍から100倍程度小さく、サイズの制限は大きな問題になる。
【0038】
データの局所性を仮定できるボリュームデータに対しては、octree表現を使うことでメモリの利用効率を上げることが期待できる。しかしoctreeの階層構造が多段になり複雑化すると、データの局所的な連続性が落ちることからデータアクセスに必要な時間が増す。したがって処理速度が必要な場合にはoctreeを使うことは必ずしも効果的ではない。多重解像度表現のメモリ効率の優位性を確保しながら同時に処理速度を落とさない表現方法として、8分木(octree)の一般化である23N分木(23N−tree)を使う方法がある。この方法は、処理の対象となるシーン全体が巨大で、物体への距離に応じた詳細度制御(levels of detail)や視界の外側にあるデータの切り捨て(view frustum culling)が必要がある場合に効果的である。
【0039】
一方、通常のボリュームレンダリングでは、多くの場合データの解像度は画面の解像度より十分小さいため、階層構造のレベルを上下する必要はない。またテクスチャの読み込みには比較的時間がかかるため、インタラクティブ性を確保するためには、常に全てのデータを最高解像度で保持しておくほうが望ましい。そこで、本発明ではデータを階層表現せずに固定解像度のブロックで表現することでデータ構造を簡略化してインタラクティブ性を確保すると同時に、ブロック内の局所性を利用してデータ量を削減することでメモリ利用の効率化を行う。
【0040】
まず(1)最初にボリューム全体Vを固定サイズ23NのブロックVBに分割する(23N−blocking)。このとき各ブロックには23Nサイズの部分ボリュームが割り当てられる。次に(2)各ブロック毎に解像度をNから順に1つ減少させて、その際に生じる元のデータとの誤差を計算する。(3)全てのブロックで誤差計算を行い、最も誤差が小さいブロックの解像度を下げる操作を繰り返すことで、全体としてデータのサイズを減少させながら、各ブロックに対する最適な解像度を決定する。
【0041】
ブロック番号をBとして、このブロックにおける解像度nのボリュームをVn Bと書くと、元のボリュームはVN Bと表される。解像度を変化させた時、VN BとVn Bの誤差は、それぞれのボリュームをVN Bのサンプル点の位置で3次線形補間を使ってサンプリングした値の自乗誤差で定義する。即ち、ブロックB内の座標(i、j、k)におけるVn Bの値をvn B(i、j、k)とすると、ブロックBの解像度nにおける元のボリュームとの誤差Rn Bは式(10)と表せる。
【0042】
【数5】
【0043】
全てのブロックに対して式(10)を計算し、この値が最も小さくなるブロックの解像度nを減少させ、インタラクティブな速度で処理を行うのに必要なサイズまで全体のボリュームサイズを縮小する。図7に実際のデータに対するブロック化の過程とデータサイズの変化の様子を示す。以上のボリュームサイズ縮小のアルゴリズムを図6に示す。
Rn B=0の場合は画質を全く変えずに解像度を減らすことができる。そうでない場合は、最も画質の損失が少ないと期待されるブロックから順に、必要メモリ容量がハードウェアがサポートしている容量に収まるようになるまで、解像度を落としていく。
【0044】
image−alignedなスライスを使ったボリュームレンダリングでは、23N−blockingを行った後、各ブロックに1つのソリッドテクスチャ、1組のスライス集合を与えて、ブロックごとに描画する。object−alignedなスライスを使ったレンダリング時には、同様のブロック化のほかに、2次元の各スライス内で23N−blockingをすることができる。これによって全体として同じ誤差でもボリュームのサイズをより小さくすることが可能である。ただし、この場合には、誤差があまり大きくなると、隣接スライス間での解像度の変動が大きくなり、結果としてモアレが強く現れることがある。
【0045】
5.Implementation
5.1 Intermediate slices
中間スライスを生成するためには、混合比を指定しながらmulti−texture処理を行う必要がある。本発明ではOpenGLグラフィクスライブラリのCOMBINEテクスチャ環境使ってこれを実現する。
【0046】
multi−textureが利用できる環境では2つ以上のテクスチャユニットが図8のように接続している。各ユニットは別々のテクスチャ、テクスチャ座標、テクスチャ環境を持ち、それぞれTEXTURE(テクスチャ値)の他に、PRIMARY_COLOR(diffuse値)、PREVIOUS(直前ユニットの出力)、CONSTANT(ユーザー定義の定数)を入力として利用できる。
【0047】
中間スライスのテクスチャの生成ははじめの2つのユニットで行う(図8)。まず定数として中間スライスの位置を保存し、ユニット1でSiの、ユニット2でSi+1のテクスチャ値を取得する。ユニット1はREPLACEテクスチャ環境を使い、テクスチャ値をそのまま取り出す。ユニット2ではCOMBINEテクスチャ環境のINTERPOLATE関数を使い、RGBおよびαチャネル共にテクスチャ値をαブレンドする。INTERPOLATE関数は3つの引数をとり、それぞれArg0、Arg1、Arg2としたとき式(11)という式でテクスチャを混合するので、Arg0=TEXTURE(=Si)、Arg1=PREVIOUS(=Si+1)、Arg2=CONSTANT(=α)とすると式(11)より式(12)となり、これは式(9)の中間スライスの式と一致する。生成された中間スライスのテクスチャは、常のテクスチャと同様に扱うことができる。
【0048】
【数6】
【0049】
テクスチャと同様にポリゴンの座標をαで補間して得られる中間スライスのポリゴンに対して、この補間されたテクスチャをマップすると、中間スライスが得られる。中間スライスを他のスライスと同様にαブレンディングすることで、処理に必要なメモリ容量を増やすことなく、スライス枚数を増やすことができる。
【0050】
5.2 Volume Shading
3次元形状の認識を容易にするために、光源を考慮したshadingを行うことは有効である。特にデータが均質で不透明度が高い場合、光源を考慮しないボリュームレンダリングでは元の形状の輪郭線以外を識別することは困難である(図10)。
ここでは、光源の影響として拡散反射のみを考え、Gourand shadingを使って表示する方法を説明する。2.1.で述べたように、ボリュームは各点において光を放出すると考えられるので、描画結果はこの放射光と拡散反射光の合成になる。光源方向をl、ボリュームの輝度勾配をn、ボリュームの各点における光の放出をIe、光源の光の反射をIdとすると各点でのshadingは式(13)を使って計算する。
【0051】
【数7】
【0052】
あらかじめ、適当なフィルタ処理を行ってスカラー場の勾配ベクトルを計算しておき、その値である3次元ベクトルをボクセルのRGB値として保持するボリュームを用意しておくことで、効率よく拡散反射成分を計算することができる。ここではCOMBINEテクスチャ環境のDOT3_RGB関数を使うことで光源のパラメータをインタラクティブに変更する方法を説明する。
DOT3_RGB関数はテクスチャ値のRGBチャネルを3次元ベクトルとみなし、その内積結果をテクスチャ値のRGBチャネルに返す関数である。この関数は2つの引数をとり、それぞれArg0、Arg1としたとき、式(14)をRGB値としてそれぞれ返す。返り値は[0、1]で切り捨てられる。この関数を使うことで拡散反射の計算に必要な内積n・lを計算する。光源の色Idはn・lの結果にMODULATE関数を使ってIdを掛けることで実現できるが、ここでは簡単のためにId=(1、1、1)(白色光)の拡散反射のみを考える。最後にADD関数を使って放射光の反射成分と混合する。
【0053】
【数8】
【0054】
具体的には、図9にあるようにテクスチャユニットにおいて、定数に光源方向lを与え、1つ目のテクスチャユニットで輝度勾配n、2つ目のユニットで放射光Ieを取得する。そして1つ目のユニットでDOT3_RGB関数を使ってId(n・l)を計算し、2つ目のユニットでADD関数を使ってIa+Id(n・l)を計算する。
【0055】
【実施例】
6. Experiments
OpenGLグラフィクスライブラリを利用してPC上で実験を行った。使用した環境はCPUがPentium4 1.7GHz、主記憶が1GB、使用したPCグラフィクスカードはGeForce3 AGP4x 64MB DDR、OSがMicrosoft Windows 2000である。
【0056】
3.で述べた、中間スライスを使った3次線形補間の近似を行った結果を図4に示す。入力はサイズは256×256×128で描画面サイズは約2倍である。元の結果では特に輝度変化の激しいところでモアレが観察できる(図4A)が、各スライス間に中間スライスを1枚発生させてスライス枚数を2倍に増やした結果、画質が改善された(図4B)。
【0057】
4.で述べた、ブロック単位での適応的な解像度変化を行った場合のサイズの変化を表1に示す。誤差の許容値は、元のボリュームと空ボリューム(全ボクセルが0)との差の5%とした。23Nブロック(2N×2N×2N)を使った場合に25%から75%程度の、23Nブロックを使った場合にはさらにデータを縮小できていることが分かる。
【0058】
【表1】
【0059】
一般に、断層撮影などから得られるボリュームデータは全体の70%から95%が透明領域であり、この部分のデータ量をブロック化により効果的に削減できる。一般にボリュームの縮小化を進めるほど画質は劣化するが、23N−blockingを使うとほとんどが質の劣化なく、データ量を大幅に削減できる。図11に実際のデータに対してblockingを行いデータを削減した時の画質の変化を示す。
【0060】
ブロックサイズは、小さくなると描画時のオーバーヘッドが増加し、大きくなるとデータの局所性を利用しにくくなるため、最適値は処理系とデータに依存する。実験では、256×256×256サイズの8bitボリュームデータでさまざまなサイズに関して描画速度を比較した結果、N=5、すなわち1辺の長さが32の場合に最も高速となった(図12)。N=4の時データサイズが最も小さくなるが、描画速度が高速にならないのは、ブロック数が増えることによる描画のオーバーヘッドが増加するためだと思われる。
【0061】
最後に、さまざまなデータに対して23Nブロック化を行い、レンダリング速度の変化を調べた結果を表2に示す。様々なデータに対して、解像度変化無し、誤差の許容値5%、許容値10%の単純化を行った結果、単純化の効果はデータの性質に依存するが、一定の速度向上が得られており、10%の許容値を設定することで巨大なボリュームをインタラクティブな速度で描画できる事がわかる。なお、一般的に、30fps(1秒間に30フレーム)以上であれば、待ち時間のほとんどないインタラクティブな速度(非常に快適な速度)であるといえ、10fps以上が実用範囲とされている。
【0062】
【表2】
【0063】
7.Conclusions
グラフィクスハードウェア(例えばPCグラフィクスカード)の機能を使ってインタラクティブなボリュームレンダリングを行う方法を提案した。グラフィクスカードの加速を利用するためにスライスを使ったレンダリングを行う際に問題となる視覚的な画質の問題を中間スライスを使って解決し、扱えるサイズの問題をスライスに適した単純化を行うことで改善した。その結果、特殊なハードウェアなしに高画質のボリュームレンダリングをインタラクティブな速度で実現でき、最大512×512×512のサイズの巨大なデータに対してもほとんど画質を損なうことなく十分な速度で描画することができた。
ボリュームレンダリングは計算量が大きく、インタラクティブに行うためには特殊な計算機や専用のハードウェアが必要であった。本発明の方法を用いると、通常のPCでも大きいサイズのボリュームデータをインタラクティブにレンダリングできることから、従来速度の点からボリュームを扱うことができなかった分野への応用が期待できる。
【0064】
なお本発明では、直接法のボリュームレンダリングだけを対象としたが、等値面抽出を同じ枠組みで行う方法、またポリゴンとボリュームを同時に表示する方法、などにも適用可能である。
【0065】
【発明の効果】
上述したように、本発明では、ボリュームレンダリングの計算コストを低減するために、グラフィクスハードウェア(PCグラフィクスカード)を備える装置(パーソナルコンピュータ)を用い、ボリュームをスライスの積み重ねで表現し、ハードウェアの加速を利用したテクスチャマップ機能とα−ブレンディング機能を使うことで、高速描画を可能にした。またこの方法ではデータ補間の不足により深刻な画質の劣化が起こるため、multi−texture機能を使ってサンプル点を増やすことにより画質を向上させた。またグラフィクスハードウェア(PCグラフィクスカード)のメモリ容量の制限から扱えるデータサイズが小さくなるので、23Nブロック化を使った単一階層の適応的サンプリングを行い、画質の劣化を最小限に抑えてインタラクティブな速度で描画を行うことを可能にした。
【0066】
従って、本発明のボリュームレンダリング方法とそのプログラムは、(1)通常のPC(パーソナルコンピュータ)やゲーム機を用いてボリュームレンダリングを行うことができ、(2)128Mbyte程度以上の比較的大きいボリュームデータをインタラクティブな速度で扱うことができ、(3)更に画質の劣化を最小限に抑えることができる、等の優れた効果を有する。
【図面の簡単な説明】
【図1】従来の直接法のボリュームレンダリングの模式図である。
【図2】本発明のスライスデータに基づく直接法のボリュームレンダリングの模式図である。
【図3】スライス方向の説明図である。
【図4】補間精度の不足時と線形補間時のディスプレイ上の画像である。
【図5】本発明による線形補間を示す模式図である。
【図6】本発明によるボリュームサイズ縮小のアルゴリズムを示すフロー図である。
【図7】本発明による実際のデータに対するブロック化の過程とデータサイズの変化の様子を示すディスプレイ上の画像である。
【図8】本発明による中間スライスのテクスチャ生成を示す模式図である。
【図9】Shadingによる中間スライスのテクスチャ生成を示す模式図である。
【図10】光源を考慮したshadingの相違によるディスプレイ上の画像である。
【図11】実際のデータに対してblockingを行いデータを削減した時の画質の変化を示すディスプレイ上の画像である。
【図12】8bitボリュームデータのブロックサイズとデータサイズ及びレンダリング速度との関係図である。
Claims (5)
- テクスチャマップ機能、α-ブレンディング機能およびmulti-texture機構を有するグラフィクスハードウェアを備える装置を用い、
ボリュームデータ全体をテクスチャマップ機能とα-ブレンディング機能を用いてスライスデータの積み重ねで表現する基本スライスデータ作成ステップ(A)と、
前記基本スライスデータの間に中間スライスデータを線形補間して挿入する中間スライスデータ作成ステップ(B)と、
ボリューム全体Vを固定サイズ2 3N のブロックV B に分割する2 3N ブロック分割ステップ(C)と、
分割した各ブロック毎に解像度をNから順に1つ減少させて、その際に生じる元のデータとの誤差を計算するブロック誤差計算ステップ(D)と、
全てのブロックの計算誤差のうち、最も誤差が小さいブロックの解像度を下げる解像度低減ステップ(E)とを有し、ステップ(D)と(E)を繰り返して、全体としてデータのサイズを減少させながら、各ブロックに対する最適な解像度を決定する、ことを特徴とするボリュームレンダリング方法。 - 前記中間スライスデータの挿入間隔は、描画の際に必要な解像度に応じてスライスデータ上でのサンプリング間隔と同一またはそれより狭くする、ことを特徴とする請求項1に記載のボリュームレンダリング方法。
- 前記中間スライスデータのテクスチャは、グラフィクスハードウェアのmulti-texture機構を使って描画時に作成する、ことを特徴とする請求項1に記載のボリュームレンダリング方法。
- ボリュームデータ全体を階層表現せずに固定解像度のブロックで表現してデータ構造を簡略化し、かつ各ブロック内のデータの局所性を利用してデータ量を削減してメモリ利用を効率化する、ことを特徴とする請求項1に記載のボリュームレンダリング方法。
- ボリュームデータ全体をテクスチャマップ機能とα-ブレンディング機能を用いてスライスデータの積み重ねで表現する基本スライスデータ作成ステップ(A)と、
前記基本スライスデータの間に中間スライスデータを線形補間して挿入する中間スライスデータ作成ステップ(B)と、
ボリューム全体Vを固定サイズ23NのブロックVBに分割する23Nブロック分割ステップ(C)と、
分割した各ブロック毎に解像度をNから順に1つ減少させて、その際に生じる元のデータとの誤差を計算するブロック誤差計算ステップ(D)と、
全てのブロックの計算誤差のうち、最も誤差が小さいブロックの解像度を下げる解像度低減ステップ(E)とを有し、ステップ(D)と(E)を繰り返して、全体としてデータのサイズを減少させながら、各ブロックに対する最適な解像度を決定する、ことを特徴とするボリュームレンダリングプログラム
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002066249A JP3589654B2 (ja) | 2002-03-12 | 2002-03-12 | ボリュームレンダリング方法とそのプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002066249A JP3589654B2 (ja) | 2002-03-12 | 2002-03-12 | ボリュームレンダリング方法とそのプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003263651A JP2003263651A (ja) | 2003-09-19 |
JP3589654B2 true JP3589654B2 (ja) | 2004-11-17 |
Family
ID=29198129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002066249A Expired - Fee Related JP3589654B2 (ja) | 2002-03-12 | 2002-03-12 | ボリュームレンダリング方法とそのプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3589654B2 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7164430B2 (en) * | 2003-09-25 | 2007-01-16 | Via Technologies, Inc. | Anti-aliasing line pixel coverage calculation using programmable shader |
WO2005104042A1 (en) * | 2004-04-20 | 2005-11-03 | The Chinese University Of Hong Kong | Block-based fragment filtration with feasible multi-gpu acceleration for real-time volume rendering on standard pc |
US7154500B2 (en) | 2004-04-20 | 2006-12-26 | The Chinese University Of Hong Kong | Block-based fragment filtration with feasible multi-GPU acceleration for real-time volume rendering on conventional personal computer |
JP2006244426A (ja) * | 2005-03-07 | 2006-09-14 | Sony Computer Entertainment Inc | テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 |
US20070247476A1 (en) * | 2006-04-21 | 2007-10-25 | Liron Yatziv | Fast smooth up-sampling of binary volumes derived from medical imaging |
JP4932621B2 (ja) * | 2006-09-01 | 2012-05-16 | 株式会社日立メディコ | 画像処理装置、画像処理方法、およびプログラム |
JP4927580B2 (ja) * | 2007-01-31 | 2012-05-09 | 株式会社日立メディコ | 画像処理装置及びその方法 |
JP4845761B2 (ja) * | 2007-02-09 | 2011-12-28 | 富士通株式会社 | 3次元モデルの形状簡略化装置及び3次元モデルの形状簡略化プログラム |
WO2010023580A1 (en) * | 2008-08-29 | 2010-03-04 | Koninklijke Philips Electronics, N.V. | Dynamic transfer of three-dimensional image data |
US8131770B2 (en) * | 2009-01-30 | 2012-03-06 | Nvidia Corporation | System, method, and computer program product for importance sampling of partitioned domains |
JP5866177B2 (ja) * | 2011-11-10 | 2016-02-17 | ソニー株式会社 | 画像処理装置および画像処理方法 |
JP5846373B2 (ja) * | 2012-01-13 | 2016-01-20 | 国立研究開発法人海洋研究開発機構 | 画像処理装置、画像処理方法、画像処理プログラム、および、画像処理システム |
JP6106293B2 (ja) * | 2016-01-04 | 2017-03-29 | ソニー株式会社 | 画像処理装置、画像処理システム、および画像処理方法 |
JP2019114034A (ja) * | 2017-12-22 | 2019-07-11 | 大日本印刷株式会社 | コンピュータプログラム、画像処理装置、画像処理方法及びボクセルデータ |
JP7013849B2 (ja) * | 2017-12-22 | 2022-02-01 | 大日本印刷株式会社 | コンピュータプログラム、画像処理装置及び画像処理方法 |
JP7283603B2 (ja) * | 2017-12-22 | 2023-05-30 | 大日本印刷株式会社 | コンピュータプログラム、画像処理装置及び画像処理方法 |
JP7223312B2 (ja) * | 2018-09-06 | 2023-02-16 | 大日本印刷株式会社 | ボリュームレンダリング装置 |
-
2002
- 2002-03-12 JP JP2002066249A patent/JP3589654B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003263651A (ja) | 2003-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3589654B2 (ja) | ボリュームレンダリング方法とそのプログラム | |
US6184891B1 (en) | Fog simulation for partially transparent objects | |
JP5188628B2 (ja) | 3dオブジェクトの3dモデルをレンダリングするための方法及びシステム | |
Fang et al. | Hardware accelerated voxelization | |
JP4158167B2 (ja) | ボリューム・グラフィックス装置 | |
JP3203160B2 (ja) | ボリューム・レンダリング装置及び方法 | |
Scharsach | Advanced CPU Raycasting | |
US7184041B2 (en) | Block-based fragment filtration with feasible multi-GPU acceleration for real-time volume rendering on conventional personal computer | |
US8125480B2 (en) | Flat texture volume rendering | |
Hirche et al. | Hardware Accelerated Per-Pixel Displacement Mapping. | |
Roettger et al. | A two-step approach for interactive pre-integrated volume rendering of unstructured grids | |
US11348308B2 (en) | Hybrid frustum traced shadows systems and methods | |
US7616202B1 (en) | Compaction of z-only samples | |
CN111009033B (zh) | 一种基于OpenGL的病灶区域的可视化方法和系统 | |
He et al. | Fast stereo volume rendering | |
Muigg et al. | Scalable hybrid unstructured and structured grid raycasting | |
US7692651B2 (en) | Method and apparatus for providing efficient space leaping using a neighbor guided emptiness map in octree traversal for a fast ray casting algorithm | |
Wan et al. | Interactive stereoscopic rendering of volumetric environments | |
KR100429092B1 (ko) | 그래픽영상처리방법및장치 | |
US5926183A (en) | Efficient rendering utilizing user defined rooms and windows | |
US7372461B2 (en) | Image processing apparatus and method of same | |
KR100318044B1 (ko) | 화상합성시스템 | |
Schmidt et al. | Combined 3D visualization of volume data and polygonal models using a Shear-Warp algorithm | |
EP3940651A1 (en) | Direct volume rendering apparatus | |
KR100441082B1 (ko) | 가시 순차적 분할 렌더링 알고리즘을 이용한 3차원 텍스쳐기반의 볼륨 그래픽 구조 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20031201 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20040322 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040419 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040421 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040615 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040817 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040817 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |