本发明涉及一种新的指针表定位及读数算法,基于表盘sift及指针颜色,形状特征的算法。
背景技术:
在电力系统中,巡检机器人对于设备监控发挥重要作用。机器人根据预设巡检路径对试验区域的所有设备表进行巡检任务,采集表图像,分别生成对应巡检任务的所有表的识别结果。指针表在变电站所有设备信息中占很重要的一部分,开发一套针对指针表的定位读数算法对于巡检机器人有重要的现实意义。
该过程可以分为两个步骤,定位,根据预先标定的表盘模板提取特征,匹配整张图片中对应的表盘,并定位具体位置;确定指针位并读数,根据指针特征,确定指针的结束位置,根据预先标定的中心点,起始点,结束点,计算读数,返回。
目前第一步,现有的做法是模板匹配,根据预先标定的表盘模板,在大图像中搜寻目标,模板匹配是图像处理领域常见的匹配方法。模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效。
针对第二步,目前现有的做法为边缘检测,霍夫直线寻找指针直线的位置。该方法对图像中每一个像素点,都需要计算所有的theta对一个的rho,运算量较大,速度较慢。对于表盘内形状复杂情况适应性不好。
技术实现要素:
发明目的:针对上述方法存在的问题,本发明提出了一种基于表盘特征的指针表定位及读数算法。可以适应匹配表盘的旋转和尺度变化,减低指针检测运算,提升指针检测的鲁棒性。
技术方案:改进的表盘sift特征定位,和两种新的读数算法,基于颜色的指针检测和读数算法;基于扫描的指针检测和读数算法。步骤如下,
(1)数据标定:定义标定json数据格式,匹配模板的类型信息,以及读数需要的位置点标定和指针信息等;
(2)sift匹配:在获取到的图像上提取sift特征,匹配步骤(1)中模板的sift特征,并完成匹配到的表盘的矫正,同时,修改步骤(1)的位置点;
(3)预处理:对于步骤(2)存在清晰度问题的表盘,在进行具体的检测之前首先需要对输入图片进行预处理。图像增强,高斯滤波等;
(4)基于颜色的指针检测:将步骤(3)获得的表盘,提取步骤(1)标定指针颜色区域,确定指针结束点;
(5)基于扫描的指针检测:将步骤(3)获得的表盘,二值化处理,并按照步骤(2)计算获得新的位置点信息,以中心点为圆心,从起始线向终点线扫描,确定指针结束点;
(6)计算刻度值:根据步骤(4)和(5)获得的结束点,结合步骤(2)的位置点,求得角度比例值,并结合步骤(1)获得量程信息,最终求得指针的刻度值,并返回。
数据标定具体包括,
(1.1)标定文件定义为json数据格式;
(1.2)具体标定内容包含模板名称,类型,位于图像的roi区域,指针的中心位置点,以及颜色特征,量程的起始位置点,终止位置点,以及量程的起始值和总量程。
sift匹配具体包括,
(2.1)对模板及图像高斯模糊处理,滤波器大小设为(3*3);
(2.2)对步骤(2.1)模板及图像的计算sift检测关键点及其对应的描述子,大小为n*128,n为检测关键点的个数,128为描述子的维数;
(2.3)brute-force特征匹配,取第一个模板里一个特征的描述子并用第二个集合里所有其他的特征和他通过一些距离计算进行,采用knn匹配,返回k个最匹配,这里设k=2;
(2.4)利用步骤(2.3)返回的2个最匹配,进行比率检测,若第一个匹配的距离小于0.8*第二个匹配的距离,则第一个匹配成立;
(2.5)计算模板中成立的检测关键点之间的距离矩阵m1,计算图像中成立的检测关键点之间的距离矩阵m2;
(2.6)计算距离矩阵m1和m2之间差的绝对值,过滤掉其中绝对值过大的异常点,异常点数量设置为maxabnormalnum=15,得到新的检测关键点;
(2.7)利用新的检测关键点,寻找模板和图像之间的转置矩阵m;
(2.8)利用转置矩阵m,通过透视变换,匹配模板中的四个边界点,以及标定信息中的所有点的坐标,并更新到标定中;
(2.9)根据新的坐标矫正匹配到的表盘的位置,首先获得旋转矩阵,通过仿射变换将表盘矫正到水平方向,再次计算标定信息中的所有点的坐标,并更新到标定中;
(2.10)判断标定信息中的点是否超出表盘的边界,如超出,则返回sift匹配异常,如未超出,则匹配成功。
预处理具体包括,
(3.1)对于反光强烈的表盘图像,采用直方图均衡,首先将rbg格式转为yuv格式,直方图均衡化拉伸像素强度分布范围,从而增强图像对比度;
(3.2)高斯滤波,用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
基于颜色的指针检测具体包括,
(4.1)首先将表盘调整到固定大小,去除表盘的外轮廓,定义一个和表盘大小相等的三维矩阵,背景色为白色,在矩阵中心画一个像素(0,0,0)的圆,将该矩阵与表盘矩阵执行或运算,得到去除外轮廓的表盘矩阵;
(4.2)定义指针颜色的hsv范围,将表盘图像由rbg格式转为hsv格式,在hsv格式图像中寻找符合指针颜色的区域;
(4.3)对获得指针区域侵蚀、膨胀处理,内核设为(3*3);
(4.4)计算指针区域的轮廓,过滤掉轮廓点数量小于5的轮廓;
(4.5)寻找所有轮廓点中距离标定中心点最远的坐标,即为指针结束点,距离计算方式为欧式距离。
基于扫描的指针检测具体包括,
(5.1)首先将表盘调整到固定大小,根据标定的起始点和中心点,求得半径;
(5.2)高斯模糊处理,内核设定为(3*3);
(5.3)灰度化处理,自适应二值化处理。去除表盘的外轮廓和内轮廓;
(5.4)侵蚀,膨胀处理,前者内核设为(3*3),后者内核设为(5*5);
(5.5)通过二进制细化操作,提取二值化图像后表盘的骨架,采用的是zhang-suen的算法;
(5.6)根据标定量程起始点和终止点,和中心点位置确定扫描的起始角度和终止角度;
(5.7)在起始角度和终止角度之间扫描,间隔为1度,分别计算每条扫描直线的左右2度区间内点坐标,及该直线最远点;
(5.8)求得每条扫描直线区间,包含的二值化骨架像素点的和,找到该和值最大的扫描直线,该直线的最远点即为指针的结束点。
计算刻度值具体包括,
(6.1)计算量程起始点和终止点与中心点的夹角;
(6.2)计算量程起始点与指针结束点与中心点的夹角;
(6.3)将上述两夹角的比值乘上总量程及得到最终读数,返回。
有益效果
本发明的优点是,利用sift特征进行表盘匹配,具有以下优点,独特性,也就是特征点可分辨性高,适合在海量数据中匹配。多量性,提供的特征多。高速性,就是速度快。同时,sift特点的旋转、缩放、平移不变性;解决图像仿射变换,投影变换的关键的匹配;光照影响小;目标遮挡影响小。同时,由于表盘中指针位置变化对匹配过程的影响,本发明加入的检测关键点的过滤机制,增强了匹配的准确性。
本发明提出的两种指针检测机制,基于颜色指针检测和基于扫描指针检测,相对于霍夫直线检测运算量较小,因此速度快,对于检测中的干扰,适应性好,因此准确率也有提升。
附图说明
图1是本发明的总体结构图
图2是本发明的标定格式图
图3sift特征匹配流程及效果图
图4直方图均衡效果图
图5基于颜色指针检测流程及效果图
图6基于扫描指针检测流程及效果图
具体实施方式
图1为本发明的总体结构图,本发明的主要部分为sift匹配和矫正,以及预处理和基于颜色和扫描的指针检测,读数。图2为标定格式,其中标定包括表盘类型(type),中心点坐标(centerpoint),起始点(startpoint),终止点(endpoint),roi区域(roi),起始量程(startvalue),总量程(totalvalue)等。
图3为sift匹配流程,
a)高斯过滤(3*3内核),sift检测关键点,如图3(1)所示;
b)knn特征匹配,k=2,返回k个最匹配的特征点,并基于第一个匹配的距离小于0.8*第二个匹配的距离,筛选特征点,如图3(2)所示;
c)改进sift特征匹配,过滤异常点,如图3(3)所示,可以看出过滤异常点后匹配情况比图3(2)的匹配更准确,具体算法如下,
模板关键点的距离矩阵m1,图像关键点的距离矩阵m2,大小为n*n,m1[i][j]为关键点i到关键点j的特征距离,diff为m1和m2距离矩阵的差的绝对值。
diff[i][j]=|m1[i][j]-m2[i][j]|,i,j=1,λ,n.
从小到大排序得到diff2,剔除diff2中值最大的maxabnormalnum=15个异常值,首先,求距离矩阵distances,公式如下,
求距离均值averagedistance,公式如下,
保留distances矩阵中distances[i]<2*averagedistance的特征点;
d)利用新的特征点求的模板与图像之间的转置矩阵m;
e)利用转置矩阵求的匹配模板的四个边界点,以及标定信息中的所有点的坐标;
f)根据新的坐标矫正表盘到水平方向,计算新的标定点,dst[1:4]为模板匹配到的四个矩阵点,宽的向量vector,
vector=(dst[3][0]-dis[0][0],dst[3][1]-dst[0][1])
余弦值cos为,
需要旋转的角度angle,
获得旋转矩阵,通过仿射变换将表盘矫正到水平方向,如图3(4)所示;
g)判断标定信息中1)中心坐标是否超出新的表盘空间,宽为w,高为h;2)量程起始坐标是否超出新的表盘空间,宽为w,高为h;3)量程终止坐标是否超出新的表盘空间,宽为w,高为h;若都未超出,则匹配点正确。
图4为直方图均衡化处理后的效果,可以看出左边原图有反光,右图更清晰。
图5为基于颜色指针检测流程,
a)去除外轮廓效果如图5(1)所示;
b)匹配到的指针颜色区域如图5(2)所示,图中匹配的黑色区域hsv范围为下限[0,0,0],上限[180,255,46];
c)计算指针区域的轮廓,筛选轮廓点数小于5的轮廓;
d)计算距离中心点最远的轮廓点,与中心点连线,最终找到的指针位置如图5(3)绿线所示。
图6为基于扫描指针检测流程,
a)高斯滤波处理后,得到的表盘如图6(1)所示;
b)自适应二值化后的效果如图6(2)所示,计算阀值的邻域大小17,常数c为11;
c)去除表盘的外轮廓(r)和内轮廓(r/3),侵蚀,膨胀处理,效果如图6(3)所示;
d)二进制细化后的效果如图6(4)所示;
e)根据标定计算起始角度startangle和终止角度endangle,扫描过程如图6(5)所示,扫描角度为[startangle-10,endangle+10],每次angle增加1度,扫描度数区间为[angle-2,angle+2],半径区间为[r/3,r],分别求得个扫描区间包含的二进制细化的像素点和,像素和最大的扫描位置,即为指针位置,如图6(6)红线所示。
计算刻度值流程如下,
已知量程起始点startpoint,终止点endpoint,指针结束点pointerpoint,表盘中心点centerpoint,量程起始值startvalue,总量程totalvalue,然后计算总量程的夹角anglerange,首先求得待计算夹角的两向量,向量a和向量b,公式如下,
vectora=(startpoint[0]-centerpoint[0],startpoint[1]-centerpoint[1])
vectorb=(endpoint[0]-centerpoint[0],endpoint[1]-centerpoint[1])
计算vectora和vectorb两个向量的长度,lena和lenb,公式如下,
求向量a和向量b夹角的余弦值,利用反余弦函数,求得向量a和向量b的夹角,公式如下,
计算指针与初始位置的夹角angle,和上述方法相同,返回最终读数值value,公式如下,