APP下载

基于FPGA的颜色识别触摸屏系统设计与实现

2015-05-29黄智辉李榕

现代电子技术 2015年10期
关键词:现场可编程门阵列触摸屏

黄智辉++李榕

摘 要: 为了提高颜色识别系统的准确性、稳定性以及设计灵活性,基于现场可编程门阵列技术,设计了一个应用于静态图片的颜色识别系统,并设定了触摸屏功能。通过触摸读取屏幕坐标对应的RGB颜色值,减少了环境变化对系统的影响,利用阈值判定法实现颜色识别。实验结果表明,该系统稳定而且实用性强,系统可以识别任意800×480像素bmp图像的颜色,并具有较好的鲁棒性。

关键词: 颜色识别; 现场可编程门阵列; 触摸屏; 阈值判定法

中图分类号: TN911?34; TP212.9 文献标识码: A 文章编号: 1004?373X(2015)10?0061?04

颜色识别是一种新兴的检测技术,它是在自动控制系统的出现后才被提出的,也是自动控制理论的简单应用,并得到了大力的发展。虽然提出时间较晚,但在实时检测系统以及自动控制方面有着重要的意义。随着科技的进步,处理器的速度有了飞跃性的发展,这也同时提高了这个系统的效率。物体颜色的识别,传统方法是测出物体的三刺激值(RGB)坐标,通过查询CIE(国际照明委员会)1931标准色度图来确定颜色[1]。颜色是一个模糊的概念,采用量化和传统的传感器是不够的[2]。

在信息化与科技日益发达的当今社会,颜色识别正向智能化的方向发展,颜色识别作为自动控制系统的一项重要功能,是当今数字图像处理的研究热点之一,具有重大的研究意义。在目前的实现方式中,有在PC上用软件[3]实现,但便携性差。而单片机的设计虽然满足功耗以及便携性等因素[4],但其可升级性,设计的灵活性以及处理速度却不及现场可编程门阵列(Field Programmable Gate Array,FPGA)。而在FPGA上有基于软核的实现方式[5],但相对于硬件方式,软核在速度上收到很大限制,但是相对于硬件实现方式,软核在速度上收到很大的限制。

在算法方面,很多研究都是利用颜色传感器TCS230[6?8]进行颜色识别,在RGB色彩空间下[9]或者是在HSV[10]色彩空间下对颜色分量进行测量,经过单片机等处理器进行白平衡等算法处理。有以下不足:计算量太大,实时性效果不好,以及环境变化对检测效果影响大,同时在算法方面的计算都是在单片机,FPGA的软核实现。针对这种情况。本文提出使用FPGA硬件加上触摸屏两大硬件相结合的方式,在RGB色彩空间下,采用设定阈值识别颜色的方法。这种算法既简单又能减少环境对系统的影响,而且精度高,能识别多种颜色,满足生活要求,十分实用。

1 颜色识别系统

颜色识别系统设计的颜色识别主要是基于先检测后识别的方法,通过对触摸屏中触摸的像素点进行逐点分析,根据触摸的坐标点与显示的像素点对应检测出对应点,提取像素信息进行颜色识别。

1.1 系统设计款图

系统设计主要包括2个功能:

(1) 图像的读取与显示;

(2) 对于图像及触摸屏进行算法处理,触摸屏坐标数/模转化,触摸屏坐标对应颜色坐标,图像采集,缓存,算法处理,显示模块。

图1 系统设计框图

1.2 图像读取与显示

为了适应触摸屏显示的图像大小,系统采用像素大小为800×480的bmp格式图像,通过接口传输数据,把图像读入DE2开发板的FLASH中。

图像的显示采用的是LCD显示,显示器采用的是altera公司出产的TRDB_LTM4.8寸液晶显示触摸屏,通过GPIO接口与FPGA相连,LCD控制器模块主要是用来产生VGA显示需要的时序以及根据行和场计数而产生的颜色坐标。

1.3 触摸屏

作为系统的核心部分,LTM控制器模块主要是用来产生人触摸到触摸屏产生的坐标,由模拟信号经过模/数转换后产生触摸屏坐标,再经过公式换算成与显示坐标相对应的颜色坐标。这样,在触摸屏上触碰的点就是要识别颜色的对应像素点。

1.4 图像的缓存

本文系统的图像是24位RGB格式,R,G,B各8 b,为了高效地利用SDRAM,采用4端口的SDRAM,SDRAM的使用如图2所示。

图2 SDRAM图像缓存

在本文系统中,SDRAM缓存3幅图像。由于不同平台的SDRAM的容量不一样,为了在有限资源下完成系统设计要求,在这里做简化处理。图像写入时BANK1低8位为Green,高8位为Red,BANK2低8位为Blue,高8位补0。

2 颜色识别原理及实现

颜色识别原理框图如图3所示。

图3 颜色识别原理框图

2.1 触摸屏坐标

LTM配备了ADI公司的AD7843触摸屏数字转换器芯片。 AD7843是一个12位模/数转换器(ADC)进行数字化的x和施加到触摸屏上的触摸点y坐标。存储在AD7843触摸点的坐标可通过串行端口接口而获得。为了获得来自ADC的坐标,用户需要做的第一件事就是监视来自ADC输出的中断信号ADC_PENIRQ_n。通过连接一个上拉电阻,在ADC_PENIRQ_n输出保持高电平正常。当连接到ADC的触摸屏是通过笔或手指触摸时,ADC_PENIRQ_n输出变为低电平,启动一个中断给FPGA,然后可以指示一个控制字通过串行端口接口被写入到ADC。经模数转换之后,转换成触摸屏坐标,如图4所示,触碰的范围由荧幕左下角开始,画面分割为往上为x轴,可由12个2进制数(3个16进制数)表现其位置。往右为t轴,可由12个2进制数(3个16进制数)表现其位置。结合x轴与y轴的数字构成触碰荧屏系统。

图4 触摸屏坐标

2.2 颜色逻辑坐标

由于LCD读取图像数据显示是从左上到右下的顺序读入,触摸屏坐标不符合逻辑要求,所以,为了方便把触摸的坐标对应上显示的坐标800×480的要求,对X,Y分别运用转换公式:

oX_COORD≤((my_coordinate/5)-20);

oY_COORD≤(((mx_coordinate>>3)-20));

oX_COORD,oY_COORD就是转换之后的颜色逻辑坐标,经过转换之后的坐标,如图5所示,x坐标从左往右逐渐变大,范围0~800,y坐标从上往下逐渐变大,范围0~480。

图5 颜色逻辑坐标

2.3 RGB色彩空间

许多人都知道在绘画时可以使用红色、黄色和蓝色这3种原色混合成不同的颜色,这些颜色就定义了一个色彩空间。将品红色的量定义为 x坐标轴、青色的量定义为y坐标轴、蓝色的量定义为z坐标轴,这样就得到一个三维空间,每种可能的颜色在这个三维空间中都有惟一的一个位置。但是,这并不是惟一的一个色彩空间。例如,当在计算机监视器上显示颜色的时候,通常使用 RGB(红色、绿色、蓝色)色彩空间定义,这是另外一种生成同样颜色的方法,红色、绿色、蓝色被当作x,y和z坐标轴。另外一个生成同样颜色的方法是使用色相(x轴)、饱和度(y轴)和明度(z轴)表示,这种方法称为 HSB 色彩空间。另外还有许多其他的色彩空间,许多可以按照这种方法用三维(x,y,z)、更多或者更少维表示,但是有些根本不能用这种方法表示。

通常所看到的物体的颜色,实际上是物体表面吸收了照射到它的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应,任何一种颜色都可以用3种基本颜色按照不同的比例混合得到。

在这里介绍RGB模型,如图6所示,在这个颜色模型中,3个轴分别为RGB。原点对应为黑色(0,0,0),高为原点最远的定点对应白色(255,255,255)。由黑到白的灰度分布在从原点到最远的定点件的连线上,正方体的其他留个角点分别为红,黄,绿,青,蓝和品红。需要注意一点,RGB颜色模型所覆盖的颜色域取决于显示设备因光电的颜色特性。每一种颜色都有惟一的RGB值与它对应。

图6 RGB颜色模型

2.4 颜色检测

一开始,把预先准备好的800×480大小的BMP图像存入FPGA的FLASH中,系统将会把图像传输到触摸屏上,作为下一步的定位算法使用。其中,在显示区,coord_x和coord_y分别是显示像素点的坐标。在触摸屏,x_coord和y_coord是经过换算过后的触摸逻辑坐标:

coord_x = x_coord

coord_y = y_coord

当触碰到想要识别的颜色的位置时,使coord_x = x_coord,coord_y = y_coord,那么就将目标定位到了该点,经过一个时钟周期,坐标未更新,分别把该点的R,G,B三色的数据输出到判断模块,具体的verilog实现方式如下:

if ((coord_x == X_COORD )&& (coord_y == Y_COORD) ) begin

oLCD_R1 = read_red;

oLCD_G1 = read_green;

oLCD_B1 = read_blue;

2.5 颜色识别

读取了R,G,B三色的数据之后,设定阈值,进行判断。上述提到,每种颜色都是有三原色按照不同的比例混合而成。比如黄色,红:绿:蓝的比例是255∶255∶0;紫色,红:绿:蓝的比例是160∶32∶240;比紫色淡点的紫罗兰色,红:绿:蓝的比例是138∶43∶226。本系统选取了50种生活常见的颜色作为识别对象,将读取的R,G,B分别与各颜色的R,G,B值做差,再取绝对值,再相加。

公式如下:

[X=|R-R1|+|G-G1|+|B-B1|]

X最小表示最接近该颜色,经检验,准确率达90%。

3 实验结果与分析

本文系统设计采用的硬件平台是友晶公司的DE2开发板,使用的让见是Quartus Ⅱ 11.0,FPGA芯片是EP2C35F672C6。

触摸屏采用的是友晶公司推出的一款触摸TRDB_LTM,具有可编程控制盒数字信号输出等功能。其触摸功能,通过内嵌的10位ADC将模拟信号转换为12位的数字信号。同时,LTM还提供像素时钟(PIXCLK)、行有效信号(FVAL)以及配置LTM所需要的I2C协议引脚SCLK和SDAT。所使用的平台有4个按键;其中KEY[0]是复位按键。

取实验过程中算法每步所拍下的图像,采用了两幅图做对比,图7,图8是颜色比较分明的图像,分别用笔触碰触摸屏,数码管触碰坐标,LCD1602显示颜色。由于拍照角度稍有差异,图像形状会略有不同。

图7 笔触碰绿色,数码管显示坐标,LCD显示绿色

图8 笔触碰黄色,数码管显示坐标,LCD显示黄色

图9图10是比较颜色比较复杂的图像,分别用笔触碰触摸屏,数码管触碰坐标,LCD1602显示颜色。

图9 笔触碰紫色,数码管显示坐标,LCD显示紫色

4 结 语

本文通过采用FPGA器件设计基于FPGA触摸屏的颜色识别,一定程度上解决了通过传感器识别颜色受光线,环境变换对识别结果的影响。通过实验结果的验证,该系统识别颜色正确率高,而且方便实用,随时可以更换图片,可作为婴幼儿识别颜色早教系统,也方便为色盲症患者提供颜色信息。FPGA纯硬件实现的方式,设计灵活,有利于移植到其他FPGA系统,也有利于发展为专业集成模块。

图10 笔触碰蓝色,数码管显示坐标,LCD显示蓝色

参考文献

[1] 唐圣学,刘波峰,徐东峰.基于模糊神经网络的颜色识别方法[J].传感器技术,2003,22(11):57?59.

[2] BOMBARDIER V, SCHMITT E, CHARPENTIER P. A fuzzy sensor for color matching vision system [J]. Measurement, 2009, 42(2): 189?201.

[3] 袁锋伟,邓骞,王玉林,等.基于PC的颜色识别与匹配系统的设计[J].南华大学学报:自然科学版,2014,28(2):49?53.

[4] 卢川英,于浩成,孙敬辉,等.基于TCS230传感器的颜色检测系统[J].吉林大学学报:信息科学版,2008,26(6):621?626.

[5] 祝长锋.基于FPGA的实时图像检测技术的研究[D].镇江:江苏大学,2008.

[6] 胡建民.颜色传感器TCS230及颜色识别电路[J].单片机与嵌入式系统应用,2006(4):40?42.

[7] 王鹏程,官洪运,许文杰,等.基于颜色识别的手指多点跟踪人机交互系统[J].微型机与应用,2012,31(1):76?78.

[8] 张松灿,肖本贤.高分辨率颜色传感器TCS230的原理和应用[J].单片机与嵌入式系统应用,2005(3):44?46.

[9] 可荣硕,马晓军,张思博,等.基于RGB色彩空间的颜色识别系统设计[J].微计算机信息,2010,26(5):46?47.

[10] 董静,王立峰.颜色传感器在人民币纸币识别系统中的应用[J].微型机与应用,2014,33(9):42?44.

[11] 封岸松,战仕成,汪滢.基于FPGA的RGB到YCrCb颜色空间转换[J].现代电子技术,2010,33(10):122?124.

猜你喜欢

现场可编程门阵列触摸屏
PLC和触摸屏在卫生间控制系统的应用
浅析投射式多点触控电容触摸屏
皮肤“长”出触摸屏
D—BLAST基带系统的FPGA实现研究
任务间通讯邮箱的硬件实现
一种千兆以太网SerDes 接口与电接口的转换方法
投射式多点触控电容触摸屏
触摸屏项目移植在自动化系统升级中的应用