答題卡圖像識別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