基于DSPF28335和OV7620的实时嵌入式机器视觉装置
像素数据信息,其顺序为B-G-R-G。其中GPIO68检测到下降沿时意味着一幅图像的开始,而GPIO69用于执行一行图像数据的开始。 STMF28335通过对OV7620的PCLK计数,当计数值到达640时,GPIO69计数溢出中断发生,表示一行图像数据采集时间到。而GPIO69用于对OV7620的HREF信号进行计数,确定一幅图像是否采集完毕。OV7620的输出分辨率可设置为640x480,DSP28335需要接收的数据就是307 200个8位的数据,为了提高实时性且不影响图像处理数据和检测要求。DSP28335选择性地接收数据,利用程序编写,每行每隔4个数据作为有效数据接收,因此每行的数据个数变为640/4=160,然后每隔4行作为有效行接收,因此行数变为480/4=120行,其分辨率变为160x120,总数据为19 200;并且采用了FIFO模式对数据进行缓存和读取。这样的做法既能达到图像的清晰要求,同时很好地提高了实时性。 2.2 机器视觉图像处理设计 图4为机器视觉装置图像处理的流程图。 测试中选用了装液体的物体为杯子,设装满液体时,杯子特征为Tz(Tz为液体连续的最小和最大的区间宽度),液体的的彩色值范围为RP,GP,BP。 本系统处理的图像为RGB格式,像素大小设定为640x480,采用8位的RGB原始视频数据输出,设置为Y通道(输出序列为BGRG),UV通道关闭,以提高实时性,提高软件效率。 通过DSP28335控制CMOS OV7620每隔4个点采集图像数据,图像数据从IS61LV51216缓冲区中读取,将读取的数据转换为Bayer矩阵,再将Bayer矩阵转换为RGB格式的彩色图像;然后对彩色图像进行反畸变校正,将校正后的图像进行定标。定标后进行初始化,获得装满液体的Tz和RP,GP,BP值;初始化后根据Tz和RP,GP,BP值对目标进行检测液位,最后将检测的结果通过DSP283385的CAN输出到应用设备中。实际应用中不通过上位机显示图像和处理结果,直接把处理结果通过CAN发送到PC机上对检测结果进行处理。 3 液位颜色识别算法 本文提出的液位颜色识别算法是基于行处理模式算法。行处理模式算法就是在读取完一行数据后,把所在行中符合要求的连续点(即满足Tz和RP,GP,BP)的最左端和最右端坐标保存下来,可分别记为(XnL,YnL)和(XnR,YnR)。 根据得到的数据,可以计算出关于液体的更多信息。为了提高识别准确率和识别速度,本文设计作了一些改变,同时也采用了二分法查找。以下为本设计的处理过程: (1)首先从图像中间行(二分法)开始检测,如果当前行中有满足Tz和RP,GP,BP,则表示当前位置可能是液位或者液位在更高处,需向上继续二分法查找,同时记下满足Tz和RP,GP,BP当前行连续点的最左端和最右端的横坐标为(XnL,XnR1);当它的向上二分法查找行同样满足Tz和RP,GP,BP时,则记下它的最左端和最右端的横坐标为(XnL2,XnR2)。 (2)若当前行中没有满足Tz和RP,GP,BP的,则表示当前位置不是液位或者液位在更低处,需向下继续二分法查找。 (3)设n为符合要求的第n行变量,当它们满足下式(1)时n置0,即液位为0: 当满足式(2)的条件时,对n值进行更新。同时赋值新的迭代连续点的最左端和最右端的横坐标为(XnLx,XnRx)(其中XnLx,XnRx为全局变量)。XnLx,XnRx的值如式(3)所示: 之后不断重复上述步骤,直到找到那个临界行为止,即此行(液位)满足Tz和RP,GP,BP,并且更高处的上一行不满足Tz和RP,GP,BP,以及更低处的下一行满足Tz和RP,GP,BP;此时,表示液位已经检测到。 4 液位检测效果及分析 实验中,选用了绿茶液体,冰红茶液体及自来水作为实验对象,分别对不同颜色的液体以及对不同液位高度同种液体进行液位检测,并对检测过程进行计时。其中杯子高度为160 mm,最大直径为60 mm。 表1的检测实验为三种液体随机加入的量。经过大量的实验,系统检测与人工读数结果之间的相对误差在保持在0.0%~0.50%之间,具有较高的测量精度,定位耗时平均为320 ms。 5 结语 本文提出了基于DSPF28335和OV7620彩色图像传感器的机器视觉装置解决方案,克服了传统机器视觉系统的定点运算,运行速度慢,高昂费用、高复杂性、体积庞大的缺点,与传统模式的机器视觉系统相比,具有浮点运算、实时性强、体积小、成本低、设计灵活等优点, 从而可以有更强的拓展性与兼容性,性价比极高。
DSP28335 CMOS彩色图像传感器 OV76203嵌入式机器视觉装置 相关文章:
- 基于DSP28335的飞控计算机DAC扩展电路设计(07-08)
- 基于DSP的微位移步进电机控制系统设计(07-01)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)