0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

硬币位置识别算法分析与设计

新机器视觉 来源:新机器视觉 作者:新机器视觉 2022-09-07 15:30 次阅读

利用图像处理技术,在50*50CM的区域内识别出5枚硬币(硬币位置任意),并且控制机械手逐一拾取5枚硬币,然后把5枚硬币逐一叠放到指定位置(指定位置随机)。

图像处理过程详解

——LabVIEWVision Assistant

硬币位置识别算法分析与设计

硬币的识别是本系统软件设计最为关键的一步,只有识别的稳定、精确才能控制机械手拾取硬币。硬币的最主要特征为圆形、银白色、直径约为25mm。设计识别算法时也是主要依据这几个特征进行选择相应的算法模块,才能很好的区分周围环境的杂物。处理的总思想:先采集含硬币的图片,进行一系列的滤波、分割、填补后把除圆形外的杂物排除,再用硬币模版搜索整幅图像来确定是否有和硬币一样大小的圆形。找到圆形后选择输出其中心坐标。下面详细介绍利用Vision Assistant来快速搭建识别硬币的算法,并输出像素坐标。

1.1导入图片

打开Vision Assistant并单击左上角的图片按钮,导入一幅图片。

9a061f40-2dc0-11ed-ba43-dac502259ad0.jpg

在图中我们可以看到五枚硬币,并且还有坐标轴、圆圈等杂物,总之现在的图像是杂乱的,如果用当前的图像直接去搜索硬币无法做到稳定,因为当光照等外部条件改变时背景的白色和硬币的白色在像素值上非常接近很难进行识别。为此在搜索硬币前必须进行一定的阀值滤波。把硬币外形显示出来,也就是靠颜色去匹配较难,但靠外形匹配容易而且稳定。

1.2转换RGB

9a13f476-2dc0-11ed-ba43-dac502259ad0.jpg

图片中的图像是RGB的,要先把图片转成单色的,这样更利于识别和后续算法的处理。在软件界面的左下部分的Processing Functions中单击选择Color。再选择Color Plane Extraction这一函数模块。

处理后我们看到硬币暗淡了许多,这样更有利于下一步的分割。

1.3阀值滤波

在Processing Functions中选择Groyscale,再选择Threhold。该函数的功能是选择阀值以内的图像并且用红色表示出来。如下图所示。

9a24ff64-2dc0-11ed-ba43-dac502259ad0.jpg

9a37e6a6-2dc0-11ed-ba43-dac502259ad0.jpg

在look for选择,默认是Bright Object,所以白色的背景变成了红色,也就是白色为选择处理的内容。硬币相对背景而言是较黑的,所以应该在此项选择Dark Object。

9a4705aa-2dc0-11ed-ba43-dac502259ad0.jpg

可以看到较黑的硬币变成了红色被选中,同时可以调节Threhold Range这一滑调控件来调节阀值,直到满足硬币被选中变红色这一要求为止。然后点击OK完成本步骤。这是点击OK后的效果图,

9a57d484-2dc0-11ed-ba43-dac502259ad0.jpg

图中除硬币外还有很多的杂物也被标注红色了,这是不希望看到的。

1.4移除小杂物

在processing function中选中Binary,再继续选中ADV.Morphology这一函数模块。这一函数包含移除小物体、大物体、补全图像漏缺等功能。进入界面后选中Remove small things ,选中后可以看到图中轴坐标上的阿拉伯数字被移除了。

9a69f83a-2dc0-11ed-ba43-dac502259ad0.jpg

1.5移除边缘杂物

再选择一次ADV.Morphology这一函数模块,再点击Remove border object。把图像中的边缘去掉,去掉后的效果如下图所示。

9a714360-2dc0-11ed-ba43-dac502259ad0.jpg

1.6补漏洞

再选择一次ADV.Morphology这一函数模块,再点击Full holes,从下图中可以看到,五枚硬币全部变为无漏洞的红色。至此五枚硬币的外形已经很完整的提取出来,下一步就是要判断这五个外形是不是要找的硬币。

9a8537e4-2dc0-11ed-ba43-dac502259ad0.jpg

1.7二值化图像

在processing function中选择grayscale中的lookup table这一函数模块。该函数的功能为把图像进行二值化处理,最后输出像素为0或1的图像,便于后续处理。在弹出的界面中选择equalize这一选项,可以看到图像立即变成了黑白图像。白色部分即为刚刚被红色标出来的硬币轮廓。

9a963490-2dc0-11ed-ba43-dac502259ad0.jpg

1.8查找圆形

这是整个图像处理中最为关键的一步,LabVIEW vision提供了很多方法来查找具有一定外形的物体,比如shape detection、pattern matching等函数。而本系统采用的是share matching这一函数,因为顾名思义这个函数的功能是根据给定外形去查找图像中是否有相同外形的物体。它的适应性更强更稳定。在processing functionz中选择share matching这一函数模块。

9a9fd194-2dc0-11ed-ba43-dac502259ad0.jpg

进入界面后单击create template,弹出选择界面,选择图中任意一个圆形作为识别的模版即可。然后单击finish,即可完成识别模版选择。

9ab13402-2dc0-11ed-ba43-dac502259ad0.jpg

模版选择好后,自动识别出五枚硬币,并且用绿色方框标注出来,下方显示的是对应的硬币的中心坐标。例如第一枚硬币的中心坐标在图中蓝色方形取阅,它的中心x坐标为235,中心y轴坐标是94。如下图所示。

9abd77f8-2dc0-11ed-ba43-dac502259ad0.jpg

到这一步硬币识别已经成功了,但是坐标还没有输出给LabVIEW程序框图,后续的电机控制也就无法进行。为此必须选择坐标输出给后续的VI。

1.9坐标输出

在右下方单击select controls这一控件,

9ac5df74-2dc0-11ed-ba43-dac502259ad0.jpg

进入界面后,再在Number of matchings和Shape report前打勾表示这两项内容为输出内容。最后电机Finish。

9ad59be4-2dc0-11ed-ba43-dac502259ad0.jpg

在程序框图中的最后为输出两个控件,一个是硬币数目,另一个是包含坐标信息的簇。至此,硬币识别的图像处理部分全部完成。

9aecbf86-2dc0-11ed-ba43-dac502259ad0.jpg

2.目标点识别算法分析与设计

目标点为一红色的长方块,它的识别与上一节介绍的硬币识别方法类似,只是第8步稍微有些差异,即把匹配的圆形改为方形即可。如下图所示。

9afadc60-2dc0-11ed-ba43-dac502259ad0.jpg

3.利用图像闭环控制机械手算法设计

之前介绍的图像处理算法最后输出的坐标为像素坐标并不是真实的物理坐标,这样对于后面的电机控制非常不方便,因此在设计控制算法前先要进行坐标换算。考虑到图像的长宽像素不一样(长为720,宽576,从图像的左下角处可以读出),因此必须分开单独标定,先标定x轴方向再标定y轴方向。分以下步骤进行。

1)x轴像素标定。

打开overlay这个函数模块,该模块的功能为文字标注并且自动显示出文字所在的像素坐标位置。任取尺子上的两点A、B,记下A在尺子上的刻度(选择110MM),从图中左下角位置直接读出像素坐标(690,286) (这个坐标是可以改变的,当这个坐标改变时图像中的文字的位置也会改变。为了便于计算,同时为了刻度的均匀性减少图像畸变带来的误差,在选点时尽量选择靠近图像左右边缘的点,如图中的A点很靠近右边而且刚好是整数110MM的刻度);再记下B在尺子上的刻度(250MM),从图中左下角读出像素坐标(53,286)。

9b106c60-2dc0-11ed-ba43-dac502259ad0.jpg

9b21ad86-2dc0-11ed-ba43-dac502259ad0.jpg

计算AB两点真实长度Lx=250-110=240mm,对应的像素坐标长度Lp=690-53=637。则可计算在x轴方向,每两个像素点的对应的实际长度Lpx=240/637=0.3767 mm/pix。

2)y轴的像素标定。

与x轴标定类似记录下y轴上的两点C、D坐标。如下面两张图所示,分别为C点刻度175mm,C像素坐标(284,27);D点刻度100mm,D点像素坐标(284,407)。

9b2c2900-2dc0-11ed-ba43-dac502259ad0.jpg

9b3e3a5a-2dc0-11ed-ba43-dac502259ad0.jpg

计算CD两点真实长度Ly=175-100=75mm,对应的像素坐标长度Lp=407-27=380pix。则可计算在y轴方向,每两个像素点的对应的实际长度Lpy=75/380=0.197 mm/pix。

3)建立坐标系。

以像素中心O(720/2,576/2)=(360,288)为原点,以x轴方向向右为正,以y轴方向向上为正建立xoy坐标系。则从图像处理后出来的像素坐标即可转换成真实的坐标。例如Z(x,y),则z的真实坐标Zx=(x-360)×Lpx=(x-360)×0.3767mm;Zy=(y-288)×0.197mm。

建立好坐标系后,在分析机械手的控制算法前,先分析下机械手控制模型。在下图中假设机械手平台上有一枚硬币A(x,y),则对应的在摄像头图像中的坐标为A’(x’,y’)。而当前时刻机械手上的电磁铁的位置在O’点。O’A’的距离即为要机械手与硬币的距离,也是要控制电机所走的距离,关于高度Z可暂时忽略。为了让机械手从O’点走到A’可以先把R轴伸长,再使θ轴转过一定的角度即可。

9b504d94-2dc0-11ed-ba43-dac502259ad0.jpg

在之前写的硬件设计(长着眼睛的机械手(六))中可以知道R轴上的步进电机的步距为0.01mm,则R轴步进电机脉冲数n=x’/0.01;但在实际调试中并不止控制一次电机,而是把x’作为反馈控制量去控制R轴的电机,只要x’>2mm,就一直输出脉冲n给步进电机,直到x’<2mm。

在控制地盘θ轴上与R轴不相同,因为底盘为直流电机控制。想直接通过控制直流电机来使转盘转到一定的位置是不可能,而且还有考虑到转盘齿轮的行程差。为此必须采用实时闭环的方法而且要用脉宽的长短来控制电机的转速。在小区域内可以用y’近似去代替O’与A’的角度差,再用y’去控制直流电机的驱动时间。Y’有正负电机也能正反转。直到y’<5为止。

整个控制方法的核心在于,不管x’和y’具体值是多少,只要机械手不在硬币的正上方(也就是x’y’大于某个值)就不断去驱动电机,直到机械手很接近硬币的正上方为止。在机械手走到硬币的上方后,再控制Z轴的步进电机使之下降一定的距离,再使电磁铁得电即可把硬币拾取。

控制机械手到目标方块的上方也是类似的思路,根据图像中方块的位置坐标进行反馈控制电机,直到坐标在一定的范围内。再控制Z轴下降,下降到一定的高度后再释放电磁铁使硬币放下。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件
    +关注

    关注

    67

    文章

    4350

    浏览量

    85625
  • 图像处理技术

    关注

    0

    文章

    21

    浏览量

    9966
  • 算法分析
    +关注

    关注

    0

    文章

    8

    浏览量

    7486

原文标题:图像处理——过程全解析,配图超详细!

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于单片机的硬币识别

    我想做一个基于单片机的硬币币值识别装置,识别模块可用什么方法实现啊?尽量不要用到传感器求高手解答~~~
    发表于 03-01 21:36

    硬币算法怎么写

    用压力传感器侧一些硬币的质量,通过什么算法能区分出每种硬币的个数以及金额的大小,小弟实在想不出来了,希望大家帮助帮助,给小弟我出一些招数,小弟在此感激不尽!
    发表于 09-04 23:43

    怎么用matlab实现对硬币识别与分类

    怎么用matlab实现对硬币识别与分类?需要用到哪些函数?求赐教。。。
    发表于 05-08 17:18

    硬币清点

    如何识别真假硬币?希望大家可以提供帮助,包括传感器选型、控制器选型等等,谢谢!
    发表于 08-15 22:28

    带有3D手势识别和手部位置追踪系统

    手势,并使用统计建模区分刻意手势和一般手部移动。 图 1: GestIC 算法通过分析准静电场扭曲来识别手势。MGC3030 在 32 位 DSP 内核上运行 GestIC 算法,并使
    发表于 07-03 09:40

    基于Qualcomm DSP算法集成分析与案例分享三

    一.简介这个系列博客博主给大家分享了基于Qualcomm DSP算法集成分析与案例分享,今天再给大家分享份干货----ThunderSoft公司基于Qualcomm msm8996平台的超声波姿势识别
    发表于 09-28 14:20

    加密芯片在人脸识别算法上的保护与应用

    人脸 , 如果存在人脸,则进一步的给出每个脸的位置、大小和各个主要面部器官的位置信息。并依据这些信息,进一步提取每个人脸中所蕴涵的身份特征,并将其与已知的人脸进行对比,从而识别每个人脸的身份。因为
    发表于 10-24 10:57

    LabVIEW使用Vision视觉识别硬币

    硬币是标准的圆形。2,利用粒子分析方法,直接二值化后,得到个体的面积。方法1:直接使用shape detection自动识别圆,但是要注意设定的参数问题,直接识别,会出现很多干扰,所
    发表于 02-28 19:29

    基于核函数的Fisher判别分析算法在人耳识别中的应用

    针对人耳图像自身的特点,并通过对现有生物识别技术的研究,本文尝试采用了一种基于核函数的Fisher 判别分析算法对人耳进行识别。该算法不仅可
    发表于 05-30 11:44 29次下载

    基于二级互补算法硬币鉴别系统

    电涡流式传感器在硬币识别中的应用,提出了一种基于单片机控制的互补型鉴别、识伪新算法。关键词: 电涡流式传感器互补算法硬币鉴别
    发表于 07-06 08:52 38次下载

    硬币翻面游戏电路

    硬币翻面游戏电路 硬币翻面游戏电路
    发表于 01-17 23:21 795次阅读
    <b class='flag-5'>硬币</b>翻面游戏电路

    变加减速算法位置伺服系统中的应用与分析

    变加减速算法位置伺服系统中的应用与分析
    发表于 05-04 14:37 10次下载

    DTW语音识别算法研究与分析_朱淑琴

    DTW语音识别算法研究与分析_朱淑琴
    发表于 03-19 11:26 5次下载

    基于数字特征的识别算法设计实现

    基于数字特征的识别算法其核心是通过对数字的形状以及结构等几何特征进行分析与统计,通过对数字特征的识别从而达到对图像中数字的识别
    发表于 04-13 16:39 1.1w次阅读
    基于数字特征的<b class='flag-5'>识别</b><b class='flag-5'>算法</b>设计实现

    成功的通过硬币接受程序避免松散的信号

    大多数硬币接收器都配有传感器来检测尺寸和金属成分的差异。一些特殊的硬币接收器使用视觉检测技术来识别不同硬币上的显着特征并单独注册它们。通常,这些方法足以精确
    的头像 发表于 07-26 09:51 2462次阅读