Halcon 模板匹配+差分检测
介绍
使用Halcon 的差异模型进行检测,主要分为下面的四个步骤:
-
create_shape_model 创建检测的区域匹配模板
注: 这里使用形状匹配模板,当然也可以通过其它的匹配算法实现 -
create_variation_model 创建差异模型
-
train_variation_model 训练正常图像
-
prepare_variation_model 检测前配置差异模型的参数
-
find_shape_model 查找图像中的匹配模板
注: 这里匹配的算法和模型需要保持一直, 如形状匹配模板对应形状匹配算法 -
找到匹配的结果,通过仿射变换,抠图出匹配的那部分图像,用于差分检测
- vector_angle_to_rigid
- affine_trans_image
- reduce_domain
-
compare_variation_model 进行匹配区域和训练模板的一个差分处理,找到差异部分
-
后面的步骤主要是进行差异的特征过滤筛选,判定图像是否存在缺陷。
create_variation_model 说明
Type参数指定要创建的模型类型。例如,Type可以是"svm"、"knn"、"random_forest"等等。不同的模型类型适用于不同的问题和数据集。
Mode参数指定模型的训练模式。例如,Mode可以是"standard"、"incremental"或"online"。不同的训练模式适用于不同的数据集和计算资源。
模型的训练模式可以分为三种:标准模式(standard)、增量模式(incremental)和在线模式(online)。
标准模式是指在训练过程中,将所有的训练数据一次性输入模型进行训练。这种模式适用于数据量较小的情况,因为需要将所有数据都加载到内存中,所以可能会导致内存不足的问题。
增量模式是指在训练过程中,将数据分批次输入模型进行训练。每次输入一批数据,模型就会更新一次参数。这种模式适用于数据量较大的情况,因为可以避免将所有数据都加载到内存中,同时还可以在训练过程中动态地添加新的数据。
在线模式是指在训练过程中,将数据逐个输入模型进行训练。每输入一个数据,模型就会更新一次参数。这种模式适用于数据量非常大的情况,因为可以避免将所有数据都加载到内存中,同时还可以在训练过程中动态地添加新的数据。
总之,标准模式适用于数据量较小的情况,增量模式适用于数据量较大的情况,而在线模式适用于数据量非常大的情况。
train_variation_model 说明
训练差异模型可以得到差异模型的ID
prepare_variation_model 说明
在 prepare_variation_model 算子中,AbsThreshold 和 VarThreshold 是用于控制特征点筛选的参数。
AbsThreshold 是一个绝对阈值,用于筛选特征点。如果特征点的灰度值差异小于 AbsThreshold,则该特征点将被过滤掉。AbsThreshold 越大,筛选出的特征点越少。
VarThreshold 是一个相对阈值,用于筛选特征点。VarThreshold 的值越大,筛选出的特征点越少。VarThreshold 的计算方式为:VarThreshold = MeanGrayValue * VarThresholdFactor,其中 MeanGrayValue 是特征点周围像素的平均灰度值,VarThresholdFactor 是一个用户定义的参数,通常取值在 0.1 到 0.5 之间。
需要注意的是,AbsThreshold 和 VarThreshold 是互相独立的参数,它们都可以用于控制特征点的筛选。在实际应用中,可以根据具体情况选择合适的参数值,以达到最佳的特征点筛选效果。
compare_variation_model 说明
将检测区域和差异模型输入,得到的就是与标准模型不同的区域