2012-05-04 64 views
0

我相信這件事已經存在,所以我想爲什麼重新發明輪子。迭代通過圖像像素的算法

有誰知道一個算法,將從左上角到右下角的圖像中的像素迭代。

所以首先它會檢查:(0, 0)

然後:(1, 0), (1, 1), (0, 1)

然後(2, 0), (2, 1), (2, 2), (1, 2), (0, 2)

...等等....

尋找最高效的算法,此問題。

謝謝。

+0

效率不在這裏。這只是一個for循環。不可能做得更好。 – ninjagecko

回答

3

看來你想以這種方式來遍歷:

1 4 9 
    ↑ ↑ 
2→3 8 
    ↑ 
5→6→7 

... 

這僅僅是一個for循環:

for radius in range(squareImage.width): 
    for col in range(radius): 
     yield (radius, col) 
    for row in range(radius): 
     yield (radius-row, radius) 
    yield (0, radius) 

效率是不是在這裏關心的問題。不可能比線性像素數量更好(像這樣),因爲你必須訪問每個像素。

+0

和這個的複雜性是O(N^2),我沒有看到你怎麼能做得比這更好。 – DarthVader

+0

@DarthVader:因爲需要O(N^2)個yield操作,所以不可能做得更好。 – sdcvvc

+0

@sdcvvc是的。那也是我說的:) – DarthVader