Halcon高级篇:变换模型https://www.sohu.com/a/385422237_120634863
函数:
该函数通过variation模型识别图像,找出图像内的异常区域
效果如图:
算子:
1.create_scaled_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleMin, ScaleMax, ScaleStep, Optimization, Metric, Contrast, MinContrast : ModelID):准备一个等温线比例的星环模型进行匹配
参数:
Template :输入将用于创建模型的域的图像
NumLevels:金字塔层的最大数量
AngleStart:图形的最小旋转
AngleExtent:旋转角度的范围
AngleStep:角度的步长
ScaleMin:模式的最小规模(参数ScaleMin和ScaleMax决定了模型可能的尺度范围,1的比例对应于模型的原始大小。)
ScaleMax:模式的最大尺度
ScaleStep:缩放步长(分辨率)
Optimization:一种优化和可选的方法用于生成模型
Metric:匹配度量( 'use_polarity',:图像中的对象和模型必须具有相同的对比度,例如,如果模型是在黑暗背景下的一个亮的对象,那么只有在该对象也比背景亮的情况下才能找到该对象)
Contrast:模版图像中对象对比度的阈值或滞后阈值,以及对象部件的可选最小尺寸
MinContrast :搜索图像中对戏那个岛饿最小对比度
ModelID:模型句柄
2.create_variation_model( : : Width, Height, Type, Mode : ModelID):创建一个图像比较的变换模型
参数:
Width:要比较的图像的宽度
Height:要比较的图像的高度
Type:要比较的图像的类型
Mode :变分模型的计算方法(决定了创建标准图像和variation图像的方法。'direct'表示标准图像由单张图像经过处理得到,由此方法得到的标准图像只能应用prepare_direct_variation_model算子得到variation model。'standard'表示标准的训练方法,标准图像的位置是各训练图像位置的平均。'robust'表示鲁棒的训练方法,标准图像的位置是各训练图像的中值,此模式在训练图像中可能存在ERROR时使用。)
ModelID:变量模型的ID
3.sobel_amp(Image : EdgeAmplitude : FilterType, Size : ):使用Sobel算子检测边缘(振幅)。
参数:
Image :输入图像
EdgeAmplitude :边缘振幅(梯度大小)图像
FilterType:过滤器类型( 'sum_abs' :实现了使用SIMD技术)
Size:滤膜尺寸
4.prepare_direct_variation_model(RefImage, VarImage : : ModelID, AbsThreshold, VarThreshold : ):准备一个变异模型与图像进行比较
参数:
RefImage:对象的参考图像(理想图像)
VarImage :物体的变化图像(变换图像)
ModelID(输入控制,状态修改):变量模型的句柄(变换模型)
AbsThreshold:图像与变异模型之间差异的绝对最小阈值
VarThreshold :决定了当前图像与理想图像的最小插值相对于变换图像的因子
该算子是在用一个单独图像作为理想图像,并使用算子sobel_amp, edges_image, 或者gray_range_rect对理想图像进行滤波,手动的创建一个变换图像,则必须使用该算子去准备,因为理想图像和变换图形还没有和变换模型进行连接。变量模型必须使用Model='direct'和create_variation_model创建。如果AbsThreshold和VarThreshold指定了两个值,可以为太亮或太暗的像素确定不同的阈值,第一个值是太亮的像素,第二个值是太暗的像素
计算方式:i(x,y)表示理想图像,v(x,y)表示变换图像,:表示太亮像素,
:表示太暗像素,
:表示太亮的最小差值相对于变换图像的因子,
:表示太暗的最小差值相对于变换图像的因子
图像变换阈值公式:
使用compare_variation_model将当前图像c(x,y)与变换模型进行比较,则输出区域包含于模型有本质区别的所有点符合下列条件:
5.elliptic_axis(Regions : : : Ra, Rb, Phi):计算等效椭圆的参数