给定图像上的一组点,我想检测一组对齐点,如图所示:
我该怎么做?任何帮助将不胜感激。
答案 0 :(得分:5)
这是Hough Transform的一个很好的潜在应用。线的霍夫空间是(r,\ theta),其中r是从原点到线上最近点的距离,\ theta是它的方向。
如在Wiki文章中所示,x-y空间中的每个点在霍夫空间中变成正弦曲线。
所有正弦曲线相交的位置对应于穿过所有点的单条线。如果这些点不是完全共线的,则交点将是“模糊的”。
将线拟合到点的最简单算法是使矩形(r,\ theta)累加器阵列最初设置为零。然后跟踪每个点的正弦曲线到这个离散的(r,\ theta)空间,将每个累加器元素递增一个固定的量。通过查找大型数组元素来查找预期的线条拟合。元素坐标给出拟合的(r,\ theta)。
追踪正弦曲线非常简单。如果在\ theta轴上有T个累加器箱,则每个对应于角度k(\ pi)/ N,对于某些0 <= k <1。 T.因此,对于此范围内的k,计算从原点到最近点的距离,此方向通过该点。这提供了r值。如果R轴上有R个区间且Rmax是r的最大值,则增加bin(floor(r / rMax * R),k)。
答案 1 :(得分:3)
首先,你可以试试这个:
列出所有可以通过选择其中任意两个点形成的行(n(n-1)/2
点n
点。
对于这两行中的任何一行,检查它们是否对齐(即坡度差在10度内)。
对于每个对齐的对线,您可以轻松检查其他点是否也在这些线上对齐。这些要点将是您需要的对齐点。