我正在使用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
答案 0 :(得分:1)
(根据要求,将评论重新发布为答案。)
考虑加权你正在评估的正方形中心附近的像素,以及那些朝向边缘的像素,这将有助于对抗小的错位。你也可以尝试找到角落,然后调整图像,使角落形成一个完美的正方形,以帮助抵抗歪斜。