私の質問は、2つの異なる側面で尋ねることができます。1つはデータ構造の観点から、もう1つは画像処理の観点からです。データ構造の観点から始めましょう。次のクラスが示すように、いくつかの小さなアイテムで構成されるコンポーネントがあるとします。
class Component
{
public:
struct Point
{
float x_;
float y_;
};
Point center;
Point bottom;
Point top;
}
上記の例では、Componentクラスは、center、bottom、top(小さなアイテム)などのメンバー変数で構成されています。
これで、コンポーネントのスタックができ(コンポーネントの数は1000から10000の間)、スタック内の各コンポーネントには異なる値が割り当てられました。つまり、スタック内に重複するコンポーネントはありません。次に、コンポーネント内の1つの小さなアイテム、たとえば、図解されたクラスの「center」がわかっている場合、スタック内の一意のコンポーネントを見つけることができます。その後、コンポーネント内の他のプロパティを取得できます。次に、私の質問は、検索を容易にするために適切なコンテナデータ構造を構築する方法です。今、私はベクトルを使用して、STL(擬似コード)でアルゴリズムを見つけることを検討しています:
vector<Component> comArray;
comArray.push_back( component1);
.....
comArray.push_back(componentn);
find(comArray.begin(), comArray.end(), center);
この問題を解決するためのより効率的なコンテナがあるかどうか疑問に思いました。
画像処理の観点からも私の質問を説明することができます。画像処理では、接続コンポーネントの分析はオブジェクト認識にとって非常に重要なステップです。これで、私のアプリケーションでは、画像内のすべての接続コンポーネントを取得できます。また、興味深いオブジェクトが次の要件を満たす必要があることもわかりました。それらの接続コンポーネントの中心は特定の範囲内にある必要があります。したがって、この制約があれば、接続されている多くのコンポーネントを削除して、候補のコンポーネントで作業することができます。上記の手順の重要なステップは、中心座標制約が指定されている場合に、連結成分の候補を検索する方法です。任意のアイデアをいただければ幸いです。