問題タブ [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.
opencv - SuperPixels から Polygon の頂点 (輪郭) を取得する
ここで、単純な方法では本当に理解できない問題があります。たぶん、誰かがこれを別の角度から見るのを手伝ってくれるでしょう。基本的に、同じサイズの 2 つのx行列とy行列座標があります。最初のもの (マスク) には、-1 と 0 の 2 つの異なる値のみを持つピクセルが含まれます。2 番目のもの (ラベル) には、整数値 (1 から 1000) を持つピクセルを含めることができます。
この 2 つの行列の表現は次のとおりです。
- マスクは、さまざまなスーパーピクセルの輪郭を構成しているピクセルを表します。-1 の場合は境界上にあり、それ以外の場合は 0 です。
- ラベル マトリックスでは、各ラベルはスーパーピクセルを表し、各ピクセルは 1 つのスーパーピクセル ラベルに割り当てられます。
私の目標は、スーパーピクセルごとに、頂点を抽出する関連する凹面ポリゴンを作成する 2 つのマトリックスを結合することです。
これまでの私の解決策は次のとおりです。
- ディクショナリを作成します。キーはスーパーピクセルを表すラベルで、値はスーパーピクセルの輪郭のピクセルを含む配列です。
- ConvexHull を実行して、辞書の各キーの凸多角形を見つけます。
- 見つかった凸多角形ごとに、関連する凹多角形を検出するアルゴリズムを実行します ( 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 |
ご助力ありがとうございます!