HALCON基于形状的模板匹配
来源:互联网 发布:程序员考试考什么 编辑:程序博客网 时间:2024/06/06 02:40
一、匹配流程
就是:创建模板和匹配模板,其中:
创建模板:
通过BLOB分析处理图像创建ROI,或读取ROI拿到模板图像。再通过相关参数创建模板匹配原型。
匹配模板:
使用匹配原型进行相应变换,在需要匹配的图像上找和模板一样的位置及相似的分数
二、通过XLD创建AOI
gen_region_contour_xld
gen_region_polygon_xld
修正函数
erosion_* 侵蚀,减小ROI
dilation_* 膨胀,扩大ROI
shape_trans 拟合边缘,形状转换
boundary 获取轮廓,像素级边界
move_region 平移
组合
Intersection 交集
Difference 差集
Union2 并集
三、生成模板
create_shape_model(
Template , // 模板图像
NumLevels, // 图像金字塔,层数越高,像素越少
AngleStart, // 起始角度
AngleExtent, // 角度范围
AngleStep, // 角度步长
Optimization, // 优化算法,none不减少像素,point_reduction_low大约一半点,point_reduction_medium 大约1/3,point_reduction_high大约1/4
Metric, // 极性,如果图像有光线的变化,需要调整这个参数,但由于匹配的
极性模式: use_polarity 生成的模板就一个目标
极性模式: ignore_global_polarity 生成的模板有两个目标,一个是原图另一个是灰度值取反,黑的变白,白的变黑
极性模式: ignore_local_polarity 生成的模板有三个目标,除上面两个还有一个是灰度值渐变
Contrast, // 对比度 (越大边缘越少,越小边缘越多)
MinContrast, // 最小对比度
ModelID // 模板ID )
以上参数可以通过Matching助手来设置的具体效果
相关算子介绍
create_shape_model//生成的匹配图像有移动和旋转
create_scaled_shape_model//除了移动和旋转还有放大缩小
create_aniso_shape_model//除了移动和旋转还有放大缩小,但这个的放大缩小是可以控制X轴Y轴放大缩小
以下为这三个算子的参数差异
create_aniso_shape_model (Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleRMin, ScaleRMax, ScaleRStep, ScaleCMin, ScaleCMax, ScaleCStep, Optimization, Metric, Contrast, MinContrast : ModelID)
create_scaled_shape_model (Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleMin, ScaleMax, ScaleStep, Optimization, Metric, Contrast, MinContrast : ModelID)
create_shape_model (Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID)
就是:创建模板和匹配模板,其中:
创建模板:
通过BLOB分析处理图像创建ROI,或读取ROI拿到模板图像。再通过相关参数创建模板匹配原型。
匹配模板:
使用匹配原型进行相应变换,在需要匹配的图像上找和模板一样的位置及相似的分数
二、通过XLD创建AOI
gen_region_contour_xld
gen_region_polygon_xld
修正函数
erosion_* 侵蚀,减小ROI
dilation_* 膨胀,扩大ROI
shape_trans 拟合边缘,形状转换
boundary 获取轮廓,像素级边界
move_region 平移
组合
Intersection 交集
Difference 差集
Union2 并集
三、生成模板
create_shape_model(
Template , // 模板图像
NumLevels, // 图像金字塔,层数越高,像素越少
AngleStart, // 起始角度
AngleExtent, // 角度范围
AngleStep, // 角度步长
Optimization, // 优化算法,none不减少像素,point_reduction_low大约一半点,point_reduction_medium 大约1/3,point_reduction_high大约1/4
Metric, // 极性,如果图像有光线的变化,需要调整这个参数,但由于匹配的
极性模式: use_polarity 生成的模板就一个目标
极性模式: ignore_global_polarity 生成的模板有两个目标,一个是原图另一个是灰度值取反,黑的变白,白的变黑
极性模式: ignore_local_polarity 生成的模板有三个目标,除上面两个还有一个是灰度值渐变
Contrast, // 对比度 (越大边缘越少,越小边缘越多)
MinContrast, // 最小对比度
ModelID // 模板ID )
以上参数可以通过Matching助手来设置的具体效果
相关算子介绍
create_shape_model//生成的匹配图像有移动和旋转
create_scaled_shape_model//除了移动和旋转还有放大缩小
create_aniso_shape_model//除了移动和旋转还有放大缩小,但这个的放大缩小是可以控制X轴Y轴放大缩小
以下为这三个算子的参数差异
create_aniso_shape_model (Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleRMin, ScaleRMax, ScaleRStep, ScaleCMin, ScaleCMax, ScaleCStep, Optimization, Metric, Contrast, MinContrast : ModelID)
create_scaled_shape_model (Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleMin, ScaleMax, ScaleStep, Optimization, Metric, Contrast, MinContrast : ModelID)
create_shape_model (Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID)
获取模板的参数
determine_shape_model_params
determine_shape_model_params
通过像素轮廓可以直接创建模板
create_shape_model_xld
create_scaled_shape_model_xld
create_aniso_shape_model_xld
create_shape_model_xld
create_scaled_shape_model_xld
create_aniso_shape_model_xld
四、模板匹配算子(find_scaled_shape_models:匹配多个模板)
find_scaled_shape_model(
Image,查找的图像
ModelID, 生成的模板参数
AngleStart, 匹配最小角度
AngleExtent, 匹配最大角度(一起就是匹配角度范围)
ScaleMin, 最小放大倍数
ScaleMax, 最大放大倍数
MinScore, 放大倍数步长
NumMatches, 匹配个数,0则自动选择,100则最多匹配100个
MaxOverlap, 要找到模型实例的最大重叠
SubPixel, 亚像素精度
NumLevels, 图像金字塔
Greediness,贪婪系数
Row, 中心点(X)
Column, 中心点(Y)
Angle, 角度
Scale, 放大倍数
Score)匹配的分数
五、释放资源
clear_shape_model (ModelID)
find_scaled_shape_model(
Image,查找的图像
ModelID, 生成的模板参数
AngleStart, 匹配最小角度
AngleExtent, 匹配最大角度(一起就是匹配角度范围)
ScaleMin, 最小放大倍数
ScaleMax, 最大放大倍数
MinScore, 放大倍数步长
NumMatches, 匹配个数,0则自动选择,100则最多匹配100个
MaxOverlap, 要找到模型实例的最大重叠
SubPixel, 亚像素精度
NumLevels, 图像金字塔
Greediness,贪婪系数
Row, 中心点(X)
Column, 中心点(Y)
Angle, 角度
Scale, 放大倍数
Score)匹配的分数
五、释放资源
clear_shape_model (ModelID)
以下为示例代码:
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'gray', -1, 'false', 'default', 'XXX', 0, -1, AcqHandle)grab_image (Image, AcqHandle)*一、画矩形,选择即将拿来做模板的区域draw_rectangle2 (3600, Row, Column, Phi, Length1, Length2)gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)reduce_domain (Image, Rectangle, ImageReduced)inspect_shape_model (ImageReduced, ModelImages, ModelRegions, 5, 5)area_center (Rectangle, Area, Row3, Column3)*二、生成模板create_shape_model (ImageReduced, 5, 0, rad(360), 'auto', 'pregeneration', 'use_polarity', 5, 'auto', ModelID)get_shape_model_contours (ModelContours, ModelID, 1)while (true) grab_image (Image, AcqHandle) *三、对模板进行匹配(find_shape_models多个模板匹配) find_shape_model (Image, ModelID, 0, rad(360), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row1, Column1, Angle, Score) *四、找到后把模板的区域仿射到找到的区域(为了看效果) if(|Score| == 1) vector_angle_to_rigid (0, 0, 0, Row1, Column1, Angle, HomMat2D) affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2D) endifendwhile*五、释放资源clear_shape_model (ModelID)close_framegrabber (AcqHandle)
阅读全文
1 0
- Halcon中基于形状模板的匹配
- 【Halcon】基于形状的模板匹配
- Halcon中基于形状模板的匹配
- HALCON基于形状的模板匹配
- halcon 基于形状模板匹配的定位与测定
- Halcon学习之基于形状的模板匹配(一)
- halcon模板匹配(基于形状)——笔记
- 机器视觉Halcon:颗粒计数(基于形状模板匹配)
- 基于形状的模板匹配
- halcon模板匹配之形状匹配法
- halcon模板匹配之形状匹配法
- halcon模板匹配之形状匹配法
- Halcon 基于形状的模版匹配处理步骤
- 9、halcon定位学习(1)--基于形状的匹配
- 基于HALCON的模板匹配方法总结
- 基于HALCON的模板匹配方法总结
- 基于HALCON的模板匹配方法总结
- 基于HALCON的模板匹配方法总结
- 阶乘因式分解(1)
- 华山论剑:微服务框架-SpringCloud、Dubbo or Istio
- ERROR: Couldn't open giveio.sys Failed to open Dongle JTAG(parallel port)
- RSA加密算法原理
- 网络请求工具类
- HALCON基于形状的模板匹配
- MIPI DSI 协议介绍
- Anaconda安装TensorFlow及安装Spyder编译器
- Python排序算法总结
- 程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现)
- JavaScript工作体系中不可或缺的函数
- POJ 3278.Catch That Cow
- unity ugui手游自适应方法
- Java中使用OpenSSL生成的RSA公私钥进行数据加解密