am?1b13、用该像素矩阵的右边像素矩阵Aij逐个与剩余的像素矩阵的左边像素矩阵Aij做
差值求最小值处理,即:
am?1b1 (1) min?Aij?Aij3若求得最小值,则图像矩阵A11与其匹配,反之则循环式(1)直至得到最小值为止。
因切割方式的任意性,即使相连的两个碎片图像也可能不完全匹配。相连两个碎片图像008和014差值如图2所示:
图2 相连2个图的差值
4.3 模型求解:
1、使用Matlab函数readSubImage(见附录4.1)读取附件一中的碎片图像得到矩阵
A(n)1980?72(n?1,2,3,...,19)。
2、使用Matlab函数judgeLeft函数(见附录4.3)分别对19个矩阵从左到右逐列扫描,记录第一次出现值不是255的元素的列数,得到数据如表1:
4
表1 矩阵左侧空白列个数
A1 1
A2 1
A3 1
A4 1
A5 1
A6 1
A7 1
A8 1
A9 12
A10 1
A11 1
A12 1
A13 1
A14 1
A15 1
A16 1
A17 1
A18 1
A19 1
通过上表可知第九张碎片的左边距最大,故我们选取第九张作为起始点,提取其矩阵右边第一列与剩下18个矩阵的左边第一列依次进行比较,取相似度最高的一个矩阵然后取A(n)的右边第一列与剩下的17个左边第一列比较,选取A(n)与矩阵A(9)进行匹配;
相似度最高的与之匹配;以此类推,得出附件一的复原图像(见附录1);同理可得附件二的复原图像(见附录1)。用Matlab函数judge(见附录4.2)可全部由计算机自动进行复原,复原后的碎片顺序如下表:
表2 附件一复原顺序
列数 编号 列数 编号 列数 编号 1 008 8 016 15 011 2 014 9 001 16 007 3 012 10 004 17 017 4 015 11 005 18 000 5 003 12 009 19 006 6 010 13 013 7 002 14 018 表3 附件二复原顺序
列数 编号 列数 编号 列数 编号 1 003 8 000 15 012 2 006 9 005 16 014 3 002 10 001 17 017 4 007 11 009 18 016 5 015 12 013 19 004 6 018 13 010 7 011 14 008 4.4 模型评价与推广
5
本模型利用左侧页边距定位初始图像,逐个比较图像连接处相似度的方法进行匹配。该方法简单快速精确,且全部由计算机程序实现,无需人工干预。此模型只有在本题这种碎片较少且边缘规整的情况下能获得很高的准确度,但当碎片较多的时候,准确度会有所降低。
该模型可以推广到其他领域,如基于图像融合的全景拍摄、历史文献的修复等。
五.问题二 模型的建立与求解
5.1 问题分析
本题在问题一的基础上加入了横切,碎片图像大幅增多,且每一张图像的信息量大幅减少。因此在问题一模型的基础上加入了人工干预,通过程序与人工干预相结合的方法提高复原的速度与准确性。
5.2 模型建立
1、用Matlab读取碎片图像,生成一个i行j列的矩阵A,矩阵每一个元素对应图像的RGB值,取值范围0~255。
2、按列遍历每一张碎片图像的矩阵,记录矩阵左侧空白列的个数为Ln,选取列数最多的碎片图像max为复原图象的最左列。 (Ln)3、对于汉字,提取所有碎片图像中汉字的像素,经计算处理得到汉字的高度H。遍历每一个碎片矩阵中的汉字像素,对于H大于36像素图像看作有效汉字,计算有效汉字的高度中心Pc。经观察计算,一个碎片图像的有效汉字最多为3个。汉字区域的选取如图3所示:
6
图3 汉字区域示意图
对于英文,由于大写字母占据英文4线三格中的上两格,大写字母只出现于句首、人名、缩写或专有名词,且小写字母中只占中间格的个数占1/2。英文4线三格如图4所示:
图4 英文4线三格图
经观察计算可知碎片图像中英文所在四线三格的每一格占25个像素,每一个图像最多包含3个英文字母。因此提取每一张碎片矩阵中每一行有效像素的个数,根据有效
7
像素的分布,选取英文字母分布最多的区域D,计算英文字母高度的中心Pe。英文有(n)效分布如图5所示:
图5 英文有效像素分布图
4、遍历每一个碎片图像,与已确定最左侧的碎片图像进行中心点的匹配,确定与最左侧图像同一行的碎片图像。根据计算机提供的不同方向上最大相似度的图片,配合人工干预调整每一行左右之间顺序,不同行上下之间的顺序,可迅速求得复原图像。
5.3模型求解
5.3.1 汉字模型的求解
1、用Matlab函数readSubImage(见附件4.1)提取附件3中的209个碎纸片图像矩阵,建立图像矩阵:
kAij(k?1;i?1,2,3,?,19;j?1,2,3,?,11)
其中,am?1表示除过最左列剩余矩阵的左边;b1表示最左列矩阵的右边。
2、用Matlab函数leftArray(见附录4.5)对每一张碎片图像左侧空白列的个数进行排序,选取左侧空白列最多的11张图像,作为复原图像的最左列。得到数据如表4所示:
8