[视觉概述] 机器视觉应用方向、项目流程及学习思路总结

  • 📢博客主页:https://loewen.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉
  • 📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨


一. 机器视觉应用方向

   机器视觉则是建立在计算机视觉理论的基础上,偏重于计算机视觉技术工程化。与计算机视觉研究的视觉模式识别、视觉理解等内容不同,机器视觉重点在于感知环境中物体的形状、位置、姿态、运动等几何信息。机器视觉主要分2D和3D两个方向:

2D

  1. 识别定位:①Blob分析(主要包括二值化形态学处理特征选择。ps:受光照影响较大)②模板匹配(常用的是Shape匹配Ncc匹配,有时还会用到可变形模板);

  2. 符号需求(一维码、二维码、三维码、OCR光学字符识别

  3. 测量类(单目相机的标定相机自标定);

  4. 缺陷检测系列;

  5. 视觉+运动控制板卡+机器人:手眼抓取(涉及手眼标定抓取等方面)

3D

  1. 双目及多目相机标定;
  2. 鞋点胶;
  3. 无序抓取:参考Halcon【实例程序】中【方法】【多目立体视觉】locate_pipe_joints-stereo.hdev案例中;
    核心知识点:3D手眼标定——标定3D传感器和机械手之间的关系;
  4. 点云数据+深度学习;

工具Halcon(德国)VisionPro(美国康耐视)LabViewOpenCV+C++Emgucv+C#)、SherlockEvsionInsightMatlab;

推荐Halcon===>>>> OpenCV ====>>>> 源码自己编写

语言主流C#+halcon(适合初学、开发效率快,但执行速度相对慢一些,因为C#需要翻译成机器语言)、C+++QT+halcon(适合有一定基础、开发效率慢(对开发者要求高一点),但执行速度更快,因为C++直接生成.exe文件,是操作系统可以直接执行的机器语言)、C+++MFC+halcon


二. 项目总体流程

做机器视觉的项目,拿到项目时一般遵循如下流程:

(1)需求分析(2D)

              问题               说明
确定检测物体检测的目标物是什么?形状是什么样的?物体具体尺寸是多少?
检测哪些指标具体检测什么指标?有无?状态?尺寸?位置?粘连?差异?毛刺 ?颜色?
工作距离安装摄像机到被测物体的最大允许距离是多少?可否自由调节?
分辨率多高相机的测量尺寸精度是多高?
检测速度多快全自动测量还是手动?每分钟测量多少个?
安装空间被测零件周围是否有安装光源的位置?是否有适合安装摄像机头的位置?怎么样固定比较合适?
颜色被测物体是什么颜色?我们是否需要对颜色判别?是否可以利用颜色差异帮助我们实现检测目的?
材质物体是什么材料的,表面光学性质怎样?
合格判据合格/不合格的定义
工位信号有工位触发信号还是需要自动连续拍照?
剔除或控制方式是否需要自动剔除残次品或控制机器动作?怎么样对不合格品进行剔除?使用什么信号格式,在什么位置进行?
工作环境工作环境的温度、湿度、粉尘、防水、杂散光线情况
交货日期这是不言而喻的

(2)方案设计(硬件):

  • 2D:根据客户应用的场合不同,选择相应的镜头相机、支架、光源及如何打光(感兴趣的可看看《工程光学》一书)等。
  • 3D:自己搭建双目结构光、激光三角等3D平台,或直接买市面公司成熟的3D方案(首先,因为速度更快、精度更高一些),相关3D硬件平台参考:主流3D光学视觉方案

(3)概要设计(软件):

  • 包含软件架构体系,视觉开发环境(VC+++Halcon还是C#+Halcon等);
  • 算法流程(怎么通讯、怎么识别等)。

(4)详细设计(软件):

  • 各个功能模块如何做,包括图像采集模块、处理模块、包括算法模块,如何通讯等;
  • 通常将每个模块形成一个动态库,调用相应的接口函数即可,项目图像采集调用SDK也是调用动态库的过程;

(5)软件编码 —— (6)测试、调试和修改 —— (7)客户交付、确认 —— (8)调试:根据客户反馈结果来不断的修改程序Bug。

(9) 达到客户需求,最后交付客户及软硬件操作文档 —— (10)后期维护。


三. 视觉常规算法流程

  1. 图像采集
  2. 图像预处理:包含几何变换、灰度处理、图像增强、图像滤波、二值化、图像细化等
    注:图像预处理在视觉算法中一般是可选项,图像效果很好的时候可跳过该步
  3. 定位(blob分析、模板匹配)
  4. 特征提取: 包含几何特征(面积、周长、矩形度)、纹理特征(与灰度相关,如熵、能量值)、概率特征、角点、特征描述算子特征等,直接影响定位、识别的效果
  5. 对特征区域进行处理(根据不同工业需求选择对应的检测识别算法)
  6. 结果显示

四. 机器视觉工程师需要具备的能力

4.1 图像处理相关知识
  1. 图像处理的基本理论知识(图像理论的基础知识)
  2. 图像增强(对比度拉伸、灰度变换等)
  3. 图像的几何变换(仿射变换,旋转矩阵等)
  4. 图像的频域处理(傅里叶变换、DFT、小波变换、高低通滤波器设计)
  5. 形态学(膨胀、腐蚀、开运算和闭运算以及凸壳等)
  6. 图像分割(HALCON里的Blob分析)
  7. 图像复原
  8. 运动图像
  9. 图像配准(模板匹配等)
  10. 模式识别(分类器训练,神经网络深度学习等)

学习参考资料:

  • 经典教材:冈萨雷斯的《数字图像处理》及对应的MATLAB版

  • 杨丹等编著《MATLAB图像处理实例详解》

  • 张铮等编著《数字图像处理与机器视觉——Visual C++与MATLAB实现》

  • 左飞编著的《数字图像处理:原理与实践(MATLAB版)》

  • 左飞编著的《数字图像处理技术详解与Visual C++实践》

  • 谢凤英编著的《Visual C++数字图像处理》

  • 《精通系列·精通Visual C++数字图像处理典型算法及实现(第2版)》

4.2 软件编程功底

软件功底的作用是软件的架构设计分析,架构包括UI层设计、业务逻辑层开发、数据层开发。以下三个方面,每个方面至少会一种,具体选择视所在公司应用而定:

  • 编程语言:C#,C,C++(自己用哪个就学哪个)
  • 界面框架:C#界面,Qt界面,MFC界面(比较老了,以前的项目用的较多)
  • 图像算法处理软件:HALCON,VisionPro,OpenCV等

学习资料参考:

  1. C# 可以看书籍《C#从入门到精通》、《Head First C#》、《C#入门经典》、《C#图解教程》、《C#高级编程》、《.Net Frameword 高级编程》、《CLR via C#》

  2. C 语言的学习主要看谭浩强写的C语言相关知识

  3. C++主要看《C++ primer plus》书籍

  4. Qt 学习可以看《Qt Creator快速入门》(入门)、《C++ GUI Qt4》(进阶)

  5. MFC 的学习主要看孙鑫编写的《VC++深入详解》这本书及相应的视频教程,并在VC++6.0软件或VS2010等软件上编写程序和实践

4.3 视觉硬件知识

主要在你设计方案时相机、镜头、光源等选型时起到关键作用。

学习资料参考:

主要阅读书籍《工程光学》、重点放在几何光学方面,了解成像原理及相应的光路分析,知道光源的特性、镜头分辨率、相机分辨率等方面的知识。


五. 学习机器视觉的一些建议

1.学习机器视觉一定要结合项目实战,在实践中学习总结经验教训,系统化学习所需知识。

2.补充一定的C++和c#知识,进行VS联合开发,客户现场的学习和现场调试,不断学习示例分析,掌握方法套路流程。

3.根据实际问题,学习模块调用,按照方法套路学习。

4.最好是先用Halcon等视觉处理软件实现图像处理部分,然后在VS开发软件中利用MFC或Qt等图形界面实现出来,实践学习是最好的方法。

机器视觉学习的发展趋势是结合神经网络、深度学习进行相应的人工智能机器视觉开发。


下雨天,最惬意的事莫过于躺在床上静静听雨,雨中入眠,连梦里也长出青苔。
### 机器视觉工程师学习路径 #### 学习路线概述 对于希望成为机器视觉工程师的人来说,构建坚实的基础至关重要。初期阶段应掌握编程基础以及基本的数学概念,特别是线性代数、概率论和统计学[^1]。 #### 编程能力培养 Python 是进入该领域的一个理想起点,因为其简单易懂且拥有强大的库支持,如 OpenCV 和 TensorFlow 等用于图像处理和深度学习框架。通过一系列针对 Python 的教程视频可以快速上手这门语言[^2]。 #### 数理基础知识积累 深入理解矩阵运算、向量空间理论等知识点有助于更好地把握算法背后的逻辑。同时也要熟悉微积分中的梯度下降法等相关优化技术,在后续研究中会频繁遇到这些问题。 #### 图像处理与模式识别 接下来要专注于图像预处理技巧的学习,比如滤波器的应用、边缘检测方法的选择等。此外还需探索特征提取的方式,包括但不限于 SIFT 特征描述符、HOG 描述子等经典模型及其改进版本。 #### 计算机视觉核心概念 进一步探讨如何利用计算机模仿甚至超越人类双眼的工作方式——即所谓的“双目立体视觉”,还有单目或多视角几何关系等内容。值得注意的是,除了仿生途径外,也有许多基于纯工程技术思路解决问题的成功案例存在。 #### 实践项目经验获取 参与实际工程项目能够极大地促进个人成长。可以从简单的物体分类任务做起,逐渐过渡到更复杂的场景重建或者动作捕捉等领域内课题的研究当中去。 #### 高级主题探究 随着技术水平不断提高,可尝试接触一些前沿方向,例如增强现实(AR)/虚拟现实(VR),自动驾驶汽车感知系统的设计等等。 --- ### 技能要求 - **编程技能**: 掌握至少一种主流编程语言(Python/C++), 并熟练运用相关工具链; - **数据结构&算法**: 对常见数据结构有着深刻认识并能灵活应用于解决具体问题之中; - **数学功底**: 扎实的高等数学背景尤其是线性代数方面的能力不可或缺; - **专业知识**: 深入了解相机参数校准流程、光照条件影响因素评估等方面的专业术语和技术细节; - **软实力**: 跨学科合作意识强烈,善于沟通表达自己的想法观点;具备良好的团队协作精神。 --- ### 知识体系构成 - 基础课程:离散数学、信号处理导论、随机过程简介等预备科目; - 中级课程:数字影像形成原理讲解、多视图几何概览、卷积神经网络(CNNs)入门指南; - 进阶课程:高级专题研讨班(SLAM同步定位建图)、特定应用场景下的定制化解决方案设计原则分享。 --- ### 成长路径规划 从初学者成长为一名合格乃至优秀的机器视觉专家并非一蹴而就的过程,而是需要经历以下几个重要发展阶段: - 初期:夯实根基,广泛涉猎各类基础知识; - 中期:聚焦某一细分赛道深耕细作,积极参与开源社区贡献代码或撰写博客文章传播知识; - 后期:引领创新潮流,主导大型科研计划实施落地,推动行业发展进步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丶布布

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值