基于VC与Matlab混合编程的图像处理.doc

基于VC与Matlab混合编程的图像处理.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于VC与Matlab混合编程的图像处理

基于VC++与Matlab混合编程的图像处理(2007-8-5 10:51:00) 【收藏】 【评论】 【打印】 【关闭】 标签:混合编程?图像处理?VC++?Matlab? VC++与Matlab混合编程的两种常规方式,给出了利用Matlab数学函数库混合编程的实现方法,指出了常规方式存在不足的同时,提出了另外两种方法,实现了利用Matlab数学函数库和编译器结合VC++混合编程的新方法,充分发挥了VC++有效运算速率与Matlab强大矩阵运算的优点。实验结果说明本文所提方案可行,适用于图像处理。 关键词:Matlab; VC++; 混合编程; 数学函数库; 编译器 1.????? 引言 Matlab是Mathworks公司推出的一套工程计算及数值分析软件。由于功能强大、易使用,得到了广泛应用,特别是在图像信号处理,语音信号处理,信号分析等领域充分展示了其强大的矩阵运算功能。虽然Matlab是一个完全独立的编程和数据运算的集成环境,但是对于循环处理、图形界面、算法隐藏及系统集成等方面有所欠缺。VC++是一种面向对象的可视化编程语言,代码效率高,便于用户进行交互处理,但利用其基本数学函数库开发子程序与数值算法时,往往比较繁琐,且需反复调试以确保其准确性。VC++与Matlab混合编程,可有效地发挥各自优势,为科学研究和工程开发提供强大的技术支持。本文所有讨论均基于Windows操作平台下的MSVC++6.0编译环境和Matlab6.5环境。 2.????? 两种常规混合编程方式 传统的VC++调用Matlab的方法有:利用Matlab引擎、利用Matlab编译器、利用Matcom软件编译、调用Matlab数学函数库、及调用Matcom数学函数库。这其中利用Matlab引擎不能脱离Matlab环境,且运行程序较慢;关于Matlab编译器下文将进行详细分析;Matcom软件对Matlab语句支持不够,且其开发公司已被Mathworks收购,自发布4.5版本以后已停止开发;Matlab和Matcom所封装的数学函数库提供了大量的实用函数,可以完全脱离Matlab环境使用,是较为常用的混合编程方式。目前Matlab数学函数库基本上已包含了Matcom数学函数库,这里仅介绍一下利用Matlab数学函数库的混合编程方案,Matcom数学函数库使用类似,有关利用Matcom数学函数库的混合编程详细说明可参阅文献[1]。 Mathtools公司自MATLAB5.3便提供了数学函数库,主要使用C/C++语言开发,使用它可以用类似MATLAB的语法编写C++程序,十分方便。虽然速度上仍然比手工C/C++程序慢,但是由此换来的高效的开发效率和可靠性往往是值得的。该数学函数库包括了一个统一的编程接口和大量丰富的矩阵计算和函数。这些函数经专家采用优化的算法完成,并对矩阵的执行效率进行了优化。该数学函数库简化了在C++语言中对矩阵的处理,其核心类是mwArray类。用户可以在VC++集成编译环境下采用类似开发m文件程序的编程方式,语法直接简单。其具体实现步骤可参见文献[3]。 需要说明的是C++语言中数据存储是按行优先的方式,而Matlab矩阵数据存储时是按列优先的方式。以二维矩阵为例,说明两种不同环境下存储格式的不同。假定声明了一个整形二维数组a[2][3]={1,2,3,4,5,6};在C++语言中,数组a在内存中的存储顺序为:1、2、3、4、5、6,即按行优先的原则进行存储。在Matlab环境中,数组a在内存中的存储顺序为:1、4、2、5、3、6,即按列优先的原则进行存储。 利用以上两种数学函数库的混合编程,都能带来算法上的极大简化,但也有几点不足: 1)??????? 两种数学函数库下矩阵操作均需通过各自的函数进行,对于经常使用Matlab开发算法的程序员来说,使用时会带来一定程度的麻烦,且VC++环境下矩阵操作相对Matlab环境不够灵活。 2)??????? 而最大的问题在于,两种数学函数库所封装的函数远远少于Matlab环境下的函数库,不能充分发挥Matlab强大的矩阵计算功能,尤其是其中的工具箱函数,而工具箱函数却是我们实际应用中经常需要用到的。因此如何更好的利用Matlab环境下优秀的矩阵运算及强大的工具箱函数,是本文讨论的另一个重点。 3.????? 两种混合编程新途径 1)??????? 利用matlab环境下的Mat文件进行不同编程环境下的数据交互。 Mat文件是Matlab系统保存文件的默认文件格式,文件存储为二进制格式,可以利用其在不同平台或不同应用程序间传递数据。Matlab环境下mat.h文件包含了mat文件的创建、读写等函数的定义。利用mat文件可以提供复杂的准备数据、处理VC++环境下的中间数据、及进行后期处理

文档评论(0)

almm118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档