本发明涉及指针式机械水表读数领域,特别涉及一种多指针水表读数识别方法。
背景技术:
传统抄表方式通常采用入户抄表,具有入户难、效率低、人工管理成本高等缺点,为提高水表的抄表工作效率,提出了基于计算机视觉技术的水表读数辅助识别方法。
对于指针式水表,基于机器视觉技术的抄表方式通常需要经过表盘分割和提取、指针分割和提取、指针读数识别等多个环节,水表读数效率和速率同时受到表盘定位、指针分割和提取、指针识别等多个环节影响,任一环节出错都会直接影响水表最终读数准确率。
技术实现要素:
发明目的:针对以上问题,本发明目的是提供一种多指针水表读数识别方法,利用多目标匹配算法将水表与已知模板进行匹配,实现水表读数的快速、准确识别。
技术方案:本发明的一种多指针水表读数识别方法,步骤如下:
(1)根据待识别水表表盘上的子表盘制作子表盘模板,对子表盘模板按顺序进行编号,每个编号的子表盘模板对应不同读数;
(2)采集待识别水表图像,对水表图像进行预处理,将水表图像转换成二值化图像;
(3)利用多目标模板匹配算法将二值化水表图像进行多目标检测,与所有子表盘模板同时进行匹配,输出匹配到的子表盘模板读数和子表盘模板位置;
(4)确定匹配到的子表盘模板与数量级之间对应关系,对水表读数进行整合,实现水表读数识别。
进一步,所述步骤(3)多目标模板匹配算法包括:
(31)输入待识别水表表盘图像和所有子表盘模板,子表盘模板数量为n,每个子表盘模板对应一个适应度函数;
(32)设置水表表盘图像的可行解区域,在可行解区域生成个体作为初始种群,其中个体数量用s表示,设置迭代次数;
(33)按照适应度函数个数将初始种群等分成子种群,子种群数量与适应度函数个数相同,每个子种群个体数量为s/n,每个子种群根据适应值降序记录前t/n个优异个体,其中t<s;
(34)每个子种群根据各自的适应度函数选择对应的s/n个个体;
(35)进行小生境运算,在每个子种群中将步骤(34)s/n个个体和步骤(33)中的t/n个个体合并成含有(s t)/n个个体的新种群,计算每两个个体之间的欧式距离d,当d<le时,le为预先设置阈值,比较两个个体之间适应度值大小,施加一个罚函数给适应度值小的个体,并降低适应度值;
(36)每个子种群按照步骤(35)中(s t)/n个个体的新适应度值降序排序个体,记住前s/n个个体;
(37)取步骤(36)所有子种群中的s/n个个体组成一个数量为s的种群;
(38)对种群进行交叉、变异运算得到s个个体;
(39)跳到步骤(33),直到达到了预先设置的迭代次数,则结束运行,在非劣解中输出适应值大于设定阈值th的最优个体,将个体解码成像素坐标,得到所有子表盘的位置和读数。
进一步,所述步骤(1)中所述子表盘模板利用形态学中的膨胀运算,将细指针膨胀为覆盖相邻数字之间全部区域的粗指针。
进一步,所述步骤(31)适应度函数为:
式中,k×l为子表盘模板尺寸,图像像素点用坐标(x,y)表示,(i,j)为子表盘模板中的点坐标,该点的灰度值为w(i,j),与该点重合的搜索图像中对应点的坐标为(x i,y j),灰度值为γ(x i,y j),求出相关系数为r(x,y)。
进一步,步骤(34)选择算子采用轮盘赌策略,计算子种群里所有个体的适应值总值,每个个体被选择的概率为个体适应值除以适应值总值。
进一步,步骤(38)中交叉算子采用单点交叉,随机选择一个位置ke位,0<ke<ρ,ρ为编码的长度,然后分别选择一个个体的前ke位,另一个个体的ke位后的二进制位,并组成一个新的个体。
进一步,步骤(38)中变异算子采用单点随机变异,在个体的染色体上随机选择一位,并对其值取非。
进一步,步骤(2)图像预处理包括图像尺寸调整、图像灰度化、线性灰度变换、双边滤波。
进一步,步骤(4)整合为将匹配到的子表盘模板上的读数乘以相对应的数量级。
进一步,步骤(35)欧式距离d计算方法为:
式中,(x1,y1)和(x2,y2)是个体的像素坐标。
有益效果:本发明与现有技术相比,其显著优点是:本发明将所有子表盘模板同时与待识别水表表盘进行匹配,无需将每个模板依次放进去寻找最优解,加快识别速度,同时确保了识别结果的准确性。
附图说明
图1为本发明工作流程图;
图2为子表盘模板示意图;
图3为实施例待识别水表二值化图像;
图4为多目标模板匹配算法流程图。
具体实施方式
本实施例以八指针水表为例,所述的一种多指针水表读数识别方法,图1为流程图,步骤如下:
(1)根据待识别水表表盘上的子表盘制作子表盘模板,子表盘模板数量为10个,如图2所示,对子表盘模板按顺序进行编号,编号为0~9,每个编号的子表盘模板指针在不同位置所以对应不同读数,编号为0的子表盘模板指针在数字0~1之间,编号为1的子表盘模板指针在数字1~2之间,以此类推,编号为9的子表盘模板指针在数字9~0之间;将子表盘模板利用形态学中的膨胀运算,将细指针膨胀为覆盖相邻数字之间全部区域的粗指针。
(2)采集待识别水表图像,对水表图像进行图像尺寸调整、图像灰度化、线性灰度变换、双边滤波,将水表图像转换成二值化图像,如图3所示。
(3)利用多目标模板匹配算法将二值化水表图像进行多目标检测,图4为流程图,与10个子表盘模板同时进行匹配,将匹配到的子表盘模板读数和子表盘模板位置输出。
(31)输入待识别水表表盘图像和10个子表盘模板,子表盘模板数量为n为10,水表图像高400,宽为320,子表盘模板高40,宽32,这个模板的可行解区域为1≤x≤400-40,1≤y≤320-32,每个子表盘模板对应一个适应度函数,10个子表盘模板对应10个适应度函数;
适应度函数为:
式中,k×l为子表盘模板尺寸,图像像素点用坐标(x,y)表示,(i,j)为子表盘模板中的点坐标,该点的灰度值为w(i,j),与该点重合的搜索图像中对应点的坐标为(x i,y j),灰度值为γ(x i,y j),求出相关系数为r(x,y)。
(32)设置水表表盘图像的可行解区域,在可行解区域生成个体作为初始种群,个体用图像像素点所在坐标(x,y)表示,个体编码为ρ位二进制串,前ρ/2位为横坐标x的二进制表示,后ρ/2位为纵坐标y的二进制表示,比如[(20,60)(54,65),…,(87,95)],随机生成共100个,每个个体代表一个像素的坐标,编码是24位二进制串表示,如像素点坐标(125,68)实际编码为:00000111110000010100100,125是前12位,68是后12位,设置迭代次数为50次。
(33)按照适应度函数个数将初始种群等分成子种群,子种群数量与适应度函数个数相同,10个适应度函数生成10个子种群,每个子种群根据适应值降序记录前3个优异个体。
(34)在每个子种群里进行选择操作,每个个体根据子种群对应的适应度函数求每个个体的适应值,比如[(20,60),(54,65)…(7,95)]计算出来的适应值为[0.8,0.9,…,0.99],选择操作为选适应值大的个体,策略式是轮盘赌操作,适应值是0.99的那个个体更容易留下来。
(35)进行小生境运算,在每个子种群中将步骤(34)10个个体和步骤(33)中的3个个体合并成含有13个个体的新种群,计算每两个个体之间的欧式距离d;当d<8时,比较其适应度值大小,施加一个罚函数0.5给适应度值小的个体,在原适应值上减去0.5从而降低其适应度;
欧式距离d计算方法为:
式中,(x1,y1)和(x2,y2)是个体的像素坐标。
(36)每个子种群按照步骤(35)中13个个体的新适应度值降序排序个体,记住前10个个体。
(37)取步骤(36)所有子种群中的10个个体组成一个数量为100的种群。
(38)对种群进行交叉、变异运算得到100个个体;交叉算子采用单点交叉,比如00000111110000010100100和111111111111000000000000截取个体的前12位和后12位组成新个体000001111100000000000000,变异就某个个体二进制位随机1变0或0变1,比如000001111100000101001000第一位变为1,个体变异为10000111110000010100100。
(39)执行步骤(33),循环50次结束运行,在非劣解中输出适应值大于设定阈值0.95的最优个体,将个体解码成像素坐标,得到所有子表盘的位置,如果在第一个小种群里找到的话,他就是0号模板在图像上的最优解,即对应位置的子表盘读数为0,得到读数。
(4)确定匹配到的子表盘模板与数量级之间对应关系,对水表读数进行整合,将匹配到的子表盘模板上的读数乘以相对应的数量级,实现水表读数识别。
1.一种多指针水表读数识别方法,其特征在于,步骤如下:
(1)根据待识别水表表盘上的子表盘制作子表盘模板,对子表盘模板按顺序进行编号,每个编号的子表盘模板对应不同读数;
(2)采集待识别水表图像,对水表图像进行预处理,将水表图像转换成二值化图像;
(3)利用多目标模板匹配算法将二值化水表图像进行多目标检测,与所有子表盘模板同时进行匹配,输出匹配到的子表盘模板读数和子表盘模板位置;
(4)确定匹配到的子表盘模板与数量级之间对应关系,对水表读数进行整合,实现水表读数识别。
2.根据权利要求1所述的多指针水表读数识别方法,其特征在于,所述步骤(3)多目标模板匹配算法包括:
(31)输入待识别水表表盘图像和所有子表盘模板,子表盘模板数量为n,每个子表盘模板对应一个适应度函数;
(32)设置水表表盘图像的可行解区域,在可行解区域生成个体作为初始种群,其中个体数量用s表示,设置迭代次数;
(33)按照适应度函数个数将初始种群等分成子种群,子种群数量与适应度函数个数相同,每个子种群个体数量为s/n,每个子种群根据适应值降序记录前t/n个优异个体,其中t<s;
(34)每个子种群根据各自的适应度函数选择对应的s/n个个体;
(35)进行小生境运算,在每个子种群中将步骤(34)s/n个个体和步骤(33)中的t/n个个体合并成含有(s t)/n个个体的新种群,计算每两个个体之间的欧式距离d,当d<le时,le为预先设置阈值,比较两个个体之间适应度值大小,施加一个罚函数给适应度值小的个体,并降低适应度值;
(36)每个子种群按照步骤(35)中(s t)/n个个体的新适应度值降序排序个体,记住前s/n个个体;
(37)取步骤(36)所有子种群中的s/n个个体组成一个数量为s的种群;
(38)对种群进行交叉、变异运算得到s个个体;
(39)跳到步骤(33),直到达到了预先设置的迭代次数,则结束运行,在非劣解中输出适应值大于设定阈值th的最优个体,将个体解码成像素坐标,得到所有子表盘的位置和读数。
3.根据权利要求2所述的多指针水表读数识别方法,其特征在于,所述步骤(1)中所述子表盘模板利用形态学中的膨胀运算,将细指针膨胀为覆盖相邻数字之间全部区域的粗指针。
4.根据权利要求3所述的多指针水表读数识别方法,其特征在于,所述步骤(31)适应度函数为:
式中,k×l为子表盘模板尺寸,图像像素点用坐标(x,y)表示,(i,j)为子表盘模板中的点坐标,该点的灰度值为w(i,j),与该点重合的搜索图像中对应点的坐标为(x i,y j),灰度值为γ(x i,y j),求出相关系数为r(x,y)。
5.根据权利要求4所述的多指针水表读数识别方法,其特征在于,步骤(34)选择算子采用轮盘赌策略,计算子种群里所有个体的适应值总值,每个个体被选择的概率为个体适应值除以适应值总值。
6.根据权利要求5所述的多指针水表读数识别方法,其特征在于,步骤(38)中交叉算子采用单点交叉,随机选择一个位置ke位,0<ke<ρ,ρ为编码的长度,然后分别选择一个个体的前ke位,另一个个体的ke位后的二进制位,并组成一个新的个体。
7.根据权利要求6所述的多指针水表读数识别方法,其特征在于,步骤(38)中变异算子采用单点随机变异,在个体的染色体上随机选择一位,并对其值取非。
8.根据权利要求1所述的多指针水表读数识别方法,其特征在于,步骤(2)图像预处理包括图像尺寸调整、图像灰度化、线性灰度变换、双边滤波。
9.根据权利要求1所述的多指针水表读数识别方法,其特征在于,步骤(4)整合为将匹配到的子表盘模板上的读数乘以相对应的数量级。
10.根据权利要求1所述的多指针水表读数识别方法,其特征在于,步骤(35)欧式距离d计算方法为:
式中,(x1,y1)和(x2,y2)是个体的像素坐标。
技术总结