5233人時でマイクロトモグラフ用のソフトウェアを作成する方法





エジソンの興味深いプロジェクトについてもっと詳しく話したいです。 開発者は、マイクロトモグラフ用のソフトウェアの作成を任され、この作業で優れた仕事をしてから、このトモグラフにシード、ボルト、コンデンサ、およびを詰めました。 そして、真面目なおじさんは、ダイヤモンドをチェックし、穴の開いたものを買わないために、このトモグラフが必要です。



そして今日は、オーストリアの数学者でありウィーン大学の学長であるヨハン・ラドンの誕生日である12月16日です。



ヨハン・ラドンは6つの大学の教授であり(そのうちの1つは学部がなくても)、オーストリア数学協会の会長でした。 オーストリアでは、彼は「計算と応用数学研究所」とメダルにちなんで名付けられました。



トモグラフ用のソフトウェアの開発がどのように進み、どのタスクがプロセスで解決されたかについて-カットの下で。





マイクロトモグラフ









トムスク州立大学の科学者がマイクロトモグラフを作成しました。 さまざまな材料の内部構造をミクロン単位の精度で学習できます。 たとえば、ダイヤモンド。





ダイヤモンドの品質



トモグラフは、最大数ミクロンの解像度で材料を照らすことができます。 人間の髪の毛の100倍の薄さです。 スキャン後、プログラムは3Dモデルを作成します。このモデルでは、パーツの外側だけでなく、その中身を調べることもできます。



トモグラフ装置
デバイスの主な技術的特性のリスト。



•検出器の解像度要素の数:13.3 x 13.3ミクロンを超えない単一要素サイズの2048 x 2018セル。

•解像度:13ミクロン。

•寸法:504 x 992.5 x 1504 mm。

•重量:450 kg。

•視野:1 mm。

•動作波長範囲:0.3〜2.3 A

•RMT位置決めシステムの電気機械式モーションモジュールの位置決め精度:±1μm。

•安全要件への準拠:GOST 12.1.030-81。

•X線保護:1〜3μSv/ h。





外観





電気機械部品の動作原理





X線源



•電圧:20〜160 kV。

•電流:0〜250μA。

•電力:10ワット。

•焦点スポット径:1〜5μm。





ポジショニング



•ローターストローク:SEMD-360°、LEMD-100 mm。

•位置決め精度、±0.5ミクロン以上。

•ローター速度:0.01〜20 mm / s。

•電力:70 Vの電圧で0.7 kW





CCDに基づくX線検出器



•CCDに敏感な領域:2048 x 2048ピクセル。

•幾何学的なピクセルサイズ:13 x 13ミクロン。

•CCDの敏感な領域の幾何学的サイズ:26.6 x27.6 mm。

•内蔵2スピードADC:16ビット、100 kHz、および16ビット2 MHz。







デジタル化と再構築の図



数学的アルゴリズムを使用。



実装と技術。



労働力:5233人時。

トモグラフから取得した生データ(投影画像)に対してデバッグを実行しました。



アルゴリズム



まず、問題を解決するための数学的装置を選択する必要がありました。 主なアルゴリズムである逆ラドン変換は、問題のステートメントに記載されています。



ただし、作業の機能に合わせて調整し、いくつかの追加の補助アルゴリズムを使用する必要がありました。 たとえば、オブジェクトが単一の「電球」で照らされているという事実を考慮すると、逆ラドン変換の式を直接投影ではなく円錐形に適合させる必要がありました。 標準アルゴリズムでは、無限遠の線源から発せられる平行なX線のビームで物体が照らされると想定しています。 実際には、光線の源は点状であるため、光線のビームは円錐形になります。 この点で、逆ラドン変換アルゴリズムでは、円錐システムから長方形システムへの座標変換を導入する必要がありました。



計算の最初の段階、予備フィルタリング/畳み込み、投影の正規化が実行されます。 これは、投影のノイズを抑え、密度をより明確に区別するために必要です。





3DエディターCompass、SolidWork、3D Max Studioで表示するための標準形式でオブジェクトの表面の3Dモデルを構築するために、アルゴリズム「 Marching(walking)cubes 」が使用されました。 アルゴリズムの本質は、スカラーフィールドを実行し、各反復で8つの隣接位置(座標軸に平行な立方体の頂点)を調べ、この立方体を通過する等値面の一部を表すのに必要なポリゴンを決定することです。 次に、特定の等値面を形成するポリゴンが表示されます。



プロジェクトのガウスフィルターは、畳み込みマトリックスを使用した画像処理用のマトリックスフィルターとして理解されます。 畳み込み行列は、所望の結果を得るために画像ピクセルの値で「乗算」される係数の行列です。 このフィルターは、ボクセルデータとスライス投影を滑らかにするために使用され、生成される3Dモデルの品質を向上させます( Habrapost 1Habrapost 2 )。



実装と技術



作業の過程で、多くの専門的な技術ソリューションも作成されました。ボリュームボクセルモデルレンダリング用のライブラリ。 モデルの操作中のビデオ録画; 12ビットのグレーの濃淡で画像を保存するためのネイティブ形式。 「オクトツリー」の形式で大量のデータを保存します。 3Dモデルのポリゴン化アルゴリズム。



画像

プロジェクトでのボリュームボクセルモデルレンダリングを使用して、リアルタイムで回転およびスケーリングの可能性があるモデルを表示しました。 ボクセルは3次元のピクセルです。 また、ボクセルレンダリングの助けを借りて、オペレータは詳細レベルの自動増加と2回のクリックで任意の角度に切断面を配置する機能を備えた表示領域を決定するための便利なツールを提供されます。 割線平面に基づいて、将来的には最大解像度でスライス画像を取得することが可能です。
画像 八分木(八分木、八分木、英語の八分木)は、各内部ノードが正確に8つの「子孫」を持つツリー状のデータ構造の一種です。 8進ツリーは、3次元空間を8つのセルに再帰的に分割するために最もよく使用されます。 プロジェクトでは、octreeを使用すると、ユーザーに表示されないデータが不要な場合にデータをプレビューモードで表示できます。 したがって、たとえば、ボリュームレンダリングは、octreeを使用して選択された領域に応じた粒度で表示用のデータセットを受け取ります。これにより、モデル全体が表示されているときに高いFPSが提供され、同時にモデルの小さい部分が選択されると粒度が増加します。



デバッグ



この後に最適化段階が続きました。 トモグラフは、1つのオブジェクトについて、それぞれ最大8000 * 8000の解像度を持つ360個の画像を生成します。 処理されるデータの量が多いため、「正面」の問題の解決策は完全に不十分です。 これは設計段階で考慮されていましたが、最初のバージョンを受け取った後、アルゴリズムを数回最適化および適合させる必要がありました。 このタスクでは、微細構造の3次元モデルを作成する時間が2時間を超えないようにする必要があったため、最初に最適化段階が定められました。 最初のバージョンのテスト中に、投影画像の保存に標準形式を使用することはプロジェクトに適していないという事実に直面しました。 入力には、16ビットグレースケールコーディングのTIFF画像が含まれています。 このような色深度は計算には過剰であり、そのような画像の処理には多くのディスク容量、ネットワークチャネル、RAM、およびプロセッサ時間が必要です。 一方、標準の8ビット色深度では、再構築の精度を維持するのに十分ではありませんでした。 そのため、12ビットの色深度で画像を保存するためのフォーマットが開発されました。



技術設計には、コンピューティングの水平スケーリングが含まれていました。 3Dモデルの再構成、つまり主要な計算タスクは、小さなタスクパッケージに分割され、中央のソフトウェアモジュールがクラスター内のサーバーのネットワーク上に配布しました。 サーバーではCUDAテクノロジーが使用されていたため、GPUの計算能力を計算に使用できます。 1つのモデルの計算に必要な時間は、計算タスクが完全に並列化され、すべてのサーバーが100%ロードされるため、クラスター内のサーバーの数に比例して短縮されます。



画像



CUDAアーキテクチャは、高性能グラフィックコンピューティングだけでなく、nVidiaグラフィックカードを使用したさまざまな科学計算にも適用できます。 科学者や研究者は、天体物理学、計算生物学、化学、流体力学モデリング、電磁相互作用、コンピューター断層撮影、地震解析など、さまざまな分野でCUDAを幅広く利用しています。 CUDAには、OpenGLとDirect3Dを使用してアプリケーションに接続する機能があります。 CUDAは、Linux、Mac OS X、Windowsなどのオペレーティングシステム用のクロスプラットフォームソフトウェアです。



私たちのプロジェクトでは、CUDAがメインプロセス-投影からのボリュームデータの再構築に使用されます。 GPUには専用の命令セットがあるため、CUDAテクノロジーを使用して再構成計算がグラフィックスカードに適合します。 CPUでは、このタスクは開発段階と実行段階の両方でより長く解決されます。





ソフトウェアでサポートされているカード:





タスクにより、ソフトウェアはMicrosoft Windows XP / Vista / 7、Linuxで動作するはずです。 この点で、クロスプラットフォームソリューションは最初に設計されました。 開発言語として、C ++ / Qtが選択されたため、単一のソースコードを持ち、さまざまなオペレーティングシステム用のソフトウェアを構築することができました。











映像













































その他のプロジェクト:

5233人時でマイクロトモグラフ用のソフトウェアを作成する方法

FB2形式の電子書籍のサポートを実装するSDK

電子文書へのアクセスを管理します。 DefViewからVivaldiへ

Axxon NextとSureViewの2つのビデオ監視システムを統合します

X線トモグラフィーソフトウェアの開発の詳細

「スコープ」:数十億キロワット時を監視する方法

データベースを操作するためのシンプルなJIRAプラグインの開発

DevOpsを支援する:1008時間でDebian上のネットワークデバイスのファームウェアビルダー

貧しい人々のためのAWSを介したWindows Auto Service Update



All Articles