HALCON:lines_gauss用法解析
HALCON:lines_gauss用法解析
lines_gauss:检测图像中的线条及其宽度,在视觉表面检测方面应用广泛。
lines_gauss(Image : Lines : Sigma, Low, High, LightDark, ExtractWidth, LineModel, CompleteJunctions : )
- Image:输入图像;
- Lines:提取出的亚像素精度线条;
- Sigma:应用的高斯平滑的系数;
- Low:后滞阈值分割的低值;
- High:后滞阈值分割的高值;
- LightDark:提取图像中的亮色或者暗色线条;
- ExtractWidth:是否提取线条的宽度;
- LineModel:提取线条的模式,有'none', 'bar-shaped', 'parabolic', 'gaussian' 四种。
- CompleteJunctions:是否添加能够提取的接合点(junction)。
当LineModel被设置为除'none'以外的其他值时,lines_gauss算子会补偿非对称线条(即在线条的中心两侧有不同对比度的线条),来校正提取出的线条的位置和宽度。对大多数应用来说,LineModel的'bar-shaped'参数是正确的选择,'parabolic'参数常用来提取边缘比较锐利的线条(比如背光照明的图像中的线条),'gaussian'则在线条边缘不那么锐利的时候使用。参数LineModel仅在参数ExtractWidth被设置为'true'时才有意义。
以下是大恒图像的培训资料中LineModel参数的解释:
因为几何算法的原因,线条提取器(即lines_gauss算子)不可能提取出所有确定的接合点,当CompleteJunctions被设置为'true'时,算子会试图通过不同的算法提取出那些能够提取出来的接合点。
线条提取算法通过图像与一个高斯掩膜的卷积的偏导数来决定图像中的每个点在x方向和y方向的泰勒二次多项式的参数。参数Sigma指定了高斯掩膜的参数(平滑程度)。高的Sigma值代表对图像进行大尺度的平滑处理,但由此可能造成提取线条的定位失准。一般来说,在具有对比性的参数下,lines_guass能比lines_facet返回更加准确的线条位置。泰勒二次多项式的参数被用来计算每个像素点的线条方向。那些二阶偏导数在垂直于线条方向上具有局部最大值的点被标记为线条上的点,这些点随后被连接成亚像素精度轮廓。如果被标记的点的二阶偏导数值大于参数High,其被认为是线条上的点而被立即接受,如果低于参数Low,其被认为不是线条上的点而被立即舍弃,如果其大于参数Low但小于参数High,则仅在此点能够通过某一路径与已经被接受的点相连时这些点才被接受。(参考hysteresis_threshold)。
在选在参数High和参数Low时,应该注意,二阶偏导数受线条幅度和宽度影响的同时,也受参数Sigma的影响。二阶偏导数对线条幅度呈近似线性响应(即幅度值越大,二阶偏导数越大)。而对线条宽度的响应却差不多呈反指数关系(即线条的宽度越宽,二阶偏导数越小),这跟对参数Sigma值的大小响应差不多(即Sigma值越大,得到的二阶偏导数越小)。这就意味着对于一个大的Sigma值,应该选择一个比较小的High值和Low值。两个例子说明这个问题,对于一个幅度值大于100的5个像素宽的线条,如果Sigma=1.5,那么参数High应该大于14。而对于一个幅度值大于100的10个像素宽的线条来说,如果Sigma=3,那么参数High应该大于3.5。参数Low的值选在0.25High到0.5High之间比较合适。
在提取线条的同时,lines_guass算子还提取线条上每个点的以下属性:
如果ExtractWidth='false':
(1)'angle':垂直于线条的方向的角度
(2)'response':二阶偏导数的幅度值
如果ExtractWidth='true',下面的属性也会被提取出来:
(3)'width_left':线条左侧的宽度
(4)'width_right':线条右侧的宽度
如果LineModel没有被设置为'none',那么下面的属性也会被提取出来:
(5)'asymmetry':线条的不对称度
(6)'contrast':线条的对比度
上面这些参数能够通过get_contour_attrib_xld算子得到。
注意:
一般来说,特别是在需要提取线条宽度的时候,参数Sigma的选择应该满足Sigma >= w/sqrt(3)(w代表图像中线条的宽度(线条直径的一半)),最小允许值是Sigma >= w/2.5。例如,对于一个宽度为4个像素(直径为8个像素)的线条来说,Sigma >= 2.3是合适的参数。
参考资料:
1、大恒图像:HALCON测量技术
2、《机器视觉算法与应用》
【转载】http://blog.sina.com.cn/s/blog_802a94a20102v5yo.html
HALCON:lines_gauss用法解析相关推荐
- HALCON: texture_laws用法解析
HALCON: texture_laws用法解析 纹理分析是图像处理中的一种典型任务,texture_laws是Halcon中纹理分析的重要算子,其本质原理是利用不同的kernel与图像进行卷积运算, ...
- HALCON:Variation Model用法解析
HALCON:Variation Model用法解析 Variation Model的主要原理是将待检测的图像与一张标准图像作比较,找出待检测图像与标准图像(ideal image)的明显差异(也就是 ...
- 四种Java线程池用法解析
四种Java线程池用法解析 本文为大家分析四种Java线程池用法,供大家参考,具体内容如下 http://www.jb51.net/article/81843.htm 1.new Thread的弊端 ...
- mysql have_mysql having用法解析
having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前.而 having子句在聚合后对组记录进行筛选. ...
- argparse.ArgumentParser()用法解析
argparse.ArgumentParser()用法解析(https://blog.csdn.net/the_time_runner/article/details/97941409) https: ...
- sql中group by 和having 用法解析
--sql中的group by 用法解析: -- Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)". --它的作用是通过一定的规则将一 ...
- python global和nonlocal用法解析
这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 global和nonlocal ...
- extern c用法解析
extern "c"用法解析 字数1875 阅读38631 评论4 喜欢20 引言 C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数.但是,C++毕竟 ...
- extern C的用法解析
extern "C"的用法解析 2012-03-20 23:29 by Rollen Holt, 20231 阅读, 6 评论, 收藏, 编辑 1.引言 C++语言的创建初衷是&q ...
最新文章
- 锐捷路由器--多线路应用路由
- oracle统计一个班男生女生,一条sql统计一个班级的男女人数
- Kibana安装及简单使用
- Spring PropertyPlaceholderConfigurer Usage
- SQLServer 游标简介与使用说明[转]
- 你必须失败---来自迈克尔·乔丹的6条教训
- 关于Spring容器管理Bean的过程以及加载模式
- json数据交互---SpringMVC学习笔记(十二)
- Spring Web应用程序的最大缺陷
- Node.js nodemn
- vmware不能resume问题,Collect Support Data,vmware.log
- c语言字符串如何调换位置,c语言字符串从第m个位置开始复制
- 十分钟理解Actor模式
- 2021厦门湖滨中学高考成绩查询,厦门各高中本科上线率2020
- 计算机硬件设备海报高清,海报墙3.0+APP加持—芝杜ZIDOO UHD2000高清播放器体验分享...
- 黑小米真不应该,如今它已是国货之光,成为国产手机在海外领军者
- 如何干净的卸载Oracle
- 现代企业管理笔记——领导
- php获取公众号微信用户信息
- 人脸验证与二分类(Face verification and binary classification)