图像中有多少k个相邻像素的组合?

时间:2010-07-08 19:15:12

标签: language-agnostic combinatorics combinations markov-chains neighbours

我吮吸数学,所以我无法弄明白:图像中有多少k个相邻像素的组合?对于从2到n * n的每个k,图像中n * n个总像素中的k个像素的组合,但具有它们必须是邻居的限制。我需要一个程序的所有k值的总和,它必须考虑到它所推理的集合中的许多元素。

邻居是4连接的,不包裹。

3 个答案:

答案 0 :(得分:2)

一旦获得大小为k(here's a reference)的像素blob的不同形状的数量,那么它归结为两件事:

  • 你可以在图像上放置多少种方法来填充这个blob?
  • 这些中有多少是相同的,因此您不会重复计算(因为对称性)?

获得一个确切的答案是一项巨大的计算工作(对于k = 56,您正在寻找超过10 ^ 30个不同的形状 - 想象如果k = 10,000)但是您可能能够满足您的需要通过拟合k的前50个值。

(注意:维基百科文章中的参考文件通过对A_k的定义来处理重复。)

答案 1 :(得分:2)

您似乎正在处理可以映射到Markovian Walks的问题。

如果我理解你的问题,那你就是想像这样计算长度为k的路径:

Start          (end)-> any pixel after visiting k neighbours
*     - - - - -*
|     |
|     |
- - - -

在类似于棋盘的结构中,并且您只想连接垂直和水平邻居。

我认为您希望路径是自我避免的,这意味着在步行中不应遍历两次像素(意味着没有循环)。这种情况导致了一个称为SAW(Self Avoiding Walks)的经典问题。

好吧,现在坏消息:问题是开放的!没有人解决它。

你可以找到一个很好的问题介绍here,从第54页开始(或第16页,由于页码在文档中重复,因此计数令人困惑)。但整篇论文非常有趣且易于阅读。它设法在几张幻灯片中解释马尔可夫链的数学背景,历史轶事和科学重要性。

希望这有助于......避免这个问题。

答案 2 :(得分:1)

如果你打算迭代所有可能的polyominos,我恐怕你会等很长时间。从维基百科站点关于polyominos,它将至少是O(4.0626 ^ n)并且可能更接近O(8 ^ n)。到n = 14时,计数将超过50亿,而且太大而无法适应int。到n = 30的时间,计数将超过17个,并且你将无法将它装入长时间。如果所有世界各国政府将他们的资源集中在一起,以32 x 32图标迭代所有多边形,他们将无法在太阳升起超新星之前做到这一点。

现在这并不意味着你想做的事情是难以处理的。你在一个多项式上做的几乎所有工作都可能部分完成在其他工作上。使用动态编程进行指数加速可能是一项有趣的任务。你想要完成什么?