問題タブ [watershed]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 流域を持つ接続されたオブジェクトの画像セグメンテーション
接続されたオブジェクトを分離しようとしています。Python と流域アルゴリズム (scipy 実装) は、これを処理するのに適しているようです。
これが私の画像と自動的に生成された流域シードポイントです(しきい値処理され距離変換された画像の極大値):
ここまでは順調ですね; すべてのオブジェクトにシードがあります。
ただし、流域を実行すると、状況が悪化します。
上部中央のクラスターと中央のクラスターの両方が不十分に分離されています。上部のクラスターでは、1 つのオブジェクトが他の 2 つのオブジェクトの周りにあふれています。中心の星団では、小さすぎてここでは見えないかもしれませんが、中心の種はほんの数ピクセルにあふれています。
2 つの質問があります。
- ウォーターシェッド アルゴリズムは、このようなオブジェクトを分離するのに適していますか?
- もしそうなら、画像を流域セグメンテーションにより適したものにするために私がしなければならないある種の前処理はありますか?
c++ - OpenCV Watershed : 4 ポイント接続
OpenCVで流域のコードを書いています。
しかし、分水界の境界を 8 点ではなく 4 点で接続したいと考えています。
現在、これはインターフェースです:
誰にもこれに対する解決策はありますか?
また、自動オーバーセグメンテーションのためにopencvで形態学的流域を実行する簡単な方法はありますか?現在のものはユーザー入力を受け取りますか?
matlab - mathworks.com の 2 次元流域の例
Mathworks.comの 2 次元流域の例を以下に要約できます。
D(~bw) = -Inf;
ここで、オブジェクトに属さないピクセルを強制的に -Inf (元はゼロ) にする必要がある理由がよくわかりません。
そのステートメントなしでプログラムを実行しようとしましたが、結果は混乱しています。流域が正しい結果を得るために、これらのピクセルを強制的に -Inf にする必要があるのはなぜですか?
フレデリックが指摘したようにsurf
、実行する前にここでサーフェスをプロットしていましD(~bw) = -Inf;
た。結果は次のとおりです。
実行後の結果は次のとおりです。
c++ - OpenCV キャニー + 流域
流域変換のマーカーを作成するために、気の利いたエッジ検出と等高線検索機能 (両方とも OpenCV) を使用しています。すべてうまくいきますが、結果に 100% 満足しているわけではありません。その理由は、一部のエッジが欠落しているため、重要な情報が失われているためです。より詳細には、四角形のウィンドウ (正面図) がたくさんあります。流域変換後、次のようになります。
しかし、私はむしろ、完全で片側が開いていない素敵な長方形が欲しいです。不規則な形状(家の前の茂み、車..)を維持しながら、この問題を解決する方法はありますか?画像全体をグリッドでオーバーレイすることを考えましたが、うまくいきません。
どうもありがとうございました。
これが私のコードです:
要求に応じて、元の画像、取得したい画像、および出力は次のとおりです。
そして、私はこのようなセグメンテーションをしたいと思います(セグメンテーションを超えても害はありませんが、確認する必要があるだけです。すべての詳細を取得します):
次のような
結果が得られますが
(色は無視してください。この質問では重要ではなく、プログラム全体の結果にすぎません)。これは 1 つの例にすぎません。必要に応じて、さらにお見せします。また、etrims データセットをご覧ください。私の写真はすべてそこからのものです。
c# - emgu.cvを使用して流域後に画像を分離する
私は血液の画像を持っていて、それに流域を適用しました..それは機能し、細胞を決定しますが、各細胞を別々の画像に入れる方法がわかりません..私はemgu.cvで作業しています.助けを得ることができますか
ここでは、流域法を使用して画像をセグメント化し、元の画像にマーカーを配置します
c++ - OpenCV Watershed を使用してオブジェクト間の輪郭を取得するにはどうすればよいですか?
イメージで OpenCV Watershed を使用します。
しかし、これは私に個別のマスクしか与えません。また、2 つのポイントとしてマーカーを作成しようとしましたが、結果は 1 つのマスクだけでした。http://biodynamics.ucsd.edu/ir/の例のように、OpenCV でセル (オブジェクト) を輪郭で分離することは可能ですか? そうでない場合、値を持つ結果マスクとして作成することは可能ですか?