問題タブ [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 投票する
0 に答える
790 参照

python - OpenCVでコーナーを接続して長方形を形成する

ラスタライズされた PDF の CText フィールドを PNG 形式に変換し、OpenCV で画像を分析して検出しようとしています。

これまでのところ、次のコードを使用して、比較的正確な一連のコーナーを作成できました。

ここに私の入力があります: https://gyazo.com/88123222a2fdc9afc9b8bc038a1bda3e

出力は次のとおりです。 https://gyazo.com/205b857ded03669f625d664965566b30

このポイントのセットから、どのポイントが長方形の一部であるかを計算できるようにしたいと考えています。これには、各コーナー ポイントに対して、他の 3 つのコーナー ポイントが存在することを確認する必要があります。

  1. 同じ行 (ほぼ) にあるが、列が異なるポイント
  2. 同じ列 (ほぼ) であるが、行が異なるポイント
  3. 上の(1)の列と上の(2)の行を持つポイント

目標は、それらのコーナーポイントが長方形自体に属していない限り、内部に [有意な] 量のコーナーポイントを含まない長方形のセットを生成することです(たとえば、各内側の長方形の境界長方形の場合)。 )

OpenCVでこれを行う最も効率的な方法は何ですか?

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

c - 連結成分数の問い合わせ

有向グラフの連結成分の数を見つけるコードを書きました。以下のダイアグラムを隣接行列として使用すると、連結成分の数が 2 になります (最初の DFS: 0->1->2、2 番目の DFS : 3)。

ここに画像の説明を入力

しかし、以下の図を隣接行列として使用すると

ここに画像の説明を入力

連結成分の数を 1 (DFS: 0->2->3->1) として与えます。だから私が聞きたいのは、連結成分の数を計算することです。接続されたコンポーネントの数を見つけるための DFS?

コード:

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

c++ - opencvは、接続されたコンポーネントの周囲を見つけます

私はopencv 2.4.13を使用しています

ConnectedComponentWithStatsを使おうと思ったのですが、周囲が返ってこず、面積や幅などしか返ってこない... 等高線で面積を求める方法はありますが、反対ではありません(画像全体ではなく、1つのコンポーネントを意味します)。

メソッドarcLengthは、輪郭だけでなくコンポーネントのすべてのポイントを持っているため、うまく機能しません。

コンポーネントの各ピクセルを反復処理して、同じコンポーネントにない隣人がいるかどうかを確認することで、それを見つけるBFの方法があることを私は知っています。しかし、私はより安価な機能が欲しい. それ以外の場合は、メソッド findContours によって検出された輪郭にコンポーネントをリンクする方法を知っていれば、それは私にも適しています。

ありがとう

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

matlab - MATLAB: バイナリ イメージの対象領域の周囲を分離する: bwmorph の問題

bwconncomps で分離された接続コンポーネントを含むバイナリ イメージ (添付) があります。これらの各コンポーネントのアウトラインを特定しようとしていますが、塗りつぶされたオブジェクトを参照できる方法で (アウトラインをグレースケール イメージのマスクとして使用して値を取得し、それに応じて塗りつぶされた元の関心領域で操作を実行する値)

添付の画像で bwconncomps を実行すると、814 個のオブジェクトが識別されます。bwmorph(D,'remove'); を実行できます。そして、オブジェクトの輪郭/周囲を取得しますが、これで bwconncomps を実行すると、827 個のオブジェクトが取得されます (これらの余分なオブジェクトがどこから来ているのかわからないため、値に基づいて塗りつぶされたオブジェクトを参照する能力が台無しになります)アウトラインから引っ張る)。

基本的に、元のバイナリ イメージの bwconncomps に見られるのと同じ数の接続されたコンポーネントを残す bwmorph(D,'remove') のバージョンが必要です。これにより、元のバイナリのコンポーネント #30 をアウトラインと比較できます。 bwconncomps の同じ #30。

これが明確であることを願っています、何か提案はありますか?

ありがとう

ここに画像の説明を入力

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

scala - Spark アプリケーションでの計算時間を短縮する

500 万を超える要素を繰り返し実行する Spark アプリケーションがあります。アプリケーションをデータセット全体で実行するには 2 時間かかります。しかし、5,000 万を超える要素のデータセット全体に対してアプリケーションを実行する必要があります。
コードは正常に実行されますが、問題は、私のプログラムのほとんどがドライバーで実行され、エグゼキューターがアプリケーションの実行において果たす役割は最小限です。したがって、この反復アプリケーションの計算時間は非常に長くなります。
アプリケーションは、n-triples データセットからグラフを作成して、連結要素を見つけます。
問題は、executor がタスクを受信して​​おらず、最初の for ループが 500 万個の要素すべてが完了するまで実行されるため、この部分に約 90% の時間がかかるため、主にこの部分を最適化する必要があることです。
作業をドライバーからエグゼキューターに転送する変更を提案し、それによってこのコードをスケーラブルにして、計算時間を大幅に短縮します。

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

c++ - CV C++ connectedComponentsWithStats と SimpleBlobDetector を開く

simpleblobdetectorで見つけた一連のブロブの領域を見つけたいのですが、それを行う方法はconnectedComponentsWithStatsを使用することです。この関数の使い方がよくわかりません。誰かが私に例またはリンクを教えてください。

これまでの私のコードは次のとおりです。

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

scala - Graphxは頂点IDから頂点ラベルを取得します

Graphxに次のグラフがあります

このグラフに連結成分アルゴリズムを適用しました。その出力は次のとおりです:-


出力が(vertexID,vertexID) => (vertexLabel,vertexLabel)から変換されるように、ccGraph で (vertexID,vertexID) の頂点ラベル/頂点名を見つける方法が見つかりません。

私は次のアプローチを試みましたが失敗しました

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

image - 一部を保持しながら、画像から接続されたコンポーネントを削除する方法

labelledImagefromという画像に 5 つの接続されたコンポーネント (ラベル付きオブジェクト) があるとしbwlabelます。labelledImage2、3、5のラベルが付いたオブジェクトを削除しながら、1 と 4 のラベルが付いたオブジェクトのみが表示されるように操作するにはどうすればよいでしょうか。 1 と 4 のみ表示されます。

以下のコード行を使用して、単一の接続されたコンポーネントを保持する方法を知っています。ただし、複数のラベル付き領域に対してこれを行う方法がわかりません。

動作します。

うまくいきません。

0 投票する
3 に答える
109 参照

python - 従属グループの作業

次の関数を使用して、いくつかのテスト データを生成できます。

これは私のテストデータです。

レターが別のレターとリストを共有している場合、それはそのレターに依存しており、そのレターのいずれかが他の依存関係にあります。例えば

x依存している['a','c','d','g','f','i','h','k','l','q','p','s','u','w','v','y', 'x','z']

これらの依存関係も双方向です。kを含むすべてのものに依存しています。x

しかし、またはxに依存していません。これらは別々のグループに配置できます。bt

リストをできるだけ多くの非依存グループに分割する必要があります。

各グループは、グループが依存するすべての文字のセットになります。非依存文字は1セットとなります。

上記の出力例は次のとおりです。

これを行う関数を作成しようとしていますが、すべてを正しくグループ化する正しい方法がわかりません。

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

python - opencv python connectedComponentsはラベルごとにコンポーネントを選択します

この画像の各コンポーネントを選択したい:

ここに画像の説明を入力

実際には、すべての三角形をそのラベルで表します。方法がわかりません。私はこのコードを持っています:

しかし、画像は完全に黒です:Sありがとうございます。