happytc
发表于 2012-5-8 09:24:44
昨天还准备发这个话题来着. 我的思路:
先对一张完整的人民币分别进行正反面扫描,并对每一面设置1000个标 ...
afan 发表于 2012-5-7 20:41 http://www.autoitx.com/images/common/back.gif
不用正反描了,因为只要识别了一面的图案和轮廓,反面的图案一定是确定的。
无非是识别的集合略大一点而已。
关键是得到程序的输入很不容易,输入输出耗费的成本将超过5万
afan
发表于 2012-5-8 09:43:26
本帖最后由 afan 于 2012-5-8 09:45 编辑
不用正反描了,因为只要识别了一面的图案和轮廓,反面的图案一定是确定的。
无非是识别的集合略 ...
happytc 发表于 2012-5-8 09:24 http://www.autoitx.com/images/common/back.gif
“先对一张完整的人民币分别进行正反面扫描”。这样,碎片只需扫描任意一面即可,不然你还得先识别正反面。
happytc
发表于 2012-5-8 10:02:24
回复 17# afan
说个题外话,其实你发现没有,每张百元钱上的安全线位置是不一样的
sanmoking
发表于 2012-5-8 10:08:04
我是没有什么好的想法,不过看了各位高手们的思路,觉得afan的比较靠谱,现在这个题目如果往深处考虑,我觉得应该还是无解,
1、正反面的问题可以用标准图找图来处理,扫描的图案000N跟标准100的正反面对比,用找图法,在标准正面找到图案,就算正面000NA,同时生成一个相对的背面图案000NB,在标准背面图中找到图案同理,不过这个问题实际操作需要解决各种年份100面值的图案差异,每张rmb套印的误差,每张rmb新旧程度的误差,每张rmb随机污迹的干扰。
2、拼接图案,编号之后的碎片库分为正面和反面,只需要其中一个库就可以了,先是第一张作为目标,后边依次跟第一张尝试拼接,拼接上之后,在库中去除已拼接的编号,两个图片合并为目标,继续从库中从前往后开始尝试拼接,直到这张rmb拼接完成,换下一张继续。拼接这个工作其实可以半人工操作,500张很快就能完成,程序来完成就有点工作量太大。
3、综上所述,最重要的就是第一步把扫描的文件整理成库,这个数量是随机的,大量的,不可预知的,第二步拼接的部分就是完成工作而已,没有太大难度。
sanmoking
发表于 2012-5-8 10:11:10
回复afan
说个题外话,其实你发现没有,每张百元钱上的安全线位置是不一样的
happytc 发表于 2012-5-8 10:02 http://www.autoitx.com/images/common/back.gif
那个其实是版本的问题,比如2000版和2005版什么的。。就是我楼上所说的【各种年份100面值的图案差异,每张rmb套印的误差,每张rmb新旧程度的误差,每张rmb随机污迹的干扰。】
sanmoking
发表于 2012-5-8 10:13:41
还有一个问题,电脑上拼好了,现实中也得拼好,银行才给兑,所以电脑上编了号,现实中也得编号,还得一致,成千上万的碎片编号存放,也是比较麻烦的。
kevinch
发表于 2012-5-8 10:16:39
如果能对撕碎边缘的曲线制订一个标识方式的话(比如类似经纬度,参考国际日期变更线),再用程序来配对就太容易啦
1、提取出曲线转换成数值序列;
2、根据序列算出一个校验和进行初匹配,缩小配对范围;
3、在初匹配结果中进行精确匹配,设定容错值,最终实现正确匹配。
相对而言,制订这个标识方式及校验和算法是个难点
afan
发表于 2012-5-8 10:17:38
回复 18# happytc
我想,先去色(灰度化),模糊匹配、合适的相似度是必须的,毕竟目标和源不是出于一处。
另外,鉴于本案的特殊化(非碎纸机处理的,每个碎片几乎有唯一的外形),也可以从轮廓(或单位面积)考虑,那样就完全不必考虑图案。
sanmoking
发表于 2012-5-8 10:32:12
百元大钞基本为红色的,可以在扫描的时候后衬反色背景,然后电脑进行轮廓读取,这个在验证码识别领域已经很熟练了,关键是角度问题轮廓拼接时的旋转角度问题。
wua0550
发表于 2012-5-8 21:37:26
我也说说我的~~
取碎币正面或背面扫描图的轮廓(无视图形内容),建立坐标系统~~
因为左直角位固定,可取得500份起点,再从上至下匹配与起点右侧轮廓相符碎片,直至取出右直角碎片为止,输出坐标.
kood481748
发表于 2012-5-8 22:50:30
我也来凑凑热闹~~~
百元钞票撕成碎片,必然有些碎片其中一个边缘是直线,有些碎片中包含一个直角或者多个直角,
有些碎片则不包含直线也不包含直角,
那么我们把碎片分为两类,包含直线或直角的为一类,不包含直线或直角的为另一类,
先取包含直角的碎片出来,然后从库中提取包含直线边缘的碎片来对比,成功则从库中删除该碎片编号,失败则放回库中,然后继续从库中提取包含直线边缘的碎片,先拼出一个包围,最后再来拼接不包含直线边缘的碎片。
lanfengc
发表于 2012-5-9 08:52:08
假设扫描的时候只扫描正面,以100元的完整版作为查找模型校正扫描后的图片
完整版图片如下:
例如这是一张扫描出来的碎片
扫描出来的图片,多少都有点旋转,需要根据完整版对比校正。
当从完整版图片找到这个碎片经过旋转后的部分时候,停止旋转校正,然后将这个碎片的边界以左下角为原点的坐标(X,Y)写入这个碎片编号对应的库中,写入的时候就要区分好上边界,下边界,右边界。例如 编号0001--1,2.......x,y
查找的时候,将含有完整版左下角的碎片用特殊编号区分出来比如1001-x1,y1......xn,yn
库创建结束后(也就是所有的碎片都经过了校正和边界写入库)
下面,将某个特殊碎片记为a, 其他碎片记为b
以任意一个a为基础,以a的左下角为原点,查找库中含有坐标为a的右边界坐标和上边界坐标的那个碎片,然后组成新的底图。
然后,再查找a的右边界的x+b的右边界的x ,b的右边界y组成的边界信息在库中对应的碎片,然后依次类推,指导底图宽高等于完整版的人民币的宽高。
将碎片编号及组合顺序输出即可。
huangke
发表于 2012-5-9 09:25:09
给我拼吧,我只要三分之一就好,哈哈
hzxymkb
发表于 2012-5-9 09:29:28
{:face (301):}这个居然可以用编程来完成!厉害!快联系一下银行,帮帮那个人吧!
ooxxgod
发表于 2012-5-9 09:51:17
这个可以扫描的吗 那么强啊