我正在使用Python 2.7和PIL(pillow)。
我有一个脚本,可以将相对较粗糙的迷宫图像变成更干净、更小的图像。以下是样例输入和输出:
这张图片是由以下图片生成的:
在这种情况下,脚本并不完美,但效果还不错。
然而,相同迷宫的另一张图片却得到了这个结果:
这个效果相对较差。
我通过查看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