简单的BP网络识别液晶中的数字实验( 二 )


1.数字分割下面是桌面摄像头捕捉到的测量图片 , 通过简单的图片灰度投影 , 比较方便将显示数字所在图片中的位置定出 。 为了简单起见 , 也可以固定摄像头与LCD相对位置 , 这样手工定标出结果字符位置也可以适用于后面测量结果 。
简单的BP网络识别液晶中的数字实验文章插图
▲ 液晶数字显示以及数字部分
这个问题简单之处在于所有字符都是等宽 , 而且对比度非常好 , 简单的分离就可以将所有的字符单独分离出来 。 由于摄像头位置固定 , 所以简单分割之后的字符之后少量的上下左右平移 , 没有旋转 。 对于图片位置、尺寸就不再进行归一化 。 这些差异最后有神经网络来弥补 。
简单的BP网络识别液晶中的数字实验文章插图
▲ 分割出的数字
液晶显示字符的图片对比度很好 。 但就是有一个问题 , 在摄像头拍摄的时候 , 经常会遇到字符变化过程 , 这就会使得图片中字符呈现两个字符叠加的情况 。 下面是一些示例:
简单的BP网络识别液晶中的数字实验文章插图
▲ 数字变化过程的图片
这些过程 , 说实在的 , 即使人工识别也会无法分辨 。
后面通过人工输入标注了2000多个样本 。
2.图片二值化对于分割的图片进行二值化 , 可以消除环境光对于图片亮度的影响 。 在一定程度上 , 也可以消除液晶字符在变化时所引起的模糊 。
简单的BP网络识别液晶中的数字实验文章插图
简单的BP网络识别液晶中的数字实验文章插图
简单的BP网络识别液晶中的数字实验文章插图
<<< 左右滑动见更多 >>>
上面所有的字符的尺寸是23乘以38点阵 。
简单的BP网络识别液晶中的数字实验文章插图
1.构建网络和训练简单的实验 , 就用简单的方法 。 对于前面所得到的字符 , 不再人工定义它们的特征 。 仅仅将原来的彩色图片变换成灰度图像 , 然后排列成23×38=874维向量 。 然后增加一层中间隐层便组成了最简单的分类网络 。
net = patternnet(11)
简单的BP网络识别液晶中的数字实验文章插图
▲ 构造一个单隐层神经网络
将前面人工标注的样本一半用于训练 , 全部样本用于测试 。 下面给出了测试的结果 。
plotconfusion(xx, net(yy))
简单的BP网络识别液晶中的数字实验文章插图
▲ 训练结果
2.训练结果与分析整体的错误率大约为:ERR= 2.99% 。
下面是识别正确的字符 。
简单的BP网络识别液晶中的数字实验文章插图
▲ 识别正确的字符
下面给出了部分识别错误字符的情况 。 基本上都是一些拍摄到液晶字符在变化过程中的重叠字符情况 。 这些情况本身在人工标注的时候就存在模糊 。
简单的BP网络识别液晶中的数字实验文章插图
简单的BP网络识别液晶中的数字实验文章插图
<<< 左右滑动见更多 >>>
3.网络结构与错误率下面给出了网络的隐层节点个数与识别错误样本个数之间的关系 。 可以看到当中间隐层节点大于5之后 , 识别性能就不再有明显的变化了 。


推荐阅读