Halcon学习---光学字符识别(OCR)
1、?text_line_orientation
text_line_orientation(Region, // 輸入文本行所在區(qū)域Image, // 輸入圖像CharHeight,?OrientationFrom, OrientationTo, // 限定查找角度范圍最小、最大角度OrientationAngle) // 輸出計(jì)算文本行的旋轉(zhuǎn)角度-
定義:決定了單個(gè)文本行或段落相對(duì)于水平圖像軸的方向。如果要確定單個(gè)文本行的方向,則OrientationFrom和OrientationTo的范圍應(yīng)該在-pi/4到pi/4的區(qū)間內(nèi)
-
說(shuō)明
-
Region:指定文本行所在的圖像區(qū)域,該區(qū)域僅用于減少工作面積。文本行由操作符text_line_orientation本身分割。如果傳遞了多個(gè)區(qū)域,則方向角的數(shù)值存儲(chǔ)在元組中,元組中值的位置對(duì)應(yīng)于輸入元組中區(qū)域的位置
-
CharHeight:指定區(qū)域region中現(xiàn)有文本行的大約高度
-
搜索區(qū)域可以由參數(shù)OrientationFrom和OrientationTo限制,因此也會(huì)影響操作符的運(yùn)行時(shí)間
-
如果輸入?yún)?shù)設(shè)置正確,操作符text_line_orientation返回值TRUE,否則將引發(fā)異常
-
應(yīng)用:通過(guò)計(jì)算出的角度OrientationAngle和像affine_trans_image這樣的操作符,可以旋轉(zhuǎn)圖像的區(qū)域,使文本線水平地位于圖像中,這可以簡(jiǎn)化OCR應(yīng)用程序的字符分割
2、?partition_rectangle
partition_rectangle(Region, // 要分區(qū)的區(qū)域Partitioned, // 輸出分區(qū)Width, Height) // 單個(gè)矩形的寬高-
定義:將輸入?yún)^(qū)域劃分為給定寬高的矩形,矩形在分區(qū)中返回
-
說(shuō)明
- 該區(qū)域總是被分割成大小大致相等的矩形。如果要求的矩形大小不能做到這一點(diǎn),則調(diào)整寬度和高度,使結(jié)果矩形的大小大致相等
- 如果區(qū)域小于給定的大小,它的輸出保持不變
- 只有當(dāng)區(qū)域的大小至少是由參數(shù)給出的矩形的1.5倍時(shí),才進(jìn)行分區(qū)
3、intersection?
intersection(Region1, // 區(qū)域1與區(qū)域2中的所有區(qū)域相交Region2, // Region1與之相交的區(qū)域RegionIntersection) // 返回交集的結(jié)果-
定義:交集計(jì)算Region1中的區(qū)域與Region2中的區(qū)域的交集
-
說(shuō)明
- Region1中的每個(gè)區(qū)域與Region2中的所有區(qū)域相交
- 在Region1的各個(gè)區(qū)域與統(tǒng)一的區(qū)域相交之前,Region2的所有區(qū)域在內(nèi)部被統(tǒng)一為一個(gè)區(qū)域
- RegionIntersection中region的順序與Region1中region的順序相同
-
注意:允許空輸入?yún)^(qū)域。因?yàn)榭盏慕Y(jié)果區(qū)域是可能的,所以應(yīng)該適當(dāng)?shù)卦O(shè)置系統(tǒng)標(biāo)志'store_empty_region'
4、sort_region
sort_region(Regions, // 輸入需要排序的區(qū)域SortedRegions, // 輸出排序后的區(qū)域SortMode, // 設(shè)置需要排序的方式Order, // 設(shè)置遞增還是遞減排序RowOrCol) // 設(shè)置按照行排列還是列排列-
定義:根據(jù)區(qū)域的相對(duì)位置對(duì)區(qū)域進(jìn)行排序
-
說(shuō)明:除“字符”之外的所有排序方法都使用區(qū)域的一個(gè)點(diǎn)。在參數(shù)RowOrCol = 'row'的幫助下,這些點(diǎn)將根據(jù)它們的行排序,然后根據(jù)它們的列排序。通過(guò)使用'column',列值將首先被使用
-
注意SortMode參數(shù)的設(shè)置
-
'character':區(qū)域被視為字符,可以水平或垂直讀取。它們按照RowOrCol給出的讀取方向排序,規(guī)范如下:
-
'row':行,讀取方向首先從左到右,然后從上到下
-
'col':列,閱讀方向首先從上到下,然后從左到右
-
-
'first_point':按照第一個(gè)點(diǎn)排序,一個(gè)區(qū)域的第一行的最前面的點(diǎn)
-
'last_point':按照最后一個(gè)點(diǎn)排序,一個(gè)區(qū)域的最后一行最后一列的那個(gè)點(diǎn)
-
?'upper_left':外接矩形的左上角
-
?'upper_right':外接矩形的右上角
-
'lower_left':外接矩形的左下角
-
?'lower_right':外接矩形的右下角
5、read_ocr_class_mlp
read_ocr_class_mlp(FileName, // 讀取文件路徑OCRHandle) // OCR句柄-
定義:從文件中讀取OCR分類器
-
說(shuō)明
-
read_ocr_class_mlp讀取與write_ocr_class_mlp一起存儲(chǔ)的OCR分類器
-
由于OCR分類器的訓(xùn)練可能花費(fèi)相對(duì)較長(zhǎng)的時(shí)間,因此分類器通常在離線過(guò)程中進(jìn)行訓(xùn)練,并使用write_ocr_class_mlp將其寫(xiě)入文件。在在線過(guò)程中,使用read_ocr_class_mlp讀取分類器,然后使用do_ocr_single_class_mlp或do_ocr_multi_class_mlp進(jìn)行分類
-
HALCON自帶訓(xùn)練好的文件:Document(文檔字體)、Industrial(工業(yè)字體)、DotPrint(點(diǎn)狀字體)。選擇的文件如果有NoRej表示允許出錯(cuò),如果選擇Rej對(duì)字符的要求將更嚴(yán)格,正確率也更高
-
預(yù)先訓(xùn)練的OCR分類器是拿白底黑色字符訓(xùn)練的,所以識(shí)別時(shí)也要拿白底黑色的字符區(qū)域去進(jìn)行識(shí)別
-
注意:如果參數(shù)有效,操作符read_ocr_class_mlp返回值TRUE。如果有必要,將引發(fā)異常
-
使用OCR助手,選擇字體-點(diǎn)擊放大鏡后可以查看到當(dāng)前支持識(shí)別的字體內(nèi)容
6、do_ocr_single_class_mlp
do_ocr_single_class_mlp(Character, // 輸入需要識(shí)別的字符區(qū)域Image, // 輸入圖像OCRHandle,Num, // 設(shè)置識(shí)別數(shù)量Class, // 用MLP對(duì)字符進(jìn)行分類的結(jié)果Confidence) // 可信度 值范圍0~1-
定義:識(shí)別單個(gè)區(qū)域OCR,使用OCR分類器OCRHandle計(jì)算由區(qū)域character和圖像Image給出的字符的最佳Num類,并返回Class中的類和Confidence中的類的相應(yīng)置信度(概率)
-
說(shuō)明
-
因?yàn)閐o_ocr_single_class_mlp可能返回多個(gè)類,所以Character只包含單個(gè)區(qū)域(單個(gè)字符)
-
如果要在一個(gè)調(diào)用中對(duì)多個(gè)字符進(jìn)行分類,則必須使用do_ocr_multi_class_mlp
-
在大多數(shù)情況下應(yīng)該使用do_ocr_multi_class_mlp,除非應(yīng)該顯式檢查次優(yōu)類
7、do_ocr_multi_class_mlp
do_ocr_multi_class_mlp(Character, // 輸入需要識(shí)別的字符區(qū)域Image, // 輸入圖像擺正之后的(必須是白底黑字)OCRHandle,Class, // 識(shí)別出來(lái)的結(jié)果Confidence) // 可信度 值范圍0~1-
定義:使用OCR分類器對(duì)多個(gè)字符進(jìn)行分類,使用OCR分類器OCRHandle為區(qū)域Character和灰度值Image給出的每個(gè)字符計(jì)算最佳類,并返回class中的類和Confidence中的類的相應(yīng)置信度(概率)
-
說(shuō)明
-
與do_ocr_single_class_mlp相反,do_ocr_multi_class_mlp可以在一次調(diào)用中對(duì)多個(gè)字符進(jìn)行分類,因此通常比使用do_ocr_single_class_mlp對(duì)單個(gè)字符進(jìn)行分類的循環(huán)要快
-
然而,do_ocr_multi_class_mlp只能返回每個(gè)字符的最佳類。因?yàn)榭蓪⒅眯哦冉忉尀楦怕?參見(jiàn)classify_class_mlp和evaluate_class_mlp),因此很容易檢查一個(gè)字符是否被分類了太多的不確定性,這通常不是一個(gè)缺點(diǎn),除非類重疊太多,以至于在許多情況下必須檢查第二好的類才能決定字符的類
-
在這些情況下,應(yīng)該使用do_ocr_single_class_mlp
-
在調(diào)用do_ocr_multi_class_mlp之前,必須使用trainf_ocr_class_mlp對(duì)分類器進(jìn)行訓(xùn)練
-
注意:Class中數(shù)字'\032'(或者顯示為'\0x1A')的字符串表示該區(qū)域已被分類為拒絕類
總結(jié)
以上是生活随笔為你收集整理的Halcon学习---光学字符识别(OCR)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pandas.core.base.Spe
- 下一篇: AI降噪模型