APP下载

Matlab软件在数学建模中的应用

2016-10-10冯海琴

赤峰学院学报·自然科学版 2016年7期
关键词:复原纸片灰度

冯海琴

(赤峰学院 数学与统计学院,内蒙古 赤峰 024000)

Matlab软件在数学建模中的应用

冯海琴

(赤峰学院数学与统计学院,内蒙古赤峰024000)

数学建模是联系实际问题与数学的桥梁,是数学在各个领域应用的媒介,它已成为现代科技工作者必备的重要能力之一;本文首先介绍了数学建模的概念、数学建模的一般步骤,然后重点从数学建模实例出发,说明了Matlab软件在数学建模中的重要作用.结果表明将Matlab软件用于数学建模可以提高数学建模的效率和质量,丰富数学建模的方法和手段,提倡将Matlab软件用于数学建模课程,具有重要的教学意义.

数学建模;Matlab软件;数值计算;应用

1 引言

如今,数学已经渗透到社会生活的各个领域,发挥着越来越重要的作用,各行各业日益依赖于数学,甚至可以说当今社会正在日益数学化[1].利用数学知识、数学方法解决实际问题时就需要我们进行数学建模,数学建模是联系实际问题与数学的桥梁,是数学在各个领域应用的媒介.数学建模与求解其他数学问题有很大的不同,我们以往求解的数学问题是已知条件、待求解的问题都很明确,我们只要运用恰当的数学方法求出问题的解即可;而在数学建模过程中,面对来自社会生活各个领域的实际问题,我们所具有的可能只是一些根据经验、实验或观测得到的图片、表格等,从中需要我们对相关数据进行分析,从而明确已知条件和待求解的问题,最终找到求解实际问题的方法.在对数据进行分析处理时,往往需要做大量的计算,这用传统的手工计算是不可能完成的.随着计算机技术的飞速发展,我们可以借助计算机,使用多种数学软件如Matlab、Maple、Mathematica等来完成.其中由美国Mathwork公司于20世纪80年代中期推出的Matlab软件以其优秀的数值计算能力和数据可视化能力[1],及其能够方便、快捷、高效解决实际问题的能力从众多软件中脱颖而出,越来越多的建模者在数学建模时会选择使用该软件.

本文将以2013年高教社杯全国大学生建模竞赛B题为例来说明Matlab在数学建模中的重要应用,下面首先对数学建模的概念和建模步骤进行简要介绍.

2 数学建模简介

2.1数学建模的概念

数学建模这个词出现的时间并不是很长,大概也就是三十来年.目前,不同的数学建模教材、书籍和文献关于数学建模的概念说法很多,但一般而言可归纳为:通过对实际问题进行分析、抽象和简化,引入一些数学符号、变量和参数,然后根据实际问题的内在规律,用数学语言和数学方法建立变量、参数间的内在联系,得出一个数学结构,该数学结构称为数学模型,数学模型的建立和求解的过程称为数学建模.

2.2数学建模的一般步骤

数学建模需要哪些步骤,并没有一个固定模式,但一般而言,建立一个完整的数学模型,大致上可分为以下步骤[2,3]:(1)模型准备、(2)模型假设、(3)模型建立、(4)模型的求解、(5)模型分析、(6)模型检验、(7)模型应用.

3 MATLAB在数学建模中的应用

由于Matlab具有优秀的数据处理及数值计算能力,同时具有方便、快捷高效的特点,所以将Matlab用于数学建模问题的模型建立与求解,必将提高数学建模的质量和效率,促使问题的解决,起到事半功倍的效果.下面以2013年高教社杯全国大学生建模竞赛B题为例来说明Matlab在数学建模中的重要应用,以及我校代表队是如何将Matlab应用到数学建模竞赛中,并取得了优异的成绩.

2013高教社杯全国大学生数学建模竞赛题目B题为碎纸片的拼接复原问题,破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用.传统上,拼接复原工作需由人工完成,准确率较高,但效率很低.特别是当碎片数量巨大,人工拼接很难在短时间内完成任务.随着计算机技术的发展,人们试图开发碎纸片的自动拼接技术,以提高拼接复原效率[4].该题目具有三个问题,由于后两个问题可以在第一个问题的基础上做一下改进即可得到,所以我们这里只讨论第一个问题:

对于给定的来自同一页印刷文字文件的碎纸机破碎纸片(仅纵切),建立碎纸片拼接复原模型和算法,并针对附件1、附件2给出的中、英文各一页文件的碎片数据进行拼接复原.如果复原过程需要人工干预,请写出干预方式及干预的时间节点.复原结果以图片形式及表格形式表达.

3.1问题分析

对于仅纵切的碎纸片,只需对纸片左右拼接,所以只要设计算法对碎纸片进行从左到右排列即可,最终求出它们的排列行向量.可以利用碎纸片的左右边缘特征进行拼接.附件中给出的是碎纸片的扫描图片,图片均为.bmp格式的灰度图像,图片大小相同,问题1中的每一幅图片尺寸均是的.调用Matlab软件中的imread函数将每一符扫描的.bmp格式的图片转化为由灰度值构成的矩阵,用pic(i).gray表示;图片的边缘特征可以用它们对应的灰度矩阵的边缘灰度值进行描述.对碎纸片进行拼接时,如图1所示,若两图片a与b相邻,且图片a在左边,图片b在右边,那么图片a的右边缘与图片b的左边缘在对应点处,灰度值应该相等或相近.为了判断两个相邻图片在对应点处的灰度值是否相等或相近,我们首先将题目中给出的图片进行预处理,即将灰度图像二值化,采用方法为模糊C均值聚类算法.二值化后,每一个图片均为黑白图片,灰度矩阵是由0和1构成的二值矩阵.这样方便比对相邻图片的边缘灰度特征,从而对问题中给出的图片进行排序,实现碎纸片的拼接.

图1 

3.2模型建立

基于上面的考虑,设计针对问题1的算法,算法步骤如下:

(1)数据导入:调用Matlab软件中的imread函数将每一符扫描的.bmp格式的图片转化为由灰度值构成的矩阵pic (i).gray;

(2)数据预处理:分别计算由每一个灰度矩阵的第一列和最后一列构成的点集points,用模糊c均值聚类算法将这些点分为两类,聚类中心的灰度值小的一类元素灰度值转化为0,另一类化为1,既二值化.处理后可以使每个灰度矩阵的第一列和最后一列均是由0和1构成列向量;

(3)人工干预:用手动的方式选择出应排在第一个的图片,并将图片的序号赋给向量pic_pin,例如第一个图片为009,则序号为10.图片的最终的排列序号用向量pic_pin表示;

(4)对其他图片进行排序:首先搜索应排在第一个图片后的下一图片,即第二个图片,方法是分别将其他每个图片的第一列与第一个图片的最后一列进行比较,求具有相等灰度值的对应点的个数sum_bin(j),并求出向量sum_bin的最大分量,与这个最大分量max对应的图片就是第二个图片;然后利用相同的方法根据第二个图片搜索第三个图片,根据第三个图片搜索第四个,……,直至将所有的图片排列完毕;

(5)输出复原后的图片:按照步骤(4)图片的排列顺序,将图片的灰度矩阵进行拼接,构成拼接复原后图片的灰度矩阵,再调用Matlab软件中的imshow函数输出拼接复原后的图片.

3.3模型求解

对上述算法用Matlab编程,代码如下:

%将灰度图像转化为由灰度值构成的矩阵,并将左右边缘的点的灰度值进行二值化处理

%手动方式选择第一个图片,例如第一个图片为009,则序号为10

%图片的最终的排列序号用向量pic_pin表示

pic_pin=input('请输入第一个图片的序号');

%从第一个图片开始利用下面的语句将其他的图片进行排序

%计算并输出复原后图片的排列顺序为1*19的行向量

3.4模型检验

利用该算法对附表1与附表2的图片进行了排序,结果如表1和表2所示.拼接复原后的图片结果与实际相符,这说明对于这类碎纸片的拼接复原问题用该算法是有效的,能得到理想的结果.

表1 附表1的图片排列顺序

表2 附表2图片排列顺序

4 结束

从本文数学建模实例看出,在建模时,当需要分析处理大量的数据图表时,我们可以借助数学软件.在众多的软件中,Matlab以其丰富的库函数和工具箱能够非常方便的解决这些问题,显示出了其它软件无法比拟的优势.将Matlab用于数学建模,可以将建模者从繁琐复杂程序编辑及调试中解放出来,将主要精力放在问题机理分析、模型的建立方法上,从而方便数据的处理、问题的分析、及模型的建立和求解,大大提高了建模的效率和质量,起到了事半功倍的效果;所以我们提倡将Matlab软件引入数学建模课堂教学中,在学习数学建模之前,让学生只要学习一些关于Matlab的基础知识,如窗口操作、数据的输入输出、文件编辑等,那么在学习建模时,就可以将自己建立的模型,用Matlab软件模拟实现.这一方面可以激发学生学习数学建模的热情和积极性,同时也能锻炼学生的动手实践能力.所以将Matlab软件与数学建模相结合具有一定的教学意义.

〔1〕孙富玉,韩伟.MATLAB程序设计教程[M].北京:远方出版社,2006.

〔2〕陈光亭,裘哲勇.数学建模[M].北京:高等教育出版社,2010.

〔3〕尚月强,杨一都.MATLAB及其在数学建模中的应用[J].贵州师范大学学报(自然科学版),2005(3).

〔4〕http://www.mcm.edu.cn/problem/2013/cumcm2013problems.

O245

A

1673-260X(2016)04-0014-03

2016-02-22

赤峰学院教学改革研究项目(JGXM201534)

猜你喜欢

复原纸片灰度
温陈华:唐宋甲胄复原第一人
采用改进导重法的拓扑结构灰度单元过滤技术
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
浅谈曜变建盏的复原工艺
听话的纸片
毓庆宫惇本殿明间原状陈列的复原
纸片也能托住水
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于灰度线性建模的亚像素图像抖动量计算