我正在尝试合并包含由houghLinesP属于一起提取的行的向量。
到目前为止,我有一个包含线段的 Vector:
vector<Vec4i> lines;
Run Code Online (Sandbox Code Playgroud)
我还有一个算法可以检查线段是否足够相似以被认为属于其他线段(目前仅基于距离和角度):
vector<vector<Vec4i>> lineClusters;
for(Vec4i line1: sortedLines){
Point l1o = Point(line1[0], line1[1]);
Point l1d = Point(line1[2], line1[3]);
vector<Vec4i> cluster;
for(Vec4i line2: sortedLines){
Point l2o = Point(line2[0], line2[1]);
Point l2d = Point(line2[2], line2[3]);
if ((getDistance(l1o, l1d, l2o, l2d) <= 20) and
(abs(angle(l1o, l1d) - angle(l2o, l2d)) <= 10)) {
cluster.push_back(line2);
}
}
lineClusters.push_back(cluster);
}
Run Code Online (Sandbox Code Playgroud)
现在 VectorlineClusters为每个线段包含一个属于该线段的线段向量。
我现在面临的问题是如何合并这些向量。基本上我想合并包含至少一个重复线段的所有向量,以便最后只剩下几个集群。
在此图像中发现了黑色线段。我想将它们合并成行。我绘制的圆圈表示可能确定属于一起的线段,并由“lineClusters”内部的向量表示。(我没有把它们都画出来)
我真的不知道如何解决这个问题。有没有人对如何解决这个问题有任何想法?
编辑
为了使我的意图更明显,我添加了以下图像:
. 我正在尝试对线段进行分组以识别车道。
更新
通过调整确定线条片段是否属于一起的函数,可以明显改善结果。