一种结合支持向量机阈值统计与斑点检测的钢管计数方法
技术领域
本发明涉及一种钢管计数方法,尤其是一种结合支持向量机阈值统计与斑点检测的钢管计数方法。
背景技术
建筑行业和钢管租赁行业目前主要采用人工计数法对钢管进行计数。堆垛的钢管规模通常在500-1500根不等,整个人工计数过程耗时长、效率低,劳动强度非常大。研究用于钢管生产厂家和钢管租赁厂家,通过拍摄图片进行钢管自动识别方法,可以减轻计数工人的劳动强度,提高计数效率。
现有的基于图像识别的钢管自动计数方法中,得到广泛应用的主要是基于改进的Hough变换的圆检测算法与结合轮廓提取和形态学重构的图像分割算法。前者对于由于变形、堆垛不整齐、拍摄角度、阴影等因素导致的非整圆钢管图像,以及杂乱背景下的钢管图像,该方法精度急剧下降,无法满足工程应用的需要。后者可以在一定程度上解决目标钢管非正圆的识别问题,同时杂乱背景下的钢管识别具有一定精度。但该方法在复杂光照条件下,无法区分钢管阴影与堆垛间隙;并且随着图片中待识别钢管的数量增多,单个钢管所包含有效像素点变少,导致复杂背景与待识别目标之间的轮廓特征差异性降低,对子区域的筛选阈值变得困难,最终导致识别精度的快速下降。
通过对以上算法存在的问题以及解决方法的研究,结合工程应用的实际需求,需要研究计算结果更加精确,同时算法实现复杂度不太高满足工业应用需要的新计数方法。
发明内容
本发明要解决的技术问题是现有的钢管计数方法对拍照的环境要求较高,导致计数的精确性严重下降。
为了解决上述技术问题,本发明提供了一种结合支持向量机阈值统计与斑点检测的钢管计数方法,包括如下步骤:
步骤1,利用图像灰度化方法将待识别的钢管堆垛横截面二维图像处理为堆垛横截面灰度图像;
步骤2,利用SVM算法对灰度图像中目标子区域与非目标子区域进行分类,再利用统计方法对目标子区域的圆度特征参数和面积特征参数进行阈值统计,再根据阈值统计结果生成圆度阈值范围和面积阈值范围;
步骤3,将每一根目标钢管的截面看作图像中的一个类圆斑点,利用斑点检测算法对堆垛横截面灰度图像中的类圆斑点进行识别,再利用圆度阈值范围和面积阈值范围对识别结果进行筛选获得筛选斑点集合,最后统计筛选斑点集合内的斑点个数即为识别的目标钢管数。
作为本发明的进一步限定方案,步骤2的具体步骤为:
步骤2.1,利用梯度Hough变换法检测堆垛横截面灰度图像中所有的目标圆,统计计算所有目标圆中的最小半径,并将最小半径作为钢管的基准半径R0;
步骤2.2,将堆垛横截面灰度图像分成N个R0×R0像素的子区域,对每个子区域构造一个特征向量集xi=(p,q,h),其中,i=1,2,3,...,N,另外p、q和h分别为图像相位一致向量、纹理特征向量和灰度向量;
步骤2.3,在特征向量集xi中选取一部分目标子区域和非目标子区域的特征向量作为训练特征向量(xj,yj),其中,j∈{1,2,3,...,N},yj为类别标志;
步骤2.4,设A和B分别表示目标子区域和非目标子区域,则利用SVM算法的线性最优判别函数公式对特征向量集xi进行分类,线性最优判别函数公式为:
f(x)=sgn(w*x+b*) (1)
式(1)中,w*与b*分别为SVM算法中所要求的为实现对所有训练样本都正确分类所求得的权重向量和常量的全局最优解,将待分类的特征向量集xi(i=1,2,3,...N)带入公式(1)中,如果f(xi)的值为1,那么对应的xi属于A类,否则xi属于B类;
步骤2.5,对被分类为A的所有子区域进行二值化,然后利用Suzuki算法对所有A类子区域进行连通区域标记,并分别计算其区域面积Si,再统计计算获得所有A类子区域中的最大面积Smax和最小面积Smin,再根据公式2计算对应的最大圆度Cmax与最小圆度Cmin,公式(2)为:
式(2)中,C为区域的圆度,S为区域的面积,p为区域的周长,将面积阈值范围[Smin,Smax]代入式(2)即可得圆度阈值范围为[Cmin,Cmax]。
通过步骤2.1计算目标钢管的基准半径,可以为步骤2.2通过分割灰度图像为等大小的子区域集,提供子区域大小的限定。通过限定大小的子区域分割,可以初步筛选出有可能成为目标子区域的训练样本集,减少无效训练样本进入训练集的数量,以此方法筛选出的训练样本集作为SVM算法输入,可以有效减少SVM算法分类的误差。
通过步骤2确定的目标子区域的面积与圆度的阈值范围,可为步骤3筛选结果斑点集提供输入参数。通过设定目标斑点的面积和圆度阈值范围,可以有效限定候选斑点集中的斑点数量,降低构造结果斑点集的计算复杂度,并有效提高斑点检测的计算精度。
作为本发明的进一步限定方案,步骤3的具体步骤为:
步骤3.1,通过连续的一组转换阈值把输入的堆垛横截面灰度图像转换为一个二值图像集合{G1,G2,...Gn},转换阈值范围为[T1,T2],t为转换阈值的步长,则所有转换阈值为:
T1,T1+t,T1+2t,T1+3t,...,T2 (3)
步骤3.2,利用Suzuki轮廓提取算法检测二值图像集合{G1,G2,...Gn}中各个二值图像的边界,再提取出每个转换阈值对应的二值图像的连通区域,由边界所围成的不同的连通区域就是该二值图像Gk的斑点集合Bk;
步骤3.3,以计算二值图像零阶距的方式计算斑点集合Bk中每一个斑点bik∈Bk的斑点面积Sik,并计算斑点轮廓的周长pik,然后根据公式(2)计算对应的圆度Cik,将同时满足公式(4)和(5)的斑点bik加入筛选结果集,最终构造筛选后的斑点集合B′k;
Smax>Sik≥Smin (4)
Cmax>Cik≥Cmin (5)
步骤3.4,构造堆垛横截面灰度图像的斑点检测结果的集合ZT={Z1,Z2,...,ZM},设j∈{1,2,3,...,M},Zj代表第j个灰度图像斑点的候选斑点有序集,即Zj中的元素都是按照斑点半径从小到大排列的;
步骤3.5,遍历每个灰度图像斑点的候选斑点有序集Zj∈ZT,从中通过公式(7)计算出其对应的灰度图的最终检测结果特征点cj的中心坐标(xj,yj)为:
式(7)中,(xjk,yjk)为Zj中第k个候选斑点的坐标,L为Zj中元素的个数,特征点cj的半径Rj为Zj中排在中间位置的斑点的半径;
步骤3.6,计算输出的所有特征点cj的集合CT即为灰度图像斑点检测的最终结果集,最后统计最终结果集中灰度图像斑点的个数即为目标钢管个数。
作为本发明的进一步限定方案,步骤3.4中,Zj的构造过程为,遍历{G1,G2,...Gn}中的每一个二值图像Gk的斑点集合B′k,并重复如下步骤:
步骤3.4.1,对于每一个bik∈B′k,遍历ZT中每一个灰度图候选斑点集Zj∈ZT,判断bik是否属于新出现的灰度图候选斑点,即不属于ZT中任何一个已有的灰度图候选斑点集,判断条件为:
Dik≥Tb且Dik≥Rs且Dik≥Rik (6)
式(6)中,Dik为bik的质心坐标(xik,yik)与Zj中间位置的斑点bs的质心坐标(xs,ys)之间的距离,Tb为二值图像的斑点集合中不同斑点间的最小距离,当两个斑点间距离小于该值被认为是同一个斑点,Rs为斑点bs的半径,Rik为斑点bik的半径;
步骤3.4.2,将满足公式(6)的二值图像斑点bik加入二值图像Gk的新构造的灰度图候选斑点集ZNk中,对于不满足条件(6)的bik,按照其半径大小加入Zj的适当位置,再将ZNk添加到ZT中。
本发明的有益效果在于:(1)采用梯度Hough变换法,检测灰度图像中所有目标圆,统计计算所有目标圆中的最小半径作为钢管基准半径,具有很强的抗干扰性和鲁棒性,对图像拍摄的环境要求较低;(2)采用SVM算法对灰度图像中目标钢管子区域与非目标子区域进行自动分类,并通过统计方法利用分类结果集进行钢管子区域图像特征参数如圆度、面积等的阈值统计,而且对于包含大量钢管目标的图像识别,在较低算法复杂度下,表现出优秀的性能,适合嵌入移动类设备实现实时计数;(3)将每一根目标钢管的截面看作钢管堆垛图像中的一个类圆斑点,采用斑点检测的算法,输入目标钢管子区域特征参数阈值来实现钢管识别与自动计数,能够有效增强识别效率。
附图说明
图1为本发明的方法流程图。
具体实施方式
如图1所示,本发明提供了一种结合支持向量机阈值统计与斑点检测的钢管计数方法,包括如下步骤:
步骤1,利用图像灰度化方法将待识别的钢管堆垛横截面二维图像处理为堆垛横截面灰度图像;
步骤2,利用SVM算法对灰度图像中目标子区域与非目标子区域进行分类,再利用统计方法对目标子区域的圆度特征参数和面积特征参数进行阈值统计,再根据阈值统计结果生成圆度阈值范围和面积阈值范围,具体步骤为:
步骤2.1,利用梯度Hough变换法检测堆垛横截面灰度图像中所有的目标圆,统计计算所有目标圆中的最小半径,并将最小半径作为钢管的基准半径R0;
步骤2.2,将堆垛横截面灰度图像分成N个R0×R0像素的子区域,对每个子区域构造一个特征向量集xi=(p,q,h),其中,i=1,2,3,...,N,另外p、q和h分别为图像相位一致向量、纹理特征向量和灰度向量;
步骤2.3,在特征向量集xi中选取一部分目标子区域和非目标子区域的特征向量作为训练特征向量(xj,yj),其中,j∈{1,2,3,...,N},yj为类别标志;
步骤2.4,设A和B分别表示目标子区域和非目标子区域,则利用SVM算法的线性最优判别函数公式对特征向量集xi进行分类,线性最优判别函数公式为:
f(x)=sgn(w*x+b*) (1)
式(1)中,w*与b*分别为SVM算法中所要求的为实现对所有训练样本都正确分类所求得的权重向量和常量的全局最优解,将待分类的特征向量集xi(i=1,2,3,...N)带入公式(1)中,如果f(xi)的值为1,那么对应的xi属于A类,否则xi属于B类;
步骤2.5,对被分类为A的所有子区域进行二值化,然后利用Suzuki算法对所有A类子区域进行连通区域标记,并分别计算其区域面积Si,再统计计算获得所有A类子区域中的最大面积Smax和最小面积Smin,再根据公式2计算对应的最大圆度Cmax与最小圆度Cmin,公式(2)为:
式(2)中,C为区域的圆度,S为区域的面积,p为区域的周长,将面积阈值范围[Smin,Smax]代入式(2)即可得圆度阈值范围为[Cmin,Cmax];
步骤3,将每一根目标钢管的截面看作图像中的一个类圆斑点,利用斑点检测算法对堆垛横截面灰度图像中的类圆斑点进行识别,再利用圆度阈值范围和面积阈值范围对识别结果进行筛选获得筛选斑点集合,最后统计筛选斑点集合内的斑点个数即为识别的目标钢管数,具体步骤为:
步骤3.1,通过连续的一组转换阈值把输入的堆垛横截面灰度图像转换为一个二值图像集合{G1,G2,...Gn},转换阈值范围为[T1,T2],t为转换阈值的步长,则所有转换阈值为:
T1,T1+t,T1+2t,T1+3t,...,T2 (3)
由于原灰度图像可以表示为一个包含若干行若干列的二维矩阵,矩阵中每个数据点取值范围为T1到T2,通过设定一个步长t,可以将总的阈值范围[T1,T2]划分为一组连续的取值区间T1,T1+t,T1+2t,T1+3t,...,T2,基于每一个取值区间可以把原灰度图像转换为一个二值图像,表示该二值图像的矩阵中每个点取值只能是0或1,因此在总的阈值范围内,原灰度图像就被转换为若干个不同的二值图像{G1,G2,...Gn};
步骤3.2,利用Suzuki轮廓提取算法检测二值图像集合{G1,G2,...Gn}中各个二值图像的边界,再提取出每个转换阈值对应的二值图像的连通区域,由边界所围成的不同的连通区域就是该二值图像Gk的斑点集合Bk;
步骤3.3,以计算二值图像零阶距的方式计算斑点集合Bk中每一个斑点bik∈Bk的斑点面积Sik,并计算斑点轮廓的周长pik,然后根据公式(2)计算对应的圆度Cik,将同时满足公式(4)和(5)的斑点bik加入筛选结果集,最终构造筛选后的斑点集合B′k;
Smax>Sik≥Smin (4)
Cmax>Cik≥Cmin (5)
步骤3.4,构造堆垛横截面灰度图像的斑点检测结果的集合ZT={Z1,Z2,...,ZM},设j∈{1,2,3,...,M},Zj代表第j个灰度图像斑点的候选斑点有序集,即Zj中的元素都是按照斑点半径从小到大排列的,Zj的构造过程为,遍历{G1,G2,...Gn}中的每一个二值图像Gk的斑点集合B′k,并重复如下步骤:
步骤3.4.1,对于每一个bik∈B′k,遍历ZT中每一个灰度图候选斑点集Zj∈ZT,判断bik是否属于新出现的灰度图候选斑点,即不属于ZT中任何一个已有的灰度图候选斑点集,判断条件为:
Dik≥Tb且Dik≥Rs且Dik≥Rik (6)
式(6)中,Dik为bik的质心坐标(xik,yik)与Zj中间位置的斑点bs的质心坐标(xs,ys)之间的距离,Tb为二值图像的斑点集合中不同斑点间的最小距离,当两个斑点间距离小于该值被认为是同一个斑点,Rs为斑点bs的半径,Rik为斑点bik的半径;
步骤3.4.2,将满足公式(6)的二值图像斑点bik加入二值图像Gk的新构造的灰度图候选斑点集ZNk中,对于不满足条件(6)的bik,按照其半径大小加入Zj的适当位置,再将ZNk添加到ZT中;
步骤3.5,遍历每个灰度图像斑点的候选斑点有序集Zj∈ZT,从中通过公式(7)计算出其对应的灰度图的最终检测结果特征点cj的中心坐标(xj,yj)为:
式(7)中,(xjk,yjk)为Zj中第k个候选斑点的坐标,L为Zj中元素的个数,特征点cj的半径Rj为Zj中排在中间位置的斑点的半径;
步骤3.6,计算输出的所有特征点cj的集合CT即为灰度图像斑点检测的最终结果集,最后统计最终结果集中灰度图像斑点的个数即为目标钢管个数。
本发明的优点在于:
(1)具有很强的抗干扰性和鲁棒性,对图像拍摄者的要求较低。
(2)对于包含大量钢管目标的图像识别,在较低算法复杂度下,表现出优秀的性能,适合嵌入移动类设备实现实时计数。