0
我想找出一個算法,建立一個網格,基於像素和周圍像素的數量。例如,假設我有200個隨機像素。我有像素a,並且可以獲取對其周圍每個像素的引用。這適用於所有像素。實質上,每個像素都是拼圖塊,每一塊都有其所有鄰居的參考。如何編程方式創造鑑於信息我如何以編程方式創建一個像素網格給定只有像素鄰居
我想找出一個算法,建立一個網格,基於像素和周圍像素的數量。例如,假設我有200個隨機像素。我有像素a,並且可以獲取對其周圍每個像素的引用。這適用於所有像素。實質上,每個像素都是拼圖塊,每一塊都有其所有鄰居的參考。如何編程方式創造鑑於信息我如何以編程方式創建一個像素網格給定只有像素鄰居
假設你
top
,left
,bottom
和right
(到周圍像素的參考文獻)和您的grid
,你可以做如下:
def pixel_graph_to_grid(pixels):
if len(pixels) == 0:
return [[]]
# (1) Finding the top left pixel.
p = pixels[0]
while p.top:
p = p.top
while p.left:
p = p.left
# (2) Go row-wise through the image.
grid = []
first_of_row = p
while True:
p = first_of_row
row = [p]
while p.right:
p = p.right
row.append(p)
grid.append(row)
if first_of_row.bottom:
first_of_row = first_of_row.bottom
else:
break
你也可以做一些計算類似(1)
知道你有多大的內存來分配的網格。
該算法具有線性運行時間並且需要恆定的額外空間,所以它應該是最優的。
是否以任何方式訂購參考?一塊拼圖不只是告訴你它連接了哪一個,而是以什麼順序。這將使構建外部邊界相對容易,然後向內工作。 – Tommy
其實沒有,沒有有限的邊界,只有一個包含ID的對象(像素)數組,以及4個引用其他像素,每個方向一個 – user379468
你能解釋一下「每個像素是拼圖塊」嗎? – cuongptnk