Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >机器视觉中常用图像处理库都有哪些?

机器视觉中常用图像处理库都有哪些?

作者头像
小白学视觉
发布于 2025-03-06 15:35:11
发布于 2025-03-06 15:35:11
15400
代码可运行
举报
运行总次数:0
代码可运行

点击上方“小白学视觉”,选择加"星标"或“置顶

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
重磅干货,第一时间送达

当需要做一些图像处理方面的学习和研究的时候,首要任务就是选择一套合适的图像处理类库,这期我们主要简单介绍下各家图像库的一些优缺点。OpenCV,Intel IPP,Halcon,MATLAB ,OpenGL,EmguCv,AForge.net,CxImage,FreeImage,paintlib,AGG,IPL,visDSK。不足之处,还请大家多多提建议,多谢!

1. OpenCV

简介:OpenCV全称是:Open Source Computer Vision Library。是Intel®开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和一些C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。

OpenCV功能

提供对图像数据操作,图像/视频的输入输出,基本图像处理,结构分析,摄像头定标,运动分析,目标识别以及基本的GUI等的函数接口。

OpenCV模块

cv – 核心函数库;cvaux – 辅助函数库;cxcore – 数据结构与线性代数库;highgui – GUI函数库;ml – 机器学习函数库

特点:

免费,源代码公开,是一个跨平台的中、高层API 构成,它不依赖与其它的外部库,尽管也可以使用某些外部库。,为了完全独立于IPL (INTEL的图像处理库) OpenCV 复制了IplImage 和其它一些结构变量的声明。

OpenCV 为Intel® Integrated PerformancePrimitives (IPP) 提供了透明的用户使用接口。它对IPP不存在任何依赖。但如果安装了IPP,那么OpenCV将会通过自动载入IPP动态链接库来获取IPP的优势,来提升速度。

2. Intel IPP

简介:IPP“Intel Integrated Performance Primitives” ( Intel IPP )是一套跨平台的软件函数库,

他提供了广泛的多媒体功能:音频解码器(例如:H263 、 MPEG-4 )、图像处理 (JPEG) 、信号处理、语音压缩(例如:G723 、 GSM 、 AMR )和加密机制。

Intel IPP 针对大量的 Intel Microprocessor (微处理器)进行优化:Intel Pentium 4 处理器,采用 Intel Centrino 移动运算技术的 Intel Pentium M 处理器组件, Intel Itanium 2 处理器、 Intel Xeon 处理器以及采用 Intel XScale 技术的 Intel PCA 应用处理器。采用一套跨平台结构的通用 API ,使用者除了不需要担心平台兼容性的问题,更节省了开发成本以及研发时间,使用者可以轻轻松松移植原有应用程序。

特点:

IPP收费源代码不公开

函数库:信号处理,图像处理,多媒体,向量处理等

跨平台和OS的通用 API

高性能代码,不需要写汇编代码,获得优化的应用程序,速度快,效率高。

3. Halcon

简介:德国MVtec公司的图像处理软件HALCON,是世界公认具有最佳效能的机器视觉软件。它发源自学术界,有别于市面一些商用软件包。事实上,这是一套图像处理库,由一千多个各自独立的函数,以及底层的数据管理核心构成。其中包含了各类滤波、色彩分析以及几何、数学变换、形态学计算分析、校正、分类、辨识、形状搜索等等基本的几何以及图像计算功能,由于这些功能大多并非针对特定工作设计的,因此只要用得到图像处理的地方,就可以用HALCON强大的计算分析能力来完成工作。应用范围几乎没有限制,涵盖医学、遥感探测、监拎、及工业上的各类自动化检测。近年来,由于机器视觉技术的发展,这种可以”取代人眼”,对重复工作不会疲劳,精度高且稳定的特质,促进了高科技业的发展,例如电子业产量的大幅提升。而MVTec公司更是不断的与学术界合作,并且将最新的学术研究成果纳入其中,不但使自己的技术处于业界领导地位,同时也将机器视觉技术推向更高的境界。

机器视觉软件HALCON在世界范围内被广泛的使用,用户可以利用其开放式结构快速开发图像处理和机器视觉应用。

一个专业的图像处理工具不只包含一个图像处理函数库。图像处理任务的解决只是整个机器视觉解决方案的一部分,还包括处理控件和或者数据库连接等软件部分,图像获取及其照明等硬件部分。因此,图像处理系统简单易用,并且能活嵌入到开发项目中是非常重要的。Halcon充分考虑到这些方面,它有如下的特点:

1). HALCON包含了一套交互式的程序设计接口HDevelop,可在其中以HALCON程序代码直接编写、修改、执行程序,并且可以查看计算过程中的所有变量,设计完成后,可以直接输出C/ C++,或是COM(visual basic)程序代码,嵌入到应用程序程序中。

2). HALCON不限制取像设备,可以自行挑选合适的设备。原厂己提供了4 0余种相机的驱动,即使是尚未支持的相机,除了可以透过指针(pointer)轻易的抓取影像,还可以利用HALOCN开放性的架构,自行编写DLL文件和系统连接。

3). 使用HALCON有最好的投资效益。这套软件支持的操作系统除了微软的NT/XP/2000,还有Linux, Solaris7, 181X6. 5, "1'ru64 UN1X5. 1等等,当需要开发出一套系统,就可以轻易转换作业平台,以符合需求。为了加快速度,还可以使用多处理器的计算机,所编写的程序不必更动。

4). 使用HALOCN,在设计人机接口时没有特别的限制,也不需要特别的可视化组件,可以完全使用开发环境下的程序语言,例如Mircosoft Visual Studio等等,架构自己的接口,最终用户看不到开发工具,而且在执行软件的机器上,只需要很少的资源。

4. MATLAB

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

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

特点:

1). 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;

2). 具有完备的图形处理功能,实现计算结果和编程的可视化;

3). 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;

4). 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。

功能十分强大,正版软件价钱昂贵,适用于学术研究,仿真和演示。在软件开发,工程应用方面有一定的局限性。

5. OpenGL

OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。

OpenGL 是行业领域中最为广泛接纳的 2D/3D 图形 API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™ 帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。

特点:

1). 与C语言紧密结合。

OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的。如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单。

2). 强大的可移植性。

微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统(现在还要加上一个XBOX游戏机)。而OpenGL不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。并且,OpenGL 的基本命令都做到了硬件无关,甚至是平台无关。

3). 高性能的图形渲染。

OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。

总之,OpenGL是一个很NB的图形软件接口。至于究竟有多NB,去看看DOOM3和QUAKE4等专业游戏就知道了。

6. EmguCv

EmguCV 是.NET 平台下对OpenCV 图像处理库的封装。也就是OpenCV的.NET 版。它运行在.NET 兼容的编程语言下调用OpenCV 的函数,如C#、VB、VC++、IronPython 等。这个封装库可以在Mono 下编译和在Linux / Mac OSX 上运行。EmguCV 全部用 C#编写 ,它可以在Mono环境里编 译,在 任何 Mono支持的平台 (如 Linux, Solaris,MacOSX ) 上 运 行 。EmguCV 的其他优势还有,支持通用颜色和深度的图像类,自动垃圾收集,可XML序列化的图像,XML 文档和 Intel license 支持, 自由选择图像类或 OpenCV 的 direct invoke 函数 ,图像象 素上的通用操作等。也就是说 ,EmguCV 不仅继承了 OpenCV 的所有功能和特点 ,而且在跨平台支持方面也有更大的突破 。

将OpenCv的绝大部分功能都包装成了.net类、结构或者枚举。不过文档不全,还是得对照OpenCv的文档去看才行。

7. AForge.net

AForge.NET 是一个专门为开发者和研究者基于C#框架设计的,他包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。

这个框架由一系列的类库和例子组成。其中包括的特征有:

AForge.Imaging -一些日常的图像处理和过滤器

AForge.Vision -计算机视觉应用类库

AForge.Neuro -神经网络计算库

AForge.Genetic -进化算法编程库

AForge.MachineLearning -机器学习类库

AForge.Robotics -提供一些机器学习的工具类库

AForge.Video -一系列的视频处理类库(很方便)

纯.net类库,接口简单,用起来很方便。

8. CxImage

CxImage类库是一个优秀的图像操作类库。它可以快捷地存取、显示、转换各种图像。有的读者可能说,有那么多优秀的图形库,如OpenIL,FreeImage,PaintLib等等,它们可谓是功能强大,齐全,没必要用其它的类库。但我要说,这些类库基本上没有免费的,使用这些类库,你要被这样那样的许可协议所束缚。在这点上,CxImage类库是完全免费的。另外,在使用上述类库时,你会遇到重重麻烦。因为它们大部分是平台无关的,且用C语言写成,有的还夹杂着基本的C++ wrapper和成堆的编译选项的声明需要你去处理。而CxImage类库在这方面做得很好。作者完全公开了源代码。相对于那些封装好的图形库和GDI+来说,这一点使我们可以进一步学习各种编解码技术,而不再浮于各种技术的表面。

9. FreeImage

FreeImage 是一款免费的、开源的、跨平台(Windows 、Linux 和Mac OS X )的,支持20 多种图像类型的(如BMP 、JPEG 、GIF 、PNG 、TIFF 等)图像处理库。其最大优点就是采用插件驱动型架构,具有快速、灵活、简单易用的特点,得到了广泛使用。

FreeImage 的主要功能有多格式位图的读写;方便的位图信息获取;位深度转换;位图页面访问;基本的几何变换和点处理;通道合并与混合等。FreeImage 暂时不支持矢量图形和高级图像处理,位图绘制需要由用户来完成。

FreeImage 中的所有函数都以FreeImage_ 开头,如图像文件的读写函数分别为FreeImage_Load 和FreeImage_Save 。FIBITMAP 数据结构保存着位图信息和像素数据,是FreeImage 的核心。

10. paintlib

paintlib是一个可移植的用于图像加载、保存和处理的C++类库。可从BMP, GIF, JPEG, PCX, PGM, PICT, PNG, PSD, TGA, TIFF和WMF文件中加载图像,且可保存为BMP, JPEG, PNG和TIFF格式。既可通过在过滤器类中执行过滤, 也可通过直接访问位图来进行图像处理。提供了完整的C++源码。

11. AGG

AGG,全名:Anti-Grain Geometry,是一个开源的、高效的2D图形库

AGG是一个高效的、高质量的、开源的矢量图形库,类似的有:GTK+的Cairo,Microsoft的GDI+。在三者中,AGG的性能是最高的(不讨论Skia和Direct2D,他们有OGL和DX的硬件加速,绘图速度根本不是一个档次的)。

特点:

AGG的功能与GDI+的功能非常类似,但提供了比GDI+更灵活的编程接口,其产生的图形的质量也非常高,而且它是跨平台的,其宣传可以在非常多的操作系统上运行.

AGG的功能

1). 支持ALPHA、GAMMA等变色处理,以及用户自定义的变色处理;

2). 支持任意2D图形变换;

3). 支持SVG和PostScript描述,适于网上图形生成;

4). 支持高质量的图形处理,支持反走样插值等高级功能;

5). 支持任意方式的惭变色处理;

6). 支持所有颜色格式;

7). 支持对位图的多种处理;

8). 支持直线的多种处理,类似于GDI+;

9). 支持GPC,即通用多边形裁剪方法;

10). 支持多种字体输出,包括汉字的处理;

效率高,质量高(有反锯齿),功能强大,跨平台和平台GUI支持,缺点:没有硬件加速,文档少,门槛略高。

12. IPL

Intel 的IPL image library虽然没有开源但是进行普通的图像处理非常好用,像拉布拉斯算子,索贝尔算子等等边缘提取和锐化的函数。如果目标平台是PC机或者工控机又是Intel的CPU,这是一个非常不错的选择。

现在已经没有IPL了,IPL已经是IPP的一部分了,不过还是可以下载早期版本。IPP的教育版50$,不是很贵,集成大部分算法1D signal processing, 语音信号处理;2D signal prodessing, image processing, video processing. Open CV的模式将很类似于IPL.

特点:

IPL 图象处理库,免费,起初开源,后来不开源。

13. visDSK

MICROSOFT图像处理库,免费、开源。OpenCV未出现时很受追捧,但是现在visDSK能做的OpenCV都可以做,在速度上,OpenCV还有Intel公司的优化支持。visDSK的时代已然成为过去。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白学视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
详解分布式事务之 Seata-Client 原理及流程
在分布式系统中,分布式事务是一个必须要解决的问题,目前使用较多的是最终一致性方案。自年初阿里开源了Fescar(四月初更名为Seata)后,该项目受到了极大的关注,目前已接近 8000 Star。Seata 以高性能和零侵入的特性为目标解决微服务领域的分布式事务难题,目前正处于快速迭代中,近期小目标是生产可用的 Mysql 版本。
程序猿DD
2019/05/10
2.2K0
详解分布式事务之 Seata-Client 原理及流程
Seata 源码篇之AT模式启动流程 - 下 - 04
上一篇文章,我们看了Seata AT模式一阶段提交流程,本文我们来看看AT模式的二阶段流程和全局事务提交回滚逻辑的实现。
大忽悠爱学习
2023/10/11
3070
Seata 源码篇之AT模式启动流程 - 下 - 04
分布式事务之Seata中间件原理及流程详细分析
原文链接:https://blog.csdn.net/f4761/article/details/89077400
天涯泪小武
2019/10/22
2.2K0
分布式事务之Seata中间件原理及流程详细分析
深度剖析一站式分布式事务方案Seata-Cient
在之前的文章中已经介绍过Seata的总体介绍,如何使用以及Seata-Server的原理分析,有兴趣的可以阅读下面的文章:
用户5397975
2019/10/14
8080
深度剖析一站式分布式事务方案Seata-Cient
seata TC 请求处理流程
TC的业务channelHandler为类 io.seata.core.rpc.netty.AbstractNettyRemotingServer.ServerHandler,注意到达该类的请求都是经过编解码的了,请求类型为RpcMessage。ServerHandler类处理方法有:
luoxn28
2021/01/28
8960
seata TC 请求处理流程
Seata分布式事务之TM、RM、TC源码分析
笔者通过绘制时序图,我们可以清晰的知道在集成Seata、ShardingSphere、Dubbo之后,我们插入一条数据的整个内部调用链逻辑
spilledyear
2022/05/13
2.4K0
Seata分布式事务之TM、RM、TC源码分析
seata TM源码分析
下面就一起来看下TM模块的实现原理,TM模块是seata中全局事务发起者和掌控者,其核心逻辑有:业务逻辑切面代理:对全局事务注册/提交操作。启动netty客户端:会启动TM/RM客户端与TC通信。数据源切面代理:SQL解析、分支事务注册/提交、undolog保存、分支事务状态上报。Rpc代理:在RPC流程中传递seata上下文(xid等,非本文分析重点)。
luoxn28
2021/01/28
1.2K0
seata TM源码分析
分布式事务中间件 Fescar - RM 模块源码解读
在SOA、微服务架构流行的年代,许多复杂业务上需要支持多资源占用场景,而在分布式系统中因为某个资源不足而导致其它资源占用回滚的系统设计一直是个难点。我所在的团队也遇到了这个问题,为解决这个问题上,团队采用的是阿里开源的分布式中间件Fescar的解决方案,并详细了解了Fescar内部的工作原理,解决在使用Fescar中间件过程中的一些疑虑的地方,也为后续团队在继续使用该中间件奠定了理论基础。
张乘辉
2019/07/10
6260
分布式事务:Seata框架AT模式及TCC模式执行流程剖析
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚,在分支事务执行的客户端。
朝雨忆轻尘
2020/11/24
2K0
分布式事务:Seata框架AT模式及TCC模式执行流程剖析
seata TC启动流程分析
seata-server 启动方法 io.seata.server.Server#main,默认启动端口 SERVER_DEFAULT_PORT = 8091。main方法主要是解析并设置一些配置,初始化几个线程池,启动DefaultCoordinator和Netty服务等,源码如下:
luoxn28
2021/01/28
8180
seata TC启动流程分析
深度剖析 Seata TCC 模式【图解 + 源码分析】
Seata 目前支持 AT 模式、XA 模式、TCC 模式和 SAGA 模式,之前文章更多谈及的是非侵入式的 AT 模式,今天带大家认识一下同样是二阶段提交的 TCC 模式。
张乘辉
2022/01/24
2.6K0
深度剖析 Seata TCC 模式【图解 + 源码分析】
fescar分布式事务实现原理解析探秘
fescar发布已有时日,分布式事务一直是业界备受关注的领域,fescar发布一个月左右便受到了近5000个star足以说明其热度。当然,在fescar出来之前,已经有比较成熟的分布式事务的解决方案开源了,比较典型的方案如LCN(https://github.com/codingapi/tx-lcn)的2pc型无侵入事务,目前lcn已发展到5.0,已支持和fescar事务模型类似的TCX型事务。还有如TCC型事务实现hmily(https://github.com/yu199195/hmily)、tcc-transaction(https://github.com/changmingxie/tcc-transaction)等。在微服务架构流行的当下、阿里这种开源大户背景下,fescar的发布无疑又掀起了研究分布式事务的热潮。fescar脱胎于阿里云商业分布式事务服务GTS,在线上环境提供这种公共服务其模式肯定经受了非常严苛的考验。其分布式事务模型TXC又仿于传统事务模型XA方案,主要区别在于资源管理器的定位一个在应用层一个在数据库层。博主觉得fescar的txc模型实现非常有研究的价值,所以今天我们来好好翻一翻fescar项目的代码。本文篇幅较长,浏览并理解本文大概耗时30~60分钟左右。
kl博主
2023/11/18
1860
Seata AT 模式启动源码分析
从上一篇文章「分布式事务中间件Seata的设计原理」讲了下 Seata AT 模式的一些设计原理,从中也知道了 AT 模式的三个角色(RM、TM、TC),接下来我会更新 Seata 源码分析系列文章。今天就来分析 Seata AT 模式在启动的时候都做了哪些操作。
张乘辉
2019/12/02
6220
Apache ShardingSphere sharding-jdbc 分布式事务小练习
[技术标准] https://pubs.opengroup.org/onlinepubs/009680699/toc.pdf
前Thoughtworks-杨焱
2021/12/07
7990
Seata-Saga模式 原理
状态机设计组件:seata-saga-statemachine-designer 状态机在线画图工具:saga_designer
全栈程序员站长
2022/11/04
6380
Seata-Saga模式 原理
springcloud+eureka整合seata-tcc模式
分布式事务中的tcc模式理论介绍的文章非常多,但是网上找到一个代码实现的demo很难,包括阿里的seata官方示例都没有TCC模式的具体实现。今天我们来看一下微服务环境下使用seata TCC模式解决分布式事务的场景,同时提供一个详细的实现。
jinjunzhu
2020/08/28
1.8K0
springcloud+eureka整合seata-tcc模式
深入了解分布式事务组件 Seata :AT 模式(二)
在前面一篇文章,我们介绍了阿里开源的分布式事务组件 Seata 的相关概念,重点介绍了 Seata 的 AT 模式。并通过一个 Spring-Cloud-JPA 的案例,演示了 AT 模式的使用入门。本文将会结合 Spring-Cloud-JPA 的案例,深入了解 Seata AT 模式的工作流程。本文基于 v0.8.1。
aoho求索
2019/12/15
1.5K0
[图文] Seata AT 模式分布式事务源码分析
AT 模式是 Seata 主推的分布式事务解决方案,最早来源于阿里中间件团队发布的 TXC服务,后来成功上云改名 GTS。相较于TCC而言,Seata的AT模式业务侵入性更低,易于接入。
田守枝
2019/07/11
2.5K0
[图文] Seata AT 模式分布式事务源码分析
seata TC 模块分析
Discovery模块就是服务发现模块,TC启动后需要将自己的信息注册到服务中心,这样才能暴露给其他使用者,Discovery接口定义如下:
luoxn28
2021/01/28
1.3K0
seata TC 模块分析
mac 上学习k8s系列(53)seata-go
https://github.com/seata/seata-go是https://github.com/seata/seata的golang客户端,目前支持at和tcc两种分布式事务的实现。虽然官方的文档给的例子描述了如何处理分布式事务,但是如何部署和使用语焉不详。下面介绍下两种部署方式file、db
golangLeetcode
2022/12/17
6730
相关推荐
详解分布式事务之 Seata-Client 原理及流程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验