基于CCD的图像采集处理系统的研究
2008-08-06
作者:黄素贞 尹立新 张国梁
摘 要: 以CCD作为图像传感器,以CPLD作为图像采集系统的控制核心,以DSP作为基本图像处理单元,实现了图像自动采集处理系统,完成了图像的快速采集、存储及数据处理。不仅对系统的硬件设计和软件设计进行了讨论,而且对应用的算法也进行了简单的介绍。
关键词: CPLD CCD A/D" title="A/D">A/D DSP 图像处理
CCD是一种光电转换式图像传感器。它利用光电转换原理把图像信息直接转换成电信号,这样便实现了非电量的电测量。同时它还具有体积小、重量轻、噪声低、自扫描、工作速度快、测量精度高、寿命长等诸多优点,因此受到人们的高度重视,在精密测量、非接触无损检测、文件扫描与航空遥感等领域中,发挥着重要的作用[1]。对被测图像信息进行快速采样、存储及数据处理,是线阵" title="线阵">线阵CCD数据采集发展的新方向。寻找满足要求的处理器已成当务之急。DSP(数字信号处理器)是一种具有高速性、实时性和丰富的芯片内部资源的处理器,它的出现为人们解决了这个难题。为了节约成本、减少体积,本文用CPLD控制图像的读入,以TMS320VC5402 DSP作为处理器,并结合CA3318CE A/D转换器介绍一种CCD图像采集处理系统的设计方法。根据课题研究,将此系统应用于手写体数字的采集和识别中。如果配以适当的光学系统,便可以实现光-机-电-算一体化设计。
1 系统概述
本系统主要由线阵CCD、ADC、DSP、可编程逻辑器件CPLD等几部分组成。待输入图像经光源照明后,经物镜成像在CCD光敏元件阵列上,CCD通过驱动电路完成一次Y方向的自扫描。在控制电路的作用下,CCD输出信号进行滤波放大处理,并经A/D转换电路进行数字化处理。一行图像数据通过数据通道进入帧存储器。以上操作与CCD自扫描同步进行,不受CPU的控制。随后,控制电路启动步进电机,带动进纸机构移动到下一采样位置,CCD又进行Y方向的自扫描,并重复上述过程,输入第二行的数据,直至整幅画面输入完毕。DSP读取存储器存储的处理数据,并根据用户的要求将处理结果上传给主机供用户使用。系统结构图如图1所示。
2 基本硬件组成
2.1 线阵CCD传感器
本系统采用TCD1208AP线阵CCD作为图像传感器。TCD1208AP是日本TOSHIBA公司生产的线阵CCD传感芯片,具有2160个像元,像元尺寸及间距为14μm×14μm;TCD1208AP具有灵敏度高、暗电流低等特点,工作电压为单一的5V,是二相输出的线阵CCD器件。主要用于通信传真、图像扫描、光学字符阅读机等场合。TCD1208AP传感器共需要四个5V的驱动时钟(SH、RS、Ф1、Ф2)。时序图如图2所示。
2.2 放大滤波及A/D转换
TCD1208AP传感器输出信号OS有以下特点:
·负极性信号
·包含有周期性的复位脉冲串扰
·有效信号幅值较小
CCD输出信号的上述特点决定了它不能直接送入A/D转换器,必须先从硬件上对其进行一系列的预处理,消除信号中的驱动脉冲(主要是复位脉冲)及噪声等所造成的干扰,因此需将信号进行前置反向、滤波及放大。在电路设计中,选用一片CA3450运算放大器进行反向、放大;并在CA3450的输出端接一级RC滤波器滤除噪声。经过上述处理的信号就可以被送入A/D转换器进行数字化处理。8位、高速、并行闪速结构的A/D转换芯片(CA3318CE)的转换速率(最大为15MHz)完全可以满足CCD(1MHz)的工作要求,利用A/D转换技术将信号转换成与之相应的、能够反应图像灰度变化的数字量,提高了测量精度和分辨率。当CA3318CE的输出使能有效时,就可以将A/D转换结果送至8位数据线上。这样,在数据存储器写允许及地址有效的前提下,就能将数据写入数据存储器SRAM中。
2.3 可编程逻辑电路CPLD
CPLD的主要作用有:用来控制CCD的驱动时钟、各种同步控制时钟(A/D转换,数字信号存取)以及存储器地址的产生。合适的CPLD是根据实际需要在实验过程中选定的,在设计中选用了ALTERA公司的MAX7000系列芯片EPM7128S,该系列芯片是典型的通过JTEG在线编程的CPLD器件。外部时钟信号作为CPLD的基准信号,其它时序信号的产生都是以此为基础的。
2.4 步进机构
线性CCD是逐行扫描的,要想得到清晰的图像,对步进机构的速度是有要求的。步进机构应该匀速运动,其速度必需和扫描速度保持一致。影响水平方向分辨率的主要原因是转动电机的转速。虽然转速越高,越节省时间,但是扫描间隔却相应增大,分辨率下降;转速越低,则分辨率越高。
2.5 TMS320VC5402处理器
TMS320VC5402是定点数字信号处理器,体系结构为哈佛结构,具有先进的多总线结构,40位算术逻辑单元(ALU)包括一个40位桶形移位寄存器和两个40位累加器,数据/程序寻址空间为64K/1MB,内置16KB的RAM和4KB的ROM,有两个缓冲串口。另外,它还提供DMA方式和多种片内外设,操作速度最高为100MIPS。
3 系统的硬件设计
3.1 CPLD控制信号
根据驱动脉冲时序关系确定时钟驱动信号SH、Φ1、Φ2和RS的参数。各路脉冲的技术指标如下:RS=1MHz,占空比为1:3,方波;Φ1=Φ2=0.5MHz,占空比为 1:1,方波,Φ1、Φ2在并行转移时是一个大于SH=1持续时间的宽脉冲;在SH的光积分时间内,至少有2212个RS脉冲。在设计中,SH波形采用计数器的形式进行设计。Φ1、Φ2、RS的波形由分频产生。行同步信号" title="同步信号">同步信号Фc与SH同周期,利用Фc的上升沿" title="上升沿">上升沿使A/D转换器进入工作状态(Фc为低电平时,A/D转换无法启动),它的上升沿对应CCD输出信号的第一个有效像素。SP是像元同步信号,它的脉冲频率是复位信号RS的整数倍。为了保证CCD输出、A/D转换、地址发生三者同步,将CCD驱动电路的RS与ADC的时钟CLK相连,存储器的写允许端与ADC的允许端相连。部分设计程序如下:
PROCESS(CLK,RESET)
BEGIN
IF RESET=‘1’ THEN CNTB<=0;
ELSE
IF CLK'EVENT AND CLK=‘1’ THEN
IF CNTB>2212 THEN CNTB<=0;
ELSE CNTB<=CNTB+1;
END IF;
END IF;
END IF;
END PROCESS;
PROCESS(RESET,CNTB)
BEGIN
IF RESET='1' THEN SH<='1';
ELSE
CASE CNTB IS
WHEN 0 TO 2212=> SH<=‘0’;
WHEN OTHERS=> SH<=‘1’;
END CASE;
END IF;
END PROCESS;
PROCESS(CLK,RESET)
BEGIN
IF RESET=‘1’ THEN CNT<=0;
ELSE
IF CLK'EVENT AND CLK=‘1’ THEN
IF CNT<5 THEN
CNT<=CNT+1;
ELSE CNT<=0;
END IF;
END IF;
END IF;
END PROCESS;
PROCESS(CNT,RESET)
BEGIN
IF RESET=‘1’ THEN F1<=‘1’;F2<=‘0’;
ELSE
CASE CNT IS
WHEN 0 =>F1<=‘1’;F2<=‘0’;
WHEN 4 =>F1<=‘1’;F2<=‘0’;
WHEN 5 =>F1<=‘1’;F2<=‘0’;
WHEN OTHERS=> F1<=‘0’;F2<=‘1’;
END CASE;
END IF;
END PROCESS;
根据所要摄取图像的数据量,选用三片IS61LV5128AL-12T SRAM(共1.5M),用来存放一帧图像数据。它们的地址线和读写控制线是由CPLD提供的。
SRAM地址信号的产生是通过计数器实现的,这里将A/D转换的时钟同步信号作为计数器的计数时钟信号。每次采样前,设初始地址为零,时钟同步信号每出现一次下降沿,地址值加1。在采集完一帧数据时地址自动复位。考虑到延时的问题,数据信号与地址信号不能同时发生。如果写信号一直有效,会造成同一地址存放不同的数据,从而影响了输出数据的正确性。针对这一问题,在设置写信号WR时,检测地址ADDR最后一位(ADDR[0])和时钟同步信号的上升沿的变化。当检测到ADDR[0]变化时,WR置低,说明有效;当检测到时钟同步信号上升沿到来时,WR置高,此时无效。这样每一位数据都能被写入相应的地址中。
在设计中,时序发生器产生的所有驱动和控制时序信号都是在MUXPLUSII开发环境下设计完成并经编译、校验后在线下载到CPLD器件内部的。可见,一片CPLD可以替代原来的几十个分立元件来实现CCD图像读入系统中各种驱动和控制时序逻辑,而且CPLD还允许设计编程保密位。总之采用CPLD有利于减小系统电路板的面积、提高系统的安全保密性、降低系统功耗和保证产品的质量。
3.2 DSP的控制信号
当系统启动时,DSP通知EPM7128S启动采集,采集完毕后DSP便可以访问SRAM中的数据,并完成后继的图像处理工作。另外,在本系统中,DSP还有一个重要的功能,即负责控制SRAM的访问权。在系统中,ADC以及DSP都需要对SRAM进行访问,这必然会产生SRAM的访问争用问题。对于这一问题是通过DSP来解决的。在采集图像期间,DSP通过XF引脚控制缓冲/驱动器SN74LVTH16244,使得采集期间ADC与SRAM导通,DSP与SRAM隔离;在处理数据期间,DSP与SRAM导通,ADC与SRAM隔离,这样就解决了ADC、DSP对SRAM的使用权争用问题。
3.3 存储空间扩展
TMS320VC5402的数据寻址空间只有64K,而一帧图像的存储量达到1M多,由于硬件资源的限制和实时处理的要求,要存储这么大的数据,必须进行存储空间的扩展。
所以在系统中,采用I/O" title="I/O">I/O空间扩展。由于I/O空间全部是片外的,所以进行扩展后上述问题得以解决。具体实现如下:首先将HPI端口通过硬件或软件设置成通用I/O端口,然后把这些端口作为片选信号进行空间扩展。当进行寻址时,首先在HPI的端口输出相应的片选信号,然后在地址总线上输出相应的地址值,这样就完成了数据的存储和处理。
4 系统的软件设计
单帧读入识别过程如下:
(1)DSP发帧启动脉冲Fstart给CPLD,地址译码器和触发器清零。
(2)CPLD接收Fstart。
(3)开始行扫描,并将数字化后的信号存入SRAM。完成一行采集,发DMA信号给DSP。
(4)DSP接收到DMA信号后,启动步进电机前进。
(5)步进电机到达一定位置时,转为(3)。
(6)一帧数据采集完毕时,发中断信号Ready给DSP,DSP读取SRAM,处理数据。
(7)数据处理完,若有新页,则转到(1)。
软件流程图如图3所示。
5 识别算法
根据手写体数字的特征,采用一种简单易行的识别算法。算法中主要包括图像的预处理、特征提取和识别。
(1)二值化。二值化处理是将得到的灰度图像转化为二值数字图像,本系统采用全局阈值法进行二值化处理。
(2)平滑。由于平滑能够去除孤立的噪声、干扰,能平滑笔画的边沿,所以这是必不可少的预处理步骤。这里使用一种简单且行之有效的平滑方法——中值滤波方法。
(3)分割。图像的分割是从图像采集中所得到的整幅图像中分出需要识别的数字图像区和无用的背景图像区。由于手写体数字的限制,这里采用基于方框的查找法。
(4)规范化。为了便于对任意字符的特征提取,还要对字符进行正规化处理。由于每个手写数字的大小和在框内相对位置的不同,不能直接进行训练和识别,所以对处理后的点阵数据用基于重心的位置规范法进行规范,使之成为16×16的点阵数据格式,为后续的处理所用。
(5)细化。本文采用并行细化算法[4]。该方法采用16种3×3的邻域作为删除模板“剥去”图像的最外层,同时又采用两种3×4的邻域作为恢复模板恢复被删去的影响连续性的关键点,从而达到每次迭代都能完全“剥去”图像的最外层而不破坏图像连续性的目的。这种方法计算量小,所得骨架基本上位于图像的中轴,端点无明显的收缩,能满足本文所用识别方法对细化结果的要求。
特征提取的主要任务是对预处理后的二进制点阵数据进行处理,提取出数字图像中有关骨架、轮廓、拓扑结构、笔划分布等方面的特征信息,再送给分类器。本文提取数字的离散余弦特征。
考虑到DSP芯片的程存空间及识别速度,本系统采用的是传统的手写体数字识别算法——BP网络算法,对单个字符进行识别。本文用了三层BP实现手写体数字的高效率识别。输入层来自数字的离散余弦特征,输出层有10个单元,分别代表0~9这十个数字。在学习过程中,为了提高学习速率,对学习步长η进行了不断的自适应调节。
6 试验结果及经验总结
经过在测试集上测试,当拒识率为3.10%时,硬件识别系统的识别率达到94.52%,可靠性为97.54% ;当拒识率为2.95%时,硬件识别系统识别率达到了94.79%,可靠性为97.68%。可见此系统具有较好的性能。在试验过程中,总结出以下几点经验:
(1)在设计时最好了解CPLD的内部结构,这对逻辑设计和实现有很大帮助。
(2)使用的I/O超过80%或者资源利用率超过80%时,布线的布通率将不能保证。
(3)算法尽可能简单,以提高图像处理的速度。
本系统将图像输入、识别集成到一个系统中,很好地实现了图像的快速采集、存储及数据处理功能,具有一定的实用价值。对于高分辨率要求的图像采集识别系统来说,本方法依然适用。在硬件方面,如果用TMS320VC6201代替TMS320VC5402,效果将更佳。在识别方法上,如果将本文的识别方法作为多级分类器的一类,和其它一些基于统计的方法,如外围轮廓法、数学变换法等结合在一起,应该能够取得更好的识别效果。
参考文献
1 王庆有.CCD应用技术[M].天津:天津大学出版社,2000
2 TCD1208AP. TOSHIBA Corp., 1997
3 TMS320VC5402 Fixed-point Digital Signal Processor. Texas Instruments,1998
4 朱 江,宣国荣. 一种基于骨架特征顺序编码的脱机手写体数字识别方法[J].小型微型计算机系统,2001;22(8)
5 李 彩,刘 勇,王 安. MAX7000S在线阵CCD数据采集卡中的应用[J].量子电子学报,2003;20(1)