搜索
bottom↓
回复: 551

在stm32上实现颜色跟踪

  [复制链接]

出0入17汤圆

发表于 2012-9-28 21:53:40 | 显示全部楼层 |阅读模式
EasyTrace简介:
使用EasyTrace可以对单一颜色物体进行实时跟踪识别

EasyTrace特点:
1.代码只有300行,非常简单
2.识别一次只需要2至5毫秒,实时性强
3.只有1个API,使用方便
4.可配置”容错率“ ”迭代次数“等参数,可在”时间“实时性”“ ”准确度“ ”识别率“ ”误识率“ 之间寻找平衡点

使用举例
RESULT Resu;
TARGET_CONDI Condition={60,100,20,120,10,160,40,40,320,240};
Trace(&Condition,&Resu);

视频中使用的是 stm32f103vet6 和   ILI9341的液晶驱动芯片 以及 王工的OV7670带FIFO的摄像头
http://v.youku.com/v_show/id_XNDU1ODM4NzY4.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入17汤圆

 楼主| 发表于 2013-3-7 09:21:04 | 显示全部楼层
更正一处bug:easytrace.c文件中第81行修改为s = (difVal)*240/(511 - (maxVal+minVal));

出0入17汤圆

 楼主| 发表于 2013-5-19 11:25:11 | 显示全部楼层
多目标跟踪演示:)
http://v.youku.com/v_show/id_XNTU4OTU3NTk2.html
http://v.youku.com/v_show/id_XNTU4OTU4NzI4.html

出0入17汤圆

 楼主| 发表于 2013-5-23 23:45:59 | 显示全部楼层
http://v.youku.com/v_show/id_XNTYxMTA1ODgw.html
编码颜色块的识别,不同的颜色框表示识别到不同的目标。编码颜色块的识别比单色块的识别抗干扰能力更强些,同时可以编码出更多的目标。

出0入0汤圆

发表于 2012-9-28 21:59:12 | 显示全部楼层
楼主讲解下如何实现的吗?

出0入0汤圆

发表于 2012-9-28 22:00:05 | 显示全部楼层
顶LZ,比较猛

出0入0汤圆

发表于 2012-9-28 22:15:44 | 显示全部楼层
从屏幕读取连续的像素值的RGB来判断?

出0入17汤圆

 楼主| 发表于 2012-9-28 22:15:56 | 显示全部楼层
lanyuye 发表于 2012-9-28 21:59
楼主讲解下如何实现的吗?

原理很简单:先遍历寻找腐蚀中心,然后在腐蚀中心处进行迭代。

出0入17汤圆

 楼主| 发表于 2012-9-28 22:16:47 | 显示全部楼层
niba 发表于 2012-9-28 22:15
从屏幕读取连续的像素值的RGB来判断?

RBG效果不好需要转成HSL

出0入0汤圆

发表于 2012-9-28 22:33:25 | 显示全部楼层
收藏鸟,顶顶更健康

出0入0汤圆

发表于 2012-9-28 22:44:50 | 显示全部楼层
实现的很好,而且代码非常规范

出0入0汤圆

发表于 2012-9-28 22:47:44 | 显示全部楼层
学习,mark

出0入0汤圆

发表于 2012-9-28 23:02:54 | 显示全部楼层
学习咯!

出0入0汤圆

发表于 2012-9-28 23:23:26 | 显示全部楼层
mark 超级有用

出0入0汤圆

发表于 2012-9-28 23:27:27 | 显示全部楼层
高!实在是高!

出0入0汤圆

发表于 2012-9-28 23:30:09 | 显示全部楼层
又见颜色跟踪~好帖,顶起~

出0入0汤圆

发表于 2012-9-28 23:47:00 来自手机 | 显示全部楼层
ilovepp 发表于 2012-9-28 22:15
原理很简单:先遍历寻找腐蚀中心,然后在腐蚀中心处进行迭代。

腐蚀中心是什么

出0入0汤圆

发表于 2012-9-28 23:47:43 来自手机 | 显示全部楼层
ilovepp 发表于 2012-9-28 22:16
RBG效果不好需要转成HSL

HSL是什么

出0入0汤圆

发表于 2012-9-28 23:59:27 | 显示全部楼层
mark

出0入17汤圆

 楼主| 发表于 2012-9-28 23:59:59 | 显示全部楼层
lanyuye 发表于 2012-9-28 23:47
HSL是什么

H指hue(色相)、S指saturation(饱和度)、L指lightness(亮度)。与RGB相比HSL与人类对颜色感知更接近。

出0入17汤圆

 楼主| 发表于 2012-9-29 00:13:22 | 显示全部楼层
lanyuye 发表于 2012-9-28 23:47
腐蚀中心是什么

视频中的红点就是腐蚀中心,腐蚀算法将从该点开始分别向上下左右四个方向进行读点,若点的颜色符合条件则往外读,等四个方向都结束后得到四个边缘点的坐标,记左边缘点的x轴坐标为left,右边缘点的x轴坐标为right,上边缘点的y轴坐标为up,下边缘点的y轴坐标为bottom,那么坐标( (right-left)/2 , (up-bottom)/2 ) 即为新的腐蚀中心

出0入0汤圆

发表于 2012-9-29 01:01:09 | 显示全部楼层
收藏了...

出0入0汤圆

发表于 2012-9-29 01:31:32 来自手机 | 显示全部楼层
谢谢分享!正需要啊!

出0入0汤圆

发表于 2012-9-29 01:43:08 | 显示全部楼层
顶楼主,收藏~~

出0入0汤圆

发表于 2012-9-29 06:34:35 来自手机 | 显示全部楼层
ilovepp 发表于 2012-9-28 23:59
H指hue(色相)、S指saturation(饱和度)、L指lightness(亮度)。与RGB相比HSL与人类对颜色感知更接近 ...

学习了!

出0入0汤圆

发表于 2012-9-29 06:35:47 来自手机 | 显示全部楼层
ilovepp 发表于 2012-9-29 00:13
视频中的红点就是腐蚀中心,腐蚀算法将从该点开始分别向上下左右四个方向进行读点,若点的颜色符合条件则 ...

学习了!

出0入0汤圆

发表于 2012-9-29 08:02:50 | 显示全部楼层
顶顶~~火

出0入0汤圆

发表于 2012-9-29 08:29:54 | 显示全部楼层
这个高,收藏

出0入0汤圆

发表于 2012-9-29 08:38:26 | 显示全部楼层
顶楼主,收藏~~

出0入0汤圆

发表于 2012-9-29 08:39:47 | 显示全部楼层
不错,有意思

出0入0汤圆

发表于 2012-9-29 08:42:33 | 显示全部楼层
本帖最后由 wangguanfu 于 2012-9-29 08:43 编辑


RE: 在stm32上实现颜色跟踪
....................................................................................
建议置酷

出0入0汤圆

发表于 2012-9-29 08:51:20 | 显示全部楼层
楼主能将全部源码共享出来吗?

出0入17汤圆

 楼主| 发表于 2012-9-29 09:56:46 | 显示全部楼层
sblpp 发表于 2012-9-29 08:51
楼主能将全部源码共享出来吗?

我觉得其他驱动代码因硬件平台的不同而不同,共享的意义不大。其实现在移植已经很方便了,只需要修改下面部分就可以了

#define IMG_X 0          //图片x坐标
#define IMG_Y 0          //图片y坐标
#define IMG_W 320     //图片宽度
#define IMG_H 240      //图片高度

//读取RBG格式颜色,唯一需要移植的函数
static void ReadColor(unsigned int x,unsigned int y,COLOR_RGB *Rgb)

出0入0汤圆

发表于 2012-9-29 10:39:24 | 显示全部楼层
都别mark了,用起来才是正道。

出0入17汤圆

 楼主| 发表于 2012-9-29 11:35:07 | 显示全部楼层
flyunlimit 发表于 2012-9-29 10:39
都别mark了,用起来才是正道。

设置好H、S、L的阈值,用起来没有问题。分享一下我的调节参数时总结的技巧:
1.识别绿色和蓝色的效果最好,因为他们在色调谱中占据的范围最大
2.先将S、L的范围设的广一些(如 5 -250 ),先调节H的值的范围
3.H值调节好后,再调节S、L值

出0入17汤圆

 楼主| 发表于 2012-9-29 11:38:23 | 显示全部楼层
H、S、L的值可在windos自带的绘图工具软件中,点“颜色”->"编辑颜色"->"规定自定义颜色" 进入调色板进行调色

出0入0汤圆

发表于 2012-9-29 11:52:06 | 显示全部楼层
哇,好棒的~

出0入0汤圆

发表于 2012-9-29 12:32:15 | 显示全部楼层
不错不错

出0入0汤圆

发表于 2012-9-29 12:43:52 | 显示全部楼层
图像,标记,等接好摄像头和TFT再试试。。不过,,,可以先翻译成DELPHI试试。。嗯,,看看。。

出0入0汤圆

发表于 2012-9-29 13:06:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-9-29 13:21:27 | 显示全部楼层
MARK,,LZ厉害

出0入0汤圆

发表于 2012-9-29 13:21:58 | 显示全部楼层
不错!支持下,望LZ继续努力!

出0入0汤圆

发表于 2012-9-29 13:26:03 | 显示全部楼层
不错不错

出0入0汤圆

发表于 2012-9-29 14:52:18 | 显示全部楼层
好贴,顶顶更健康。收藏先!

出0入0汤圆

发表于 2012-9-29 15:30:22 | 显示全部楼层
多谢楼主解释颜色追踪原理和分享代码.

出0入0汤圆

发表于 2012-9-29 15:34:15 | 显示全部楼层
这个好

出0入0汤圆

发表于 2012-9-30 13:43:14 | 显示全部楼层
楼主,我的检测物体在下方边缘的时候会出错,是算法的BUG,还是我的问题,能猜测一下我出错的原因吗?

出0入0汤圆

发表于 2012-9-30 13:45:10 | 显示全部楼层
MARK,不错,可能能用的上

出0入0汤圆

发表于 2012-9-30 14:05:56 | 显示全部楼层
楼主不好意思啊,你的算法很好啊,是我的问题,在我向你提问的上面这个问题的时候让我找到我出错的地方,原来是我定义的帧缓冲定义略少了。哈哈,你的算法的精度真的不错,我现在正在爽着。

出0入0汤圆

发表于 2012-9-30 15:00:54 | 显示全部楼层
学习了,,,收藏

出0入0汤圆

发表于 2012-9-30 15:28:29 | 显示全部楼层
学习学习~

出0入0汤圆

发表于 2012-9-30 19:36:21 | 显示全部楼层
谢谢分享啊!
建议至酷!

出0入17汤圆

发表于 2012-9-30 21:28:41 | 显示全部楼层
比较有意思~~~~~~~~~

出0入0汤圆

发表于 2012-9-30 22:32:57 | 显示全部楼层
楼主NB啊。、、

出0入0汤圆

发表于 2012-9-30 22:38:35 | 显示全部楼层
楼主强淫啊,马克备用

出0入17汤圆

 楼主| 发表于 2012-10-8 07:52:55 | 显示全部楼层
YuWan 发表于 2012-9-30 14:05
楼主不好意思啊,你的算法很好啊,是我的问题,在我向你提问的上面这个问题的时候让我找到我出错的地方,原 ...


呵呵,其实算法还有可以优化的地方,比如对颜色进行滤波什么的,效果可能还可以更好。不过目前的精度对我的项目来说够用了

出0入0汤圆

发表于 2012-10-8 09:39:52 | 显示全部楼层
cool                                                                       

出0入17汤圆

 楼主| 发表于 2012-10-8 20:30:15 | 显示全部楼层
现在想将该模块扩展一下,使其可以直接利用来RGB数据流来进行颜色跟踪,从而省掉外部扩展的帧缓存,可是暂时还没有思路。比如一帧图片150KB,而MCU只有8K内存可用,而帧图片可以以像素为单位流向MCU。待150KB的像素流全部通过MCU后,MCU可以给出目标中心的位置和大致长宽。

出0入0汤圆

发表于 2012-10-8 20:41:40 | 显示全部楼层
收藏!谢谢!

出0入0汤圆

发表于 2012-10-11 10:02:35 | 显示全部楼层
bucuo
~~~

出0入0汤圆

发表于 2012-10-15 13:14:49 | 显示全部楼层
很好学习中

出0入0汤圆

发表于 2012-10-15 13:38:14 | 显示全部楼层
好东西,谢谢楼主

出0入0汤圆

发表于 2012-10-15 14:22:56 | 显示全部楼层
这个不错,很有意思。

出0入0汤圆

发表于 2012-10-15 16:00:21 | 显示全部楼层
这个算法很有创意呀!不过似乎有点BUG。hue值不能这么比较的。

出0入17汤圆

 楼主| 发表于 2012-10-15 19:27:52 | 显示全部楼层
chunxx 发表于 2012-10-15 16:00
这个算法很有创意呀!不过似乎有点BUG。hue值不能这么比较的。

应该如何比较呢?请指教

出0入0汤圆

发表于 2012-10-15 19:35:54 | 显示全部楼层
楼主强悍……  顶起……

出0入0汤圆

发表于 2012-10-15 20:15:58 | 显示全部楼层
楼主很牛  顶一下

出0入0汤圆

发表于 2012-10-16 13:31:26 | 显示全部楼层
ilovepp 发表于 2012-10-15 19:27
应该如何比较呢?请指教

hue是角度值,0度和360是相等的,在0/360度也就是红色附近要多一些判断。以前我被这个问题折腾过 呵呵

出0入0汤圆

发表于 2012-10-16 13:42:08 | 显示全部楼层
,mark

出0入0汤圆

发表于 2012-10-16 13:54:54 | 显示全部楼层
以前做过测距的但是失败了,主要是颜色处理不好,RGB做颜色读取,环境干扰很严重,在此先学习一下!

出0入0汤圆

发表于 2012-10-16 13:59:55 | 显示全部楼层
顶楼主,收藏~~

出0入17汤圆

 楼主| 发表于 2012-10-16 14:17:44 | 显示全部楼层
chunxx 发表于 2012-10-16 13:31
hue是角度值,0度和360是相等的,在0/360度也就是红色附近要多一些判断。以前我被这个问题折腾过  ...

嗯,如图所示,红色附近需要多一些判断。其实如果识别的颜色是自己定的话,选择绿色和蓝色作为识别色就好了,如果确实需要识别红色那就要改一下ColorMatch这个函数。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-10-16 14:40:32 来自手机 | 显示全部楼层
确实霸气哦   好东西

出0入0汤圆

发表于 2012-12-17 21:22:44 | 显示全部楼层
有兴趣。

出0入0汤圆

发表于 2012-12-17 21:24:45 来自手机 | 显示全部楼层
收藏  Mark

出0入0汤圆

发表于 2012-12-17 23:05:06 | 显示全部楼层
ilovepp 发表于 2012-9-29 00:13
视频中的红点就是腐蚀中心,腐蚀算法将从该点开始分别向上下左右四个方向进行读点,若点的颜色符合条件则 ...

感谢楼主分享原理。

出0入0汤圆

发表于 2012-12-17 23:56:34 | 显示全部楼层
真不错,非常有含金量!

出0入0汤圆

发表于 2012-12-18 07:39:21 来自手机 | 显示全部楼层
楼主的思路很不错,学习了

出0入0汤圆

发表于 2012-12-18 08:50:14 | 显示全部楼层
感谢lz分享~

出0入0汤圆

发表于 2012-12-18 11:14:49 | 显示全部楼层
感觉很高级啊,学习下

出0入0汤圆

发表于 2012-12-18 12:27:23 | 显示全部楼层
好资料,mark

出0入0汤圆

发表于 2012-12-18 12:30:40 | 显示全部楼层
这世上牛B的人真TM多。。。

出0入0汤圆

发表于 2012-12-18 12:45:39 | 显示全部楼层
这个要顶

出0入55汤圆

发表于 2012-12-18 13:10:56 | 显示全部楼层
这个要顶。厉害!

出0入0汤圆

发表于 2012-12-18 15:12:50 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2012-12-18 15:31:08 | 显示全部楼层
收藏!!!
头像被屏蔽

出0入0汤圆

发表于 2012-12-18 15:38:16 | 显示全部楼层
厉害

出0入0汤圆

发表于 2012-12-18 16:15:35 | 显示全部楼层
mark  顶一个

出0入0汤圆

发表于 2012-12-18 16:30:53 | 显示全部楼层
很厉害,想试试

出0入0汤圆

发表于 2012-12-18 16:55:18 | 显示全部楼层
有用到            

出0入0汤圆

发表于 2012-12-18 17:44:59 | 显示全部楼层
学习了

出0入0汤圆

发表于 2012-12-18 17:52:02 来自手机 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2012-12-22 00:51:50 | 显示全部楼层
本帖最后由 JoshuaAstray 于 2012-12-22 00:54 编辑

请教一下楼主,确定腐蚀中心和物体大小各用了什么图像处理的方法么,我需要查找一些相关的资料,刚好也在做类似的项目。谢谢了!!!再秀一下我的测试平台

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-12-22 11:58:19 | 显示全部楼层
另外,我想问下楼主,遍历图像取腐蚀中心,楼主选用的是每次移动1/3个最小长度,请问这个是不是一个经典值之类的,有什么原因的么

出0入0汤圆

发表于 2012-12-22 16:36:54 | 显示全部楼层
不错   哈哈

出0入0汤圆

发表于 2012-12-22 19:50:25 | 显示全部楼层
挺厉害的。看看

出0入0汤圆

发表于 2012-12-22 20:55:58 | 显示全部楼层
JoshuaAstray 发表于 2012-12-22 00:51
请教一下楼主,确定腐蚀中心和物体大小各用了什么图像处理的方法么,我需要查找一些相关的资料,刚好也在做 ...

你的摄象头模块和LZ的模块是一样的哦 都是经过过偶的手的 哈哈

出0入0汤圆

发表于 2012-12-22 22:15:29 | 显示全部楼层
ilovepp 发表于 2012-9-29 11:38
H、S、L的值可在windos自带的绘图工具软件中,点“颜色”->"编辑颜色"->"规定自定义颜色" 进入调色板进行调 ...

就是控制颜色的几种值吗?

出0入0汤圆

发表于 2012-12-22 22:19:49 | 显示全部楼层
本帖最后由 JoshuaAstray 于 2012-12-22 22:27 编辑
wangguanfu 发表于 2012-12-22 20:55
你的摄象头模块和LZ的模块是一样的哦 都是经过过偶的手的 哈哈   {:titte ...


其实我很想向王工道下歉的。。。我不小心,貌似买了抄你板的摄像头 而且当时还是在天猫买的。。。而且还一点都不便宜,带FIFO的,加上运费是差不多90。。。因为老师说项目用的,可以报销,挑个好点的。。。于是我就选了一个。。。的,后来上到论坛表示悲剧了

出0入0汤圆

发表于 2012-12-22 22:27:50 | 显示全部楼层
JoshuaAstray 发表于 2012-12-22 22:19
其实我很想向王工道下歉的。。。我不小心,貌似买了抄你板的摄像头 而且当时还是在天猫买 ...

言重了 哈哈
而且 你这个看图片真是我的

出0入0汤圆

发表于 2012-12-22 22:30:52 | 显示全部楼层
颜色跟踪  学习~~

出0入0汤圆

发表于 2012-12-25 18:42:31 | 显示全部楼层
LZ,真是个人才啊

出0入0汤圆

发表于 2012-12-29 21:32:47 | 显示全部楼层
好好收藏,以后别找不到,楼主辛苦了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 19:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表