目錄
1、字元資料集訓練
2、識别與驗證
在學習本章之前,推薦先學習系列專欄文章:LabVIEW目标對象分類識别(理論篇—5)
OCR(光學字元識别)是指機器自動從圖像中識别文本字元的過程,OCR機器視覺系統可用于對被測件的識别和分類。常見的識别應用包括:藥品包裝标簽識别、IC晶片編碼讀取、沖壓零件上的字元識别、汽車零件編碼讀取以及車牌識别等。
OCR從本質上可看作是目标分類和識别的一種實際應用,是以它也包括訓練和分類過程。
OCR訓練過程主要從圖像中提取用于字元識别的特征向量,并對各字元圖像賦予準确的字元值。具有相同字元值的字元樣本圖像構成一個字元類(Character Class),該類可以用其中一個最能代表該類字元的樣本圖像來代表,稱為參考字元(Reference Character)。字元訓練完成後,就可得到一個用于對字元進行識别的字元集(Character Set)。
OCR對圖像中的文本進行讀取時,會先将圖像中的各個字元圖像分割開來,并将字元的特征向量與字元集中儲存的特征向量進行對比,選取滿足條件的最佳比對向量所對應的字元值作為讀取識别結果。若有必要,也可以通過字元驗證過程對OCR的識别品質進行驗證。
下圖對OCR應用及OCR的關鍵技術點進行彙總:

和目标分類過程類似,要能使OCR過程正确讀取或驗證文本,就需要先使用字元樣本對分類器進行訓練。訓練過程一方面從字元樣本圖像中提取字元特征,另一方面将不同字元特征與字元值(相當于類辨別)進行關聯映射。訓練結束後,字元特征及對應的字元值連同其他與字元識别相關的資訊被一并儲存在字元集檔案中,用于後續的文本識别過程。從分類識别的角度來看,訓練得到的字元集檔案就相當于分類器。
字元的屬性參數決定了OCR訓練和文本讀取驗證過程以何種方式分割字元。
常用的字元屬性包括字元的邊界長和寬,字元間距、字元占像素的多少(又稱為字元大小)等。字元間距若設定得太大,則OCR過程可能會将多個字元當成一個字元。點陣或字段類字元可認為是由多個元素(Element)構成。這種情況下,各元素之間的橫向或縱向間隔是較為重要的字元屬性之一。元素間的間隔若設定過大,則字元圖像可能會包含多餘的圖像顆粒;而若元素間的間隔設定過小,則字元圖像可能并不完全。無論哪種情況,都會造成要識别的字元與其對應圖像不能比對。
Nl Vision提供了兩種OCR字元集訓練方法,一是使用NI OCR訓練器應用程式離線完成字元集訓練,二是使用程式代碼在運作時完成字元集訓練。
下圖顯示了NI OCR訓練器(位于:National Instruments\Vision\Utility\OCR Training Interface\OCR Training.exe)用來設定字元屬性的界面,以及兩種OCR無法正确識别字元的示例。由于示例中字元元素橫向間隔設定過小,是以點陣字元O和R無法被完整識别。而由于字元間隔設定過大,OCR 3個字元被當成了一個字元。
也可以在程式代碼中使用位于LabVIEW的視覺與運動→Machine Vision→OCR函數選闆的IMAQ OCR Property讀取或配置OCR的各種字元屬性資訊或形态學處理參數,如下所示:
函數說明及使用可參見幫助手冊:
在OCR應用中,文字識别或驗證過程實際上就是基于訓練得到的字元集資訊對字元分類的過程。OCR的字元集既可由Nl OCR訓練器應用程式離線訓練得到,也可由程式代碼在運作時訓練獲得。從圖像中識别文字時,OCR程式先分割出各字元,并将其特征與字元集中的字元特征進行對比,傳回與之最接近的字元所在類的字元值。
通過一個車牌識别執行個體了解OCR的應用方法,程式設計思路如下所示:
程式先使用IMAQOCR Read Character Set File讀取事先由NI OCR訓練器訓練得到的字元集檔案TO-LlC.abc中的字元資訊,然後由While循環逐一識别檔案夾中的車牌圖像,從中識别車牌号碼;
在While循環中,程式将圖像讀入記憶體後,先删除所有圖像中的疊加圖層,然後由IMAQ OCR Read Text 3從設定的ROI中識别車牌;
IMAQ Overlay ROI可以根據識别到字元的邊界矩形,在圖像中用紅色矩形框出各字元;
當退出按鈕被按下時,程式退出While循環,并在釋放記憶體空間、丢棄OCR會話後結束程式。
程式實作如下所示:
程式運作效果如下所示:
項目資源下載下傳:
https://download.csdn.net/download/m0_38106923/20670402在實際車牌識别應用程式中,通常首先要從車輛圖像中定位到車牌區域。常見的車牌定位方法有以下幾種:
根據車牌與其周圍圖像的差異,由縱橫方向上的車牌邊緣來确定車牌區域;
通過比對車牌的幾何輪廓或預先儲存的各種車牌模闆确定其位置;
通過車牌字元的紋理确定車牌位置;
通過車牌的顔色确定車牌位置;
通過車牌字元特征确定車牌位置。