栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

开课吧 你生活 工作中的计算机视觉

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

开课吧 你生活 工作中的计算机视觉

计算机视觉:对图像分析得到的特征进行分析,提取场景的语义表示,让计算机具有人眼和人脑的能力。这时处理的是多幅图像或者 序列图像,当然也包括部分单幅图像。

关于图像处理,图像分析和计算机视觉的划分并没有一个很统一的标准。一般的来说,图像处理的书籍总会或多或少的介绍一些图 像分析和计算机视觉的知识,比如冈萨雷斯的数字图像处理。而计算机视觉的书籍基本上都会包括图像处理和图像分析,只是不会介绍 的太详细。其实图像处理,图像分析和计算机视觉都可以纳入到计算机视觉的范畴:图像处理->低层视觉(low level vision),图像 分析->中间层视觉(middle level vision),计算机视觉->高层视觉(high level vision)。这是一般的计算机视觉或者机器视觉的划分 方法。在本文中,仍然按照传统的方法把这个领域划分为图像处理,图像分析和计算机视觉。

3. 图像处理和计算机视觉开源库以及编程语言选择

目前在图像处理中有两种最重要的语言:c/c++和 matlab。它们各有优点:c/c++比较适合大型的工程,效率较高,而且容易转成 硬件语言,是工业界的默认语言之一。而 matlab 实现起来比较方便,适用于算法的快速验证,而且 matlab 有成熟的工具箱可以使用,比 如图像处理工具箱,信号处理工具箱。它们有一个共同的特点:开源的资源非常多。在学术界 matlab 使用的非常多,很多作者给出的源 代码都是 matlab 版本。最近由于 OpenCV 的兴起和不断完善,c/c++在图像处理中的作用越来越大。总的来说,c/c++和 matlab 都必须掌 握,最好是精通,当然侧重在 c/c++上对找工作会有很大帮助。

计算机视觉/图像算法/模式识别 工程师们使用的主流编程语言

1) 重中之重:编程语言之 C/C++ 公司面试除了考查应聘者的图像处理基础知识、思维逻辑和个人品性之外,在个人能力之中最重要的一条就是 C/C 的功底,很多学生朋 友们在学校求学阶段并不重视 C/C++的学习,导致找工作时处处碰壁(不过对于来参加面试的朋友,如果有较强的逻辑思维或图像理论功 底,即使 C/C++ 功底弱些,企业还是会偏爱的,毕竟 C/C++ 只是一个工具,只要给些时间去钻研还是可以调高的,但是逻辑思维能力 和图像理论功底却不是短时期就能提高的。不过一般逻辑思维和图像理论比较强的人,其 C/C 水平也是不错的)。

为啥要这么重视 C/C++ 呢?答案很简单,与绝大多数其它开发语言相比:C/C++ 的应用领域无法被超越、程序运行效率无法匹敌(当然汇 编语言除外),是使用人数最多、跨平台最广的语言工具(适用于 windows/linux/dsp/arm/单片机,当然还有其它一些平台)。简单的说,对 于多数应用,其它语言能做的事情 C/C++ 几乎都能做,其它语言不能做的事情 C/C++ 也可以做。

2) 辅助工具之:MATLAB

百度百科中是这么说的:“MATLAB 是美国 MathWorks 公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计 算的高级技术计算语言和交互式环境,主要包括 MATLAB 和 Simulink 两大部分。”

MATLAB 本身是一个不错的仿真、建模工具,但不适用于应用级项目的开发,原因很简单:效率与 C/C++ 无法匹敌、不夸平台。(虽然 后来出来了 codegen 可以将 MATLAB 部分代码转换为 C++,但自动生成的还是无法与我们自己写的并优化的 C++代码相比;还有 MATLAB的mex接口能够将C++与MABLAB接口对接,既然使用了MATLAB编程,那在应用级的领域还是无法与纯C++相比)

简短说说多年前做学生时的部分学习经历:

记得多年前上大学阶段大嘴起初只跟着学校的课程学习了 MATLAB 的图像处理相关模块(后来才学的 C/C++ ),一开始觉得很兴奋,因为 只需要编写很少量的代码就可以实现很强大的效果。后来大嘴进一家计算机视觉类的公司实习,发现公司主要用的是 C/C++ ,因为 MATLAB 效率比起 C/C++ 相差几倍、十几倍、甚至几十倍,而且要命的是不跨平台,只能用于 windows 上,后来逼的自己去学了 C/C+ + ,也正因如此那以后一直到现在特别是当初找工作的时候让我受益匪浅。

对于企业,特别是私企,公司除非给你充足的时间先使用 MATLAB 做完算法功能,然后再用 C/C++ 慢慢改写,而且了解的朋友们都知 道,MATLAB 的精度与封装的函数标准与 C/C++ 有很多不一样,改写起来相对麻烦一些,这样太慢太慢太慢了,项目不等人啊。试问 人家成手能够用短时间写出 C/C++ 做图像算法并马上可以投入应用,而自己却在那边慢慢磨 MATLAB,然后再费老大劲改成纯 C(比如需 要警觉 MATLAB 与 C++精度不一样的问题、图像处理基础函数标准不一样的问题),那么老板会比较喜欢谁呢?

如果大家从最初就使用 C/C++ ,虽然一开始不数量会写的很慢,但是随着知识量和自各种库(比如图像处理库)的积累,那么总有一天 开发速度会快起来的,量的积累,质的飞跃。

说了不少,本人并不否认 MATLAB,MATLAB 做为建模、仿真以及一些验证的工作(比如图形分析和处理、图表显示、图像仿真、语音 仿真等)还是不错的,这方面大嘴绝对力挺 MATLAB,目前本人也还在使用中。

一句话:对于多数普通人来讲,如果你的目标是想进企业做为一个实力派工程师,那么大嘴建议您以 C/C++ 为主、MATLAB 为辅助工 具做开发。

3) 辅助工具之:OPENCV

随着 opencv 的问世,图像算法/计算机视觉/模式识别行业的门槛儿变低了,原因有以下几点:(1)opencv 是以 C/C ++为基础开发出来的, 适用性强,windows 下适用 opencv 开发的图像算法应用效率足够快(2)封装了很多基础图像处理函数和视觉算法,可谓“拿来即可用”。 (3)与嵌入式接口的统一趋势,如前几年大牛们人物搞出来的 EMCV(基于 C/C++ ),其基础架构和接口与 opencv 基本一致,但个人认为

EMCV 很多函数功能尚不完善,目前暂时无法与 opencv 相比。今后很多人在 windows 下基于 opencv 开发后,可以较为轻松的移植到 DSP 上,这种开发模式会是一种趋势。

说了 opencv 几条优点,但本人并不赞同只依赖 opencv 做开发,无论是图像算法行业还是其它很多行业,最重要的不是用什么工具,而是 自己的基础知识和逻辑思维方式,opencv 封装了很多基础函数,如果朋友们未搞懂其基础原理便加以使用,这种方式并不利于锻炼自己, 抽空自己实现一下 opencv 和 MATLAB 的封装好的那些基础函数吧,久而久之,你会发现自己站的高度会越来越高的。 说到这里,改写一下评述 MATLAB 时的一句话:”对于多数普通人来讲,如果你的目标是想进企业做为一个实力派工程师,那么大嘴 建议您以 C/C ++为主、OPENCV 和 MATLAB 为辅助工具做开发。”

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/833142.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号