Matlabを使用してグレースケール画像セットから3Dボリュームを作成します。セットには、2Dグレースケール画像の連続および量子化されたスライスが含まれています。私はまだMatlabの新人と見なされていますが、これが現在私の頭の中にあります。
しかし、ここで問題が発生します。スライス間のポイントをどのように接続して、これらのポイントをボリュームにすることができるでしょうか。または、Matlabで行うより堅牢な方法はありますか?どんな提案でも大歓迎です。
パート0-仮定
パート1-2D画像のスタックからの3Dボリュームの視覚化
2D画像のスタックから3Dボリュームを視覚化または再構築するには、matlabで次のツールキットを試すことができます。
1 3D CT/MRI画像インタラクティブスライディングビューア http://www.mathworks.com/matlabcentral/fileexchange/29134-3d-ctmri-images-interactive-sliding-viewer
[2] Viewer3D http://www.mathworks.com/matlabcentral/fileexchange/21993-viewer3d
[3] Image3 http://www.mathworks.com/matlabcentral/fileexchange/21881-image
[4] Surface2Volume http://www.mathworks.com/matlabcentral/fileexchange/8772-surface2volume
[5] SliceOMatic http://www.mathworks.com/matlabcentral/fileexchange/764
VTKに精通している場合は、次のことを試すことができます。[6] matVTK http://www.cir.meduniwien.ac.at/matvtk/
私は現在、そのシンプルさと使いやすさのために[5] SliceOMaticを使い続けています。ただし、デフォルトでは、Matlabでの3Dレンダリングは非常に遅くなります。 openGLをオンにすると、レンダリングが速くなります。 (http://www.mathworks.com/help/techdoc/ref/opengl.html)または、簡単に言えば、set(gcf、 'Renderer'、 'OpenGL')。
パート2-スライス間のピクセルの補間
スライス間のピクセルを補間するには、補間方法を指定する必要があります(上記のツールキットの一部には、この機能/柔軟性があります。それ以外の場合、補間の例としては、バイキュービック、スプライン、多項式などがあります。)問題のドメインにはるかに固有の補間方法について、googleまたはgoogle/scholarを検索することで、これを解決できます)。
パート3-3D前処理
手順を見ると、最初に各2D画像を処理することにより、体積データを処理します。多くの高度なアルゴリズム、または真の3D処理では、最初に3Dドメインでボリュームデータを処理することができます(簡単に言えば、26個以上のネイバーを最初に考慮に入れます)。この手順が完了すると、断面を表示するためにボリュームデータを2D画像のスタックに出力するか、前述の3D表示用ツールキットの1つに提供するか、サードパーティの3D表示アプリケーションに出力することができます。
私は自分の医用画像研究プロジェクトで上記の概念に従いましたが、上記の発見は ここに記載されている私の研究経験に基づく(最新の改訂版) です。
MATLABは通常、3D配列を使用して体積データをプロットします。データポイントは、各軸に沿って空間的に均等に分離されています。データがないサイトが3D配列にある場合、通常はNaN
値が割り当てられ、さまざまなプロット関数がこれを適切な方法で処理できます(つまり、通常は意図したとおりに動作します) )。
データのz方向の隣接する点が配列の3次元でも隣接するように、スライスを3d配列にロードする場合は、問題ないはずです。