MatlAB图形化

2024-10-11

MatlAB图形化(精选7篇)

MatlAB图形化 篇1

在磁共振性能评价领域, 自从AAPM (美国医学物理师学会) 于1990年提出推荐方案以来[1], 大量的临床和理论研究开始关注这一领域[2,3,4,5]。AAPM方法提供了对磁共振整体性能的基本评价方法, 但其测试不针对磁共振的各个组件, 同时其测试结果只能用于反映整体效果而无法得到细节的性能。为了克服以上不足, 本文在已有研究[6]的基础上, 提出采用基于定量对比的方法, 分析比较表面线圈、相控阵线圈和收发兼用型鸟笼线圈的性能, 提高了对具体细节的评价能力, 同时将结果图形化。

1 材料和方法

1.1 材料

磁共振成像设备为3.0T Intera Achiva。采用Philips标配的圆柱形的体模, 容积3000 ml。三个线圈分别为:8通道相控阵颈动脉表面线圈, Philips收发兼用型 (T/R) 鸟笼线圈和Philips多用途表面线圈。扫描序列采用T1权重的自旋回波T1W-SE (TR=450 ms, TE=11 ms, FOV=15 cm, 层厚=4 mm, 层间距=1 mm, 层数20.成像矩阵=256×256, 采集次数NSA=2) 和T2权重的快速自选回波T2W-TSE (TR=4500 ms, TE=90 ms, 回波链数16, FOV=15 cm, 层厚4 mm, 层间距=1 mm, 成像矩阵512×512) , 成像层面为横轴面。

1.2 方法

1.2.1 信噪比的测量

信噪比测量常用的有两种方法[1]、[7], 而且两种方法所测得的结果存在一种直接的线性关系[8]。信噪比测量时, 感兴趣区 (ROI) 和背景噪声区域的选择如下图1

考虑到操作中的简便性, 本文采用单幅图像的测试方法, 即信噪比 (SNR) 按照下式计算:

其中, S为感兴趣区的平均信号强度, 在图1中S即为感兴趣区域的平均像素值;SD为噪声信号强度, 在图1中SD即为各小圆形区域A~D的像素值标准差。本文测量的信噪比包括感兴趣区域内的信噪比以及感兴趣区域前后方向 (A-P) 和左右方向 (L-R) 上的信噪比曲线。同时, 将感兴趣区域内的像素值利用Mat LAB软件投影至三维, 得到均匀度的三维图形。

1.2.2 图像均匀度的测量

均匀度的测量和计算方法采用AAPM (美国医学物理师学会) 推荐的方案[1]。在与信噪比测量相同的图像中, 设置5个大小相同的圆形 (半径为体模的30%, 均匀分布) , 分别测量其平均信号强度。计算公式为:

其中, U∑表示均匀度;Smax为所测5个圆形区域中信号的最大值;Smin为所测5个圆形区域中信号的最小值。

2 结果

2.1 信噪比定量计算及图形化

磁共振扫描得到的6幅图像 (每种线圈两幅图像) , 根据上文所述的方法, 实验测量所得到的数据如表1和表2中所示。

根据上面两个表中的数据可以发现, 在采用T1W-SE序列时, 相控阵线圈和T/R鸟笼线圈的信噪比分别是表面线圈的12.97倍和7.93倍;在采用T2W-TSE时, 相控阵线圈和T/R鸟笼线圈的信噪比分别是表面线圈的14.65倍和8.87倍。

根据实验数据, 两个序列所得图像在横向和纵向的信噪比曲线如图2所示。

(a) T1W-SE序列作用下的左右方向 (R-L) 信噪比曲线; (b) T1W-SE序列作用下的前后方向 (A-P) 信噪比曲线; (c) T2W-TSE序列作用下的左右方向 (R-L) 信噪比曲线; (d) T2W-TSE序列作用下的前后方向 (A-P) 信噪比曲线。红线为表面线圈, 绿线相控阵线圈, 蓝线为T/R鸟笼型线圈 (a) SNR profile in R-L direction with T1W-SE ; (b) SNR profile in A-P direction with T1W-SE ; (c) SNR profile in R-L direction with T2W-TSE; (d) SNR profile in A-P direction with T2W-TSE. The red, green and blue lines denote surface coils, phased array coils and T/R birdcage coils, respectively

从图2可知, 在这两个序列成像中, 在左右方向 (R-L) 上, 相控阵线圈和T/R鸟笼线圈相对于表面线圈都具有明显的优势, 而相控阵线圈的信噪比整体而言高于T/R鸟笼线圈, 但前者在图像中心处的信噪比明显下降, 甚至会低于后者;在前后方向 (A-P) 上, 相控阵线圈和T/R鸟笼线圈相对于表面线圈都具有明显的优势, 而T/R鸟笼线圈也明显高于相控阵线圈, 只有在图像中心区域两者才更为接近。

2.2 图像均匀度定量计算

根据上文所述的测量方法, 利用公式 (2) 测量所得图像的结果分别为:表面线圈T1W和T2W权重图像的均匀度分别为Ua=39.49%和UD=38.76%;相控阵线圈T1W和T2W权重图像的均匀度分别为Uc=45.40%和Ud=41.48%;T/R鸟笼线圈T1W和T2W权重图像的均匀度分别为Ue=98.98%和Uf=99.25%。可以看出, T/R鸟笼线圈的图像均匀度明显高于表面线圈和相控阵线圈, 而相控阵线圈的均匀度比表面线圈的均匀度略高。

2.3 Mat LAB图形化

将上述6幅图像的像素值投影至三维坐标, 且用伪彩色来标记, 如下图3所示。

(a) 表面线圈在T1W-SE序列下的体模图像投影; (b) 表面线圈在T2W-TSE序列下的体模图像投影; (c) 相控阵线圈在T1W-SE序列下的体模图像投影; (d) 相控阵线圈在T2W-TSE序列下的体模图像投影; (e) T/R鸟笼线圈在T1W-SE序列下的体模图像投影; (f) T/R鸟笼线 (a) Projection of the image with surface coil and T1W-SE; (b) Projection of the image with surface coil and T2W-TSE; (c) Projection of the image with phased array coil and T1W-SE; (d) Projection of the image with phased array and T2W-TSE; (e) Projection of the image with T/R birdcage coil and T1W-SE; (f Projection of the image with T/R birdcage coil and T2W-TSE.

3 讨论

磁共振成像临床应用中, 常常需要在众多不同的射频线圈之间做出取舍, 以获得更好的成像效果, 而医学物理学界尚没有提出针对射频线圈的评价方案。AAPM (美国医学物理师学会) 于1990年提出的磁共振质量控制方案, 以磁共振整机性能为主要目标, 因此需要进一步采用各个射频线圈的评价。

本文进一步计算出了成像层面内两垂直方向上的信噪比曲线, 对成像效果的描述更为细微, 能够准确地了解各种线圈在性能上差别的具体大小。同时, 还得到了成像层面内像素值在三维的投影, 能够直观地看出不同线圈的性能差异。

4 结论

我们的实验结果表明, 在磁共振成像中, T/R鸟笼线圈和相控阵线圈相对于表面线圈而言, 无论在信噪比还是在均匀度上面都有较大优势, 而T/R鸟笼线圈和相控阵线圈则在信噪比和均匀度上各有特色。近年来, 有学者提出将T/R技术应用于相控阵线圈[9], 这样就既能利用相控阵技术融合并行成像而加快成像速度, 同时还能够利用T/R技术得到高质量的图像。融合相控阵线圈的快速成像技术和T/R线圈的高质量成像技术的新型线圈会在不久的将来问世, 进一步提高临床诊断的精度和速度。

摘要:目的 为了验证磁共振成像中不同类型射频线圈的临床性能, 我们以表面线圈、收发兼用型鸟笼线圈和八通道相控阵线圈为研究对象, 分别测量了这三种线圈在Philips3.0T磁共振成像系统中的信噪比和图像均匀度。材料和方法 在AAPM (美国医学物理师学会) 推荐的方案测量信噪比和均匀度的基础上, 增加对最终图像的MatLAB图形化分析, 分别得到其两个互相垂直方向和整个平面上的信噪比空间分布。结果 在体模中心的感兴趣区 (ROI) 中, 收发兼用型鸟笼线圈和八通道相控阵线圈的信噪比分别是表面线圈信噪比的7倍和12倍以上, 均匀度也都高于表面线圈的均匀度。结论:收发兼用型鸟笼线圈和相控阵线圈在成像效果上均优于表面线圈;相控阵线圈能获得最好的信噪比, 而收发兼用型鸟笼线圈则具有最好的均匀度。

关键词:MatlAB图形化,收发兼用线圈,相控阵线圈,表面线圈,均匀度,信噪比

参考文献

[1]Price RR, Axel L, Morgan T, et al.Quality assurance methods and phantoms for magnetic resonance imaging:report of AAPM nuclear magnetic resonance task group no1[J].Med Phys, 1990, 17:287-95.

[2]Firbank MJ, Harrison RM, Williams ED, et al.Quality assurance for MRI:Practical experience[J].Br J Radiol, 2000, 73:376-383.

[3]Chen CC, Wan YL, Wai YY, et al.Quality assurance of clinical MRI scanners using ACR MRI phantom:preliminary results[J].J Digit Imaging, 2004, 17:279-284.

[4]Colombo P, Baldassarri A, Del Corona M, et al.Multicenter trial for the set-up of a MRI quality assurance programme[J].Magn Reson Imaging, 2004, 22:93-101.

[5]Friedman L, Glover GH.Report on a multicenter fMRI quality assurance protocol[J].J Magn Reson Imaging, 2006, 23:827-839.

[6]Bin Li, Wang Jie.The Development and evaluation of new neck coil for GE MR system[A].Conl Pro IEEE Eng Med Biol Soc[C].Shanghai:IEEE—EMBS, 2005.6033-6036.

[7]Kaufman L, Kramer DM, Crooks LE, et al.Measuring signal-to-noise ratios in MR imaging[J].Radiology, 1989, 173:265-267.

[8]Firbank MJ, Coulthard A, Harrison RM, et al.A comparison of two methods for measuring the signal to noise ratio on MR images[J].Phys Med Biol, 1999, 44 (12) :N261-264.

[9]Robert G.Pinkerton, Graeme C.McKinnon, Ravi S.Menon.SENSE optimization of a transceive surface coil array for MRI at4T[J].Magnetic Resonance in Medicine, (2006) , 56:630-636.

MatlAB图形化 篇2

C#是一种C语言家族最新的、面向对象和组件的编程语言。它使得程序员可以快速地编写各种基于.NET平台的应用程序, .NET上的众多工具足以和C#无逢结合。而且C#还支持COM平台和元数据, 并且安全性已经内建到语言内部, 同时还完全支持XML及基于Web的组件开发。因此C#已成为目前应用软件开发中广泛采用的主要工具之一。

因此, 如何将C#与Matlab进行有效的混合编程受到工程科研人员的极大关注。如果能解决这个问题, 不仅能更好地发挥Matlab强大功能, 还能快速地进行软件开发, 尤其是当软件开发中需要实现复杂的数学算法、图形化显示时会更加重要。所以研究C#与Matlab的混合编程使数据图形化具有很大的价值。

1 C#与Matlab混合编程实现原理

C#与Matlab混合编程的方式有很多种, 但是使用的范围不同。本文从简单并且实用的角度考虑, 通过将*.m文件用Matlab编译器编译成可供C#调用的动态链接库文件 (*.dll文件) , 然后在C#中实现混合编程。Matlab编译器deploytool命令将*.m文件转换成*.dll文件, 与使用Matlab引擎、MEX文件相比, 不但不需要Matlab环境的支持, 还扩展了应用的范围。另外, 编译器编译完以后, 运行速度提高30%左右, 实现了高效的开发有复杂计算和绘制图形的目的。

1.1 实例的开发环境

C#的开发环境为C#Visual Studio2010, Matlab使用的版本为Matlab2010, 都是比较新和现在常用的版本。

1.2 编写*.m文件

本文就以一构造函数为例, 并利用Matlab中ezmeshc函数画出等高线网络图。

在Matlab Command Window界面中输入ezmeshc (‘x/ (1+x^2+y^2) ’) 点击保存生成*.m文件。

1.3 将Matlab中的*.m文件编译成*.dll文件

*.m文件编写好了以后, 接下来的工作就是如何将这个*.m文件编译成C#所需要的*.dll组件, 具体步骤如下:

(1) 打开Matlab2010, 在命令窗口 (Command Window) 中输入“deploytool”命令回车。接着就会出现一个Deployment project窗口, 可以随意命名, 例如为Mypro1。但是target一定要选.NET Assembly, 因为这是C#的编程环境。

(2) 上述操作完成以后, 就会弹出Deployment tool界面, 点击Add class给新建的项目命名为Mathgraph, 然后点击Add file将已经做好的*.m函数添加进来。

(3) 点击右上边的图标Setting点到.Net标签, 将Microsoft Framework版本选择为2.0。Close窗口, 回到主界面, 点击右上方Build按钮。

(4) 发布成功完成之后, 此*.dll文件保存在Math Line项目的distrib文件夹下, Math Line.dll即为.Net可以使用的动态链接库文件。

经过上述步骤, 我们已经完成了将*.m文件编译成*.dll文件, 然后我们要做的就是如何用C#调用Math Line.dll文件。

1.4 MCRInstall.exe的安装

在运行混合程序之前, 需对MCR I ns tal l.e xe进行安装, MCRInstall.exe位于安装好的Matlab文件夹Matlab2010toolboxcompilerdeploywin32中。MCR的全称Matlab Compiler Runtime, 即Matlab编译器实时运行。可见MCR是一个由Matlab共享类库构成的执行引擎, 它能够使Matlab文件在没有Matlab的机器上运行。这一点.NET Framework相对于.NET一样, 即为程序的运行提供底层支持。当发布程序时, 需将MCR也打包进来, 否则没有Matlab的机器上程序不能运行, 如同.NET不能在没有.NET Framework的机器上运行一样。

当机器是第一次在没有Matlab环境下运行时, 要选择正确的安装路径。点击我的电脑-属性-高级-环境变量-系统变量-PATH-编辑, 在变量值输入框中不要删除以前的字符串, 一定要在最前面加上一个正确的MCR的安装路径, 如:C:Progam FilesMatlabMatlab Compiler Runtimev714binwin32, 点击确定、保存重启电脑。

1.5 C#中调用*.dll文件

Math Line.dll组件已经形成, 接下来如何在C#中调用成为主要问题。首先我们必须要把MWArray.dll引用到项目中来, 即在C#中添加MWArray.dll组件, 因为在C#与Matlab混合编程的时候, 我们要经常要using Math Works.MATLAB.NET.Arrays;using Math Works.MATLAB.NET.Utility。

Math Works.MATLAB.NET.Arrays命名空间下的类提供从其它任何兼容CLS (Common Language Specification) 语言访问MATLAB中数组功能, 这些类支持数组格式化、类型特定索引和错误处理功能。而Math Works.MATLAB.NET.Utility命名空间下的类提供了对MWArray类架构和Matlab公共运行时的托管API的通用支持。MWA r ray.d ll组件一般位于Matl ab的安装位置Matlab2010toolboxdotnetbuilderbinwin32v2.0。添加完MWArray.dll组件以后, 再把Math Line.dll组件添加进项目。

引用完成以后, 就可以在C#中调用Math Line.dll组件, 但C#是只面向对象语言, 要调用Math Line.dll组件, 就必须创建一个Math Lineclass对象。具体编程代码Math Line.Math Line class c=new Math Line.Math Line class () ;创建完对象以后, 就可以调用Math Line中的计算方法, 在C#中输入相应的x, y的值, 就可以通过Matlab显示出所需要的图形。 (如图1)

1.6 结果

完成上述步骤以后我们就可以在用C#开发的语言中调用Matlab编译的.dll文件, 并实现相应的算法和显示图形, 这样一来我们就直观的看到了相应的数据。不仅实现起来比较方便, 而且大大提高了编程的效率。

2 结语

利用C#和Matlab混合编程, 不仅可以发挥Matlab强大的图形处理和计算功能, 同时还可以发挥C#迅速开发、用户界面库丰富、语法简单的优点。对于开发计算复杂, 图像处理要求很严的工业控制软件, 会发现两者的结合是更加的实用。而对于很多专业技术人员他们已经熟悉了Matlab软件, 只需学习简单、方便的C#语言即可。

本文只是演示了C#和Matlab混合编程并利用Matlab绘制出图形, 显示一了个简单的Matlab函数图形, 它还可以调用Matlab的其他很多函数, 在C#中实现积分微分运算、矩阵运算等, 大大简化了C#的编程。由此可见C#和Matlab混合编程将在很多行业的软件开发当中得到越来越广泛的应用。

摘要:C#是一种安全的、稳定的、简单的, 由C和C++衍生出来的面向对象的编程语言。C#综合了VB简单的可视化操作和C++的高运行效率, 以其强大的操作能力、优雅的语法风格、支持.NET开发、创新的语言特性和便捷的面向组件编程, 成为程序开发者非常喜爱的编程语言。但是常用的程序设计语言在统计方面存在不足, Matlab可以弥补这方面的不足, 并且Matlab在计算和图形处理方面的能力无可比拟, 成为很多行业仿真、模拟不可或缺的工具软件。但Matlab在界面设计, 运行效率和与外部设备连接上无法令人满意。本文对如何将二者结合起来, 使数据图形化问题进行探讨。

关键词:C#,Matlab,混合编程,数据图形化

参考文献

[1]须德.C#大学教程[M].北京:电子工业出版社, 2004.

[2]高成等编.Matlab接口技术与应用[M].北京:国防工业出版社, 2007.

MatlAB图形化 篇3

1967年,美国公司Math Works推出Matrix Laboratory(缩写为MATLAB)软件包。由于该软件语句简练,功能强大,简单实用,MATLAB已经成为面向科学与工程计算的大型优秀科技应用软件。在电路分析、工程计算与仿真研究中有广泛的应用前景。与此同时,大量可视化编程语言的出现,也为工程技术人员提供了可视化的编程环境,大大降低了技术人员编程的工作量,使得非专业的编程工作者也能完成复杂的编程任务,这极大地推动了各种应用软件的发展。作为面向科学与工程计算的大型科技应用软件,MATLAB同样提供了一个功能强大的用于编写图形用户界面的工具GUI(Graph User Interface)。本文将通过具体实例来介绍MATLAB软件中GUI的使用。

2 实例模型

本实例是应用MATLAB对转向柱式汽车电动助力转向装置(C-EPS)进行路感和操纵稳定性仿真和可靠性仿真,装置的结构示意图如图1所示。通过MATLAB建立一个GUI界面构成的软件系统,用于对C-EPS的控制策略进行仿真,并输出结果。

在对C-EPS系统深入分析基础之上建立了系统的动力学模型。为了更好地分析C-EPS系统对于转向路感和车辆操纵稳定性的影响,主要考虑建立以下模型:

1)汽车动力学模型,主要建立二自由度简化汽车动力学模型;

2)轮胎模型,主要建立一个简化的线型轮胎模型;

3)转向系模型,建立蜗轮蜗杆机构到转向盘之间的二自由度质量弹簧系统模型;

4)电机模型,对象为C-EPS上使用的直流有刷电机;

5)传感器模型,对象为C-EPS上使用的BI扭矩转角传感器。

综合前面所建立的各个数学模型,包括汽车动力学模型、转向系模型、传感器模型、电机模型等,再考虑C-EPS系统的控制策略,转向系传动比、电流控制器、蜗轮蜗杆传动比等因素,利用控制理论建立一个综合的数学模型,这就是C-EPS仿真控制模型。路感仿真和操纵稳定性的仿真都是基于该控制模型来进行的。

C-EPS仿真控制模型的控制框图如图2所示。

图中:U为电机电压;Im为电机反馈电流;Iset为MAP图给出的电机给定电流;Tm为电机输出助力扭矩;Ta为蜗轮蜗杆输出的助力扭矩;G1为蜗轮蜗杆减速比;TR为车轮传到齿轮齿条上的当量力矩;THW为驾驶员在方向盘输入的手力;θHW为转向上轴的输入的转角位移;θR为转向下轴的输出的转角位移;G2为转向齿轮齿条减速比;V为车速电压信号;TS为传感器电压信号。

在上述EPS仿真控制模型中,如果想得到在汽车转向时的路感大小,即驾驶员施加在方向盘上的手力THW和回正力矩换算在转向柱上的当量力矩TR之间的关系,可以根据需要直接把前面相关的各个数学模型方程代入所建立的EPS仿真模型中,就可以得到装有EPS系统之后的汽车转向系路感传递函数,这时候只要随便有一个路面输入,都可以得到一个相应的路感仿真结果。

同样的道理,如果想得到汽车转向时候的操纵稳定性指标——汽车车身横摆角速度大小相对方向盘转角的响应,也可以用与路感仿真相同的方法,到装有EPS系统之后的汽车转向系“横摆角速度-方向盘转角”的传递函数。

有了传递函数,就可以通过程序在界面上显示出不同车速和控制条件下装有EPS的汽车转向系的路感以及操纵稳定性的时域和频域响应。

3 图形用户界面(GUI)的制作

所谓图形用户界面(GUI)是指由窗口、光标、按钮、菜单、文字说明等对象(Objects)构成一个用户界面。用户可以通过键盘输入相关的参数,通过鼠标选择、激活这些对象。使计算机完成相关的计算或者绘制波形等。Matlab的图形界面设计是通过对各种图形对象的操作来实现的,用户在使用的过程中需要深入了解各种图形对象的特征、属性和操作。由此可见,图形用户界面的设计、制作是一件比较繁琐的工作。不过,MATLAB版本升级到6.5后,为用户提供了较为方便的设计、修改图形用户界面的专用工作台(Layout Editor)[1]。用户只需要在命令控制台输入guide,调用GUI设计工作台,选择B1ank GUI(Default),就可以设计自己的用户界面,用户界面设计工具如图3所示。

该界面与我们平常所接触到的可视化编程环境类似。上面分别为菜单条和编辑工作条,左侧为控件模版区。中间为设计工作区(即可以进行用户图形界面设计的区域)。可以根据需要进行界面设计,依次选取按钮、可编辑文本框、静态文本框等控件,然后双击相应的控件,可对其“属性编辑框Property Inspector”进行控件属性修改,利用上述的数学模型,填好各控件的相关属性值。界面设计完成后,按工具栏中的Activate Figure按钮即可运行,其运行结果如图4所示。只需输入给定的整车参数和EPS电机参数,然后单击“数据导入”按钮就可以跳转到仿真结果输出界面,如图5所示。

4 界面设计过程中的难点

由上述不难发现,利用Matlab自身提供的专用工作台(Layout Editor),可以方便地设计出各种不同的用户界面。但在界面的设计过程中存在以下两大难点:

1)不同界面间参数值的互相传递,如图4界面中的输入参数如何传递到图5界面中去;

2)某一界面下如何同时输出两种不同的仿真图形,如图5中同时输出时域响应和频域响应。

对于难点1,一般有两种行之有效的办法。一种是利用MATLAB本身自带的save和load函数来对每个参数进行处理,在数据输入界面保存后,在结果输出中再次读入前面所保存的数据;另一种则是直接将所有参数设为全局变量。

方法一虽然可行,但会随之生成大量无关文件,使得系统操作繁琐、运行缓慢。因此本文采用了方法二,即将所传递参数设成全局变量。这样的好处在于不仅简化了程序,还提高了软件运行的效率。

对于难点2,可采用的解决办法是使用MATLAB特有的图形句柄[2]。对于同一界面上的不同图形编辑框设置相应的句柄,在出图时,只需提前调用所对应出图区域的句柄,即可得到所需要的结果。

需要注意的是,在参数传递过程中,必须注意传递参数的类型,如有需要可以在程序中按要求进行必要的转换。

5 结束语

鉴于MATLAB所具有的强大科学计算功能,以及丰富的图形功能,越来越成为工程技术人员的首选。同时,MATLAB所提供的可视化编程环境,为工程技术人员编制良好的人机界面程序提供了强有力的支持。本文就MAT-LAB的图形用户界面的使用进行了有益的尝试,希望能和同行进行一些交流。

参考文献

[1]孙祥,徐流美,吴清.MATLAB7.0基础教程[M].北京:清华大学出版社,2005.

MatlAB图形化 篇4

在图像的视觉特征研究领域,形状特征因更接近人的视觉特点,一直是人们的研究重点。而形状的边缘又能很好的反映形状的信息,所以有必要提取图形的边缘轮廓以对以后的深入分析打下基础。

实验之前我们首先阐明两个概念,即图形和轮廓。我们这里所说的图形,指的是有明显的形状和线条特征,但没有太复杂的颜色或纹理特征的简单图像。为了便于研究,本文中所采用的图形为黑白二值图形。

另外,因为我们需要研究的对象是形状而非内部细节,所以本文所涉及的轮廓,指图形的外轮廓,不包括图形内部的孔洞所围成的内部边界,例如,对于示例图1,我们所期望得到的轮廓是如图3所示的外轮廓,而非图2所示图形的整个内外边界轮廓。

2 基于matlab的轮廓提取

图形的外轮廓提取所面临二个问题:

首先,我们知道,在matlab中有一个提取图形轮廓的函数bwperim,但这个函数的局限性在于,它不仅提取外轮廓,对图形区域内部的孔洞所围成的内部边缘也提取出来。如图1中这种带花纹的图形,那些花纹细节也将被提取出来,我们得到的不是一个单纯的蝴蝶的形状,如图2。解决方法是在提取轮廓之前先利用孔洞填补函数bwfill(F,'holes');将这些孔洞填补上。代码如下:

F2=bwfill(F1,'holes');

其次,对于图形中比较细小的部分,例如蝴蝶的触角,提取轮廓后可能这一部分会出现断点,或者提取出一条曲线或直线段而非闭合区域。解决方法是先用膨胀函数dilate(F,SE)将原图形膨胀,这样就可以将细小部分加粗,然后再提取轮廓。其中SE为函数dilate的二值结构元素。SE不能太大也不能太小,太大可能较原图中原本分离的两部分连接起来,而太小的话膨胀效果不明显,细小的区域仍然没得到扩大。实验表明,当SE=为3*3单位矩阵时,轮廓提取的效果较为理想。

下面我们通过实验来具体阐述一下如何用matlab提取轮廓。

我们将图1的文件命名为butter,提取后的轮廓图形重新保存为后缀名为.bmp的文件,则轮廓提取的代码为:

F=imread('butter.bmp');

F1=~im2bw(F);%bwfill函数处理的是背景色为黑色的二值图形,原图为白色背景,故先对原图反色;

F2=bwfill(F1,'holes');

SE=ones(3);

F3=dilate(F2,SE);

F4=bwperim(F2);

figure,imshow(F4);%显示一下轮廓图形,以查看提取后的效果

imwrite(F4,butter2,'bmp');

3 简单轮廓图形的填充

上面我们研究了如何提取黑白图形的轮廓,其实在我们获得的网络图像图形资源中,还经常得到一些轮廓图形,我们需要将这些轮廓填充起来作为形状来研究,因此有必要研究如何有效地填充边界轮廓。为便于实验,本文中用来填充的轮廓图形都是简单的轮廓图形。

轮廓都是一个闭合的曲线,但有些图形的边界非常接近画布的边缘,以至于在填充时程序往往将这部分区域作为对象外部区域,即背景来考虑,这样就导致轮廓的范围被改变,从而不能正确填充。因此在填充前,我们需要利用photoshop中的动作命令将轮廓图形的画布变得稍大一些,例如原始图像画布大小为256*256,那么我们可以将其尺寸改为280*280,这样,一些轮廓点就不会距离画布边缘过近了。

画布尺寸处理好以后,我们就可以进行填充了。目前研究比较多的填充算法有扫描线算法、种子填充算法等。但这些算法的代码不易编写,而且对于简单的形状来说,这些算法显得比较繁琐,针对我们的实验中使用的轮廓图形比较简单的特点,我们提出了一种较为简单的轮廓填充思想,这种算法共分为两大步,这里我们所取一幅背景为黑色的帽子的轮廓图”hat.bmp”为例,如图4。

首先,从左至右逐行扫描图形,如果像素值为0,则是背景,不做任何改变,继续往后扫描,直到遇到像素值为1的点,如果这个点的下一个点像素值为0,表示扫描到了最左边的轮廓点,这时设置一个标记,从这个点往后所有像素值为0的点全部置1,直到再次遇到像素值为1的点为止,此过程将这两个边界点之间的区域填充起来。

然后接着扫描后面的点,当再次遇到像素值为1的点事时,重复以上步骤。这样一行行的扫描填充,整幅轮廓图就被填充起来了。

其代码如下:

填充后的效果如图5所示。

需要注意的是,用来填充的轮廓图必须是完全闭合的,如果边缘本身存在断点,则检测边界点时就会出错,导致图形无法正常填充。

4 结束语

以上,我们通过实验给出了利用matlab对黑白二值图像的外轮廓提取和简单轮廓图形的填充时遇到的问题进行了解决,并给出了算法的部分代码。希望这些工作能对从事图像处理及相关领域的研究人员和学习者有所帮助。

参考文献

[1]王晓丹,吴崇明.基于MATLAB的系统分析与设计—图象处理[M].北京:西安电子科技大学出版社,2000.

[2]周正杰,王润生.基于轮廓的形状特征提取与识别方法[J].计算机工程与应用,2006(14):92—94.

[3]李丙春.图像区域边缘形状特征提取[J].喀什师范学院学报,2007,28(3):62-64.

MatlAB图形化 篇5

MATLAB是matrix laboratory(矩阵实验室)的缩写,是1984年由美国Mathworks公司推出的一套高性能的数值计算、工程应用软件,它将矩阵运算、数值分析、图形处理、编程技术结合在一起,为用户提供了一个强有力的分析、计算和程序设计工具,非常适合用来编写大型工程计算和科学仿真程序代码[1,2]。

在工程计算和科学仿真中,程序往往要进行不同参数下多次调试,以达到合理的试验要求。在程序代码庞大,而参数繁多的情况下,快速设计一个的参数输入界面,显得十分方便和必要。这样可以方便直观地修改输入参数,省去在程序代码中查找参数进行修改的麻烦。

MATLAB的图形用户界面(Graphical User Interface,GUI)功能和专门的输入对话框函数(inputdlg)都可以完成这个工作。

2 MATLAB图形用户界面(GUI)简介

MATLAB早期以矩阵运算为主,但随着科学计算可视化的需求,MATLAB在第4版推出了句柄图形,自此之后,MATLAB的图形界面设计功能也日益完善。如今,MATLAB已成为集数值计算、符号运算和图形处理功能为一身的科学计算语言,满足了不同领域用户的需求。

从MATLAB 6.x版开始,它的图形用户界面设计功能有了很大提高,利用它可以方便地实现图形化窗口界面的交互方式。所谓图形用户界面,是指包含了各种图形控制对象,如图形窗口、菜单、对话框以及文本框等用户界面,也称为控件。利用这些用户界面,用户可以和计算机之间进行信息交流,并通过编写控件的回调函数(Callback),完成特定的功能。

在MATLAB中创建图形用户界面有两种方法[3]。一种是在M脚本文件和函数文件中直接利用句柄图形指令建立各个控件对象并设置其属性;另一种方法是利用MATLAB提供的图形化界面设计向导(GUIDE)开发环境。采用第一种方法建立用户界面工作量大,控件属性设置、修改繁琐,一般需要设计者有丰富的经验。而采用GUIDE开发环境进行用户界面设计操作方便、效率高,可以达到所见即所得的编程效果,利用这个开发环境,可以在很短时间内设计出一个GUI。

下面通过一个全球定位系统(GPS)信号仿真,进行界面化参数输入的例子,来演示MATLAB图形用户界面设计向导(GUIDE)的使用方法。

3 利用GUIDE设计输入参数的图形用户界面

通过GUIDE设计一个完整的GUI,需分为两个阶段完成[4]。

第一个阶段:图形界面的结构设计阶段。利用设计向导构造整个图形界面的布局,合理设计菜单、安排控件位置等,并进行必要的属性设计。

第二个阶段:功能设计阶段。为菜单、控件编写相应的回调函数(Callback),具体实现界面的各种功能。

首先,在MATLAB的命令窗口输入指令guide,或者通过菜单操作新建GUI,然后选择建立新的空白(Blank GUI(Default))的用户界面选项时,就会出现工作台(Layout Editor)界面,如图1所示。

在其中可以拖放需要的控件并设置窗口和各个控件的属性,双击控件,就可以打开控件属性编辑器,进行控件属性设置,如图2所示。

常用的属性有:

(1)Tag属性的取值是一个字符串,用来标记控件的名字,在进行程序设计时,可以利用该名字来指定控件,一般不必修改。

(2)String属性为该控件显示的字符串,通过编辑文本框,用户可以方便的输入或修改已经存在的字符串。

其他还有字体设置,控件位置等等。

根据需要,我们共设置9个输入参数,用到10个文本框控件(text)、9个编辑框控件(edit),两个按钮(pushbutton)。并把各控件的位置用鼠标拖动、排列成一个合适的布局。如图3所示。

应用GUIDE环境完成控件的布局之后,也就完成了整个图形界面的结构设计。接下来把结果保存到*.fig文件中,MATLAB会生成同名*.m文件,在*.m文件中则是更为重要的功能设计,即要编制控件的回调程序。

若要编制某一控件的回调程序,用右键单击该控件,在弹出菜单中点击View Callbacks,然后从子菜单中选择一种激活回调程序的方式,就可以编制回调程序了,如Callback指单击控件时激活回调程序完成一定的功能。这是设计的关键,编写中要灵活运用set,get,gcf,gca,gco以及str2num等函数,以完成参数传递、数据类型转换等工作。

对于我们参数输入的简单例子,只需使用get,str2num等就可以完成参数输入功能。“OK”控件的Callback函数的具体程序如下。

运行程序后,得到如图4所示的参数输入界面,图中各编辑框的数值可以进行修改。用鼠标单击“OK”,就执行上面回调函数,上面的参数变量被赋值。

4 inputdlog函数设计输入参数界面

使用MATLAB图形用户界面工具,功能强大,可以达到用户理想的要求,但对于输入参数这个问题,使用GUI工具显得太复杂了,尤其是对于初学者,往往很难掌握MATLAB各类控件的使用技巧。而使用inputdilog函数,则使这个工作变得十分简单。

inputdlg是MATLAB自带的一个输入对话框函数,专门进行输入参数人机对话的一个工具,可以很方便地完成各类多个参数的人机交互。其语法、编程例子如下,主要使用5条基本语句:

answer=inputdlg(prompt,dlg_title,num_lines,defaults,'on');%产生输入对话框,并返回用户输入到元胞矩阵answer

最后得到的answers是一个元胞矩阵,可按需要对其中的每个元素变换成需要的数据形式,一般可以使用str2num()(或eval())函数把数据变成数值形式,以使各个变量得到对应的值。如:

把上面两段程序放在一个文件中,执行后可以得到如图5的输入对话框界面。

当用户改变输入对话框中某一个变量的值,则变量会得到用户当前输入的新值;重新执行程序,则该变量仍使用原来的默认值。

除了输入对话框,MATLAB还有提问对话框questdlg、列表对话框listdlg、错误提示对话框errordlg等等,方便用户编程。

5小结

通过上述介绍可以看出,利用MATLAB的图形用户界面(GUI)设计功能,我们可以开发出很友好的交互式图形界面,可以很快设计一个参数输入界面,可以使数据处理快速、灵活、直观、高效,可以迅速开发出满足各种需要的界面友好的数据处理软件。而通过MATLAB专门进行输入参数人机对话的一个工具:输入对话框函数inputdlg,可以更方便地完成多个参数的输入工作。以上介绍的两种方法,为编程人员快速调试程序提供了有益的参考。

摘要:在用MATLAB编写大型工程计算、科学仿真程序时,对于参数繁多,而又经常需要修改参数的情况,设计一个图形用户界面的参数输入窗口,就显得十分方便和必要。利用图形用户界面设计向导GUIDE和输入对话框函数inputdlg两种方法,可以快速完成参数输入的图形用户界面设计,并介绍了详细的步骤和例程。

关键词:MATLAB,图形用户界面,参数

参考文献

[1]陈怀琛.MATLAB及其在理工课程中的应用指南[M].西安:西安电子科技大学出版社,2000.

[2]张志涌.精通MATLAB6.5版[M].北京:北京航空航天大学出版社,2003.

[3]焦勇,周喻虹.基于MATLAB的快速图形化数据处理软件设计[J].电子科技,2005,(7):40-42.

MatlAB图形化 篇6

1 基于matlab的图形界面设计

本文设计的图形用户界面包括以下主要功能:声音的采集与储存;录入声音时实时显示声音波形图像;声音波形图像的存储;声音文档的读出;声音波形图像的读出。该文利用matlab自带的GUIDE设计声音采集图形界面。该界面包括两个坐标轴,分别用于显示录入时实时声音波形和显示打开储存声音的波形。该界面有5个菜单按钮,分别为:开始采集声音、停止采集声音、声音数据的保存、时域波形的保存、打开声音数据。以上按钮能够比较好地实现用户对该界面的人机互动和对该系统的功能需求。该界面的功能按钮如图1所示。下面内容将详细介绍该界面功能的实现。

2 matlab驱动声卡实现对语音信号的采集

本小节主要简单介绍matlab实现声音信号采集的主要库函数的用法。Matlab的库函数analoginput可实现对模拟信号的采集。可以定义AI=analoginput('ADAPTOR'),其中'ADAPTOR'是设备的名称。函数analoginput的输入参数选项中的’winsound’表示是微软Windows操作系统下的计算机声卡对声音的采集。为此,在GUI“开始采集声音”按钮的句柄要设置一个模拟信号变量AI=analoginput('winsound')。matlab软件支持多通道音频输入,但是必须要有支持多声道输入的声卡支持,该文使用单声道声卡,所以调用matlab的库函数addchannel(AI,1),其中addchannel的第二个参数1表示增加一个通道。set(AI,′Sample Rate′,value)是设置声音信号采样率。Value取值根据实际需求来确定,必须满足奈奎斯特采样定理。set(AI,'Samples Per Trigger',value)是设置采集声音的长度,可以用秒作为单位也可以用采集的样本个数作为单位。Start(AI)函数打开声音采集的对象,一旦触发立即开始采集声音。而stop(AI)则是停止采集声音信号,即用户干预声音采集的过程,已经得到想要的声音信号,功能按钮“停止采集声音”就是通过stop(AI)实现的。通过主要运用以上函数就可以实现声音信号的采集。

3 声音数据的保存和播放以及声音信号时域波形图的保存

声音数据保存按钮的功能由uiputfile函数以及wavwrite函数实现。uiputfile函数是个标准保存文件对话框函数。其第一个参数是默认当前文件夹的默认文件名称,用户只需要点击“确定”按钮文件就会按照默认当前文件夹的默认文件名称存储,第二个参数'Save file name'表示可以由用户选择文件的存储名称和存储路径。wavwrite(y,Fs,nbits,wavefile)函数的功能是写入Microsoft的wave(”.wav”)声音文件。其中参数”y”是声音信号的数据,”Fs”是采样率默认值为11025Hz,参数”nbits”表示声音信号数据的位数类型,而根据声音信号数据是整型或浮点型又有所区别。参数”wavefile”表示文件的名称和路径。

同样“时域波形的保存”功能按钮需要用到uiputfile函数。由于是画波形图,用到plot函数,如图2所示。具体为plot(handles.t,handles.data),其中handles.t是句柄返回的时间参数,handles.data是句柄返回的声音信号幅值参数。波形图像的保存用saveas(h,name,format)函数,该函数可以将图像以用户需要的格式保存某个路径上,其中“h”是GUI返回的句柄。

“打开声音数据”功能按钮实现的是播放以及存储的声音文件的功能。该按钮的功能主要通过uigetfile函数和sound函数实现。Uigetfile函数与uiputfile函数类似,只不过Uigetfile函数是个标准的打开文件的一个对话框函数。sound函数的功能则是把已经以向量形式存储起来的声音数据以声音的形式播放出来,其还有采样率和比特率的参数可供用户选择。

4 总结

本文介绍了基于matlab的声音采集图形界面的设计,该系统在声音采集播放等方面利用matlab的库函数,加快了研究的进程,避免了应用其他工具的繁琐性。Matlab库函数提供了丰富的输入参数,可以灵活地对参数进行修改,以适应不同的测试条件,达到最佳实验结果。

利用matlab编写程序实现对声音信号的采集、存储、声音时域波形图的存储、声音的读取等功能。构建这个数据采集系统具有高精度、实时性能好、人机交互界面友好等优点。

参考文献

[1]陈璇,李启海,朱万彬,等.基于声卡和MATLAB的音频信号的采集和处理[J].2010,33(3):71-74.

[2]李亚微,郭敏.基于MATLAB的音频数据采集系统[J].电声技术,2007,31(3):57-58.

[3]付俊庆,李凤玲.MATLAB环境下的实时数据采集方法[J].测控技术,2004,23(1):30-32.

[4]姜占才,袁海良.基于声卡和MATLAB的数据采集和分析系统[J].青海大学学报,2006,24(6):67-69.

[5]常春,倪铭.基于MATLAB和声卡的虚拟仪器设计[J].自动化与仪器仪表,2005(3):23-25.

MatlAB图形化 篇7

随着信息技术的飞速发展, 数据的产生和存储达到了空前繁荣的阶段。从数据中提取有用信息, 是数据分析的基本目的之一;在试验过程中, 由于复杂的实际情况, 观测工具的精确度, 观测人员在观测过程中产生的误差等等, 对所得试验的原始数据处理的正确与否, 直接关系到试验目的、试验结论。为了在试验数据中提取更多有用信息, 充分发挥试验资料的效能得到比较准确的科学结论, 需要对试验数据进行一系列的处理和分析。

数据分析[1]的目的是利用数据来研究一个领域的具体问题, 数据分析的过程包括确定数据分析的目标、研究设计、收集数据、数据整理与分析、解释和分析计算结果。从数据分析的整个过程来看, 软件的使用主要在数据整理与分析阶段。软件起的作用主要是整理、计算、绘制图表等。

MATLAB是美国MathWorks公司开发的用于概念设计、算法开发、建模仿真、实时实现的理想的集成环境, 是目前最好的科学计算软件之一。MATLAB是一套高性能的数值计算和可视化软件, 它集矩阵运算、数值分析、信号处理和图形显示于一体, 构成了一个界面友好、使用方便的用户环境, 是实现数据分析与处理的有效工具。

图表是数据的图形表示, 可以形象的说明数据的特征与分布情况。MATLAB提供了丰富的用于绘制图形、标注图形以及输出图形等的功能。

1 可视化

数据可视化是指数据的图形表示, 作为一款功能强大的工具软件, MATLAB具有很强的图形处理功能, 提供了大量的二维、三维图形函数。由于系统采用面向对象的技术和丰富的矩阵运算, 所以在图形处理方面既方便又高效。常用的图形有条形图、直方图、阶梯图和火材棒图等。

(1) 条形图用一个单位长度表示一定的数量, 根据数量的多少, 画成长短相应成比例的直条, 并按一定顺序排列起来, 单式条形图可以反映统计对象随某一因素变化而变化的情况, 复式条形图可以反映统计对象随两个因素变动而变动的情况, 而结构条形图则反映不同统计对象内部结构的变化情况。条形图能够使人们一眼看出各个数据的大小, 易于比较数据之间的差别, 清楚的表示出数量的多少。

(2) 直方图又称柱状图、质量分布图。是一种统计报告图, 由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型, 纵轴表示分布情况。在质量管理中, 如何预测并监控产品质量状况?如何对质量波动进行分析?通过直方图可以一目了然地评估总体的概率密度。

(3) 阶梯图一种常见的离散数据图形, 以一个恒定间隔的边沿显示数据点, 绘制阶梯图所用的是stairs指令。

(4) 火柴棒图 (枝干图) 是将每个离散数据显示为末端带有标记符号的线条, 所用指令是stem。在二维火柴棒图中, 线条的起点在X坐标轴上。

以随机生成的160个服从标准正态分布的随机数作为样本数据, 分别作出样本数据的 (a) 条形图、 (b) 直方图、 (c) 阶梯图、 (d) 火材棒图如下:

2 二维数据可视化[2]

(1) 单幅图形——在同一坐标系下显示sin x和cos x的函数图形

(2) 多幅图形——在同一图形窗口中显示多幅不同图形

3 三维数据可视化[3]

(1) 带网格的空间曲线——显示螺旋线x=sint , y=cost, z=t

(2) 等高线——显示MATLAB函数peaks产生的二元函数的曲面及其等高线图

由上可见, 使用MATLAB软件作为数据分析的工具提高了计算的能力, 样本容量扩大, 增加了统计推断的正确性, 为数据分析过程节约了大量计算时间, 提高了数据分析的效率。但是对问题的研究设计、统计分析方法的选择、数据的收集、计算结果的解释和分析, 这些都不是MATLAB软件解决的问题, 因此数据分析结果的合理性完全取决于问题解决的方法。

摘要:数据分析的目的是利用数据来研究一个领域的具体问题, 图表是数据的图形表示, 可以直观地从中获取大量信息, MATLAB提供了丰富的绘图功能。

关键词:数据分析,试验数据,图形

参考文献

[1]李柏年等.MATLAB数据分析方法[M].机械工业出版社, 2012

[2]张德丰等.MATLAB数值分析[M].机械工业出版社, 2009

上一篇:采区泵房下一篇:图书资料室