問題タブ [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.

0 投票する
1 に答える
1092 参照

c - マウスクリックを使用してopencvで輪郭を検出する

画像にさまざまな輪郭/セグメントがあります。現在、キーボードを使用して、画像から抽出するセグメントを入力します (以下を参照)。

ここに画像の説明を入力

ピンクの領域をセグメント 1、白い領域をセグメント 2 と考えます。キーボードを使用して、抽出するセグメント (1 または 2) を入力します。

ここに画像の説明を入力

各セグメントの色を配列に保存し、その配列を使用して特定のセグメントを抽出します。

マウスクリックを使用してセグメント/輪郭を識別できるかどうかを知りたいので、複数の輪郭を描画し、マウスを使用してセグメントを識別し、キーボードを使用してセグメント番号を入力する必要はありません。

0 投票する
0 に答える
169 参照

opencv - OpenCV 流域の結果は予期されていません

流域 OpenCV 3.0 実装をいくつかのサンプルでテストしていますが、奇妙な結果、または少なくとも予期しない結果が得られます。

私は以下を適用しています:

入力画像を読む

入力画像

大津二値化を適用して前景と背景を区別する

マーカーとして適用される接続ポイントを取得します

流域を実行

結果 結果 (青い線) は、私が期待したもの (赤い線) から少しずれています。

0 投票する
1 に答える
361 参照

objective-c - Objective-C で流域セグメンテーションを実装する

画像処理用の OS X アプリを作ろうとしています。Objective-c に Watershed セグメンテーション アルゴリズムを実装する必要があります。いくつかの opencv c++ コード スニペットを見つけましたが、c++ に慣れていないため、完全に機能させるのは困難です。

どんな助けでも大歓迎です。

0 投票する
1 に答える
785 参照

algorithm - Matlab で適応流域セグメンテーションを実装する

Matlab で「Adaptive Watershed Segmentation」を実装したいと思います。このアルゴリズムには 6 つのステップがあります。入力は図(a)、結果は図(d)です。私のコードに誤りがないかどうかを確認するのを手伝っていただけませんか。6 番目のステップの実装方法がわかりません。どうもありがとう!

入力画像

結果イメージ

画像をロード:

ステップ 1 : 各 (x,y) で D(x,y) を計算し、バイナリ イメージのユークリッド距離マップを取得し、M(x,y) の各値を 0 として割り当てます。

ステップ 2 : ガウス フィルターを使用して距離マップを平滑化し、隣接する最大値をマージし、D(x,y) が極大値の場合は M(x,y) を 1 に設定し、距離マップのマーカー マップを取得します。

ステップ 3 : マーカー マップをピクセル単位でスキャンします。M(x0,y0) が 1 の場合、その近傍で半径 D(x ,y ) の疑似最大値を探します。M(x,y) が 1 で、sqr((x − x0)^2 + (y − y0)^2 ) ≤ D(x0, y0) 、D(x,y) < D(x0,y0) の場合、M(x,y) を 0 に設定します。

ステップ 4:

距離マップの逆数を計算すると、極大値が極小値になります。

STEP5:

従来の流域アルゴリズムによるマーカーに従って距離マップをセグメント化し、バイナリ イメージのセグメンテーションを取得します。

ステップ 6: 流域線の端を直線で結び、直線に沿ってピクセルを再分類することにより、流域線をまっすぐにします。

このステップを実装する方法がわかりません