代码之家  ›  专栏  ›  技术社区  ›  Rune Grimstad

矢量化图像

  •  3
  • Rune Grimstad  · 技术社区  · 15 年前

    我正在尝试从位图图像中的一个区域生成一个矢量图形,虽然我当前的算法在大多数情况下都有效,但它有一些问题,而且速度非常慢。

    所以我想知道你们是否知道一些简单的算法或代码示例如何有效地实现这一点。

    我的情况很简单。我有一个位图图像,有几个平坦均匀的区域。我希望将这些区域转换为一组点,以便稍后将它们重新创建为矢量图形。我永远不会有重叠的形状,形状总是封闭的,它们总是一种颜色(所有像素的RGB值相同),因此很容易确定轮廓,但有效地确定轮廓更难。

    理想情况下,我希望有一个在.NET中工作的解决方案,但伪代码也应该可以很好地工作。也许你们知道一些关于图像处理的好资源?

    再次编辑:所以我想要的是一个算法或一个库,它会给我一个点或向量列表,描述图像中的每个区域,而不是向量化图像本身。

    5 回复  |  直到 15 年前
        1
  •  4
  •   Liudvikas Bukys    15 年前

    由于对象是不同的,因此可以运行连接组件标签的算法。 这个 wikipedia article

        2
  •  3
  •   Adam Davis    15 年前

    我会做一个泛光填充算法来找到每个斑点的边,并为每个斑点的每个边点生成一个向量的多边形。这将为您提供多边形,其角数与水滴周围的像素数相同。

    然后我会查找多边形简化例程,例如,一组向量位于同一条线上,并删除所有中点。

    整体填充也不是完全必要的-只需从当前像素中搜索相邻像素(有8个相邻像素),然后使用右手边跟随填充多边形点。

    它应该相对较快,尽管多边形将非常复杂,除非你有一个非常好的简化例程。

    -亚当

        3
  •  1
  •   Community skywinder    7 年前

    只是为了开个玩笑,跳出框框思考一下,我尝试了使用运动检测非常成功。我有一张有三个圆圈的白色照片。

    使用此web cam运动检测程序的源代码( http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx )我得到了所有3个圆的区域,可以很容易地绘制它们。 根据您使用的wich检测算法,您可以具有不同的详细程度(如下面的示例图片所示):

    alt text

    alt text

        4
  •  0
  •   Community skywinder    7 年前

    您可能也对以下内容感兴趣: this 遗传算法。

        5
  •  0
  •   hurrymaplelad    13 年前

    This paper 比较了几种流行的技术。我不认为算法简单,但处理是彻底的。