オブジェクトを互いに最大距離に配置するようにオブジェクトを立方体に配置します


11

カラーカメラを使用して、空間内の複数のオブジェクトを追跡しようとしています。各オブジェクトには異なる色があり、各オブジェクトを適切に区別できるようにするために、オブジェクトに割り当てられた各色が他のオブジェクトの色とできるだけ異なるようにしています。

RGB空間において、我々は、このキューブの3つの平面、0と255の間の値を持つすべてを持っている、私が配布したいn個の限りがあるように色を可能な限り他の人との距離。追加の制限は、である0 0 0 255 255 255 (又は可能な限りそれらの近くには)に含まれるべきであるn個(0,0,0)/(255,255,255)n(0,0,0)(255,255,255)n私のオブジェクトがいずれも色を取らないようにしたいので、背景はおそらくこれらの色の1つになるでしょう。(n2)

おそらく、(黒と白を含む)は約14以下です。n

これらの色を取得する方法についてのヒントを事前にありがとう。


2
カメラはおそらく同じ色で強度の異なるオブジェクトを区別できないため、2次元の空間のみを考慮する必要があると思います。問題は興味深いものです。
ステファン・ヒメネス

3つの次元は、3つのカラープレーン(赤、緑、青)から取得され、それぞれ独立して0〜255の値をとることができます。RGB空間では、強度はないと思います。他の色空間は2Dだけなので、より適しているかもしれませんが、私はそれらについてはあまり知りません。
マット

オブジェクトに投じられる光の量を正確に制御できれば、OKです。RGB空間では、(100、100、100)と(200、200、200)は、強度が異なる同じ色(灰色)と呼んだものです。
ステファン・ヒメネス

@マット、ステファンはRGBキューブではなくHSLまたはHSVキューブを使用することを提案しているようです。色は多かれ少なかれマッピングされますが、2DマップのSコンポーネントは無視できます。さらに、選択したSVまたはSLでHのみの1Dスケールを提案します。これにより、色が同様の審美的な「トーン」に保たれます。1D上の等分布アルゴリズムも単純です!
Jason Kleban

1
はい、ペアごとの最大距離。@ uosɐſ HSVは、実際にはRGBよりも優れた結果を返すようでした。3つすべてのHSV平面を使用しても、理想的な各色までの距離に基づいて個々の色を選択する方がよいでしょう。
マット

回答:


4

すべての電荷が導電体の表面に現れるのと同じ理由で、私が誤解しない限り、すべての色はRGB立方体の表面になります。これは、色を決定する次の方法を提案します。

  • RGB色空間をXYZデカルト空間として解釈します。
  • 候補色を電子などの荷電粒子として解釈する。
  • シミュレーションされたアニーリングなどを通じてシステムの低エネルギー状態を見つける。

n15

パーティクルが収束すると、ポイントを色として解釈することで色の配置が決まります。最初は、パーティクルは、小さな間隔でキューブの表面にランダムに配置できます(収束と安定性の問題に役立ちます)。立方体の面に小さなグループを置くことはうまくいくはずです。

ローカルではなく(グローバルではなく)最小値でスタックしないようにするには、収束後に小さなランダムな電界を「パルス」して、システムが同じ構成に戻るか、別の構成に戻るかを確認します。ランダムに配置されたパーティクルがこのシナリオでそれを行うとは考えられませんが、可能です。

編集:

コメントで指摘されているように、最適解は表面上にのみあるべきであるという仮定は、離散的な場合のすべての形状に対しておそらく当てはまりません。

幸いにも、これは上記の残りのテクニックにはほとんど影響を与えません。パーティクルは最初はどこにでも配置できます。安定性とカバージェンスのために粒子のペアの間にいくらかのスペースを残してから、システムを収束させて収束させ、次にシステムをいくつかの異なる(おそらくより良い)構成に収束させることができるかどうかを確認するために数回(おそらく強度を上げて)パルスします。 。

また、私はこの方法が「(粒子のペア間の平均距離)」のようなものを最大化すると信じています。パーティクルのペア間の最小距離、またはパーティクルのペア間の他の平均(幾何学的?)を最大化する場合、これは最適なソリューションを提供しない可能性があります。

いずれにしても、このテクニックは、ほぼ最適な色のセットを簡単に作成できる方法だと思います。実際の「最適な」ソリューションを取得することは、おそらくユースケースでは必要ありません。当然、正確で証明可能な最適なソリューションが必要な場合、数値シミュレーションはおそらく最善の方法ではありません。


3
n=9

@SaeedAmiri興味深い観察...問題は、電荷密度の通常の物理的な議論と比較して、この問題の離散的な性質に非常によくあるかもしれません。ただし、物理的アニーリングを使用した数値シミュレーションで、説明した解決策が見つからない理由はありません。回答を編集してコメントとこの洞察を再反映します。
Patrick87 2012

これをmatlabで(simulannealbndを使用して)実行する方法を理解できるかどうかを確認します。問題を、MATLABが最小化しようとする数学関数に変換することは、私が想像する困難です。
マット

PS私が最初に考えたのは、多面体(20面体)の頂点を使用することでした。これは、解がおそらく表面にあると考えていたためですが、それが本当かどうかはわかりませんでした。
マット

Matlabで私は(x、y、z)点のセットを与えられた関数を書きました、それはセットの各点のペアの間のペアワイズユークリッド距離の合計を計算します。次に、1を結果で除算すると、MATLABはこの関数の最小値を見つけることになっています。しかし、MATLABは正しく理解していません。たとえば、4つの3Dポイントの場合、次のx1、x2、x3、x4; y1、y2 ....ポイント(0〜1の範囲)を返します:0.0001、0.0031、0.9993、0.9920 ; 0.9970 0.0004 0.9919 0.0030; 0.0030 0.0003 0.9973 0.5756。それにもかかわらず、私はそれがMATLABの問題だと思うので、これを受け入れます。
マット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.