2014-10-05 36 views
0

我需要循環遍歷圖像中彼此相鄰而不重複的所有(無序)像素對。我正在使用一個8點的鄰居。例如:在二維數組中循環遍歷所有相鄰對(2點簇)的高效算法

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像素的鄰居是在它周圍的3×3平方。因此,例如,gf形成2點集團。如果我要遍歷圖像的所有行和列,則該集團將被計數兩次,一次當中心像素爲時,一次爲中心像素時。其他派系也會出現類似的低效率問題。

所以我想要做的是循環所有的派系,而不是每個像素。如果我熟悉圖論,我認爲已經給出類似問題的一些答案就足夠了,但由於我不是,所以我非常感謝你以通俗易懂的方式用高效的算法提供的任何幫助。提前致謝!

回答

1

循環遍歷所有點的第一個點。內部循環右邊,左下角,右下角和右下角的第二個點(如果它們存在的話)。

+0

謝謝@David!這是一個非常簡單直接的方式。應該想到它。我糾結於試圖理解圖論和一般的集團問題:)。 – jmanring220 2014-10-05 02:43:02