Graphics 将图像转换为直线和圆

Graphics 将图像转换为直线和圆,graphics,computer-vision,Graphics,Computer Vision,我需要能够将黑白图像转换成一系列直线(起点、终点)和圆(起点、半径)。我有一个恒定的“笔宽” (我使用的屏幕只能处理这种图形) 问题是,我不想让事情变得过于复杂——我可以用大量的小线条来表示任何图像,但画图会花费很多时间,所以我基本上想用这些线条和圆圈来“近似”图像 我尝试过几种方法(猜线、逐区域工作等),但如果不使用大量的线和圆,没有一种方法有任何合理的结果 你知道如何解决这个问题吗 提前谢谢 您没有指定您在这里使用的语言,但如果可能的话,我建议您使用OpenCV。如果不是的话,那么大多数体面

我需要能够将黑白图像转换成一系列直线(起点、终点)和圆(起点、半径)。我有一个恒定的“笔宽”

(我使用的屏幕只能处理这种图形)

问题是,我不想让事情变得过于复杂——我可以用大量的小线条来表示任何图像,但画图会花费很多时间,所以我基本上想用这些线条和圆圈来“近似”图像

我尝试过几种方法(猜线、逐区域工作等),但如果不使用大量的线和圆,没有一种方法有任何合理的结果

你知道如何解决这个问题吗


提前谢谢

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

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

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

现在,对于“打开”的边缘图像中的每个像素,您希望找到它所属的最长线段。有很多算法可以实现这一点,最简单的是概率Hough变换(openCV中也提供)来提取线段,这将使您能够控制最小长度、允许的间距等。您可能还需要检查其他方法,例如openCV源代码免费提供的方法


提取直线和圆后,您可以将它们打印到新图像中,或保存输出设备的坐标。

能否提供所需输入和输出的示例图像?