問題タブ [superpixels]

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

opencv - SuperPixels から Polygon の頂点 (輪郭) を取得する

ここで、単純な方法では本当に理解できない問題があります。たぶん、誰かがこれを別の角度から見るのを手伝ってくれるでしょう。基本的に、同じサイズの 2 つのx行列とy行列座標があります。最初のもの (マスク) には、-1 と 0 の 2 つの異なる値のみを持つピクセルが含まれます。2 番目のもの (ラベル) には、整数値 (1 から 1000) を持つピクセルを含めることができます。

この 2 つの行列の表現は次のとおりです。

  • マスクは、さまざまなスーパーピクセルの輪郭を構成しているピクセルを表します。-1 の場合は境界上にあり、それ以外の場合は 0 です。
  • ラベル マトリックスでは、各ラベルはスーパーピクセルを表し、各ピクセルは 1 つのスーパーピクセル ラベルに割り当てられます。

私の目標は、スーパーピクセルごとに、頂点を抽出する関連する凹面ポリゴンを作成する 2 つのマトリックスを結合することです。

これまでの私の解決策は次のとおりです。

  1. ディクショナリを作成します。キーはスーパーピクセルを表すラベルで、値はスーパーピクセルの輪郭のピクセルを含む配列です。
  2. ConvexHull を実行して、辞書の各キーの凸多角形を見つけます。
  3. 見つかった凸多角形ごとに、関連する凹多角形を検出するアルゴリズムを実行します ( https://github.com/sadaszewski/concaveman-cpp )。

残念ながら、結果が元のスーパーピクセルとは異なる可能性があるため、このソリューションでは十分に正確ではありません.

2 つの行列の簡単な例:

ラベル:

1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 2 2 2 1 1
1 1 2 2 2 1 1
1 1 2 2 2 1 1

マスク:

-1 -1 -1 -1 -1 -1 -1
-1 -1 0 0 0 0 -1
-1 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1
-1 -1 -1 0 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1

ご助力ありがとうございます!