【问题标题】:Turn an image into lines and circles将图像变成线条和圆圈
【发布时间】:2015-07-16 03:57:47
【问题描述】:
我需要能够将黑白图像转换为一系列线条(起点、终点)和圆(起点、半径)。我有一个恒定的“笔宽”。
(我正在使用只能处理这种图形的屏幕)。
问题是,我不想让事情变得过于复杂——我可以用大量的小线条来表示任何图像,但是绘制需要很长时间,所以我基本上想用这些来“近似”图像线条和圆圈。
我尝试了几种方法(猜测线条、逐个工作区域等),但如果不使用大量线条和圆圈,都没有任何合理的结果。
知道如何解决这个问题吗?
提前致谢!
【问题讨论】:
标签:
graphics
computer-vision
【解决方案1】:
您没有指定您在此处使用的语言,但如果可能的话,我建议您使用 OpenCV。如果不是,那么大多数体面的 CV 库应该支持我将在此处描述的功能。
您不会说输入是否已经由简单的形状(线和多边形)组成。假设它不是,例如,它是来自视频的照片或帧,你需要做一些边缘提取来找到你要建模的线条。使用 Canny 或其他边缘检测器将图像转换为一系列线条。
我建议您然后提取圆,因为它们是您可以直接建模的最丰富的特征。您应该考虑使用霍夫圆变换来定位边缘图像中的圆。找到它们后,您需要将它们从边缘图像中移除(以避免在下面的线处理部分中重复它们)。
现在,对于边缘图像中“打开”的每个像素,您都希望找到它所属的最长线段。有许多算法可以做到这一点,最简单的是概率霍夫变换(也可在 openCV 中使用)来提取线段,这将使您能够控制最小长度、允许的间隙等。您可能还想检查诸如 @987654321 之类的替代方案@ 提供免费的 OpenCV 源代码。
提取线和圆后,您可以将它们绘制成新图像或保存输出设备的坐标。