Summary of image processing library

Disclaimer: This article is a blogger original article, shall not be reproduced without the bloggers allowed. https://blog.csdn.net/x454045816/article/details/52097224
Summary of image processing library
When you need to do some study and research of image processing time, the first task is to choose an appropriate set of image processing library, this article introduces some of the advantages and disadvantages of various images at the library. OpenCV, Intel IPP, Halcon, MATLAB, OpenGL, EmguCv, AForge.net, CxImage, FreeImage, paintlib, AGG, IPL, visDSK. Deficiencies, also please a lot of suggestions, thank you! Welcome to micro-channel public concern number of "smart algorithm" with you to experience a different life!
1. OpenCV
Description: OpenCV full name is: Open Source Computer Vision Library. Is Intel® Open Source Computer Vision Library. It consists of a series of C functions, and a small amount of C ++ classes that implement many common image processing and computer vision algorithms aspects. OpenCV is based on (open source) issue of cross-platform computer vision library that can run on Linux, Windows and Mac OS operating systems. It is lightweight and efficient - consists of a series of C functions and a few C ++ classes, and provides an interface Python, Ruby, MATLAB and other languages, to achieve many common algorithms of image processing and computer vision. OpenCV written in C ++ language, its main interface is also C ++ language, but still retains a large number of C language interface.
OpenCV function
Providing input-output operation on the image data, the image / video, basic image processing, structural analysis, camera calibration, motion analysis, and basic target recognition function interface such as a GUI.
OpenCV module
cv - Kernel Library; cvaux - Auxiliary library; cxcore - and linear algebra library data structure; highgui - GUI library; ml - machine learning library
Features:
Free, open source code, is a cross-platform, composed of high-level API, it does not rely on other external libraries, although you can also use some external libraries. In order to completely independent of the IPL (INTEL image processing library) OpenCV copy of the statement IplImage and other structural variables.
OpenCV Intel® Integrated PerformancePrimitives (IPP) provides a transparent user interface. It IPP there is no dependence. But if the IPP installation, then OpenCV will be to gain an advantage by IPP IPP is automatically loaded dynamic link library, to improve speed.

2. Intel IPP
Description: IPP "Intel Integrated Performance Primitives" (Intel IPP) is a cross-platform software library,
He provides a wide range of multimedia functions: audio decoder (e.g.: H263, MPEG-4), image processing (the JPEG), signal processing, speech compression (e.g.: G723, GSM, AMR) and encryption mechanisms.
Intel IPP optimized for a large number of Intel Microprocessor (microprocessor): Intel Pentium 4 processor, Intel Pentium M processor assembly using Intel Centrino mobile computing technology, Intel Itanium 2 processor, Intel Xeon processors and Intel XScale technology using the Intel PCA application processor. Using a common set of cross-platform API structure, in addition to the user does not need to worry about platform compatibility, but also save development costs and development time, users can easily transplant legacy applications.
Features:
IPP charge source code is not open, cross-platform and OS generic API
Library: signal processing, image processing, multimedia, and other vector processing
Code for good performance, no need to write assembly code, to obtain an optimal application, high speed, high efficiency

3. Halcon
Description: Germany MVtec company's image processing software HALCON, machine vision software is recognized worldwide as having the best performance. It originated in academia, the market is different from some commercial software packages. In fact, this is an image processing library by more than a thousand separate functions, and data management of the underlying core configuration. Which contains a variety of filtering, color analysis and geometry, mathematical transformation, morphology computational analysis, calibration, classification, identification, and so on basic geometric shape search and image computing functions, since most of these features are not designed for a specific job, so As long as the image processing used to get a place, you can use HALCON's powerful calculation and analysis capabilities to complete the work. Almost no limit to the scope of application, covering medicine, remote sensing, monitoring carry, and various types of automated testing on the industry. In recent years, due to the development of machine vision technology, this can "replace a human eye," not to duplicate the work of fatigue, high precision and stable characteristics, promote the development of high-tech industry, such as the electronics industry significantly enhance production. The company is constantly MVTec cooperation with academia, and the latest academic research into them, not only to make their technology leadership in the industry, but also machine vision technology to a higher level.
HALCON machine vision software is widely used around the world, users can take advantage of its open architecture for rapid development of image processing and machine vision applications.
A professional image processing tools not only contains an image processing library. The image processing task to solve only part of the machine vision solutions, further comprising processing and control software or database connection portion, and an illumination image acquisition hardware portion. Thus, the image processing system is easy to use, and can live embedded development project is very important. Halcon fully take into account these aspects, it has the following features:
1). HALCON contains a set of interactive programming interface HDevelop, which can be written directly to the program code HALCON, modify, program execution, and can view all of the variables in the calculation process, after the completion of design, can be directly output C / C ++, or COM (visual basic) code, embedded in the application program.
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的时代已然成为过去。

欢迎关注微信公众号“智能算法”,带您体验不一样的人生!

Guess you like

Origin blog.csdn.net/x454045816/article/details/52097224