答题卡图像识别html
需求分析、市场分析和技术实现算法
P.S 博客发布以来,得到多方的关注。相关内容我已经以教程的形式进行了整理发布(包括算法、硬件搭建和软件框架),若是须要请移步
网络
http://edu.51cto.com/course/course_id-8637.html框架
固然,若是具有必定基础,那么阅读本文就应该可以掌握足够的信息了。函数
1、需求分析工具
1、以接口的方式开发此需求:性能
1:接收图片开发工具
以上传的方式把图片发送到接口。优化
2:识别图片spa
接口接收到图片后,进行图像识别。
3:返回数据
返回识别后的JSON格式数据。
2、答题卡图片识别的具体要求:
图片是经过手机、相机、扫描仪等设备拍照而来,其中手机、相机拍出的照片会出现像素低、图像不正、聚焦不清楚等问题;
1:图片只要是人眼能看清楚的便可完成识别;
2:800万像素以上的手机拍的照片能进行识别;
3:聚焦不清楚时也能够进行识别;
4:不符合要求的图片能够不识别,一旦识别,正确率必须保证100%。
3、其余要求:
1:此项目验收须要提供答题卡识别的全部源代码、接口说明文档。
2:接口需支持单张图片上传识别以及多张图片的上传识别。
3:接口使用的开发语言及开发工具不限。
4、需求分析:
这是一个典型的“机器视觉”应用。其中,答题卡的样式能够是由本身来设置的,图片的获取方式提到了能够是“手机拍照、相机拍照”这种比较方便的方式;本例的一个特殊的要求是:你能够识别不出来,可是你不能识别错误,这是项目的特殊要求
5、需求分析:
普通的答题卡是这样的:
用于机器识别的答题卡是这样的,最明显的区别在于在边界处提供了用于标定的黑边。因为这里的答题卡是能够本身来设计的,就应该设计得最适合识别:
通过我修改的答题卡是这样的,主要是用圆点进行边界标定,由于在旋转和缩放的状况下,圆点都有更好的性能:
2、市场分析
答题卡已经出现好多年了,并且教育机构也是容易出现壁垒的领域。通过简单调查,制式的答题机应该是这种样子的,这种答题机采用的应该特殊的成像技术,好比红外之类的,不然也不须要作成这种样子:
其价格在数千元到万元左右,淘宝上也有人作出了机器识别的例子:
采用普通摄像头和特定的支架,销售状况很差。
可是,图像确是多种多样的。
形式多样。值得关注的一点是,这些可以经过baidu直接搜索获得的答题卡在设计上和本文提供的答题开有两点比较大的不一样,一个是在取消了好比圆点这样的标定点,二个是在横版面上采用了“点画”的方式进行标定
这样可以获得的结果仍是使得答题卡更加的简洁,美观。
对于这个市场,我认为在网络和即时聊天工具更加发达的今天,答题卡做为一种很是正式的考试方法,仍是有其市场的(好比高考中考,短期内还不会出现直接采用移动设备进行答卷);可是专门去作一套这样的设备,市场已经基本饱和,并且教育市场的壁垒应该很高,不是很容易就可以进入的。可是,对于在平常非正式考试中须要答题卡相关设备,而不但愿担负一套昂贵的专业系统的人或单位来所,若是可以以一种比较低廉的价格,而且已一种比较方便操做的方式(好比直接利用手机,或普通相机)进行实现,应该是有必定的市场的。
3、技术实现
本例的技术难度不是很大,很是关键的一点是因为卡片是能够由本身来设计的。并且图像的获取也比较容易被优化。这里以最前面的图片进行设计分析,其余的例子状况能够以此类推;而且公布核心代码。
1)仿照实际的状况,对原始图片进行相关处理。在实际拍摄的时候,可能会出现“缩放”、“透视变化”等影响最终实际结果的状况:
变小
透视变化
同时透视和缩放
2)编写获取锚点(就是圆点)的函数. FetchAnchorPoints函数的主要过程是将输入的图片划分为四个部分,而且分别找到其中的圆点。参数中mattmp是模板图片,也就是哪一个小圆的图片。
得到的结果
3)采用warpPerspective进行透视变换,若是对warpPerspective不是很了解能够查看我前面的blog