1 引言
数字图像处理技术广泛应用于机器视觉、自动化检测和视频监控等领域。通用的图像处理系统采用图像采集卡将图像传送至PC,从而实现图像处理的各种算法。近年来,随着集成电路和嵌入式技术的发展,特别是DSP集成度、稳定性、运算速度、数据吞吐量等性能的不断提高,以DSP为核心的实时图像处理系统得到开发。采用DSP实现快速数字图像处理可将算法嵌入到DSP中,充分利用DSP的高速性和并行性,提高系统的运行速度,达到数字图像处理的实时性。相对于基于PC机的通用图像处理系统,基于DSP的图像处理系统具有体积小,功耗低等优点,适用于嵌入式系统领域。
在图像处理中检测圆通常需要计算圆形度,半径,圆心位置等圆参数。Hough变换是目前应用最广泛的圆检测方法,该方法可靠性高,在噪声、变形、甚至部分区域丢失的状态下仍然能取得理想效果。但其缺点是计算复杂,内存需求大。算法的实时性很差,不能满足实时性的要求。
根据某项工程的实际要求,对标准Hough变换检测圆算法进行改进,并在TMS320DM642平台上实现,取得较好的检测效果,并达到实时性要求。
2 算法运行平台
算法运行平台采用北京合众达公司的SEED-DTK-VPM642多媒体实验平台,该平台采用TI公司的TMS320DM642作为核心处理器。TMS320DM642是专用于数字媒体应用的高性能32位定点DSP,工作主频最高达720 MHz,处理性能可达5 760 MI/s,强大的图像处理能力为实现算法实时性和可靠性提供保证。该实验平台的整体功能框图如图1所示。前端通过CCD摄像机获得视频图像,经视频解码器TVP5150的数字化处理后,形成并行数字码流以EDMA传输方式将数据传送到TMS320DM642的数据输入缓冲区,对图像进行实时处理后的数据自动通过EDMA传输至数据输出缓冲区,再通过视频编码器SAA7121形成码流,传送到显示器显示检测结果。在整个算法的实现过程中,为了满足实时性的要求,都是以EDMA的传输方式传输数据。
3 Hongh变换圆检测算法的实现
3.1 Hough变换圆检测算法的改进
Hough变换的基本思想是将图像从空间域变换到参数空间,用大多数边界点满足的某种参数形式来描述图像中的曲线。假设在x-y平面检测并确定一个圆的参数,图像中待检测圆周点的集合为{(xi,yi),i=1,2,3,…,n},(x,y)为该集合中的一点,其在参数坐标系(a,b,r)中解析式为:
该解析式对应的曲面为三维锥面。图像中任意确定的一点均有参数空间的一个三维锥面与之对应。对于圆周上的任一点{(xi,yi),i=1,2,3,…,n},这些三维锥面构成圆锥面簇,如图2所示。
若集合中的点均在同一个圆周上,则这些圆锥面簇相交于参数空间上某一点,该点恰好对应于图像平面的圆心坐标及圆的半径。Hough变换在计算上将参数空间进一步分割为累加器单元A(i,j,k),并先使累加器单元置零。根据式(1)对参数作相应循环,如果一个a(i)值得到相应的b(j),r(k),就令A(i,j,k)=A(i,j,k)+1。最后对每个累加器进行比较,找到最大值累加器,该累加器所对应的参数值(a,b,r),就是在平面上所要检测圆的圆心及半径。
标准Hough变换的计算非常复杂,在圆形检测应用中随着取值范围的不断扩大,在参数域的三维数组尺寸成正比例增加,需要占用大量计算机内存,计算效率低下。因此,尽可能缩小参与Hough变换的参数域范围是提高其效率的关键。对其改进的步骤如下:
第一步:对图像作canny边缘检测处理,得出图像中待检测圆的单像素宽的边缘;
第二步:求出图像中待检测圆边缘在上,下,左,右4个方向上的极点,然后根据圆的几何对称性,采用“最小外接矩形法”估算待检测圆的圆心及半径,生成相应的子图,并滤除图像中的噪声。“最小外接矩形法”估算圆参数方法如图3所示,其中圆心O为
第三步:考虑到图像可能存在缺陷和噪声,对估算所得到的圆心及半径进行适量缩放,从而缩小参与Hough变换的参数域范围。
第四步:在确定的圆心及半径范围内,根据圆的参数方程进行。Hough变换,从而检测圆的参数。
3.2 基于DSP/BIOS和RF5架构的算法实现
算法的实现是基于CCS和DSP/BIOS及TI倡导的DSP软件架构RF5。该算法分为输入任务、处理任务、输出任务3个任务,软件框架如图4所示。
在初始化完成后,系统进入DSP/BIOS任务调度管理,3个任务通过RF5的SCOM模块互相发送消息。
这3个任务完成的工作是:
(1)输入任务 从输入设备驱动程序获得视频图像。它使用驱动程序提供的FVID_exchange调用从输入设备获得一帧新视频图像。输入任务接着发送消息到处理任务,消息中包含图像数据指针,接着等待输出任务发送来的消息以继续运行。
(2)处理任务 一直等到接收输入任务,包含图像数据指针消息,才开始激活运行。对接收到图像数据进行预处理,得出图像中待检测圆的细边缘,然后调用改进的Hough变换检测圆的参数,接着发送消息到输出任务,消息中包含经Hough变换检测后生成的图像数据指针,然后等待输入任务发送来的消息以继续运行。
(3)输出任务 将图像显示在显示设备上,使用驱动程序提供的FVID_exchange调用实现图像的显示,接着发送消息到输入任务,然后等待处理任务发送来的消息以继续运行。
4 实验结果
采用某光纤插针内孔参数检测项目中所获取的内孔圆(如图5a所示,实际图像大小1 392×1 040像素,限于篇幅,缩小为原图的10%)来检验算法效果。原图的实际圆心坐标为(678,503),半径为462。图5b为使用Canny算子检测得到的边缘图像;图5c为采用本文算法得到的检测结果。表1、表2分别列出了基于PC平台和TMS320DM642平台采用本文算法与采用标准Hough算法分别对图5a进行圆参数检测所得结果、占有内存大小及耗时的对比。
从实验结果看出,经改进后的Hough变换圆检测算法,无论是基于PC平台还是TMS320DM642平台,与传统的Hough变换算法相比,算法的运算量、内存需求、耗时都有了大幅度的削减,因而有效地提高了圆的检测效率,满足实时性要求。