碎纸片拼接
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
碎纸片拼接与复原
摘要
本文讲述的是碎纸片拼接复原的问题。碎纸片拼接复原在情报和考古方面用的较多,有很大的使用价值。在实际操作中,人工拼接的准确度极高,但随着碎片数量增大,拼接难度将大大提高,这时必须借助计算机来处理,最后辅以人工干预来完成。
针对本文提出的问题,我们的模型不区分文字语言,把图像的灰度值作为建立模型的关键切入点。使用matlab里的imread函数读入BMP图像,并取得其灰度值矩阵,矩阵中每一元素为图像每一像素的灰度值,通过对其边缘的灰度值进行匹配,求出其拼接顺序。本文中匹配这一步骤采取求图片两边的一列像素灰度值进行求差绝对值,并将求其均值最小作为匹配原理,匹配度必须小于0.1。
第一问中只涉及到单面碎纸片,而且仅把单张纸进行纵向切碎成规则长条状,所以只需对其左右端像素的灰度值进行采集,然后进行匹配,将匹配度最高的两边连起来。不过有两条纸的左边和右边全为白色,则将其单独列出来,作为复原后纸张的左右端,最后进行人工校正。
第二问中的纸片数量增多,且涉及到横纵同时切碎的纸片,所以不能直接沿用第一问的方法。但通过观察,横切出的每一横条上碎纸片文字具有明显的共同点,可以进行快速匹配。首先确定出第一行,通过寻找灰度矩阵最上面全为255的行数最多的图像,作为拼出第一行的碎片。再用与刚才相似的方法,不过须取列为255最多的图片作整个复原图第一列。最后从第二行第二个开始,从左至右从上到下依次匹配上碎片,最后结果需进行人工校正。
第三问由于涉及到双面纸的问题,可以继续沿用第二问的方法,不过拼接标准需要改为两面灰度值匹配度之和,将纸片拼接好后,最后再人工检查其是否拼接完全正确。
此模型还可用于彩色图像的拼接,用RGB颜色系统,同样是导出每一像素的RGB 值,构成矩阵,用与文中相似的办法进行破碎彩色图像的拼接。
关键词:拼接复原图像处理灰度值矩阵匹配
1 问题重述
B题碎纸片的拼接复原
破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。传统上,拼接复原工作需由人工完成,准确率较高,但效率很低。特别是当碎片数量巨大,人工拼接很难在短时间内完成任务。随着计算机技术的发展,人们试图开发碎纸片的自动拼接技术,以提高拼接复原效率。
所述问题如下:
1. 来自同一页的印刷文字在经过碎纸机纵切以后等到的长条碎片,进行计算机自动拼接复原,并给出相应模型和算法。此题的内容在附件1和附件2,分别为中英文。在需要人工干预的地方,写明干预方法与干预的时间点。复原结果用图片和表格形式分别表达。
2.来自同一页的印刷文字在经过碎纸机横纵切以后等到的小矩形碎片,进行计算机自动拼接复原,并给出相应模型和算法。此题的内容在附件3和附件4,分别为中英文。在需要人工干预的地方,写明干预方法与干预的时间点。复原结果用图片和表格形式分别表达。
3.上述两问都是单面打印的情况,而此问涉及双面打印的纸张。来自同一页的双面印刷文字在经过碎纸机横纵切以后等到的长条碎片,进行计算机自动拼接复原,并给出相应模型和算法。此题的内容在附件5,只有英文。在需要人工干预的地方,写明干预方法与干预的时间点。复原结果用图片和表格形式分别表达。
结果表达格式说明
复原图片放入附录中,表格表达格式如下:
(1)附件1、附件2的结果:将碎片序号按复原后顺序填入1×19的表格;
(2)附件3、附件4的结果:将碎片序号按复原后顺序填入11×19的表格;
(3)附件5的结果:将碎片序号按复原后顺序填入两个11×19的表格;
(4)不能确定复原位置的碎片,可不填入上述表格,单独列表。
2 模型假设
1、假设所有碎片均完整,并且不出现破损,污损情况。
2、假设纸片在扫描时全为正向扫描,无反方向纸片。
3、假设所有问题给出的碎片均能拼出完整的纸张。
4、假设题目中碎片与真实纸张物理性质相同。
5、假设纸张内容有意义。
3 符号说明
4.1 问题一
4.1.1理论部分
对于这道题,只涉及到纵切的碎片,我们建立模型不区分英文字和中文字(下两问同),并使用求样本均值作为求匹配度关键方法。
⨯⨯,矩阵元素的位置用三维首先需要一个三维的碎片矩阵A,其大小为19807219
⨯的复原图矩阵B。首先需要用imread 直角坐标Oxyz表示,还要一个大小为19801368
⨯Oyz矩阵,函数读出碎片的灰度值矩阵,放入A中,每一个碎片占一个二维的198072
记为i A,一共19张图,用19个这样的二维矩阵表示,于是构成三维矩阵A。复原图矩阵B是将碎片的灰度值矩阵按正确的顺序拼接而成的矩阵,也就是最终复原图的灰度
值矩阵。
拼接的第一步是要确定最左边的一条碎片,由于只纵切的话,切口几乎都会把部分字切开,所以这里需要做的是扫描矩阵A 的Oxz 第一子矩阵,如果有一列全为255,那么此列所在的二维的198072⨯Oyz 矩阵即为复原图最左边的碎片的灰度值矩阵*
i A 。然后将*
i A 的数值读入到复原图矩阵B 的第1列到第72列。
接下来要依次拼接上其他的碎片。假设碎片矩阵A 中的子矩阵i A 已经拼接上,此时要寻找下一块能够拼接上的碎片,假设为j A 。此时就需要进行匹配,在此情况的匹配过程中需要先取出已拼接上的子矩阵i A 的最右边第72列的灰度值,并依次取出碎片矩阵A 中剩下的未拼接上的子矩阵的最左边既第1列数值,如图示。
255224199176186203i ⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭A
255223204165198231j ⎛⎫
⎪ ⎪ ⎪
⎪ ⎪
= ⎪
⎪ ⎪ ⎪
⎪ ⎪⎝⎭
A
如图中给出的例子,左边矩阵为上一次拼接上的矩阵取出其第72列的部分数值,右边矩阵为剩下的某一矩阵并取出其第一列的部分数值。接下来就是匹配过程。
匹配过程遵循以下式子:
1980
1
((,1)(,72))
1980
j
i
k j k k v =-=
∑A A
然后取这个均值j v 最小的矩阵j A 作为新的一个最佳匹配矩阵,若有两个最小值相等,那么程序报错,并进行人工干预,选择其中最适合的碎片。最后将最佳匹配的碎片矩阵
j A 读入到上一次更新后的复原图矩阵B 相应的位置即可。
然后将上述步骤重复,直到复原图矩阵B 被填满,然后用imshow 函数将复原图输出得到碎纸片拼接后的完整图片。
4.1.2结果分析
中文图片程序输出排序结果为: