利用颜色表进行图像预处理1:OpenGl显示三维颜色表

本文介绍了如何在仿人足球比赛中利用颜色表进行图像预处理,强调了预处理在视觉识别中的重要性。通过人工采集颜色创建颜色表,将不同颜色标记并存储在colorTable中。在OpenGL环境中,展示RGB三维模型以观察颜色分布。作者分享了如何使用OpenGL显示三维颜色空间,并提供了程序实现,允许用户通过鼠标旋转视角。
摘要由CSDN通过智能技术生成

在学习SPL世界冠军B-Human的框架程序和具体实现中觉得我们与世界冠军相差的太远了。即使是北京大学功夫队(参见http://www.mech.pku.edu.cn/robot/fourleg/cn/index.htm)与世界顶尖队伍相差的也很多。北大功夫队在代码量、代码结构、效果上都没有世界一流队伍的好。这和我们整个国家的教育体制,培养方法都有关系。我等P民能做的就是尽自己一份微薄之力。

在B-Human里,图像的预处理是利用Colortable的。预处理做好了才有后面的高效的识别。视觉毫无疑问是仿人足球比赛的最重要的基础。所以如果你是做仿人机器人或者是以视觉为主导的机器人,预处理一定要做好了。切勿急躁。接下来,是产生颜色表的一个准备工作:颜色表中的几类颜色显示在一个RGB三维模型中。这样做我认为有一个好处是你可以观察到所学习的几类颜色在RGB空间中所占的位置、数量以及它们是否有交叉。

在这里阐述一下利用颜色表进行预处理的工作原理(以足球比赛为背景加以举例说明)。首先需要人工采集颜色形成颜色表(colorTable[256][256][256] ),具体就是先通过机器人的摄像头采集场地图像,然后确定将要你选的颜色,比如绿色(可以把绿色标记为1),接下来点击图像上的绿色,假设你点击的同时就获取了你所点击处的像素值RBG(210,201,30)。那么这样赋值 colorTable[210][201][30] = 1;这个像素点的颜色就被标记到颜色表中了。 采集绿色的多种情况(毕竟由于摄像头,光线等原因造成颜色像素的改变)。当然只是这样并不够,你还需要进行扩展,例如你可以将colorTable[211][201][30] 直接赋值为1。然而在RGB空间中表现不出颜色的色相,也就是你不能直接通过修改RGB值来找到与其相似的颜色,以后再讨论。同理你可以将红色定义为2,学习红色。最后你的颜色表中,即colorTable[256][256][256],其实元素的值为0或者1或者2.

利用颜色表进行预处理。建立好了颜色表处理起来就简单了。将处理的图像中的每一个像素点的RGB值取出来作为索引。如图像的第一个像素的的RGB值为(140,32,52,)。那么查看 colorTable[140][32][52]的值为多少,如果为1,那么这个像素点就为绿色,如果为2就为红色,如果是0颜色未知。当然这个颜色表可以包含多种颜色,在SPL中有7中之多。

好了,闲话少说,看看怎样用OpenGl显示三维立体空间,并在空间中显示颜色类型。我所使用的的环境为 Win7+VS2008+OpenGl。OpenGl的配置见http://www.360doc.com/content/10/1127/16/1393127_72890611.shtml 。程序可以使用鼠标拖动三维立体旋转。(程序来自网络经过个人修改)。


                
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值