CCD图像检测<三>
作者:一点一滴的Beer 指导教师:Chen Zheng 单位:WHU
四、相关调试手段
在嵌入式系统中摄像头调试的目的是使摄像头的机械和电气参数在满足系统要求下能产生质量最高的图像数据。一个涉及硬件和软件的成像系统,成像的质量好坏往往受到来自外界干扰和自身限制的很多因素的影响,这些影响会产生噪声和成像不均匀。来自软件层面的因素往往是算法的问题,这个层面的问题可以通过理论分析的数学计算解决,来自硬件层面的因素则而要用仪器进行调试,通过实验测量分析才能解决,由于硬件处理系统底层,所以硬件的质量会直接影响软件的质量,从而影响最终成像质量。对摄像头进行调试就是要从硬件层面上尽量消除干扰。同时,因为视频信号最后交给芯片后的信息就是一些数字量,这些表征图片信息的数字量对于程序的设计者来说是极其不直观的,这样会造成处理上的一些困难。合理利用好调试手段,对帮助用户发现硬件问题和直观再现数字图片以及一些参数的整定是极其有用的。
4.1软件调试系统。
在去过一年里面,笔者利用Visual C++平台开发了两款软件如下,来对摄像头采集数据还原和仿真。
4.1.1基于串口通讯的图像显示软件。
图24:图像显示软件
以上软件的主要作用是:在小车静止时利用串口通讯将摄像头所见在PC机上直观呈现出来,而且能导出数据供用户分析。对于没有LCD显示技术的用户来说,本软件也可以作为上文中的硬件二值电路电阻参数调整的辅助工具。本软件的使用方法也比较简单,在下位机程序中,只需编写一个串口接收中断处理函数,在函数体中将图片矩阵数据依次发送完毕即可。
本软件的编写过程在此不再赘述,对于有一些MFC编程经验的同学来说,自己编写也并不困难。故笔者只对主要应用到的一些技术作些罗列:
1.基于MSCOMM控制的串口通讯编程应用。以实现图片矩阵数据从下位机通过串口传送到上位机。
2.利用API函数Rectangle(*)和FillSolidRect(*)分别绘制矩形块和控制矩形块的填充颜色。不同位置的矩形块颜色对应着不同位置的数字图像矩阵数据,这样就能将数据还原成图像直观再现。
3.利用CFile类,将接收到的图片灰度数据以矩阵式排列导出保存为文本文件。一方面能够方便用户精确看到每一个像素点的具体灰度值,另一方面对于习惯用VC进行仿真的用户来说,为其VC仿真提供了数据来源。
4.1.2图像数据仿真播放器。
图25:图像数据仿真播放器
以上软件的主要作用是:小车在跑道上运行一周后,将赛道图片存储到扩展的FLASH模块中,然后再利用串口通讯将所有数据发送到上位机并存储为一个二进制文件,然后本软件就对此文件进行播放。可以观测小车的动态信息。而且一些图像处理算法可以在此仿真,比如:图像分割阈值的选取,图像中心线的提取等等。对比直接在下位机上进行图像处理,此方法能够直观显现处理效果图,而且还能将相关的计算结果显示出来。由于本播放器为动态显示,能够将小车运行过程中见到的所有赛道类型全部存储下来,所以也可以用来验证图像处理算法的通用性和正确性。
本软件的编写过程在此不再赘述,对于有一些MFC编程经验的同学来说,自己编写也并不困难。故笔者也只对主要应用到的一些技术作些罗列:
1. 利用CFile类,读取图片文件并进行播放和导出中间数据。
2.利用API函数Rectangle(*)和FillSolidRect(*)分别绘制矩形块和控制矩形块的填充颜色。
3. 利用系统的定时函数OnTimer(UINT nIDEvent)来对图片进行刷新播放。
(现在觉得这个东西用处其实不大,因为我当时还没有能够做到把让串口持续通讯把FALSH中的数据传到上位机中,这个软件只是简单的对用另外一个软件读取的FLASH中的图片信息文件进行播放和再现,可以做一些简单仿真模拟吧。其实还可以结合数据库技术的,可惜当时什么都不会,现在对.NET的数据库编程比较熟悉了,可惜没有那个精力再回头去做这个了。)
4.1.3基于VB的通讯数据接收软件。
图26:基于VB的通讯数据接收软件
配合下位机,通过串口通讯对FLASH模块中的数据进行读取并以二进制文件形式存储到PC中,保存小车运动过程中摄像头看到的赛道信息。(由于本程序涉及到复杂的和下位机的通讯协议,非笔者能力所及,由指导老师开发)。这外软件很好用,可是我不会VB啊。
4.2硬件调试部分。
4.2.1配备电视盒的CRT显示器调整视野。
将通电后的CCD的视频线和地线接至电视盒,然后再连接CRT显示器,直接由CRT显示模拟信号。此显示方法,可以用来先对摄像头镜头调焦,使成像清晰,也可以用来测量摄像头的视野参数,为图像校正提供计算依据。
4.2.2基于HCS12芯片SPI读写FLASH存储图像数据。、
此技术由指导老师开发。在MCU板上扩展一块FALASH芯片,然后在小车运行时实时记录摄像头看到的赛道信息,供用户分析。(涉及到比较复杂的下位机程序编写,亦非笔者能力所及,相关技术由指导老师开发)。
4.2.3利用LCD实时显示二值图像。
实物图 | CRT图 | LCD图 |
图27:几种硬件图像显示手段
4.2.4基于ARM的车载摄像头信息存储系统设计。
用串口读取FLASH中的图片信息并发送到上位机,因为图片数据量巨大,往往一个20s的图像数据就要传送几十分钟,所以很耗时,效率不高。故笔者构想,用一个完全独立的模块来记录小车运动中的图片信息,供用户分析。
选择ARM内核的STM32作为处理器,引入一根视频信号线,然后AD,再利用SPI对SD卡写入FAT文件系统的二进制文件。需要图像信息时,在PC机上从SD卡上直接读出,然后再结合图像数据仿真播放器即可以动态呈现小车运动所见情况。