资源描述
碎纸片的拼接复原摘要 用软件对给定的碎纸片进行拼接复原,先将附件中碎纸图片读入到里面去,并二值化。取出各边的二值化数据,构造边缘对比矩阵,计算各个边缘之间的相关系数,并根据相关系数进行匹配,得出碎纸图片的排序顺序,再根据这个顺序进行碎纸图片的复原,最终得出效果图。 针对问题1,用软件读取附件1,2所给的图片,并作二值化处理,取出图片左右边的边缘值,采用相关系数分析的方法,计算各边缘间的相关系数,根据相关系数的大小确定相邻的图片。人工干预选定第一张图片,然后根据相关系数的大小确定各张图片的顺序,最后MATLAB软件显示复原图片。针对问题2,我们首先用软件读取附件3,4所给的图片,然后利用第一问中的方法,提取碎纸片各边的特征,再根据各个边缘之间的相关系数进行匹配。在匹配过程中,先考虑左右边缘的匹配,再考虑上下边缘的匹配,最后得到复原图片。针对问题3,由于是图片是双面的,所以按照第二个问题步骤进行匹配和拼凑后,肯定有一些不能完成匹配的,所以一定进行另一面的匹配拼凑,完成一面的匹配后,还有反面要匹配,根据正反面的文字特征我们可以把正面的图片序号顺序按列进行倒置,即第一列和最后一列调换,其他列依次类推,最终得出正反面的拼图结果。以上方法都需要人工干预,对于较大数量的碎纸图片的复原,工作量是很大的。针对该复原问题尝试寻找一种能自动识别匹配的复原方法。首先读入所有图片并灰度处理,然后用Harris角点检测算法检测出各图片的特征点,接着用RANSAC匹配算法寻找与之相匹配的相邻图片,根据匹配结果对图片进行排序。由于各图片之间没有重叠的部分,不需要做图片的融合,所以根据排序直接就能显示复原结果。关键字: 图像二值化 相关系数 Harris角点检测 RANSAC算法(一) 问题重述破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。传统上,拼接复原工作需由人工完成,准确率较高,但效率很低。特别是当碎片数量巨大,人工拼接很难在短时间内完成任务。随着计算机技术的发展,人们试图开发碎纸片的自动拼接技术,以提高拼接复原效率。本文就附件所提供的图片,根据图片的切割方式,以建立碎纸片拼接复原模型和算法。问题1:对于给定的来自同一页印刷文字(中、英文各一页)文件的碎纸机破碎纸片(仅纵切),建立碎纸片拼接复原模型和算法,对附件1、2文件的碎片数据进行拼接复原。若复原过程需要人工干预,请写出干预方式及干预的时间节点。复原结果以图片形式及表格形式表达问题2:考虑碎纸机既纵切又横切的情形,请设计碎纸片拼接复原模型和算法,并针对附件3、附件4给出的中、英文各一页文件的碎片数据进行拼接复原。如果复原过程需要人工干预,请写出干预方式及干预的时间节点。复原结果表达要求同上。问题3:考虑双面打印文件的碎纸片拼接复原问题,根据附件5给出的一页英文印刷文字双面打印文件的碎片数据,设计相应的碎纸片拼接复原模型与算法,并就附件5的碎片数据给出拼接复原结果,结果表达要求同上。(二) 问题分析与建模思路我们要对图像进行处理,首先我们要把碎纸的图片读取的到计算机,并且转化成我们方便处理的数据形式,然后再设计算法进行求解。对于问题一,附件1和附件2的碎纸图片是经过纵切而成,想要将图片进行还原,必须要在里面取出左右边缘的值,进而对碎纸图片的左右边缘进行匹配就可以还原图像。故我们运用软件对边缘进行相关系度分析,最后运用的画图功能进行碎纸图片的还原,即可得出撕碎前图片的原图,最终将得出图片的排序顺序,将碎纸图片还原。对于问题二,附件3和附件4的碎纸图片是经过纵切和横切而成的,所以要进行碎纸图片还原,一定要取出碎纸图片的上下左右条边的特征才能进行还原;我们准备先进行左右边缘匹配,拼出一些模块后,在对拼好的模块进行上下边缘匹配,最终得出图片的排序顺序,进行碎纸图片还原。对于问题三,由于是碎纸图片是双面的,而且是经过纵切和横切而成的,所以要进行还原肯定要利用每一面的碎纸图片的边缘特征进行匹配,进行单面匹配后,肯定只是拼出一些模块,有一些模块肯定是匹配不了,这时我们就要进行根据另外一面的边缘特征进行第二轮匹配,最终才能拼凑出完整的原来纸片图片。(三) 基本假设1. 假设所给出的碎片是可以拼接复原成完整的一页文字;2. 假设同一张纸质是一样的,像素没有明显的差别,采用合理的方法进行制造;3. 假设碎纸机符合碎纸的要求,碎纸机具有效率高,质量好,精度高等优点;4. 假设所采用的碎纸机可以均匀的破碎纸片,并且不使图片破损,不考虑镜头畸变;5. 假设碎纸的纸粒工整利落,对同一张纸采用同一个碎纸机,中间不间断的切割纸张;(四) 符号说明第一问:相关系数:碎纸片二值化矩阵:碎纸片灰度矩阵行数:碎纸片灰度矩阵列数:碎纸片张数:碎纸片灰度矩阵:碎纸片边缘对比矩阵:图片的匹配顺序:人工干预得到的首张图片第二问:碎纸片灰度矩阵:碎纸片二值化矩阵:标志位:三维矩阵中的页数,即碎纸片数:二值化碎纸片的第一列:二值化碎纸片的最后一列:二值化碎纸片的第一行:二值化碎纸片的最后一行:图片的匹配顺序第三问:碎纸片左边缘的二值化矩阵:碎纸片右边缘的二值化矩阵:碎纸片上边缘的二值化矩阵:碎纸片下边缘的二值化矩阵:碎纸片左右边缘的二值化矩阵:碎纸片上下边缘的二值化矩阵:左右边缘的对比矩阵:上下边缘的对比矩阵:左右边缘匹配的得出的可以连通的图片排序:上下边缘匹配的得出的可以连通的图片排序:可以连通的图片排序注:在此没有设定的符号下文中会具体说明 (五) 模型建立与求解5.1 问题1的模型建立与求解附件1、2所给碎纸片都是纵切而成,几何形状相似,仅考虑纸片左右两条纵边。进行拼接复原的主要方法是求出纸片各纵边间的相关系数,相关系数越大则说明这两条边临近。先将给定各图片二值化,得到一个数值矩阵,共1980 72 个数值(见附件1),然后取每个矩阵的第一列和最后一列作为碎纸片的左边缘的数值,共38列,利用这38列数据构造一个对比矩阵。然后计算各边点之间的相关系数(corrcoef),最后得到个边点之间的最大的相关系数。,其中表示矩阵的协方差矩阵。碎纸片灰度矩阵:二值化处理方案:用MATLAB编程计算最大相关系数的程序:T=zeros(38,38); %构成对比矩阵,计算每两个图像边缘之间相关系数;for i=1:2:38 for j=2:2:38 if i+1=j j=j+2; end if j=40 break end P=corrcoef(p(:,i),p(:,j); %corrcoef(x,y)%表示序列x和序列y的相关系数 T(i,j)=P(2,1); endend得到两张图片,的最大相关系数,那么第张图片和第张图片就是相邻的。根据这个原则找出所有不同碎纸图片两两个匹配的序号,然后进行人工干预,确定第一张图片的序号,再以第一张图片为根据与后面的图片进行逐步匹配,最终找到碎纸图片的排序。图片000.bmp与图片001-018.bmp的相关系数如下表:表1:附件1碎纸所求相关系数:0010020030040050060070080090100110120130140150160170180000.190.190.150.100.070.280.240.140.090.100.100.170.000.180.200.000.230.09表格的折线图如下:由图中我们可以明显的看出碎片000与碎片007的相似性最强,故碎片000的右边与碎片007的左边相匹配,碎片000与碎片018以及其余的明显不匹配,其中不相连的区域为不成相关性或者相关性较弱。图1:第一张图片的匹配图片及不匹配图片根据以上方法编写程序4(代码见附录),得到图片的排列顺序C,程序输出结果如下:=8141215310216145913181171706 再根据运行出的图片的排列顺序,用软件对碎纸片进行拼接显示,附件1、2中碎纸片复原结果以图片形式(见附录)及表格形式表达如下:表2:附件2碎纸所求相关系数:0010020030040050060070080090100110120130140150160170180030.090.0910.100.070.380.240.120.190.100.130.170.400.180.200.100.230.09由图中我们可以明显的看出碎片003与碎片006的相似性最强,故碎片003的右边与碎片006的左边相匹配,碎片003与其他的碎片明显不匹配,其中不相连的区域为不成相关性或者相关性较弱。根据以上方法编写程序4(代码见附录),得到图片的排列顺序C,程序输出结果如下:=36271518110519131081214 1716 4有匹配结果可知碎片003的右侧边缘与碎片007的左侧边缘相匹配,不与其他碎片匹配。表2:附件1中碎纸片的复原顺序,从左至右的顺序。008014012015003010002016001004005009013018011007017000006表3:附件2中碎纸片的复原顺序,从左至右的顺序。003006002007015018011000005001009013010008012014017016004在复原过程中,为了简化过程,需要进行人工干预。首先可以人工判定第一图片,然后再以两个图片为单位进行完全匹配,最终找到碎纸图片的排序。 纵切碎纸片复原算法步骤:利用的函数将碎纸图用来读取;利用将碎纸片信息转为数字信息,其中1代表空白的位置,0代表黑色位置,形成0和1组成的矩阵p;求取每两张图片左右边缘之间的相关系数,根据最大相关系数确定与之相邻的图片;使用函数按顺序显示图像即可完成碎纸图片的还原。图1:方法1中的流程图5.2 问题2的模型建立与求解考虑碎纸机既纵切又横切的情形,借鉴问题一中的用相关系数确定图像之间的匹配关系的方法,对既纵切又横切的碎纸片进行拼接复原。 首先读取附件3、4中的图像,并将各图片二值化,获取各张图片每条边的二值化数据,同时考虑各像素点的连通性。将第一行和最后一行二值化数据作为上下边缘的匹配的依据,进行第一轮匹配,得出不完整的匹配碎纸图片结果。然后在第一轮匹配结果的基础上进行第二轮匹配,即第一列和最后一列二值化数据作为依据进行左右边缘的匹配,直至完成整幅碎纸片的匹配。 既有纵切又有横切碎纸片的复原算法步骤:获取二值图像左上角的像素,由于是第1个扫描的像素,无需考虑相邻点连通性,也无需考虑记录等价对问题; 用读取各张图片,并进行二值化处理;获取二值图像最后1列(最右列)的像素,需要考虑左、左上、上3个相邻像素的连通性;获取二值图像第1行(最上行)的像素,只需考虑左相邻像素的连通性,无需考虑记录等价对;获取二值图像左上角的像素,由于是第1个扫描的像素,无需考虑相邻点连通性,也无需考虑记录等价对问题; 第一行和最后一行二值化数据作为上下边缘的匹配的依据,进行第一轮匹配,得出不完整的匹配碎纸图片结果;图2:方法二过程中的流程图根据以上算法步骤编写程序(代码见附录)。 复原过程同样需要人工干预,通过人工筛选出最左边的第一张图片,然后根据第一张图片进行逐步匹配,直到匹配完成还原出原图。附件3、4中碎纸片复原结果以图片形式(见附录)及表格形式表达如下:表4:附件3中碎纸片的复原顺序,从左至右的顺序。049054065143186002057192178118190095011022129028091188141061019078067069099162096131079063116163072006177020052036168100076062142030041023147191050179120086195026001087018038148046161024035081189122103130193088167025008009105074071156083132200017080033202198015133170205085152165027060014128003159082199135012073160203169134039031051107115176094034084183090047121042124144077112149097136164127058043125013182109197016184110187066106150021173157181204139145029064111201005092180048037075055044206010104098172171059007208138158126068175045174000137053056093153070166032196089146102154114040151207155140185108117004101113194119123表5:附件4中碎纸片的复原顺序,从左至右的顺序。1910750111541901840021041800641060041490322040650390671472011481701961980941131640781030910801010261000060170281460860511070290401581860980241171500050590580920300370461270191940931410881211261051551141761821510220572020711650821591390011290631381530530381231201750850501601870972030310200411081161360730362071350150760431990451730791611791432080210070490611190331421680621690541921331181891621971430700840600140681741371950080471721560960230991220901851091321810950691671631661881111442060031300340131100250271781710420662050101570741450831340550180560350160091831520440810771282001310521251401931930870890480720121770001021155.3 问题三的模型建立与求解5.3.1方法1:考虑到此问题中的附件5是纵切和横切而成的碎纸图片而且是双面的,所以必须读出每一张碎纸图片的上下左右四条边的数值,才能进行匹配处理,而且匹配的过程必须先进性正面的匹配在进行反面的匹配。把读出每一张图片的二值数值放入到一个三维矩阵中,构建、四个矩阵分别存放每张碎纸图片左右上下边缘的二值化数据,取出每张图片的二值化的数据的第1行、第180行、第1列和第72列作为上下左右边缘的数据。把左边缘和右边缘二值化的数据放到矩阵,再把上边缘和下边缘化的二值化数据放到矩阵,然后再构造两个对比左右边缘矩阵和上下边缘矩阵。运用求出矩阵T1和T2的相关系数,即是图片之间左右边缘的相关系数和上下边缘之间的相关系数。根据相关系数的求出匹配的两张图片的序号,最后根据所排列的序号,我们才用的方式显示碎片复原图像。由问题1、2、3我们知道所有碎纸图片都用于拼接还原出原图,所有我们确定没有不能复原位置的碎片。既有纵切又有横切双面碎纸片的复原算法步骤:运用求出矩阵和的相关系数,即是图片之间左右边缘的相关系数和上下边缘之间的相关系数;根据相关系数的求出匹配的两张图片的序号;用读取附件5中每张图片,并将其二值化;获取每张图片各边的二值化数据,并构造两个对比左右边缘矩阵T1和上下边缘矩阵;先确定第一张图片的序号,然后根据第一张图片进行逐步匹配,直到匹配完成还原出原图正面;第一行和最后一行二值得出正面碎纸图片的顺序后,再把复原图片的第一列和最后一列,第二列和倒数第二列.依次进行交换,就可以得到反面的复原图像化数据作为上下边缘的匹配的依据,进行第一轮匹配,就可以得到反面的复原图像将得到的两面的序号进行组合,就可以看到原图图3:问题3过程中的流程图 表6:附件5正面排序,从左至右的顺序136a047b020b164a081a189a029b018a108b066b110b174a183a150b155b140b125b111a078a005b152b147b060a059b014b079b144b120a22b124a192b025a044b178b076a036b10a089b143a200a086a187a131a056a138b045b137a061a094a098b121b038b030b042a084a153b186a083b039a097b175b072a093b132a087b198a181a034b156b206a173a194a169a161b011a199a090b203a162a002b139a070a041b170a151a001a166a115a065a191b037a180b149a107b088a013b024b057b142b208b064a102a017a012b028a154a197b158b058b207b116a179a184a114b035b159b073a193a163b130b021a202b053a177a016a019a092a190a050b201b031b171a146b172b122b182a040b127b188b068a008a117a167b075a063a067b046b168b157b128b195b165a105b204a141b135a027b080a000a185b176b126a074a032b069b004b077b148a085a007a003a009a145b082a205b015a101b118a129a062b052b071a033a119b160a095b051a048b133b023a054a196a112b103b055a100a106a091b049a026a113b134b104b006b123b109b096a043b099b 表7:附件5背面面排序,从左至右的顺序078b111b125a140a155a150a183b174b110a066a108a018b029a189b081b164b020a047a136b089a10b036a076b178a044a025b192a124b22a120b144a079a014a059a060b147a152a005a186b153a084b042b030a038a121a098a094b061b137b045a138a056b131b187b086b200b143b199b011b161a169b194b173b206b156a034a181b198b087a132b093a072b175a097a039b083a088b107a149b180a037b191a065b115b166b001b151b170b041a070b139b002a162b203b090a114a184b179b116b207a058a158a197a154b028b012a017b102b064b208a142a057a024a013a146a171b031a201a050a190b092b019b016b177b053b202a021b130a163a193b073b159a035a165b195a128a157a168a046a067a063b075b167a117b008b068b188a127a040a182b122a172a003b007b085b148b077a004a069a032a074b126b176a185a000b080b027a135b141a204b105a023b133a048a051b095a160b119a033b071b052a062a129b118b101a015b205a082b145a009b099a043a096b109a123a006a104a134a113a026b049b091a106b100b055b103a112a196b054b5.3.2 方法二考虑到图片数量比较多,人工干预工作量繁重,设计一种能够实现自动拼接复原的方法。首先将图片读入附件各张图片,然后采用Harris算子6提取各张图片的角点。Harris算子是信号角点角点特征提取算子,计算简单,提取角点特征均匀合理,可以定量提取特征点且算子稳定。Harris角点检测算法的原理如下:假设图像的亮度值为,窗口模板经过微小偏移后,像素点的亮度变化记为,则,其中:,分别为像素点沿的导数。对于存在角点的区域,矩阵的两个特征值都比较大,在任何方向平移,都会增加,由此定义角点响应函数一般,特征点为大于某一阈值且在某领域内取得局部极值时所对应的点。Harris角点检测出角点效果如下图。 图2 Harris角点检测 图3 RANSAC算法匹配的两张相邻图片通过Harris角点检测提取的特征点会有冗余点存在,为有效去除冗余点,接着采用随机抽样一致性(RANSAC)算法7进行图像的匹配。RANSAC算法是根据一组包含异常数据的样本数据集,计算出数据的数学模型参数,得到有效样本数据的算法。RANSAC算法的基本假设是样本中包含正确数据,也包含异常数据,这些异常数据可能是由于错误的测量、错误的假设、错误的计算等产生的。同时,RANSAC也假设给定一组正确的数据,存在计算出符合这些数据的模型参数的方法。根据RANSAC算法的思想,将Harris角点检测算法获取的图像角点数据作为一组观测数据,把图片四条边上的数据作为解释观测数据的优化模型,然后反复选择数据中的一组随机子集来达成目标。若被选取的子集被假设为局内点,并用下述方法进行验证8:(1) 有一个模型适应于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。 (2) 用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点。 (3) 如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。 (4) 然后,用所有假设的局内点去重新估计模型(譬如使用最小二乘法),因为它仅仅被初始的假设局内点估计过。 (5) 最后,通过估计局内点与模型的错误率来评估模型。 根据以上思想进行图像特征点的匹配效果如图3。如果两幅图像能有匹配点存在说明是相邻的。确定出相邻图像的序号后再进行图像的拼接融合。由于图片之间没有重合的区域,所以直接根据所得到的顺序,在MATLAB上显示即可。拼接效果的图片形式(见附录)及表格形式表达如表7。该方法拼接复原的算法步骤:根据排序,在MATLAB软件中显示出碎片的原图。根据匹配图片的顺序,在MATLAB软件中显示出排序。用RANSAC算法,对所有图像进行自动匹配;用读取每张图片,并且灰度处理;用Harris角点检测算法检测每张图片的角点;(六)模型的改进与推广对于问题1的所采用的排序及拼接方法,主要是采用图像的二值化数据进行相关系数的计算,然后根据相关系数的大小确定相匹配的边。在处理过程中需要人工干预确定第一张图片,然后再两两匹配。如果图片数量比较多的情况需要进一步建立合适的数学模型及算法。对于问题2所建立的模型,仍然是采用问题1中的相关系数的方法确定各张图片四边的匹配边。在此过程中由于多考虑了横切,所以数据较多,匹配难度增加,这就需要建立更为合理的模型。针对问题3,对于双面打印文件碎纸片的拼接问题,结合前面两个问题的算法进行复原。先将碎纸片正面复原出来,然后再设计算法将正面从左至右的第一列与最后一列进行交换,第二列与倒数第二列进行交换,依次类推,直至交换完毕,就会得到反面的纵切形式的排列顺序。这种方法仍然对较大数量的图片难以很快处理,这就需要设计一种能够自动识别的算法,最好可以编程实现这个算法。本模型的优点:1、 可以利用matlab直接读取图片的灰度值,数据读取比较方便;2、 利用相关碎纸图片的边缘的相关系数进行匹配,准确率比较高;3、 算法过程容易理解,思路清晰,比较容易编程实现;4、 本文采用了数据来说明问题,具有较强说服力。本模型的缺点:1、将图片进行二值化,得出的图片精度不高,图片有些模糊;综上所述,本文所建立的模型都需要人工干预,难以很快实现较大数量碎纸片的拼接复原,所以需要以后进一步改进。(七)参考文献1 俞辉,侯在克,何旭莉,一种基于轮廓特征的图像拼接算法设计与实现J.石油大学学报(自然科学版),27(2): 114-118,2003.2 刘翠艳,基于MATLAB的图像处理方法及分析,学术探讨技术交流J.3 徐正光,鲍东来,张利欣,基于递归的二值图像连通域像素标记算法,计算机工程J.24:186-188,2006.4楼顺天,姚若玉,matlab7.x程序设计语言M.西安:西安电子科技大学,2007.5 姜启源、谢金星、叶俊,数学模型M.北京:高等教育出版社,2011.6 侯艳杰,曹杰,一种基于Harris角点特征的图像拼接方法J.信息化研究,36(10),23-25,2010.7 李冬梅,王延杰,一种基于特征匹配的图像拼接技术J.图像处理,24(53):296-298,2008.8附录:附件1碎纸图片拼接代码:i=(0:18);numstr=num2str(i);numstr(numstr=32)=48;for m=1:19imgm=imread(0 numstr(m,:) .bmp);endp=zeros(1980,38);p(:,1)=im2bw(img1(:,1);p(:,2)=im2bw(img1(:,72);p(:,3)=im2bw(img2(:,1);p(:,4)=im2bw(img2(:,72); p(:,5)=im2bw(img3(:,1);p(:,6)=im2bw(img3(:,72);p(:,7)=im2bw(img4(:,1);p(:,8)=im2bw(img4(:,72);p(:,9)=im2bw(img5(:,1);p(:,10)=im2bw(img5(:,72);p(:,11)=im2bw(img6(:,1);p(:,12)=im2bw(img6(:,72);p(:,13)=im2bw(img7(:,1);p(:,14)=im2bw(img7(:,72);p(:,15)=im2bw(img8(:,1);p(:,16)=im2bw(img8(:,72);p(:,17)=im2bw(img9(:,1);p(:,18)=im2bw(img9(:,72);p(:,19)=im2bw(img10(:,1);p(:,20)=im2bw(img10(:,72);p(:,21)=im2bw(img11(:,1);p(:,22)=im2bw(img11(:,72);p(:,23)=im2bw(img12(:,1);p(:,24)=im2bw(img12(:,72);p(:,25)=im2bw(img13(:,1);p(:,26)=im2bw(img13(:,72);p(:,27)=im2bw(img14(:,1);p(:,28)=im2bw(img14(:,72);p(:,29)=im2bw(img15(:,1);p(:,30)=im2bw(img15(:,72);p(:,31)=im2bw(img16(:,1);p(:,32)=im2bw(img16(:,72);p(:,33)=im2bw(img17(:,1);p(:,34)=im2bw(img17(:,72);p(:,35)=im2bw(img18(:,1);p(:,36)=im2bw(img18(:,72);p(:,37)=im2bw(img19(:,1);p(:,38)=im2bw(img19(:,72);T=zeros(38,38);%构成对比矩阵,计算每两个图像边缘之间相关系数;for i=1:2:38 for j=2:2:38 if i+1=j j=j+2; end if j=40 break end P=corrcoef(p(:,i),p(:,j);%corrcoef(x,y)%表示序列x和序列y的相关系数 T(i,j)=P(2,1); endendtou=17;%人工干预,确定首张图片;C(1,1)=(tou-1)/2;for m=1:18i,j=find(T=max(T(:,tou+1);%返回矩阵中非零元素;y=(i-1)/2;C(1,m+1)=y;tou=y*2+1;m=m+1;endC;%根据得出的C的顺序,确定图片的排序;P=img9 img15 img13 img16 img4 img11 img3 img17 img2 img5 img6 img10 img14 img19 img12 img8 img18 img1 img7;imshow(P)附件1碎纸拼接代码运行的结果:附件2碎纸图片拼接代码:i=(0:18);numstr=num2str(i);numstr(numstr=32)=48;for m=1:19imgm=imread(0 numstr(m,:) .bmp);endp=zeros(1980,38);p(:,1)=im2bw(img1(:,1);p(:,2)=im2bw(img1(:,72);p(:,3)=im2bw(img2(:,1);p(:,4)=im2bw(img2(:,72); p(:,5)=im2bw(img3(:,1);p(:,6)=im2bw(img3(:,72);p(:,7)=im2bw(img4(:,1);p(:,8)=im2bw(img4(:,72);p(:,9)=im2bw(img5(:,1);p(:,10)=im2bw(img5(:,72);p(:,11)=im2bw(img6(:,1);p(:,12)=im2bw(img6(:,72);p(:,13)=im2bw(img7(:,1);p(:,14)=im2bw(img7(:,72);p(:,15)=im2bw(img8(:,1);p(:,16)=im2bw(img8(:,72);p(:,17)=im2bw(img9(:,1);p(:,18)=im2bw(img9(:,72);p(:,19)=im2bw(img10(:,1);p(:,20)=im2bw(img10(:,72);p(:,21)=im2bw(img11(:,1);p(:,22)=im2bw(img11(:,72);p(:,23)=im2bw(img12(:,1);p(:,24)=im2bw(img12(:,72);p(:,25)=im2bw(img13(:,1);p(:,26)=im2bw(img13(:,72);p(:,27)=im2bw(img14(:,1);p(:,28)=im2bw(img14(:,72);p(:,29)=im2bw(img15(:,1);p(:,30)=im2bw(img15(:,72);p(:,31)=im2bw(img16(:,1);p(:,32)=im2bw(img16(:,72);p(:,33)=im2bw(img17(:,1);p(:,34)=im2bw(img17(:,72);p(:,35)=im2bw(img18(:,1);p(:,36)=im2bw(img18(:,72);p(:,37)=im2bw(img19(:,1);p(:,38)=im2bw(img19(:,72);T=zeros(38,38);for i=1:2:38 for j=2:2:38 if i+1=j j=j+2; end if j=40 break end %d=p(:,i)-p(:,j); %sum(d) %s=0; %for k=1:1980 %s=(d(k,1)-sum(d)./1980)2+s; %end P=corrcoef(p(:,i),p(:,j);%corrcoef(x,y)%表示序列x和序列y的相关系数,非对角线上的元素分别表示x与y的相关系数和y与x的相关系数 T(i,j)=P(2,1); endend%通过对数据分析,找出行均为NaN的那行,定义为最左边那列tou=7;m=1;C(1,1)=(tou-1)/2;for m=1:18i,j=find(T=max(T(:,tou+1);y=(i-1)/2;C(1,m+1)=y;tou=y*2+1;m=m+1;endC;%根据得出的C的顺序,确定图片的排序;P=img4 img7 img3 img8 img16 img19 img12 img1 img6 img2 img10 img14 img11 img9 img13 img15 img18 img17 img5;imshow(P)附件2碎纸拼接代码运行的结果:附件3 碎纸图片拼接代码:for k=0:208 baiwei=int2str(fix(k/100); shiwei=int2str(fix(k-100*fix(k/100)/10); gewei=int2str(mod(k,10); fname=,baiwei,shiwei,gewei,.bmp; A(:,:,k+1)=imread(fname);endfor i=1:209 im2(:,:,i)=im2bw(A(:,:,i);endflag=1;mm=1:209;for i = 1:209 temp=im2(:,1,i); for j=1:180 if(temp(j)=1) flag=0; break; else flag=1; end end if(flag=0) mm(1)=i; endends=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;for n=2:209 temp=im2(:,72,mm(n-1);for k=1:209 temp1=im2(:,1,k); if(j=mm(1) for m=1:180 if(temp(m)=temp1(m) s(k)=s(k)+1; end end endendends;for x=1:209 if(s(x)=max(s) mm(n)=x; endends=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;flag=1;mm=1:209;for h = 1:209 temp2=im2(1,:,i); for p=1:72 if(temp(p)=1) flag=0; break; else flag=1; end end if(flag=0) mm(1)=h; endendv=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;for q=2:209 temp=im2(180,:,mm(q-1);for r=1:209 temp3=im2(180,:,r); if(p=mm(1) for t=1:72 if(temp2(t)=temp3(t) s(r)=s(r)+1; end end endendv;for y=1:
展开阅读全文