我需要能够将黑白图像转换成一系列的线(起点,终点)和圆(起点,半径)。我有一个恒定的“笔宽”。
(我正在使用一个只能处理这种图形的屏幕)。
问题是,我不想让事情变得过于复杂-我可以用大量的小线条来表示任何图像,但绘制它会花费很多时间,所以我基本上想用这些线条和圆圈来“近似”图像。
我尝试了几种方法(猜测线条,逐区域工作,等等),但没有一种方法在不使用大量线条和圆圈的情况下取得了任何合理的结果。
有没有关于如何处理这个问题的想法?
提前感谢!
发布于 2015-05-06 15:29:26
您没有指定您在这里使用的语言,但如果可能的话,我建议您使用OpenCV。如果不是,那么大多数像样的简历库都应该支持我在这里将要描述的特性。
您不需要说明输入是否已经由简单的形状(线和多边形)组成。假设它不是,例如,它是一张照片或视频中的帧,你需要做一些边缘提取来找到你要建模的线条。使用Canny或其他边缘检测器将图像转换为一系列线条。
我建议你提取圆,因为它们是你可以直接建模的最丰富的特征。您应该考虑使用Hough Circle变换来定位边缘图像中的圆。一旦找到了它们,就需要从边缘图像中删除它们(以避免在下面的行处理部分中重复它们)。
现在,对于边缘图像中的每个'on‘像素,您需要找到它所在的最长线段。有许多算法可以做到这一点,最简单的是概率霍夫变换(也可在OpenCV中使用)来提取线段,这将使您能够控制最小长度,允许的间距等。您可能还想检查替代方案,如LSWMS,它具有免费的OpenCV源代码。
一旦提取了直线和圆,就可以将它们绘制为新图像或为输出设备保存坐标。
https://stackoverflow.com/questions/30069541
复制相似问题