1.一种电力刀闸图像中直线段提取方法,其特征在于,包括以下步骤:
1)图像预处理,对图像进行边缘检测、二值化和形态学膨胀处理;
图像预处理具体步骤包括:
11)令Img表示输入图像,对输入图像Img进行边缘检测,将边缘检测结果图像记为ImgEdge;
12)对边缘检测结果图像ImgEdge进行OSTU二值化处理,将二值化结果图像记为ImgBw;
13)对二值化结果图像ImgBw进行形态学膨胀,将膨胀结果图像记为ImgDilated;
14)对膨胀结果图像ImgDilated进行图像细化,将细化结果图像记为ImgThin;
2)对预处理后的图像进行直线检测,得到先验直线段;对细化结果图像ImgThin进行Hough直线检测,检测出的直线段即为先验直线段,记为priorSegLine,priorSegLine[i]表pSL pSL示第i条先验直线段,i的取值范围是1~n ,n 是priorSegLine的总数量;
3)基于先验直线段进行直线粗拟合,得到粗拟合直线;具体步骤如下:
31)计算直线段的归属像素点集:
将先验直线段priorSegLine[i]所表示的直线记为priorLine[i],priorLine[i]的表示公式如下:
0=Aix+Biy+Ci
其中,Ai、Bi和Ci表示直线priorLine[i]的一般式方程参数,x和y分别表示图像中的横纵坐标;
归属像素点集表示细化结果图像ImgThin中所有距离直线priorLine[i]不超过阈值T1的像素点,若图像中的像素点满足如下公式,则将该像素点记为先验直线段priorSegLine[i]的一个归属像素点:其中,(x0,y0)表示细化结果图像ImgThin中的像素点;
将所有满足上式的像素点(x0,y0)的集合记为归属像素点集pointsAttached[i],表示先验直线段priorSegLine[i]的归属像素点集;
32)基于最小二乘法对归属像素点集进行直线拟合:
基于最小二乘法对归属像素点集pointsAttached[i]进行直线拟合,拟合得到的直线即粗拟合直线,记为initialLine[i],并将粗拟合直线initialLine[i]的斜率记为 截距记为 其中斜率 和截距 的计算公式如下:pA
其中,n 是归属像素点集pointsAttached[i]中归属像素点的数量, 和 分别表示归属像素点集pointsAttached[i]中第z个归属像素点 的横坐标和纵坐标,z的取pA值范围是1~n ,inv()表示括号内矩阵的逆矩阵,T()表示括号内矩阵的转置矩阵;
33)重复步骤31)和步骤32),直至每条先验直线段priorSegLine[i]都计算得到其对应的归属像素点集pointsAttached[i]和粗拟合直线initialLine[i];
4)基于粗拟合直线进行直线精拟合,得到精拟合直线段;
5)对精拟合直线段进行去重处理,得到去重直线段;
6)对去重直线段进行方向筛选,完成直线段提取。
2.根据权利要求1所述的电力刀闸图像中直线段提取方法,其特征在于:在步骤4)中,具体步骤如下:
41)计算归属像素点在粗拟合直线上的映射点:
粗拟合直线initialLine[i]是根据归属像素点集pointsAttached[i]计算得到的,现计算归属像素点集pointsAttached[i]中的归属像素点 在粗拟合直线initialLine[i]上的映射点 计算公式如下:
42)对归属像素点集进行排序:
一个归属像素点对应一个映射点,按照映射点横坐标的大小,对归属像素点集pointsAttached[i]进行从小到大的排序,将排序后的归属像素点集记为排序归属像素点集pointsSorted[i],将 记为排序归属像素点集pointsSorted[i]中第m个归属像素点,可知
43)对排序后的归属像素点进行分段:
基于欧式距离对排序归属像素点集pointsSorted[i]中相邻的归属像素点进行距离判断,若当前归属像素点 与上一个归属像素点 的距离disAttached小于常量阈值T2,则认为 和 属于同一像素段,若 和 间的距离一disAttached大于T2,则认为和 属于不同像素段,距离一disAttached的计算公式如下:
计算完成后,可以得到 个像素段, 表示排序归属像素点集pointsSorted[i]分段后得到的像素段数量,令 表示第 个像素段中的归属像素点数量,其中 的取值范围是
44)像素段筛选:
对步骤43)中得到的像素段基于像素数量进行筛选,若归属像素点数量 则将归属像素点数量 对应的像素段保留,若 则将 对应的像素段剔除,其中T3是一个常量阈值,当 在取值范围内遍历完全后,即完成像素段筛选;将保留下来的像素段记为 表示第 个筛选得到的像素段,的取值范围是 其中是保留下来的像素段的数量;
45)像素段合并:
在步骤44)中筛选得到的像素段其中的归属像素点已经过排序,因此可得保留像素段中的最小横坐标大于保留像素段 中的最大横坐标;将保留像素段 中具有最小横坐标的像素点记为 将保留像素段
中具有最大横坐标的像素点记为 若 与 之
间的距离二disSeg小于常量阈值T4,则将保留像素段 中的像素点按照现有顺序插入到保留像素段 的尾部, 与 之间的距离二disSeg大于T4,则不做处理,其中距离二disSeg的计算公式如下:当 在取值范围内遍历完全后,即完成像素段合并;将合并后的像素段记为合并像素段表示第 个合并后的像素段, 的取值范围是 其中 是像素段合并后像素段的数量,再将segMax[i]记为合并后像素段中具有最大像素点数量的最大像素段;
46)计算精拟合直线段:
基于最小二乘法对最大像素段segMax[i]进行直线拟合,计算方法与步骤32)一致,将拟合出的直线记为refineLine[i],将直线refineLine[i]的斜率记为 截距记为将最大像素段segMax[i]中具有最小横坐标的像素点记为 具有最大横坐标的像素点记为 分别计算像素点 与像素点 在直线refineLine[i]的映射点,并分别记为 和 计算方法与步骤41)一致;
分别以 和 作为线段的起点与终点,即得到精拟合直线段,记为refineSegLine[i],其斜率和截距与直线refineLine[i]相同,分别为 和
47)重复步骤41)至步骤46),直至每条粗拟合直线initialLine[i]都计算得到其对应的精拟合直线段refineSegLine[i]。
3.根据权利要求2所述的电力刀闸图像中直线段提取方法,其特征在于:在步骤5)中,具体步骤如下:
51)计算精拟合直线段与图像中心点的距离
将细化结果图像ImgThin的图像中心点记为(xcenter,ycenter),计算精拟合直线段refineSegLine[i]与中心点(xcenter,ycenter)间的距离disCenter[i],距离disCenter[i]的计算公式如下:其中, 和 是精拟合直线段refineSegLine[i]对应的直线refineLine[i]的一般式直线方程参数;
52)判断精拟合直线段与图像中心点的位置关系:
计算精拟合直线段refineSegLine[i]是否在图像中心点(xcenter,ycenter)的上方,计算公式如下:其中,up[i]表示线段refineSegLine[i]与图像中心点(xcenter,ycenter)的位置关系,down是一个常量阈值;
53)基于Mean‑shift算法对精拟合直线段进行距离聚类:重复步骤51)和步骤52),直至每条精拟合直线段refineSegLine[i]都计算得到其对应的(disCenter[i],up[i]);
pSL
将((disCenter[1],up[1]),...,(disCenter[i],up[i]),...,(disCenter[n ],uppSL[n ]))作为Mean‑shift算法的输入,计算后可得到n4个距离聚类,n4是计算得到距离聚类的数量,用表示disCluster[j]第j个距离聚类,则j的取值范围是1~n4,每个距离聚类idisCluster[j]都包含聚类中心disCluster[j].dis和聚类方位disCluster[j].up;
若|disCenter[i]‑disCluster[j].dis|<=T5,其中是一个T5常量阈值,并且up[i]==disCluster[j].up,则认为精拟合直线段refineSegLine[i]属于距离聚类disClusterpSL[j];由此可将n 条精拟合直线段分配给个n4距离聚类;
54)精拟合直线段去重:
距离聚类disCluster[j]包含若干条精拟合直线段,仅保留其中具有最大像素点数量的像素段,将其作为去重直线段,并重新命名为去重直线段goodSegLine[j];当j在取值范pSL围内遍历完全后,即完成精拟合直线段去重;此时,由原来的n 条先验直线段变成了n4条去重直线段。
4.根据权利要求3所述的电力刀闸图像中直线段提取方法,其特征在于:在步骤6)中,具体步骤如下:
61)计算去重直线段角度:
令 表示去重直线段goodSegLine[j]中具有最小横坐标的像素点,令表示去重直线段goodSegLine[j]中具有最大横坐标的像素点,去重直线段goodSegLine[j]的角度计算公式如下:其中,angle[j]表示goodSegLine[j]的角度;
62)基于Mean‑shift算法对去重直线段进行角度聚类:重复步骤61),直至每条去重直线段goodSegLine[j]都计算得到其对应的角度angle[j];
将(angle[1],...,angle[j],...,angle[n4])作为Mean‑shift算法的输入,计算后可得到n5个角度聚类,n5是计算得到角度聚类的数量,用表示angleCluster[k]第k个角度聚类,则k的取值范围是1~n5;每个角度聚类angleCluster[k]都包含聚类中心angleCluster[k].angle;
若|goodSegLine[j]‑angleCluster[k].angle|<=T6,则认为去重直线段goodSegLine[j]属于聚类angleCluster[k];由此可将n4条去重直线段分配给n5个角度聚类;
63)角度聚类评分:
k
将角度聚类angleCluster[k]包含的去重直线段的数量记为l ,角度聚类angleClusterk k k k[k]中第o条去重直线段二记为angleCluster[k][o],o的取值范围是1~l;
k
去重直线段二angleCluster[k][o ]是由精拟合直线段筛选得到,因此去重直线段二kangleCluster[k][o]的长度可以通过其对应的精拟合直线段两端点的欧式距离计算得k k到,将去重直线段二angleCluster[k][o]的长度记为length[k][o];同时,去重直线段二k kangleCluster[k][o]到图像中心点的距离即去重直线段二angleCluster[k][o]对应的精k拟合直线段到图像中心点的距离,故将去重直线段二angleCluster[k][o]到图像中心点k的距离重命名为dis[k][o];
角度聚类angleCluster[k]的评分计算公式如下:其中,rank[k]表示角度聚类angleCluster[k]的评分,σ和α是常量;
64)角度聚类筛选:
重复步骤63),直至每个角度聚类angleCluster[k]都计算得到其对应的评分rank[k],若评分rank[k]>=T7,则保留角度聚类angleCluster[k];若rank[k]<T7,则剔除角度聚类angleCluster[k];遍历完成后,所有保留下来的角度聚类中的去重直线段二,即最终提取出的直线段,完成直线段提取。