本文主要介绍目前主流的adaboost目标检测算法,和CNN卷积神经网络字符识别算法。以扑克牌识别技术为题介绍相关的开发流程和经验。
整个系统包括,
1、摄像头采集,这里以USB摄像头通过directShow采集为例进行介绍。一个线程做采集,一个线程做检测识别。
2、字符检测正负样本得取。后面会详细介绍怎么在只有视频的情况下,
(1)自己写个鼠标拉框手工割取样本的软件,采用OpenCV的鼠标相应控件很容易实现。
(2)或者通过灰度化,自适应二值化,ROI找轮廓,轮廓筛选,ROI轮廓分割,自动割取样本;
(3)以及通过pictureRelate进行重复高样本自动剔除等等筛选。
3、adaboost字符检测:
(1)用adaboost+haar特征训练第2步中得取的样本。
(2)进一步将测试分割出的误识别样本,进行筛选,重复2,3两步。直到获得满意的检测率。
4、识别样本得取
(1)字符识别样本读取,分为0-10,JQK,共14个类别。
(2)花色样本得取,共桃杏梅方四个类。
5、采用CNN组进行样本训练识别。这里为了提高识别率,采用两个CNN分别识别4.1和4.2,采用两个CNN并行思路提升识别速度。
(1)针对4.1的14各类,训练一个CNN分类器;
(2)针对4.2的4各类训练一个CNN分类器。
在介绍系统之前先对本文涉及的两大算法做简要的介绍:
1、adaboost算法实例介绍,这里不上理论,直接来实例对照着学boosting的思路。
http://www.sigvc.org/bbs/thread-727-1-1.html
2、CNN算法详细介绍。
http://www.cnblogs.com/tornadomeet/archive/2013/05/05/3061457.html