将点转换为矢量线的算法。 (光栅到矢量)

Posted

技术标签:

【中文标题】将点转换为矢量线的算法。 (光栅到矢量)【英文标题】:Algorithm to convert points to vector lines. (Raster to vector) 【发布时间】:2017-03-24 10:36:10 【问题描述】:

如何将(我们可以假设)创建由线段组成的线(顶部图像)的点集转换为矢量线(底部图像)?

有一些算法吗?最好是 C++,但即使是伪代码也可以。

【问题讨论】:

它认为您对边缘检测技术感兴趣。 我是吗?我认为边缘检测会创建轮廓(轮廓)而不是线条。 为了澄清您可以访问确切的点集及其 x、y 位置? 是的。这组点通过洪水填充算法创建。用户选择颜色、容差、点击图像,程序会填充一些区域,该区域(大概)是一条线,我希望在其中有顶点。 使用细化(形态算子)然后采样点,然后应用连接组件分析。之后,只需区分线条和曲线并尽可能拟合/加入/合并。见Approximate a curve with a limited number of line segments and arcs of circles 【参考方案1】:

以下是我的处理方法:

创建光栅图像的轮廓/轮廓

将这些点用作矢量轮廓/轮廓

将这些点一分为二,得到一条描述原始轮廓顶部边缘的线和一条描述原始轮廓底部边缘的线

取底线(或顶线)并使用线简化算法(如 Reumann-Witkam 或 Douglas-Peucker)得到简化的矢量线

计算出线的偏移量,使其大致位于原始两个轮廓半部之间的中心。

这应该会给你合理的结果,而不需要太多的计算复杂度。

【讨论】:

以上是关于将点转换为矢量线的算法。 (光栅到矢量)的主要内容,如果未能解决你的问题,请参考以下文章

将矢量轮廓区域(边界)转换为光栅图(像素网格)

将大型光栅图形图像(位图、PNG、JPEG 等)转换为非矢量 postscript

一般打印光栅和/或矢量图像

将大矢量图像转换为二进制矩阵的快速方法

用光栅图像替换 PDF 中的矢量图像

从基于矢量的字体重建字符