持更

应用范围

(罗列自官方帮助文档,以后有空了按照需求展开叙述)

1. 安全系统
2. 表面检测
3. 定位
4. 二维测量比较
5. 二维码识别
6. 二维位置定位
7. 二维物体识别
8. 光学字符识别
9. 机器人视觉
10. 交通监视和驾驶辅助系统
11. 三维测量比较
12. 三维物体定位
13. 三维物体识别
14. 特征检测
15. 完整性检测
16. 颜色检测
17. 一维码识别
18. 印刷检测

方法

  1. Blob分析

    对前景/背景分离后的二值图像,进行连通域提取和标记。核心思想是将一块区域内 灰度突变 的范围找出来。

    threshold, connection, union, select_shape

    这个用得太多了,就不举例了。

  2. Hough转换

    霍夫变换,一种使用参数估计做特征提取的技术。结合边缘检测使用,有的规则的边缘,比如近似直线或者圆可能有部分小区域被挡住了,使用霍夫变换可以估计出边缘实际的形状。

    举例:



    这张图上面的边缘附近有一些特别亮的区域,导致这个边缘检测到的结果会与实际我们关心的边缘不一致,使用边缘检测结合霍夫变换,可以估计出上边缘的实际情况,近似的是下图中的这条红线:



    使用霍夫变换得到边缘线的同时,还可以得到边缘线相对于垂直方向的角度。

     算子多以hough开头
  3. 边缘提取

    1. 像素精度

      sobel_amp:使用sobel算法求边界,这里用来求边界的卷积模板是已经定义好的3*3模板,如果给大于3的模板尺寸,会自动先用S-2的其他定义的模板对图像做光滑处理。这里求边缘时做卷积在对应位置乘积之后还有一些操作,可选;

      derivate_gauss:通过求导求边缘,这里的求导方法有多种可选,有的可以用来求垂直边缘,有的求水平边缘,有的都能求出来

      edges_image:使用Deriche,Lanser,Shen或者Canny过滤器求边缘,网上关于这些算法到底是怎么回事的介绍几乎找不到,只能知道有这些选项

      edges_color,frei_amp,kirsch_amp, laplace,prewitt_amp,roberts,robinson_amp等等,这些不同的求边缘算法主要在定义的卷积核不同上。

      举例:



    2. 亚像素精度,精度上比像素精度更高一些,不罗列了,算子名称中多包含contours,sub pix,xld

      edges_sub_pix:使用Deriche,Lanser,Shen或者Canny过滤器求边缘
  4. 变化的模板

    1. create_variation_model相关算子。

    使用没有问题的图片创建模板,或者使用一些没有问题的图片训练模板,再在目标图像上找匹配,可以用于识别单一的变化不大的物体,能够准确的识别出匹配的图像,通过与模板图像做比对,能够找出缺陷。

    直接拿halcon中的图举例:



    2. create_shape_model/create_scaled_shape_model相关算子。

    3. create_metrology_model相关算子。

  5. 定位

    主要还是结合图片上一些已知特征做特征筛选来做定位,或者通过模板匹配来做定位

  6. 对焦测距

    利用多倍聚焦提取深度 depth_from_focus,同一物体不同聚焦下的图组成的多通道图片提取深度(是否可以用在对理论上是同一平面的物体检测凹陷或凸起上?这个模型可能只是一个估计出来的模型,是否能够发现细小的凹陷或凸起?需要解决的问题还有怎样一次性快速获取到不同倍数聚焦下的图片,感觉上有点类似于3d建模)

  7. 多目立体视觉

    需要在摄像机标定得到的参数的基础上做。

    通过不完全相同的角度拍摄的多张标定后的图片重建3d表面,reconstruct_surface_stereo

  8. 二维码识别

    用于二维图像上的二维码识别和解析,支持五种主流的编码和3种GS1编码模式的二维码。

  9. 分类器

    1. 根据内部已经定义好的特征(6大类:颜色,灰度,区域,旋转,缩放,纹理),自动选择合适的特征做训练,训练的对象是属于某一种类的那个区域的特征(相关算子:get_feature_names,calculate_features,create_class_train_data,add_sample_class_train_data,select_feature_set_knn,classify_class_knn等)
    2. 使用各种分类器做分类,需要把模板图片自己分好类,用模板图片做训练,各种分类器的使用都是差不多的,都是create_class_xxx,add_samples_image_class_xxx, train_class_xxx, classify_image_class_gmm。
    3. 二维多通道图像根据两个通道的特征结合起来基于二维直方图做分类
    4. 两张单通道图像基于二维直方图做聚类分割
  10. 光度立体法

    用多张不同光源拍摄的同一物体的图片重建物体表面,通过对重建表面后获取到的梯度图像或者反射图像再处理能够相对容易的找出凹凸的缺陷

    photometric_stereo

    更适合用在表面漫反射的物体上,不适合表面有较强镜面反射的物体上。

  11. 光学字符检测和识别

    1. 自己训练并检测需要识别的字符:create_ocv_proj, train_ocv_proj, do_ocv_simple
    2. 使用各种分类器做光学字符检测:create_ocr_class_xxx, write_ocr_trainf, append_ocr_trainf, train_ocr_class_xxx
    3. 根据已有的模型直接检测图片种的字符,已有的模型有多种可选:create_text_model_reader, find_text
    4. 直接做字符检测:select_characters
  12. 基于样本的识别

    通过一些图片作为样本训练之后再识别同类物体,每张图片是一种物体

    create_sample_identifier, add_sample_identifier_object_info, prepare_sample_identifier, train_sample_identifier, apply_sample_identifier, get_sample_identifier_object_info

  13. 激光三角测量

    运用线结构光,举的例子代码太长了,还待研究。。。

  14. 几何测量

    角度测量,图上的各种距离测量(这个可能可以用于测量缺陷长度)

  15. 几何转换

    缩放,旋转,扭曲,平移

  16. 快速傅里叶变换

    将图片转换到频率域上,使用特定的过滤器做卷积,达到某种效果。可能用到的滤波器:平滑滤波器(gauss filter, binomial filter可以用来抑制细小的噪声),带通滤波器(bandpass filter允许特定的波形通过)等。

    在频率域上做处理,去除除了中心点之外的高亮点可以去除图象上的噪声。

    处理前后:



    处理前频谱图:



    处理后频谱图:

  17. 轮廓线处理,和边缘有点类似,不过轮廓线一般是亚像素精度的

    找轮廓线,分割轮廓线,根据轮廓做图形拟合

    gen_contours_skeleton_xld

  18. 模板匹配

    基于点,灰度值,描述符,相关性,形状,组件的模板匹配,可以处理轻微的变形

    参考:https://www.cnblogs.com/bile/p/10551593.html

  19. 偏折术

    可以应用于3d建模,适合于表面有反光的物体的建模。具体用法待研究。

  20. 拼接

    针对不在同一平面的物体或不能一次性拍摄完整的物体,拍摄多张照片后,将这些图像拼接到一个平面上。

    例如柱状塑料瓶的包装纸,一个很大的房间的全局图。

    这里面用到的一个技术是将坐标转换到世界坐标系中,这个技术也要求摄像机已经做过标定。

  21. 三维匹配

    1. 表面变形
    2. 基于表面
    3. 基于形状
  22. 摄像机标定

    目的是为了建立空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,需要建立摄像机成像的几何模型,求解这个模型的参数。需要求解出摄像头的畸变参数。

    一般图像的四边畸变得比较厉害,拍摄的用于标定的图片应尽量将标定板放在四周的都有一些。

    根据标定后的参数,可以用于校正拍摄到的畸变图片,校正过的图片可以用来做测量等处理。

    标定后做校正举例:

    校正前:



    校正后:

  23. 深度学习

    处理分类,目标检测,语义分割。halcon中提供了三种预训练好的模型可供再训练。

  24. 特征提取及分析

    通过提取到区域的中心,孔洞,纹理,离心率,致密性,面积,凸度,等一系列特征做分析

  25. 形态学

    膨胀,腐蚀,开,闭,区域填充,扩展,连通

  26. 一维码识别

    一维条形码的检测

  27. 运动检测

    针对同一场景下的连续拍照,有几种常用的手段:

    1. 做光流检测,定位移动的物体
    2. 做图像减法,通过减到的结果检测发生位移的物体
    3. 对两张图片做动态阈值分割,能够找出不同区域
    4. 做场景流检测,定位

缩写词

  1. HNF:Hesse normal form,第一次在hough变换中遇到。
  2. ROI:region of interest,感兴趣区域
  3. DFF:depth from focus

附录:

  1. 已经定义好的过滤器大类:

    1. 算数相关:灰度的加减乘除,乘方,开方,三角函数,正反变换
    2. 位运算
    3. 颜色变换,图像通道处理
    4. 求边缘
    5. 图像增强
    6. 傅里叶变换
    7. 几何变换:缩放,移动,镜像,旋转
    8. 图像修复相关
    9. 寻找线条
    10. 噪声相关:添加噪声
    11. 光流
    12. 角点检测
    13. 场景流
    14. 光滑图像
    15. 提取纹理
    16. 维纳滤波:降低平稳噪声

halcon小结的更多相关文章

  1. halcon学习方法小结及以后的学习计划

    学了这么久的halcon,感觉还是没有摸到门路. 记录一下这么久以来经历过的学习阶段: 看冈萨雷斯<数字图像处理>这本书,使用halcon做练习. 我实际上只比较完整地看了这本书的形态学处 ...

  2. 从零开始编写自己的C#框架(26)——小结

    一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...

  3. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  4. java单向加密算法小结(2)--MD5哈希算法

    上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...

  5. iOS--->微信支付小结

    iOS--->微信支付小结 说起支付,除了支付宝支付之外,微信支付也是我们三方支付中最重要的方式之一,承接上面总结的支付宝,接下来把微信支付也总结了一下 ***那么首先还是由公司去创建并申请使用 ...

  6. iOS 之UITextFiled/UITextView小结

    一:编辑被键盘遮挡的问题 参考自:http://blog.csdn.net/windkisshao/article/details/21398521 1.自定方法 ,用于移动视图 -(void)mov ...

  7. K近邻法(KNN)原理小结

    K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ...

  8. scikit-learn随机森林调参小结

    在Bagging与随机森林算法原理小结中,我们对随机森林(Random Forest, 以下简称RF)的原理做了总结.本文就从实践的角度对RF做一个总结.重点讲述scikit-learn中RF的调参注 ...

  9. Bagging与随机森林算法原理小结

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...

随机推荐

  1. charles SSL代理设置

    本文参考:charles SSL代理设置 charles SSL代理设置 SSL Proxying Srtting 这里最常用的设置就是第一个ssl proxying,这里记录了需要捕获哪些ssl的信 ...

  2. 一个vue练手的小项目

    编程路上的菜鸟一枚 : 最近接触了vue 然后写了一个练手的项目 使用vue-cli脚手架来搭建了的项目 技术: vue2  + vue-router  + ES6 + axios 框架有 mint- ...

  3. Day20 磁盘管理2之RAID卡

    1.磁盘的基本分区Gdisk 前面我们已经了解到fdisk分区,但fdisk不支持给高于2TB的磁盘进行分区.如果有单块盘高于2TB,建议使用Gdisk进行分区. 1.使用gdisk进行磁盘分区 1. ...

  4. Day 11 文件的权限

    1.什么是权限? 我们可以把它理解为操作系统对用户能够执行的功能所设立的限制,主要用于约束用户能对系统所做的操作,以及内容访问的范围,或者说,权限是指某个特定的用户具有特定的系统资源使用权力.* 2. ...

  5. Spring Cloud 系列之 Spring Cloud Stream

    Spring Cloud Stream 是消息中间件组件,它集成了 kafka 和 rabbitmq .本篇文章以 Rabbit MQ 为消息中间件系统为基础,介绍 Spring Cloud Stre ...

  6. [LeetCode] 面试题之犄角旮旯 第叁章

    题库:LeetCode题库 - 中等难度 习题:网友收集 - zhizhiyu 此处应为一个简单的核心总结,以及练习笔记. 查找一个数“在不在”?桶排序理论上貌似不错. 回文问题 ----> [ ...

  7. 神奇的互换身体术--java的类型擦除

    故事背景 <互换身体>是由环球影业发行的喜剧电影,于2011年8月5日在美国上映.该片由大卫·道金执导,瑞安·雷诺兹.杰森·贝特曼.奥利维亚·王尔德等主演.该片讲述了一位居家好男人和一位蜂 ...

  8. 死磕 java同步系列之zookeeper分布式锁

    问题 (1)zookeeper如何实现分布式锁? (2)zookeeper分布式锁有哪些优点? (3)zookeeper分布式锁有哪些缺点? 简介 zooKeeper是一个分布式的,开放源码的分布式应 ...

  9. 引用极光jar包之后出现控制台日志打印不出来的问题。解决!

    由于极光的jar包中引用的有log4j,项目本身也引用有log4j,如果版本有冲突,则会出现控制台日志记录打印不出来的现象.解决:引用极光jar包的时候,排除log4j. <dependency ...

  10. eShopOnContainers学习系列(二):数据库连接健康检查

    项目里使用数据库的时候,我们有时候需要知道数据库当前的健康状态,特别是当数据库连接不上的时候能够立马获悉.eShopOnContainers里存在着大量的服务健康.连接健康的检查,数据库连接是其中之一 ...