将图片转换为直线和圆

时间:2015-05-06 06:51:37

标签: graphics computer-vision

我需要能够将黑白图像转换为一系列线条(起点,终点)和圆圈(起点,半径)。我的“笔宽”是恒定的。

(我正在使用只能使用这种图形的屏幕。)

问题是,我不想过于复杂化 - 我可以用大量的线条来表示任何图像,但绘制需要花费很多时间,所以我基本上想要使用那些“近似”图像线条和圆圈。

我尝试了几种方法(猜测线条,按区域划分工作区域等)但没有使用大量的线条和圆圈都没有任何合理的结果。

关于如何解决这个问题的任何想法?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您没有指定您在这里工作的语言,但如果可能,我建议使用OpenCV。如果没有,那么大多数体面的CV库都应该支持我将在这里描述的功能。

您不会说输入是否已由简单形状(线条和多边形)组成。假设它不是,例如它是视频中的照片或帧,您需要进行一些边缘提取以找到您要建模的线条。使用Canny或其他边缘检测器将图像转换为一系列线。

我建议您然后提取圈子,因为它们是您可以直接建模的最丰富的功能。您应该考虑使用霍夫圆变换来定位边缘图像中的圆。找到它们后,您需要将它们从边缘图像中删除(以避免在下面的线处理部分中重复它们)。

现在,对于边缘图像中的每个像素,'''你想找到它所属的最长的线段。有许多算法可以做到这一点,最简单的是概率霍夫变换(也可以在openCV中使用)来提取线段,这将使您可以控制最小长度,允许间隙等。您可能还想检查像{{{{{{ 3}}具有免费提供的OpenCV源代码。

提取线条和圆圈后,您可以将它们绘制成新图像或保存输出设备的坐标。