用于在2-D阵列中循环所有邻居对(2点集团)的高效算法

时间:2014-10-05 00:42:08

标签: c algorithm image-processing graph-theory clique-problem

我需要遍历彼此相邻的图像中的所有(无序)像素对而不重复。我正在使用8点邻居。例如:

  x,y| 0   1   2   3   4
  ---+---+---+---+---+---+
   0 |   |   |   |   |   |
     +---+---+---+---+---+
   1 | a | b | c | d |   |
     +---+---+---+---+---+
   2 | e | f | g | h |   |
     +---+---+---+---+---+
   3 | i | j | k | l |   |
     +---+---+---+---+---+
   4 |   |   |   |   |   |
     +---+---+---+---+---+

像素 f 的邻居在它周围的3x3方格中。因此, g 例如与 f 形成一个2点集团。如果我要遍历图像的所有行和列,这个集团将被计数两次,一次当 f 是中心像素时,一次当 g 是中心时像素。其他集团也会出现类似的低效率。

所以我想做的是循环所有派系,而不是每个像素。如果我熟悉图论,我认为已经给出类似问题的一些答案就足够了,但是我不是,我真的很感激你能用外行的术语中的有效算法给予任何帮助。提前谢谢!

1 个答案:

答案 0 :(得分:1)

在所有点上循环第一个点。内圈循环右边,左下角,右下角和右下角的第二个点(如果它们存在)。