项目名称:基于STM32F7的视觉小球颜色识别系统
1.功能实现:用STM32F7驱动摄像头,实时采集图像,进行颜色识别,并且统计出小球的直径。做图像处理都是基于PC端的开发,一直希望STM32可以用。后续可以加入其它的一些算法,比如字符识别,人脸识别等。
2.软硬件方案:
a.硬件实现框图
本方案我们采用了OV9655的130万像素摄像头,并通过转接板自己设计的,配合STM32F746自带的摄像头接口。如图所示:
硬件电路:
摄像头转接板.rar
(97.61 KB)
(下载次数: 12, 2015-12-27 21:05 上传)
b.软件实现框图
整个软件主要包括包括:摄像头OV9655驱动的实现,图像颜色识别算法实现,图像尺寸检测算法检测等
算法的主要思想如下:
有过使用photoshop经历的人对色彩模式应该不会陌生,大家应该非常熟悉的是RGB色彩模式,因为它是最常见的也是听说最多的,另外还有一种色彩模式是HSL,H代表色相,S代表饱和度,L代表亮度,这种色彩模式是美术人最常用的,这是因为它是基于人对色彩的心理感受的一种色彩模式。
RGB向HSL色彩模式的转换在图像处理中应用较为广泛,我们的小球识别中很可能需要该步骤,原理与公式讲起来需要太多的时间与空间,大家可能也不希望听我啰嗦,那么我就把代码传上来吧。
#define min3v(v1, v2, v3) ((v1)>(v2)? ((v2)>(v3)?(v3):(v2)):((v1)>(v3)?(v3):(v1)))
#define max3v(v1, v2, v3) ((v1)<(v2)? ((v2)<(v3)?(v3):(v2)):((v1)<(v3)?(v3):(v1)))
typedef struct{
unsigned char red; // [0,255]
unsigned char green; // [0,255]
unsigned char blue; // [0,255]
}COLOR_RGB;//RGB格式颜色
typedef struct{
unsigned char hue; // [0,240]
unsigned char saturation; // [0,240]
unsigned char luminance; // [0,240]
}COLOR_HSL;//HSL格式颜?
//RGB转HSL
static void RGBtoHSL(const COLOR_RGB *Rgb, COLOR_HSL *Hsl)
{
int h,s,l,maxVal,minVal,difVal;
int r = Rgb->red;
int g = Rgb->green;
int b = Rgb->blue;
maxVal = max3v(r, g, b);
minVal = min3v(r, g, b);
difVal = maxVal-minVal;
//计算亮度
l = (maxVal+minVal)*240/255/2;
if(maxVal == minVal)//若r=g=b
{
h = 0;
s = 0;
}
else
{
//计算色调
if(maxVal==r)
{
if(g>=b)
h = 40*(g-b)/(difVal);
else
h = 40*(g-b)/(difVal) + 240;
}
else if(maxVal==g)
h = 40*(b-r)/(difVal) + 80;
else if(maxVal==b)
h = 40*(r-g)/(difVal) + 160;
//计算饱和度
if(l == 0)
s = 0;
else if(l<=120)
s = (difVal)*240/(maxVal+minVal);
else
s = (difVal)*240/(511 - (maxVal+minVal));
}
Hsl->hue = (unsigned char)(((h>240)? 240 : ((h<0)?0:h)));
Hsl->saturation = (unsigned char)(((s>240)? 240 : ((s<0)?0:s)));
Hsl->luminance = (unsigned char)(((l>240)? 240 : ((l<0)?0:l)));
}
c 软件界面
3.演示视频
OV9655图像处理视频
4.源码
5.参考文档和例程
6.项目帖子:
开箱照
硬件电路
成员分工,进度
7.项目完成致谢
这个项目结构完成,首先离不开几个组员努力的结果:
@54chenjq @DavidZH @efree 等三位组员的辛苦努力。感谢管理员@nmg的支持,也要感谢IC-爬虫哥的技术支持。
由于时间有限,我们的项目还有很多功能没有完成,后续还会加入字符识别,人脸识别。
谢谢EEWROLD,谢谢ST,给了我们这么好的一个学习机会!
本帖最后由 wwchang 于 2015-12-28 09:01 编辑