硬币检测系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对于图匹配来说,只要设定阀值后,对整图进行匹配,满足阀值要求的都为匹配的硬币。 而对不含邻域信息的特征需引入特征间的联系,不论是局部的还是总体的,可以简单的令每 次匹配在一个小区域中进行,可以通过在场景中的边检测结果的物体包围盒划定匹配区域, 对于硬币来说可以先做个圆检测来划定区域; 方案 2:
可以反向进行检测,即先检测出场景中的圆后,在将每个圆区域与硬币模版进行匹配, 选择最佳的匹配模版。
方案 1 的缺点就是忽略了特征点之间的联系,因此可以在特征匹配的时候同时考虑特 征间的连续性约束,最后也是计算特征匹配的个数来标定最佳匹配。
方案 3: 在方案 2 基础上,选的一个阀值匹配数,只要Hale Waihona Puke Baidu部区域特征匹配超过这个阀值则认定为
模版所匹配的硬币。 方案 3:
构建层次特征结构,选择合适的特征形成语义结构 对设计问题 3: 方案 1:
硬币检测系统
一、系统设计
设计思路: 1 先对一角、五角、一元的硬币的正反两面提取特征生成 6 个供匹配的模版 2 循环的的将这 6 个模版与场景的特征进行匹配,选择最佳的匹配模版,从而检测出硬币
设计问题: 1 如何选择特征 2 如何标定最佳匹配,是否对遮挡有鲁棒性 3 如何解决对于多目标匹配问题
解决方案: 对设计问题 1: 方案 1:
四、总结:
本文主要工作是提出了几种硬币检测系统设计方案,并实现了其中最简单的一种检测方 案。
附:程序使用说明 程序运行时就开始对第一个图像进行匹配,生成灰度图、canny 图、轮廓线图和目标区
域图,并在控制台输出图像所含的硬币名 在目标区域图激活的情况下,按 ESC 退出,按 Enter 做下一图的匹配,图像循环匹配。
Step6:在包围图中检测硬币的边界并生成包围盒
Step7:将处于包围盒中的原图的特征与 6 个硬币模版进行匹配,选取最佳匹配模版(即 匹配特征数最多的)。对于一元硬币“元”被遮挡的情形,若单从特征上识别,可能会被误 判为一角,这种情况下可以通过比较场景中圆的大小来判断。
三、结果分析:
本系统实现的关键就是圆的检测以及特征的生成,而这些都是调用 OpenCV 的函数, 其函数参数设定为人为调整缺少自动性。虽然对简单场景的单目标匹配来说效果还行,但是 OpenCV 实现的圆的检测对于场景复杂的图像所得的效果并不理想,并且且在图像中特征不 明显的时候 SURF 可能没有做到正确的匹配,这些都使得该系统在多目标匹配时的鲁棒性不 强。
只是简单的选择角点作为特征要素,具体的特征是由这些角点的空间分布来组织的,即 在测出角点之后,将这些点根据邻近信息,选择合适的阀值,小于阀值的点进行连线生成一 个特征图,从而将特征匹配问题规约到子图匹配问题。
对设计问题 2: 方案 1:
简单的根据模版的特征与场景中的特征匹配的数量来衡量匹配的好坏。 方案 2:
由于 opencv 实现 SURF 特征的提取,可直接调用 cvExtractSURF 来提取 SURF 特征。 方案 2:
选择图像中的曲线特征,可以参考几何处理中的积分不变特征(如下图),其中 B(P)表 示圆与图像物体区域所交面积,S(p)表示圆与图像物体区域所交的弧长。
在此,可以将圆被图像曲线所分的两部分的面积相除生成特征值(统一取大 1 或小 1 的为特 征值),或取曲线在圆内所占得像素值作为特征。为了满足对 scale 的鲁棒性,对于原图像可 以采用不同层次的圆来生成多尺度的特征(通过改变半径大小)。 方案 3:
二、系统实现:
效果图
算法步骤: Step1:提取 1 角、5 角、1 元硬币正反面得到 SURF 特征作为模版 Step2:将原图转成灰度图 Step3:做个高斯模糊以降低噪声
Step4:提取 canny 边界生成 canny 图
Step5:由于中间有太多的轮廓线,无法直接用此 canny 图做圆检测,为此用一个 Aperture*Aperture 的模版做泛洪来生成它的包围图
可以反向进行检测,即先检测出场景中的圆后,在将每个圆区域与硬币模版进行匹配, 选择最佳的匹配模版。
方案 1 的缺点就是忽略了特征点之间的联系,因此可以在特征匹配的时候同时考虑特 征间的连续性约束,最后也是计算特征匹配的个数来标定最佳匹配。
方案 3: 在方案 2 基础上,选的一个阀值匹配数,只要Hale Waihona Puke Baidu部区域特征匹配超过这个阀值则认定为
模版所匹配的硬币。 方案 3:
构建层次特征结构,选择合适的特征形成语义结构 对设计问题 3: 方案 1:
硬币检测系统
一、系统设计
设计思路: 1 先对一角、五角、一元的硬币的正反两面提取特征生成 6 个供匹配的模版 2 循环的的将这 6 个模版与场景的特征进行匹配,选择最佳的匹配模版,从而检测出硬币
设计问题: 1 如何选择特征 2 如何标定最佳匹配,是否对遮挡有鲁棒性 3 如何解决对于多目标匹配问题
解决方案: 对设计问题 1: 方案 1:
四、总结:
本文主要工作是提出了几种硬币检测系统设计方案,并实现了其中最简单的一种检测方 案。
附:程序使用说明 程序运行时就开始对第一个图像进行匹配,生成灰度图、canny 图、轮廓线图和目标区
域图,并在控制台输出图像所含的硬币名 在目标区域图激活的情况下,按 ESC 退出,按 Enter 做下一图的匹配,图像循环匹配。
Step6:在包围图中检测硬币的边界并生成包围盒
Step7:将处于包围盒中的原图的特征与 6 个硬币模版进行匹配,选取最佳匹配模版(即 匹配特征数最多的)。对于一元硬币“元”被遮挡的情形,若单从特征上识别,可能会被误 判为一角,这种情况下可以通过比较场景中圆的大小来判断。
三、结果分析:
本系统实现的关键就是圆的检测以及特征的生成,而这些都是调用 OpenCV 的函数, 其函数参数设定为人为调整缺少自动性。虽然对简单场景的单目标匹配来说效果还行,但是 OpenCV 实现的圆的检测对于场景复杂的图像所得的效果并不理想,并且且在图像中特征不 明显的时候 SURF 可能没有做到正确的匹配,这些都使得该系统在多目标匹配时的鲁棒性不 强。
只是简单的选择角点作为特征要素,具体的特征是由这些角点的空间分布来组织的,即 在测出角点之后,将这些点根据邻近信息,选择合适的阀值,小于阀值的点进行连线生成一 个特征图,从而将特征匹配问题规约到子图匹配问题。
对设计问题 2: 方案 1:
简单的根据模版的特征与场景中的特征匹配的数量来衡量匹配的好坏。 方案 2:
由于 opencv 实现 SURF 特征的提取,可直接调用 cvExtractSURF 来提取 SURF 特征。 方案 2:
选择图像中的曲线特征,可以参考几何处理中的积分不变特征(如下图),其中 B(P)表 示圆与图像物体区域所交面积,S(p)表示圆与图像物体区域所交的弧长。
在此,可以将圆被图像曲线所分的两部分的面积相除生成特征值(统一取大 1 或小 1 的为特 征值),或取曲线在圆内所占得像素值作为特征。为了满足对 scale 的鲁棒性,对于原图像可 以采用不同层次的圆来生成多尺度的特征(通过改变半径大小)。 方案 3:
二、系统实现:
效果图
算法步骤: Step1:提取 1 角、5 角、1 元硬币正反面得到 SURF 特征作为模版 Step2:将原图转成灰度图 Step3:做个高斯模糊以降低噪声
Step4:提取 canny 边界生成 canny 图
Step5:由于中间有太多的轮廓线,无法直接用此 canny 图做圆检测,为此用一个 Aperture*Aperture 的模版做泛洪来生成它的包围图