data-structures - 基于像素的模式识别的数据结构

标签 data-structures pattern-matching

我有一个基于约束构造随机图像的应用程序。随机选择不同颜色的像素并将其放置在满足所有约束的网格中。例如(简化),可能有一个约束,说明如果蓝色或绿色像素位于 (0,-1),红色像素位于 (-1,-1) 和 (-1, 0),然后放置禁止使用白色像素。这些坐标是来自当前放置位置(即其邻域)的向量。

现在我将约束存储在一个数组中并遍历它们,检查每个约束是否适用。我必须为放置在网格中的每个像素执行此操作。因此,随着添加更多约束,性能会受到影响。此外,两个约束可能会发生冲突,但检查起来并不容易。

我认为图形类型数据结构(树?)可能是一种存储所有约束的方法,这样我就可以从像素邻域中快速确定哪些(如果有)约束适用。但是我不太清楚如何使这样的结构工作,因为单个坐标可以包含多种颜色,以及如何将一组坐标/颜色与一组禁止的像素颜色联系起来。有任何想法吗?

最佳答案

您可以使用图形切割来解决这个问题。它甚至会处理提到的冲突。这基本上是它的工作原理:它尝试根据您希望最小化的成本函数分配标签。对于您的情况,成本函数可能类似于:

E(x)=infinite ; if constraint is violated
and  0        ; otherwise

Graph cut 将分配最小化此成本函数的标签。另外,它非常快速和高效,并且会收敛到最小值。看看以下两个引用:
  • Graph cuts for energy Minimization
  • Code for implementing graph cut

  • 第二个链接提供了图形切割的现成代码,您可以在其中使用自己的成本函数,该函数将被最小化(并且可以依赖于您的情况的邻居值)。

    关于data-structures - 基于像素的模式识别的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29686140/

    相关文章:

    c# - 如何逻辑排序字符串

    java - 如何高效返回半径内的道路

    JavaScript Regex - 匹配包含一些字符但不包含其他字符的字符串

    Javascript - 删除 Json 对象中的特殊字符和关联字符串

    database-design - 使用 Redis 的通知和新闻区

    java - 具有来自 List<List<String>> 的频率计数的唯一值

    java - 使用嵌套 HashMap 实现 TRIE?

    erlang - 匿名函数和模式匹配

    regex - PostgreSQL 正则表达式

    c++ - 仅 block 的 HoG 特征