关于B题:' ^6 W; v* k1 N8 J' R# D) W" s- A% T, b
1,第一问简单,每张碎片都对应着一个灰度矩阵,大致思路是提取每个灰度矩阵的左右边缘向量,通过计算两个矩阵的边缘向量的差向量的2-范数,则2-范数最小的那一组匹配。算法是:1,先找第一张碎片(第一张碎片的灰度矩阵前几列的元素都是255,容易找到)--------2,假设前 i 张碎片已连接好,则提取第 i 张碎片矩阵的最后一列向量Ai(i>=1且i<=19),从未匹配的碎纸片中提取它们的第一列向量Bj(j>=i+1且j<=20),求其差向量Ai-Bj的范数,使Ai-Bj的范数最小的Bj所在的碎片矩阵就是与第 i 张纸片连接的,,用matlab编程很快就能得到结果(中英文均用此法,速度快,且无人工干预)。% F. K$ j) r- `, f# C) d: i$ C u& H) t2 h9 k
2,第二问大体思路是先根据纸片特征对11*19张纸片进行分类,分成11组,每组19张;然后每组里面的19张纸片进行连接;最后是11组纸片进行连接。对中文以行基线为特征进行分组,因为中文文字规则,这个好求;而对英文,字母不规则,则是进行模式匹配(以出现频率高的字母为模板,对每张纸片进行匹配),然后得到行基线。分组后就是按问题一的思路来做。值得注意的是,问题二中分组后可能边缘是空白的,还有行间距的约束。我们做的结果是中文全自动,英文还需少许人工干预。 {) g" l/ c' y5 f' E0 G9 R% {3,第三问和问题二的英文的思路差不多,不过有一点需要注意,标有a的图片不全是在同一面,标有b的图片不全是在同一面,也就是说每面既有a也有b。新增加的约束是一旦一面的一组排好后,背面也排好。思路就是这样。。 + Z: m. `/ h& } L8 \7 ^ f9 g1 E# g