欢迎来到天天文库
浏览记录
ID:42033851
大小:1.45 MB
页数:13页
时间:2019-09-05
《基于MATLAB图像处理功能的碎片拼接系统开发》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、基于MATLAB图像处理功能的二维碎片拼接软件开发张梓麒2014/9/26组员1:张梓麒2012302540199组员2:崔兆仑2012302540205组员3:姜盛波2012302540198组员4:郝亮亮2012302350056基于MATLAB图像处理功能的二维碎片拼接软件开发1.目的与意义破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。传统上,拼接复原工作需由人工完成,准确率较高,但效率很低。特别是当碎片数量巨大,人工拼接很难在短时间内完成任务。随着计算机技术的发展,
2、人们试图开发碎纸片的自动拼接技术,以提高拼接复原效率。目前,针对非规则碎片的拼接技术已相对成熟,利用改进的遗传算法对边缘[1]形状进行匹配,可以获得不错的拼接结果。然而,对于规则切割的碎片,例如碎片均为全等的矩形,由于无法利用所含信息量较大的几何特征进行匹配,故对其的拼接方案仍有待研究与开发。2.研究内容本小组将致力于研究规则碎片的拼接方案,并编写相关程序。(1)对于给定的来自同一页印刷文件的碎纸机破碎纸片(仅纵切),建立碎纸片拼接复原模型和算法,并针对中、英文文件的碎片数据进行拼接复原。(2)对于碎纸机既纵
3、切又横切的情形,设计碎纸片拼接复原模型和算法,并针对中、英文的碎片数据进行拼接复原。(3)针对双面打印文件的碎纸片拼接复原问题,对相应的碎纸片拼接复原模型与算法进行改进。3.研究方法对于规则碎片,只能利用其所包含的文字或图像信息对其进行匹配,本小组的初步想法是根据碎片边缘包含的信息,设计算法并利用计算机软件寻找最为匹配的两张碎片,进行逐步拼接。由于各图片边缘含有的信息量有限,故有时计算机并不能直接找到合适匹配的相邻碎片,这就需要加入人工干预的过程。MATLAB软件有很强大的图像处理功能,并可以借助图形用户界面
4、(GUI)实现良好的交互式算法。本小组拟利用MATLAB提取图像的灰度矩阵,设计一种方法衡量两个灰度矩阵边缘向量的匹配程度,并对其进行优化。在此基础上利用MATLAB对碎片进行逐步拼接,编写一个GUI界面,加入人工干预,使碎片的拼接过程更为方便可靠。4.已取得的成果4.1仅纵切的中文文件的拼接(无人工干预)2本小组将一张文字图片纵切成19个全等的矩形碎片,部分碎片如下:利用MATLAB提取各碎片的灰度矩阵,并对其进行二值化处理。得到19个的二值矩阵,将第张图片的灰度矩阵和二值矩阵分别记为、。由于该文件的左侧有
5、一定页边距,故可以利用MATLAB首先找到其最左侧的碎片:考虑到该二值矩阵共有1980列,故应有下式:本小组利用碎片图像二值化矩阵边缘向量之间的平方欧式距离来衡量两碎片信息的差异。由于二值化矩阵各元素非零即一,故可以用各对应元素之差的绝对值之和来表示其平方欧式距离。将已经拼接完成的碎纸片的编号构成的集合记为,其在图片中的位置记为,。由于图片仅纵切,其两侧边缘保留的信息量较大。将上一轮确定位于位置的碎纸片的二值化矩阵记为,其右侧相邻的碎纸片应为满足下列数学关系的最优解:3开始碎片图像数字化,w=1找到二值矩阵第
6、一列全为0的碎片k是否作为行内第w张碎片?人工干预w=1?是是否w=19?完成否w=w+1找出与行内第w张碎片右边缘差别最小碎片j源程序如下:path1='D:碎片的拼接2';dir1=dir(path1);fori=3:21a{i-2}=imread(dir1(i).name);b{i-2}=im2bw(imread(dir1(i).name));endfori=1:19z(i)=sum(b{i}(:,1));endzuo=find(z==max(z));point=zuo;xiabiao=[point
7、];fori=2:19forj=1:19c(i-1,j)=sum(abs(b{j}(:,1)-b{point}(:,72)));endpoint=find(c(i-1,:)==min(c(i-1,:)));4xiabiao=[xiabiao,point];endtu=a{xiabiao(1)};fori=2:19tu=[tu,a{xiabiao(i)}];endimshow(tu);拼接结果如下:4.2仅纵切的英文文件的拼接(加入人工干预)由于英文文字相对中文较为简单,故其边缘包含的信息量较少,计算机可能无法
8、获得足够的信息对碎片进行匹配,这就需要加入人工干预的过程,利用计算机找到平方欧式距离最小的碎片后,人为的进行确认,若结果正确则进行下一轮拼接,不正确则寻找另外一张平方欧式距离较短的碎片。源程序如下:warningoff;%读取图片path1='D:碎片的拼接2';dir1=dir(path1);sizet=size(dir1);5fori=3:sizeta{i-2}=imread(dir1(i)
此文档下载收益归作者所有