VC++matlab混合编程快速提取数字图像特征值资料讲解.doc

上传人:1595****071 文档编号:51573996 上传时间:2022-10-18 格式:DOC 页数:9 大小:143KB
返回 下载 相关 举报
VC++matlab混合编程快速提取数字图像特征值资料讲解.doc_第1页
第1页 / 共9页
VC++matlab混合编程快速提取数字图像特征值资料讲解.doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《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(

6、num);/释放内存engClose(ep);/关闭引掣通过以上几句程序就实现了VC与matlab的交互。本方法的基本思想是:对于图像的读取、显示、储存等基本输入输出操作采用VC实现,完全采用VC界面,matlab完全在后台运行。在需要调用matlab函数进行图像处理时,将VC中的图像数据转换为matlab可识别的格式并装入引掣区,调用matlab的图像处理函数进行运算,并将结果转换后复制回VC。在进行下一步图像分析时,可利用VC的ODBC功能,将特征数据直接转入access等数据库中。以下介绍几个与特征提取密切相关的matlab函数,为简便起见,省略输入输出参数。带星号的函数为参考文献1所自

7、带,其非商业版本可以在该书网站免费下载。regionprops(),imfeature(),区域的特征度量.输出区域的若干特征值;mean2(),std2(),corr2()二维数组的摘要统计值:均值,标准差,相关系数;bwlabel()将二值化图像作区域标记,同时返回标记区域块数;fft2(),dct2(),快速傅立叶变换和离散余弦变换,可以求频域特征*statxture();纹理特征计算,返回平均值,标准差,平滑度,直方图偏斜度,均匀性,纹理熵;*invmoments()可计算出七个不变矩;*specxture()频谱特征,计算S(r)和S()*polyangles()计算多边形区域各顶点

8、内角值上述函数可以直接计算二十个左右特征值,另外通过这些值之间的运算,可以求出更多的值。3、实例介绍/input为灰度图像数据engEvalString(ep,num=statxture(input););/调用statxture计算灰度差分纹理值num=engGetVariable(ep,num);/提取计算结果,是包含七个值的数据结构double*result=mxGetPr(num);m_mean1=result0;/第一项,平均灰度m_std1=result1;/第二项,标准差(对比度m_smooth=result2;/第三项,平滑度m_tm=result3;/第四项,三阶矩m_asm

9、1=result4;/第五项,惯性矩(均衡度)m_ent1=result5;/第六项,熵/下面二值化计算形状特征engEvalString(ep,input=im2bw(input,graythresh(input);”);自动计算阈值进行二值化engEvalString(ep,input=bwareaopen(output,1500););形态学处理去除小面积区域engEvalString(ep,output=imfill(output,holes););填补最大面积区域内的空洞engEvalString(ep,output=bwlabel(output););/区域标记后再调用props/

10、以下调用matlab的regionprops求几何形状特征engEvalString(ep,a=regionprops(output,all);num=a.Area;);num=engGetVariable(ep,num);/获得面积值result=mxGetPr(num);m_area=result0;/面积值存入VC数据engEvalString(ep,num=a.Eccentricity;);num=engGetVariable(ep,num);/获得偏心率值result=mxGetPr(num);m_ecc=result0;/同理可求出长度,宽度值,质心坐标值,矩形度等若干特征值4、小

11、结及讨论提取特征值前,要进行图像预处理,如图像增强及分割等,可以使用matlab的图像处理工具,快速实现相关功能。用matlab进行图像预处理,通常在1个子函数内就可全部完成,与VC相比大大节省了编程量,节约了时间,减少了出错的可能。matlab的工具箱是开放的系统,随版本升级也在不断扩充。使用者,完全可以根据需要自己开发相应的matlab不函数,加入自己的工具箱使用。对于指纹、车牌、人脸等特征的提取,均可根据各自不同的需要使用matlab技术进行图像预处理。使用混编要选择matlab中语法简单而功能强大的函数,对于涉及到人机交互及某些像素级的操作,就可使用VC实现,充分发挥二者优势。例如bwlabel()可以将二值图像的每块区域按从1到最大块数分别标记,利用此功能,我们可以设置一个已知长度的参照块,在VC中针对已标记区域进行处理,可以很容易实现像素长度到实际长度转换。总之,图像特征提取中使用VC/matlab混合编程可以提高编程效率,实现部分特征值的快速提取,在实际工作中可以借鉴。-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com