http://cd.qq.com/a/20120506/000011.htm
这个新闻中提到的5万元的钞票被撕碎,要想重新拼接起来,方法很多,但难度都比较大。
下面是我想到的一种。各位程序员大虾看可行否。
第一步 取样,把碎片记录成一张张的图片。
1. 在一张纯色的桌子上铺满碎片,碎片不能重叠。用相机拍照。
2. 把照片的背景去掉,导出为一张张的小图片,图片名字为该碎片在照片里的坐标点。
第二步 图像识别
1. 识别出每张图片在钱币中的位置,标记周围一圈的坐标。(这一块还没有找到处理方式的细节,不过理论上肯定是可以的)
2. 把碎片坐标编号,和 周围一圈的坐标,存入数据库。
第三步 边缘识别
1. 取出一个碎片的数据,找到周围坐标中的一个点。
2. 从其他周围坐标数据中找相同的点,找到后,再次找这两个碎片中其他相同的坐标点,大于5个相同点的为可以拼接的两个碎片。(几个点根据坐标的精确度和实际情况确定)
3. 把这些相同点,存入另外一张表中,标记出坐标点,该坐标点是那两块碎片的。
4. 每次识别的目的就是找到一张可以拼接的纸币,当所有的重合点都找到以后(除了纸币本身周围的点)。认为一个纸币拼接完成。
5. 把识别完成一张的所有的重合点找到,第3步中记录的点。在一个坐标中画出所有的点,并标记出重合线是由哪两块碎片组成。
第四步 人工组合
1. 为了人工组合,需要准备的有:上一步得到的重合点组成的拼接图;每张碎片在最初照片中的位置坐标;
2. 由碎片的坐标位置,把组成一张人民币的所有碎片找到,按照拼接图拼接。重合线上会提示是哪两块碎片的线,方便拼接。
3. 找那种比较宽的透明胶带,粘在拼接好的纸币上。
重复第三步和第四步。可以找到一张张的人民币。