2014年基于结构特征的碎纸片的拼接复原问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
2013高教社杯全国大学生数学建模竞赛
承 诺 书
我们仔细阅读了《全国大学生数学建模竞赛章程》和《全国大学生数学建模竞赛参赛规则》(以下简称为“竞赛章程和参赛规则”,可从全国大学生数学建模竞赛网站下载)。
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛章程和参赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛章程和参赛规则,以保证竞赛的公正、公平性。如有违反竞赛章程和参赛规则的行为,我们将受到严肃处理。
我们授权全国大学生数学建模竞赛组委会,可将我们的论文以任何形式进行公开展示(包括进行网上公示,在书籍、期刊和其他媒体进行正式或非正式发表等)。
B 我们参赛选择的题号是(从A/B/C/D中选择一项填写):
赛区评阅编号(由赛区组委会评阅前进行编号):
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
2013高教社杯全国大学生数学建模竞赛
编 号 专 用 页
赛区评阅编号(由赛区组委会评阅前进行编号):
赛区评阅记录(可供赛区评阅时使用):
评
阅
人
评
分
备
注
全国统一编号(由赛区组委会送交全国前编号):
全国评阅编号(由全国组委会评阅前进行编号):
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
基于结构特征的碎纸片的拼接复原问题
摘要
碎纸自动拼接技术是图像处理与模式识别领域中的一个典型的应用,该技术通过扫描和图像提取技术获取一组碎纸片的形状、纹理及内容等信息,然后利用计算机进行相应理解从而实现对这些碎纸片的全自动或半自动拼接还原。
针对问题一,考虑到纵切的碎纸片所含有的信息量较大,利用图像处理中的信号匹配方法,结合左右两个碎纸片的灰度像素矩阵的边缘特征,建立基于结构特征的灰度匹配模型,对英文字母制定了灰度相似的配准规则,使待拼接的碎纸片边缘的对应行像素之差的平方和最小;而结合中文字符的横笔结构特征,对中文字制定了“横笔”匹配相
。 似度的配准规则,并给出了最终的碎纸拼接图和拼接次序,拼接的正确率是100%
针对问题二,对于既纵切又横切的情形,每一个纸片的边缘所含的信息量相对较少,故对中、英文碎片的拼接复原需各自建模分析。首先利用“分而治之”的思想,将一个难以直接解决的大问题,分割成一些规模较小的相同问题。对于中文碎片拼接复原,根据中文的方块特点,给出了中文的文字结构特征向量及其边缘像素的特征向量。根据这些结构特征向量对所有的碎纸片进行粗分类,在此基础上
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
了基于边缘特征的匹配规则集,对每一行从左到右在进行细匹配。利用等距序列图像的快速拼接技术拼出左边第一列,基于灰度匹配,将图像转化为二值图像并对每行进行最优匹配。先按照行配准,然后再进行列配准,最终匹配出误差最小的图像;对于英文碎片复原同样采取人工干预粗分类,粗匹配后,采用神经网络算法对碎片图像训练、学习构建BP网络对英文字母进行匹配识别,结合剪枝定界法实现英文碎片的拼接复原。发现每行匹配率为78.85%,整篇匹配率大约为68.73%。
针对问题三,由于碎片数据均为双面打印文件,文字特征相同,仅用问题二中的方法产生的误差太大,仍沿用粗分类特点通过神经网络拼接、灰度匹配修正、人工干预,结合等距序列拼接技术实现单面拼接,然后验证反面的正确性并修正。
关键词:图像拼接,灰度配准, 结构特征,配准规则,神经网络
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
一、问题重述
破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。拼接复原工作若由人工完成,准确率较高,但效率很低。特别是当碎片数量巨大,人工拼接很难在短时间内完成任务。现试图开发碎纸片的自动拼接技术,以提高拼接复原效率。我们需要建立数学模型解决以下问题:
1. 对于给定的来自同一页印刷文字文件的碎纸机破碎纸片(仅纵切),建立碎纸片拼接复原模型和算法,并针对附件1、附件2给出的中、英文各一页文件的碎片数据进行拼接复原。如果复原过程需要人工干预,写出干预方式及干预的时间节点。
2. 对于碎纸机既纵切又横切的情形,设计碎纸片拼接复原模型和算法,并针对附件3、附件4给出的中、英文各一页文件的碎片数据进行拼接复原。如果复原过程需要人工干预,写出干预方式及干预的时间节点。
3. 现实情形中可能有双面打印文件的碎纸片拼接复原问题需要解决。附件5给出的是一页英文印刷文字双面打印文件的碎片数据。尝试设计相应的碎纸片拼接复原模型与算法,并就附件5的碎片数据给出拼接复原结果。
二、问题分析
碎纸自动拼接复原技术在司法鉴定,历史研究等领域都有着广泛的应用。近年来,随着德国斯塔西文件的恢复
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
的公布,碎纸文件复原技术的研究引起了人们的广泛关注。碎纸自动拼接技术是模式识别领域中的一个很典型的应用。涉及数字图像处理,机器学习等多个学科,充分体现了当下多学科相互融合的学科特点,这也正说明了碎纸自动拼接本身具有一定的难度。 匹配技术是碎纸自动拼接技术的关键,它可以分为两个步骤:局部拼接和全局恢复。局部拼接是指碎片两两之间的拼接问题,全局拼接是关于一组碎片之间的匹配问题。局部匹配技术可以分为两类,一类比较具体,多对应图像低层像素或像素的集合,统称为图像匹配;另一类则比较抽象,主要与图像或目标的性质有关统称为广义匹配。图像匹配包括模板匹配、目标匹配和动态模式匹配。广义匹配包括关系匹配、线图同构和特征内容匹配。特征内容匹配包括颜色匹配、纹理匹配、形状匹配和综合特征匹配等。目前对碎纸拼接的研究,主要应用的是特征内容的匹配,本文应用其中的轮廓匹配。碎纸拼接中的匹配技术,与传统匹配技术不同,它的特征都是未知的,没有先验知识可以参考,这也是碎纸拼接的难点。
对于传统破碎文件的拼接,更多的使用破碎纸片的边缘形状提取其轮廓曲线并利用计算机算法进行拼接,但现今越来越多的破碎纸片拼接问题中破碎纸片的边缘形状都近似相同,边缘形状拼接不再实用。而对于边缘相似的破碎纸片的拼接,理想的计算机拼接过程应当与人工拼接的结果相同,但计算机无法完全的识别破碎纸片上带有的信息,所以对于现有算法只能近似完成破碎纸片的拼接。
针对问题一,因使用碎纸机对纸片进行纵切,每个纵切的纸片所含的信息量较大,所以对于问题一,利用左右两个纸片的边缘特征,可以制定灰度相似的配准规则,使得纸片边缘的对应行像素之差的平方和最小,拼接成功率将会更高。
针对问题二,使用碎纸机对纸片进行纵切且横切,问题变的复杂,由于纸片数量多,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 且碎纸片包含的信息少,用灰度匹配的话,一定会有较大的误差。如果单纯考虑使用某种算法在解空间中进行遍历搜索最优匹配,算法的复杂度较高。如何合理的减小误差又不至于增加太多的工作量,就需要找到恰当的算法和模型对问题一进行优化。我们可以利用“分而治之”的思想,首先把所有的纸片按照其字符的结构特征(如行间距,列间距,字高,字宽,字间距等)进行粗分类,然后通过人工干预,拼出左边第一列,先按照行配准,然后在进行列配准。 对于每一行配准,我们可以刻画每个碎纸片的特征,分为结构特征和边缘像素特征。对于碎纸片,我们在寻找某个边的待选碎片时,可以指定规则来提升效率,比如在左边匹配时,用行间距过滤掉不符合的碎片(也就是过滤掉不符合约束条件的取值范围),也就是剪枝定界法;如果带匹配的左边是有黑色数值的,再用目标碎片右边应该也有黑色数值,且出现的位值相近过滤掉图片;再用拼接好的图片中的字间距看看是否符合一个字的宽度等。通过配准规则,结合字符的结构特征和边缘特征,我们应该可以得出第二问的配准图像。
针对问题三,碎片依然被纵切、横切成了209块。但本题中还加入了正反两面,增加了问题的复杂性,不过建模的总体思想并没有变。首先我们要通过配准规则,结合字符的结构特征和边缘特征对碎片进行一次拼接,但误差将会很大。为更好的减小误差,我们可以结合灰度匹配和人工干预对已生成的图像进行修正。
三、符号说明
符号 表示含义
异或逻辑的真值 P
i个碎纸片 第Ai
A 和这两个碎纸片相连的可能性 Ajicij,,,
两碎片上下边缘无字区域行数和 d
异或运算 ,
ij,,,aij的值 碎片矩阵在
ij,,,bij的值 碎片矩阵在
级联运算 ||
四、模型假设
结合本题实际,为了确保模型求解的准确性和合理性,我们排除了一些因素的干扰,提出以下几点假设:
1.假设每条碎纸片都保持完整,无破损。
2.假设碎纸机切纸片的切口都较整齐。
3.假设同一页文件上文字的打印墨浓度相同。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
4.假设同一页文件上文字的字体相同,同一页文件上文字只包含中文或者英文。
5.假设文件上文字颜色不受空气中水分等其他因素的影响.
6.假设图像不许进行降噪、平滑滤波等预处理。
五、模型的建立与求解
5.1模型建立前的准备
5.1.1设置匹配准则集
本题目并不是一个简单的图像拼接问题,所以我们设置包含灰度匹配、基于特征、BP神经网络、异或运算相结合的匹配准则集。
1.灰度匹配
灰度匹配的基本思想:以统计的观点将图像看成是二维信号,采用统计相关的方法寻找信号间的相关匹配。利用两个信号的相关函数,评价它们的相似性以确定同名点。 灰度匹配通过利用某种相似性度量,如相关函数、协方差函数、差平方和、差绝对值和等测度极值,判定两幅图像中的对应关系。最经典的灰度匹配法是归一化的灰度匹配 法,其基本原理是逐像素的把一个以一定大小的实时图像窗口的灰度矩阵,与参考图像的所有可能的窗口灰度阵列,按某种相似性度量方法进行搜索比较的匹配方法,从理论上说就是采用图像相关技术。
2.基于特征
大多数完整文字文档的文字行方向和行间距平行且单一,如果碎片内的文字行在碎片边缘断裂,那么与它相邻的碎纸片在边缘处一定有相同高度、相同间距的文字行,凭此特征可以很容易得从形状相似的多碎片中挑选出相邻碎片。因文字行的高度特征、间距特征的识别比字迹断线识别和文字图像的理解实现起来更容易些,利用碎片内文字行特征拼接相似的碎纸片理论上是可行的。
3.BP神经网络
BP (Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。
4.异或运算
异或逻辑的真值表如图1所示,其逻辑符号如图2所示。异或逻辑的关系是:当不同时,输出;当相同时,输出。“”是异或运算符号,异或逻辑也DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 是与或非逻辑的组合,其逻辑表达式为:
由图1可知,异或运算的规则是
0?0=0, 0?1=1
1?0=1, 1?1=0
口诀:相同取0,相异取1
事实上,XOR 在英文里面的定义为either one (is one), but not both, 也即只有一个为真(1)时,取真(1)。
5.1.2“横笔”法的背景
我们查找了汉字的书写方式。汉字的基本笔画为横、竖、撇、点、折。根据张兴初[1] 等1965年在《心理学报》“汉字的各种笔画的使用频率的估计”中的统计结果显示:[2]横笔占31%,竖笔占16%,撇笔占15%,点笔占12%;张静贤在2004年《汉字教程》中的统计显示:横笔占27.68%,竖笔占17.60%,撇笔占15.69%,点笔占13.62%。通过比较我们可以发现在日常生活中运用的汉字“横笔”出现的概率最高。同时,根据“GB130001[3]字符集汉字字序规范” 中的相关统计,目前使用的汉字总共有20902个,平均每个字12.8画,其中12画的汉字最多,共有1957个。而在“现代汉字常用字表”中,常用汉字为3500个,平均每个字9.7画,其中9画的汉字最多,一共415个。基于上述数据,可以推断出“GB130001字符集”中,平均每个汉字有3.54画的横笔,而常用汉字中,平均每个汉字有2.68画的横笔,可以说横笔在整个汉字结构中出现频次最高,占有重要的地位。所以我们在带有汉字的碎片拼接时运用了“横笔”拼接法。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 5.2 问题一的模型建立与求解
5.2.1. 目标函数
{,,,}AAA假设整页文档被碎纸机碎成了个碎纸片的集合,给定一个正确的拼01n
,满足 接排列
AAAA,|||||| ,,(0)(1)A,()n
其中,||表示了一种级联运算符号。 [5]对于纸片集合,需要识别相连的碎纸片对。例如,
Cij(,)我们用A表示 和这两个碎纸片相连的可能性。这样碎纸片的正确拼接复Aji
原问题就转化为一个优化问题,目标函数为:
n,1
Cij((),()),, ,
i,0
,我们需要搜索所有的拼接排列组合满足使得上述的目标函数最大。
5.2.2. 特征选择
Cij(,)A对于问题一的目标函数,显然表示了碎片 和配准的相似度,相似度越Aji
大,说明两个碎片配准的越好。这里考虑到问题一的纵切,每个碎纸片的信息量大,我
Cij(,)们在定义时,只需要用到碎纸片的边缘像素特征。 具体来说,利用了图像处理
[4]的灰度图像匹配方法进行相似度的计算灰度图像拼接主要是以统计的观点将图像看成是二维信号,采用统计相关的方法寻找信号间的相关匹配。利用两个信号的相关函数,评价它们的相似性以确定同名点。灰度匹配通过利用某种相似性度量,如相关函数、协方差函数、差平方和、差绝对值和等测度极值,判定两幅图像中的对应关系。最经典的灰度匹配法是归一化的灰度匹配法,其基本原理是逐像素的把一个以一定大小的实时图DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 像窗口的灰度矩阵,与参考图像的所有可能的窗口灰度矩阵,按某种相似性度量的方法进行搜索比较的匹配方法。
5.2.3. 算法设计与求解
1.中文碎片的拼接
对图片进行两两拼接,对比两个碎片中“横笔”位置,其中“横笔”位置一致的记录下来,搜索整个碎片边缘,利用目标函数:
记录匹配总和。最终以匹配总和为依据,匹配数最大的两个碎片进行拼接。流程图为图(1)。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
图(1)流程图
算法步骤:
Step 1:图像处理 [6]对给定的图像进行灰度处理,生成灰度矩阵,并把矩阵二值化。 Step 2:边缘最小二乘法计算
选取任两个碎片相邻的边缘数值进行“横笔”和最小二乘法计算。利用最小二乘法做出残差分析图,见图(2)。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
图(2)残差分析图
Step 3:图像拼接
利用最小二乘法找出相似度最大的两张图片进行拼接,若出现两对碎片的匹配数一样时,则进行人工干预,选出最佳拼接。以此类推,最终得到要拼接的图像,图像和代码见附录(1)。
Step 4:检验
重复上述步骤 ,得出多幅完整图像,人工选出最佳匹配图,得到最左侧和最右侧的图像并排除匹配顺序,见图(3)。
图(3)图像匹配顺序
2.英文碎片的拼接
在英文字符中几乎不再存在“横笔”,所以这里我们无法在使用“横笔”拼接法。但是英文碎片生成的灰度矩阵的边界依然存在相似度的特征,所以我们针对英文碎片直接采用基于最小二乘法的灰度匹配方法。
算法步骤:
Step 1:图像处理
对给定的图像进行灰度处理,生成灰度矩阵。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC Step 2:边缘相似度计算
人工选出最左边的碎片,然后对图片右边缘数组与其他所有的碎片左边缘进行最小二乘法计算,求出相似度,做出残差分析图,见图(4)。
图(4)残差分析图
Step 3:图片拼接
找出相似度最大碎片进行拼接,以此类推拼出全图。图像和代码见附录(2) Step 4:检验
重复上边步骤,生成多幅完整图像,人工选出最佳匹配图,得到最左侧和最右侧的图像并排除匹配顺序,见图(4)。
图(4)图像匹配顺序
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 5.3问题二的模型建立与求解
5.3.1问题二的模型建立
1.异或模型
对任一碎片进行二值化,选取右边缘的一列值(x1,x2,x3),选取另一张图片的左边缘的一列值(y1,y2,y3),根据异或运算准则:0异或0=0,1异或0=1,0异或1=1,1异或1=0。对相同行的数值进行异或运算,即
P=A?B(“?”是异或运算符号)
对碎片间相邻两边缘间的异或值进行统计,以此作为对比碎片拼接相似度的依据。主要目标函数为:
5.3.2 问题二的模型求解
1.中文碎片的拼接
在问题二中,碎片共有208个,切碎片大小形状完全一样,但因为每个图片太小,上边的文字信息太少,所以中文使用“横笔”拼接法的误差太大,所以本题我们改用边界特征、异或运算、人工干预、最小二乘法等多种匹配方法相结合的方式对模型进行了改进,流程图为图(5)。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
图(5)流程图
具体步骤如下:
Step 1:图像处理
对给定的图像进行灰度处理,生成灰度矩阵,并把矩阵二值化。 Step 2:边缘碎片选取
利用整体边缘无字光滑的特征,在灰度矩阵中选取最左边向量[x1,x2,x3,x4,x5]全为1的碎片。
Step 3:边缘碎片拼接
利用最小二乘法对碎片上下矩阵边缘进行相似度计算,求出具有最佳相似度的碎片进行两两拼接。随机取一行,拼接效果如图(6)
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
图(6)拼接效果图
Step 4:边缘碎片再拼接
由于碎片太小,上下边缘包含信息太少,基于最小二乘法的边缘相似度拼接并不能够达到满意效果。所以我们利用行距对上步拼接结果进行再次拼接。 分别对Step 3中7张新纸片计算上下边缘无字区域所占行数,然后7张纸片两两首尾无字区域行数求和,记为d,如图(7)所示。倘若 或 时,则可认为两碎片可以进行拼接,否者不能拼接。拼接流程见图(8)。以此类推共得出以下几种结果。如图(9)所示
注:
时,表示行间距为28~31像素;
时,表示两个行间距加字高为96~102像素;
图(7)
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
图(8)
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
图(9)
Step 5:人工干预
人工的方式在这几种拼接方式中选出最佳拼接(
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
三),作为完整图像的左边界。 Step 6:文字行特征分类
把左边界的11个碎片依据文字行特征进行分类。依据11中分类把剩余碎片进行分类,使具有相同高度和间距文字行的碎片归为一类。
Step 7:异或运算拼接
以左边界碎片为起点,对同类碎片进行边缘异或运算。即:选取相邻边缘向量[x1,x2,x3,x4]、[y1,y2,y3,y4],若同行的点的值相同则记为0,不同记为1。最后统计0的个数f,当f>阈值时则认为两碎片可以进行拼接,否者舍弃。并在所有的比拼中选取f值最大的一个碎片与预定图片进行拼接。以此类推拼接出完整图像。 Step 8:检验
多次重复上述步骤产生多幅图像,人工筛选出最佳拼接图像。代码及图像见附录。
2.英文碎片的拼接
算法设计:
在英文碎片的拼接中我们采用BP神经网络来对碎片进行拼接。因为BP神经网络(图)可以通过监督式学习来对我们无法具体表示出特征的英文字符进行图像特征提取,并通过提取的特征对碎片进行整体分类,识别输出。这种算法具有收敛快,权值更新准则简单等优点。BP神经网路算法流程图为图(10)。
图(10)
算法求解:
Step 1 图像处理
对给定的图像进行灰度处理,生成灰度矩阵。
Step 2 图像分割
我们根据碎片中图像的灰度阈值、边缘
检测
工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训
进行分割。设定阈值T,通过函数
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
进行分割。其中对于物体的图像元素,对于背景的图像元素。 Step 3 图像特征提取
首先要明确提取的特征要满足唯一性、可分性、鲁棒性特点才能使图像提取的特征更有使用价值。利用特征参数的灵敏度变化来进行特征提取出26个字母的灰度特征并记录下来。训练效果图如图(11)。
图(11)训练效果图
Step 4 图像分类
依据所提取的特征,将前一部分的特征向量空间映射到类型空间,把相应原图归属已知的一种模式。
Step 5 图像识别
针对每幅碎片的分割图上的信息与之前存储的26个英文字母的信息特征进行对比识别。样本识别图如图(12)
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
图(12)样本识别图
Step 6 图像拼接
依据上述方法选取相似度最大的碎片进行拼接,先横向拼接再纵向拼接,进而拼出整体图像。 图像和代码见附录。
5.4 问题三的模型建立与求解
1.算法设计
在问题三中出现了正反两面都有字的情况,这样的话,我们需要进行正反两次的拼接才可以,问题变得复杂起来,但从题目所给的图片来看,如果知道一个图片的正面那么一定会有它的反面的信息,所以本题并不是很复杂,我们只需要对问题二中的英文碎片拼接的方法进行一下改进即可。流程图见图(12)
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
图(12)流程图
2.算法步骤:
Step 1 BP神经网络拼接
运行问题二中的英文碎片拼接的方法:
Step 2 灰度匹配修正
本题正反两面都是英文,文字特征相同,仅用问题二中的方法产生的误差太大。在[7]这里我们选择采用正面BP神经网络拼接,背面灰度匹配修正的方法对模型进行优化。 对上述拼接好的完整图反面进行分析,首先利用灰度矩阵边缘特征筛选出没有达到阈值的碎片匹配,对这些碎片再次进行基于最小二乘法的边缘相似度计算,依照相似度重新进行拼接。
Step 3 人工干预
因为上述方法不论哪种总存在误差,进行结合匹配后仍然不能完全的消除误差,所以此处加入人工干预,通过人脑思维的文字图像识别和理解能力,进一步减小误差,以达到组成最佳匹配的目的。完整图和代码见附录。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
六、模型的优缺点及改进
6.1模型的优点
模型主要采用了基于最小二乘法的灰度图像匹配方法,大大较少了模型的计算量。针对复杂的碎片拼接时采用了人工干预和聚类分析的方法,是模型计算出来的结果更加准确。针对中文和英文碎片分别采用了“横笔”、字母匹配的边缘匹配方法,使得模型可以定向解决不同的碎片拼接问题。为解决计算机拼接的技术的限制,模型在重要的几处加入了人工干预,使得模型的准确度进一步加强。
6.2模型的缺点
模型最初便假设碎片不用进行预处理,这样限制了模型的可用范围。为降低模型的计算量,模型仅适用了一种方法判定两幅图的对应关系,导致最终拼出的图形差异稍大。模型多处用到人工干预,虽然加大了模型的准确度,但同时也浪费了太多的人力和时间。 6.3模型的改进
该模型可以应用到大部分碎片的拼接问题上,但该模型考虑的面太窄,在对于比较复杂的碎片拼接问题上扔无能为力。如果在运行模型前加入对碎片的预处理,比如对不光滑的边缘进行边缘抛光,图像去噪等,模型运行效果会更好。
由于该模型较于简单,所以运行结果的精确度不是很高,对此,我们可以采用相关函数、协方差函数、差绝对值与基于最小二乘法的灰度匹配相结合的方法进行模型建立,这将极大的提高模型的精确度。
七、参考文献
[1] 张兴初,汉字的各种笔画的使用频率的估计,心理学报,03期,1965年 [2] 张静贤,汉字教程,北京,北京语言大学出版社,1970年
[3] 汉字字序规范课题组, GB13000.1字符集汉字字序(笔画序)规范,语文建设, 第05期 1999年
[4] 张贤达(矩阵分析与应用(北京:清华大学出版社,2004:403-452 [5] 董宁,工具技术,移动最小二乘法在NURBS曲线拟合中的应用,工具技术, 第1期,2011年
[6] 赵辉,基于灰度共生矩阵的图像研究,自动化技术与应用,第3期,2004年 [7] 罗钟铉,灰度图像匹配的快速算法,计算机辅助设计与图形学学报,第2期,2005年
八、附录
附录1. 问题一中文碎片的拼接程序:
clear
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
clc
for i=0:18
I=imread([' F:\MATLAB7.0UP\work\B\?附件1\',sprintf('%03d',i),'.bmp']);
A{i+1}=I(:,72)';
B{i+1}=I(:,1)';
end
a=zeros(1,19)-1;
b=zeros(1,19)-1;
for i=0:18
if B{i+1}==(zeros(1,1980)+255)
a(i+1)=i;
end
if A{i+1}==(zeros(1,1980)+255)
b(i+1)=i;
end
end
for i=1:19
if a(i)~=-1
first=a(i)
end
if b(i)~=-1
last=b(i)
end
end
order=zeros(1,19)-1; order(1)=8;
order(19)=6;
c=zeros(19,19)-1;
k=zeros(1,19)-1;
for i=0:18
if i~=6
he=zeros(1,19)-1;
for j=0:18
if j==i||j==8
he(j+1)=-1;
else
he(j+1)=sum((B{j+1}-A{i+1}).^2);
end
end
xiao=max(he);
for j=1:19
if xiao>=he(j)&&he(j)~=-1
xiao=he(j);
g=j-1;
end
end
k(i+1)=g;
end
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
end
for i=2:18
order(i)=k(order(i-1)+1); end
order
运行结果为:
last =
6
first =
8
order =
Columns 1 through 15
8 14 12 15 3 10 2 16 1 4 5 9
13 18 11
Columns 16 through 19
7 17 0 6
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
附录2. 问题一英文文碎片的拼接程序:
clear
clc
for i=0:18
I=imread(['H:\B\附件2\',sprintf('%03d',i),'.bmp']);
A{i+1}=I(:,72)';
B{i+1}=I(:,1)';
end
a=zeros(1,19)-1;
b=zeros(1,19)-1;
for i=0:18
if B{i+1}==(zeros(1,1980)+255)
a(i+1)=i;
end
if A{i+1}==(zeros(1,1980)+255)
b(i+1)=i;
end
end
for i=1:19
if a(i)~=-1
first=a(i)
end
if b(i)~=-1
last=b(i)
end
end
%a,b%得出第一个为3,最后一个为4
order=zeros(1,19)-1; order(1)=3;
order(19)=4;
c=zeros(19,19)-1;
k=zeros(1,19)-1;
for i=0:18
if i~=4
he=zeros(1,19)-1;
for j=0:18
if j==i||j==3
he(j+1)=-1;
else
he(j+1)=sum((B{j+1}-A{i+1}).^2);
end
end
xiao=max(he);
for j=1:19
if xiao>=he(j)&&he(j)~=-1
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
xiao=he(j);
g=j-1;
end
end
k(i+1)=g;
end
end
for i=2:18
order(i)=k(order(i-1)+1); end
order
运行结果为:
first =
3
last =
4
order =
Columns 1 through 15
3 6 2 7 15 18 11 0 5 1 9 13
10 8 12
Columns 16 through 19
14 17 16 4
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
附录3 问题二中文左右两列的选择程序:
clear
clc
j=0;
%取最左边一列图片
for i=0:208
R=imread(['H:\guosai00\guosai\B\附件3\',sprintf('%03d',i),'.bmp']);
I=im2bw(R);
A=I(:,1:12);%估计左边距占10个像素点
if A==(zeros(180,12)+1)
j=j+1;
left(j)=i;
end
end
left %产生11个图片left =7 14 29 38 49 61 71 89 94
125 168
%取最右边一列图片
j=0;
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC for i=0:208
R=imread(['H:\guosai00\guosai\B\附件3\',sprintf('%03d',i),'.bmp']);
I=im2bw(R);
A=I(:,60:72);%估计左边距占10个像素点
if A==(zeros(180,13)+1)
j=j+1;
right(j)=i;
end
end
right %产生11个图片right =18 36 43 59 60 74 123 141 145
176 196
运行结果为:
left =
7 14 29 38 49 61 71 89 94 125 168
right =
18 36 43 59 60 74 123 141 145 176 196
附录4
%已处理得71.bmp为首个元素,末元素为60.bmp
clear
clc
a1=[71 15 17 27 33 80 83 85 132 133 152 156 165 170 198 200 202 205 60];
for i=1:19
R=imread(['H:\B\附件3\',sprintf('%03d',a1(i)),'.bmp']);
I=im2bw(R);
A{i}=I(:,72)'; %取末列
B{i}=I(:,1)'; %取首列
end
order=zeros(1,19)-1;
order(1)=71;
order(19)=60;
k1=zeros(1,18)-1;
for i=1:18
he=zeros(1,19)-1;
for j=2:19
if j==i
he(j)=-1;
else
b=B{j};a=A{i};
num=180;var=0;
for k=1:180
if a(k)==b(k) DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
var=var+1;
end
end
he(j)=var/num; %得到匹配度
end
end
g=-1;
yuzhi=0.92;%%加入阈值
shunxu=i
for j=1:19
if he(j)>=yuzhi
a1(j)%%放置最匹配的图像编号
end
end
end
运行结果为:
shunxu =
1
ans =
156
shunxu =
2
ans =
133
shunxu =
3
ans =
15
ans =
8
ans =
83
shunxu =
4
ans =
60
shunxu =
5
ans =
202
shunxu =
6
ans =
33
shunxu =
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
7
ans =
80
shunxu =
8
ans =
152
shunxu =
9
ans =
200
shunxu =
10
ans =
132
ans =
170
shunxu =
11
ans =
165
shunxu =
12
ans =
80
ans =
83
shunxu =
13
ans =
27
shunxu =
14
ans =
205
shunxu =
15
ans =
15
shunxu =
16
ans =
17
shunxu =
17
ans =
198
shunxu =
18
ans =
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
85
附录5
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
附录6:
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
附录7:
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD