def estimate_local_whitelevel(image, zoom=0.5, perc=80, range=20, debug=0):
'''flatten it by estimating the local whitelevel
zoom for page background estimation, smaller=faster, default: %(default)s
percentage for filters, default: %(default)s
range for filters, default: %(default)s
'''
m = interpolation.zoom(image, zoom)
m = filters.percentile_filter(m, perc, size=(range, 2))
m = filters.percentile_filter(m, perc, size=(2, range))
m = interpolation.zoom(m, 1.0/zoom)
if debug > 0:
plt.clf()
plt.title("m after remove noise")
plt.imshow(m, vmin=0, vmax=1)
raw_input("PRESS ANY KEY TO CONTINUE.")
w, h = np.minimum(np.array(image.shape), np.array(m.shape))
flat = np.clip(image[:w,:h]-m[:w,:h]+1,0,1)
if debug > 0:
plt.clf()
plt.title("flat after clip")
plt.imshow(flat,vmin=0,vmax=1)
raw_input("PRESS ANY KEY TO CONTINUE.")
return flat
评论列表
文章目录