お客様: 計測機器メーカー様

ご依頼内容

  • 計測装置が出力するRAWボリュームデータから、複数の特徴量を、自動で算出したい。
  • 表面に凹凸のあるデータを、深さ方向をそろえてから、解析したい。
  • これまで2D投影画像で行っていた特徴抽出を、ボリュームデータのまま3Dで扱えるようにしたい。
  • 解析の条件を変えながら試せるように、GUIの付いたアプリケーションとして、使いたい。
  • MATLABを持たないPCでも動く実行形式と、関連するソースコードを、受け取りたい。
  • 既存の再構成プログラムの計算に時間がかかるため、計算結果は変えずに、処理時間を短縮したい。

課題

  • 技術的には、大きなボリュームデータを限られた計算機資源で扱いながら、立体のまま形の特徴を数値にすることが困難なこと。
  • 深さ方向が千点規模、水平方向は複数サイズのRAWデータを、メモリの限られたGPUなしのPCで処理すること。
  • 表面の位置が測定点ごとに異なるデータを、基準となる別のデータを使って、補正すること。
  • 代表データで調整したパラメータを、複数のデータへ一括で適用し、結果を表形式で保存すること。
  • 2D投影画像で行っていた特徴抽出を、ボリュームデータ上の処理へ拡張すること。
  • 高速化では、アルゴリズムと計算結果を維持したまま、メモリ使用量の増加も抑えること。

ソリューション

  • 基準となる別のデータから、各位置で閾値を最初に超える深さを検出し、関連する複数のデータへ、同じ深さ方向のシフトを適用した。
  • 表面の補正は、関数版を先に提供し、その後、GUI版へ拡張した。補正の前後の断面像を、見比べられるようにした。
  • 深さ範囲と水平方向のROIを指定し、ボリュームを複数の深さ領域へ分割して、投影画像を表示するGUIを構築した。
  • 閾値処理、二値化、小領域の除去、線状構造の強調を組み合わせ、領域ごとの密度を算出した。
  • 信号の弱い領域の抽出と集計、強度分布の平均・中央値・標準偏差・ヒストグラムの集計を、それぞれGUIから実行できる構成とした。
  • 代表となるデータ1件でパラメータを調整し、同じ設定を残りのデータへ一括で適用する、操作の流れとした。
  • 3Dへの拡張では、3D平滑化、線状構造の強調、二値化、形態学処理、3D細線化を、順に適用する処理を実装した。
  • 細線化で途切れた構造を、膨張と再細線化によって接続する、2段階の処理を採用した。
  • 中心線の端点から26近傍を追跡し、密度、本数、長さ、太さなどの形状特徴量を算出した。
  • ROIの指定、各処理の有効・無効の切替、3D表示、CSVとMATファイルの出力を、GUIへ統合した。
  • ボリュームをブロックに分割して領域ごとに特徴量を集計する機能と、選んだ特徴量を空間分布として出力する機能を、追加した。
  • 再構成処理の高速化では、式変形、ループ外への計算の移動、線形インデックスの自前計算、整数型化を適用した。
  • 並列化は、メモリ使用量が数十GBまで増えて逆効果になることを実測し、採用しなかった。高性能なPCで使う場合の切替の指針は、報告書に残した。
  • 高速化の前後で、出力データと中間変数を比較し、計算結果が変わらないことを確認した。
  • 集計結果はExcelへ自動出力し、MATLAB Compilerによる実行形式と、ソースコードを納品した。
RAWボリュームから表面の補正、特徴量の算出、表形式での出力までの処理の流れを示した図
解析の流れ。RAWボリュームデータに表面の補正をかけ、深さ領域ごとに特徴量を算出して、表形式で出力する。処理の構成を示した図で、実際の測定データは含まない。
補正前の凹凸のある表面と、補正後にそろえた表面を並べた模式図
表面の補正の考え方。表面の位置が測定点ごとに異なるデータを、各位置ごとの深さ方向のシフトによってそろえる。処理の考え方を示した模式図で、実際の測定データではない。
再構成処理の実行時間を、高速化前と、並列化なし・並列化ありの高速化後とで比較した棒グラフ
再構成処理の実行時間。式変形、ループ外への計算の移動、線形インデックスの自前計算、整数型化により、約26分から約3分へ短縮した。並列化した構成も実測したが、わずかに遅いうえメモリ使用量も増えるため、採用していない。数値は本案件での実測値を丸めて示している。

結果

  • 再構成処理の実行時間を、約26分から約3分へ短縮し、約8倍の高速化を確認した。
  • 表面の補正を前処理として挟むため、凹凸のある対象でも、深さ方向をそろえた状態で特徴量を比較できる。
  • 2D投影では失われていた3D形状の情報を、密度、本数、長さ、太さなどの形状特徴量として数値化した。
  • 測定データごとの特徴量が表形式で自動的に残るため、測定した対象どうしの違いを数値で比較でき、解析条件の絞り込みを、お客様側で進められる。
  • 領域ごとの集計と、特徴量の空間分布の出力により、ボリューム内のどこに違いが出ているかが分かる。
  • 関数版とGUI版を分けて納めたことで、お客様側の内製プログラムへ組み込む使い方と、GUIで試す使い方の、どちらにも対応できた。

ひとこと

  • 3Dのデータから形の特徴を数値にする方法は、いくつもあるのですが、測定の条件やデータの性質によって適した方法が変わるため、どれを選ぶかは難しいところだと思います。2Dの画像で使っていた処理を、そのまま立体に持ち込んでも、うまく特徴量にならないことが多いです。
  • 使えるメモリやGPUの有無といった、実際に動かす環境の制約も、処理の組み方そのものを左右します。そのため、画像処理の知識と、計算機資源を見ながら設計する経験の、両方を持っている人が開発するのが良いと思います。
  • また、今回の事例では、MATLABのGUIを付けて、実行形式で配布できるようにしたので、プログラムに不慣れな人でも、ROIや処理の切替を変えながら、結果を確認できます。
  • 今回は、「2Dの投影画像でなら解析できているが、条件を変えるたびに手作業でパラメータを直して測り直しているので、時間がかかる。立体のまま、まとめて数値にしたい。」というご相談でした。弊社は、処理方式の検討から、ソフトウェアとしての実装、既存プログラムの高速化までを、一括してお引き受けします。

お問い合わせ

開発事例にご興味ありましたら、お気軽にお問い合わせ下さい。
下記の、「今すぐお問い合わせ」をクリックして、フォームにご記入下さい。
早急に回答致します。

今すぐお問い合わせ