我想确定图像中大多数线条交叉的点。显然,这样的点可能不止一个,但为了简单起见,我只尝试了一个点。我正在尝试使用 Kmeans 聚类中内置的 OpenCV,但是该算法假设每个点都必须聚类,所以我得到了这样的结果:
显然,当出现更多线时,情况会变得更糟,因为每个交叉点都会偏移集群的中心我想要完成的是移除由于意外线交叉而出现的所有轮廓线,这在复杂场景中尤其成问题.
我在考虑DBSCAN,但似乎我需要自己从头开始实现它,因为它在 OpenCV 中不存在 - 我不想花额外的时间在我项目的核心部分之外,而是专注于主题的制作工具。有没有可以做我需要的图书馆?或者我正在考虑形式上的野蛮力量
for each point in list
find nearest neighbor
if distance > threshold
label as bad
if point already has label AND neighbor already has label
two sets collided, merge them
else if neighbor already has label
assign point.label = neighbor.label
else
point.label = new Label
neighbor.label = point.label
find mass center of each labeled set and replace set with it's center.