如何使用python去除图像中的污点?

如何使用python去除图像中的污点?,python,image,image-processing,Python,Image,Image Processing,我正在制作一个脚本,从扫描图像中去除斑点,如噪声和对比度,但现在我想从图像中去除污点,但有什么好方法来处理这个问题 这是我想去除污渍的图像示例: 我想去除污点,但不会丢失太多图像细节,因为我需要能够看到线条和文本。由于imag只有黑色和白色,您可以尝试对其进行二值化。有很多方法可以做到这一点,但是scikit图像包有一个选项可以查看应用多个阈值的结果: import matplotlib.pyplot as plt from skimage import io from skimage.fil

我正在制作一个脚本,从扫描图像中去除斑点,如噪声和对比度,但现在我想从图像中去除污点,但有什么好方法来处理这个问题

这是我想去除污渍的图像示例:


我想去除污点,但不会丢失太多图像细节,因为我需要能够看到线条和文本。

由于imag只有黑色和白色,您可以尝试对其进行二值化。有很多方法可以做到这一点,但是scikit图像包有一个选项可以查看应用多个阈值的结果:

import matplotlib.pyplot as plt
from skimage import io
from skimage.filters import try_all_threshold

img = io.imread('your_img')

fig, ax = try_all_threshold(img, figsize=(10, 8), verbose=False)
plt.show()
编辑:二值化仅适用于灰度图像,因此您应该将图像转换为黑白:

import matplotlib.pyplot as plt
from skimage import io
from skimage.filters import try_all_threshold
from skimage.color import rgb2gray

img = io.imread('your_img')
img = rgb2gray(img)

fig, ax = try_all_threshold(img, figsize=(15, 15), verbose=False)
plt.show()
结果附在这里

当然,您也可以尝试应用自己的阈值。最好检查图像的直方图以查看阈值的最佳值