halcon学习-class_2dim_sup等算子的学习以及OCR训练方式

1.hysteresis_threshold
滞后阈值对图像执行滞后阈值操作(由Canny引入)。输入图像中灰度值大于或等于High的所有点立即被接受(“安全”点)。相反,所有灰度值小于Low的点立即被拒绝。如果两个阈值之间的“潜在”点通过长度最多为MaxLength个点的“潜在”点路径连接到“安全”点,则接受具有灰色值的“潜在”点。这意味着“安全”点会影响它们周围的环境(滞后)

2.label_to_region 从图像中提取灰度值相等的区域。

3.find_bottle_mouth 通过探测一个圆圈找到瓶口。
gen_image_const 创建一个具有固定灰度值的图像。
gray_projections 计算水平和垂直的灰度投影。
abs_image 计算图像的绝对值(模数)。

4.evaluate_class_svm 用支持向量机计算特征向量。
label_to_region 从图像中提取灰度值相等的区域。

5.dequeue_message 从消息队列接收一条或多条消息。

6.dev_get_preferences 查询程序中的HDevelop首选项。
dev_set_preferences 设置程序中的HDevelop首选项。
query_font 查询可用字体。

7.get_region_points 访问区域的像素,获得像素的横纵坐标。

8.get_support_vector_num_class_svm 返回支持向量机的支持向量个数。
get_support_vector_num_class_svm( : : SVMHandle : NumSupportVectors, NumSVPerSVM)
get_support_vector_num_class_svm返回由SVMHandle给出的支持向量机(SVM)中存储的支持向量的数量。get_support_vector_num_class_svm应该在使用get_support_vector_class_svm读出单个支持向量的标签之前调用get_support_vector_class_svm,
例如,为了可视化哪个训练数据变成了SV(请参阅get_support_vector_class_svm)。每个分类器中的sv数量列在NumSVPerSVM中。它的和与numsupportvector中得到的数字不同的原因是SV计算在不同的子分类器中重用。NumSVPerSVM为利用算子reduce_class_svm控制SVM分类时间的加快提供了可能。

9.get_support_vector_class_svm 从训练过的支持向量机中返回支持向量的索引。
get_sample_class_svm 从支持向量机的训练数据中返回训练样本。

10.gen_principal_comp_trans 计算多通道图像主成分分析的变换矩阵。
gen_principal_comp_trans(MultichannelImage : : : Trans, TransInv, Mean, Cov, InfoPerComp)
运算符gen_principal_comp_trans获取一个或多个多通道图像MultichannelImage,并计算转换矩阵Trans用于主成分分析及其逆TransInv。所有输入图像必须具有相同数量的通道。主成分分析是在采集所有图像数据的基础上进行的。因此,gen_principal_comp_trans便于使用多个图像的统计信息。

11.linear_trans_color计算多通道图像颜色值的仿射变换,转换矩阵通常用gen_principal_comp_trans计算。

12.class_2dim_sup(ImageCol, ImageRow, FeatureSpace : RegionClass2Dim : : )
class_2dim_sup使用二维特征空间对双通道图像中的点进行分类。对于每个点,使用两个灰度值(每个图像中的一个)作为特征。特征空间由输入区域表示。分类方法如下:
如果一个点(g_{r},g_{c})包含在区域特征中,则接受图像输入区域中的一个点(g_{r},g_{c}),该点由各自的灰度值决定。这里的g_{r}是image ImageRow中的灰度值,而g_{c}是ImageCol中的相应灰度值。
设P为坐标P=(R,C)处的点,g_{R}为image ImageRow中位置(R,C)处的灰度值,g_{C}为image ImageCol中位置(R,C)处的灰度值。然后将点P聚合到输出区域如果满足
在这里插入图片描述
将g_{r}解释为行坐标,将g_{c}解释为列坐标。
生成FeatureSpace,请参见histo_2dim。在调用class_2dim_sup之前,可以通过应用区域转换操作符(如rank_region、dilation1、shape_trans、elliptic_axis等)修改特征空间。
ImageCol和ImageRow参数必须包含相同大小的相同数量的图像。图像点取自两个图像域的交集(请参阅reduce_domain)。

13.例程:OCR MLP分类器训练
(OCR训练过程基本所有分类器都类似)

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')
get_tmp_dir (TmpDir)
TrainFile := TmpDir + '/letters.trf'
dev_display (Image)

gen_rectangle1 (Rectangle, 0, 0, Height - 1, 400)
reduce_domain (Image, Rectangle, Image)
binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)
dilation_circle (Region, RegionDilation, 3.5)
connection (RegionDilation, ConnectedRegions)
intersection (ConnectedRegions, Region, RegionIntersection)
sort_region (RegionIntersection, Characters, 'character', 'true', 'row')
dev_display (Characters)
disp_message (WindowHandle, 'Training characters', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()

count_obj (Characters, Number)
Length := Number / 27
Classes := []
for J := 0 to 25 by 1
    Classes := [Classes,gen_tuple_const(Length,chr(ord('a') + J))]
endfor
Classes := [Classes,gen_tuple_const(Length,'.')]

write_ocr_trainf (Characters, Image, Classes, TrainFile)
read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)
create_ocr_class_mlp (8, 10, 'constant', 'default', CharacterNames, 20, 'normalization', 26, 42, OCRHandle)
* Train the classifier
trainf_ocr_class_mlp (OCRHandle, TrainFile, 100, 0.01, 0.01, Error, ErrorLog)

full_domain (Image, Image)
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')

do_ocr_multi_class_mlp (Characters, Image, OCRHandle, Class, Confidence)

area_center (Characters, Area, Row, Column)
dev_display (Image)
set_display_font (WindowHandle, 16, 'sans', 'true', 'false')
disp_message (WindowHandle, Class, 'image', Row - 16, Column + 8, 'blue', 'false')
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
disp_message (WindowHandle, 'Classification result', 'window', 12, 12, 'black', 'true')

clear_ocr_class_mlp (OCRHandle)
dev_set_check ('~give_error')
delete_file (TrainFile)
dev_set_check ('give_error')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值