提高缩小图像的准确性

Improve accuracy of scaling down image

我正在使用 Python 2.7 和 PIL(枕头)

我有一个脚本可以拍摄相当粗糙的迷宫图像,并制作出更干净、更小的图像。示例输入和输出:

根据这张图片生成的图片:

在那种情况下,脚本不能完美运行,但运行良好。

然而,同一个迷宫的 another image 产生了这个结果:

这不太好。

我通过查看 16x16 网格上每个方块的平均值来生成并排显示的图像,然后确定该方块是主要代表黑色像素还是主要代表白色像素。然而,由于透视变换并不完美,方块并不总是排成一行。

是否有任何有助于提高准确性的算法?有什么方法可以查看不是完全正方形块的网格正方形?

我的一段代码:

#This image is already transformed and thresholded, like the first half of my side-by-side images
thresh = Image.open('Thresholded_Image.jpg')
pixsize = thresh.size[0]/16
segments = []
for i in range(16):
    for j in range(16):
        box = (j*pixsize,i*pixsize,(j+1)*pixsize,(i+1)*pixsize)
        segments.append(thresh.crop(box))
def blackWhite(image):
    '''Return `True` if the image is mostly white, else `False`'''
    l=image.convert('L').load()
    w,h=image.size
    lums=sum([[l[x,y] for x in range(w)] for y in range(h)],[])
    return sum(lums)/float(len(lums))>127
whites = []
for y in range(16):
    for x in range(16):
        seg = segments[16*y+x]
        if blackWhite(seg):
            whites.append((x,y))

maze = Image.new('L',(16,16))
l=maze.load()
for w in whites:
    x,y=w
    l[x,y] = 255

(应要求,转发评论作为回答。)

考虑对靠近您正在评估的正方形中心的像素加权,而对靠近边缘的像素加权较少 - 这将有助于解决小的未对齐问题。您也可以尝试定位角点,然后调整图像,使角点形成一个完美的正方形,以帮助防止偏斜。