膨胀:只要结构元素与原区域有重合,那么中心元素就新增。
腐蚀:只有结构元素被原区域完全包含,那么中心元素才保留,否则中心元素就去掉。
开运算:减少像素,断开区域。先腐蚀,后膨胀。
闭运算:增加像素,连接区域。先膨胀,后腐蚀。
形态学结构元素,半径越大,程度越深。膨胀和腐蚀要比开闭运算程度厉害。
图像处理流程:
定位的两种方法:
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;