问题描述
并应用以下代码后:
key
图片变成
有没有一种方法可以使结果更好?
解决方法
是的,您可以获得更好的结果:
您确实考虑了噪声,但是您应用的高斯模糊太强了;它会逐渐淡化您感兴趣的功能(字母)。
正如@Ziri在评论中指出的那样,您并不能解释图像中存在的曝光不均。有很多方法可以做到这一点。我将使用滚动球滤镜来平滑背景,并将其与全局阈值方法结合起来。请注意,这是目前(2020年8月)skimage中的PR,但希望很快会被合并。
import numpy as np
import matplotlib.pyplot as plt
from skimage import util
from skimage import filters
from skimage import io
from skimage import exposure
# PR 4851; will hopefully be in the library soon(TM)
from skimage.morphology import rolling_ellipsoid
img = io.imread("test.jpg",as_gray=True)
img_inv = util.invert(util.img_as_float(img))
# blurr the image slightly to remove noise
blurred = filters.gaussian(img_inv,sigma=1.0)
# remove background
background = rolling_ellipsoid(blurred,kernel_size=(50,50),intensity_vertex=0.1)
normalized = blurred - background
# re-normalize intensity
normalized = exposure.rescale_intensity(normalized)
# binarize
binary = normalized > 0.38
binary = util.invert(binary)
plt.imshow(binary,cmap="gray")
plt.gca().axis("off")
plt.show()
旁注:将未经审查的护照照片上传到SO,任何人都可以免费访问它,这是不明智的。