我正在进行牌照识别。我已经裁掉了盘子,但它非常模糊。因此,我无法拆分数字/字符并识别它。
这是我的形象:
我尝试使用 scikit image 功能去噪。
首先,导入库:
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
后,我得到了:
答案 0 :(得分:6)
首先,这个图像似乎比模糊更加污损,而不是noize,所以没有充分的理由对其进行去噪,而是尝试去除。
最简单的是反向滤波甚至是维纳滤波。然后,您需要通过光度级别将图像的背景与字母分开,例如使用分水岭算法。然后,您将获得单独的字母,您需要通过其中一个分类器,例如,基于神经网络(即使是简单的前馈网也可以)。
然后你终于得到了文字表达。这就是通常如此认可的方式。 有好的book by Gonzalez&Woods,试着在那里寻找详细的解释。
答案 1 :(得分:1)