数字图像处理与机器视觉:基于MATLAB实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 常用数字图像工具软件简介

“工欲善其事,必先利其器。”本书的讲解内容主要使用MATLAB软件进行编程实现。

1.4.1 MATLAB

MATLAB是MathWorks公司开发的一款工程数学计算软件。MATLAB对数学操作进行直接的描述,是一个交互式系统,其基本数据元素是矩阵。这就允许人们用公式化方法求解许多技术计算问题,特别是涉及矩阵表示的问题。有时,MATLAB可调用如C这类非交互式语言所写的程序。MATLAB图像处理工具箱(Image Processing Toolbox, IPT)封装了一系列针对不同图像处理需求的标准算法,它们都是通过直接或间接调用MATLAB中的矩阵运算和数值运算函数来完成图像处理任务的。如今,MATLAB已成为强大的数值计算软件,适用于现代处理器和存储器架构。

MATLAB是Matrix Laboratory(矩阵实验室)的缩写,其设计初衷是成为处理矩阵和线性代数的软件,在此之前,这主要通过Fortran语言来完成。今天,MATLAB已成为强大的数值计算软件,适用于现代处理器和存储器架构。

MATLAB在数字图像处理领域具有强大的作用,它提供了一个宽泛的处理多维阵列的函数集合,而图像(二维数字阵列)不过是多维阵列的一种特殊情况。图像处理工具箱是一个把MATLAB数值计算环境扩展到图像处理的函数集合。

1.4.2 Python

Python是一种跨平台的计算机程序设计语言,是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,更多被用于独立的、大型项目的开发。由于Python语言的简洁性、易读性以及可扩展性,在国外用Python做科学计算的研究机构日益增多,例如计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。而Python专用的科学计算扩展库就更多了,例如NumPy、SciPy和Matplotlib,它们分别为Python提供了快速数组处理、数值运算以及绘图功能。因此Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。

1.4.3 OpenCV

OpenCV是Open Source Computer Vision的缩写,它是计算机视觉中经典的专用库,其支持多语言、跨平台,功能强大。OpenCV由英特尔公司于1999年推出。它最初是用C/ C++编写的,所以人们可能会看到更多用C语言而不是Python编写的教程。但现在它在Python中也被广泛用于计算机视觉。

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和macOS操作系统上。它轻量级而且高效,由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

1.4.4 Java

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++语言难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java看起来设计得很像C++,但是为了使语言更容易上手实操,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(Overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题而烦恼,能节省出更多的时间和精力花在研发上。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

1.4.5 C++

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而就C++适应的问题规模而论,大小由之。C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

C++语言的程序因为要体现高性能,所以都是编译型的。但为了方便测试,调试环境做成解释型的。即开发过程中,以解释型的逐条语句执行方式来进行调试,以编译型的脱离开发环境而启动运行的方式来生成程序最终的执行代码。生成程序是指将源码(C++语句)转换成一个可以运行的应用程序的过程。如果程序的编写是正确的,那么通常只需按一个功能键,即可实现这个过程。

1.4.6 HALCON

HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境。它节约了产品成本,缩短了软件开发周期。HALCON灵活的架构便于机器视觉、医学图像和图像分析应用的快速开发,在欧洲以及日本的工业界已经是公认具有最佳效能的机器视觉软件。

HALCON源自学术界,它有别于市面一般的商用软件包。事实上,它是由一千多个各自独立的函数,以及底层的数据管理核心构成。其中包含了各类滤波、色彩以及几何、数学转换、形态学计算分析、校正、分类辨识、形状搜寻等基本的几何以及影像计算功能,由于这些功能大多并非针对特定工作设计的,因此只要用得到图像处理的地方,就可以用HALCON强大的计算分析能力来完成工作,应用范围几乎没有限制,涵盖医学、遥感探测、监控、到工业上的各类自动化检测。