問題タブ [connected-components]

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 に答える
270 参照

c++ - 別のコンポーネント内の接続されたコンポーネントを無視する

OpenCV を使用して背景 (緑色のフィールドと薄緑色のタオル) をオブジェクトから分離しようとしているので、次の画像を手動でセグメント化しました。 ここに画像の説明を入力

画像の右下にあるように、オブジェクトを赤で縁取り、考慮すべきではない接続されたコンポーネントを青で色付けすることにより、次のようになります。 ここに画像の説明を入力

254 のチャネル R と B でしきい値を設定した後、次の結果が得られました。

  1. チャンネルレッド

チャンネルレッド

  1. チャンネルブルー チャンネルブルー

を使用して赤チャネルのすべての輪郭を満たす場合

右下隅は次のようになります。

ここに画像の説明を入力

しかし、次のようなものにするために、青い点のみを含む輪郭を無視する必要があります。

ここに画像の説明を入力

そのため、赤と青のチャンネルを組み合わせて取得する必要がありますが、まだ方法がわかりません。アドバイスをいただければ幸いです。

ありがとう。

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

matlab - 連結成分の交差面積

MATLAB を使用してセグメンテーション タスクを実行しています。アルゴリズムのパフォーマンスを分析するには、両方の画像の各連結要素の交差領域が必要です。

接続されたコンポーネントは、画像内でどのようにラベル付けされていますか? また、PixelIdxList接続されたコンポーネントの一部であるポイントのすべての線形インデックスをリストしますか?

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

python-2.7 - OpenCV を使用して接続されたコンポーネントを見つける

Python OpenCVを使用して、エッジ検出画像のすべてのエッジを見つけて分離しようとしています。エッジは輪郭の形にすることができますが、そうである必要はありません。接続されたすべてのエッジピクセルをグループ化したいだけです。したがって、技術的には、アルゴリズムは手続き的に次のように聞こえるかもしれません。

  1. エッジ ピクセルごとに、隣接する (接続された) エッジ ピクセルを見つけて、それが見つからなくなるまで、画像の現在のサブディビジョンに追加します。
  2. 次に、チェックされていない次のエッジ ピクセルに移動し、新しいサブディビジョンを開始して、1) をもう一度実行します。

調べてみましcv.findContoursたが、結果は満足のいくものではありませんでした。おそらく、自由端ではなく輪郭 (囲まれたエッジ) を対象としていたためです。結果は次のとおりです。

元のエッジが検出されました:

輪郭処理後:

5 つのエッジがそれぞれ画像の独自のサブディビジョンにグループ化されることを期待していましたが、どうやら cv2.findContours 関数は 2 つのエッジをさらにサブディビジョンに分割しますが、これは望ましくありません。

これら2つの画像を保存するために使用したコードは次のとおりです。

ただし、私の実装には制限があります。Python 2.7 と OpenCV2 を使用する必要があります。これら以外のリビジョンや言語は使用できません。私がこれを言うのは、OpenCV 2 には C++ を使用した connectedComponent 関数があることを知っているからです。私はそれを使用することができましたが、問題は、特定の制限のために使用できないことです.

それで、私は問題にどのようにアプローチすべきか考えていますか?

0 投票する
2 に答える
1374 参照

gremlin - Tinkerpop 3: Gremlin トラバーサルで連結成分を計算する

タグは私の問題を非常によく説明していると思います:)

この投稿の最後に記載されている単純なグラフの連結成分を計算するために、Gremlin トラバーサルを作成しようとしています。

で試しました

入手

フィルターがに到達する前にcyclicPathから始まるトラバーサルを終了したため、これは悪いことです。明らかに、句を削除すると、無限ループが発生します。しかも、トラバースを使うと1歩で終わります。ノードを深さ優先順に探索するように指示する方法はありますか?eguntilsimplePath

乾杯!

0 投票する
2 に答える
856 参照

matrix - 隣接行列の近傍

0 と 1 の行列があります。どのセルからでも始められます。可能なすべての 1 をカバーするために必要なステップ (上、下、左、右) の最小数を知りたいです。0からでも1からでも始められます。

例:

(2,2) から 1 ステップ以内ですべての 1 に到達できます。これを重み付けされていない無向グラフの隣接行列に関連付けます。基本的に、任意のポイントから開始できる場合は、最も遠い隣人を見つける必要があります。頂点だけから開始できれば、単純に BFS/DFS を使用してカウンターを保持することもできましたが、これは問題を引き起こします。

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

python - 特定の接続コンポーネントのすべてのポイントを迅速に取得する

scikit-Image には、ブロブ検出に使用できるメソッドが多数あります。

ガウスのラプラシアン (Log)

ガウス (DoG) の違い

ヘッセ行列式 (DoH)

3 つすべてが、見つかったコンポーネントの境界内にある単一の点を含む配列を返します。

その情報を使用して、特定のコンポーネント内のすべてのポイントの座標を含むリストを作成したいと考えています。

シードから始めて自分で画像全体を反復処理し、ブロブ検出によって提供されるポイントをキーとして辞書内のすべてのポイントを収集するだけで済みますが、cython を使用していない限り(喜んで私はPythonにかなり慣れていないので、これについては間違っています)。もっと正直なところ、自分でやるよりも良い方法があると思います。