最重要的写在前面:
文末:我曾尝试用OpenCV中算子来还原Halcon中的算子,但是受时间和经验的限制,只能进行到如下:如果后续有必须应用OpenCV的场景,再结合起来搞。
但是最重要的经验是:
1、Halcon提供了一整套解决问题的方案,而不像OpenCV那样从头造轮子。OpenCV除非经验和使用很熟,否则很难找到思路。而Halcon提供了大量的案例。
2、在Halcon中,提供了大量的方案,基于方案提供的思路用OpenCV复现的意义不大了。
3、如果非要用OpenCV,那么在Halcon中有F1帮助文档:可以查询算子的用法。除了对算法的用法解释外,还有【Possible Predecessors】和【Possible Successors】,这两者也提示了我们这个算子的前后应用操作。而且,通过算子最下面的【HDevelop例程】可以更好的找到实际的应用场景,以此来找到解决我们的问题的方案。
所以:专心学Halcon吧。
当你做一件事的时候,你就专心做一件事,把它学精。然后才有拓展的资本。发散、迁移、联想必须建立在一定专注力和理解力上,学不深,发散也不准确。画虎不像反类犬。
千万不要让OpenCV的思想,影响Halcon的学习。底层的思维可以相同,但不能依靠。灵活应变。
视觉由四门学科构成:
- 图像处理:
- 数学:
- 光学:《工程光学》
- 软件(语言)工具、软件架构
数学:矩阵变换、导数。
光学:几何光学(光路,相差、)、物理光学(衍射、干涉)。
图像有十大学科分支:
- 图像基本理论
- 图像灰度变换
- 图像增强
- 图像几何变换
- 形态学
- 图像分割
- 图像复原
- 图像频域
- 运动图像
- 图像配准
图像处理的进阶:模式识别、行为识别:真正接近人工智能的东西。:(人脸识别、车牌识别、指纹识别、虹膜识别)
安防视觉、无人机视觉、工业视觉。
二维客户需求:
- 识别定位
- 符号识别
- 测量需求
- 缺陷检测(六大方法)(难度最大)
- 手眼标定和抓取:(人手和脑的关系。)手脑运动三种通信方式:串口、网口、运动板卡。
识别定位:
基于条件:打光条件的稳定。否则视觉检测效果不好。
- blob分析+仿射变换(几何变换):blob分析:连通域分析。
Blob分析就是对前景、背景分离(阈值筛选二值化)后的 二值图像,进行连通域提取和标记。标记完成的每一个Blob都代表一个前景目标(halcon默认标红,颜色可以换),然后就可以计算连通区域Blob的一些相关特征,如:面积、质心、外接矩形等几何特征,还可以计算Blob的颜色、纹理特征,这些特征都可以作为跟踪的依据。ROI提取。- 模板匹配+仿射变换
相机的采集方式:
- 同步采集:
- 异步采集:
图像处理的常规套路:
第一步:采集图像
第二步:预处理:灰色对比度拉开。便于提取Blob。几何变换(旋转)
去噪声,中值滤波、高斯滤波(距离加权)、均值滤波。孤立点去除。
抠图,ROI提取。去掉边缘干扰。
第三步:图像分割:二值化、形态学、特征选择
第四步:识别显示、通信
形态学变换:膨胀腐蚀:
膨胀:轮廓变大
腐蚀:轮廓变小
开运算Opening:侵蚀然后膨胀。先侵蚀掉前景目标外围周边的小噪声,然后再膨胀恢复。完成前景之外的去噪。
闭运算Closing:膨胀然后侵蚀。关闭前景对象内的小孔或对象上的小黑点。区域内去噪。保证区域内的纯度。
一个是去掉前景目标中外围周边的噪点。一个是去掉目标前景内部的噪点。
第一步:图像采集:
打开Halcon中菜单栏【助手】中第一个【打开新的Image Acquisition】,在【资源】栏中【图像获取接口】中点击【自动检测接口】,然后搜索到你需要的设备。点击【连接】栏中,选择颜色空间:BGR还是Gray,代表了采集灰色还是彩色。
点击【连接】【实时】从【图形窗口】中检查是否看到了图像。
【参数】中,有相机采集参数设置:
grab_timeout:抓取延时。
shutter:快门,曝光时间。
contrast:对比度
hue:色调:是整个图像的色彩倾向:可见光光谱中能量最强时的波长。
saturation:饱和度:越高色彩越鲜艳。可见光的相对带宽。
brightness:可见光的能量强度。
sharpness:锐化,清晰度。
gamma:灰度值。参数微调。
点击【代码生成】中【插入代码】在【程序窗口】中看到生成的代码。在【采集】中:有个【控制流】和【采集模式】:控制流:有在循环中采集、仅初始化、采集单幅图像。采集模式:同步和异步。
以下是异步:先开始采集,然后同时Do something。
* Image Acquisition 01: Code generated by Image Acquisition 01
* Image Acquisition 01: Attention: The initialization may fail in case parameters need to
* Image Acquisition 01: be set in a specific order (e.g., image resolution vs. offset).
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0

本文对比了Halcon与OpenCV在图像处理领域的应用特点。强调了Halcon提供全面解决方案的优势,以及OpenCV在特定场景下的灵活性。介绍了图像处理的基本流程,包括采集、预处理、分割和识别。

最低0.47元/天 解锁文章
2万+





