我试图从人体躯干模型照片中生成的一组2D点中提取水平线:
要点"主要是"以或多或少规则的方式形成水平(ish)线,但可能存在间隙/缺失点:
可能存在线条变形的区域:
当然我需要调整一些东西,以便排除那些有缺陷的部分。我正在寻找的这个问题是建议的算法,以找到行为良好的行,填充最终的间隙,避免最终的噪音,并在一些不连续条件下正确终止行。
我相信可以进行一些优化或投票"洪水填充"这个变种会对候选人进行评分,并且只会产生良好的线条,但我对此并不熟悉,也无法自己解决任何问题。
此数据集为in a gist here,重要的是要注意X坐标是整数,因此点垂直对齐。 Y坐标虽然是十进制数。
答案 0 :(得分:1)
我首先找到每个点的最近邻居,然后是另一边的第二个最近邻居 (我的意思是只考虑与第一个邻居相反的半平面中的点)。 / p>
如果到第二个邻居的距离超过第一个邻居的距离的两倍,则忽略它。
这样做,我打赌你会重建大量的曲线,而且还有空隙。
通过估计沿曲线的局部曲率(f.i.通过计算三个点的外接圆,取其他每个点,你可以丢弃嘈杂的部分。
然后,为了填补间隙,您可以检测曲线端点,并在外推方向周围的角度中查找最近的端点。
处理的第一步:
答案 1 :(得分:0)
这些是表示方向模式的矢量字段的integral curves。
因此,可以首先通过从邻域中获取点并使用LS拟合线或执行PCA来找到每个点的斜率矢量(主要方向)。增加邻域半径应该可以处理数据不规则性,从而获得更大规模的斜率趋势,而不是局部噪声。
如果您决定这样做,您可以在这里发布您找到的斜率字段,那么我们可以看到一些切线而不是点吗?