網路城邦
上一篇 回創作列表 下一篇  字體:
隨便畫一畫可以嗎?
2017/09/21 08:12:13瀏覽3861|回應0|推薦3

這是一張測試意味很重的答案卡照片,前五十題中規中矩地將圓圈圈塗滿,但是想也知道這樣挺累人的!後五十題有點像考試時間來不及了,很多答案就隨手塗幾筆,甚至只打一個勾勾!用人工閱卷的話,當然還可以判斷答案是否被圈選,用「電腦」閱卷就要看影像辨識程式有多聰明了!

這個影像辨識專案最終是要在手機上實作的!就是用APP拍照後直接辨識100題的答案,以及身分認證的年級班級與座號資訊,算是一個具體而微的完整立體空間影像的辨識程序。手拍的嘛!所以會有變形(呈梯形)的問題必須處理,光線也不保證完全均勻,一邊亮一邊暗是有可能的,也必須處理。接著是必須將每一個可以圈選的「格子」都鎖定位置,最後再檢視每個「格子」是否被「塗滿」?

前面程序陸續完成後,今天做到最後這個是否「塗滿」的判斷,重點在於:最好能不必「塗滿」也能辨識出有畫到這個格子!如果這個專案要不惜工本的玩,我真的能將格子裡的ABCDE與圓框線都像辨識車牌一樣的辨識出來!再一一比對字模看看有沒有多餘的筆劃。真要這樣,連考試者打個勾我都會知道,我的辨識軟體聰明度就直追老師親自閱卷了!當然,實際上找我開發的客戶要求沒這麼高,勾勾就先不辨識了,但還是希望明顯被塗了幾畫的格子能盡量被辨識出來就好!

這也不容易的!因為格子裡的ABC印刷字也會被視為格子「被塗滿」的一部份,也就是說每個格子基本上就會被「塗滿」約30%,而且不會剛好是一個固定比率,因為A-E每個字的筆劃覆蓋率都不同,加上二值化(將灰階圖變成黑白圖)時,用的亮度門檻值偏高,黑色覆蓋率就會高一點,偏低覆蓋率就低一點,上述的30%覆蓋率其實是非常不穩定的估計值,每張圖都不會一樣的!

作真實影像的辨識總是會碰到這種問題,我們要作判斷一定需要一個門檻值,譬如:覆蓋率多少以上叫做「答案格被塗了」?但是物理上這個值卻每張圖都不一樣,設計程式時不能硬性規定,不然結果就會很奇怪!只有「非常理想」的影像才能正確辨識,那種軟體就會像是學生習作,沒有專業的Fu了!

該怎麼做呢?不怕跟你講,就是先統計所有找到格子的覆蓋率,如上圖右下方的小柱狀圖,大多數的格子只有一個字母加框線,覆蓋率會集中成一個高峰。有被塗過的格子覆蓋率一定會高於這個山峰,但是如果塗滿的程度不一致,他們看起來就不會形成另一個明顯的小山峰,而是像丘陵一樣散亂分布

此時我們只要找到代表空格的主山峰的覆蓋率上緣,也就是山峰的右邊山腳位置,如紅線所示,就是理想的覆蓋率門檻值了!以此為門檻,基本上就不會誤判空格為填滿,但是只要明確高於空格覆蓋率分布區的格子,都會被視為「畫過了」!經過這個統計程序,不論影像偏暗偏亮,甚至印刷字體粗或細,都會得到穩定正確的辨識結果。

講這些細節是希望更多人可以深入理解影像辨識的過程,這會影響我的生意嗎?想來搶生意?你要做的事情還多著咧!舉例來說,我的辨識程序如上圖在接近六百萬畫素的影像上辨識100題答案,時間只需約70毫秒!(上圖顯示的Time: 7是實驗中某程序的時間)

這種速度是很驚人的!如果連續用我的電腦閱卷,一秒鐘就可以閱卷14.3張!一千張考卷70秒閱卷完畢,一般中學的一個年級一次段考如果這樣閱卷,一節下課時間的十分鐘內就完成了!學生都還沒放學呢?全校段考成績就已經算好,Email到家長的手機了!考不好的同學可能會嚇到不敢接爸媽的電話吧?哈哈!

要解釋我怎麼能這麼快?所有關鍵細節解釋完,需要的篇幅就是這篇文章的三到五倍了!有時候我會想:擔心人家偷我的軟體,還不如擔心沒人知道細節,等我老了就會失傳,以後的人(或現在其他的業界人士)還要再摸索一次,這比較嚴重!所以我的態度是:只要有人出個「還可以」的價格,我就會賣技術知識了!我畢竟是鄉下老師嘛!而且賣的東西應該比一般大學(或研究所)賣的有趣哦!

( 心情隨筆工作職場 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=yccsonar&aid=108626915