1.算法描述
由于所使用的碎片,背景颜色都是白色,而且部分碎片正好在两个不同的文字之间,因此,没法直接使用颜色匹配或者文件匹配的方法。
第二,由于很多碎片其边都是直线的,所以我们也没法直接使用很多论文所介绍的随机不规则碎片拼接算法。也没法使用角点匹配的方法,因为角点匹配主要是基于有部分重合的情况下的碎片拼接。
考虑到上面的两种实际情况,这里使用的是一种几何外形匹配的方法,这种方法,我们首先需要指定一个碎片,通常我们指定一些特征位置的碎片,这里我们选择左上角的那个碎片作为第一个碎片,然后将其余碎片和这个被选中的碎片一一组合拼接,直到找到匹配的碎片,然后进行组合,将组合得到的碎片作为新的碎片,然后再和剩下的碎片进行匹配,知道完成所有的碎片匹配,完成碎片的拼接。
图像碎片自动拼接技术的研究是一个有很大实用价值的课题。如,考古研究中对破碎珍贵文物的修复,公共机关破案时遇到的破碎证物的修复等。传统上,拼接复原工作需由人工完成,准确率较高,但效率很低,特别是当碎片数量巨大,人工拼接很难在短时间内完成任务,这种落后的无奈之举和信息时代高效的现实需求之间的矛盾愈来愈明显。基于此,需要建立数学模型和算法将图像碎片自动拼接,即借助计算机,通过特征匹配技术来识别出相邻接的图像碎片,进而重现整个物体的原貌,以提高拼接复原效率。题目要求建立粉碎机横纵切单面纸片和双面纸片的复原模型与算法,将人工复原和机器复原相结合,探寻干预节点,并通过所建立的方法对题目附件中的粉碎图片进行还原。
碎纸片拼接方法的研究一般模型如下:实物碎片→碎片数字化→图像预处理→提取边界→特征分析检测→找匹配段→拼接复原。常规文档碎纸片计算机拼接方法一般利用碎片边缘的尖点特征、尖角特征、面积特征等几何特征,搜索与之匹配的相邻碎纸片并进行拼接。但是这种基于边界几何特征的拼接方法并不适用于边缘形状相似的碎纸片。而题目中所给的图片均为相同形状的图形,拼接时如果只利用碎片的边界特征,拼接效果并不理想。当然,因此我们也省去了将图片预处理和提取边界的步骤。
尽管图片是规整的,但是我们所要拼接的内容涉及到文字内容,所以我们可以大胆设想文字特征类似于非规则图片的曲线性,由此看来与碎片匹配时,涉及到一个重要的问题就是曲线匹配。曲线匹配的关键技术是确定坐标变换中具有不变性的量,即不变量为匹配依据,用不变量重新表征边界曲线。既然通过不变量表征两条边界曲线特征,就需要在特征不变量序列中找公共序列,但实际情况又不能满足严格的对应相等,所以把最长公共子序列问题的思想蕴涵其中,即我们可以对左右两列从上至下去坐标值,并设定阈值,通过阈值的划分性进行匹配。
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB核心程序
global allP
global margl margr
global ld
global pn pw ph
allP=brief_pretreat;
[margl,margr]=extractmargin;
lmark=brief_markline_accurate;
pind=zeros(11,19);
tick=[0 4.5 10 20 26 30 36 40 47.5 50 57.01 60];
for k=1:11
pind(k,:)=find(tick(k)<lmark&lmark<tick(k+1));
end
rerow=[4 6 8 10 2 3 5 7 9 11 1];
pind=pind(rerow,:);
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%55
P=zeros(11,19);
for k=1:11
P(k,:)=arrangemethod3_1(pind(k,:));
end
%%
upind=[];
dnind=P(2,:);
ppind=pind([1,7],:);
ppind=ppind(:);
P(1,:)=arrangemethod4(upind,ppind,dnind);
%showP(P(1:2,:))
upind=P(6,:);
dnind=P(8,:);
ppind=pind([1,7],:);
ppind=ppind(:);
P(7,:)=arrangemethod4(upind,ppind,dnind);
showP(P)
toc(a)