2021-07-08

山东大学暑期项目实训(五)

小组处理完部分图片后,发现效果并不理想,于是又去看了论文看看有没有新思路,没想到还真给我发现了一些,以下内容根据所看到的论文方法进行的归纳,论文参考基于卷积神经网络的箱号识别技术 和【python-opencv】17-形态学操作-腐蚀与膨胀

1.字符处理之腐蚀处理

得到的字符结果显示不明显,由于末尾的白框会影响字符的识别,为了提高识别的精确度,对分割后的末尾字符图像进行进一步处理。首先对末尾图像进行腐蚀处理。

  1. 腐蚀原理:腐蚀的效果是把图片"变瘦",其原理是在原图的小区域内取局部最小值。因为是二值化图,只有0和255,所以小区域内有一个是0该像素点就为02021-07-08_第1张图片
    这样原图中边缘地方就会变成0,达到了瘦身目的
    OpenCV中用cv2.erode()函数进行腐蚀,只需要指定核的大小就行:
img = cv2.imread('j.bmp', 0)
kernel = np.ones((5, 5), np.uint8)
erosion = cv2.erode(img, kernel)  # 腐蚀

这个核也叫结构元素,因为形态学操作其实也是应用卷积来实现的。
结构元素可以是矩形/椭圆/十字形,可以用cv2.getStructuringElement()来生成不同形状的结构元素,比如:

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))  # 矩形结构
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))  # 椭圆结构
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5))  # 十字形结构

2.字符处理之中值滤波处理

  1. 腐蚀过后的图像无论是箱号字符还是边框都只剩下骨架,有些边框甚至已经看不清了。之后再用中值滤波对图像进行过滤进一步去除干扰
    2021-07-08_第2张图片

3.字符处理之膨胀处理

  1. 膨胀与腐蚀相反,取的是局部最大值,效果是把图片"变胖":
dilation = cv2.dilate(img, kernel)  # 膨胀

4.膨胀之后的操作——继续二值化

经过膨胀过后,图像已经基本恢复了其原有的大小,但对比度还有待提升,为了
提升对比度,可以对图像进行二值化处理,一般图像进过二值化处理后,强显示
的地方会更强,而弱显示的地方将会更弱,即强者更强,弱者更弱,这样就可以
突出图像中需要获取的信息

5.开/闭运算

5.1开操作=腐蚀+膨胀,其作用是:分离物体,消除小区域。这类形态学操作用cv2.morphologyEx()函数实现:

2021-07-08_第3张图片

5.2闭运算= 先膨胀+腐蚀(先膨胀会使白色的部分扩张,以至于消除/"闭合"物体里面的小黑洞,所以叫闭运算)

2021-07-08_第4张图片

5.3二者作用

2021-07-08_第5张图片

6.总结

感谢论文参考[基于卷积神经网络的箱号识别技术]和【python-opencv】17-形态学操作-腐蚀与膨胀提供的思路,图像字符处理后期希望能找到更优化的方法。

你可能感兴趣的:(项目实训,opencv)