我正在尝试根据像素数和周围像素计算出构建网格的算法。例如,假设我有200个随机像素。我有像素a,我可以参考它周围的每个像素。这适用于所有像素。本质上,每个像素都是拼图块,每个像素都有对其所有邻居的引用。如何以编程方式创建像素网格(完成的拼图)给出该信息
答案 0 :(得分:0)
假设你的
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)
的计数,以了解您需要为网格分配多少内存。
此算法具有线性运行时并且需要恒定的额外空间,因此它应该是最佳的。