1 引言 数字水准仪是在自动安平水准仪的基础上发展起来的,他采用条纹编码标尺和电子影像处理原理,用线阵CCD替代观测员的肉眼,将望远镜像面上的标尺成像转换成数字信息,再利用数字图像处理技术来识别标尺条码进而获得标尺读数和视距。
本文设计的数字水准仪数据采集系统是以89C51单片机为核心,Intel8253计数器作为同步控制器,控制A/D转换器对CCD的输出信号定时采样。系统采用等间隔、多周期采样的方法实现低速A/D转换器对高分辨率线阵CCD输出信号的数据采集,并将采集结果通过串口传给微机,在微机系统采用数字滤波、边缘检测等数字图像处理技术对采集数据进行数据处理,提取条码边缘,再根据几何光学物象比的关系,求出视距和视线高读数。 2 硬件电路设计及工作原理
2.1 硬件电路设计
系统硬件电路如图1所示,主要由89C51单片机、A/D转换器及其接口电路组成。
本系统计数器Intel8253选用计数器2,采用方波脉冲方式(方式1)和连续负脉冲方式(方式2)相结合的方法。其门控信号和时钟脉冲信号分别由CCD驱动电路输出的行同步脉冲信号FC和像元同步脉冲信号SP来控制,从而实现Intel8253的输出信号与CCD输出的视频信号同步。Intel8253在89C51的控制命令下工作,产生与像元同步的驱动A/D脉冲,使A/D转换器在CCD输出像元信号的有效时间进行A/D转换。
考虑系统合理的转换速度和性能价格比,A/D转换电路采用转换时间为25μs的12 b逐次比较型A/D转换器AD574。其工作状态由CE,CS,R/C,12/8,A0五个控制信号决定。对于本系统AD574进行8 b数据转换可满足系统精度要求,因此提高了A/D转换时间。图1中AD574的CE端接+5V,CS接地,使A/D转换器始终处于允许工作状态。12/8接地,启动8b数据转换。A0由74LS138的Y7控制,读/转换控制端R/C由8253的OUT2端来控制,采用单极性输入。转换结束状态口线STS接到89C51的P1.1口,采用查询方式读取转换结果。
2.2 工作原理
CCD在驱动电路的驱动脉冲作用下输出视频信号经低通滤波送到A/D转换器的模拟信号输入端。由于A/D转换器的转换频率底于CCD的工作频率,系统采用等间隔重复扫描的方式对CCD输出的信号进行采样。当系统上电后,在FC信号的第一个下降沿时刻响应外部中断0,置8253工作方式1和计数初值,8253开始计数,计数完输出第一个负脉冲信号。该信号启动A/D转换,同时查询INT1口状态。
当8253输出第一个负脉冲信号的下降沿时刻,8253重置工作方式2和计数初值。使8253按新的计数初值开始计数,输出连续的负脉冲信号。同时不断查询P1.1口的状态,当P1.1为低电平时,不断读取A/D转换结果。在下面连续的FC信号周期,重复上述过程,完成对所有有效信号点的采样。 3 系统的软件设计
本系统的应用程序采用了模块化程序设计的方法,按功能主要分为2大部分。前一部分是采用MCS-51汇编语言开发由89C51的单片机执行程序,包括数据采集程序和单片机通信程序2个模块。后一部分是用VC++高级语言编写的由IBM-PC机执行的程序,包括PC机通信程序、边缘检测和条码识别程序3个模块。PC机与单片机采用判别等待通讯协议进行连接,各模块之间使用子程序调用,使整个系统有机地成为一体。单片机数据采集及数据通讯和PC机数据通讯及数据处理子程序流程框图如图2和图3所示。
3.1 数据采集程序模块
由于系统采用的是普通A/D采集电路,采样速度低,无法与正常工作的CCD信号速度同步,本系统的数据采集程序模块采用等间隔重复扫描的方式对CCD图像进行采样。采集结果通过串口传送给PC机,以便对采集结果进一步作数据处理和实现图形显示。
3.2 数据通讯程序模块
数据通讯程序模块由单片机通讯程序和PC机通讯程序2个部分组成。单片机上电后,接收到联络信号,给PC机发应答信号并开始进行数据采集,同时将采集结果通过串口发送给PC机。PC机通信程序通过串口通讯MSComm控件,设置通讯参数,接收应答信号,读取采集结果。
3.3 数字滤波程序模块
采集结果通常混杂有噪声信号,为提高测量精度,本系统采用均值滤波方法消除随机误差的影响,运用中值滤波方法消除脉冲噪声的影响,再运用指数基的平滑滤波 器方法,对采集图像进一步作平滑处理。经实验结果证明采用该方法滤波效果较好。 3.4 边缘检测、条码识别程序模块
对标尺条码的边缘检测是数字水准仪数据处理系统中非常重要的环节,边缘检测的定位精度将直接影响条码识别的准确度。为使被噪声污染的条码图像很好的检测出边缘,结合数字水准仪标尺条码的特点,本系统选用基于指数基的平滑滤波器的快速一维边缘检测方法,该算法是DeriChe依据Canny设计思想导出的边缘检测算子,具有较好的单、双边定位精度和较快的检测速度。该算法采用的平滑算子和边缘检测算子可用递归算法代替卷积运算,大大提高运算速度。该算法的实现过程如下:
(1)运用平滑算子的递归公式对图像进行平滑化处理。
依据Canny设计思想导出的平滑算子为:
(2)运用一阶导数算子的递归公式求图像极大值点
DeriChe推导出的一阶导数边缘检测算子为:D(n)=kne-σ|n|,对D(n)进行Z变换和反Z变换,求得一阶导数算子的递归公式为:
(3)运用二阶导数算子的递归公式求图像零交叉点
(3)确定边缘点
找出同时满足一阶导数最大值和二阶导数零交叉的点,即为条码的边缘点。
根据CCD的光电转换原理,判别首边缘点是对应亮条码还是暗条码的边界位置点,求出亮、暗条码宽度,进而识别出条码。
3.5 视距和视线高计算程序模块
标尺条码中的R码是用来求视距的,视距不同,成像在线阵CCD上标尺截距不同,但至少应包含两组R码,本系统设计的标尺条码相邻两组R码的间距为P(=40mm),他在CCD线阵上成像所占的象素个数为Z,象素宽为b(=14μm),则P在CCD上的成像长度为:L=Z×b,再根据几何光学成像原理,即可求出视距:D=P/L×f(望远镜物镜的焦距)。
本系统中采用相位差法设计标尺条码,标尺中位于任意两组R码之间的A码、B码和C码的条码宽度组合具有惟一性,即任意一组A码,B码,C码,R码的组合对应标尺的高度值具有单值性。利用线阵CCD中心像元所在的那组A码,B码,C码宽度值,可以算出该组条码中R码的高度,再利用该中心R码所对应的像元和CCD中心像元的偏差,即可算得视线高读数。4 结论
本文介绍的数字水准仪数据采集与数据处理系统,解决了高分辨率线阵CCD与低速A/D转换速度低的矛盾。系统硬件结构简单、设计成本低、软件算法简单、运算速度快、界面友好。经过初步实验,系统能够达到预期的效果。
|