CN106296674B - 一种椭圆形无栅格油位计的自动读数方法 - Google Patents
一种椭圆形无栅格油位计的自动读数方法 Download PDFInfo
- Publication number
- CN106296674B CN106296674B CN201610631277.3A CN201610631277A CN106296674B CN 106296674 B CN106296674 B CN 106296674B CN 201610631277 A CN201610631277 A CN 201610631277A CN 106296674 B CN106296674 B CN 106296674B
- Authority
- CN
- China
- Prior art keywords
- image
- max
- edge
- indicate
- level indicator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10004—Still image; Photographic image
Abstract
本发明公开了一种椭圆形无栅格油位计的自动读数方法,属于工业机器视觉仪表智能读数领域,解决现有技术中对仪表、指针进行读数时,由于背景复杂,光照变化和成像噪声与退化等造成的定位困难、识别困难、计算量大、移植困难、算法的稳定性差和效率低等问题。本发明使用Hough椭圆检测,Canny边缘检测,形态学方法定位油位计,并使用等比例缩放,Canny边缘检测,形态学操作以及聚类的方法确定油位计液面位置并计算剩余油量的百分比。通过对多幅图像测试表明,本发明较于其他智能仪表读数方法,算法简单易实现,运行效率更高,稳定性强,对于图像旋转、模糊等干扰具有较好鲁棒性。
Description
技术领域
一种椭圆形无栅格油位计的自动读数方法,用于仪表智能读数,属于工业机器视觉仪表智能读数技术领域。
背景技术
工业机器视觉仪表智能读数技术主要利用模式识别来提取特定的仪表、指针,达到读数的目的。相比于人工读数,其优点有:24小时不间断读数,节省人工劳动力,稳定性高,效率高。因此在工业领域应用中,智能仪表读书有很高的研究价值。
衡量工业机器视觉仪表智能读数算法性能主要体现在对仪表定位、读数(指针)提取和图像复原的能力上。以一种指针式表盘自动读数方法为例,需要从普通相机拍摄的照片中,正确定位出仪表,正确识别出仪表盘指针的位置,模拟人读数的方式进行读数。而成像过程中,旋转、光照变化和遮挡是图像主要的干扰,也是图像复原的主要难点。
目前,常用的智能仪表读数算法有Hough变换、加权平均法、数学形态学、边缘检测、阈值分割、主动轮廓法等一系列算法。由于成像过程中,太多背景信息进入了图像,在加上光照不均,遮挡等影响,导致对仪表读数,指针等关键信息难以很好得提取。近年来智能仪表读数算法也有了很多创新,如双阈值Hough变换、基于Snake模型的指针式表盘的分割、使用Hough圆检测和中心投影法的智能仪表读数等。这些方法在一定程度上可以完成对仪表的智能读数,并相比于传统提高了一定效率,但仍存在定位困难、识别困难、计算量大、移植困难、算法的稳定性差和效率低等问题。
发明内容
本发明针对上述不足之处提供了一种椭圆形无栅格油位计的自动读数方法,解决现有技术中对仪表、指针进行读数时,由于背景复杂,光照变化和成像噪声与退化造成的定位困难、识别困难、计算量大、移植困难、算法的稳定性差和效率低等问题。
为了实现上述目的,本发明采用的技术方案为:
一种椭圆形无栅格油位计的自动读数方法,其特征在于,包括以下步骤:
步骤1:读入原始图像f(x,y),即读入椭圆无栅格油液计图像;
步骤2:用Hough变换的椭圆检测对原始图像f(x,y)进行初步定位,得到初步定位图像f1(x,y);
步骤3:用Canny边缘检测对初步定位图像f1(x,y)进行边缘检测,得到边缘图像g1(x,y),并用形态学膨胀将边缘图像g1(x,y)断掉的边缘连接起来;
步骤4:对膨胀过后的边缘图像g1(x,y)进行孔洞填充,然后提取所有连通分量,最后在提取的所有连通分量里提取最大的连通分量Ymax;
步骤5:对最大的连通分量Ymax进行腐蚀,得到油位计的准确位置,用恰好框住连通分量Ymax的最小矩形将原始图像f(x,y)中的油位计提取出来;
步骤6:将步骤5中的矩形等比例缩小,直到将油位计读数区f2(x,y)截取出来;
步骤7:对提取出来的油位计读数区f2(x,y)进行Canny边缘检测,得到边缘图像g2(x,y);
步骤8:用横向结构元对边缘图像g2(x,y)进行腐蚀,将大量非液面边缘去除;
步骤9:将大量非液面边缘去除后,设置阈值,当保留的边缘长度大于阈值时,则为液面,反之,则不是液面;
步骤10:通过液面的位置以及油位计读数区f2(x,y)的量程计算出油量百分比。
进一步,所述步骤2中Hough变换的椭圆检测公式如下:
其中,a是原始图像f(x,y)的长轴或短轴,即横向平分椭圆的轴,b是原始图像f(x,y)的短轴或长轴,即纵向平分椭圆的轴,(x0,y0)是原始图像f(x,y)的圆心,x、y是原空间的自变量与因变量。
进一步,所述步骤3、步骤7中Canny边缘检测的具体步骤为:
步骤371:用一个高斯滤波器平滑输入图像,得到平滑后的图像:
fs(x,y)=G(x,y)*f(x,y);
其中,fs(x,y)表示平滑后的图像(在步骤3中表示初步定位图像f1(x,y)平滑后的图像,在步骤7中表示油位计读数区f2(x,y)平滑后的图像),f(x,y)表示输入图像(在步骤3中表示初步定位图像f1(x,y),在步骤7中表示油位计读数区f2(x,y)),G(x,y)表示高斯函数,(x,y)表示图像中的像素坐标值(在步骤3中表示初步定位图像f1(x,y)的像素坐标值,在步骤7中表示油位计读数区f2(x,y)的像素坐标值),σ2表示高斯函数G(x,y)的方差,“*”表示卷积;
步骤372:根据平滑后的图像,提取梯度幅值图像和梯度角度图像:
其中,M(x,y)表示梯度幅值图像,α(x,y)表示梯度角度图像,表示平滑后的图像fs(x,y)在x方向的偏导数,表示平滑后的图像fs(x,y)在y方向的偏导数;
步骤373:采用非极大值对梯度幅值图像M(x,y)进行抑制:首先,令d1,d2,d3和d4分别表示四个基本边缘方向,即水平方向(0°)、-45°、垂直方向(90°)、45°;然后寻找最接近梯度角度图像α(x,y)的dk(k=1,2,3,4);最后,如果梯度幅值图像M(x,y)的值小于沿dk方向的两个邻居值之一,则令gN(x,y)=0(抑制),否则,令gN(x,y)=M(x,y),这里gN(x,y)是非极大值抑制后的图像,N表示非极大值抑制;
步骤374:用双阈值处理来检测非极大值抑制后的图像gN(x,y)的边缘,即同时用两个不同的阈值对非极大值抑制后的图像gN(x,y)进行边缘检测:
其中,TH表示高阈值,TL表示低阈值,gNH(x,y)表示非极大值抑制后的图像gN(x,y)经过高阈值TH分割后的图像,gNL(x,y)表示非极大值抑制后的图像gN(x,y)经过低阈值TL分割后的图像,阈值处理后,gNH(x,y)的非零元素比gNL(x,y)少,gNH(x,y)中所有非零像素都包含在gNL(x,y)中,则
g'NL(x,y)=gNL(x,y)-gNH(x,y);
上述公式中,从经过低阈值TL分割后的图像gNL(x,y)中删除所有来自经过高阈值TH分割后的图像gNH(x,y)的非零元素,即可将gNH(x,y)和g'NL(x,y)中的非零像素分别看成是“强”和“弱”边缘像素;
步骤375:阈值处理后,经过高阈值TH分割后的图像gNH(x,y)中的所有强边缘像素均为有效的边缘像素,并进行标记,由于经过高阈值TH分割后的图像gNH(x,y)中的边缘存在缝隙,需要得到较长的边缘和Canny边缘检测形成最终的输出图像的具体步骤如下:
(a)在经过高阈值TH分割后的图像gNH(x,y)中,对当前定位的像素用8邻域顺时针定位下一个未被访问的边缘像素p;
(b)在g'NL(x,y)中将所有的弱像素标记为有效边缘像素,用8连通性的连接方法连接到p;
(c)通过8连通性的连接,如果gNH(x,y)中的所有非零像素已被访问,则跳到步骤(d),否则返回步骤(a);
(d)将g'NL(x,y)未标记为有效边缘像素的所有像素置零,此时,经过高阈值TH分割后的图像gNH(x,y)中存在缝隙的边缘被填充,得到一根较长的边缘;
(e)将g'NL(x,y)的所有非零像素赋加到gNH(x,y),得到用Canny边缘检测形成最终的输出图像g(x,y)(在步骤3中为边缘图像g1(x,y),在步骤7中为边缘图像g2(x,y))。
进一步,所述步骤3中,形态学膨胀将断掉的边缘连接起来的公式如下:
其中,g1(x,y)表示边缘图像,B表示结构元,b={b1,b2}表示原结构元B里每个像素的坐标,w={w1,w2}表示经过变换后的结构元每个像素的坐标,(B)z={w|w=b+z,b∈B}表示将B中的坐标b={b1,b2}都加上z={z1,z2}个像素坐标。
进一步,所述步骤4的具体步骤如下:
步骤41:将膨胀过后的边缘图像g1(x,y)进行孔洞填充,孔洞填充的公式如下:
其中,A表示一个集合,元素是8连通的边界,每个边界包围一个膨胀后的边缘图像g1(x,y)的背景区域,即一个孔洞,Ac表示不属于A的点的集合,B是结构元,表示形态学膨胀,Xk表示经过第k次迭代后的孔洞填充结果,如果Xk=Xk-1,则填充结束;
步骤42:孔洞填充后,提取所有连通分量,提取连通分量的公式如下:
其中,Yk表示对步骤41中孔洞填充的图像Xk提取到的所有连通分量,B表示结构元,表示形态学膨胀,X=Xk表示步骤41中孔洞填充后的连通分量的集合;
步骤43:得到所有连通分量后,提取最大连通分量,公式如下:
Ymax=max{Area(Yk)};
其中,Ymax表示提取到的所有连通分量Yk中的最大连通分量,Area(Yk)表示连通分量Yk的像素个数,最大连通分量Ymax,即像素个数最多的连通分量。
进一步,所述步骤5中,用恰好框住连通分量Ymax的最小矩形如下所示:
由于最大连通分量是平行于纵坐标方向的,矩形框和连通分量Ymax的切点可以表示为:a(x1,ymin),b(xmax,y1),c(x1,ymax),d(xmin,y1),其中,xmin,xmax,ymin,ymax分别表示最大连通分量水平方向的最小值、最大值和垂直方向最小值、最大值,x1是垂直方向切点a,c的横坐标,y1是水平切点b,d的纵坐标,矩形框的四个顶点A,B,C,D可以根据四个切点坐标分别表示为:A(xmin,ymin)、B(xmax,ymin)、C(xmin,ymax)、D(xmax,ymax)。
进一步,所述步骤6中,将步骤5中的矩形等比例缩小具体如下所示:
xC=(xmin+xmax)/2,
yC=(ymin+ymax)/2,
x'min=xmin+a[xC-xmin],
y'min=ymin+a[yC-ymin],
x'max=xmax-a[xmax-xC],
y'max=ymax-a[ymax-yC],
P(xC,yC)表示矩形框的形心,A’(x'min,y'min)、B’(x'max,y'min)、C’(x'min,y'max)、D’(x'max,y'max)表示缩小后的矩形的顶点,a为缩小的系数。
进一步,所述步骤5和步骤8中,形态学腐蚀的公式如下:
其中,A是输入图像(步骤5中是最大连通分量Ymax,步骤8中是边缘图像g2(x,y)),B是结构元(步骤5中是普通的十字形结构元,步骤8中是水平方向的结构元),b={b1,b2}表示原结构元B里每个像素的坐标,w={w1,w2}表示经过变换后的结构元每个像素的坐标,(B)z={w|w=b+z,b∈B}表示将B中的坐标b={b1,b2}都加上z={z1,z2}个像素坐标。
进一步,所述步骤9中得到液面的具体公式为:
其中,Zk表示经过步骤8的形态学腐蚀后边缘图像g2(x,y)中的第k个连通分量,jk是Zk的纵坐标,T是所有边缘连通分量的纵坐标的加权均值,权值大小为连通分量的像素个数Area(Zk),N表示经过步骤8的形态学腐蚀后边缘图像g2(x,y)中的连通分量个数,每经过一次公式的分割后重新计算T,再次用公式分割直至收敛。
进一步,所述步骤10中,计算油量百分比的公式为:
其中,Poil表示剩余油量百分比,yedge表示步骤9中提取出来的液面边缘纵坐标,y'min和y'max分别是步骤7中缩小后矩形框的纵坐标的最小值和最大值。
与现有技术相比,本发明的优点在于:
一、本发明算法结构简单,运算量少,且本发明采用的算法均为经典算法,例如Canny边缘检测和形态学中的孔洞填充对油位计精确定位,通过结合经典算法,实现仪表、指针的精确读数,处理速度快,对每张静态图像的平均耗时在1秒左右,能很好满足实际应用要求;
二、本发明在椭圆形无栅格油位计图像视角的旋转、光照的影响和模糊等干扰下,具有较好的鲁棒性;
三、本发明易于实现,可以移植到C++平台下运行,并且也易于移植到其他平台。
附图说明
图1为本发明中包围连通分量的矩形框示意图;
图2为本发明的流程图示意图;
图3为本发明的初始图像;
图4为本发明的中Hough变换的椭圆检测;
图5为本发明中Canny边缘检测及膨胀连接示意图;其中,(a)为canny边缘检测示意图、(b)为膨胀canny边缘检测后的示意图;
图6为本发明中孔洞填充示意图;
图7为本发明中最大的连通分量及最大连通分量的腐蚀示意图;
图8为本发明中缩小矩形框的示意图;其中,(a)为矩形框缩小示意图、(b)为缩小比例示意图、(c)为缩小后的结果示意图;
图9为本发明中对油位计窗口的边缘检测示意图;
图10为本发明中用横向结构元对边缘图像g2(x,y)进行腐蚀示意图;
图11为本发明中提取液面边缘和读数结果示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
步骤1:读入原始图像f(x,y),即读入椭圆无栅格油液计图像,如图3所示;
步骤2:用Hough变换的椭圆检测对原始图像f(x,y)进行初步定位,得到初步定位图像f1(x,y),如图4所示,Hough变换的椭圆检测公式如下:
其中,a是原始图像f(x,y)的长轴或短轴,即横向平分椭圆的轴,b是原始图像f(x,y)的短轴或长轴,即纵向平分椭圆的轴,(x0,y0)是原始图像f(x,y)的圆心,x、y是原空间的自变量与因变量。
步骤3:用Canny边缘检测对初步定位图像f1(x,y)进行边缘检测,得到边缘图像g1(x,y),并用形态学膨胀将边缘图像g1(x,y)断掉的边缘连接起来,如图5所示,具体步骤如下所示:
步骤31:用一个高斯滤波器平滑输入图像,得到平滑后的图像:
fs1(x,y)=G(x,y)*f1(x,y);
其中,f1(x,y)表示输入图像,即初步定位图像,fs1(x,y)表示对输入图像平滑后的图像,G(x,y)表示高斯函数,(x,y)表示初步定位图像中的像素坐标值,σ2表示高斯函数G(x,y)的方差,“*”表示卷积;
步骤32:根据平滑后的图像,计算提取梯度幅值图像和梯度角度图像:
其中,M1(x,y)表示梯度幅值图像,α1(x,y)梯度角度图像,表示平滑后的图像fs1(x,y)在x方向的偏导数,表示表示平滑后的图像fs1(x,y)在y方向的偏导数;
步骤33:采用非极大值对梯度幅值图像M1(x,y)进行抑制:首先,令d1,d2,d3和d4分别表示四个基本边缘方向,即水平方向(0°)、-45°、垂直方向(90°)、45°;然后寻找最接近梯度角度图像α1(x,y)的dk(k=1,2,3,4);最后,如果梯度幅值图像M1(x,y)的值小于沿dk方向的两个邻居值之一,则令gN1(x,y)=0(抑制),否则,令gN1(x,y)=M1(x,y),这里gN1(x,y)是非极大值抑制后的图像,N表示非极大值抑制;
步骤34:用双阈值处理来检测非极大值抑制后的图像gN(x,y)的边缘,具体如下:
其中,TH1表示高阈值,TL1表示低阈值,gNH1(x,y)表示非极大值抑制后的图像gN1(x,y)经过高阈值TH1分割后的图像,gNL1(x,y)表示非极大值抑制后的图像gN1(x,y)经过低阈值TL1分割后的图像。阈值处理后,gNH1(x,y)的非零元素通常比gNL1(x,y)少,但是gNH1(x,y)中所有非零像素都包含在gNL1(x,y)中,因为gNL1(x,y)是使用一个低的阈值形成的,通过令g'NL1(x,y)=gNL1(x,y)-gNH1(x,y);式中,从gNL1(x,y)中删除所有来自gNH1(x,y)的非零元素,此时,gNH1(x,y)和g'NL1(x,y)中的非零像素分别看成是“强”和“弱”边缘像素。
步骤35:阈值处理后,gNH1(x,y)中的所有强像素均被假设为有效的边缘像素,并被立即标记。由于经过高阈值TH1分割后的图像gNH1(x,y)中的边缘存在缝隙,需要得到较长的边缘和Canny边缘检测形成最终的输出图像的具体步骤如下:
(a)在gNH1(x,y)中,对当前定位的像素用8邻域顺时针定位下一个未被访问的边缘像素p。
(b)在g'NL1(x,y)中将所有的弱像素标记为有效边缘像素,用8连通性的连接方法连接到p。
(c)如果gNH1(x,y)中的所有非零像素已被访问,则跳到步骤(d),否则返回步骤(a)。
(d)将g'NL1(x,y)未标记为有效边缘像素的所有像素置零,此时,经过高阈值TH1分割后的图像gNH1(x,y)中存在缝隙的边缘被填充,得到一根较长的边缘;
(e)将来自g'NL1(x,y)的所有非零像素赋加到gNH1(x,y),得到用Canny算子形成最终的输出图像g1(x,y)。
步骤36:形态学膨胀将边缘图像g1(x,y)断掉的边缘连接起来的公式如下:
其中,g1(x,y)表示边缘图像,B表示结构元,b={b1,b2}表示原结构元B里每个像素
的坐标,w={w1,w2}表示经过变换后的结构元每个像素的坐标,
(B)z={w|w=b+z,b∈B}表示将B中的坐标b={b1,b2}都加上z={z1,z2}个像素坐标。
步骤4:对膨胀过后的边缘图像g1(x,y)进行孔洞填充,然后提取所有连通分量,最后在提取的所有连通分量里提取最大的连通分量Ymax,具体步骤如下:
步骤41:将膨胀过后的边缘图像g1(x,y)进行孔洞填充,孔洞填充的公式如下:
其中,A表示一个集合,元素是8连通的边界,每个边界包围一个膨胀后的边缘图像g1(x,y)的背景区域,即一个孔洞,Ac表示不属于A的点的集合,B是结构元,表示形态学膨胀,Xk表示经过第k次迭代后的孔洞填充结果,如果Xk=Xk-1,则填充结束;
步骤42:孔洞填充后,提取所有连通分量,提取连通分量的公式如下:
其中,Yk表示对步骤41中孔洞填充的图像Xk提取到的所有连通分量,B表示结构元,表示形态学膨胀,X=Xk表示步骤41中孔洞填充后的连通分量的集合;
步骤43:得到所有连通分量后,提取最大连通分量,公式如下:
Ymax=max{Area(Yk)};
其中,Ymax表示提取到的所有连通分量Yk中的最大连通分量,Area(Yk)表示连通分量Yk的像素个数,最大连通分量Ymax,即像素个数最多的连通分量。
步骤5:对最大的连通分量Ymax进行腐蚀,得到油位计的准确位置,用恰好框住连通分量Ymax的最小矩形将原始图像f(x,y)中的油位计提取出来,如图1所示,具体步骤如下:
步骤51:对最大连通分量Ymax进行腐蚀,具体如下:
其中,Ymax是步骤7得到的边缘图像,B1是十字形结构元(普通的,常用的结构元),b={b1,b2}表示原结构元B1里每个像素的坐标,w={w1,w2}表示经过变换后的结构元每个像素的坐标,(B1)z={w|w=b+z,b∈B1}表示将B1中的坐标b={b1,b2}都加上z={z1,z2}个像素坐标
步骤52:用矩形框把腐蚀后的最大连通分量围住:
由于最大连通分量是平行于纵坐标方向的,矩形框和连通分量Ymax的切点可以表示为:a(x1,ymin),b(xmax,y1),c(x1,ymax),d(xmin,y1),其中,xmin,xmax,ymin,ymax分别表示最大连通分量水平方向的最小值、最大值和垂直方向最小值、最大值,x1是垂直方向切点a,c的横坐标,y1是水平切点b,d的纵坐标,矩形框的四个顶点A,B,C,D可以根据四个切点坐标分别表示为:A(xmin,ymin)、B(xmax,ymin)、C(xmin,ymax)、D(xmax,ymax)。
步骤6:将步骤5中的矩形等比例缩小,直到将油位计读数区f2(x,y)截取出来,如图8所示,具体步骤如下:
xC=(xmin+xmax)/2,
yC=(ymin+ymax)/2,
x'min=xmin+a[xC-xmin],
y'min=ymin+a[yC-ymin],
x'max=xmax-a[xmax-xC],
y'max=ymax-a[ymax-yC],
P(xC,yC)表示矩形框的形心,A’(x'min,y'min)、B’(x'max,y'min)、C’(x'min,y'max)、D’(x'max,y'max)表示缩小后的矩形的顶点,a为缩小的系数。
步骤7:对提取出来的油位计读数区f2(x,y)进行Canny边缘检测,得到边缘图像g2(x,y),如图9所示,具体步骤如下所示:
步骤71:用一个高斯滤波器平滑输入图像,得到平滑后的图像:
fs2(x,y)=G(x,y)*f2(x,y);
其中,f2(x,y)表示输入图像,即油位计读数区,fs2(x,y)表示对输入图像平滑后的图像,G(x,y)表示高斯函数,(x,y)表示油位计读数区中的像素坐标值,σ2表示高斯函数G(x,y)的方差,“*”表示卷积。
步骤72:根据平滑后的图像,计算提取梯度幅值图像和梯度角度图像:
其中,M2(x,y)表示梯度幅值图像,α2(x,y)表示梯度角度图像,表示平滑后的图像fs2(x,y)在x方向的偏导数,表示平滑后的图像fs2(x,y)在y方向的偏导数。
步骤73:采用非极大值对梯度幅值图像M2(x,y)进行抑制:首先,令d1,d2,d3和d4表示四个基本边缘方向:水平方向(0°)、-45°、垂直方向(90°)、45°;然后寻找最接近α2(x,y)的dk(k=1,2,3,4);最后,如果M2(x,y)的值小于沿dk方向的两个邻居值之一,则令gN2(x,y)=0(抑制),否则,令gN2(x,y)=M2(x,y),这里gN2(x,y)是非极大值抑制后的图像,N表示非极大值抑制。
步骤74:用双阈值处理来检测非极大值抑制后的图像gN(x,y)的边缘,:
其中,TH2表示高阈值,TL2表示低阈值,gNH2(x,y)表示非极大值抑制后的图像gN2(x,y)经过高阈值TH2分割后的图像,gNL2(x,y)表示非极大值抑制后的图像gN2(x,y)经过低阈值TL2分割后的图像。阈值处理后,gNH2(x,y)的非零元素通常比gNL2(x,y)少,但是gNH2(x,y)中所有非零像素都包含在gNL2(x,y)中,因为gNL2(x,y)是使用一个低的阈值形成的,通过令g'NL2(x,y)=gNL2(x,y)-gNH2(x,y);式中,从gNL2(x,y)中删除所有来自gNH2(x,y)的非零元素。此时,gNH2(x,y)和g'NL2(x,y)中的非零像素分别看成是“强”和“弱”边缘像素。
步骤75:阈值处理后,gNH2(x,y)中的所有强像素均被假设为有效的边缘像素,并被立即标记。由于经过高阈值TH2分割后的图像gNH2(x,y)中的边缘存在缝隙,需要得到较长的边缘和Canny边缘检测形成最终的输出图像的具体步骤如下:
(a)在gNH2(x,y)中,对当前定位的像素用8邻域顺时针定位下一个未被访问的边缘像素p;
(b)在g'NL2(x,y)中将所有的弱像素标记为有效边缘像素,用8连通性的连接方法连接到p;
(c)通过8连通性的连接,如果gNH2(x,y)中的所有非零像素已被访问,则跳到步骤(d),否则返回步骤(a);
(d)将g'NL2(x,y)未标记为有效边缘像素的所有像素置零;经过高阈值TH2分割后的图像gNH2(x,y)中存在缝隙的边缘被填充,得到一根较长的边缘;
(e)将来自g'NL2(x,y)的所有非零像素赋加到gNH2(x,y),得到用Canny边缘检测形成最终的输出图像g2(x,y);
步骤8:用横向结构元对边缘图像g2(x,y)进行腐蚀,将大量非液面边缘去除,如图10所示,具体公式如下:
其中,g2(x,y)是步骤7得到的边缘图像,B2是水平方向的结构元,b={b1,b2}表示原结构元B2里每个像素的坐标,w={w1,w2}表示经过变换后的结构元每个像素的坐标,(B2)z={w|w=b+z,b∈B}表示将B2中的坐标b={b1,b2}都加上z={z1,z2}个像素坐标;
步骤9:将大量非液面边缘去除后,此时液面边缘具有绝对的显著性,设置阈值,当保留的边缘长度大于阈值时,则为液面,反之,则不是液面,具体步骤如下;
其中,Zk表示经过步骤8的形态学腐蚀后边缘图像g2(x,y)中的第k个连通分量,jk是Zk的纵坐标,T是所有边缘连通分量的纵坐标的加权均值,权值大小为连通分量的像素个数Area(Zk),N表示经过步骤8的形态学腐蚀后边缘图像g2(x,y)中的连通分量个数,每经过一次公式的分割后重新计算T,再次用公式分割直至收敛。
步骤10:通过液面的位置以及油位计读数区f2(x,y)的量程可以计算出油量百分比,如图11所示,具体公式如下所示:
其中,Poil表示剩余油量百分比,yedge表示步骤9中提取出来的液面边缘纵坐标,y'min和y'max分别是步骤7中缩小后矩形框的纵坐标的最小值和最大值。
Claims (10)
1.一种椭圆形无栅格油位计的自动读数方法,其特征在于,包括以下步骤:
步骤1:读入原始图像f(x,y),即读入椭圆无栅格油液计图像;
步骤2:用Hough变换的椭圆检测对原始图像f(x,y)进行初步定位,得到初步定位图像f1(x,y);
步骤3:用Canny边缘检测对初步定位图像f1(x,y)进行边缘检测,得到边缘图像g1(x,y),并用形态学膨胀将边缘图像g1(x,y)断掉的边缘连接起来;
步骤4:对膨胀过后的边缘图像g1(x,y)进行孔洞填充,然后提取所有连通分量,最后在提取的所有连通分量里提取最大的连通分量Ymax;
步骤5:对最大的连通分量Ymax进行腐蚀,得到油位计的准确位置,用恰好框住连通分量Ymax的最小矩形将原始图像f(x,y)中的油位计提取出来;
步骤6:将步骤5中的矩形等比例缩小,直到将油位计读数区f2(x,y)截取出来;
步骤7:对提取出来的油位计读数区f2(x,y)进行Canny边缘检测,得到边缘图像g2(x,y);
步骤8:用横向结构元对边缘图像g2(x,y)进行腐蚀,将大量非液面边缘去除;
步骤9:将大量非液面边缘去除后,设置阈值,当保留的边缘长度大于阈值时,则为液面,反之,则不是液面;
步骤10:通过液面的位置以及油位计读数区f2(x,y)的量程计算出油量百分比。
2.根据权利要求1所述的一种椭圆形无栅格油位计的自动读数方法,其特征在于,所述步骤2中Hough变换的椭圆检测公式如下:
其中,a是原始图像f(x,y)的长轴或短轴,即横向平分椭圆的轴,b是原始图像f(x,y)的短轴或长轴,即纵向平分椭圆的轴,(x0,y0)是原始图像f(x,y)的圆心,x、y是原空间的自变量与因变量。
3.根据权利要求1所述的一种椭圆形无栅格油位计的自动读数方法,其特征在于,所述步骤3、步骤7中Canny边缘检测的具体步骤为:
步骤371:用一个高斯滤波器平滑输入图像,得到平滑后的图像:
fs(x,y)=G(x,y)*f(x,y);
其中,fs(x,y)表示平滑后的图像,在步骤3中表示初步定位图像f1(x,y)平滑后的图像,在步骤7中表示油位计读数区f2(x,y)平滑后的图像,f(x,y)表示输入图像,(在步骤3中表示初步定位图像f1(x,y),在步骤7中表示油位计读数区f2(x,y),G(x,y)表示高斯函数,(x,y)表示图像中的像素坐标值,在步骤3中表示初步定位图像f1(x,y)的像素坐标值,在步骤7中表示油位计读数区f2(x,y)的像素坐标值,σ2表示高斯函数G(x,y)的方差,“*”表示卷积;
步骤372:根据平滑后的图像,提取梯度幅值图像和梯度角度图像:
其中,M(x,y)表示梯度幅值图像,α(x,y)表示梯度角度图像,表示平滑后的图像fs(x,y)在x方向的偏导数,表示平滑后的图像fs(x,y)在y方向的偏导数;
步骤373:采用非极大值对梯度幅值图像M(x,y)进行抑制:首先,令d1,d2,d3和d4分别表示四个基本边缘方向,即水平方向(0°)、-45°、垂直方向(90°)、45°;然后寻找最接近梯度角度图像α(x,y)的dk(k=1,2,3,4);最后,如果梯度幅值图像M(x,y)的值小于沿dk方向的两个邻居值之一,则令gN(x,y)=0(抑制),否则,令gN(x,y)=M(x,y),这里gN(x,y)是非极大值抑制后的图像,N表示非极大值抑制;
步骤374:用双阈值处理来检测非极大值抑制后的图像gN(x,y)的边缘,即同时用两个不同的阈值对非极大值抑制后的图像gN(x,y)进行边缘检测:
其中,TH表示高阈值,TL表示低阈值,gNH(x,y)表示非极大值抑制后的图像gN(x,y)经过高阈值TH分割后的图像,gNL(x,y)表示非极大值抑制后的图像gN(x,y)经过低阈值TL分割后的图像,阈值处理后,gNH(x,y)的非零元素比gNL(x,y)少,gNH(x,y)中所有非零像素都包含在gNL(x,y)中,则
g'NL(x,y)=gNL(x,y)-gNH(x,y);
上述公式中,从经过低阈值TL分割后的图像gNL(x,y)中删除所有来自经过高阈值TH分割后的图像gNH(x,y)的非零元素,即可将gNH(x,y)和g'NL(x,y)中的非零像素分别看成是“强”和“弱”边缘像素;
步骤375:阈值处理后,经过高阈值TH分割后的图像gNH(x,y)中的所有强边缘像素均为有效的边缘像素,并进行标记,由于经过高阈值TH分割后的图像gNH(x,y)中的边缘存在缝隙,需要得到较长的边缘和Canny边缘检测形成最终的输出图像的具体步骤如下:
(a)在经过高阈值TH分割后的图像gNH(x,y)中,对当前定位的像素用8邻域顺时针定位下一个未被访问的边缘像素p;
(b)在g'NL(x,y)中将所有的弱像素标记为有效边缘像素,用8连通性的连接方法连接到p;
(c)通过8连通性的连接,如果gNH(x,y)中的所有非零像素已被访问,则跳到步骤(d),否则返回步骤(a);
(d)将g'NL(x,y)未标记为有效边缘像素的所有像素置零,此时,经过高阈值TH分割后的图像gNH(x,y)中存在缝隙的边缘被填充,得到一根较长的边缘;
(e)将g'NL(x,y)的所有非零像素赋加到gNH(x,y),得到用Canny边缘检测形成最终的输出图像g(x,y)(在步骤3中为边缘图像g1(x,y),在步骤7中为边缘图像g2(x,y))。
4.根据权利要求3所述的一种椭圆形无栅格油位计的自动读数方法,其特征在于,所述步骤3中,形态学膨胀将断掉的边缘连接起来的公式如下:
其中,g1(x,y)表示边缘图像,B表示结构元,b={b1,b2}表示原结构元B里每个像素的坐标,w={w1,w2}表示经过变换后的结构元每个像素的坐标,(B)z={w|w=b+z,b∈B}表示将B中的坐标b={b1,b2}都加上z={z1,z2}个像素坐标。
5.根据权利要求3所述的一种椭圆形无栅格油位计的自动读数方法,其特征在于,所述步骤4的具体步骤如下:
步骤41:将膨胀过后的边缘图像g1(x,y)进行孔洞填充,孔洞填充的公式如下:
其中,A表示一个集合,元素是8连通的边界,每个边界包围一个膨胀后的边缘图像g1(x,y)的背景区域,即一个孔洞,Ac表示不属于A的点的集合,B是结构元,表示形态学膨胀,Xk表示经过第k次迭代后的孔洞填充结果,如果Xk=Xk-1,则填充结束;
步骤42:孔洞填充后,提取所有连通分量,提取连通分量的公式如下:
其中,Yk表示对步骤41中孔洞填充的图像Xk提取到的所有连通分量,B表示结构元,表示形态学膨胀,X=Xk表示步骤41中孔洞填充后的连通分量的集合;
步骤43:得到所有连通分量后,提取最大连通分量,公式如下:
Ymax=max{Area(Yk)};
其中,Ymax表示提取到的所有连通分量Yk中的最大连通分量,Area(Yk)表示连通分量Yk的像素个数,最大连通分量Ymax,即像素个数最多的连通分量。
6.根据权利要求1所述的一种椭圆形无栅格油位计的自动读数方法,其特征在于,所述步骤5中,用恰好框住连通分量Ymax的最小矩形如下所示:
由于最大连通分量是平行于纵坐标方向的,矩形框和连通分量Ymax的切点可以表示为:a(x1,ymin),b(xmax,y1),c(x1,ymax),d(xmin,y1),其中,xmin,xmax,ymin,ymax分别表示最大连通分量水平方向的最小值、最大值和垂直方向最小值、最大值,x1是垂直方向切点a,c的横坐标,y1是水平切点b,d的纵坐标,矩形框的四个顶点A,B,C,D可以根据四个切点坐标分别表示为:A(xmin,ymin)、B(xmax,ymin)、C(xmin,ymax)、D(xmax,ymax)。
7.根据权利要求1所述的一种椭圆形无栅格油位计的自动读数方法,其特征在于,所述步骤6中,将步骤5中的矩形等比例缩小具体如下所示:
xC=(xmin+xmax)/2,
yC=(ymin+ymax)/2,
x'min=xmin+a[xC-xmin],
y'min=ymin+a[yC-ymin],
x'max=xmax-a[xmax-xC],
y'max=ymax-a[ymax-yC],
P(xC,yC)表示矩形框的形心,A’(x'min,y'min)、B’(x'max,y'min)、C’(x'min,y'max)、D’(x'max,y'max)表示缩小后的矩形的顶点,a为缩小的系数。
8.根据权利要求1所述的一种椭圆形无栅格油位计的自动读数方法,其特征在于,所述步骤5和步骤8中,形态学腐蚀的公式如下:
其中,A是输入图像,步骤5中是最大连通分量Ymax,步骤8中是边缘图像g2(x,y),B是结构元,步骤5中是普通的十字形结构元,步骤8中是水平方向的结构元,b={b1,b2}表示原结构元B里每个像素的坐标,w={w1,w2}表示经过变换后的结构元每个像素的坐标,(B)z={w|w=b+z,b∈B}表示将B中的坐标b={b1,b2}都加上z={z1,z2}个像素坐标。
9.根据权利要求1所述的一种椭圆形无栅格油位计的自动读数方法,其特征在于,所述步骤9中得到液面的具体公式为:
其中,Zk表示经过步骤8的形态学腐蚀后边缘图像g2(x,y)中的第k个连通分量,jk是Zk的纵坐标,T是所有边缘连通分量的纵坐标的加权均值,权值大小为连通分量的像素个数Area(Zk),N表示经过步骤8的形态学腐蚀后边缘图像g2(x,y)中的连通分量个数,每经过一次公式的分割后重新计算T,再次用公式分割直至收敛。
10.根据权利要求1所述的一种椭圆形无栅格油位计的自动读数方法,其特征在于,所述步骤10中,计算油量百分比的公式为:
其中,Poil表示剩余油量百分比,yedge表示步骤9中提取出来的液面边缘纵坐标,y'min和y'max分别是步骤7中缩小后矩形框的纵坐标的最小值和最大值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610631277.3A CN106296674B (zh) | 2016-08-04 | 2016-08-04 | 一种椭圆形无栅格油位计的自动读数方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610631277.3A CN106296674B (zh) | 2016-08-04 | 2016-08-04 | 一种椭圆形无栅格油位计的自动读数方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106296674A CN106296674A (zh) | 2017-01-04 |
CN106296674B true CN106296674B (zh) | 2019-02-22 |
Family
ID=57664963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610631277.3A Active CN106296674B (zh) | 2016-08-04 | 2016-08-04 | 一种椭圆形无栅格油位计的自动读数方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106296674B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109190457B (zh) * | 2018-07-19 | 2021-12-03 | 北京市遥感信息研究所 | 一种基于大幅面遥感图像的油库集群目标快速检测方法 |
CN109451244B (zh) * | 2018-12-21 | 2020-12-04 | 广州医软智能科技有限公司 | 一种基于液体镜头的自动调焦方法及系统 |
CN109521547B (zh) * | 2018-12-21 | 2021-03-26 | 广州医软智能科技有限公司 | 一种变步长的自动调焦方法及系统 |
CN112819749A (zh) * | 2020-12-30 | 2021-05-18 | 中冶赛迪重庆信息技术有限公司 | 一种转炉出钢钢包液位识别方法、系统、介质及终端 |
CN113111931B (zh) * | 2021-04-02 | 2023-04-07 | 同济大学 | 一种基于光强变换和聚类的量筒读数方法 |
CN115115664B (zh) * | 2022-08-25 | 2022-11-18 | 济宁景泽信息科技有限公司 | 计量器具信息采集系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1151747A (ja) * | 1997-08-05 | 1999-02-26 | Power Reactor & Nuclear Fuel Dev Corp | 液状物質の液位測定・監視方法 |
CN101398894A (zh) * | 2008-06-17 | 2009-04-01 | 浙江师范大学 | 机动车车牌自动识别方法及其实现装置 |
CN102295061A (zh) * | 2011-05-19 | 2011-12-28 | 上海海事大学 | 基于图像处理的船舶水尺自动检测方法 |
CN102494733A (zh) * | 2011-12-12 | 2012-06-13 | 西安电子科技大学 | 基于图像处理的水位监测系统及方法 |
CN103177261A (zh) * | 2013-03-06 | 2013-06-26 | 北方民族大学 | 一种基于图像识别技术的奶牛产奶量自动计量系统及其图像识别方法 |
CN104822046A (zh) * | 2015-04-15 | 2015-08-05 | 常州大学 | 一种基于视觉技术的非接触式电镀槽液位控制器 |
-
2016
- 2016-08-04 CN CN201610631277.3A patent/CN106296674B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1151747A (ja) * | 1997-08-05 | 1999-02-26 | Power Reactor & Nuclear Fuel Dev Corp | 液状物質の液位測定・監視方法 |
CN101398894A (zh) * | 2008-06-17 | 2009-04-01 | 浙江师范大学 | 机动车车牌自动识别方法及其实现装置 |
CN102295061A (zh) * | 2011-05-19 | 2011-12-28 | 上海海事大学 | 基于图像处理的船舶水尺自动检测方法 |
CN102494733A (zh) * | 2011-12-12 | 2012-06-13 | 西安电子科技大学 | 基于图像处理的水位监测系统及方法 |
CN103177261A (zh) * | 2013-03-06 | 2013-06-26 | 北方民族大学 | 一种基于图像识别技术的奶牛产奶量自动计量系统及其图像识别方法 |
CN104822046A (zh) * | 2015-04-15 | 2015-08-05 | 常州大学 | 一种基于视觉技术的非接触式电镀槽液位控制器 |
Non-Patent Citations (3)
Title |
---|
一种钢水液面精确定位算法的研究;吴云飞,刘堂友;《微型机与应用》;20151210;1-6 * |
基于红外图像的电力变压器油位自动检测方法;刘健 等;《高压电技术》;20100430;第36卷(第4期);964-970 * |
基于视频处理的无人值守变电站在线检测;汪勤 等;《四川理工学院学报(自然科学版)》;20130620;第26卷(第3期);58-63 * |
Also Published As
Publication number | Publication date |
---|---|
CN106296674A (zh) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106296674B (zh) | 一种椭圆形无栅格油位计的自动读数方法 | |
CN104981105B (zh) | 一种快速精确获得元件中心和偏转角度的检测及纠偏方法 | |
CN106441138B (zh) | 基于视觉测量的变形监测方法 | |
CN106023303B (zh) | 一种基于轮廓有效性提高三维重建点云稠密程度的方法 | |
JP2021531450A (ja) | オプティカルフロー映像処理を利用する河川流速測定装置および方法 | |
CN103714541B (zh) | 一种利用山体轮廓区域约束识别定位建筑物的方法 | |
CN108876749A (zh) | 一种鲁棒的镜头畸变校正方法 | |
CN106910242A (zh) | 基于深度相机进行室内完整场景三维重建的方法及系统 | |
CN104700421A (zh) | 一种基于canny的自适应阈值的边缘检测算法 | |
CN102750538B (zh) | 一种基于图像处理技术的围棋比赛结果分析方法 | |
CN107203981B (zh) | 一种基于雾气浓度特征的图像去雾方法 | |
CN104915954B (zh) | 基于Landsat OLI多光谱遥感影像的水体自动提取方法 | |
CN110174056A (zh) | 一种物体体积测量方法、装置及移动终端 | |
CN109816673A (zh) | 一种非极大值抑制、动态阈值计算及图像边缘检测方法 | |
CN106485690A (zh) | 基于点特征的点云数据与光学影像的自动配准融合方法 | |
CN105678757B (zh) | 一种物体位移测量方法 | |
CN108596975A (zh) | 一种针对弱纹理区域的立体匹配算法 | |
CN106871864B (zh) | 一种基于立体卫星影像自动提取建筑物高度的方法 | |
CN106488122A (zh) | 一种基于改进Sobel算子的动态自动调焦算法 | |
CN110379004A (zh) | 一种对倾斜摄影成果进行地物分类及单体化提取的方法 | |
CN107622480A (zh) | 一种Kinect深度图像增强方法 | |
CN103208125B (zh) | 视频帧图像中颜色和运动全局对比度的视觉显著性算法 | |
CN107133986A (zh) | 一种基于二维标定物的相机标定方法 | |
CN110378893A (zh) | 图像质量评价方法、装置和电子设备 | |
CN112991374A (zh) | 基于Canny算法的边缘增强方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |