前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的阈值分割的基本原理主题范文,仅供参考,欢迎阅读并收藏。
图像分割是计算机视觉中的一个关键问题,它是一种重要的图像分析技术。其目的是将图像中有意义的特征或者需要应用的特征提取出来。图像分割所遵循的基本原则是,使区域内部所考虑的特征或属性是相同或相似的。而这些特征或属性在不同的区域中则不同、存在差异[1]。人们通常将图像分割的方法归纳为基于灰度直方图的阈值化方法和基于区域增长法两大类。其中阈值化方法因其简单、计算量小、性能较稳定而成为图像分割中应用最广泛的分割技术。近年来,随着各学科新理论和方法的提出,人们也提出了许多结合特定理论、方法和工具的分割技术,例如基于数学形态学的分割技术、借助统计模式识别方法的分割技术、利用神经网络的分割技术等[2]。
图像阈值分割是根据一定的阈值将目标从视场背景分离出来的过程。在实际系统中,图像目标和背景之间并不具备截然不同的灰度,随着可见光照射角度的不同,目标的亮度和背景的亮度均要变化。因此阈值的正确选择是很重要的,直接影响着分割的精度及图像描述分析的正确性。通常采用自适应阈值选取,下面介绍基于梯度调整的矩不变自动阈值法,它克服了矩不变自动阈值法的缺陷,达到较好的分割效果。
1 矩不变阈值分割法介绍
矩是随机变量的数学特征。矩法是由 Karl pearson在1894年引入的参数点估计算法,其基本思想是:样本抽自总体,样本的矩在一定程度上反映了总体的矩。因此可以用样本矩函数的估计作为相应的总体矩函数的估计量。矩法是一种效率较高的正态性检验方法。具体作法是:样本矩作为相应总体矩的估计量;以样本矩的函数作为相应的总体矩同样函数的估计量。这种方法最常见的应用是用样本平均数估计总体数学期望。
从统计学观点来看,图像可以看作是二维随机过程(随机场)中的一个样本,这个样本可以看作是理想图像的模糊视觉,其特性反映了总体的特性。从统计的角度来看,分割就是由样本估计总体的特征,由样本的分布估计总体的分布,分割本身也是对整体的一种描述和估计,是一个参数估计的问题,可以用参数估计的方法进行目标图像的分割。矩不变阈值分割法就是把矩法用于图像的分割,其基本思想是:使阈值分割前后,图像的矩保持不变[3]。矩不变阈值法可以看作是一种图像变换,它将原始模糊图像变换成理想图像。
二维图像的第k阶矩mk定义为:
其中i为灰度值,pi为图像中灰度为i的像素比例。对于图像分割来说,如果进行二值分割,则分割后只有Zo和Z1两个灰度级,且Zo<Z1。低于阈值的像素比例和高于阈值的像素比例分别使用p0和p1表示,则分割后图像的前三阶矩:
对于划分目标和背景的最佳阈值,应当保持分割前后的图像的前三阶矩相等。即有:
mi'=mi (3)
则可以得到如下方程组:
为了找到希望的阈值t,需要先从上述方程组中解出po:
其中,
求出Po后再在原图像直方图上选择合适的t使之满足:
则t就是所求的分割阈值。当找不到精确的灰度值做门限满足P0时,选择最为接近的灰度值作为分割阈值。
矩不变法的运算速度较快,可以满足实时性的要求,但其受目标影响较大,目标大小的变化会影响分割的准确性。
2 矩不变法的梯度调整
矩不变法是根据样本估计总体的特性推导而出,是根据图像的整体信息进行图像分割。这种分割方法在实际应用中,发现分割后的目标边缘细节信息有很大的丢失。通过对算法原理及不足点的分析,本文利用图像中目标边界和相邻背景的灰度差别较大、而目标区域或背景区域内部像素间的灰度差别较小的特性,提出了一种基于梯度调整的改进的矩不变自动阈值法。改进后的算法的基本原理如下:
首先由矩不变法得到初始分割阈值t,然后利用梯度算子对图像进行处理,计算出图像的梯度分布。设现行扫描点、后一行扫描点和下一行中相邻点的灰度为f(i,j),f(i+1,j)和f(i,j+1),在x、y方向上的一阶差分定义为:
梯度定义为:
G=Δxf(i,j)i+Δyf(i,j)j (8)
其模为:
为了简便计算,梯度模G[f(i,j)]选用如下的近似公式:
G[f(i,j)]=max[|Δxf(i,j)|,|Δyf(i,j)|] (10)
根据计算出的梯度模,找出边缘像素。设边缘像素的梯度为Gef(i,j),则有:
其中Te为边界梯度阈值,可适当选取为(Gmax-Gmin)/2左右。
再求出边缘像素的梯度均值:
MG=E[Ge[f(i,j]] (12)
这样,基于梯度调整的矩不变自动阈值分割法的阈值T为:
T=t-α·MG (13)
其中,α(0≤α≤0.3)为调整系数,根据经验在0.1左右选择。
3 算法仿真
[关键词] 边缘检测 差分背景 Canny算子 Otsu算法 自适应阈值
一、引言
车辆的检测和跟踪是当今机器视觉的热点和焦点,车辆的跟踪是建立在正确、可靠的检测基础上。我们一般观察到的车辆都是有着复杂的背景,在做差分背景的运算可以较好的将背景的信息去掉,有利于车辆边缘的检测。但如何有效提取出差分图像的车辆边缘,一直是个难点,常用的边缘检测算法有Robert算子、Prewitt算子、Sobel算子和LOG算子等。但这些算子都对噪声比较敏感,对于信噪比相对低的图像,处理的效果不会很好,Canny算子能有效的去噪和保留图像的边缘,因此Canny算子在图像的边缘检测中被广泛的运用。
传统的Canny算子利用固定的高、低阈值来进行边缘提取,对不同图像缺乏自适应性。另一方面无法消除局部噪声干扰,在检测出假边缘的同时还会丢失一些灰度变化值变化缓慢的局部边缘。本文在分析了传统Canny算子的基本原理的基础上提出了一种基于Otsu算法的Canny算子,该改进算子能有效对动态图像序列的车辆自适应地生成动态阈值,自动提取边缘,解决了阈值的选择问题,提高了算子的鲁棒性。
二、车辆检测概述
图像的分割与检测(识别)是一项非常困难的工作。图像很难说清楚为什么应该分割成这样而不是那样。人类的视觉系统是非常优越的,它不仅包含了双眼,还包括了大脑,可以从很复杂的景物中分开并识别每个物体。
由于人类在观察图像中应用了大量的知识,所以没有任何一台计算机在分割和检测真实图像时,能达到人类视觉系统的水平。正因为如此,对于大部分图像应用来说,实用化的自动分割与检测还是一个将来时,目前只有少数的几个领域(如印刷体识别OCR)自动识别达到了实用的水平。因此,这方面的研究很活跃,车辆检测就是其中之一。
车辆的检测就是对包含车辆信息的图像序列运用数字信号处理技术进行适当的处理,从而去除静止的背景,检测出目标车辆及携带的运动信息,并对运动信息进行整合,得到关键参数。车辆目标检测原则就是要尽可能保留那些对视觉检测有重要意义的特征信息,同时最大限度地摈弃那些对运动目标无用的冗余信息。
三、差分图像
背景差分是利用当前帧图像和背景图像的差分来检测运动区域,即将当前帧图像与背景图像相减。它一般能提供教完整的特征数据,得到较精确的目标图像。背景差分又可以分为动态背景差分和固定背景差分,动态背景差分要随时间的推移更新背景图像,实现比较困难,差分固定背景的优点在于只要获得一帧背景图像,从而速度快,实现简单,但所采集得到的背景图像随着时间的推移,会对光照等外部条件比较敏感,影响到目标的检测效果。本实验中采用固定背景差分的方式。一般的情况下检测目标是在差分图里根据阈值来二值化图像,区分目标与背景,而本文则是在差分图像的基础上用改进的Canny算子直接来提取车辆的轮廓来判断目标。
四、边缘检测
边缘是指图像中那些领域灰度有强烈反差的像素的集合,它是图像分割最重要的依据,也是纹理特征的重要信息源和形状分析的基础,边缘信息适合于检测和定位图像中的物理位置。
边缘检测的3个最优准则:检漏真实存在的边缘点,不把非边缘点作边缘点检出;检测出的边缘点的位置与真实边缘点的位置接近,提高图像的定位精度;每个真实存在的点与检测出来的边缘点――对应,也就是单边缘响应准则。所以在检测图像的边缘时,我们要尽量的满足这3个准则。
对一幅图像进行边缘检测,一般可以分三步:滤波、增强和检测,Canny算法也是一个具有类似步骤的多阶段的优化算法。
1.Canny算子的边缘提取
(1)图像平滑
Canny算子用高斯平滑滤波器对图像进行去噪处理,用的是高斯平滑滤波器与图像作卷积,因为要分割的图像可能带有部分噪声,未对这部分噪声进行处理将直接影响图像边缘提取的效果。设用I[i,j]表示图像,那么卷积的过程可表示为:
S[i,j]=G[i,j,σ]*I[i,j](1)
其中G[i,j,σ]是高斯平滑滤波函数,σ是高斯函数的散布参数,用它来控制平滑程度。
(2)梯度的幅值和方向的计算
图像不I[i,j]经过高斯平滑后的矩阵为S[i,j],然后计算图像的梯度矩阵,首先计算平滑后矩阵S[i,j]的x方向和y方向的偏导数,分别为Px[i,j]和Py[i,j]。
(2)
(3)
则图像梯度的幅值和方向分别为
(4)
(5)
(3)梯度幅值的非极大值抑制
幅值图像阵列M[i,j]的值越大,其对应的图像梯度值也越大,但这还不足以确定边缘。它仅仅体现了图像的快速变化,为了确定边缘,我们要的是保留局部变化最大的点。具体的做法是将像素[i,j]的梯度方向角的变化范围缩减到图1所示的4个区之一(编号相同的代表一个方向),然后将同一方向上像素[i,j]与其相邻像素的梯度幅值进行比较:若M[i,j]非局部极大值,就将其设为0。
(4)检测和连接边缘
对非极大值抑制图像作双阈值h1和h2,且h2≈2h1,得到两个阈值边缘图像T1[i,j]和T2[i,j],T2[i,j]是用高阈值得到,含有很少的假边缘,但有间断。双阈值法要在T2[i,j]中把边缘连接成轮廓,当到达轮廓的端点时,该算法就在T1[i,j]的8个邻点位置寻找可以连接到轮廓上的边缘,这样,算法不断的在T1[i,j]中收集边缘,直到将T2[i,j]连接起来为止。
普通的Canny算子双门限设置中,阈值h1和h2选择是固定的,一般的做法是:设图像的非边缘数与总的像素点数的比值是q,从得到的梯度直方图里里从低梯度开始逐步累加图像点的数,当累加的数目与总像素的比值达到q时,对应的梯度值即为h2,而一般的q的取值为0.7。
分析了Canny算子的原理,可以看出,影响Canny算子性能的两个因数是σ和h2的选取,对于灰度平坦的图像,用较小的σ可以取的很好的平滑效果,但如果图像的灰度复杂度增加,也要有相应的增加。高斯平滑模板随着σ的增大而增大,平滑的速度会大幅度的变慢,针对σ的选取或估计也有很多人提出了改进的算法,但就结果来看,或者计算量大,或者改进的效果不理想,所以到目前为止也没有一种好的方法能比较准确的确定不同图像中σ的选取,我们按照图像具体的情况选择σ的数值。在本文实验中,σ的取值为1。
h2的最佳选取也取决于像素间的灰度差异及它的空间分布,所以用固定的阈值去提取差分图像中车辆的边缘的话,很难有效提取出边缘。我们在对差分背景的车辆图像作梯度化处理以后,其直方图呈双峰的特性。这样就可以用到Otsu算法的阈值的设定方法,用类间方差最大准则来确定。
2.Otsu算法定阈值
Otsu的基本原理为用最佳阈值将图像的灰度直方图分割成两部分,使两部分的类间方差取最大值,即分离性最大。设阈值为T,把图像整个灰度级分为目标区域灰度级[1,2…,T]与背景灰度级[T+1,T+2,……,M] 。
目标区域灰度均值与背景区域的灰度均值分别为
(6)
(7)
其中pi和pj分别为灰度为i和j的像素的概率,α(t)为目标区域的灰度总和,β(t)为背景区域的灰度总和。
目标区域和背景的类间偏差σ2B是:
(8)
其中μ为目标图像的灰度均值,最优阈值T*使类间偏差取得最大,即
(9)
最大的T*将差分图像分割为目标区域和背景区域两大部分。
通过Otsu算法去处理经过梯度运算后得到的梯度幅值图像,得到的最优阈值T*为该图用于Canny算子的高阈值h2。
五、实验与分析
图2和图5是车辆的差分背景图,可以明显的看出,除了运动要检测的车辆,复杂的背景已经被去除。图3和图6是用普通的Canny算子(q=0.7)提取车辆边缘的结果,从结果图里看出,除了车辆的轮廓外,还出现了大量的假边缘,出现这种情况的主要原因是背景在室外条件下会受光照的影响,虽然通过差分背景已经去掉了背景的信息,但由于光照而使图像背景发生改变的部分还是会在差分背景图中保留。而普通的Canny算子是用固定的阈值,且一般这个值很低的情况下去将会提取出很多假边缘。
而我们用基于Otsu算法的Canny算子基本上不存在这个问题,因为它是用类间方差最大原则来分析图像的幅值,背景的变化部分的幅值在与车辆边缘的幅值与背景幅值的比较中更倾向与背景,用Otsu算法在分析幅值时能进行有效的区分背景和车辆,这样在提取边缘时就能把车辆的边缘提取出来,而不会有由于背景发生变化而产生的假边缘,结果如图4和图7所示。由于改进的Canny算子是在分析图像信息的情况下划定阈值,对动态的图像序列中车辆能进行有效的边缘提取。
六、结论
本文的方法是对传统的Canny算子进行了改进,弥补了单一的阈值所不能解决的细节丢失和噪声增多两者间的平衡问题,改善了对差分背景的车辆图像边检测的效果,而且在检测过程中自适应的生成高、低阈值,检测图像的边缘,自动化程度高。虽然本算法的运算复杂度和运算时间要稍大与普通的Canny算子,但不影响它的实时性。
参考文献:
[1]贾云得:机器视觉[M].北京:科学出版社,2000,97~100
[2]季键昂海松:航空序列图像的特征模型提取及追踪[J].中国图象图形学报,2004,9(6)
[3]梅约松杨树兴莫波:基于Canny算子的改进的图像边缘检测方法[J].激光与红外,2006,36(6)
[4]马力易昂傅明:一种基于Canny算法的边缘提取改善方法[J].计算技术与自动化,2003,22(1)
[5]杨振亚白治江王成道自适应Canny边缘检测算法[J].上海海运学院学报,2003,24(4)
关键字: OpenCV; 自适应阈值; 图像分割; 固定阈值
中图分类号: TN919?34; TP32 文献标识码: A 文章编号: 1004?373X(2013)24?0073?04
Research and implementation of image threshold segmentation based on OpenCV
LEI Jian?feng, WANG Wei
(Capital Medical University, Beijing 100069, China)
Abstract:The image threshold plays a very important role in image segmentation. In the OpenCV algorithm environment, the fixed threshold algorithm and adaptive threshold algorithm are emploied respectively to process the same image by calling the corresponding function in OpenCV. The noise in the image is eliminated in combination with the filtering function of Gauss fuzzy algorithm. The image segmentation algorithm was analyzed by means of Gauss fuzzy and thresholding algorithm. The results show that the adaptive threshold algorithm can perform image segmentation more efficiently.
Keyword: OpenCV; adaptive threshold; image segmentation; fixed threshold
1 OpenCV简介
OpenCV是一种开源的软件,采用基于C/C++语言编写,OpenCV可以在多种操作系统上运行同时为其他软件提供了多种接口。在数据类型上OpenCV提供了多种基本数据类型。虽然这些数据类型在C语言中不是基本类型,但结构都很简单,可将它们作为原子类型。OpenCV 主体分为5个模块,其中4个模块如图1所示。
图1 OpenCV基本结构图
OpenCV的目标是为计算机视觉提供基本工具,在处理计算机视觉中一些很复杂的问题时,可以利用OpenCV提供的高层函数有效地解决这些问题。OpenCV有一个强大的函数库,它可以提供基本函数为大多数计算机视觉问题创建一个完整解决方案。
2 图像分割
图像分割[1]是图像分析中很重要的基础环节,只有准确地将对象从图像中提取出来,才能进一步对该对象做定量的描绘。图像分割又是比较困难的环节,因为在许多情况下,对象与背景之间很难区分。所以图像分割算法已经成为图像处理[2]和分析领域中研究的热点,并且到目前为止没有一种通用的分割算法对各种图像均能得到满意的分割结果。图像分割的准则实质是将一幅图像分成几幅子图像,并且满足3个条件:
(1)图像中的每一个像素必须被归入某一子图像,并只能属于一个子图像;
(2)属于同一子图像的像素在某种性质上是相近的;
(3)属于不同子图像的像素在该性质上相差很大。所谓性质指的是如灰度、灰度梯度、纹理以及空间位置等。因此,图像分割的过程也就是按性质对像素进行分类和识别。
图像分割[3]方法一般有2类:
(1)基于边界分割方法,这种方法通过子图像之间一般都有明显的边界。假设图像中只有2个子图像,子图像不存在多个互不连通的区域;
(2)基于阈值方法,这种方法首先根据像素的某个特征确定分割阈值,然后将像素的这个特征值与此分割阈值相比较,并以此决定将该像素归入哪一类子图像。通常将像素的灰度作为特征来选择阈值。
2.1 VC6.0下OpenCV的安装及环境搭配
(1)下载OpenCV安装程序(1.0版本)。假如要将OpenCV安装到C:\Program Files\OpenCV。在安装时选择“将\OpenCV\bin加入系统变量”。或安装完成后手动添加环境变量“C:\Program Files\OpenCV\bin”。
(2)启动VC++ 6.0,菜单Tools?>Options?>Directories:先设置lib路径,选择Library files,在下方填入路径: C:\Program Files\OpenCV\lib然后选择include files,在下方填入路径:
C:\Program Files\OpenCV\cxcore\include
C:\Program Files\OpenCV\cv\include
C:\Program Files\OpenCV\cvaux\include
C:\Program Files\OpenCV\ml\include
C:\Program Files\OpenCV\otherlibs\highgui
C:\Program Files\OpenCV\otherlibs\cvcam\include
(3)每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。菜单:Project?>Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上:cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib如果不需要这么多lib,你可以只添加你需要的lib。
2.2 利用OpenCV进行图像阈值分割
阈值分割是传统的图像分割方法,因其实现简单,性能较稳定而成为图像分割中最基本和应用最广泛的分割技术[4]。它适用于目标和背景有不同灰度级范围的图像,而且总可以得到封闭且连通区域的边界。
2.2.1 阈值分割的概念
阈值分割法是一种基于区域的图像分割技术,其基本原理是:通过设定不同的特征阈值,把图像象素点分为若干类[5]。通常将像素的灰度作为特征来选择阈值。首先设原始图像为f(x,y),然后按照一定的准则f(x,y)中找到特征值T,将图像分割为2个部分,分割后的图像为: 若取b0=0(黑),b1=1(白),即为图像二值化。该方法的特点是可以减少数据量,而且简化了分析和处理步骤,因此该方法是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。图像阈值化的目的是要按照灰度级,对像素集合进行一个划分,使每个子集形成一个与现实景物相对应的区域,各个区域内部具有一致的属性,而相邻区域具有不同的属性。这样的划分可以通过从灰度级出发选取一个或多个阈值来实现。
2.2.2 OpenCV实现阈值分割方法
OpenCV实现阈值分割方法[6]:
(1)固定阈值分割,在OpenCV中实现固定阈值分割的函数是cvThreshold(),函数 cvThreshold()对单通道数组应用固定阈值操作。其基本的思想是,给定一个数组和一个阈值,然后根据数组中的每个元素的是低于还是高于阈值而进行一些处理。
(2)自适应阈值分割,在OpenCV中实现自适应阈值分割的函数AdaptiveThreshold(),此函数有2种不同的自适应阈值方法。
2.2.3 基于MFC的OpenCV阈值分割的实现
OpenCV 库是使用“IplImage”结构体来创建和处理图像,在其库函数中,最重要的结构体就是IplImage 结构,使用这种格式的特点是:可以比DIB 格式表示更多的图像性质,而且可以更方便地存取图像中的像素值[7]。定义该结构体变量时,需要用到函数cvCreateImage,定义方法如下:
IplImage *src=cvCreateImage(cvSize(800,600),IPL_DEPTH_16U,3);
在VC6.0 中新建MFC AppWizard(exe),添加支持OpenCV 的库文件,如cxcore.lib cv.libml.lib cvaux.lib highgui.lib cvcam.lib 等,使得VC能够调用OpenCV 的库函数。
(1)固定阈值算法
OpenCV 中使用固定阈值对图像进行二值化的函数是cvThreshold(),函数具体定义为:
Double cvThreshold(
CvArr* src,
CvArr* dst,
double threshold,
double max_value,
int threshold_type);
该函数的特点是只能处理8位或浮点灰度图像。目标图像必须与源图像的类型一致。每个阈值类型threshold_type对应于一个特定的比较操作如表1所示,该比较操作在源图像第i个像素(srci)和阈值(T)之间进行。根据源图像的像素和阈值之间的关系,目标图像的像素dsti 会被设置为0, srci 或者max_value。当threshold_type 被设置为CV_THRESH_BINARY 时,如果源图像第i 个像素(srci)大于阈值T,则目标像素dsti 被设置为最大值max_value。否则目标像素dsti 被设置为0[8]。
表1 cvThreshold()中阈值类型选项和对应的操作
以下是本文测试基于MFC的OpenCV高斯模糊算法部分核心代码:
//定义IplImage 结构体存放高斯模糊后的目标图片
IplImage* pImg8uSmooth= NULL;
IplImage* pImg8u= NULL;
//建立3 通道图像,图像大小与输入图像的大小相同的IplImage 结构体
pImg8uSmooth = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U, 3);
//使用高斯模糊方法对输入图像进行滤波
cvSmooth( img, pImg8uSmooth,CV_GAUSSIAN,3,0,0);
//创建窗口,显示高斯模糊后的图像
cvvNamedWindow( "Smooth Image", 1 );
cvvShowImage( "Smooth Image", pImg8uSmooth);
以下是基于MFC 的OpenCV 固定阈值化算法部分核心代码:
//建立IplImage 结构体存放图片
IplImage* Thresholdimg=NULL;
//设定固定阈值为15(该值为参考值,实际测试程序时,可以根据具体程序设置为其他测试值)
double threshold = 15;
//设定阈值类型为CV_THRESH_BINARY
int threshold_type = CV_THRESH_BINARY;
//对上一步中进行过高斯模糊的图像进行固定阈值化处理
cvCvtColor(pImg8uSmooth, Thresholdimg, CV_BGR2GRAY);
//固定阈值化处理
cvThreshold(Thresholdimg,It,threshold,255,threshold_type);
(2)自适应阈值算法
针对有很强照明和反射梯度的图像,图像中像素分布很不均匀,要想对图像处理得到效果较好的二值化效果,很难通过某一个或者某几个固定的阈值来实现。在这种情况下,需要根据梯度进行阈值化,于是便有了自适应阈值算法[9]。
自适应阈值算法是OpenCV 中的一种改进了的阈值化处理技术,使用的阈值本身就是一个变量,这种方法由函数cvAdaptiveThreshold()实现,其具体函数为:
Void cvAdaptiveThreshold(
CvArr* src,
CvArr* dst,
double max_val,
Int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,
Int threshold_type=CV_THRESH_BINARY,
Int block_size=3,
Double param1=5);
cvAdaptiveThreshold()有两种不同的自适应阈值方法,可以用参数adaptive_method进行设置。在这两种方法下,自适应阈值T(x,y)在每个像素点都不同。通过计算像素点周围b×b区域加权平均,然后减去常数得到自适应阈值,b由参数block_size 指定,常参数由param1 指定。当adaptive_method = CV_ADAPTIVE_THRESH_MEAN_C 时,对区域所有像素平均加权;当adaptive_method=CV_ADAPTIVE_THRESH_GAUSSIAN_C时,区域中的(x,y)周围像素根据高斯函数按照它们离中心的距离进行加权计算。最后参数threshold_type和表1中的一样。
本方法对于有很强照明或反射梯度的图像,需要根据梯度进行阈值化时,自适应阈值技术与其他技术相比就有很好的效果。本文是在adaptive_method=CV_ADAPTIVE_THRESH_GAUSSIAN_C时使用高斯模糊算法对输入图像进行去噪滤波,之后用cvAdaptiveThreshold ()函数对高斯滤波之后的图像进行自适应阈值化处理。具体核心代码如下:
//定义IplImage 结构体存放自适应阈值化后的目标图片
IplImage* AdpThresholdimg=NULL;
//设定阈值类型为CV_THRESH_BINARY
int threshold_type = CV_THRESH_BINARY;
//设定自适应阈值方法为CV_ADAPTIVE_THRESH_MEAN_C 方法
int adaptive_method = CV_ADAPTIVE_THRESH_MEAN_C;
int block_size = 71;
//设置减去的常数值,以得到自适应阈值
double offset = 15;
//建立Iat 指针存放自适应阈值化处理后的图像结构体,作为输出图像
Iat = cvCreateImage(cvSize(Igray?>width,Igray?>height),IPL_DEPTH_8U, 1);
// AdpThresholdimg 存放经过高斯模糊处理的图像结构体,作为输入图像
AdpThresholdimg=cvCreateImage(cvGetSize(img),IPL_
DEPTH_8U, 1);
//进行自适应阈值化处理,
cvAdaptiveThreshold(AdpThresholdimg, Iat, 255, adaptive_method,
threshold_type, block_size, offset);
//创建窗口,显示自适应阈值处理后的图像
cvNamedWindow("Adaptive Threshold",1);
cvShowImage("Adaptive Threshold",Iat);
经过上述两种算法处理的图像如图2~图4所示。
图2 原始图
图3 固定阈值分割
图4 自适应阈值分割
3 结 语
本文介绍了基于OpenCV 的图像处理并给出了实例,利用OpenCV 中的函数使图像处理[10]问题变得很简单,具有很强的实用价值,通过图2和图3的图像处理后的效果,发现自适应阈值相较于固定阈值有着较好的特征提取效果。当使用固定阈值时,无法分割出图像中需要的信息,而使用自适应阈值,可以有效地分割出图像中的有用信息。
注:本文通讯作者为汪伟。
参考文献
[1] 韩思奇,王蕾.图像分割的阈值法综述[J].系统工程与电子技术,24(6):91?94.
[2] 陈胜勇,刘盛.基于OpenCV 的计算机视觉技术实现[M].北京:科学出版社,2008.
[3] 黄春艳.图像分割若干算法研究[D].开封:河南大学,2011.
[4] 赵春燕,闰长青,时秀芳.图像分割综述[J].中国科技信息,2009(7):41?43.
[5] 刘爽.图象分割中阈值选取方法的研究及其算法实现[J].电脑知识与技术,2010(11):68?70.
[6] .图像分割算法研究[J].福建电脑,2009(3):27?35.
[7] 高秀娟.图像分割的理论、方法及应用[D].长春:吉林大学,2012.
[8] 刘瑞祯,于仕琪.OpenCV 教程基础篇[M].北京:北京航空航天大学出版社,2009.
[关键词]建筑物提取,显著性检测,随机森林
中图分类号:TM512 文献标识码:A 文章编号:1009-914X(2017)12-0297-01
1 引言
随着遥感技术的快速发展,遥感影像的空间分辨率越来越高。相比于中低分辨率的遥感影像,高分辨率遥感影像中几何结构、空间特征、形状以及纹理特征等信息更加清晰,能够精细地描述地表目标,有助于地物目标更精确的判读解译。在高分辨率影像上进行地物识别与检测是遥感科学领域研究中的一大热点,建筑物作为城市区域地物类别中的主要内容和地形图中重要的成图要素,准确地获取其空间位置、形状等信息具有极其重要的意义。精确地提取建筑物在城市规划、城市动态检测、城市三维建模以及地形图更新等方面有着重要的实际应用。
2 原理与方法
2.1 算法基本原理
算法首先用基于图论的方法,对遥感影像进行多尺度的分割,得到在不同尺度上的超像素块区域;然后计算各个区域的特征向量,用随机森林学习区域的多类特征,构建随机森林回归器,采用监督学习的方法为每个区域进行显著性的赋值;在得到各个尺度的显著图后,利用最小二乘法将多个尺度显著图进行融合;最后,对最终的显著图使用自适应阈值的方法进行分割,得到最终分割掩膜图。
2.2 多尺度分割
本文所采用的过分割算法是由Felzenszwalb等提出的一种基于图论的影像分割方法。该方法基于RGB颜色空间,每个像素用5个分量表示,包括两个位置分量个三个颜色分量。在构造带权无向图时,图的节点为图像的像素,边的权值用RGB分量的欧氏距离来计算。算法中定义了区域内差异与区域间差异,若两个不同区域间的差异度小于任何一个区域内的差异度,则将它们进行区域合并;否则,保持这两个区域为单独的区域。
多尺度的分割图用S={S1,S2,...,Sm}表示。每个尺度的分割图Sm都是通过原图分割得到,包含Km个超像素块。S1是原图进行分割得到的结果,包含最多的超像素块。其余尺度上的分割结果都是通过S1中的超像素块合并得到的。超像素合并的规则参考了文[13]中的过程。首先合并S1中的超像素块得到S2。按照此规则依次进行,最后合并Sm-1中的超像素块得到Sm。
2.3 区域特征提取
在利用过分割方法得到影像超像区域后,提取每个超像素区域的特征。颜色与纹理是遥感影像最常用的低层视觉特征,可较直观的反映影像不同地物的属性。但是,对于显著性检测而言,对比特征又是其中非常重要的特征。下文将分别介绍超像素区域特征提取的方法。
2.4 显著性学习
2.4.1 区域显著性回归器学习
在每个尺度上,首先对分割训练图像获得的每一个区域Ri,在人工标记结果图上对应区域Gi。若Gi中所含像素的标记有 80%属于前景(或背景),则Ri标记为前景(或背景),且 Ri的标记值ai被设为 1(或0)。对每个区域作特征向量x∈Rd描述,训练样本中包含已标记的区域集合R={R(1),R(2),...,R(Q)},和对应的标记值A = {a(1),a(2),...,a(Q)}。
本文利用训练数据X = {x(1),x(2),...,x(Q)}和显著性得分 A = {a(1),a(2),...,a(Q)},学习到一个随机森林回归器,将每个区域的特征向量映射到显著性得分。随机森林显著性回归是t个决策树的集成,其中每个树由分枝和叶节点组成。每个叶节点存储一个特征索引f和阈值τ。给定特征向量x,树中的每个叶节点是基于特征索引和阈值(f,τ)作出决定。如果x(f)
3 实验结果及分析
3.1 实验数据
实验所采用的数据为ISPRS提供的高分辨遥感影像数据集。数据为德国Vaihingen地区的正射投影影像,空间分辨率为0.8cm。实验将Vaihingen地区原始影像切割成一组100张大小为512*512的子块影像。每幅子块影像均注释像素级别的真实标记,真实标记为包含建筑物和非建筑物二类的二值掩膜图。
3.2 实验参数设置
实验中涉及主要参数是随机森林回归过程中决策树的数目T,随机森林显著性回归过程中,树越多,决策树之间的差异越小,可以实现更好的性能。然而,性能随着更多树木的采用而不断增加,但效率却大大降低。因此,选择设置T=200棵树来训练回归器以平衡效率和效果。
3.3 结果与分析
利用Vaihingen地区60张训练影像训练出显著性模型,另外40张通过显著性模型来检测出显著性区域,并通过自适应阈值将将建筑物提取出来。本文方法对多种类型的建筑物提取效果都很好,区域完整,杂质少。
为了定量评价算法性能,将算法自动提取建筑物的结果和Ground Truth进行基于像素的比较。设TP为算法自动提取结果中被正确分为建筑物的像素数;TN为建筑物被误分其他地物的像素数;FP为被误分为建筑物的其他地物的像素数;FN为未被正确分为建筑物的像素数。建筑物提取的定量评价指标:(1)准确率,Accuracy=(TP+TN)/(TP+FP+FN+TN);(2)精确率,Precision=TP/(TP+FP);(3)召回率,Recall=TP/(TP+FN)。利用30幅影像提取结果与真实标记数据,所计算出的平均准确率为93.42%,平均精确率为91.28%,平均召回率为88.75%。从三种评价指标来看,本文方法在对Vaihingen地区的影像进行建筑物提取时,效果较好。
4 Y论
本文提出了一种基于视觉显著性的高分辨率遥感影像建筑物提取方法。该方法考虑到遥感影像中建筑物的特点,将建筑物检测问题视为视觉显著性检测问题。所提方法采用随机森林回归机器学习算法检测影像中的建筑物显著性,并通过自适应阈值对显著性结果进行分割,实现了高分辨率遥感影像中提取建筑物的目的。对Vaihingen地区影像数据的测试结果表明,本文方法能得到较高的建筑物提取精度。
今后将考虑遥感影像之间的协同显著性,以期为后面的分割提供更好的先验知识,进一步提高提取效果。
参考文献
[1] 孙显,王宏琦,张正.基于对象的Boosting方法自动提取高分辨率遥感图像中建筑物目标[J].电子与信息学报,2009,31(1):177-181.
现今,生物医学图像在医疗诊断中起着不可低估的重作用。核磁共振(MagneticResonance,简称MR)、计算机X射断层扫描(ComputedTomography,简称CT)、超声波(Ultrasound)以及其他的成像技术等,都是无侵害性的器官体外成像的力手段。这些技术丰富了正常的以及病状的解剖知识,同它也成为了诊断和治疗体系重要的组成部分。随着医学图像在数量和大小上的增加,越来越有必要用计算机处理并分析这些图像。有一种算法用于找出解剖构和其它感兴趣的区域,这种算法叫做图像分割算法(imagsegmentationalgorithms)。图像分割是由图像处理到图像分的关键步骤[1],它在大量的生物医学图像的应用起着至关重要的作用,比如:解剖结构的研究、诊断等。在承担自然科学基金项目的过程中,为研究分割算法在医学图像中的应用,我们对过去国内外二十多年里医学图像分割算法的发展和现今广泛使用的分割法进行了较详细的调研,感到国内在这方面的文献和研究还比较少。为进一步推动图像分割在生物医学工程中的应用,本文结合我们目前的研究结果,对医学分割算法、特别是其应用做了介绍。
2现今广泛使用的生物医学图像分割方法
利用“区域间不连续性”和“区域内相似性”两个准则,分割算法可分为的“基于边界的算法”和“基于区域的算法”。另外,根据分割过程中“判断和决定是否可独立地和同时地做出”的处理策略,分割算法又可分为“并行算法”和“串行算法”。所以分割算法可根据这两个分成四类[1]。那么对于生物医学图像,也有相应的四类分割法。图像、成像方式以及其它因素。比如:对脑组织分割的要求就不同于对肝脏的要求,MR图像有异于超声图像。更进一步的情况,成像中的人为和不可抗拒的天然因素(例如噪声和物体的运动等)也会在很大程度上影响后继的分割。所以,至今没有一种适用于任何医学图像的通用的分割技术。我们总结了现今国内外广泛使用的生物医学图像分割方法。重点放在对方法的介绍上,和使用时会面临的具体问题上。方法的详细数学推导超出了本文的范围,读者可以查阅参考文献。虽然这些方法是分开描述的,但在实际应用中,很多复合法也用于解决各种不同的实际分割问题。我们将这些方法分为四类6种:1)并行区域法:阈值法。2)串行区域法:区域生长法。3)结合特定理论工具的方法:①模式识别法(分类器法,聚类法);②人工神经网络法;③可变模型法。4)其他方法。
2.1阈值法
阈值分割法是将灰度图像变为二值图像以达到分割目的的方法[4],它是一种PR(并行区域)法。阈值法的过程是决定一个灰度值,用以区分不同的类,这个灰度值就叫做“阈值”。把灰度值大于阈值的所有像素归为一类,小于阈值的所有像素归为另一类。阈值法是一种简单但是非常有效的方法,特别是不同物体或结构之间的有很大的强度对比时,能够得到很好的效果。此分割法通常是交互式的。因为阈值法能够实现实时操作,所以它更能够建立在用户视觉估计的基础上。阈值法一般可以作为一系列图像处理过程的第一步。它的主要局限是,最简单形式的阈值法只能产生二值图像来区分两个不同的类。另外,它只考虑像素本身的值[1],一般都不考虑图像的空间特性,这样就对噪声很敏感。针对它的不足,有许多经典阈值法的更新算法被提了出来[5]。
2.2区域生长法
区域生长法是根据预先定义的标准,提取图像中相连接的区域的方法[4]。这个标准可以是灰度信息,也可以是图像的边界,或者是两者的联合。在此法的最简单形式中,先人工给出一个种子点,然后提取出和种子具有相同灰度值的所有像素。和阈值法一样,区域生长法一般不单独使用,而是放在一系列处理过程中,特别用它来描绘诸如肿瘤和伤口等小而且简单的结构。它主要的缺陷是,每一个需要提取的区域都必须人工给出一个种子点,这样有多个区域就必须给出相应的种子个数。此法对噪声也很敏感,会造成孔状甚至是根本不连续的区域。相反的,局部且大量的影响还会使本来分开的区域连接起来。为减轻这些缺点,产生了诸如模糊分类的区域增长法[6]和其他方法。
2.3模式识别法
2.3.1分类器法
分类器法是一种统计模式识别的方法[7],用以区分从已知标记的图像数据衍生而来的特征空间。灰度直方图,就是最常见最典型的一维特征空间的例子。因为分类器法需要用已知的人工分割结果作为训练样本、对分类器进行训练后才能自动分割新的数据,所以它是有监督的模式识别方法。它的训练方法有很多种,其中,最简单的一种是“非参数最近邻”分类器。它将像素或者体素划分在与其灰度值最接近的那一类中。而参数分类器中,使用得最多的是贝叶斯分类器(Bayesclassifier)[5]。标准的分类器要求被分割的结构具有明显的定量特征。因为如果训练样本数据能够被标记,分类器就能够将这些可以明显区分的标记转化为新的数据而不需要反复迭代。所以相对于阈值法,在区分多区域图像时它有较高的计算效率。它的缺点是是,需要人工交互方式获得训练数据。另一方面,对于大量的生物图像使用相同的训练样本,会因为没有考虑不同物体的解剖特性和物理特性而导致不准确的结果。
2.3.2聚类法
聚类法的基本原理和分类器法大体是相同的,不同点在于它不需要训练样本数据。所以它是无监督的模式识别方法。为了弥补没有训练数据这一点,聚类方法反复做两件工作:分割图像和刻画每个类的特征,从而使用已有的数据训练自身以达到分割的目的。最常用的聚类方法是模糊C-均值算法[1],它通过对目标函数的迭代优化实现集合划分,并且可以表示出各个像素属于不同类别的程度。虽然聚类算法不需要训练样本数据,但是它需要一个初始的分割。和分类器方法一样,聚类法同样不考虑空间建模,所以对噪声和非同质的灰度很敏感。然而,这一缺陷却加快了计算速度。
2.4人工神经网络法
人工神经网络法是使用大量的平行的神经网络达到对图像分割的目的[8]。这些网络由模拟生物学习机理的节点或者元素组成,网络中的每个节点能够执行最基本的运算。通过调整节点之间的权值可以达到网络对生物机理的学习。比如,用它实现图像的边缘检测[8]。文献[9]局部兴奋全局抑制振荡网络(LEGION,LocallyExcitatoryGloballyInhibitoryOscillatorNetwork)就是一种基于人类视觉特性的人工神经网络方法。LEGION是一个由张弛振子构成的网络,每个振子皆由一个兴奋单元x和一个抑制单元y组成(图2)。分割结果见图3。可以看出,与LEGION分割所得图像相比,单阈值法所得图像区域单一,细节较差,一些细小结构未能表现出来。将LEGION这种算法完善,自适应设置神经网络中的参数,并且将它应用在彩色图像上。使用神经网络法的时候,因为网络中有许多相互连接,所以空间信息就能很容易包涵在分类过程中。虽然神经网络法具有平行继承性,但是它的处理过程和标准的串行计算机很类似,这样就降低了它计算方面的潜在优势。
2.5可变模型法
可变模型法是基于模型的、使用闭合参数曲线或曲面描绘边界的分割方法[3]。它的最初思想来源于物理概念:为了描绘出物体的边界,首先设置一个离真实曲线或曲面不远的初始曲面或曲线,在外力和内力的作用下,推动这个曲面或曲线移动,最后在图像能量最低处停下来。因为曲线或曲面的移动类似于蛇,所以这个模型又叫做Snake模型,曲线或曲面叫做Snake。在图像轮廓处灰度变化率(即梯度)最大,定义此处能量最小,那么Snake停下的地方就是真实边界。由于1988年Kass首次提出的经典Snake的外力场捕获区很小[3],这就使得初始化和进入凹陷区很困难。为此,科学家们多次改进这一算法。其中,1998年Hopkins大学的ChenyangXu和JerryL.Prince[12]用梯度矢量流代替经典外力场,这就是有名的GVF理论(GradientVectorFlow)。它很好地解决了经典Snake中的初始化问题和凹陷区问题。[12]是采用GVFSnake对左心室核磁共振图像的腔体分割。
2.6其它方法
还有一些生物图像的分割方法,比如:微分算子的边缘检测[1],Hough变换[4],它们均属PB法(并行边界)的范畴;用样条进行曲线拟合,它是一种SB法(串行边界)。因为生物医学图像中软组织的物理和解剖特性,以上的方法一般不单独使用,而是融入其它的方法里。此外,基于信息论[9]和基于小波分析[1]的分割技术也逐渐被应用在生物图像中。
关键词:手指静脉;像素点
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)16-3876-03
信息安全一直以来都是人们研究的重点,如何能够最大限度的保证个人信息是当前急需解决的问题,生物特征识别技术是最近几年在发展起来的安全技术之一,它主要是利用生物特征采集装置与计算机技术,对于人体特有的生理特征进行个人身份鉴别,主要基于生理特征生物方面主要包含了指纹,人脸,虹膜,手指静脉等特征,在目前生物特征识别中,指纹识别体表特征识别,容易存在损害,容易伪造的缺点;人脸识别具有一定的优点,但容易受到年龄,易容,易损失等不足,识别精度收到限制,虹膜识别虽然具有的一定优越性,但是由于采集设备造价高,无法适应进行面向基层推广。经过医学研究证明,人具有唯一的手指静脉纹路,因此,手指静脉识别技术作为一种新的生物特征识别技术受到越来越多人的重视[1]。
手指静脉识别是一种新颖的识别技术,主要是通过隐藏在人体手指腹部的静脉血管进行身份识别。文献[2]提出了手指静脉图像质量评价方法.在分析人类视觉系统(HVS)性能的基础上,将图像有效区域、对比度、位置偏移度、模糊度、信息熵作为评价手指静脉图像质量的参数.并综合分析这些参数,加权获得静脉图像总质量评价函数.实验表明,得到了与主观评价结果相一致的客观评价值。文献[3]提出一种基于Fisher准则的手指静脉融合算法.首先对手指静脉图像进行特征点提取,分别计算待匹配图像特征点与注册图像特征点的正向平均豪斯道夫距离(FMHD)和反向平均豪斯道夫距离(RMHD),然后基于Fisher准则确定FMHD和RMHD的融合参数,将融合得到的豪斯道夫距离作为新的匹配分数;在上述算法的基础上,将得到的食指、中指和无名指3根手指静脉的匹配分数进行融合,以进一步提高手指静脉的识别率.实验结果表明,与通常采用的FMHD相比,采用融合后的豪斯道夫距离的误识率有明显降低;而采用三指静脉融合后,误识率由单个手指的1.95%降低到0.27%。文献[4]提出了基于手指指尖点的旋转定位方法,改进了基于方向模板和局部动态阈值分割提取静脉特征的方法并用改进Hausdorff距离(MHD)距离进行匹配验证。实验结果表明,同一根手指的图片可以达到0.75%的等误率,正确识别率达97.25%,对实际手指静脉身份识别产品的开发具有一定的现实意义。文献[5]提出一种直接基于子图像向量的线性鉴别分析方法,即模块PCA手指静脉特征提取算法。上述算法通过对图像进行分块,利用PCA对分块得到的子图进行鉴别分析。由于使用子图像矩阵,能有效地抽取图像的局部特征,避免使用奇异值分解理论,过程简便。实验结果表明,所提出的方法在识别性能上明显优于传统PCA算法和小波矩融合PCA方法,识别率得到了有效的提高。文献[6]提出通过计算手指轮廓线的主方向和末节关节腔位置对手指摆放位置的随机变化进行校正,并初步定位分割出手指静脉感兴趣区域。运用迭代优化方法实现手指静脉感兴趣区域分割结果的精确提取。在小型数据集上进行实验的结果表明:该方法得到的感兴趣区域具有较好的聚类特性。说明该方法能够有效地从同一手指姿态变化的多幅静脉图像中定位并分割出相似度较高的感兴趣区域。
从实际出发由于受到了诸多条件的限制。采集到的手指静脉图像存在质量比较差,特特征无法提取的情况,在一定程度上影响了识别率。该文针对这些问题,该文在分析了静脉特征分析方法的基础上,对图像中属于静脉的区域进行横截面的深度和曲率的分析,然后通过设定的将这些区域进行区分,最后通过动态阈值法分割出手指静脉特征。仿真实验证明,该文的算法有效提取手指静脉特征,与其他算法相比具有较低的误码率和较高识别率。
1 手指静脉算法基本简介
1.1 Niblack算法
Niblack算法是一种经典分割算法,其算法过程如下:
1) 对于图像[f]中的一个坐标为[(x,y)]的像素点。利用式(1)和(2)计算出该像素点在向来区域内的均值和方差。
[m(x,y)=1r2i=x-r/2x+r/2j=y-r/2y+r/2f(i,j)] (1)
[s(x,y)=1r2i=x-r/2x+r/2j=y-r/2y+r/2f2(i,j)] (2)
2) 通过公式(3)来计算出像素点中的坐标阈值。
[T(x,y)=m(x,y)+k×s(x,y)] (3)
该算法优点是算法结构简单,容易实现并且运行速度快。缺点是难以处理质量相对低的图像。
1.2 重复线性追踪法
该算法主要是采用手指静脉的形状以及手指静脉横截面呈谷形分布的特点来进行追踪,该算法的思想是:
1)在静脉图像中随机选取一个追踪点,记为[Pc]。
2) 以[Pc]为圆心,[r]为半径画圆。设定[P]点是该圆上的一个像素点,计算[P]点的谷形深度[R=f(S)+f(T)-2f(P)],其中[f(S)],[f(T)]和[f(P)]分别表示点[S]、[T]和[P]的灰度值。
3) 检测该圆上的灰度分布曲线。存在呈谷形的分布曲线,则[Pc]属于静脉区域。并选择横截面谷形深度值最大的像素点为下一个跟踪点并回到,然后不检测[Pc]处的灰度分布曲线。
该算法可以很好的弥补1.1节中无法从低质量的手指静脉中提取图像的现象,但缺点如下,所提取的静脉纹路不够光滑,算法的运行速度较慢。
2 基于像素点检测的静脉特征提取算法
2.1 算法的基本原理
在手指静脉图像中,像素点与手指静脉的位置关系非常只能更要。当手掌的横截面的半径取适当大小时,就会出现来自多个方向的横截面分布曲线。因此对于图像中像素点来说,选择三个方向以上的横截面灰度分布曲线呈现出谷型,就认定为静脉像素点,并做下一步的处理。
参考文献:
[1] 王科俊.手指静脉图像质量评价[J].系统智能学报,2011,6(4):324-327.
[2] 金怀国.基于Fisher准则的多指静脉融合[J].计算机辅助设计与图形学学,2013.25(2):183-187.
[3] 汤露.对抗图像旋转的手指静脉身份识别新算法的设计[J].计算机应用,2012,32(11):3193-3197.
>> 基于煤矿输送带横向断裂预报系统的构建与实现 基于空间自适应Bayesian缩减的NSCT域图像去噪方法 浅议输送带清扫器的形式与特点 遥感图像的NSCT自适应阈值去噪方法 煤矿用织物整芯阻燃输送带检测技术与工艺研究 基于NSCT和PCNN的改进梯度图像融合算法 矿用钢丝绳芯输送带横断检测装置的安装调试 有关矿用输送带纵向撕裂综合检测技术的研究 试论煤矿阻燃输送带及其检测 带式输送机输送带跑偏的原因探讨与解决方案 浅谈耐油橡胶输送带的研制与开发 新型材料轻型输送带的发展 浅谈芳纶输送带贴胶的研制 对延长输送带使用寿命的探讨 橡胶输送带覆盖胶的配方优化设计 浅谈输送带冷温粘接的检修 输送带耐磨性能的优化 模块输送带的热胀冷缩系数计算 KGT―1型强力输送带安全无损检测装置在古矿选煤厂的应用 浅谈煤矿带式输送机类型及输送带与托辊设计选型 常见问题解答 当前所在位置:
关键词:输送带;裂纹检测;非下采样Contourlet变换;脉冲神经网络
DOI:10.3969/j.issn.1005-5517.2015.10.018
亢伉(1987-),男,硕士,研究方向:图像处理。
输送带是用于皮带输送带中起承载和运送物料作用的复合制品。输送带广泛应用于煤矿、水泥、焦化、冶金、化工、钢铁等行业中输送距离较短、输送量较小的场合。在长期使用中,由于磨损等原因会造成输送带表面产生形状不一的裂纹,若不及时发现处理,极有可能造成输送带撕裂,造成重大的经济损失甚至安全事故。目前输送带表面裂纹检测主要由人工完成,这种方法不但精度差、效率低,容易造成漏检或误检而且由于每次检测需要停机完成,影响正常的生产活动。
近年来随着图像采集技术以及计算机图像处理技术的提高,基于机器视觉的自动缺陷检测系统开始广泛使用。目前输送带表面裂纹缺陷检测方法很少。太原理工大学的卫霞等人[1]提出二维熵裂纹目标提取算法;唐艳同等人[2]提出预设灰度门限阈值法,冯广生等人[3]提出了灰度直方图阈值法,中北大学的魏涛等人[4]提出腐蚀膨胀的数学形态学算法。上述算法都取得了一定的成果,但是由于输送带工作环境恶劣,表面裂纹与输送带灰度较为相近,基于机器视觉的输送带表面裂纹检测算法还有很大的研究空间。
为了适应低对比度情况下输送带裂纹的准确分割,结合NSCT与PCNN的优点,提出一种针对输送带裂纹目标的自适应提取算法,实验结果表明,本文提出的算法能够准确的提取裂纹目标,对基于机器视觉的输送带裂纹检测提供一条新的思路。
经典NSCT变换
非下采样Contourlet域(non-subsampled contourlet,NSCT)是在CT(contourlet)的基础上提出的一种多尺度、多方向的离散的图像分解方法,它由非下采样塔式分解滤波器(nonsubsampled pyramid,NSP)和非下采样方向滤波器组(non-subsampleddirectional filter bank,NSDFB)来实现的[5]。如图1(a)所示,以图像的三个尺度分解为例,其过程为:
(1)图像在频率域通过NSP分解成一个低频子带和一个高频子带,其中,低频子带包含的是图像的轮廓信息,可以定位输送带裂纹的位置,高频子带包含的是图像的细节信息,可以用来精确描述输送带裂纹的大小;
(2)对高频子带使用NSDFB分解成多个方向子带,每一个方向子带描述图像在此方向的细节信息,如图1(b)所示,由于NSDBF是一个双通道滤波器,所以方向子带的数目可以是2的任意次幂,低频子带继续使用NSP分解,实现对图像的多尺度、多方向的分解[6]。
经典PCNN模型
脉冲耦合神经网络(pulse-coupledneural network,PCNN)是第三代人工神经网络的代表,受生物视觉皮层神经的启发,提出基于大量神经元的反馈网络模型。一个基本的PCNN神经元由以下三部分组成:接收域、调制域和脉冲产生域[7],如图2所示。
其数学模型为:
PCNN网络在图像分割方面的基本原理可以描述为:二维灰度图像矩阵M×N,每一个像素可以理解为PCNN模型中相对应一个神经元,当其邻域有相近灰度值的像素存在时,它就会被点火反馈,此像素得到加强,反之则减弱。通过这种方法突出图像中边缘、纹理等特征信息,它所构成的二值图像就是PCNN的输出分割图像[8]。
NSCT与PCNN的自适应图像分割算法
输送带图像颜色灰暗,对比度较低,经典的缺陷检测算法不能很好地检测出输送带表面裂纹缺陷。NSCT变换具有多分辨率、多方向的特点,在解决小波变换多分辨率分析方法容易在采样过程中信息丢失弊端同时准确获得图像的多角度信息,PCNN模型无需经过训练就能从复杂的背景下提取到有用的信息,因此在图像分割方面有很好的优势,但是PCNN有大量参数,每一个参数的设置都往往根据经验,自适应能力很差[9]。综合分析NSCT特点和PCNN模型优势,提出一种针对输送带裂纹图像的自适应分割算法。
3.1
NSCT低频域图像分割
在低频子带体现的是目标的大致轮廓,即裂纹在输送带图像中位置等基本信息,因此提出一种邻域连接PCNN分割算法,对于每一个像素,只要它被点火,则它的N(i,j)邻域内相似灰度值的像素也会被直接点火,连接输入Lij为1,否则为0。简化后的公式为
简化后的神经网络模型如图3所示。
3.2
NSCT高频域图像分割
在多层高频子带含有大量的裂纹目标轮廓、边缘的能量,并且在同方向不同尺度上具有相关性[10]。因此,提出一种快速连接PCNN分割算法,一个区域内所有的神经元同时点火,减少时延,提高效率。一个信号输入之后,计算所有的输出,并且更新连接域,直到输出不变停止计算。输入神经元仅需一次点火就可以将信息传给连接域中所有的神经元。所以连接系数β越大,一次点火的波传播的越远。
在反馈模型公式(1)中,简化反馈输入Fij为待处理图像的归一化亮度输入,只与自身输入有关,简化掉其他输入的影响;
在公式(8)中,连接系数β反映的是此像素的特征与其邻域像素的相关性,其相关性越大,人眼就会更容易得注意到[11]。因此,连接系数β应该与图像中像素的相关程度与关,提出一种自适应的确定连接系数β的方法。
像素的清晰度是判定此像素是否为图像边缘的一个显著特征,因此,像素清晰度与像素的连接系数正相关,像素清晰度越大,连接系数β的值就越大,其相关性就越大,这些相关的像素就比其他输入像素更容易被捕获点火,反之亦然。连接系数β的确定公式为其中,m为NSCT将输送带裂纹图像进行分解得到的高频子带系数,下标I,j表示数字图像中的某个像素,f为图像的灰度值。
所有像素的动态门限均相同,其为原图像的灰度迭代门限值θ。
当像神经元的内部状态大于门限值时,神经元点火,输出Yij=1,否则输出Yij=0。
将所有神经元的迭代点火次数之和由矩阵T进行记录,最终得到图像各个高频子带PCNN点火频率图,由于PCNN点火迭代就是根据邻域神经元灰度值的相近与否来判断,所以PCNN点火频率图能够很好的反映所需要提取目标的边缘信息。
快速连接PCNN分割算法模型如图4所示。
NSCT与PCNN输送带裂纹图像自适应分割算法流程如图5所示,具体步骤如下:
(1)用NSCT将输送带裂纹图像进行m尺度分解,得到一个低频子带系数和m个高频子带系数;
(2)对低频子带,使用邻域连接PCNN算法进行计算,分割出裂纹目标所在区域;
(3)对高频子带,使用快速连接PCNN算法进行计算,并且结合点火频率图分割出裂纹目标;
(4)低频图分割结果能够较好的覆盖目标所在区域,受噪声和背景干扰较小,但目标的边缘、轮廓等细节特征比较模糊;高频特征图的分割结果能够比较精确的获取目标的细节信息,但存在明显的噪声和背景干扰。为充分利用其各自优势,将高、低频分割结果进行“与”操作,再进行必要的膨胀和腐蚀等形态学处理算法。
实验结果与分析
为了验证本文算法的有效性,通过线阵CCD相机获取正在运行中的输送带裂纹图像,与OTSU算法、文献[12-13]算法进行比较,结果如图6所示。从图中可以看出,OTSU算法根本无法提取裂纹目标,文献[12-13]方法虽然可以提取裂纹目标,但是有些裂纹目标含有大量噪声,鲁棒性较差。本文算法克服上述算法缺点,准确的提取出裂纹目标。
为进一步检验本文算法的有效性和优越性,选择100张输送带图片包括60张裂纹缺陷图片及40张正常图片,分别进行横向对比检测,实验环境为:4核CPU、主频2.50GHz、4GB内存、Windows 7系统的台式机、应用软件环境是Matlab 2010a,实验图像大小你为256×256,4种算法结果如表1所示。
可以看出,对于裂纹缺陷图像,本文算法有6.7%的误检率,主要是因为这几张裂纹较轻微,与背景差距较小;对于正常输送带图像有7.5%的误检率,主要是因为部分输送带图像上粘有粉尘等杂质,被误判为裂纹缺陷本文法达到了较好的效果。OTSU算法和文献[13]算法运算速度较快但正确率较低,文献[12]算法能够保证一定的正确率但还有很大提升空间,本文算法虽然计算速度较慢,但正确率高。若用高级编程语言编写本文算法,检测时间将会有较大提升。
结论
由于输送带裂纹图像整体对比度低,传统检测手段难以提取裂纹目标,为此本文提出了一种基于NSCT和PCNN的自适应裂纹缺陷检测算法,该算法通过NSCT将图像分解成低频子带和高频子带,对低频子带采用邻域连接PCNN算法分割,对高频子带结合快速连接PCNN算法和点火频率图进行分割,最后将二者分割后的图像用形态学方法融合,最终提取裂纹目标。
实验结果表明,本文方法能有效地提取出不同输送带图像的裂纹缺陷,对于本文算法处理时间较长的缺点,是下一步需要改进的方向。
参考文献:
[1]卫霞,基于图像处理的传送皮带裂纹检测[D],太原:太原理工大学,2011
[2]唐艳同,乔铁柱,牛模输送带纵向撕裂在线监测预警系统的设计[J],煤矿机械,2012,33(5):242-245
[3]冯广生,李文英图像处理技术在胶带撕裂检测中的应用[J],机械工程与自动化,2007,(3):104-106
[4]魏涛,煤炭输送带裂纹检测技术研究[D],太原:中北大学,2010
[5]金星,李晖晖,时不丽非下采样Contourlet变换与脉冲耦台神经网络相结合的SAR与多光谱图像融合[J],中国图象图形学报,2012,17(9):1188-1195
[6]李雪琴,蒋红海,刘培勇,等非下采样Contourlet域自适应闻值面的磁瓦表面缺陷检测[J],计算机辅助设计与图形学学报,2014,26(4):553-558
[7]廖传柱,张旦,江铭炎,基于ABC-PCNN模型的图像分割[J],南京理工大学学报,2014,38(4):558-565
[8]KONG W W, LEI Y J,LEI Y, Image fusion technique based on non-susampled contourlet transform and daptive unit-fast-linking pluse-coupled neural network[J]. IET Image Processing, 2011, 5(2):113-121
[9]郝爱枝,郑晟,基于NSCT-PCNN变换的多传感器图像融台[J],科学技术与工程,2014,14(1):45-48
[10]YANG Shuyuan, WANG Min, LU Yanxiong, et aI.Fusion of multiparametric SAR images based on SW-nonsusampled contourlet and PCNN[J]. Signal Processing, 2009, 89(12)2596-2608
[11]SHI J, CHI Y, ZhANG N Multichannel sampling and reconstruction of bandlmited Signals in fractional Fourier domain[J]. IEEE Signal ProcessIng LetIers,2010,17(11):,909-912
关键词:运动目标检测;机器视觉;图像处理OpenCV
中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2017)07-0171-02
运动目标的检测及跟踪技术在机器人导航、安全监控、航天行业等领域都有着广泛的应用,并成为当前机器视觉领域研究重点之一。但是当前的技术对于移动速度快、体积小的小型生物的跟踪很难达到准确度高,实时性强。
1运动目标检测的基本方法
近些年来,国内外的学者们在运动目标检测的问题上,已经提供了许多有效的方法,但是很多算法不能同时满足实时性,精确性的要求,特别是对于移动速度快的小型生物。目前,常用的运动目标检测算法有以下几种:光流法,基于卡尔曼滤波的运动目标跟踪,背景差分法等。
1.1光流法
光流法基本原理为检测序列图像中出现的瞬时位移场,从连续的图像序列中计算光流场,把计算得到的光流,作为检测运动目标的重要特征。光流法不受背景变化的影响,但对于噪声多的场景,光流法容易出现误判的情况。
1.2基于卡尔曼滤波的运动目标跟踪
基于卡尔曼滤波的运动目标跟踪是将目标的运动轨迹作为模型,预测目标下一时刻的位置。能减少运算量,缩小检测区域,但是当运动目标长时间被遮挡时会存在目标跟踪丢失的情况。
1.3背景差分法
背景差分法是事先将图像储存起来作为背景参考模型,再用当前图像与背景作差,找出在灰度上与背景有较大差异的点,检测运动区域。背景差分法对于运动速度快的运动目标,检测准确,但对于动态变化的场景,检测精度低。
综上所述,现有技术存在着对于快速移动的小型生物检测精度不高的问题。作者试图基于帧差法,利用Open CV函数库,寻求一种针对移动速度快、体积小的运动物体的检测。
研究主要实现的目标是对移动速度快的小型生物的检测,主要是利用视频图像序列中连续两到三帧的差异来检测运动区域。首先,获取相邻两帧图像,将前一帧作为背景,用后一帧减去背景,获取图像亮度差绝对值较大的区域,一般亮度差异较大的区域可认为由运动物体引起的。帧差法算法实现简单,受光线影响小,适应于动态场景,稳定性强。但是该算法对于两帧获取时间间隔要求高,时间间隔选取不适当,容易出现“重影”和“空洞”的现象。研究对该算法进行改进,以提高检测的精度。
2系统组成
运动目标检测系统主要由视频获取,读取相邻两帧,图像灰度化处理,相邻帧的图像对应像素值相减,差分图像二值化。
系统首先获取实时采集的序列图像。其次,读取序列图像中相邻两帧图像,对该两帧图像进行灰度化处理。将前一帧作为背景,将后一帧图像的像素值减去背景对应的像素值,获取变化大的区域,确定运动目标的位置。最后对运动目标进行二值化突显运动区域。
3算法原理
3.1图像灰度化
研究使用cvtC~lor函数实现图像的灰度化。函数声明为src和dst分别是源图像和输出图像;code是一个掩码,表示源图像和输出图像之间的转化模式。最后的&tCn表示dst图像的波段数,默认值为0,可从参数code中推断。
code的模式包括:
3.2帧差算法
研究采用帧差算法实现运动目标提取,使用函数subtract()。
函数声明为
void subtract(InputArray src1,InputArray src2,OutputArray dst,InputArray mask―noArray(),int dtype=-1)
其中,src1为第一帧图像,src2为第二帧图像,dst为输出图像,mask为自定义掩码。])type为两帧相减的方式。
本函数实现了帧差算法,读取一段序列图像,获取相邻两帧的图像,将前一帧图像作为背景src1(I),后一帧作为当前图像src2(I),用当前图像的像素值减去背景相应的像素值,获取变化较大的区域,该区域可认为由运动物体造成,具体公式可参考公式(1)。
dst(1)=saturate(srcl(D-src2(I))if mask(I)≠0 (1)
3.3差分图像二值化
差分图像二值化是在上一步获取的差分图像的基础上,进一步凸显运动物体的区域。具体实现为先设定一个阈值T,当图像的像素值大于该阈值时设定为1,否则设定为0。接着将所有设定为1的点的灰度值设置为255,所有设定为0的点的灰度值设置设置为0,具体公式可参考公式(2)。
(2)
4算法在编程环境下的具体实现
研究算法的具体实现如下:首先建立一个VideoCapture结构体,导入一段序列图像。然后读取该序列图像中的一帧图像,保存在类型为Mat的结构体中,等待5毫秒后,读取下一帧图像,同样保存在类型Mat的结构体中。接着调用灰度化函数cvtColor()对两帧图像进行预处理。调用矩阵相减函数subtract(),设定一个阈值,对相减的差分图像进行二值化。最后调用namedWindow()函数建立窗口并调用imshow()函数显示图像。
5实验结果及分析
研究对帧差算法进行改进,调用OpenCV函数库中的函数,在Visual Studio 2015平台编程实现了对于小型生物的运动检测,实验结果见下图。
图2所示为实时图像第一帧,图3所示为相邻帧,将图2,图3分别灰度化后再相减后得到图4所示图像,图5为二值化后的图像。其中在获取相邻两帧的时间间隔以及二值化的阈值,需根据实际处理的图片来不断调整数值,经过多次实验不断尝试后,时间间隔在10-30毫秒之间为最好,二值化的阈值在10-13时,运动物体的真实目标区域较完整,“重影”、“空洞”现象较少。
研究算法检测效果比较好,对于移动速度快的小型生物也能很好的检测出来,真实目标区域较完整,背景噪音较少,而它错误可以通过形态学去噪、阴影抑制、空洞修补加以完善。
关键词:图像传感器;智能循迹小车;研究与实现
DOI:10.16640/ki.37-1222/t.2016.24.111
0 前言
循迹即小车在白色地板上形式的过程中,可以通过红外探测方法,在感知黑色和白色地板对光线反射系数差异的基础上,自动、智能的在黑色线路中行驶的技术,但由于在现实环境中,白色地板和黑色线路的反射光线会受到多方面因素的影响,红外探测的难度大幅提升,所以要将对环境判断更加准确的图像传感器应用于智能循迹小车中。
1 基于图像传感器的智能循迹小车实现的基本原理分析
由于图像传感器的分辨率相比传统红外探测方法更加理想,所以以图像传感器为基础进行智能循迹小车设计,可以更理想的保证循迹运行效果。在图像传感器应用的过程中,智能小车一方面通过红外光电管和摄像头对前方的道路颜色进行采样,结合采样数据识别具体的路径,在此过程中为使检测精度达到预期效果,光电管的安装位置与地面之间的距离应得到较严格的控制,但两者间的距离缩减或使高速运行的智能小车过弯能力下降,此时利用摄像头在前瞻距离方面的优势可以弥补光电管的缺陷,完成过弯、抄近道等智能操作[1]。另外,面阵式布局的摄像头在图像采集的过程中所获取的数据点多达上千,使智能小车判断车道的依据更加丰富,进一步提升了小车运行的安全性。但由于摄像头数据处理难度大,而且图像采集效果受道路环境的影响非常大,所以在光电管和摄像头结合应用的过程中,仍存在图像处理等问题。
为解决上述问题,在基于图像传感器的智能循迹小车设计的过程中,另一方面要对图像处理功能进行优化,考虑到大量数据在存储过程中出现的冗余会浪费一定的存储空间,提升微处理器的处理任务,所以在处理的过程中应先对采集的数据进行压缩,在减少存储资源利用量的同时防止非有效信息对采集信息的干扰[2]。另外,考虑到循迹的本质是按照目标引导线运行,所以在图像处理的过程中,重点工作是在滤除杂点的基础上,识别黑色轨道,并在图像中标注除具体轨道的位置,为智能小车运行提供依据。
通过以上图像采集和处理技术,可以实现智能小车按轨迹安全、快速、灵活的运行,这也是以图像传感器为基础的智能轨迹小车实现的基本原理。
2 基于图像传感器的智能循迹小车研究
2.1 基于图像传感器的智能循迹小车硬件
基于图像传感器的智能循迹小车硬件主要包括以下部分:首先承担接收赛道信息、校车运行速度等信息,并对信息进行处理,确定小车控制具体方案,并通过舵机和直流电机对小车进行转向、转台调整控制的核心控制模块。其次,由转向舵机、电机驱动和图像采集电路等子模块构成的电源管理模块,此模块的硬件设备性能直接关系到智能小车运行的持久性。再次,实现对智能小车运行状态进行直接调整的电机驱动模块,在智能小车运行的过程中,微控制器是控制信号发出的主要结构,但实际中大部分微控制器的工作电压并不能对大功率负载实现驱动,所以通常在电机和控制器之间设计驱动电路,保证单片机功能的实现[3]。然后,对智能小车行车速度进行调节,保证小车在直道和弯道中均处于最佳大运行状态的车速检测模块,目前,主要应用霍尔传感器、光电传感器和光电编码器实现,在具体选择的过程中,结合具体传感器的特点进行灵活的选择。另外,直接实现舵机转向的舵机转向模块,笔者认为将MC9S12XS128中的PWM2和PWM3级联基础上利用PWM2进行脉冲调控信号的输出,可以进一步提升智能小车舵机的反应速度。除此之外,由数字图像传感器对小车前路径信息进行采集并利用单片机对采集数据进行信息挖掘,引导小车进行状态调整和路径识别的图像采集模块,现阶段主要应用的数字图像传感器和单片机型号分别是OV7620和S12,在具体应用中可结合实际情况进行更换。
2.2 基于图像传感器的智能循迹小车软件
现阶段应用的软件设计方案主要是两种,一种是通过中断处理函数采集道路图像数据,并在小车起跑线检测过程中,通过软件延时,判断行中断是否到来,在确定到来后采集现场该行图像数据,在判断本场数据采集完毕后进行图像处理,并结合处理结果进行舵机转向控制和电极驱动控制。另一种软件方案是在开始运行后,系统变量和各功能模块进入初始化状态,然后判断定时时间是否来到,在获得肯定信息后,开始采集该厂图像,进行舵机转向控制和电极驱动控制,并结合是否检测到起跑线的信息反馈,在检测到后判断是否第二次检测到,在肯定后结束,在否定后重新进行初始化后的判定。现阶段第一种软件设计方案应用相对更为广泛,在采用CMOS数字图像传感器进行智能小车循迹设计时,通常将第一种软件设计方案的系统软件设计整体构架表现为,开始后,先进行系统初始化、工作模式识别,如果判断为测试模式,则启动传感器、电机、舵机等结构,如果判断为比赛模式,则在对方向信号和速度信号采集的基础上进行稳态判断,此时要分别进行方向和速度的控制,前者主要通过控制和改进算法后舵机控制实现,后者是在速度调节后电机控制实现,具体的设计需要结合具体采用的图像传感器类型进行调整。
2.3 赛道图像的处理系统
考虑到USB2.0视频采集盒可以直接完成对音频和视频的高质量采集,而且安装过程简单,对使用环境的依赖性较低,所以在基于图像传感器的智能循迹小车中应用较为广泛,通常将其采集到的图像信息通过视频采集卡向上位机传输,为操作者调节采集棒的具体参数提供参考,在调试的过程中,人们现阶段主要应用以VB为基础的上位机串口调试软件进行。在图像采集的过程中,如果应用OV7620数字摄像头,可应用的视频信号达到288行,但中所周知,并不是所有的视频信号在智能小车轨迹运行的过程中均需要,特别是每场前22行消隐信号,如果盲目的采集只会造成存储空间的浪费和计算效率的降低,使单片机的负担加大,所以在图像采集的过程中应尽可能的对其余的266行视频信号进行采集,保证核心控制模块的处理效率。在图像采集后,利用S12系列单片机将采集到的图像
数据完整准确的传输至pc机,利用准备的基于VB的上位机串口调试软件,对图像数据二维数组进行处理,使其通过灰度图的形式直接展现。
在以上图像处理操作后,智能小车可以对所处赛场内的轨道信息准确的掌握和判别,操作人员也可以对小车进行精准的控制,但需要注意的是智能小车在不同的运动状态下,所需要的图像信息存在差异,所以在智能小车循迹运行的过程中,操作人员应有意识的对摄像头的安装位置和调节趋势进行改变,尽可能达到“看的最远、看的最清晰”。
另外,在赛道图像采集和传输的基础上,赛道图像数据的分析也至关重要,通常情况下,基于图像传感器的智能小车所应用的摄像头图像采集系统由图像采集系统和图像数据处理系统共同构成,在数据处理系统运行的过程中,目前以图像分割方法应用最为广泛。在设计的过程中,由于智能小车的赛道是在白色板面上按照黑色轨迹运行,而且比赛环境的噪音较低,所以通常应用全局阈值法实现阈值分割,在确定具体阈值时,通常选取几个较常用的阈值,然后对其进行对比,确定最合适的实现对赛道图像的处理分析。
3 结论
通过上述分析可以发现,现阶段人们已经认识到车辆具有智能循迹性能,对减少交通事故发生概率的有效性,并在实践中有意识的结合循迹技术的要求和图像传感器的原理,进行以图像传感器为基础的智能循迹小车的设计,这是我国车辆智能化设计水平提升的具体体现,对智能交通系统建设具有积极作用。
参考文献:
[1]余炽业,宋跃,雷瑞庭.基于STC12C5A60S2的智能循迹小车[J].实验室研究与探索,2014(11):46-49+121.