OCR之letters_ocr_mlp/svm

*关闭窗体更新
dev_update_off ()
*读取图像
read_image (Image, ‘letters’)
*获取图像尺寸
get_image_size (Image, Width, Height)
*关闭窗体
dev_close_window ()
*打开适合图像尺寸的新窗体
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
*设置显示颜色
dev_set_colored (12)
*设置显示字体
set_display_font (WindowHandle, 16, ‘mono’, ‘true’, ‘false’)

*1获取训练图像
get_tmp_dir (TmpDir)
TrainFile := TmpDir + ‘/letters.trf’
dev_display (Image)
*2获取一个矩形,获取训练对象
gen_rectangle1 (Rectangle, 0, 0, Height - 1, 400)
*从图像裁剪出目标区域
reduce_domain (Image, Rectangle, Image)

*3分割训练对象
binary_threshold (Image, Region, ‘max_separability’, ‘dark’, UsedThreshold)
*4有两个特殊字符i+j需要连成一体分割,提取出来后用交集再重新还原
dilation_circle (Region, RegionDilation, 3.5)
*4分割字符
connection (RegionDilation, ConnectedRegions)
*5把分割开的字符还原,膨胀区域与原来的区域进行求交集,intersection交集,union1/union2并集,difference差集,complement补集

intersection (ConnectedRegions, Region, RegionIntersection)
*6按行坐标排列
sort_region (RegionIntersection, Characters, ‘character’, ‘true’, ‘row’)
*显示字符
dev_display (Characters)
*显示信息
disp_message (WindowHandle, ‘Training characters’, ‘window’, 12, 12, ‘black’, ‘true’)
*右下角显示’press f5 to continue’
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop ()
*字符个数
count_obj (Characters, Number)
Length := Number / 27
Classes := []
*将类添加到class里面,方便后面训练
*训练的时候准备好字符和字符区域以及 模板图像
for J := 0 to 25 by 1
Classes := [Classes,gen_tuple_const(Length,chr(ord(‘a’) + J))]
endfor
Classes := [Classes,gen_tuple_const(Length,’.’)]
*7保存训练文件,读取对象名称
write_ocr_trainf (Characters, Image, Classes, TrainFile)
*AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)
*创建SVM分类器
create_ocr_class_svm (8, 10, ‘constant’, ‘default’, CharacterNames, ‘rbf’, 0.02, 0.05, ‘one-versus-one’, ‘normalization’, 0, OCRHandle)

  • Train the classifier
    *训练OCR-svm分类器
    trainf_ocr_class_svm (OCRHandle, TrainFile, 0.001, ‘default’)
    *8测试SVM分类器
    full_domain (Image, Image)
  • Segment characters the same way as before
    *阈值分割
    binary_threshold (Image, Region, ‘max_separability’, ‘dark’, UsedThreshold1)
    *膨胀
    dilation_circle (Region, RegionDilation, 3.5)
    *联通区域
    connection (RegionDilation, ConnectedRegions)
    *求交集,把i,j分开点和下面分开
    intersection (ConnectedRegions, Region, RegionIntersection)
    *根据字母顺序排列区域
    sort_region (RegionIntersection, Characters, ‘character’, ‘true’, ‘row’)
    *9分类
    do_ocr_multi_class_svm (Characters, Image, OCRHandle, Class)
    stop ()
    *AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

*BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
read_ocr_trainf_names (TrainFile, CharacterNames1, CharacterCount)

create_ocr_class_mlp (8, 10, ‘constant’, ‘default’, CharacterNames1, 80, ‘none’, 10, 42, OCRHandle1)

trainf_ocr_class_mlp (OCRHandle1, TrainFile, 200, 1, 0.01, Error, ErrorLog)
*以下翻译同上
full_domain (Image, Image)

  • Segment characters the same way as before
    binary_threshold (Image, Region, ‘max_separability’, ‘dark’, UsedThreshold1)
    dilation_circle (Region, RegionDilation, 3.5)
    connection (RegionDilation, ConnectedRegions)
    intersection (ConnectedRegions, Region, RegionIntersection)
    sort_region (RegionIntersection, Characters, ‘character’, ‘true’, ‘row’)
    *9分类
    do_ocr_multi_class_mlp (Characters, Image, OCRHandle1, Class1, Confidence)
    *BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
    *运用OCR有以下几个步骤
    *1.准备好分割好的训练目标,按一定顺序排列数组Characters
    *2.把对应的文字也对应的按顺序添加到数组中Classes
    *3.write_ocr_trainf (Characters, Image, Classes, TrainFile)/read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)
    *4.创建OCR句柄create_ocr_class_mlp (8, 10, ‘constant’, ‘default’, CharacterNames1, 80, ‘none’, 10, 42, OCRHandle1)
    *5.训练Ocr文件,trainf_ocr_class_svm (OCRHandle, TrainFile, 0.001, ‘default’)
    *6.使用OcrHandle.

*只要把训练文件保存好以后,不管是MLP,SVM,都可通过以下三个步骤,创建OCR句柄。对图像进行分割
*接着do_ocr_multi_class_mlp (Characters, Image, OCRHandle1, Class1, Confidence)

*read_ocr_trainf_names (TrainFile, CharacterNames1, CharacterCount)

*create_ocr_class_mlp (8, 10, ‘constant’, ‘default’, CharacterNames1, 80, ‘none’, 10, 42, OCRHandle1)

*trainf_ocr_class_mlp (OCRHandle1, TrainFile, 200, 1, 0.01, Error, ErrorLog)
*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值