我正在进行车牌识别。我裁剪了盘子,但它非常模糊。因此我无法拆分出数字/字符并识别它。
这是我的图片:
我已尝试通过使用 scikit 图像 函数对其进行降噪。
首先,导入库:
import cv2
from skimage import restoration
from skimage.filters import threshold_otsu, rank
from skimage.morphology import closing, square, disk
然后,我读取图像并将其转换为灰度
image = cv2.imread("plate.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
我尝试去除噪音:
denoise = restoration.denoise_tv_chambolle(image , weight=0.1)
thresh = threshold_otsu(denoise)
bw = closing(denoise > thresh, square(2))
我得到的是:
如您所见,所有数字都混合在一起。因此,我无法将它们分开,无法一一识别。
我期望的是这样的(我画的):
我正在寻求帮助,如何才能更好地过滤图像?谢谢。
============================================= ====================== 更新:
使用skimage.morphology.erosion
后,我得到:
最佳答案
首先,这张图片看起来更像是模糊而不是噪声,所以没有充分的理由对其进行降噪,尝试去模糊。
最简单的是逆向过滤,甚至是维纳过滤。然后你需要通过亮度级别将图像的背景与字母分开,例如使用分水岭算法。然后你会得到单独的字母,你需要通过一个分类器,例如,基于神经网络(即使是简单的前馈网络也可以)。
然后您将最终获得文本表示。这就是通常进行此类识别的方式。 有好的book by Gonzalez&Woods ,尝试在那里寻找详细的解释。
关于python - 去噪和过滤图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38820743/