提高缩小图像的准确性

时间:2015-11-01 17:48:43

标签: python python-2.7 image-processing python-imaging-library

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

我有一个脚本,可以拍摄相当粗糙的迷宫图像,并制作更清晰,更小的图像。样本输入和输出:

Sample

这是从这张图片生成的:

This one

在这种情况下,脚本不能很好地工作,但工作得很好。

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

less good

那不太好。

我通过查看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

1 个答案:

答案 0 :(得分:1)

(根据要求,将评论重新发布为答案。)

考虑加权你正在评估的正方形中心附近的像素,以及那些朝向边缘的像素,这将有助于对抗小的错位。你也可以尝试找到角落,然后调整图像,使角落形成一个完美的正方形,以帮助抵抗歪斜。