如何仅以邻居像素

时间:2017-02-07 21:10:50

标签: algorithm sorting pixels

我正在尝试根据像素数和周围像素计算出构建网格的算法。例如,假设我有200个随机像素。我有像素a,我可以参考它周围的每个像素。这适用于所有像素。本质上,每个像素都是拼图块,每个像素都有对其所有邻居的引用。如何以编程方式创建像素网格(完成的拼图)给出该信息

1 个答案:

答案 0 :(得分:0)

假设你的

  • 输入是一个像素列表,每个像素都有topleftbottomright属性(对周围的参考)像素)和你的
  • 输出将是像素的二维数组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)的计数,以了解您需要为网格分配多少内存。

此算法具有线性运行时并且需要恒定的额外空间,因此它应该是最佳的。