我的问题可以从两个不同的方面提出:一个是从数据结构的角度,另一个是从图像处理的角度。让我们从数据结构的角度开始:假设现在我有一个由几个小项目组成的组件,如下面的类所示:
class Component
{
public:
struct Point
{
float x_;
float y_;
};
Point center;
Point bottom;
Point top;
}
在上面的例子中,Component 类是由 center、bottom 和 top(小项)等成员变量组成的。
现在我有一堆组件(组件的数量在 1000 到 10000 个之间),并且堆栈中的每个组件都被分配了不同的值,这意味着堆栈中没有重复的组件。然后,如果组件中的一个小项,例如图示类中的 'center' 是已知的,我们就可以在堆栈中找到唯一的组件。之后,我们可以检索组件中的其他属性。那么我的问题是,如何构建一个正确的容器数据结构来使搜索更容易?现在我正在考虑在STL(伪代码)中使用向量和查找算法:
vector<Component> comArray;
comArray.push_back( component1);
.....
comArray.push_back(componentn);
find(comArray.begin(), comArray.end(), center);
我想知道是否有更有效的容器来解决这个问题。
我也可以从图像处理的角度解释我的问题。在图像处理中,连接分量分析是物体识别的一个非常重要的步骤。现在对于我的应用程序,我可以获得图像中的所有连接组件,并且我还发现有趣的对象应该满足以下要求:它们的连接组件中心应该在特定范围内。因此,给定这个约束,我可以消除许多连接的组件,然后处理候选的组件。上述过程的关键步骤是在给定中心坐标约束的情况下如何搜索候选连通分量。任何想法将不胜感激。