碎纸片的拼接复原论Word文档格式.docx

上传人:b****1 文档编号:4969010 上传时间:2023-05-04 格式:DOCX 页数:22 大小:967.78KB
下载 相关 举报
碎纸片的拼接复原论Word文档格式.docx_第1页
第1页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第2页
第2页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第3页
第3页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第4页
第4页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第5页
第5页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第6页
第6页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第7页
第7页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第8页
第8页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第9页
第9页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第10页
第10页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第11页
第11页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第12页
第12页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第13页
第13页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第14页
第14页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第15页
第15页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第16页
第16页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第17页
第17页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第18页
第18页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第19页
第19页 / 共22页
碎纸片的拼接复原论Word文档格式.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

碎纸片的拼接复原论Word文档格式.docx

《碎纸片的拼接复原论Word文档格式.docx》由会员分享,可在线阅读,更多相关《碎纸片的拼接复原论Word文档格式.docx(22页珍藏版)》请在冰点文库上搜索。

碎纸片的拼接复原论Word文档格式.docx

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

6

然后通过imread(详情见附录程序三)语句按其顺序输出,就能得到我们所想要拼接的图片。

对于附录二中的图片可套用一种的所有方法,然后改变对应图片粗村位置,将图片存放到c:

\programFiles\MATLAB\R2007b\work\。

并将原来附件一中的图片移除。

我们可以容易的知道它的碎纸顺序:

同理可用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

57

192

178

118

190

95

22

129

28

91

188

141

61

19

78

67

69

99

162

96

131

79

63

116

163

72

177

20

52

36

168

100

76

62

142

30

41

23

147

191

50

179

120

86

195

26

87

38

148

46

161

24

35

21

189

122

103

130

193

88

167

25

105

74

71

156

132

200

80

33

202

198

133

170

205

85

152

165

27

60

128

159

82

199

135

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

182

109

197

184

110

187

66

106

150

173

157

181

204

139

145

29

64

111

201

92

180

48

37

75

55

44

206

104

98

172

171

59

208

138

158

126

68

175

45

174

137

53

56

93

153

70

166

32

196

89

146

102

154

114

40

151

207

155

140

185

108

117

101

113

194

119

123

根据图片上的排序我们就能将碎片拼成图片

同时英文版的可按照上面的方法得出序列号,序列号为:

83

81

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);

imageName=strcat('

C:

\DocumentsandSettings\Administrator\桌面\B\附件1\'

num2str(i-1),'

.bmp'

);

II{i}=imread(imageName);

end

JJ=cell(1,19);

th=graythresh(II{i});

JJ{i}=im2bw(II{i},th);

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}(:

Jii=[JiJi1];

forj=1:

C=sum(JJ{j}(:

1))

if(C==1980)

j

附录程序二:

>

c=zeros(1,19);

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));

[C,I]=max(c)

再创建m-file此文件:

functionc=cout0(a,b)

if(abs(a(i)==b(i)))

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'

附件程序四:

clc

AA=cell(1,209);

209

\DocumentsandSettings\Administrator\桌面\B\¸

附件3\'

AA{i}=imread(imageName);

AB=cell(1,209);

%将每个图像二值化储存为AB

th=graythresh(AA{i});

AB{i}=im2bw(AA{i},th);

a=sum(AB{j}(1,:

%利用循环将j图片的上界矩阵值相加

b=sum(AB{j}(:

%利用循环将j图片的左边界矩阵值相加

if(a==72&

&

b==180)

j%输出上界和左边界矩阵值均为1的图片号

附录程序五:

clc

for 

i=1:

\Documents 

and 

Settings\Administrator\桌面\B\附件3\'

b=sum(AB{j}(:

if(b==180)

附录程序六:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2