本文提出并设计了一种基于DSP和FPGA的嵌入式显微图像采集处理系统,如图1所示。其中,图像采集与处理装置是整个系统的关键部件,它以DSP和FPGA为核心,DSP作为中央处理器负责图像滤波、阈值分割及目标的数目、直径及面积等统计处理,通过FPGA完成各种接口逻辑和时序匹配,并配以大容量存储器用于图像的存储。DSP芯片体积小,运算速度快,使用灵活方便;FPGA具有在系统可编程和控制逻辑实现灵活的特点。因此,既能够满足处理的快速性,又能满足小型化便于携带的要求。
系统的工作过程为:系统上电后,DSP执行BOOTLOAD程序,将用户程序代码从外部Flash load到内部程序存储器,并执行A/D、字符迭加等初始化操作。视频采集与转换模块将CCD摄像机输出的模拟视频信号转换为数字图像数据并存储在RAM中,在一场图像采集完毕后,由场同步信号通过FPGA以中断方式通知DSP,DSP从RAM中读取图像,并负责完成图像滤波、分割、测量等各种处理算法,将测量结果通过字符图形迭加单元显示在监视器屏幕上,也可以根据需要由通讯接口模块传送给主机。各种接口逻辑与时序控制通过在FPGA器件内部编程实现。 其中:σ2(T)为两类间最大方差,WA为目标概率,μa为目标的平均灰度,WB为背景概率,μb为背景平均灰度,μ为图像总体平均灰度。即阈值T将图像分成A、B两部分,使得两类总方差σ2(T)取最大值的T,即为最佳分割阈值。
1 系统硬件平台设计
基于视频图像处理的显微图像处理系统的性能,在很大程度上依赖于其硬件处理单元的结构和性能。本系统所采用的硬件结构主要由5大模块组成:DSP核心处理单元、视频图像采集与存储模块、字符与图形迭加单元、通讯与用户交互接口模块、电源模块。
模拟视频信号分为两路:一路经A/D转换为数字图像信号,另一路则与视频叠加芯片MAX442和字符叠加芯片μD6453进行图形和字符的叠加显示。这里采用Philips公司的SAA7111A作为视频A/D解码芯片,它将CCD摄像机输出的模拟视频信号转换为数字图像数据,并在FPGA的控制下存储在RAM中,同时产生行同步信号HS、场同步信号VS、奇偶场标志信号RTS0以及像素时钟信号LLC2。MAX442是一个双通道视频信号放大器,增益带宽高达140MHz。μPD6453为NEC公司生产的用于视频设备中的字符发生芯片。待显示的字符和图形与CCD摄像机输出的原始图像一起叠加显示在监视器屏幕上。
在图像采集过程中,视频解码芯片SAA7111A按像素逐点输出4:2:2的YUV格式的数字图像数据。该格式中,每帧图像的分辨率为720×576,即每行有720个像素点,每帧576行,由于一帧图像是由奇、偶两场图像组成的,因此每场图像有288行。为了处理方便,每场采集的图像大小为512×256,即每行采集512个像素,每场(奇场或偶场)采集256行,通过在FPGA中编程实现像素延时和行延时,选择每行中间的512个像素和每场中间的256行。
2 软件设计
传统的DSP程序多采用单线程顺序结构实现,其实时性较差,资源利用率低,在高速、实时的图像处理领域中难以满足实际要求。CCS(Code Composer Studio)是一个完整的DSP集成开发环境,不仅集成了常规的开发工具,如源程序编辑器、代码生成工具(编译、链接器)以及调试环境,还提供了DSP/BIOS开发工具。DSP/BIOS是一个简易的嵌入式操作系统,它本身仅占用极少的CPU资源,而且是可裁剪的,能大大方便用户编写多任务应用程序,增强对代码执行效率的监控,提高程序的可读性,方便用户应用程序的编写,缩短软件开发周期。
2.1 软件程序框图
本文在DSP/BIOS的基础上,设计开发了显微图像处理系统的DSP应用程序。使用混合语言编程,用C语言设计程序中对运行时间影响不大的模块,用汇编语言设计严格要求实时性的核心算法。在这里,程序采用模块化设计,各个功能模块相互独立,程序框图如图3所示。该程序主要由1个主程序初始化模块、3个硬件中断HWI处理模块、1个软件中断SWI处理模块和4个任务模块TSK构成。
当系统复位后,DSP执行Bootload引导程序,并将程序入口点设置到c_int00处,DSP/BIOS应用程序从该处开始运行,执行过程为:首先调用DSP/BIOS初始化模块,并调用主函数main(),由main()函数负责完成硬件资源分配及各种外围芯片工作方式的初始化设置;然后启动DSP/BIOS,并进入空闲循环周期。这时,应用程序完全由硬件中断驱动,只有产生中断时,才会执行相应的功能模块,执行完毕后跳出继续执行Idle空闲循环程序。
2.2 图像处理算法设计
当采集完一场图像后,FPGA以中断方式通知DSP,触发DSP的INT0中断。由于一场图像的时间间隔为20ms,因此每隔20ms触发一次该中断。在中断处理程序Vs_interrupt()中启动键盘扫描SWI,若有键按下,则执行相应的图像处理程序。
显微图像受光源光照强度的影响很大,采集的图像往往质量较差、亮度不均匀,目标区域不易从背景区域中分离出来。为此,需要首先对图像进行滤波处理,然后采用自适应阈值的办法将目标从背景中提取出来,并利用数学形态学的方法进一步去噪处理,最后完成对图像中目标的统计测量计算。
首先,利用中值滤波进行图像平滑,窗口大小选择3×3,采用十字状窗口。中值滤波在保持目标图像边缘的同时,去除了尖峰干扰,使图像背景的亮度更均匀,便于进一步的图像分割处理。
由于光源光照强度的影响,背景的灰度值在整幅图像中存在很大差别,如果只用一个固定的全局阈值对整幅图像进行分割,则由于不能兼顾图像各处的情况而使分割效果受到影响。为提高分割的精确性,可采用随背景灰度值缓慢变化的动态阈值分割的方法,即自适应阈值算法。具体做法是:首先将原图像分解成系列子图像,由于子图相对原图很小,因此受阴影或对比度空间变化等问题的影响会比较小;然后对每个子图计算一个局部阈值;最后通过对这些子图所得到的阈值进行线性插值,就可以得到对原图中每个像素进行分割所需要的合理阈值。分割后的二值图像再利用数学形态学变换中的开、闭运算并选取合适的算子,便可以很好地消除图像中仍然存在的少量噪声点,利于下一步的工作。
为了实现对显微图像中目标的数目以及直径、面积等几何特征的统计测量,采用了对二值图像的目标区域进行标记归类的算法[7]。首先对二值图像的目标区域从左到右、自上而下进行扫描,若为目标点,则对其加以标记,并根据八连通原则将属于同一个颗粒的目标图像赋予相同的数值。标记归类算法示意图如图4所示。由于目标的几何形状是不规则的,一次扫描不能够把所有目标全部区分开来,因此要对二值图像进行多次扫描。图4(a)表示二值图像(黑色区域为目标,白色为背景),图4(b)为对目标区域的一次标记,图4(c)为最后标记完成的结果。其中,数字1表示1号目标,数字2表示2号目标。从图4可以看出,1号目标的标记经过一次扫描就能够完成,而2号目标则需要二次扫描方可完成标记。目标图像经过标记归类后就可以很方便地对目标的数目及直径、面积和周长等特征进行测量了。
3 实验结果
为了验证系统的可靠性,对来自显微镜下的油膜颗粒图像进行了大量的采集处理与统计测量实验.
在统计测量过程中,面积小于3个像元的目标被当作噪声干扰而略去不计,只对面积大于等于3个像元的目标加以统计。为了便于进一步的分析和比较,将目标按像元数目分成9个档次: 3~10、11~20、21~30、31~40、41~50、51~60、61~70、71~80和81以上。对颗粒的数目、平均面积以及各档次所占比例进行了统计计算,结果如表1所示。实验中,在DSP芯片TMS320VC5416工作在最大工作频率160MHz时,程序的运行时间约为15ms。由于视频采集为PAL制,一场图像时间为20ms,因此能够达到实时性要求。
本文提出了一种以TMS320VC5416作为图像处理的核心部件的嵌入式显微图像处理系统,设计了基于DSP/BIOS的应用程序。利用自适应阈值算法对采集的图像进行准确的分割,并采用扫描标记算法对油膜颗粒显微图像进行了统计测量实验。实验结果表明,利用本系统对颗粒显微图像进行统计,可达到全面、客观、方便且自动化程度高的效果,可以应用于各种显微图像的统计与分析,具有较高的实用性。
参考文献
[1] 辛莉,胡茂海,周绍光.水稻花粉颗粒显微图像采集与分析系统研究[J].应用光学,2004,25(1):43-45.
[2] 尤育赛,于慧敏,刘圆圆.基于粒度测量的重叠圆形颗粒图像分离方法[J].浙江大学学报(工学版),2005,39(7):962-966.
[3] TMS320VC5416 Fixed-Point Digital Signal Processor Data Manual,SPRS095O[J].Texas Instruments,2005,1.
[4] 清源科技.TMS320C54X DSP硬件开发教程[M].北京:机械工业出版社,2003.
[5] 潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2002.
[6] OTSU N.A threshold selection method from gray-level histogram[J].IEEE Trans,1979,SMC-15:652-655.
[7] 陈忠碧,张启衡.一种适合于多目标检测的图像分割方法[J].光电工程,2004,31(5):34-37.
系统的工作过程为:系统上电后,DSP执行BOOTLOAD程序,将用户程序代码从外部Flash load到内部程序存储器,并执行A/D、字符迭加等初始化操作。视频采集与转换模块将CCD摄像机输出的模拟视频信号转换为数字图像数据并存储在RAM中,在一场图像采集完毕后,由场同步信号通过FPGA以中断方式通知DSP,DSP从RAM中读取图像,并负责完成图像滤波、分割、测量等各种处理算法,将测量结果通过字符图形迭加单元显示在监视器屏幕上,也可以根据需要由通讯接口模块传送给主机。各种接口逻辑与时序控制通过在FPGA器件内部编程实现。
模拟视频信号分为两路:一路经A/D转换为数字图像信号,另一路则与视频叠加芯片MAX442和字符叠加芯片μD6453进行图形和字符的叠加显示。这里采用Philips公司的SAA7111A作为视频A/D解码芯片,它将CCD摄像机输出的模拟视频信号转换为数字图像数据,并在FPGA的控制下存储在RAM中,同时产生行同步信号HS、场同步信号VS、奇偶场标志信号RTS0以及像素时钟信号LLC2。MAX442是一个双通道视频信号放大器,增益带宽高达140MHz。μPD6453为NEC公司生产的用于视频设备中的字符发生芯片。待显示的字符和图形与CCD摄像机输出的原始图像一起叠加显示在监视器屏幕上。
在图像采集过程中,视频解码芯片SAA7111A按像素逐点输出4:2:2的YUV格式的数字图像数据。该格式中,每帧图像的分辨率为720×576,即每行有720个像素点,每帧576行,由于一帧图像是由奇、偶两场图像组成的,因此每场图像有288行。为了处理方便,每场采集的图像大小为512×256,即每行采集512个像素,每场(奇场或偶场)采集256行,通过在FPGA中编程实现像素延时和行延时,选择每行中间的512个像素和每场中间的256行。
2 软件设计
传统的DSP程序多采用单线程顺序结构实现,其实时性较差,资源利用率低,在高速、实时的图像处理领域中难以满足实际要求。CCS(Code Composer Studio)是一个完整的DSP集成开发环境,不仅集成了常规的开发工具,如源程序编辑器、代码生成工具(编译、链接器)以及调试环境,还提供了DSP/BIOS开发工具。DSP/BIOS是一个简易的嵌入式操作系统,它本身仅占用极少的CPU资源,而且是可裁剪的,能大大方便用户编写多任务应用程序,增强对代码执行效率的监控,提高程序的可读性,方便用户应用程序的编写,缩短软件开发周期。
2.1 软件程序框图
本文在DSP/BIOS的基础上,设计开发了显微图像处理系统的DSP应用程序。使用混合语言编程,用C语言设计程序中对运行时间影响不大的模块,用汇编语言设计严格要求实时性的核心算法。在这里,程序采用模块化设计,各个功能模块相互独立,程序框图如图3所示。该程序主要由1个主程序初始化模块、3个硬件中断HWI处理模块、1个软件中断SWI处理模块和4个任务模块TSK构成。
当系统复位后,DSP执行Bootload引导程序,并将程序入口点设置到c_int00处,DSP/BIOS应用程序从该处开始运行,执行过程为:首先调用DSP/BIOS初始化模块,并调用主函数main(),由main()函数负责完成硬件资源分配及各种外围芯片工作方式的初始化设置;然后启动DSP/BIOS,并进入空闲循环周期。这时,应用程序完全由硬件中断驱动,只有产生中断时,才会执行相应的功能模块,执行完毕后跳出继续执行Idle空闲循环程序。
2.2 图像处理算法设计
当采集完一场图像后,FPGA以中断方式通知DSP,触发DSP的INT0中断。由于一场图像的时间间隔为20ms,因此每隔20ms触发一次该中断。在中断处理程序Vs_interrupt()中启动键盘扫描SWI,若有键按下,则执行相应的图像处理程序。
显微图像受光源光照强度的影响很大,采集的图像往往质量较差、亮度不均匀,目标区域不易从背景区域中分离出来。为此,需要首先对图像进行滤波处理,然后采用自适应阈值的办法将目标从背景中提取出来,并利用数学形态学的方法进一步去噪处理,最后完成对图像中目标的统计测量计算。
首先,利用中值滤波进行图像平滑,窗口大小选择3×3,采用十字状窗口。中值滤波在保持目标图像边缘的同时,去除了尖峰干扰,使图像背景的亮度更均匀,便于进一步的图像分割处理。
由于光源光照强度的影响,背景的灰度值在整幅图像中存在很大差别,如果只用一个固定的全局阈值对整幅图像进行分割,则由于不能兼顾图像各处的情况而使分割效果受到影响。为提高分割的精确性,可采用随背景灰度值缓慢变化的动态阈值分割的方法,即自适应阈值算法。具体做法是:首先将原图像分解成系列子图像,由于子图相对原图很小,因此受阴影或对比度空间变化等问题的影响会比较小;然后对每个子图计算一个局部阈值;最后通过对这些子图所得到的阈值进行线性插值,就可以得到对原图中每个像素进行分割所需要的合理阈值。分割后的二值图像再利用数学形态学变换中的开、闭运算并选取合适的算子,便可以很好地消除图像中仍然存在的少量噪声点,利于下一步的工作。
其中:σ2(T)为两类间最大方差,WA为目标概率,μa为目标的平均灰度,WB为背景概率,μb为背景平均灰度,μ为图像总体平均灰度。即阈值T将图像分成A、B两部分,使得两类总方差σ2(T)取最大值的T,即为最佳分割阈值。
为了实现对显微图像中目标的数目以及直径、面积等几何特征的统计测量,采用了对二值图像的目标区域进行标记归类的算法[7]。首先对二值图像的目标区域从左到右、自上而下进行扫描,若为目标点,则对其加以标记,并根据八连通原则将属于同一个颗粒的目标图像赋予相同的数值。标记归类算法示意图如图4所示。由于目标的几何形状是不规则的,一次扫描不能够把所有目标全部区分开来,因此要对二值图像进行多次扫描。图4(a)表示二值图像(黑色区域为目标,白色为背景),图4(b)为对目标区域的一次标记,图4(c)为最后标记完成的结果。其中,数字1表示1号目标,数字2表示2号目标。从图4可以看出,1号目标的标记经过一次扫描就能够完成,而2号目标则需要二次扫描方可完成标记。目标图像经过标记归类后就可以很方便地对目标的数目及直径、面积和周长等特征进行测量了。
3 实验结果
为了验证系统的可靠性,对来自显微镜下的油膜颗粒图像进行了大量的采集处理与统计测量实验.
在统计测量过程中,面积小于3个像元的目标被当作噪声干扰而略去不计,只对面积大于等于3个像元的目标加以统计。为了便于进一步的分析和比较,将目标按像元数目分成9个档次: 3~10、11~20、21~30、31~40、41~50、51~60、61~70、71~80和81以上。对颗粒的数目、平均面积以及各档次所占比例进行了统计计算,结果如表1所示。实验中,在DSP芯片TMS320VC5416工作在最大工作频率160MHz时,程序的运行时间约为15ms。由于视频采集为PAL制,一场图像时间为20ms,因此能够达到实时性要求。
本文提出了一种以TMS320VC5416作为图像处理的核心部件的嵌入式显微图像处理系统,设计了基于DSP/BIOS的应用程序。利用自适应阈值算法对采集的图像进行准确的分割,并采用扫描标记算法对油膜颗粒显微图像进行了统计测量实验。实验结果表明,利用本系统对颗粒显微图像进行统计,可达到全面、客观、方便且自动化程度高的效果,可以应用于各种显微图像的统计与分析,具有较高的实用性。
参考文献
[1] 辛莉,胡茂海,周绍光.水稻花粉颗粒显微图像采集与分析系统研究[J].应用光学,2004,25(1):43-45.
[2] 尤育赛,于慧敏,刘圆圆.基于粒度测量的重叠圆形颗粒图像分离方法[J].浙江大学学报(工学版),2005,39(7):962-966.
[3] TMS320VC5416 Fixed-Point Digital Signal Processor Data Manual,SPRS095O[J].Texas Instruments,2005,1.
[4] 清源科技.TMS320C54X DSP硬件开发教程[M].北京:机械工业出版社,2003.
[5] 潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2002.
[6] OTSU N.A threshold selection method from gray-level histogram[J].IEEE Trans,1979,SMC-15:652-655.
[7] 陈忠碧,张启衡.一种适合于多目标检测的图像分割方法[J].光电工程,2004,31(5):34-37.