发明内容
本发明的目的是针对现有技术的不足,提出一种具有精度高、算法简单、功耗低的利用颜色快速识别仪表读数的方法。
为了实现上述发明目的,本发明的技术方案是:
一种利用颜色快速识别仪表读数的方法,其步骤包括如下:
(1)、图像采集:采用摄像头拍摄仪表,得到对仪表表盘读数的图像,该仪表表盘读数图像像素点个数为P,P=M*N,其中M为行向量中像素点个数,N为列向量中像素点个数;
(2)、图像滤波:采用中值滤波的方法对步骤(1)得到的仪表表盘读数图像去噪,其具体步骤为:
(2-1)将仪表表盘读数图像分成n个宏块,每个宏块含有5*5=25个像素点,图像的像素点个数记为P,其表达式为:P=M*N,其中M为仪表表盘图像行向量个数,N为仪表表盘图像列向量个数;
(2-2)将5*5=25个像素点的像素值按照从小到大的顺序进行排序,排序后,将第13个像素点的像素值取代该宏块中5*5=25个像素点的像素值,得到排序后的图像,该图像的像素点个数仍为P;
(3)、读数位区域分割:将步骤(2)得到排序后的图像分成L个读数位区域Ωi,1≤i≤L,每个读数位区域Ωi含有S个像素点,其表达式为S=M*N/L,其中M为行向量中像素点个数,N为列向量中像素点个数;
(4)、背景像素点筛选:步骤(3)得到的L个读数位区域Ωi,设每个读数位区域包含读数像素点和背景像素点,其中A(x,y)为第i个读数位区域Ωi中选取的一个像素点,其中1≤i≤L,A(x,y)表示读数位区域Ωi中第x行,第y列的像素点;
判断像素点A(x,y)是否为背景像素点,如果像素点A(x,y)的R、G、B的三原色分量分别满足:0≤R≤δ且0≤G≤δ且0≤B≤δ,其中δ为原色分量,取值范围是1≤δ≤4,则像素点A为读数像素点,否则像素点A为背景像素点,依次类推,对第i个区域Ωi中的所有像素点进行判断,判断是否为背景像素点,并且累计第i个区域Ωi中所有背景像素点的个数Ki,其中1≤i≤L;
(5)、计算第i个区域Ωi中背景像素点的色相角Hi和第i个区域的色相角均值 ,其中1≤i≤L,其具体步骤如下:
(5-1)、计算第i个区域Ωi中背景像素点色相角Hi,其表达式为:
(1)
其中,r、g和b分别是第i个区域中背景像素点的R、G和B归一化的值,max为第i个区域中背景像素点的R,G和B的最大值,min为R,G和B的最小值;
(5-2)、计算第i个区域的色相角均值,其表达式为:
(2)
其中,Hi为第i个区域Ωi中背景像素点色相角,Ki为第i个区域的背景像素点个数;
(6)、设置仪表表盘读数分别为0,1、2,3,┉┉-8,9,根据步骤(5)所述的第i个区域的色相角均值识别仪表表盘的背景像素点区域的颜色,确定仪表表盘颜色所对应的表盘数字,实现了利用颜色快速识别仪表读数,其具体步骤如下:
如果第i个区域的色相角均值满足0≤≤5,则将仪表表盘图像第i个区域Ωi颜色识别为0;
如果第i个区域的色相角均值满足25≤≤35,则将仪表表盘图像第i个区域Ωi颜色识别为1;
如果第i个区域的色相角均值满足55≤≤65,则将仪表表盘图像第i个区域Ωi颜色识别为2;
如果第i个区域的色相角均值满足85≤≤95,则将仪表表盘图像第i个区域Ωi颜色识别为3;
如果第i个区域的色相角均值满足135≤≤145,则将仪表表盘图像第i个区域Ωi颜色识别为4;
如果第i个区域的色相角均值满足175≤≤185,则将仪表表盘图像第i个区域Ωi颜色识别为5;
如果第i个区域的色相角均值满足205≤≤215,则将仪表表盘图像第i个区域Ωi颜色识别为6;
如果第i个区域的色相角均值满足235≤≤245,则将仪表表盘图像第i个区域Ωi颜色识别为7;
如果第i个区域的色相角均值满足265≤≤275,则将仪表表盘图像第i个区域Ωi颜色识别为8;
如果第i个区域的色相角均值满足≥295,则将仪表表盘图像第i个区域Ωi颜色识别为9。
通过第i个区域的色相角均值值识别仪表表盘图像第i个区域Ωi的背景像素点区域的颜色,确定仪表表盘第i个区域Ωi颜色所对应的数字,依此类推,将L个读数位区域Ωi的读数都进行识别,其中1≤i≤L,因此就实现了利用颜色快速识别仪表读数的方法。
本发明的一种利用颜色快速识别仪表读数的方法与现有技术相比较具有有益效果是:该方法利用仪表表盘读数背景的颜色不同,可以快速、方便的将仪表读数识别出来,与以往的仪表读数识别方法相比,本发明方法不需字符定位、字符分割和字符识别等复杂过程,只需对背景像素点的像素值进行识别,就能够识别仪表的读数;本发明方法节省了计算量小,识别速度快,是一种有效的快速抄表方法。
具体实施方式
以下结合实施例对本发明的技术方案做进一步详细描述。
本发明的一种利用颜色快速识别仪表读数的方法,如图1所示,其具体步骤如下:
(1)、图像采集:采用摄像头拍摄仪表,得到仪表表盘读数的图像,该表盘读数图像像素点个数为P,P=M*N,其中M为行向量中像素点个数,N为列向量中像素点个数,如图2所示,其摄像过程如下:当需要读取仪表表盘读数时,控制器发送指令,然后打开发光二极管同时打开摄像头,对仪表读数进行拍摄,光源采用发光二极管。
(2)、图像滤波:采用中值滤波的方法对步骤(1)得到的仪表表盘读数图像去噪,其具体步骤如下:
(2-1)将仪表表盘读数图像分成n个宏块,每个宏块含有5*5=25个像素点,图像的像素点个数记为P,其表达式为:P=M*N,其中M为行向量中像素点个数,N为列向量中像素点个数;
(2-2)将5*5=25个像素点的像素值按照从小到大的顺序进行排序,排序后,将第13个像素点的像素值取代该宏块中5*5=25个像素点的像素值,得到排序后的图像,该图像的像素点个数仍为P;
(3)、读数位区域分割:将步骤(2)得到排序后的图像分成L个读数位区域Ωi,1≤i≤L,每个读数位区域Ωi含有S个像素点,其表达式为S=M*N/L,其中M为行向量中像素点个数,N为列向量中像素点个数;
(4)、背景像素点筛选:步骤(3)得到的L个读数位区域Ωi,设每个读数位区域包含读数像素点和背景像素点,其中A(x,y)为第i个读数位区域Ωi中选取的一个像素点,其中1≤i≤L,A(x,y)表示读数位区域Ωi中第x行,第y列的像素点;
判断像素点A(x,y)是否为背景像素点,如图3所示,具体步骤如下:
(4-1)选取像素点A(x,y),用k记录背景像素点的个数,初始化令x=1,y=1,k=0;
(4-2)判断x是否满足x≤M条件,如果x不满足x≤M条件,则程序结束,如果x满足x≤M条件,则判断y是否满足y≤N/L条件;
(4-3)如果y不满足y≤N/L条件,则令x=x+1,如果y满足y≤N/L条件,则判断像素点A(x,y)的像素值的红色分量R(x,y)是否满足R(x,y)≤δ条件,其中δ为原色分量,取值范围是1≤δ≤4;
(4-4)如果R(x,y)不满足R(x,y)≤δ条件,则令y=y+1且k=k+1,那么像素点A(x,y)是背景像素点,如果R(x,y)满足R(x,y)≤δ条件,则判断像素点A(x,y)的像素值的绿色分量G(x,y)是否满足G(x,y)≤δ条件,其中δ为原色分量,取值范围是1≤δ≤4;
(4-5)如果G(x,y)不满足G(x,y)≤δ条件,则令y=y+1且k=k+1,那么像素点A(x,y)是背景像素点,如果G(x,y)满足G(x,y)≤δ条件,则判断像素点A(x,y)的像素值的蓝色分量B(x,y)是否满足B(x,y)≤δ条件,其中δ为原色分量,取值范围是1≤δ≤4;
(4-6)如果B(x,y)不满足B(x,y)≤δ条件,则令y=y+1且k=k+1,那么像素点A是背景像素点,如果B(x,y)满足G(x,y)≤δ条件,则像素点A为读数像素点,则令y=y+1且Ki=k,其中δ为原色分量,取值范围是1≤δ≤4;
(4-7)依此类推,对第i个区域Ωi中的所有像素点进行判断,判断是否为背景像素点,并且累计第i个区域Ωi中所有背景像素点的个数Ki,其中1≤i≤L,;
(5)、分别计算第i个区域Ωi中背景像素点的色相角Hi和第i个区域的色相角均值,其中1≤i≤L,其具体步骤如下:
(5-1)、计算第i个区域Ωi中背景像素点色相角Hi,其表达式为:
(1)
其中,r、g和b分别是第i个区域中背景像素点的R、G和B归一化的值,max为第i个区域中背景像素点的R,G和B的最大值,min为R,G和B的最小值;
(5-2)、计算第i个区域的色相角均值,其表达式为:
(2)
其中,Hi为第i个区域Ωi中背景像素点色相角,Ki为第i个区域的背景像素点个数;
(6)、设置仪表表盘读数分别为0,1、2,3,┉┉-8,9,根据步骤(5)所述的第i个区域的色相角均值识别仪表表盘的背景像素点区域的颜色,确定仪表表盘颜色所对应的仪表表盘数字,实现了利用颜色快速识别仪表读数,其具体步骤如下:
如果第i个区域的色相角均值满足0≤≤5,则将仪表表盘图像第i个区域Ωi的颜色识别为0;
如果第i个区域的色相角均值满足25≤≤35,则将仪表表盘图像第i个区域Ωi的颜色识别为1;
如果第i个区域的色相角均值满足55≤≤65,则将仪表表盘图像第i个区域Ωi的颜色识别为2;
如果第i个区域的色相角均值满足85≤≤95,则将仪表表盘图像第i个区域Ωi的颜色识别为3;
如果第i个区域的色相角均值满足135≤≤145,则将仪表表盘图像第i个区域Ωi的颜色识别为4;
如果第i个区域的色相角均值满足175≤≤185,则将仪表表盘图像第i个区域Ωi的颜色识别为5;
如果第i个区域的色相角均值满足205≤≤215,则将仪表表盘图像第i个区域Ωi的颜色识别为6;
如果第i个区域的色相角均值满足235≤≤245,则将仪表表盘图像第i个区域Ωi的颜色识别为7;
如果第i个区域的色相角均值满足265≤≤275,则将仪表表盘图像第i个区域Ωi的颜色识别为8;
如果第i个区域的色相角均值满足≥295,则将仪表表盘图像第i个区域Ωi的颜色识别为9。
通过第i个区域的色相角均值值识别仪表表盘图像第i个区域Ωi的背景像素点区域的颜色,确定仪表表盘第i个区域Ωi颜色所对应的数字,依此类推,将L个读数位区域Ωi的读数都进行识别,其中1≤i≤L,进而实现了利用颜色快速识别仪表读数。
为了验证采用本发明的一种利用颜色快速识别仪表读数的方法的具体实施效果,采用本发明的方法,利用背景像素点的像素值,设置背景像素点像素值与仪表表盘读数对应表,其具体步骤如下:
(5-1)设置背景像素点像素值与仪表表盘读数对应表,如图表所示,其中,
对应表第一列为仪表表盘读数0,1、2,3,┉┉-8,9;
对应表第二列是与仪表表盘读数0,1、2,3,┉┉-8,9对应的背景颜色;
对应表的第三列为与仪表表盘读数对应的背景像素点的R分量均值,R分量均值分别为255,255, 255,128,0,0,0,0,128,255;
对应表的第四列为与仪表表盘读数对应的背景像素点的G分量均值,G分量均值分别为是0, 128, 255, 255, 255, 255, 128, 0, 0, 0;
对应表的第五列为与仪表表盘读数对应的背景像素点的B分量均值,B分量均值是0, 0, 0, 0, 128, 255, 255, 255, 255, 255;
对应表的第六列为与仪表表盘读数对应的背景像素点的色相角值,记为H,H由步骤(5-2)计算得到对应H值,仪表表盘读数0的H值为0,仪表表盘读数1的H值是30,仪表表盘读数2的H值是60,仪表表盘读数3的H值是90,仪表表盘读数4的H值是140,仪表表盘读数5的H值是180,仪表表盘读数6的H值是210,仪表表盘读数7的H值是240,仪表表盘读数8的H值是270,仪表表盘读数9的H值是300;
对应表的第七列为与仪表表盘读数相对应的背景像素点的阈值区间,记为,的阈值区间是根据步骤(5-1)计算得到对应H值,当H=0时,阈值区间为[0,5],当H=30时,阈值区间为[25,35],当H=60时,阈值区间为[55,65],当H=90时,阈值区间为[85,95],当H=140时,阈值区间为[135,145],当H=180时,阈值区间为[175,185],当H=210时,阈值区间为[205,215],当H=240时,阈值区间为[235,245],当H=270时,阈值区间为[265,275],当H=300时,阈值区间为[295,+∞]。
通过上述背景像素点像素值与读数对应表可以看出,采用本发明的方法只需对背景像素点的像素值进行识别,就能够识别仪表的读数,且计算量小,识别速度快,是一种十分有效的快速抄表方法
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。