****************字符识别实例************* dev_close_window () dev_clear_window () dev_update_window ('off') read_image (Image, 'bottle2') get_image_size (Image, Width, Height) dev_close_window () dev_open_window (0, 0, 1.5*Width, 1.5*Height, 'black', WindowHandle) set_display_font (WindowHandle, 16, 'mono', 'true', 'false') dev_display (Image) disp_continue_message (WindowHandle, 'black', 'true') ******Step 1****字符分割操作*************************** *阈值分割 threshold (Image, Region, 0, 95) *根据形状特征填充孔洞 fill_up_shape (Region, RegionFillUp, 'area', 1, 5) *利用圆形结构元素执行开运算 opening_circle (RegionFillUp, RegionOpening, 2.5) dev_display (Image) *填充区域孔洞 fill_up (RegionOpening, RegionFillUp1) *利用矩形结构元素执行开运算。矩形宽设置为1,高为7,相当于低于7的连续被截断 opening_rectangle1 (RegionFillUp1, RegionOpening1,1, 7) *计算连通区域 connection (RegionOpening1, ConnectedRegions) *计算区域交集 intersection (ConnectedRegions, ConnectedRegions, RegionIntersection) *根据区域面积进行选择 select_shape (RegionIntersection, SelectedRegions, 'area', 'and', 300, 9999) *区域排序 sort_region (SelectedRegions, SortedRegions, 'first_point', 'true', 'column') *************Step 2****读取数字************************ *读取OCR分类器(多层感知器) read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle) *使用分类器进行字符分类 do_ocr_multi_class_mlp (SortedRegions, Image, OCRHandle, Class, Confidence) *求取字符区域中心坐标面积 area_center (SortedRegions, Area, Row, Column) set_display_font (WindowHandle, 16, 'mono', 'true', 'false') *循环显示读取得到的数字 for i:=0 to |Class|-1 by 1 disp_message (WindowHandle, Class[i], 'window', 80, Column[i], 'black', 'true') endfor *清除分类器 clear_ocr_class_mlp (OCRHandle) dev_update_window ('on')
字符识别主要由:字符分割、特征提取、字符分类三部分组成。
1.字符分割:首先是用阈值法提取图像中的连通区域,然后使用形态学等方法将同一个字符分离的部分连接起来。
2.特征提取:如基于区域特征、网格像素统计、小波矩特征提取、正交投影法、基于笔画。轮廓、骨架特征提取等。
3.字符分类:高斯混合模型、多层感知器、支持向量机等。