碎纸片的拼接复原论文.docx
- 文档编号:11065504
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:22
- 大小:967.90KB
碎纸片的拼接复原论文.docx
《碎纸片的拼接复原论文.docx》由会员分享,可在线阅读,更多相关《碎纸片的拼接复原论文.docx(22页珍藏版)》请在冰豆网上搜索。
碎纸片的拼接复原论文
B、碎纸片的拼接复原
[摘要]
碎纸片自动拼接技术是图像处理于模型识别领域中一个崭新但是很典型的应用,它是通过
扫描和图像提取技术获取一组碎纸片的形状、颜色等信息,然后利用计算机进行相应的处理过
而实现对这些碎纸片的全自动或半自动拼接复原。
[1]本文建立的模型是属于优化模型,通过对图像预处理,运用图像二值化(采用OTSU算法),边界提取配对法,matlab算法等方法进行碎纸片拼接处理。
针对问题一,给定的来自同一页印刷文字文件的碎纸机仅纵切破碎的纸片,我们采用编程求解模型,其主要思想是:
编写程序批量读取文件,在采用OTSU算法将每个图像二值化,在提取边界图像构成矩阵,运用边界配对法,再用matlab算法进行求解。
针对问题二,对于碎纸机既纵切又横切的碎纸片,先编写程序运用matlab算法及找出四个边界碎纸片,再利用matlab对其他碎纸片图像进行处理,获取文字行方向、高度、间距等文字行特征,最后编写程序用用matlab算法进行求解。
针对问题三,对于双面英文切纵切又横切的碎纸片,我们要将a面b面双面进行研究对于同一图片我们需同时考虑两面边界值,然后再与问题二一样用matlab算法及人工干预找出四个边界碎纸片,再重复问题二的做法,就能实现双面图片的拼接。
最后,我们在对结果进行分析的基础上说明了模型的优缺点,并对所建模型加以评价推广和改进,同时,进一步论述模型的实际意义。
关键词:
碎纸片,二值化,边界提取配对,matlab算法
一、问题重述
1.1问题背景
破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。
传统上,拼接复原工作需由人工完成,准确率较高,但效率很低。
特别是当碎片数量巨大,人工拼接很难在短时间内完成任务。
随着计算机技术的发展,人们试图开发碎纸片的自动拼接技术,以提高拼接复原效率。
1.2目标任务
请讨论以下问题:
1.对于给定的来自同一页印刷文字文件的碎纸机破碎纸片(仅纵切),建立碎纸片拼接复原模型和算法,并针对附件1、附件2给出的中、英文各一页文件的碎片数据进行拼接复原。
如果复原过程需要人工干预,请写出干预方式及干预的时间节点。
复原结果以图片形式及表格形式表达(见【结果表达格式说明】)。
2.对于碎纸机既纵切又横切的情形,请设计碎纸片拼接复原模型和算法,并针对附件3、附件4给出的中、英文各一页文件的碎片数据进行拼接复原。
如果复原过程需要人工干预,请写出干预方式及干预的时间节点。
复原结果表达要求同上。
3.上述所给碎片数据均为单面打印文件,从现实情形出发,还可能有双面打印文件的碎纸片拼接复原问题需要解决。
附件5给出的是一页英文印刷文字双面打印文件的碎片数据。
请尝试设计相应的碎纸片拼接复原模型与算法,并就附件5的碎片数据给出拼接复原结果,结果表达要求同上。
二、模型假设及符号说明
2.1模型假设
1、根据题意,假设碎纸机破碎纸片的字体是等高的,且破碎时是没有损坏缺角的。
2、假设题目所给的碎纸片在误差允许的范围内是有效的。
3、假设计算机数字分析图像能力对碎纸片的处理是可行的。
4、所有碎片上的文字的高度间距是一样的,行间距也是一样的。
2.2符号定义
II【i】是指输入一到十九的矩阵。
JJ【i】是指图片二值化之后得到的矩阵。
C是指1到19副图各个矩阵首列之和
三、问题分析
对于文档纸碎片的拼接,常规一般使用碎片边界尖点特征、尖角特征、面积特征等几何特征特征,搜索与之匹配的相邻纸碎片并进行拼接。
对于问题一由于在本题中所给的都为规则的碎纸片,所以将纸片先输入再进行二值化,得到图片的边界矩阵,调用一个matlab函数得到左边界全为1的图片,且此图片为文档的排头。
此时再重复调用一个matlab算法,根据像素最大配对原则便可以将两个图片拼接到一起,通过循环可以得到所有碎片拼接得出的图片。
我们调用这个函数
functionc=cout0(a,b)
t=size(a);c=0;
fori=1:
t
if(abs(a(i)==b(i)))进行边界配对。
(1为白,0为黑)
c=c+1;
可以得到于某一张图还配对的左边的图片。
同理可得出所有图片的与其配对的左边的图片,也就可以轻易得出图片的顺序,再用得出的顺序编写程序,运用matlab算法进行拼接复原,此问题就可得到解决。
对于问题二,相对一复杂多了,我们先将图像输入再进行二值化处理,调用matlab算法及人工干预可得到位于左上角第一个图片,然后在套用问题一中的matlab算法,得出所有可能位于第一列的图片,然后以左上角第一个图片为匹配基点,以此得出与其
配对的图片,依次下去,就可以得出所有位于第一列的图片,继续运用matlab算法进行行匹配,就可得到所有图片的顺序,再用得出的顺序编写程序,运用matlab算法进行拼接复原,此问题也将得到解决。
对于问题三,在二的基础上再加增加两个for循环,即再a面像素点的情况下还要考虑b面的。
调用matlab算法对000a.bmp到208a.bmp和000b.bmp到208b.bmp输入并对其二值化,同时用matlab算法输出他们的边界矩阵,再第二问的程序下秩序同时满足a,b就能解决问题了。
四、问题的模型建立及求解
问题一:
先对附件一和附件二中的图片重命名(将图片名的前置0都删去),并将图片的存放途径改为C:
\DocumentsandSettings\Administrator\桌面\B\附件1\。
然后再在用matlab软件批量读取文件,并存为(II)然后用再采用OTSU算法将每个图像二值化并储存在JJ中,再提取每个二值化图像后即(JJ)的边界,将边界构成边界矩阵。
在边界矩阵中找到左边界相加的值为1980的图片,此图就为附件一的排头图片(程序详情见附录程序一)。
再在matlab软件中输入附录程序二可得出第一幅图与余下几幅图的右边界匹配度最大的那幅图。
同理我们可通过附录程序二可得:
0.bmp的左边为172.bmp的左边为16.bmp
3.bmp的左边为15.bmp。
4.bmp的左边为1.bmp。
5.bmp的左边为4.bmp。
6.bmp的左边为0.bmp。
7.bmp的左边为11.bmp。
8.bmp为排头
9.bmp的左边为5.bmp。
10.bmp的左边为3.bmp。
11.bmp的左边为18.bmp。
12.bmp的左边为14.bmp。
13.bmp的左边为9.bmp。
14.bmp的左边为8.bmp。
15.bmp的左边为12.bmp。
16.bmp的左边为2.bmp。
17.bmp的左边为7.bmp。
18.bmp的左边为13.bmp。
8.bmp为排头,以8.bmp为基准和由matlab程序运行出来得到的数据再经过人工处理可得碎纸顺序为8~14~12~15~3~10~2~16~1~4~5~9~13~18~11~7~17~0~6。
用表格为:
8
14
12
15
3
10
2
16
1
4
5
9
13
18
11
7
17
0
6
然后通过imread(详情见附录程序三)语句按其顺序输出,就能得到我们所想要拼接的图片。
对于附录二中的图片可套用一种的所有方法,然后改变对应图片粗村位置,将图片存放到c:
\programFiles\MATLAB\R2007b\work\。
并将原来附件一中的图片移除。
我们可以容易的知道它的碎纸顺序:
3
6
2
7
15
18
11
0
5
1
9
13
10
8
12
14
17
16
4
同理可用imred语句按顺序输出,就能得到我们想要拼接的图片
问题二:
1.对于附件三给定209张图片,我们先将图片重新命名(将图片名的前置0都删去)再通过C:
\DocumentsandSettings\Administrator\桌面\B\附件3\途径存放起来。
在matlab中输入以下程序读取图片并将其二值化(采用OTSU算法(详情见附录程序表四))并用循环嵌套方式来输出上界和左边界上的所有矩阵值均为1的图片号。
通过可知第15,30,50,63,72,90,126,136,144,169副图均可能是在第一个方格上。
但由于在一格只有一张图片,此时程序无法准确的得出答案,所以需要人工干预。
通过人工干预可以知道第五十副图在第一排第一列(即49.bmp)。
然后再输入附录程序五,以获取边界都为一的图片。
得到十六个左边界都为一的图片
7.bmp
14.bmp
29.bmp
49.bmp
61.bmp
62.bmp
67.bmp
71.bmp
80.bmp
89.bmp
94.bmp
125.bmp
135.bmp
143.bmp
168.bmp
38.bmp
我们分别这十六个图片二值化,输出它的上下边界矩阵,此时我们将范围缩小至十六,则可以开始与49bmp开始匹配,在matlab上输入程序达到匹配(详情见附录程序六)以得到能与49.bmp相匹配的图片。
可得出49.bmp下面为61.bmp。
同理可得:
61.bmp下面为168.bmp下面为38.bmp下面为71.bmp下面14.bmp下面为94.Bmp下面为125.bmp下面为29.bmp下面为7.bmp下面为89.bmp.
在matlab中输入附录程序六:
将for j=1:
209b=sum(AB{j}(:
1));if(b==180)j改为fori=1:
209a=sum(AB{i}(1,:
));if(a==72)i
然后重复5操作可得第一行的序码为:
同理可得碎纸片的拼接碎纸表:
49
54
65
143
186
2
57
192
178
118
190
95
11
22
129
28
91
188
141
61
19
78
67
69
99
162
96
131
79
63
116
163
72
6
177
20
52
36
168
100
76
62
142
30
41
23
147
191
50
179
120
86
195
26
1
87
18
38
148
46
161
24
35
21
189
122
103
130
193
88
167
25
8
9
105
74
71
156
23
132
200
17
80
33
202
198
15
133
170
205
85
152
165
27
60
14
128
3
159
82
199
135
12
73
160
203
169
134
39
31
51
107
115
176
94
34
84
183
90
47
121
42
124
144
77
112
149
97
136
164
127
58
43
125
13
182
109
197
16
184
110
187
66
106
150
21
173
157
181
204
139
145
29
64
111
201
5
92
180
48
37
75
55
44
206
10
104
98
172
171
59
7
208
138
158
126
68
175
45
174
0
137
53
56
93
153
70
166
32
196
89
146
102
154
114
40
151
207
155
140
185
108
117
4
101
113
194
119
123
根据图片上的排序我们就能将碎片拼成图片
同时英文版的可按照上面的方法得出序列号,序列号为:
191
75
11
154
190
184
2
104
180
64
106
4
149
32
204
65
39
67
147
201
148
170
196
198
94
113
164
78
103
91
20
101
26
100
6
17
28
146
26
51
107
29
40
158
186
98
24
117
150
5
59
58
92
30
37
46
127
19
194
93
141
88
121
126
105
155
114
176
182
151
22
57
202
71
165
82
159
139
1
129
63
138
153
53
38
123
120
175
85
50
160
187
97
203
31
20
41
108
116
136
73
36
207
135
15
76
43
199
45
173
79
161
179
143
208
21
7
49
61
119
33
142
168
62
169
54
192
133
118
189
162
197
112
70
84
60
14
68
174
137
195
8
49
172
156
96
23
99
122
90
185
109
132
181
95
69
167
163
166
188
111
144
206
3
130
34
13
110
25
27
178
171
42
66
205
10
157
74
145
83
134
55
18
56
35
16
9
183
152
44
81
77
128
200
131
52
125
140
193
87
89
48
72
12
177
124
0
102
115
3、问题三的模型建立与求解:
先对图片名进行修改即将前缀0去掉,先将图片批量输入,再将图片二值化,载依次输出它们的像素值,直接输入算法(详情见附录程序七)得到图片的序号值。
五、模型优缺点及改进
解决此问题模型算法,通过编写程序,运用Matlab算法在加上必要的人工干预进行碎纸片的拼接复原,这种半自动拼接方法综合利用了计算机高速计算能力以及人的文字图像识别和理解能力,拼接效率比纯人工高,拼接准确性也好于纯计算拼接法。
【2】在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。
但此类拼接复原碎纸片模型算法还是存在缺陷的,程序代码没有循环效果,需要多次修改重复运行,工作量大。
操作起来有一些困难,
我们在今后的学习中会继续的研究,希望编写出能够循环的程序语句,减少繁杂的操作。
为今后此类对碎纸片拼接复原方法的推广使用做出重要意义。
.
六、参考文献
[1]贾海燕,碎纸自动拼接关键技术研究,工学硕士学位论文,2005.11
[2]罗智中,基于文字特征的文档碎纸片半自动拼接,2012.05.06
[3]陶波、于志伟、郑筱祥、图像的自动拼接[J]、中国生物医学工程报。
1997,16(4):
29-35
[4]钟家强、王润生、基于边缘的图像配准改进算法[J]。
计算机工程与科学.2001.23(6):
25-29.
七、附录
一、附件一恢复所得图片为:
二、附件二恢复所得图片为:
三、附件三恢复所的图片为:
四、附件四恢复所的图片为:
五、附件五恢复所得图片为:
本题一直使用的是matlab软件。
附录程序一:
II=cell(1,19);
fori=1:
19
imageName=strcat('C:
\DocumentsandSettings\Administrator\桌面\B\附件1\',num2str(i-1),'.bmp');
II{i}=imread(imageName);
end
JJ=cell(1,19);
fori=1:
19
th=graythresh(II{i});
JJ{i}=im2bw(II{i},th);
end
Ji=[JJ{1}(:
1)JJ{1}(:
72)JJ{2}(:
1)JJ{2}(:
72)JJ{3}(:
1)JJ{3}(:
72)JJ{4}(:
1)JJ{4}(:
72)JJ{5}(:
1)JJ{5}(:
72)JJ{6}(:
1)JJ{6}(:
72)JJ{7}(:
1)JJ{7}(:
72)JJ{8}(:
1)JJ{8}(:
72)JJ{9}(:
1)JJ{9}(:
72)JJ{10}(:
1)JJ{10}(:
72)];
Ji1=[JJ{11}(:
1)JJ{11}(:
72)JJ{12}(:
1)JJ{12}(:
72)JJ{13}(:
1)JJ{13}(:
72)JJ{14}(:
1)JJ{14}(:
72)JJ{15}(:
1)JJ{15}(:
72)JJ{16}(:
1)JJ{16}(:
72)JJ{17}(:
1)JJ{17}(:
72)JJ{18}(:
1)JJ{18}(:
72)JJ{19}(:
1)JJ{19}(:
72)];
Jii=[JiJi1];
forj=1:
19
C=sum(JJ{j}(:
1))
if(C==1980)
j
end
end
附录程序二:
II=cell(1,19);
fori=1:
19
imageName=strcat('C:
\DocumentsandSettings\Administrator\桌面\B\附件1\',num2str(i-1),'.bmp');
II{i}=imread(imageName);
end
JJ=cell(1,19);
fori=1:
19
th=graythresh(II{i});
JJ{i}=im2bw(II{i},th);
end
Ji=[JJ{1}(:
1)JJ{1}(:
72)JJ{2}(:
1)JJ{2}(:
72)JJ{3}(:
1)JJ{3}(:
72)JJ{4}(:
1)JJ{4}(:
72)JJ{5}(:
1)JJ{5}(:
72)JJ{6}(:
1)JJ{6}(:
72)JJ{7}(:
1)JJ{7}(:
72)JJ{8}(:
1)JJ{8}(:
72)JJ{9}(:
1)JJ{9}(:
72)JJ{10}(:
1)JJ{10}(:
72)];
Ji1=[JJ{11}(:
1)JJ{11}(:
72)JJ{12}(:
1)JJ{12}(:
72)JJ{13}(:
1)JJ{13}(:
72)JJ{14}(:
1)JJ{14}(:
72)JJ{15}(:
1)JJ{15}(:
72)JJ{16}(:
1)JJ{16}(:
72)JJ{17}(:
1)JJ{17}(:
72)JJ{18}(:
1)JJ{18}(:
72)JJ{19}(:
1)JJ{19}(:
72)];
Jii=[JiJi1];
>>c=zeros(1,19);
fori=1:
18
I17=imread('17.bmp');
I18=imread('0.bmp');
I19=imread('6.bmp');
I=[I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12,I13,I14,I15,I16,I17,I18,I19];
imshow(I)
c(i)=cout0(Jii(:
1),Jii(:
2*i+2));
end
[C,I]=max(c)
再创建m-file此文件:
functionc=cout0(a,b)
t=size(a);c=0;
fori=1:
t
if(abs(a(i)==b(i)))
c=c+1;
end
end
附录程序三:
I1=imread('8.bmp');
I2=imread('14.bmp');
I3=imread('12.bmp');
I4=imread('15.bmp');
I5=imread('3.bmp');
I6=imread('10.bmp');
I7=imread('2.bmp');
I8=imread('16.bmp');
I9=imread('1.bmp');
I10=imread('4.bmp');
I11=imread('5.bmp');
I12=imread('9.bmp');
I13=imread('13.bmp');
I14=imread('18.bmp');
I15=imread('11.bmp');
I16=imread('7.bmp');
I17=imread('17.bmp');
I18=imread('0.bmp');
I19=imread('6.bmp');
I=[I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12,I13,I14,I15,I16,I17,I18,I19];
imshow(I)
附件程序四:
clc
AA=cell(1,209);
fori=1:
209
imageName=strcat('C:
\DocumentsandSettings\Administrator\桌面\B\¸附件3\',num2str(i-1),'.bmp');
AA{i}=imread(imageName);
end
AB=cell(1,209);%将每个图像二值化储存为AB
fori=1:
209
th=graythresh(AA{i});
AB{i}=im2bw(AA{i},th);
end
forj=1:
209
a=sum(AB{j}(1,:
));%利用循环将j图片的上界矩阵值相加
b=sum(AB{j}(:
1));%利用循环将j图片的左边界矩阵值相加
if(a==72&&b==180)
j%输出上界和左边界矩阵值均为1的图片号
end
end
附录程序五:
clc
AA=cell(1,209);
for i=1:
209
imageName=strcat('C:
\Documents and Settings\Administrator\桌面\B\附件3\',num2str(i-1),'.bmp');
AA{i}=imread(imageName);
end
AB=cell(1,209);
for i=1:
209
th=graythresh(AA{i});
AB{i}=im2bw(AA{i},th);
end
for j=1:
209
b=sum(AB{j}(:
1));
if(b==180)
j
end
end
附录程序六:
clc
A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 纸片 拼接 复原 论文