ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

基于OpenCV的专用图像处理算法的设计和实现

2022-07-03 16:35:14  阅读:144  来源: 互联网

标签:课程 halcon OpenCV 算法 图像处理 识别 过程


L1 课程简介和环境准备
1、课程简介
算法设计是典型的经验工程,不仅需要工程师对问题本身有准确的认识、对函数库工具有熟练掌握,而且需要在算法实现过程中摸索出调优套路。这个道理和“如何写优秀的代码”是一样的,我认为最好的方法就是去学习成功的经验、在模仿的基础上进行扬弃。现实的需求是多种多样的、工具本身也在不断变换,唯有分析问题的思路和解决问题的信心毅力,是可以通过不断的项目实践进行积累的。
由于工作等原因,我较为独立地接触、解决过一些问题,也重复认识到算法设计是一个复杂过程,想通过一个现成函数就解决问题基本是不可能的。在探索的过程中,基础的方法是高中物理中学到的“控制变量法”,也就是逐步量化重点,最终通过搭建PiPline接近目标。这个过程反反复复,甚至若干时间之后重新回顾代码,发现之前的步骤中有许多可以优化的地方,应该可以做到更好。
本门课程,就是我回顾过往代码的一类成果。这一次,我选择“钢管识别”“血管识别”和“毛发识别”3个识别算法来进行讲述。从名字上很容易看出,这三个都是识别算法,目的都是计数和测量,只是解决的对象不一样,这就为我们课程内容提供了较大空间。需要注意的是,由于采集硬件等条件不同,这里的专用算法一般不能直接复用,但是这并不妨碍我们课程的重点,那就是通过对过往算法的重现,分享我对专用算法设计实现的心路过程,从而帮助你设计出解决自己问题的算法。由于个人见识和经验有限,课程中肯定存在错误和偏驳,希望能够以批判的眼观看待,最后期待你的关注。
2、内容组织
课程的重点是3个识别算法,他们既有类似的地方又有自己的个性。因此在内容组织这块,计划采取模块化和HeadFirst的方式。每一个子模块包括需求分析、结果展示、解题思路分析、技术细节讲解和最后的集成调优。3个识别算法之前是解释算法设计的基本思路,在全部介绍完成后会有对比。我想通过一张图来进行说明最为清晰。虽然3个算法目前我已经有解决方案,但是为了方便描述,我会同步提供实际采集的少量数据,并根据实际数据进行参数优化。目前只是初步设想,在实现过程中可能会有所变换。

3、环境准备
为了适应当前现状,算法一定是同步提供C++和Python的,因此在实现过程中我们同时提供。由于目前我掌握vsstudio+imagewatch提供了更为方便调试环境,所以在描述过程中更多地会看到这个环境。这里将课程使用环境安装方法进行简要解释。

4、浅谈学习过程
反思自己如何一步一步学习起图像处理的,和本门课程很契合,分享给大家:

第一个阶段,从不了解到了解
刚开始做图像处理用的是halcon,halcon的官方自带的算子和例程很多,然后就想办法融合到csharp中去,就能够得到完整的程序。实际上,我一开始使用halcon来做图像拼接,但是halcon的版权的呀,还有和界面的交互的问题也多,苦恼时看到一本书,叫做《学习OpenCV2》,听老师傅说这个很厉害,翻了一翻——完全看不懂呀!

第二个阶段,模仿积累自己的东西
如何自学OpenCV,关键是模仿。一开始不是看《学习OpenCV2》,而是其他书。我采用的方法是在当当、china-pub中搜索opencv这个关键字,然后找到所有已经翻译成中文的opencv方面的书,然后再亚马逊上面搜索opencv,再找到那些还没有翻译的原版。基本上,OpenCV相关的书英文的我都有,比较重要的有中文的。书拿到了,我认为比较高效的方法就是——快速过一遍,有了基础;然后跑里面的例子,增加感性的认识;然后再根据需要重构,反复反复。形成自己的基础算法库GOCVHelper,能够复用一些常用的功能。结合实际工作,比如做工控方面程序,总要是和界面进行沟通,用过MFC、WinForm和QT、手机端和webapi,在现实项目中积累经验。

第三个阶段,算法设计解决实际问题
做到这个过程,还只是使用OpenCV做项目。但是随着项目的深入,很多时候客户的要求,不是有现成的算法的,也不是通过现有算法进行拼接能够解决的。怎么办?只能自己去研究,有一些问题是有论文的,也可能有书,运气比较好还有matlab代码;也会遇到了太少见了,论文也比较少。这个时候,需要的能力,还是最基本的英语和数学。但是就已经形成一定的竞争能力了,而且在这个过程中,很容易就形成自己“打磨算法”思维方式,对未知问题能够提出可行的思路。

下一个阶段,人工智能。现在随着深度学习的不断平民化,很多传统问题是否可以使用AI的方法进行解决?如何选择AI的框架和现有CV技术结合,这是下一步需要做的事。

标签:课程,halcon,OpenCV,算法,图像处理,识别,过程
来源: https://www.cnblogs.com/jsxyhelu/p/16440032.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有