撰文: 謝宗翰老師
延續上次介紹的自動發票對獎機,這次來介紹一下程式中最關鍵的部分之一 – 數字辨識。
在程式設計中對於數字/字元辨識有專業的稱呼- Optical Character Recognition, 簡稱OCR,為一個將圖像進行分析處理,獲取文字及版面信息的過程。
在LabVIEW的視覺模組中,提供了強大的影像處理工具,當然也包含了OCR的指令,使用者只需將要分析的影像作適當的處理,再直接使用OCR函式,即可進行有效的分析。最棒的是,LabVIEW還會將辨識結果建立成資料庫,如此一來,只要經過足夠的訓練(training),辨識的效果就會越來越精準。
要使用LabVIEW撰寫OCR的程式,首先當然要先從webcam擷取影像,這在之前的文章-LabVIEW webcam 使用 已有介紹過,因此這裡不多敘述。OCR的程式如下:
本程式的關鍵在於 Vision Assistant 的使用,透過 Vision Assistant,我們將webcam拍攝的發票影像進行灰階、Threshold、二元化的處理,以去除不要的雜訊,程式流程如下:
最後進行OCR數字辨識,辨識完後LabVIEW會自動建立資料庫,我們可以透過人工的方式訓練辨識的結果以存入資料庫內:
最後,當建立足夠筆資料後,即可讓系統自動對發票而不用再訓練,結果如下圖:
左邊是處理過後的發票影像,右邊是OCR的結果,可以看見與發票數字相同,成功率100%。
當然,事情也沒有這麼簡單,影響成功率最大的因素有兩個: 環境光線的大小會影響影像處理的結果,進而影響OCR的成敗,webcam與發票的距離與發票的位置也非常重要,因為OCR函式是分析一個範圍內的影像。針對第一個問題,我們使用環境光感測器 TCS230D-TR 來判斷環境光的強度。
通常一般室內的光源都足以讓 webcam 拍攝清楚的影像,而若是感測器偵測到有過暗的情況,LED燈就會亮起以進行補光:
第二個問題是關於發票的位置以及 webcam 距離。webcam 的距離是在測試階段時比較頭痛,然而一旦機構完成,webcam 位置即固定了,就不會是問題。發票的位置則是另一個挑戰,當發票對完被捲下去後,下一張發票不能受滾輪捲動影響而改變位置,這在機構設計上是一大挑戰,也是我們決定直改良廢棄印表機來使用的原因,印表機內部有一個"分頁器"的機構",可以在捲進一張紙後,將多餘的紙排出,因此就不會有後面發票位置改變或一次捲進好幾張發票的問題。
以上是針對數字辨識的部分作介紹。除了OCR外,本專題在 LabVIEW 的程式還有幾個關鍵的部分:與單晶片AVR的RS-232通訊以及分析 OCR 的結果,即是否有中獎。這些將留待之後再做介紹。
哇塞!!
您真是太厲害了!! 一件複雜的事 居然可以簡單做到!!
由於我學LabView一直沒長進,越看CAVE的文章
感覺跟您們越來越遠了!!!
[版主回覆07/18/2011 22:49:53]謝謝您的鼓勵,我們會繼續加油。有 LabVIEW 問題歡迎一起討論!