6

接続されたオブジェクトを分離しようとしています。Python と流域アルゴリズム (scipy 実装) は、これを処理するのに適しているようです。

これが私の画像と自動的に生成された流域シードポイントです(しきい値処理され距離変換された画像の極大値):

seeds = myGenSeeds( image_grey )

ここに画像の説明を入力

ここまでは順調ですね; すべてのオブジェクトにシードがあります。

ただし、流域を実行すると、状況が悪化します。

segmented = ndimage.measurements.watershed_ift( 255 - image_grey, seeds)`

ここに画像の説明を入力

上部中央のクラスターと中央のクラスターの両方が不十分に分離されています。上部のクラスターでは、1 つのオブジェクトが他の 2 つのオブジェクトの周りにあふれています。中心の星団では、小さすぎてここでは見えないかもしれませんが、中心の種はほんの数ピクセルにあふれています。

2 つの質問があります。

  1. ウォーターシェッド アルゴリズムは、このようなオブジェクトを分離するのに適していますか?
  2. もしそうなら、画像を流域セグメンテーションにより適したものにするために私がしなければならないある種の前処理はありますか?
4

3 に答える 3

1

ウォーターシェッド アルゴリズムは、シンプルで堅牢なセグメンテーション アルゴリズムです。あなたのデータは、その種のセグメンテーション アルゴリズムでは問題ないようです。私が見る限り、特別な前処理は必要ありません。もちろん、場合によっては少し危機に瀕していることはすでにわかっています。

流域はよく使用されますが、識別したいオブジェクトに関する特別な知識は考慮されません。そうすれば、より洗練されたアルゴリズムを利用できる可能性があります。

また、利用可能な流域アルゴリズムのより洗練されたバージョンがあるかもしれません。Watershed 2.0と呼ばれるこの Python モジュールには、パラメーターがあります (scipy バージョンとは異なります)。パラメータを少し調整して、結果が改善されるかどうかを確認します。

Ilastikは、自動セグメンテーションによく使用されるツールです。半自動学習が組み込まれています (基本的には、例を挙げてトレーニングし、そこから重要な機能を学習します)。

于 2016-03-15T11:47:56.270 に答える