1
碎纸片拼接与复原
摘要
本文讲述的是碎纸片拼接复原的问题。碎纸片拼接复原在情报和考古方面用的较多,
有很大的使用价值。在实际操作中,人工拼接的准确度极高,但随着碎片数量增大,拼
接难度将大大提高,这时必须借助计算机来处理,最后辅以人工干预来完成。
针对本文提出的问题,我们的模型不区分文字语言,把图像的灰度值作为建立模型
的关键切入点。使用matlab里的imread函数读入BMP图像,并取得其灰度值矩阵,矩
阵中每一元素为图像每一像素的灰度值,通过对其边缘的灰度值进行匹配,求出其拼接
顺序。本文中匹配这一步骤采取求图片两边的一列像素灰度值进行求差绝对值,并将求
其均值最小作为匹配原理,匹配度必须小于0.1。
第一问中只涉及到单面碎纸片,而且仅把单张纸进行纵向切碎成规则长条状,所以
只需对其左右端像素的灰度值进行采集,然后进行匹配,将匹配度最高的两边连起来。
不过有两条纸的左边和右边全为白色,则将其单独列出来,作为复原后纸张的左右端,
最后进行人工校正。
第二问中的纸片数量增多,且涉及到横纵同时切碎的纸片,所以不能直接沿用第一
问的方法。但通过观察,横切出的每一横条上碎纸片文字具有明显的共同点,可以进行
快速匹配。首先确定出第一行,通过寻找灰度矩阵最上面全为255的行数最多的图像,
作为拼出第一行的碎片。再用与刚才相似的方法,不过须取列为255最多的图片作整个
复原图第一列。最后从第二行第二个开始,从左至右从上到下依次匹配上碎片,最后结
果需进行人工校正。
第三问由于涉及到双面纸的问题,可以继续沿用第二问的方法,不过拼接标准需要
改为两面灰度值匹配度之和,将纸片拼接好后,最后再人工检查其是否拼接完全正确。
此模型还可用于彩色图像的拼接,用RGB颜色系统,同样是导出每一像素的RGB
值,构成矩阵,用与文中相似的办法进行破碎彩色图像的拼接。
关键词:拼接复原图像处理灰度值矩阵匹配
2
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)不能确定复原位置的碎片,可不填入上述表格,单独列表。
3
2模型假设
1、假设所有碎片均完整,并且不出现破损,污损情况。
2、假设纸片在扫描时全为正向扫描,无反方向纸片。
3、假设所有问题给出的碎片均能拼出完整的纸张。
4、假设题目中碎片与真实纸张物理性质相同。
5、假设纸张内容有意义。
3符号说明
A
三维碎片矩阵
B
二维复原图矩阵
i
A某一碎片的灰度值矩阵,碎片矩阵的子矩阵
j
v某一碎片的匹配度
j
v某一碎片的平均匹配度
a
A
和
b
A双面三维碎片矩阵
a
B
和
b
B双面二维复原图
(1,2,3,4)
jk
vk某一碎片正反面平均匹配度
4模型建立与求解
4.1问题一
4.1.1理论部分
对于这道题,只涉及到纵切的碎片,我们建立模型不区分英文字和中文字(下两
问同),并使用求样本均值作为求匹配度关键方法。
首先需要一个三维的碎片矩阵
A
,其大小为
19807219
,矩阵元素的位置用三维
直角坐标
Oxyz
表示,还要一个大小为
19801368
的复原图矩阵
B
。首先需要用imread
函数读出碎片的灰度值矩阵,放入
A
中,每一个碎片占一个二维的
198072
Oyz
矩阵,
记为
i
A
,一共19张图,用19个这样的二维矩阵表示,于是构成三维矩阵
A
。复原图
矩阵
B
是将碎片的灰度值矩阵按正确的顺序拼接而成的矩阵,也就是最终复原图的灰度
4
值矩阵。
拼接的第一步是要确定最左边的一条碎片,由于只纵切的话,切口几乎都会把部
分字切开,所以这里需要做的是扫描矩阵
A
的
Oxz
第一子矩阵,如果有一列全为255,
那么此列所在的二维的
198072
Oyz
矩阵即为复原图最左边的碎片的灰度值矩阵*
i
A。然
后将*
i
A的数值读入到复原图矩阵
B
的第1列到第72列。
接下来要依次拼接上其他的碎片。假设碎片矩阵
A
中的子矩阵
i
A
已经拼接上,此
时要寻找下一块能够拼接上的碎片,假设为
j
A
。此时就需要进行匹配,在此情况的匹配
过程中需要先取出已拼接上的子矩阵
i
A
的最右边第72列的灰度值,并依次取出碎片矩
阵
A
中剩下的未拼接上的子矩阵的最左边既第1列数值,如图示。
255
224
199
176
186
203
i
A
255
223
204
165
198
231
j
A
如图中给出的例子,左边矩阵为上一次拼接上的矩阵取出其第72列的部分数值,
右边矩阵为剩下的某一矩阵并取出其第一列的部分数值。接下来就是匹配过程。
匹配过程遵循以下式子:
1980
1
((,1)(,72))
1980
ji
k
j
kk
v
AA
然后取这个均值
j
v
最小的矩阵
j
A
作为新的一个最佳匹配矩阵,若有两个最小值相等,
那么程序报错,并进行人工干预,选择其中最适合的碎片。最后将最佳匹配的碎片矩阵
j
A
读入到上一次更新后的复原图矩阵
B
相应的位置即可。
然后将上述步骤重复,直到复原图矩阵
B
被填满,然后用imshow函数将复原图输
出得到碎纸片拼接后的完整图片。
4.1.2结果分析
中文图片程序输出排序结果为:
5
81706
从最后的图像结果看来,不需要更改计算机一次显示的结果,说明拼接是正确的。英文
的碎片排序依然是可直接使用计算机的输出结果,不需要人工干预,下面是排序的结果:
36274
本问得程序和拼接完成后的复原图将在附录中展示(后两问同)。
4.2问题二
4.2.1理论部分
第二个问题涉及到横纵向都切的纸片,不能单纯地移植上一问的模型和算法,但其
建模思想和算法核心是不变的,只是多了一点步骤而已。并且每一个纸片形状相同,那
么同样构造一个三维的碎片矩阵
A
,其大小为
18072209
,依旧一个大小为
19801368
的复原图矩阵
B
。复原图矩阵
B
与碎片矩阵
A
的作用和上一问均相同,只
是碎片矩阵
A
的尺寸有所变化,根据碎片的尺寸和数量而变。
步骤一:
那么建立此问题模型的第一步是确定组成复原图第一行的碎片及其顺序。首先要搜
索出组成第一行的碎片,遍历碎片矩阵
A
的最上面一个矩阵,既
Oxy
面的第一个矩阵,
找出整个
Oy
一行值全为255的碎片灰度值矩阵
i
A
,然后从这些矩阵当中,再从第一行
开始遍历一次,直到遇到某一行有不为255的值时终止,选择出含有值全为255的行且
行数量最多的那些碎片,他们即为组成第一行的碎片。
然后从这些碎片中,找出最左边的一个,也就是整个复原图最左上角的那个碎片。
由于这次加入了横切,那么很有可能有些非边缘的碎片其左右边会出现一列白色的情况,
那么就仿照上面一步,扫描整个第一行的碎片,从他们灰度值矩阵
i
A
的第一列开始扫描。
因为在边缘的碎片由于页边距会产生较大的空白,所以扫描到某列开始出现非255数值
为止,全为255列数最多的碎片即为左边的碎片。
接下来此行的匹配仿照上一问,使用下式求匹配度
180
1
((,1)(,72))
180
ji
k
j
kk
v
AA
并选择匹配度最小的进行匹配。每匹配上一个碎片就将其的灰度值矩阵
i
A
读入到复原图
矩阵
B
的相应位置。
6
步骤二:
第二步就是确定整个复原图的第一列的碎片。通过第一步我们已经确定了此列的第
一个碎片,下面就是用原来的方法进行匹配,拼接出第一列只不过原来是左右拼接,现
在只需改成上下拼接即可。匹配上以后就将其的灰度值矩阵
i
A
读入到复原图矩阵
B
的
相应位置。
255223204165183i
A
2347
j
A
匹配度计算公式如下:
72
1
((1,)(180,))
72
ji
k
j
kk
v
AA
图例如下:
步骤三:
确定了第一行和第一列以后,第三步就要把其他碎片填进去。这一步需要把匹配度
的计算方式作一定更改,取为平均匹配度
j
v
。由于我们是将剩下的碎片一块一块由左至
右由上到下拼接上,于是我们要同时知道该碎片的上边缘
ju
v
和左边缘
jl
v
的匹配度,由
两个匹配度来判断是否能匹配。然后再取这两个匹配度的均值既平均匹配度
j
v
。然后取
j
v
最小的作为最佳匹配碎片。每匹配上一个碎片,就将其的灰度值矩阵
i
A
读入到复原
图矩阵
B
的相应位置。
7
三个变量的计算公式如下:
72
1
180
1
((1,)(180,))
72
((,1)(,72))
180
jiu
k
ju
jil
k
jl
kk
v
kk
v
AA
AA
,
2
jujl
j
vv
v
匹配过程如图示:
255223204165183iu
A
255
224
199
176
186
203
il
A
2347
255
223
204
165
198
231
j
A
按照上述步骤,先分别循环完第一步和第二步,最后循环第三步,即可得到完整的复原
图矩阵
B
,然后和上问一样,使用imshow函数将其输出即可得到复原后的拼接图像。
4.2.2结果分析
中文图片程序输出排序结果为:
4954652178
616296131
1681123147
38581189122
71156831322
1991351273
9434841839
87
29641112
72817545174
89
8
41
79637205236
51952618718
760
5176
9743
66145
755544217159
37016632196
1423
从最后的图像结果看来,不需要更改计算机一次显示的结果,说明拼接是正确的。英文
的碎片排序依然是可直接使用计算机的输出结果,不需要人工干预,下面是排序的结果:
94
29894
865119824117
85114
323
2733620713515
23314216862
7137195847
671144
34
887
153967147
91828146
1546127
572027116582
767361179143
69549162197112
9
202527178
55315244
8948722115
4.3问题三
4.3.1理论部分
这个问题只涉及到英文的纸片,不过却是双面的,那么可以沿用上一问的方法,
9
不过需要进行一些改进。这次要构造两个三维的碎片矩阵
a
A
和
b
A
,其大小均为
18072209
,两个大小为
19801368
的复原图矩阵
a
B
和
b
B
。
开始读入的时候,将文件名有a和b的碎片图像,用imread函数分别按数字顺序
读入到碎片矩阵
a
A
和
b
A
,接下来进行几个步骤,这里的人工检查会多一点。
步骤一:
直接进行上一问的步骤一和步骤二,不过需要进行两次,即两个碎片矩阵
a
A
和
b
A
。
将
a
A
里检出的左上角第一块碎片矩阵放入复原图矩阵
a
B
,将
b
A
里检出的左上角第一块
碎片矩阵放入复原图矩阵
b
B
,以此来确定正反面,把
a
B
叫做正面复原图矩阵,相应的
b
B
为反面复原图矩阵。此时需要检查这两个的编号是否相同,不同的话即出现错误。
这一步进行完以后,确定了整个复原图的框架,而且拼接起来的编号也应该相同,
不同的话就有错需要更正。
步骤二:
这一步的每一个循环体需要进行四个上一问步骤三里的循环体。首先因为复原图矩
阵有两个,而且我们无法确定某个编号碎片的正反面,所以要匹配四次,第一次为碎片
的a面矩阵与
a
B
匹配,第二次为碎片的a面矩阵与
b
B
匹配,第三次为碎片的b面矩阵与
a
B
匹配,第四次为碎片的b面矩阵与
b
B
匹配。然后平均匹配度分别取为
1j
v
2j
v
3j
v
和
4j
v
。
在确定最佳匹配碎片的时候,不能将所有的这四种平均匹配度拿来比较,要分为两类,
第一类为与
a
B
的平均匹配度,是
1j
v
和
3j
v
,第二类为与
b
B
的平均匹配度,是
2j
v
和
4j
v
。然
后将匹配好的矩阵读入到现有的复原图矩阵中。
进行这整个的过程循环,得到完整的复原图矩阵
a
B
和
b
B
,然后用imshow函数输出,
最后得到完整复原图,只要两个图像无误,那即正确,若有错,就需要查看编号的表格,
然后根据图像整体来进行更改。
4.3.2结果分析
中文图片程序输出排序结果为:
07
8b
11
1b
12
5a
14
0a
15
5a
15
0a
18
3b
17
4b
11
0a
06
6a
10
8a
01
8b
02
9a
18
9b
08
1b
16
4b
02
0a
04
7a
13
6b
00
10
从最后的图像结果看来,不需要更改计算机一次显示的结果,说明拼接是正确的。英文
的碎片排序依然是可直接使用计算机的输出结果,不需要人工干预,下面是排序的结果:
13
6a
04
7b
02
0b
16
4a
08
1a
18
9a
02
9b
01
8a
10
8b
06
6b
11
0b
17
4a
18
3a
15
0b
15
5b
14
0b
12
5b
11
1a
07
8a
00
5b
15
2b
14
7b
06
0a
05
9b
01
4b
07
9b
14
4b
12
0a
02
2b
12
4a
19
2b
02
5a
04
4b
17
8b
07
6a
03
6b
01
0a
08
9b
14
3a
20
0a
08
6a
18
7a
13
1a
05
6a
13
8b
04
5b
13
7a
06
1a
09
4a
09
8b
12
1b
03
8b
03
0b
04
2a
08
4a
15
3b
18
6a
08
3b
03
9a
09
7b
17
5b
07
2a
09
3b
13
2a
08
7b
19
8a
18
1a
03
4b
15
6b
20
6a
17
3a
19
4a
16
9a
16
1b
01
1a
19
9a
09
0b
20
3a
16
2a
00
2b
13
9a
07
0a
04
1b
17
0a
15
1a
00
1a
16
6a
11
5a
06
5a
19
1b
03
7a
18
0b
14
9a
10
7b
08
8a
01
3b
02
4b
05
7b
14
2b
20
8b
06
4a
10
2a
01
7a
01
2b
02
8a
15
4a
19
7b
15
8b
05
8b
20
7b
11
6a
17
9a
18
4a
11
4b
03
5b
15
9b
07
3a
19
3a
16
3b
13
0b
02
1a
20
2b
05
3a
17
7a
01
6a
01
9a
09
2a
19
0a
05
0b
20
1b
03
1b
17
1a
14
6b
17
2b
12
2b
18
2a
04
0b
12
7b
18
8b
06
8a
00
8a
11
7a
16
7b
07
5a
06
3a
06
7b
04
6b
16
8b
15
7b
12
8b
19
5b
16
5a
10
5b
20
4a
14
1b
13
5a
02
7b
08
0a
00
0a
18
5b
17
6a
12
6a
07
4a
03
2b
06
9b
00
4b
07
7b
14
8a
08
5a
00
7a
00
3a
00
9a
14
5b
08
2a
20
5b
01
5a
10
1b
11
8a
12
9a
06
2b
05
2b
07
1a
03
3a
11
9b
16
0a
09
5b
05
1a
04
8b
13
3b
02
3a
9a0b6a6b8a4a5b2a4b2a0b4a9a4a9a0b7a2a5a
18
6b
15
3a
08
4b
04
2b
03
0a
03
8a
12
1a
09
8a
09
4b
06
1b
13
7b
04
5a
13
8a
05
6b
13
1b
18
7b
08
6b
20
0b
14
3b
19
9b
01
1b
16
1a
16
9b
19
4b
17
3b
20
6b
15
6a
03
4a
18
1b
19
8b
08
7a
13
2b
09
3a
07
2b
17
5a
09
7a
03
9b
08
3a
08
8b
10
7a
14
9b
18
0a
03
7b
19
1a
06
5b
11
5b
16
6b
00
1b
15
1b
17
0b
04
1a
07
0b
13
9b
00
2a
16
2b
20
3b
09
0a
11
4a
18
4b
17
9b
11
6b
20
7a
05
8a
15
8a
19
7a
15
4b
02
8b
01
2a
01
7b
10
2b
06
4b
20
8a
14
2a
05
7a
02
4a
01
3a
14
6a
17
1b
03
1a
20
1a
05
0a
19
0b
09
2b
01
9b
01
6b
17
7b
05
3b
20
2a
02
1b
13
0a
16
3a
19
3b
07
3b
15
9a
03
5a
16
5b
19
5a
12
8a
15
7a
16
8a
04
6a
06
7a
06
3b
07
5b
16
7a
11
7b
00
8b
06
8b
18
8a
12
7a
04
0a
18
2b
12
2a
17
2a
00
3b
00
7b
08
5b
14
8b
07
7a
00
4a
06
9a
03
2a
07
4b
12
6b
17
6b
18
5a
00
0b
08
0b
02
7a
13
5b
14
1a
20
4b
10
5a
02
3b
13
3a
04
8a
05
1b
09
5a
16
0b
11
9a
03
3b
07
1b
05
2a
06
2a
12
9b
11
8b
10
1a
01
5b
20
5a
08
2b
14
5a
00
9b
09
9a
04
3a
09
6b
10
9a
12
3a
00
6a
10
4a
13
4a
11
3a
02
6b
04
9b
09
1a
10
6b
10
0b
05
5b
10
3a
11
2a
19
6b
05
4b
11
05
4a
19
6a
11
2b
10
3b
05
5a
10
0a
10
6a
09
1b
04
9a
02
6a
11
3b
13
4b
10
4b
00
6b
12
3b
10
9b
09
6a
04
3b
09
9b
5模型评价与推广
5.1模型的优点
此模型简洁直观,可移植性强,而且机械性很强,几乎可以不加入人工干预。在匹
配的时候用边缘上所有像素灰度值作为其匹配的特征,匹配过程得到了很强的定量分析,
具有突出的数字处理特征,这样准确性也会高很多。模型很简洁,不需要对灰度值矩阵
进行进一步处理,使用最原始的数据,以减少处理过程中产生的误差。计算方法简单,
易于后期查错,程序实现整体时间复杂度和空间复杂度不高。且整个模型简单原始功能
强大,能够解决大多数此类问题,在遇到更复杂的情况时可以很容易地在此基础上进行
升级,可作为基础的模板。
5.2模型的缺点
建立整个模型的基础是图像的灰度值矩阵,而且是几乎用纯粹的数字处理,在程序
的体现上,即使经过了优化,还是出现了较多的循环,略显冗杂。最主要的还是因为有
两次灰度矩阵和图像之间的变换,第一次为imread读取灰度矩阵时,第二次为imshow
返回图像时。这两次转换时使灰度值矩阵和图像之间产生了误差,使得最后返回图像的
时候会有微小的失真,如下图例:
左侧为我们的模型运行结果的一部分,右侧为原碎片的一部分。虽然有微小失真,不过
辨识度还是很高,能够轻易辨识。对于这一问题,我们还将在以后进行进一步思考与研
12
究。
5.3模型的推广
此模型的模型简易,便于推广,即可用类似的方法去处理彩色图像碎片的拼接。彩色图
像使用RBG三原色方式显示,每一个颜色通道含有和黑白图像一样的0~255级的值,
这相当于在原来的模型上增加了两个变量,最后在匹配的时候需要同时考虑三个颜色的
匹配度之间的关系来确定其是否匹配。这彩色拼接的模型几乎是大部分可按照本文的模
型框架来建立,加入一些变量相关性的处理,最后得出结果。
参考文献
[1]罗智中,基于文字特征的文档碎纸片半自动拼接,计算机工程与应用,
37,207-210,2012.
[2]薛定宇,陈阳泉.高等应用数学问题的MATLAB求解(第三版)[M].北京:清华大学出
版社,2013.
[3]姜启源,谢金星,叶俊,数学模型,北京:高等教育出版社,2008.
[4]章毓晋,图像处理,北京,清华大学出版社,2012年.
[5]陶波,于志伟,郑筱祥,图像的自动拼接[J],中国生物医学工程学报,04期:29-35,
1997.
[6]楼顺天,matlab程序设计语言,西安:高等教育出版社,2008.
13
附录
附录1表格与图像
问题一:
81706
14
36274
15
问题二:
4954652178118
61629613179
0
38581189122103
78
60
943484183944
8766
2964111275
728175451740
89140
1991188141
637205236
179191128
13910574
251107115176
771641275843
145
5544217159
37016632196
23
16
17
94
29894
865119824117
85114
323
2733620713515
23314216862
7137195847
671144
34
887
153967147
91828146
1546127
572027116582
767361179143
69549162197112
9
202527178
55315244
8948722115
18
19
附录2程序部分
问题一:
A=zeros(1980,72,19);
B=zeros(1980,1368);
forii=1:19
ifii<=10
tem=sprintf('00%',ii-1);
el
tem=sprintf('0%',ii-1);
end
A(:,:,ii)=imread(tem);
end
lefts=zeros(19,1);
forii=1:19
forjj=1:72
ifA(:,jj,ii)==255
lefts(ii,1)=lefts(ii,1)+1;
el
break;
end
end
end
[mml,left]=max(lefts);
B(1:1980,1:72)=A(1:1980,1:72,left);
order=zeros(1,19);
order(1,1)=left-1;
nn=2;
forii=72:72:1368
ifii==1368
break;
end
templ=B(1:1980,ii);
value=zeros(19,1);
forjj=1:19
ifjj==left
value(jj,1)=inf;
continue;
end
forkk=1:1980
value(jj,1)=value(jj,1)+abs(templ(kk)-A(kk,1,jj));
end
end
[valuel,add]=min(value);
order(1,nn)=add-1;
nn=nn+1;
B(1:1980,ii+1:ii+72)=A(1:1980,1:72,add);
end
order
imshow(B)
20
问题二:
A=zeros(180,72,209);
B=zeros(1980,1368);
forii=1:209
ifii<=10
tem=sprintf('00%',ii-1);
end
ifii>10&&ii<=100
tem=sprintf('0%',ii-1);
end
ifii>100
tem=sprintf('%',ii-1);
end
A(:,:,ii)=imread(tem);
end
up=zeros(1,209);
forii=1:209
forjj=1:72
ifA(:,jj,ii)==255
up(1,ii)=up(1,ii)+1;
el
break;
end
end
end
while1
[a,b]=max(up);
ifsum(up==a)~=19
b=49;
break;
el
up(1,b)=0;
end
end
B(1:180,1:72)=A(1:180,1:72,b+1);
forii=72:72:1368
ifii==1368
break;
end
templ=B(1:180,ii);
value=zeros(209,1);
lefts=0;
forjj=1:209
foriii=1:72
ifA(iii,:,jj)==255
lefts=lefts+1
el
break;
end
end
ifjj==b+1||lefts~=37
value(jj,1)=inf;
continue;
end
forkk=1:180
value(jj,1)=value(jj,1)+abs(templ(kk)-A(kk,1,jj));
end
end
21
[valuel,add]=min(value);
order(1,nn)=add-1;
nn=nn+1;
B(1:180,ii+1:ii+72)=A(1:180,1:72,add);
end
imshow(B)
本文发布于:2022-12-03 23:42:47,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/47454.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |