1.3 视觉计算软件开发平台
1.3.1 可视化集成开发环境(IDE)
Microsoft Visual Studio是微软公司推出的集成开发环境,是目前最流行的 Windows 平台应用程序开发环境。目前已经开发到 9.0 版本,也就是 Visual Studio 2008。早期的Visual Studio版本中主要有Visual Basic和Visual C++两种程序开发语言,随后,微软引入了建立在 .NET 框架上的托管代码机制以及一门新的面向对象语言 C#(最新的C#语言的版本是3.5),原先的Visual Basic也进化成完全支持面向对象的编程语言Visual Basic .NET。
本书的所有代码示例,都是通过Visual Studio 2008来开发完成的。
1.3.2 控制台应用程序开发
相对而言,控制台应用程序比较简单,一般没有独立的窗口,在命令行运行。控制台程序的输入输出通过标准IO进行,而不像界面程序可以通过鼠标点击进行操作。一般后台运行(不需要界面显示)的程序可作为控制台应用程序。因此控制台应用程序无需使用任何图形用户界面即可读取标准输入和输出 (I/O) 中的数据并向其写入数据。
开发底层,游戏等(包括后台程序)的时候通常用到控制台程序来编写,一般在学校教学时,老师们初期讲语法,流程时也用到控制台应用程序。
1.3.3 IntelC++编译器
高级语言有很多种,最早的高级语言是Fortran语言,其主要的目的是用来科学计算,后来又出现了C语言。这些语言都是面向结构的程序语言。在国内,已故的国防科技大学中科院院士陈火旺教授是编译原理的先驱,他于上世纪70年代独立自主的实现了国内的首个Fortran语言的编译器。C++是面向对象的高级程序语言。它是C语言的超集(兼容C语言的所有功能)。市场上有很多公司各自推出的C++的编译器,主要有Microsoft 的C++编译器,Borland公司的C++编译器和英特尔公司的C++ 编译器。编译器的不同在于其支持不同的特色功能和生成的目标代码的质量上。
英特尔编译器可提升软件的性能。它能够针对不同CPU型 来生成更有效率的代码,并且通过自动并行处理机制来优化代码,帮助程序员以较快的速度来运行软件。同时,英特尔编译器与其他工具保持兼容,可以集成到广泛使用的开发环境,比如,英特尔编译器能够方便的集成到Visual Studio集成开发环境中。
1.3.4 IntelDebugger调试工具
在程序编写的过程中,错误是在所难免的。我们将程序的错误分为语法错误和语义错误两大类,语法错误通常是指用户输入错了关键词和变量名等,使得编译器不能正确解释程序员的代码,因此不能生成目标代码。编译器都能够指出程序员的语法错误出在什么地方,因此程序员很容易定位并能够修改语法错误。语义错误是更难修改的一类错误(俗称Bug),很多情况下是因为程序员在代码输入的时候不小心使得代码出现逻辑错误(如代码“a==b” 错误地写成了“a=b”),这类错误在代码进行编译的时候是不能被发现的,这样的程序能够执行,只是在执行的时候并不是按照程序员本来的意图来执行,结果也自然会出现错误,甚至在某些状况下会出现严重的损失(导致程序非法退出等)。因此,这类错误的危险性更大。
如果程序员能够跟踪代码的执行过程,从而发现并修改程序执行中出现的语义错误(俗称Debug)。这将是一个非常关键的功能,编译器工具Debugger(调试器)提供了此类功能,程序员可以通过调试器一步一步跟踪代码的执行过程,或者设置断点(程序会在断点处停留下来让程序员观察程序执行的状态,如一些变量值等)来跟踪程序的运行,从而最终定位并修改程序中出现的语义错误。
在安装英特尔的编译器时可以选择是否安装IntelDebugger。
1.3.5 IntelVTune性能分析器
程序员们应该非常清楚,在很多场合,仅仅写出能够正确处理的程序时不够的,很多场合下,程序的性能非常关键,特别是在大数据量处理的环境下,好的算法程序有时候在时间上会有几个数量级的提高。但是程序员写程序的过程是一个递进的过程,开始写出的程序其性能并不是最优的。因此,如果有一个工具能够发现程序执行的过程中的瓶颈(比如找到执行最长时间的函数),并且对整个程序的运行过程进行分析,用图形化的结果显示出来,将对程序员是一个非常大的帮助。
英特尔公司提供的VTune性能分析器是一个强大的性能分析和优化工具,它能确定你的程序的hotspot(执行最长时间的函数),帮助你找到导致性能不理想的原因,从而让你能据此对程序进行优化。该工具支持不同的操作系统,在Windows系统下,最新的有IntelVTune Performance Analyzer 9.1版本。该版本已经集成到Visual Studio集成开发环境中,使用图形界面,支持英特尔最新的四核处理器。能够对程序库、驱动程序和应用程序进行性能分析。IntelVTune 不依赖于程序语言和特定的编译器,能够对C,C++,Fortran,以及C#等编写的程序进行分析,这些程序不需要重新编译,而且分析的过程只需要极低的系统开销,便可以确定性能瓶颈。同时IntelVTune将英特尔线程档案器(IntelThread Profiler)也包含在内,线程档案器可以帮助您调试多线程代码,从而可以在当今的多核处理器上获得最佳性能。VTune只是一个工具,它只会给出一堆数据,要靠程序员从这些数据中分析代码中哪些是程序的瓶颈,哪些是可以大大优化的,而哪些是虽然很占时间但是没有什么优化余地的。
1.3.6 IntelParallel Studio 并行工作室
英特尔在提供了C++的编译器、调试器和性能分析工具VTune外,近期又推出了新的软件工具包IntelParallel Studio。IntelParallel Studio是一个针对Microsoft Visual Studio C/C++开发者的综合并行开发套件,由IntelParallel Composer, IntelParallel Advisor、 IntelParallel Inspector和IntelParallel Amplifier构成,使得基于Windows的开发人员能够更加简便、快捷地创建、调试和优化多核应用软件。
图1.6 IntelIPP的应用领域
IntelIPP(英特尔集成性能元件)是一个面向多个应用领域的开发库,它支持多核CPU,是一个高度优化的函数集合(包括并行优化处理、特定处理器结构的优化等优化处理技术),能够处理包括多媒体处理(语音处理、图像处理、视频处理等)、数据处理、通信等应用。IntelIPP提供了几千个优化的函数,这些函数涵盖多个领域的通用算法(如上图所示),这些领域包括:图像和视频、通信和信 处理、数据处理等。在IntelParallel Studio一节可以看出,IntelIPP已经集成到IntelParallel Studio工具套件中。IntelIPP库的目录结构如表1.1所示。
IntelIPP的链接方式
IntelIPP由三种函数库组成 :
- Dynamic,包括对各种处理器的优化代码动态库,如ipps.lib,ippst7.dll;
- Static Emerged, 包括对各种处理器的优化代码静态库,如ippsemerged.lib;
- Static Merged, 包括对指定处理器的优化代码静态库 。
对于不同的需求,这些函数库提供以下四种链接模式:
-
- 动态链接(Dynamic linkage),简便易用,但可执行文件和库文件总量大;
- 定制的动态链接(Custom dynamic linkage),抽取指定函数的优化代码组成新动态库,减少可执行文件和库文件大小;
表1.1 IntelIPP库的目录结构图

表1.2 IPP图像处理函数分类及在本书中的体现
函数分类 |
主要功能作用 |
典型函数名 |
在本书的体现 |
Image Data Exchange and Initialization Functions |
图像数据的分配、初始化、赋值、拷贝、转换 |
ippiMalloc |
2.5.2小节 |
Image Arithmetic and |
图像的算术和逻辑运算 |
IppiAnd |
2.5.3小节 |
Image Color Conversion |
颜色空间转换 |
ippiRGBToYCbCr |
2.2.4小节、2.2.5小节、2.6.2小节、3.4.2小节、4.2.2小节、4.3.3小节 |
Threshold and Compare |
阈值和比较操作 |
ippiThreshold_GT |
2.5.3小节、5.5.1小节 |
Filtering Functions |
空间滤波器、提供各种空间滤波算子(平滑、锐化)的实现 |
ippiFilter |
5.1节、5.2节 |
Image Linear Transforms |
图像线性变换,包括离散傅里叶变换(DFT)、快速傅里叶变换(FFT)和离散余弦变换(DCT)等 |
ippiFFTFwd |
2.3节、3.4节、3.5.1 |
Image Statistics Functions |
图像统计函数 |
ippiHistogramEven |
4.1、4.3.1 |
Image Geometry |
图像几何变换 |
ippiResize |
第六章 |
Image Compression |
图像压缩功能(如JPEG) |
ippiDCTQuantFwd8x8 |
3.4、3.5 |
- 支持单种处理器的静态链接(Single processor static linkage),可执行文件最小,只含适用于指定处理器的优化代码;
- 支持多种处理器的静态链接(Static linkage with dispatching),可执行文件较小,只含适用于所有处理器的优化代码。
使用动态链接方式引用IPP库时所需设置的环境变量 在Microsoft Visual Studio中,要用IntelIPP库进行编程,首先需要安装IPP,IntelIPP已经集成到IntelC++ Complier中,因此,只需要安装了IntelC++的编译器,就可以使用IPP库进行编程。编程的时候需要在Visual Studio中设置两个引用,第一个设置时引用IPP的头文件路径(Include files),设置的方法:在Visual Studio的主菜单中选择Tools > Options,Options的对话框会打开,在该对话框的左边的列表中选择Projects and Solutions>VC++ Directories,接着在右上角的“Show directories for:”选项中选择“Include files”,同时在Options对话框右边中间的选项点击空余的选项,选择IntelIPP的安装路径下的“include”目录。第二个设置是引用IntelIPP的链接文件的路径,其方法和引用头文件相似,只是选择在右上角的“Show directories for:”选项中选择“Library files”,同时在Options对话框右边中间的选项点击空余的选项,选择IntelIPP的安装路径下的lib目录。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!