基于图像传感器的CPLD视觉系统设计与研究
。如果检测到的像素位置在当前跟踪区域的标记框外,则需要增大标记框来包含该像素;同时,需要记录符合要求的像素的数量,当一帧图像扫描完成后,可以分别用符合要求的点的横纵坐标和除以符合要求的像素点数,得出被追踪物体的中心坐标。 这样在对一帧图像的一次扫描后,就可以得到被跟踪物体的中心坐标,同时处理器只需记录较少的全局变量,在时间复杂度和空间复杂度上都适合嵌入式系统。 上述方法中,只有一个跟踪点就可以改变标记框,因此如果在跟踪过程中出现噪声点,就会对标记框产生影响。去噪的思想是:如果一个像素点周围的其他点也落在用户输入的RGB范围内,那么这个点就被认为是符合要求的。 (2)行处理模式 与帧处理模式不同的是,行处理模式在扫描完一行数据后就记录下所在行中符合要求的连续点的最左端坐标和最右端坐标,不妨分别记为(XnL,YnL)和(XnR,YnR)。在一帧图像处理完成后,会得到图3所示的图形。 根据得到的结果,可以计算出更多关于跟踪物体的信息: ①计算区域面积。计算每条线段的长度l(n),然后将l(n)进行累积叠加,即可获得跟踪区域面积值S。 ④识别物体的形状。根据得到的每行跟踪点的长度,以及同一行中有几段符合要求的连续跟踪点,可以得知物体从摄像头角度看到的形状。特别是在检测平面上线条时,可以识别是否有分支,这一点是帧处理模式无法做到的。 需要指出的是,行处理模式虽然会得到关于跟踪目标的更多信息,但是每行处理的方式增大了处理器的负担,处理速度也没有帧处理快。 4 提高系统的工作速率 目前,系统工作在帧处理模式下的工作速率是25帧/s,作为系统功能的验证,这里采用的算法是颜色跟踪。如果仅做纯粹的图像采集,而不做图像处理,那么系统可以达到OV6620的最高工作速率,即60帧/s。而在图像处理方面,不同的图像处理程序效率对系统的工作频率有较大的影响。下面给出在通用ARM处理器下提高程序效率的几个建议: ①内嵌(inline)可通过删除子函数调用的开销来提高性能。如果函数在别的模块中不被调用,一个好的建议是用static标识函数;否则,编译器将在内嵌译码里把该函数编译成非内嵌的。 ②在ARM系统中,函数调用过程中参数个数≤4时,通过R0~R3传递;参数个数>4时,通过压栈方式传递(需要额外的指令和慢速的存储器操作)。通常限制参数的个数,使它为4或更少。如果不可避免,则把常用的前4个参数放在R0~R3中。 第1种方式比较需要2条指令ADD和CMP,而第2种方式只需一条指令SUBS。 ④ARM核不含除法硬件,除法通常用一个运行库函数来实现,运行需要很多个周期。一些除法操作在编译时作为特例来处理,例如除以2的操作用左移代替余数的操作符“%”,通常使用模算法。如果这个值的模不是2的n次幂,则将花费大量的时间和代码空间避免这种情况的发生。具体办法是使用if()作状态检查。 比如,count的范围是0~59; count=(count+1)%60; 用下面语句代替: if(++count>=60) count="0"; ⑤避免使用大的局部结构体或数组,可以考虑用malloc/free代替。 ⑥避免使用递归。 结 语 本文介绍了一种基于ARM和CPLD的嵌入式视觉系统,可以实现颜色跟踪。在硬件设计上,图像采集和图像处理分离,更利于系统功能的升级。而视觉处理算法更注重处理的效率和实时性,同时根据不同的需要有两种模式可供选择。最后给出了提高程序效率的一些建议和方法。与基于PC机的视觉系统相比,该系统功耗低、体积小,适合应用于移动机器人等领域。
- 视觉系统在汽车门锁检测中的应用(07-24)
- 康耐视视觉系统的检测瓷砖解决方案(02-06)
- 机器视觉系统在现代包装行业中的应用(02-25)
- 借助National Instruments的LabVIEW嵌入式视觉系统(09-21)
- 为机器人焊接开发WiseWELDING机器视觉系统(03-16)
- 在嵌入式多核集群中利用OCP处理高速缓冲器一致流量(07-20)