APP下载

基于单片机的图像采集与处理应用研究

2015-01-27唐婧壹

机电产品开发与创新 2015年4期
关键词:管脚数码管摄像头

唐婧壹

(山西机电职业技术学院,山西 长治 046011)

0 引言

当前在众多工业企业监控系统中,应用最广泛的一般是由PC 机、图像采集卡以及CCD 摄像头构成的图像处理采集系统。这种系统存在功耗高、结构繁琐,价格昂贵,体积大等众多弊端。近几年来,随着微软Vista操作系统面世,PC 用户能够使用Instant on 功能,给单片机发展提供了广阔的前景,一种克服传统图像处理采集系统的诸多弊端的智能控制及智能处理功能的微型图像处理采集系统成为研究的对象。本文是以TI 的单片机lm4f120h5qr 为处理器,以OV7670(带FIFO)为图像传感器,以ILI9327 为显示的图像采集、处理与显示的系统。由于该系统是智能小车循迹的基础,需要进行图像处理。

1 系统硬件设计

(1)整体连接。根据数据手册的管脚介绍和实际管脚分布情况,做出了摄像头、LCD 与单片机的管脚连接,为了连接方便,加入转接板。

(2)单片机。单片机lm4f120h5qr 是由TI 公司推出的32 位单片机:时钟频率高达80MHz,带有Flash 存储器,容量是256KB;采用ICDI 调试接口,Stellaris ICDI只支持通过JTAG 调试。安装完ICDI 驱动后会在PC 上虚拟一个串口,用这个串口来输出调试信息是很方便的,代码通过ICDI 烧到板子中去。

(3)摄像头:设计所选用的摄像头Ov7670(fifo),其有效像素为640×480(即30W);所用的输出格式为QVGA(240*320),在摄像头内部,装设有一个fifo 芯片(AL422B),这个芯片的容量是384K 字节,可以用来存储图像数据,它的大小足够用来存储两帧的QVGA 格式数据ov7670 模块的自身就带有源晶振,它可以产生12M时钟信号,并以这个信号作为ov7670 时钟信号的输入做出了摄像头与单片机的管脚分配和连接。如图1 所示。

图1 摄像头与单片机的管脚分配和连接示意图

(4)显示屏:设计所选用的液晶显示屏型号为FPC2667,它是TFT-LCD 液晶显示屏中的一种,控制器为ili9327:像素为240RGB*432(设计中为240*320)GRAM 为233280字节支持18-/16-/9-/8-比特的数据总线接口,有8 位数据接口做出了LCD 与单片机的管脚连接。如图2 所示。

(5)转接板:在电脑主板生产时,需对PCI 这个功能测试,那么就一定需要一个PCI 卡插入主板的PCI 插槽。在长时间的插拔过程中,一定会对频繁插入的PCI 设备卡产生磨损。这时,PCI PCB 转接卡,就发挥其作用。有利的保护PCI 设备卡。本设计系统PCB 转接板工艺图如图3 所示。

图2 LCD 与单片机的管脚连接

2 系统软件实现与应用

(1)系统时钟配置:系统时钟由ST89C51 单片机、复位电路、晶振电路、外部中断和显示电路5 个模块组成。其中以单片机模块为核心模块,主导其余四个模块工作,1602 显示模块用来显示秒、分、时计数单位中的值。实现电路的总体功能是通过AT89c51 单片机内部的定时/计数器实施其实现过程是通过软件延时辅助,对定时/计数器程序进行中断定时,达到系统时钟配置要求。

(2)初始化LCD:初始化LCD 就是初始化模块的寄存器,通过写入预设的数据,对LCD 特性进行设置,在控制器的寄存器写入预设的数据之前,首先对先复位一下控制端部的外部硬件。为使LCD 复位正确,要加个低电平的脉冲于LCD 模块的复位端口。

(3)中断初始化:系统采用了一个外部中断,用它来捕捉VSYNC 同步信号,然后在中断里边启动ov7670 这个模块的图像数据存储,等到下次VSYNC 同步信号到来的时候,我们就关闭图像数据的存储,这样的话,一帧图像数据的存储就完成了,这个时候,就可以在主函数里边将这一帧数据读取出来,传送给单片机进行处理,同时,开始下一帧图像数据的存储就这样往复循环。

(4)存储读取图像数据:系统选用MCLK 与SMCLK的时钟源为XT2,实现各时钟信号的同步,并且等待XT2晶振的起振,调用串口初始化函数,完成串口初始化。接着,要调用摄像头中断初始化函数、摄像头初始化函数、摄像头写复位函数、摄像头图像捕获函数以及读复位函数,初始化摄像头并且打开外部中断,准备捕获图像。然后进行存储数据与读取数据。如图4 所示。

图4 存储读取图像数据示意图

(5)图像处理。为了兼顾算法的准确性和快速性,我将在数码管的七个部分上分别各取9 个点,存于数组中,去掉其中的最大和最小值,然后剩下的7 个点的Y值取平均值,如果大于设定的阈值,就判断数码管该部分为亮,如果小于设定的阈值,就判断数码管该部分为灭。依次判断好数码管7 个部分的亮灭情况后,汇总结果,就能得出数码管显示的数字是多少。9 个点,存于数组中,去掉其中的最大和最小值,然后剩下的7 个点的Y 值取平均值,如果大于设定的阈值,就判断数码管该部分为亮,如果小于设定的阈值,就判断数码管该部分为灭。依次判断好数码管的好坏。

3 图像处理

(1)RGB 转灰度色:对于彩色转灰度,有一个很著名的心理学公式Gray =R*0.299+G*0.587+B*0.11。实际应用时,希望避免低速的浮点运算,所以需要整数算法。注意到系数都是3 位精度的没有,实现整数运算算法是通过将它们缩放1000 倍心理学公式完成,即Gray =(R*299+G*587+B*114+500)/1000。

(2)中值滤波:中值滤波是一种典型的低通滤波器,是较为理想的非线性滤波技术,其特点是能够较好地保护目标图像边缘,可抑制脉冲噪声,滤除尖波干扰噪声。在对图像进行操作时,可以按灰度等级目的把局部区域的像素排序,将灰度的中值设置为灰度值。其流程如下:首先通过在滤波模板漫游模式,把图中某个像素位置与模板中心进行重合;然对读取模板中各对应像素的灰度值后自小到大进行排序;最后取中间数据加入相对应模板像素中心位置。这样就会对孤立的噪声像素即椒盐噪声、脉冲噪声具有良好的滤波效果。

(3)阈值分割:阈值分割法可分为与局部两种模式。局部模式就是把原始图像分成若干个划分小图像,然后对每一个子图像进行阈值选取,可以改善分割效果,值得注意的是,在使用局部模式后,相互接触的子图像的边沿处有时会出现边不连续性灰度级,这种情况要使用平滑技术修复。局部模式一般用灰度差直方图法与微分直方图法进行操作。在实际操作中注意把握以下几个两点:首先所取舍的每一块子图像尺寸要适当,不可过大或者过小,以免影响统计结果;二是所取舍的每一块子图像是任意分割的,避免出现子图像落在目标或者背景区域的现象,避免出现分割值出现较大的误差。局部模式的阈值法虽然效果较好,但需要对分割的对每个子图像进行统计,操作相对较慢,难以满足实时性的需求。

(4)提取骨架:图像细化(骨架化)是进行图像识别、线条类图像目标分析的重要手段。其基本步骤如下:读取图像文件—用graythreash 函数计算阈值—调用bwmorph 函数去除物体的边界像素—其余像素组成图像骨架并显示。

4 结束语

全文以单片机摄像头数据采集与处理为中心,设计了一种基于单片机图像采集与处理的功能,包括摄像头模块经平滑滤波,阈值分割,骨架提取等,并通过上位机软件的编写来显示图像。测量精度非常高,经过测试实验验证了系统的可行性,为智能车循迹奠定了基础。

[1]张晞,王德银,张晨.MSP430 系列单片机实用C 语言程序设计[M].北京:人民邮电出版社,2005.

[2]沈建华,杨艳琴.MSP430 系列16 位超低功耗单片机原理与实践[M].北京:北京航空航天大学出版社,2008.

[3]陆玲,周书民.数字图像处理方法及程序设计[M].哈尔滨:哈尔滨工程大学出版社,2011.

[4]孙兴华,郭丽.数字图像处理编程框架、理论分析、实例应用和源码实现[M].北京:机械工业出版社,2012.

猜你喜欢

管脚数码管摄像头
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
基于Qt的数码管数字编码系统的设计与实现
基于图像处理的异型电子元器件管脚偏移误差检测方法研究
CMOS数字IC管脚电容的估算与测量
奔驰360°摄像头系统介绍
HC08芯片JVT测试方法的探究