我想确定图像中大多数线交叉的点。显然,可以有不止一个这样的观点,但为了简单起见,我只想尝试一点。我尝试使用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.
答案 0 :(得分:0)
您可以在python中使用Sklearn库。它有许多其他算法
http://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html