VC++matlab混合编程快速提取数字图像特征值资料讲解.doc
《VC++matlab混合编程快速提取数字图像特征值资料讲解.doc》由会员分享,可在线阅读,更多相关《VC++matlab混合编程快速提取数字图像特征值资料讲解.doc(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。VC+matlab混合编程快速提取数字图像特征值-VC+/matlab混合编程快速提取数字图像特征值1、引言VC+是流行的通用程序设计语言,灵活高效,使用其MFC进行面向对象编程,可以快捷地完成windows风格的人机交互界面设计。matlab是一种数值计算能力很强的面向科学应用的软件,以矩阵为基本数据结构进行运算,语法简洁。matlab针对科学研究工作的实际需要,由各领域专家开发了若干工具箱(函数库),极大地方便了科研工作。在数字图像处理领域,其图像处理工具箱中现有200多个工具,可以实现大部分处理算
2、法。如果将VC与matlab优势结合,进行混合编程,可以大幅度提高编程效率而不失灵活性、可靠性。特征值的选择和提取是由图像分析过程中的一个主要环节,是实现图像理解的前提。matlab以矩阵为基本数据结构,对处理图像这种二维数据具有编程效率上的先天优势。在很多预处理算法日渐成熟的今天,我们希望用更简便的方法来实现图像特征值的提取,从而将研究重点放到图像分析和理解上。2、接口实现及相关函数介绍鉴于VC程序界面友好,通用性好,VC/matlab混合编程一般都采用从VC中调用matlab函数的方式。实现二者的结合有多种方法。本文采用matlab引擎的方法,这种方法的特点是操作简便,不需要进行过多的设置
3、和转换,也不需要对matlab的程序结构有较深研究,只要熟悉matlab工具箱中相关函数即可。缺点是工作环境内必须安装matlab环境,另外程序运行时会启动matlab进程,影响了速度。VC中调用matlab语言实现图像处理的示例程序如下(运行环境VC+6.0,matlat6.5):Engine*ep;/定义引掣指针if(!(ep=engOpen(NULL)exit(1);/打开引掣mxArray*input=NULL,*num=NULL;/mxArray是专用数据结构,必须用此结构与引掣区传递数据,这里定义二个数据input用来传递图像数据,num用来传递参数值constintdims2=G
4、etWidth(),GetHeight();/定义二维数组大小,即VC中像素区大小input=mxCreateNumericArray(2,dims,mxUINT8_CLASS,mxREAL);/建立相应大小数据区num=mxCreateDoubleMatrix(1,1,mxREAL);/单值参数也要定义成矩阵形式memcpy(mxGetPr(input),m_pData,high*wide*sizeof(byte);/将VC中数据赋值给matlab可识别的变量engPutVariable(ep,input,input);/放入引掣,准备调用matlab函数进行计算,并命以别名engPutVa
5、riable(ep,num,num);engEvalString(ep,input=im2bw(input,graythresh(input);/在引掣中执行matlab命令进行二值化engEvalString(ep,num=bwarea(input););/matlab函数计算面积大小input=engGetVariable(ep,input);num=engGetVariable(ep,num);/处理后结果出引掣double*result=mxGetPr(num);doublereal=result0;/得到面积值mxDestroyArray(input);mxDestroyArray(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC matlab 混合 编程 快速 提取 数字图像 特征值 资料 讲解
限制150内