0

我正在读取图像文件并存储每个点的位置。然后我将这些点组合在一起以找到直线、水平线和斜坡线。然后,对于这些段中的每一个,我添加诸如 x 和 y 轴的开始和结束、其高度、宽度等特征。在我以前的版本中,我创建了一个多维向量来实现上述功能。然后我使用 find_if 来查找附近的段。

我以前的实现:

newSequence = find_if( points.begin(), points.end(), [&](vector<int>&v1) -> bool 
{ 
    return  
    v1[0]   >=  index_a1    &&  
    v1[0]   <=  index_a2    &&
    v1[1]   >=  index_b1    &&
    v1[1]   <=  index_b2    &&
    v1[4]   !=  index_a4    &&  
    v1[8]   ==  index_a8;
}); 

它有效,但现在我想提高它的性能并正在研究 binary_search 和 lower_bound 但它会引发错误。

vector <vector<int>>::iterator newSequence;
vector <vector<int>> points;
newSequence = lower_bound( points.begin(), points.end(),[](vector<int>&v1)->bool{
                    return v1[0] = 1;
                    });

我还想知道是否有更好的存储和搜索这种超过 4 列的数据的方法。

4

2 回答 2

2

几年前我遇到了一个图像处理问题(使用道格拉斯普克算法)并且我遇到了严重的性能问题。它永远运行。然后我改为使用空间索引库,然后它立即运行。我可以检查哪个。因此,如果您真的想提高性能,请选择空间索引。

于 2013-08-09T17:01:04.533 回答
0

如果您查看例如this reference,您将看到该std::lower_bound函数采用一个进行比较。你没有通过那个。为此,您不能使用例如std::lower_bound,但必须使用其他算法。

于 2013-08-09T16:49:52.200 回答