虚拟白羊座,苏光达
清华大学电子工程系,北京100084)
摘要:在数字图像处理技术中,图像分割的质量直接影响后续算法的效果,因此图像分割技术作为其主要技术之一发挥着重要作用。针对非均匀光照下的图像分割问题,采用了结合Sobel算子和Bernsen算法的自适应阈值分割方法,并根据现场可编程门阵列的特点,在图像邻域处理器中实现了该算法。实际测试表明,该方法能够很好地实现非均匀光照下的图像分割,处理时间仅为0.308 ms,完全满足实际应用的需求。
0简介
随着数字图像处理和计算机技术的不断发展,计算机视觉的应用领域更加广泛。特征提取、目标跟踪和目标识别等关键技术是计算机视觉中常用的技术。这些技术高度依赖于图像分割的质量[1]。图像分割是图像处理中的一个重要研究方向,分割的好坏直接关系到后续先进算法的应用效果。
典型的图像分割算法可以分为三类:基于阈值的图像分割、基于边缘的图像分割和基于区域的图像分割,其中常用的是基于阈值的图像分割。由于图像特征和图像信息的差异,基于阈值的图像分割算法可以分为全局阈值分割和局部阈值分割[2]。
全局阈值算法的典型代表是大津法Otsu法,也称大津算法),它利用聚类思想将图像按照灰度分为两类,使两类之间的差异可以最大,而各部分灰度之间的差异最小,并利用方差找出合适的灰度。然而在实际应用中,由于一些干扰因素,如噪声、对比度低等。灰度直方图不一定有明显的峰值和内向的龙猫。此时只利用图像的统计直方图来确定阈值,可能会导致错误的分割。
局部阈值法的典型例子包括平均阈值分割法和Bernsen算法。阈值法的主要思想是在选择阈值时,将局部区域像素的平均值作为图像分割的阈值。阈值法具有计算简单、速度快的特点。然而,这种方法只能对目标和背景差异较大的图像达到理想的效果。
Bernsen算法具有抑制光照不均匀的优点,Sobel算子计算相对简单,但其阈值需要预先设定,不能满足任何场景的需要,没有适应性。
本研究采用自适应阈值分割算法,即将Bernsen算法与Sobel算法相结合,即Bernsen算法计算窗口中最大灰度值和最小灰度值的平均值作为分割阈值,可以达到自适应阈值的目的,对于光照不均匀的图像有很好的分割效果。同时,算法的整个过程是在邻域处理器上实现的。经过实际测试,能够实现图像分割的功能,算法的时间开销较小。
1自适应图像分割算法
1.1索贝尔算子
尺寸为33模板,如图1所示。该算子是图像边缘检测算法的核心。在边缘检测中,将Sobel算子的两个模板分别与33邻域窗口的像素进行卷积,得到窗口中心的像素梯度包括水平梯度dx和垂直梯度dy)。然后,计算像素梯度的模,与阈值进行比较,并进行二值化,从而获得图像的边缘图像。
1.2 Bernsen算法
Bernsen算法[3]将图像分成块,每个图像块选取块中图像最大和最小灰度值的平均值作为阈值,并假设像素点处的灰度值是围绕像素点构造的窗口,其中w代表窗口宽度的参数。那么柏森算法可以描述为:
首先,计算th
1.3自适应图像分割算法
自适应阈值分割算法结合了Bernsen算法和Sobel算法,以33窗口内像素的最大灰度值和最小灰度值的平均值作为Sobel的分割阈值。这样可以达到阈值自适应的目的,对非均匀光照图像的分割效果更好。自适应图像分割的算法框图如图2所示。
2自适应阈值分割算法的硬件实现
2.1邻域图像处理器
本研究的实验平台是邻域图像并行处理器系统[4-6],包括视频采集、邻域内存、邻域处理器、共享内存、DSP处理器和PCI接口。邻域处理器系统的框图如图3所示。其中,邻域存储器一次可以读取32个像素数据。Altera公司的EP2C70F896C8 FPGA是邻域处理器的处理核心,负责控制数据读取和运算。共享内存由两个2 MB同步SRAM组成,负责存储FPGA运算结果。PCI接口负责将数据传输到PC或从PC传输到共享内存,再由FPGA将数据合并形成邻域数据进行进一步处理。
同时,图像邻域处理器可以在计算机中处理摄像机的视频图像或静止图像。
2.1邻域图像处理器
自适应图像分割处理系统处理512512灰度图像。在处理过程中,需要将图像分成16个图像块,每个图像块有512行32列。根据块的顺序进行图像分割的算术运算,然后
每块图像从上到下进行处理。每一次访问存储体读出一行图像数据,通过流水操作,可以形成n×32的图像邻域。在本图像分割算法中,n取3。
为了构成32个3×3的邻域,需要额外增加两列数据。这额外增加的两列数据正是前一图像块最右端的两列,即RAMa与RAMb。这两个RAM起到了乒乓内存操作的作用,该运算结构如图4所示。
自适应图像分割处理系统的整体实现结构框图如图5所示。
在设计实现自适应图像分割处理系统时,运算操作单元是一系列3×3的窗口,即每个运算单元总共是9个像素点灰度值,运算单元计算流程如图6所示。
在第1个时钟周期,所有数据进行两两比较并求解水平梯度和垂直梯度。
在第2个时钟周期,将比较结果进行累加并求解梯度的模。
在第3个时钟周期,把输入像素的灰度值存储到相应的顺序单元,并缓存模的值。
在第4个时钟周期,选取最大值和最小值,求解其平均值,同时缓存模的值。
在第5个时钟周期,将平均值作为阈值,并与3×3窗口中心像素的梯度模值进行比较,从而得到最终的结果。
其中,运用Bernsen算法求解序列中的最大值和最小值的平均值时,采用了全并行比较排序算法[8]。
计算其他窗口的流程也如上所述,最终可得到图像分割结果。
3 实验结果
根据前述算法思想,首先在PC2.83 GHz,core2 Quad CPU,2.98 G内存)上使用Matlab2014a软件计算进行算法验证,结果如图7所示。其次,为了对比自适应阈值分割的效果,在Matlab2014a上实现Sobel的边缘检测,如图8所示。从图7和图8的比较来看,自适应阈值分割算法较好。
同时,在NIPC-3邻域图像处理器上实现了非均匀光照下图像的分割,处理结果如图9所示。其中,FPGA工作频率为60 MHz。
从图7、图8和图9的结果中,可计算出二者结果的一致性。从实验结果上也可以看出自适应阈值图像分割的优越性,能有效抑制非均匀光照带来的影响。
同时,为了测试速度性能,还进行了时间上的分析,利用Quartus II的SignalTap工具,在程序中添加计数器,计算程序执行时钟数,对于一幅大小为512×512的图像,处理时间约为0.137 ms。
4 结论
本文提出一种将Sobel算子与Bernsen算法相结合的自适应阈值图像分割算法,利用该算法可以较好地实现图像分割。经过实际测验分析,该方法不仅能够实现图像分割,而且能够有效抑制非均匀光照对图像分割带来的影响。同时,通过利用全并行排序算法,使得求解最大值和最小值的平均值的时间大幅度下降。通过计时器来计算处理时间,仅为0.137 ms,能够满足实时应用的需求。
参考文献
[1] sfdhlg.基于阈值的图像分割算法的研究[D].北京:北京交通大学,2009.
[2] 李了了,平常的钢铁侠,殷勤的苗条号.基于大津法的图像分块二值化算法[J].微计算机信息,2005,213):76-77.
[3] 长情的摩托,大方的奇异果,fqddc,等.一种基于FPGA非均匀光照图像分割方法[J].太原科技大学学报,2014,35(6):419-422.
[4] lcdddp.大邻域图像处理系统的研制[D].北京:清华大学,2006.
[5] xhdxf.NIPC-3邻域图像并行处理机的软件设计[D].北京:清华大学,2007.
[6] 苏光大.邻域图像处理中的新型邻域功能流水线结构[J].电子学报,2000,272):1-4.
[7] 王莉,苏光大.基于FPGA的实时中值滤波器硬件实现[J].电子技术应用,2011,3704):58-60.
[8] 开放的月光,忧虑的铃铛.基于FPGA的并行全比较排序算法[J].数字技术与应用,201310):126-127.