在日常生活中,我们经常会扫描纸张把它们转换成图像,但这些图像往往存在阴影,我们有各种各样的工具可以在线增强这些图像,使它们的亮度更亮,并消除这些图像中的阴影。那有没有方法可以手动去除阴影呢?比如我们可以将任何图像作为灰度图像加载到我们的代码中,并在几秒钟内获得输出,而无需任何应用程序的帮助。
这是可以通过使用基本的Numpy操作和一些openCV函数来实现。我们使用了下面的图片作为例子,它是用手机拍的。
很明显,它有一个阴影需要删除。
将必要的软件包导入你的环境。为了易于显示图像,我们使用Jupyter Notebook。
import cv2
import numpy as np
import matplotlib.pyplot as plt
删除阴影时,有两件事要注意。(1)由于图像是灰度图像,如果图像背景较浅且对象较暗,则必须先执行最大值滤波,然后再执行最小值滤波;(2)如果图像背景较暗且物体较亮,我们可以先执行最小值滤波,然后再进行最大值滤波。
那么,最大值滤波和最小值滤波