(三)掰开了,揉碎了,说经典halcon中的那些算子(三)形态学、仿射变换和颜色识别

膨胀:只要结构元素与原区域有重合,那么中心元素就新增。

腐蚀:只有结构元素被原区域完全包含,那么中心元素才保留,否则中心元素就去掉。

开运算:减少像素,断开区域。先腐蚀,后膨胀。

闭运算:增加像素,连接区域。先膨胀,后腐蚀。

形态学结构元素,半径越大,程度越深。膨胀和腐蚀要比开闭运算程度厉害。

  图像处理流程:

  1. 采集
  2. 预处理:
    1. 中值滤波,均值滤波,高斯滤波。
    2. 频域中的高通滤波、低通滤波、高斯滤波。
    3. 动态范围gray_range_rect求最大亮度,最小亮度,让最亮的更亮,让最暗的更暗。
    4. 灰度图像形态学变换:并不改变形状,但改变亮度。gray_erosion灰度图像腐蚀相当于将图像变暗,对灰度图像膨胀,相当于让图像变亮。
    5. scale_image:图像线性变换。
    6. 反转inverse。
  3. 特征提取或形态学处理:
  4. 显示、训练、识别。

定位的两种方法:

1、Blob分析:分析像素块,受光照影响明显。(成像决定了项目的成败。)

2、模板匹配:模板角度、位置。有找mark点,有blob分析找特征的。周长等。点的坐标和角度。然后做仿射变换。

仿射变换是一种几何变换,投影变换。只对形状发生变化。变换到标准位置。

矩阵变换。平移、旋转、缩放。矩阵可以由一个函数求得。

3、深度学习定位检测:


求仿射变换的两种方式:

1、在【实例程序】中【分类】找到【几何转换】中的affine_trans_region.hdev。

第五行中draw_region,画一个区域,左键画图,右键确认。对于区域会有一个拟合椭圆,长轴中极性较强的一端作为椭圆的正轴。与水平轴的夹角作为旋转夹角。逆时针为正。

2、在【Blob分析】中找到check_blister.hdev。

通过Blob分析中shape_trans将图像凸性检测寻找外接轮廓凸性检测的椭圆实现定位,然后通过orientation_region求出角度。vector_angle_to_rigid直接求得旋转矩阵。然后通过仿射变换的矩阵affine_trans_image来旋转。


测量助手:

在Halcon中【助手】中【打开新的measure

在【输入】中可以绘制直线绘制圆弧来测量距离。可以选择标定不标定,如果有标定可以测量出实际尺寸,若未标定,测出像素距离值。

在【边缘】中:halcon中规定,由亮变暗为正边缘,由暗变亮为负边缘。在【变换】中:可以选择正边缘positive和负边缘negative。按照箭头方向【位置】中选择first和last。若将边缘组成边缘对,则两个边缘正负组合在一起。显示区域。有宽度。


遇到问题不要怕,分析问题出现的原因,想出解决问题的办法。

这个世界上只有没有发现的问题,没有解决不了的问题。最多只有没有找到解决办法的问题,而没有解决不了的问题。

技术一定要学活,改良才有吸引力。创新才有吸引力。常规问题有套路,具体问题具体分析。


如果采用RGB三通道图像处理,首先考虑转换颜色空间是否更容易处理些。在车牌中HSV对于蓝底的车牌,饱和度s测量更直接。特别是背景复杂,不好直接二值化的时候。

1、图像采集

2、车牌定位

3、旋转矫正

4、字符分割

5、识别显示


图像处理的10大基本领域划分。

1、图像处理基础:(RGB\HSV、GRAY)

2、图像灰度变换(scale_image)

3、图像增强(emphasize):增强对比度,方便后期处理。

4、图像几何变换(放射变换,极坐标变换)

5、图像分割(blob分析、边缘检测、分水岭法、区域增长法、reduce_domain)

6、图像的频域:主要应用于缺陷检测。高通、低通、带通。频段分析。

7、图像形态学:膨胀、腐蚀、开运算、闭运算。

8、图像复原:运用图像退化模型对图形复原,运动模糊。

9、运动图像:相邻两帧图像之间的分析。运动检测:差分的思想就是从此处来的。

10、图像配准:模板匹配(基于形状、灰度、相关性)、

Halcon的核心思想:Blob分析逼近思维:先选定一个区域,然后再缩小区域,然后再选定区域。受光照影响显著。工业应用上成像条件必须稳定可靠。


小技巧,通过【画图】点击【编辑颜色】就可以看到HSV和RGB对应关系。


MFC架构:

1、创建窗口类

2、注册窗口类

3、创建窗口

4、更新显示窗口

5、消息循环

软件层级:

1、UI层:

2、业务逻辑层:Halcon完成算法逻辑,配合业务完成工作。

3、数据层:


在VS中配置连接halcon

1、配置.h

2、配置lib

3、配置dll文件

4、include


reduce_domain():裁剪图像,只是划定了区域,并非实际裁剪,如果保存图像还是原图大小。


工业需求应用场景:

二维:1、识别定位;2、OCR光学字符、一维码、二维码;3、测量;4、缺陷检测;5、运动控制-手眼标定。

三维:1、双目标定;2、3维点云数据重建。


C#要求:

winform下编程:

1、相机采集、图像采集:halcon与C#变量转换

2、串口通信,网口通信

3、多线程编程。

4、访问文件。

5、界面编程。控件编程。


1、在halcon中将程序写好。算法流程

2、导成C#文件。

3、配置、让VS识别halcon,把halcon看做成dll动态资源库。

4、逻辑调用和开发。

配置:

1、【添加引用】右键工程:【依赖项】中【添加项目引用...】【浏览】【浏览(B)】

路径为:C:\Program Files\MVTec\HALCON-17.12-Progress\bin\dotnet35。根目录下:dotnet35中的halcondotnet.dll。添加确认即可。

2、【添加命名空间】在命名空间中加上:

using HalconDotNet;

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值