2017-01-07 9 views
1

私はJavaでOpenCVのマーカーベースの流域実装を使用してイメージをオーバーセグメント化しようとしています。OpenCVからWatershed Transformを使用してオーバーセグメンテーションを達成する方法は?

私の考えは、すべてのローカルミニマムを検索し、それらをマーカーとして使用することでした。 残念ながら、流域ではマーカー入力としてCV_8U型の行列が必要です。したがって、実際には255個以上のマーカーを取得することはできません。

OpenCVを使用してオーバーセグメンテーションを達成するには、この問題の回避策がありますか?

The original image to the left, the markers in the middle (about 740), resulting segmentation to the right (only 255 regions)

答えて

0

確率的流域では、この問題であなたを助けることができます。原則は複数の流域を適用することです。あなたのケースでは

、あなたが行うことができます:

  1. 全ての局所最小
  2. 選択N極小値を探すアキュムレータ
  3. に流域
  4. ストア結果/境界線を適用します手順2,3,4をM回繰り返します。
  5. 少なくともM%の投票があるアキュムレータの境界を維持します。

他の解決策は、SMIL libraryを使用することです。 Javaから呼び出すことができます。実装されたアルゴリズムは高速で、偏っていないと確信しています。

関連する問題