图像定位-特殊物体(魔方定位)

说到计算机视觉,就不得不提卷积神经网络(CNN)了,图像分割、定位、识别他都及其擅长。由于最近才接触CNN,还不得要领,今天还是分享一下自己一个瞎捉摸的魔方机器人中的魔方定位的方法。
魔方机器人项目来源于本科的科研立项,当时的成功率不高,主要是光照的影响,还有就是做工差的爪子。现在想想,如果用聚类算法对魔方54个色块的颜色进行处理,岂不是可以完美的避免光照的影响。因为机器根本不需要知道色块是黄色还是红色,只需要把54块分成6堆,知道哪个和哪个是一家人,再把一家人复原就可以了。通过舵机旋转魔方,让摄像头采集色块信息,短时间内光照的影响是差不多,色块受到影响也是和同颜色的受到一致的影响。这样看来K-means聚类和魔方颜色简直是天造地设。连K值都不需要苦恼了,直接是6,下面进入正题。
想要对魔方进行定位,首先得将魔方和背景进行分离,如果背景简单,比如白纸,直接进行灰度变换二值化后就能够将魔方抠出来。背景复杂的话,如果是一般的生活背景,或者办公桌背景,那么简单的二值化的效果就要大打折扣了。这个时候我们就可以借助物体的边缘特性了,比如车牌定位的一般方法就是首先进行边缘提取,然后做多次的3*20大小的膨胀腐蚀操作,因为车牌上的字的边缘比较丰富,间距也不大。经过多次操作后,将整块车牌都为1,当然也会有其他区域有小块的残留。在进行xy方向的投影,就是遍历整个图像,数每一行、每一列为1的像素。得到两幅图在根据车牌的长宽比例就可以确定车牌的位置。但是魔方的边缘比较分散,不适应这种方法。于是我就琢磨魔方的特殊点,颜色、形状等。后来发现魔方的色块颜色比较饱满,换句话说就是颜色的饱和度高。这就成为一个切入点。用饱和度进行二值化,在和边缘提取的图像(二值)进行与。两者结合能够过滤较大部分的背景,留下的是魔方的完整边缘和小部分干扰边缘。之后就行边缘滤波,根据目标边缘的方向,比如水平、垂直、对角斜,十字型。滤波之后在根据魔方剩下的边缘之间的相对位置进行定位,计算魔方所在的行与列。这种方法虽然简单,就是不通用,换了一个物体就无法识别,得重新找出另一个物体的特征来。
总结一下
1、结合饱和度S与物体边缘进行背景分离
2、找出目标丰富的边缘类型反复滤波
3、相对位置法或xy方向投影定位行列
实验图像如下
在这里插入图片描述在这里插入图片描述

上图为实际的图像

在这里插入图片描述

上图为单纯的canny边缘提取

在这里插入图片描述

上图为饱和度S 二值化,由于魔方有白色色块,白色的饱和度很小,为了不损失白色的边缘,对图像进行膨胀操作。

在这里插入图片描述

上图为饱和度二值化后的膨胀处理后的图像

在这里插入图片描述

上图为 饱和度与边缘图像相与的图像,可以和单纯的canny边缘图对比,滤除了一些边缘,生活中大部分物体的色彩不会很饱满,色彩饱满的边缘通常不会很丰富,大多都是物体的外边缘,内部边缘较少。结合这两者,可以滤除大部分边缘,该图像是为了测试效果故意摆放的。自然场景下不会有如此多的干扰边缘存在。

在这里插入图片描述

上图为魔方的特殊边缘进行滤波后的图像。魔方的边缘纵横交错,中间相交的边缘很丰富。可以进行多次滤波还能保留较多的边缘。而且中间的边缘呈正方形分布,分布的特点可以进一步滤除其他干扰。

在这里插入图片描述
上图为初步定位特殊点的行列图像。依靠该点四周的边缘分布,计算距离进行区分。

在这里插入图片描述

上图为最后的效果图。确定特殊点后,根据上个步骤的距离进行左右,上下的平移。很庆幸魔方是分布均匀的正方形。当然视频图像每一帧检测的点上下左右会有稍微的跳动,可以做一个小的死区处理,左右上下跳变不超过2可以保留原值。这样基本上就可以做到恒定显示了。让我们来看看不同远近位置的效果
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

以上都是在FPGA上实现的,由于这个方法的不通用性,我就不贴代码了。如果有朋友需要,可以留下邮箱。另外在放一张魔方机器人的图
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值