本发明涉及一种多尺度模板匹配与双自由度云台相机的仪表搜寻方法,属于计算机视觉技术领域。
背景技术:
随着人工智能的快速发展,越来越多的工程作业将由人工的方式转变为机器人自主的方式来完成。目前,具有防尘和可靠性高等优点的指针式仪表在大型工业领域得到广泛应用,普遍采用的读表方式为人工读表。由于是在工业场合,仪表一般处于较高、较远的位置,肉眼很难直接看清指针的数值,并且在高温、高压的情况下,人工观察数据还存在较大的安全隐患。在这种情况下,传统的读表方式是先让工作人员站在远处对仪表进行拍照,获取大小合适、位置居中的仪表图片,接着对仪表图片进行读数。因此,仪表读数很重要的一部分是要获取到高质量的仪表图片,采用人工拍摄的方式虽然可以获取较好的仪表图片,但工作强度大,工作效率低,且容易产生视觉疲劳等问题,因此迫切需要让机器人代替人来进行拍摄,并自动对环境中仪表进行检测和放大,最后得到位置和大小合适的高清仪表图片。
技术实现要素:
本发明针对仪表识别过程中人工拍摄仪表照片存在的上述技术问题,提出了一种改进的基于模板匹配与双自由度云台相机的仪表搜寻方法,实现了机器人对仪表进行定位和自主拍摄高清仪表照片的功能,提高了仪表拍摄的效率,解决了人为拍摄产生偏差问题。
为解决上述技术问题,本发明采用如下技术方案:
一种基于模板匹配与双自由度云台相机的仪表搜寻方法,其特征在于包括如下步骤:
s1:调整相机的默认分辨率或设定相机图像的原始尺寸,开始拍摄获取相机图像;
s2:从获取的图像中分别制作待识别仪表的正方形初始模板图像;之后,对其中一张图像的尺寸依次渐进缩小直至原始尺寸的m倍,缩减n次产生n幅图像;利用初始模板图像对n副图像依次进行模板匹配,筛选n次匹配结果的最大值,确定出待识别仪表的类别,并计算该图像尺寸与原始尺寸的缩放比,根据该缩放比系数将模板匹配的仪表矩形框进行放大,使在原始尺寸的图像上可以准确显示出仪表,记录仪表矩形框的中心点位置d;
s3:在s2所匹配出最大值的图像的横纵方向上各画两条垂直的直线,根据该四条直线确定该图像中心区域矩形框r的大小;
s4:判断仪表矩形框的中心点位置d是否位于对应的图像中心区域矩形框r内;
s5:如s4仪表矩形框的中心点位置d不位于对应的图像中心区域矩形框r内,则初始化相机云台的转动角度,判断仪表矩形框的中心点位置d与图像中心区域矩形框r的偏差,根据偏差控制相机云台转动,使仪表矩形框的中心点位置d位于对应的图像中心区域矩形框r内;
s6:如s4判断结果为仪表矩形框的中心点位置d位于对应的图像中心区域矩形框r内,则说明仪表矩形框处于图像的居中位置;此时需要逐步放大相机倍数,获取仪表区域清晰放大的图像,每次放大相机倍数后计算获取图像的仪表矩形框在所获取图像上的面积占比s,设定s位于0-1之间;
当s小于等于0.2时,则需要则重新返回执行s2-s4或s2-s5对模板图像的大小进行自适应调整后直至到达本步骤;
当s大于0.2且小于0.3时,改变云台转动的角度θ返回s6顺次执行;
当s大于等于0.3,则保存当前的相机图像,作为被认可的高质量仪表图片,整个仪表识别过程结束。
进一步的,在步骤s2中,制作待识别仪表的正方形模板图像时,选取五种仪表图片的仪表框分别制作初始模板图像,所述五种仪表图片至少包括指针宽窄不同、表壳带有水珠、干扰环境下的仪表图片;设定初始模板图像正方形边长尺寸为30。
进一步的,步骤s2中相机图像原始尺寸或分辨率调整为640×480,相机图像原始尺寸经过20次缩小变化直至原始尺寸的0.2倍成为初始模板图像。
进一步的,步骤s3中在图像的中间通过横竖向各两条直线形成一个矩形区域r,矩形区域的宽度为2α,高度为2β,在横方向上的直线坐标表示为ymin和ymax,在纵方向上的直线坐标表示为xmin和xmax,设图像的宽度和高度分别为width和height,则直线的坐标大小为:
式中,α表示纵方向直线离图像中心的距离,β表示横方向直线离图像中心的距离。
进一步的,步骤s4中,该矩形区域r由其左上角顶点的坐标为(xmin,ymin),右下角顶点的坐标为(xmax,ymax),仪表矩形框的中心点为d(x,y),为使仪表矩形框能处于整个图像矩形区域r的中间位置,最好的方法是使仪表矩形框的中心点d(x,y)包含于该矩形区域r内,即d点满足xmin<d.x<xmax和ymin<d.y<ymax。
进一步的,步骤s5中,若d点不包含于该矩形区域r内,则将相机云台进行转动,调整相机的朝向,使仪表矩形框的中心点d(x,y)包含于该矩形区域r内,使仪表矩形框处于图像的居中位置;控制云台转动的规则为:
d.x表示仪表框中心点的横坐标,left表示d位于r的左方,right表示d位于r的右方,up表示d位于r的上方,down表示d位于r的下方。
进一步的,步骤s6中对模板图像的大小进行自适应调整方式为:设模板图像边长为l,则边长的大小为:
l=kx+b
式中,l为模板图像的边长,单位是像素(pixel);k为比例系数,x为相机的放大倍数,b为常数,表示模板图像边长的初始大小,单位是像素(pixel)。
进一步的,步骤s6中在确定仪表矩形框中心的位置已处于相机图像的中心区域r内后,相机放大倍数为每次放大2倍。
进一步的,步骤s6中,当仪表矩形框在相机图像中的面积占比s大于0.2小于0.3时,云台每次转动的角度θ与s关系如下式:
综上,本发明的方法首先打开高清变倍相机,调整相机的默认分辨率,获取相机图像;接着制作模板图像,设定模板图像的初始尺寸,对相机图像的尺寸进行渐进缩小,将1张相机图像生成n张不同尺寸的图像;对n张图像分别进行模板匹配,筛选出相似度最高的一副,确定仪表的类别,计算该图像与原尺寸的比例系数,根据该比例系数放大检测的仪表框,使其在原相机图上能正确框出仪表区域;然后在相机图像的横纵方向画出四条直线,人工在相机图像上设置一个中心区域,利用检测出的仪表框,比较其与图像中心区域的位置,根据位置偏差控制相机云台转动,使其在图像位置居中;当仪表框居中后,对仪表区域进行放大,并且继续控制云台角度来对准仪表,在放大一定倍数后,云台因转动角度过大导致仪表框无法居中,为此提出通过计算仪表在图像的面积占比,通过面积占比改变云台转动角度,使仪表框能快速居中;本发明设计了四种指令来控制相机云台。随着仪表框在相机图像上不断变大,提高模板匹配准确率,设计了模板图像尺寸增长模型,自适应改变模板图像的尺寸,使在相机动态放大过程中,对仪表检测的准确率较高,满足实际要求。相对于现有技术,本发明能在动态场景中检测仪表,对背景干扰、拍摄距离等多种变化因素具有较好的鲁棒性,实现仪表的精准检测与拍摄。
相对于现有技术,本发明具有以下有益结果:
多尺度模板匹配与双自由度云台相机结合进行仪表图像的跟踪搜寻,其自适应调节能力使整个算法具有较好的拓展性;
可以精确检测出仪表的位置和大小,能自动调节云台角度和相机参数,获取高质量的仪表图片,适应性强;
能在动态场景中检测仪表,对背景干扰、拍摄距离等多种变化因素具有较好的鲁棒性,实现仪表的精准检测与拍摄。
解决了不同距离情况下对仪表检测的问题,实时得到仪表在图像中的位置和大小。根据仪表的位置和大小,提出了一种自适应调整云台角度和相机放大倍数的方法,使相机始终正对仪表,实现了机器人自主拍摄出位置居中、大小合适的高清仪表照片,提高了仪表拍摄的效率,解决了人为拍摄产生偏差问题。
附图说明
图1是根据本发明实施的基于模板匹配与双自由度云台相机的仪表搜寻方法流程图;
图2是本发明方法所采用的仪表智能巡检机器人(搭载高清变倍相机和双自由度云台);
图3是利用多尺度模板匹配对一副相机图像进行静态仪表检测的效果图,以说明多尺度模板匹配的原理;
图4中(a)-(e)是依据本发明搜寻方法自主对五种不同仪表进行定位拍摄的效果图。
具体实施方式
下面将结合附图1-4阐述本发明的最优实施方式,根据本发明实施的基于模板匹配与双自由度云台相机的仪表搜寻方法如下所述,但并不局限于以下实施例。
如图1所示是本发明的基于模板匹配与双自由度云台相机的仪表搜寻方法流程图,基于图2的仪表智能巡检机器人(搭载高清变倍相机和双自由度云台)进行在实现过程中主要包括如下步骤:
首先设定相机拍摄像素,获取相机图像,并根据相机图像制作待识别仪表的模板图像;
选取五种不同类型指针式仪表图片,包含有宽指针、窄指针、表壳带有水珠等复杂环境下的指针式仪表,然后对五种指针式仪表图片进行人工截取,选取背景少、能包含大部分仪表区域的图像作为模板图像,设置模板的初始尺寸为30×30,模板图像的尺寸不能设置过大或过小,尺寸较大的模板图像在近距离的仪表匹配下效果好,但在远距离时,其匹配的准确率较低,由于指针式仪表一般距离相机的5m远处,所以尺寸不宜过大。小尺寸的模板图像在远距离的情况下匹配效果较好,但由于其包含的仪表特征比较少,其尺寸不能过小,经过大量实验测试分析,设定模板图像边长的初始大小为30,选取模板图像的初始尺寸为30×30。
然后将1副图像依次缩小20次生成20张不同的图像,高清相机图像的尺寸为1920×1080,因为视频图像的尺寸过大,导致模板匹配时计算量较大,实时性不好,所以将相机图像的原始尺寸调整为640×480。接着将相机图像的尺寸由640×480依次缩小,设置依次递减生成图像次数为n,n介于2-20次之间,那么最终使得获取图像的尺寸下降至原尺寸的m倍(m位于0.1—0.5之间)。
经过大量实验测试,将相机图像的尺寸共缩小20次,如图3为了说明多尺度模板匹配的原理,利用多尺度模板匹配对一副相机图像进行仪表检测的效果图所示,直至原尺寸的0.2倍,在此过程中会有20张尺寸依次递减的相机图像,即原相机一帧图像生出了20张不同尺寸的图像,这是本发明的一个创新之处。
对生出的20张不同尺寸的图像分别进行模板匹配,筛选出匹配相似度最大的图像,将匹配相似度最大的模板图像确定为仪表类别,计算该相机图像的尺寸与原尺寸的比例系数,根据该比例系数将模板匹配的矩形框进行放大,使在原尺寸的图像上可以准确显示出仪表的位置,完成仪表的检测部分;
接下来是对仪表进行居中拍摄,目的是获得位置居中、大小合适的仪表图片,在相机图像上确定一个中心区域,也即矩形区域r,判断仪表框的中心是否位于矩形区域r内,若不在,根据偏差控制相机云台的转动,使其位于矩形区域r内;
矩形区域r的构成如下:首先在相机图像的横纵方向各画两条直线,在横方向上的直线坐标表示为ymin和ymax,在纵方向上的直线坐标表示为xmin和xmax,设相机图像的宽度和高度分别为width和height,则直线的坐标大小如式(1)所示。
式中,α表示纵方向直线离图像中心的距离,β表示横方向直线离图像中心的距离。
通过式(1)的设置,可以在相机图像的中间形成一个矩形区域r,矩形区域的宽度为2α,高度为2β,为了保证仪表位于中心,矩形区域r的长度取值均较小,经过大量实验验证,宽度取值为30,高度取值为20;单位均为像素。
接着判断检测的仪表框中心是否在该矩形区域中,设检测的仪表框中心点位置为d,首先判断水平方向上d是否位于r内,判断方法如式(2)所示。
式中,d.x表示仪表框中心点的横坐标,left表示d位于r的左方,right表示d位于r的右方,up表示d位于r的上方,down表示d位于r的下方。
通过式(3)的比较,可得当前仪表框距图像中心是偏左还是偏右,若偏左,则相机云台需要向左转动,若偏右,则相机云台需要向右转动,使d点在水平方向上包含于r内。相机云台的转动是通过接受指令order来完成的,设相机云台转动的角度为θ,云台每次接受一个order,就朝对应的方向转动θ角。本发明设计了四种指令来控制相机的转动方向,如式(3)所示。
由(3)式可知,当order为3时,云台向左转动,为4时,云台向右转动。通过这种方式来控制云台水平方向的转动,会逐渐地减小仪表框的中心点d与矩形区域r的偏差,最终在水平方向上使仪表框处于相机图像中间位置。
接着在竖直方向上使仪表框处于相机图像的中心位置,首先比较d点的纵坐标与ymin和ymax大小,根据比较的结果发送指令控制云台转动,如式(4)所示。
由式(4)可得,若d点的纵坐标小于ymin,说明仪表框位于图像中间区域的上方,要使仪表框位于图像中间,需要云台相机向上转动,因此云台的控制指令order为1;若d点的纵坐标大于ymax,说明仪表框位于图像中间区域的下方,此时云台相机需要向下转动才能使仪表框位于图像中间位置,因此order为2。
经过前面的处理后,仪表的位置已处于相机图像的中心区域r内,因为仪表距离相机较远,在图像所占的面积较小,导致仪表的指针比较模糊,不适用于直接读数,需要将相机进行拉近,放大仪表。本发明使用hcnetsdk的库函数net_dvr_ptzcontrol来控制相机图像的缩放,每次放大2倍。通过对相机的放大处理,有效地解决了仪表距离过远看不清的问题。
当仪表框居中后,相机自动对仪表区域进行放大,经过大量的实验观察,仪表图像每次进行放大后,仪表框的位置都会发生改变,不再处于相机图像的中心区域r内,也即放大会使仪表框的位置发生偏差,需要在水平和竖直方向上重新调整云台相机角度,调整方法同上,使仪表框重新处于相机图像的中心处。但在放大一定倍数后,云台因转动角度过大导致仪表框无法居中的情况,为此提出计算仪表在图像的面积占比,通过面积占比改变云台转动角度,使仪表框能快速居中。
随着仪表图像的不断放大,需要改变相机云台每次转动的角度,因为在放大过程中,云台转动相同的角度,仪表框位置的偏移量不相同,放大倍数越大,云台转动相同角度时产生的仪表框偏移量越大,导致在仪表框居中过程中出现这种情况:若仪表框在r的上方,云台向上转动θ角度使其居中,由于转动的角度过大,仪表框经过r后,处在r的下方。而后云台又向下转动θ,仪表框又回到r的上方,使云台陷入无限循环中,仪表框也始终不能处于r内。此外,θ角度不能设置过小,这样会使云台每次移动非常缓慢,影响仪表搜寻的效率。为了解决这个问题,设仪表框在相机图像中的面积占比为s,s的取值范围为0.0~1.0,则云台每次转动的角度如式(5)所示。
由式(5)可知,刚开始时,云台每次转动的角度为1°,随着图像的放大,仪表框的面积占比在不断增大,当s大于0.2时,云台每次转动的角度为0.5°,通过改变θ的大小,解决了相机图像在放大后因角度过大无法对准仪表的问题,也提高了仪表搜寻的效率。
对在放大过程中,模板的尺寸过小,误匹配率较大,设置模板图像的大小随仪表面积占比呈线性增长,提高多尺度模板匹配的准确率。随着仪表图像的放大,若模板图像尺寸保持30×30不变,在仪表检测中,容易产生误匹配的仪表框,导致仪表对准出现问题,因此模板图像的大小需要相应地增大。
经过100次实验结果验证,当模板图像的边长随相机放大倍数呈线性增长时,多尺度模板匹配的效果好,准确率达到93%。
模板图像为正方形,设其边长为l,则边长的大小如式(6)所示。
l=kx+b(6)
式中,l为模板图像的边长,单位是像素(pixel);k为比例系数,x为相机的缩放倍数,b为常数,表示模板图像边长的初始大小,单位是像素(pixel)。
通过式(6)自适应改变模板图像的大小,有效地提高了多尺度模板匹配的准确率。
实施例2:
以五种不同类别的指针式仪表为例,利用本发明的多尺度模板匹配与双自由度云台相机的仪表搜寻方法,按照上述流程进行的过程图分别如图4的(a)-(d)所示。图4效果图中仪表均为手持,为了体现多尺度模板匹配对动态目标的检测效果;与图3中图像的静态检测不同。
具体过程如下:
(1)首先制作指针式仪表的模板图像,选取五种不同类型指针式仪表图片,包含有宽指针、窄指针、表壳带有水珠等复杂环境下的指针式仪表,分别定义为1号仪表、2号仪表、3号仪表、4号仪表、5号仪表,然后对五种指针式仪表图片进行人工截取,选取背景少、能包含大部分仪表区域的图像作为模板图像,设置模板的初始尺寸为30×30,模板图像的尺寸不能设置过大或过小,尺寸较大的模板图像在近距离的仪表匹配下效果好,但在远距离时,其匹配的准确率较低,由于指针式仪表一般距离相机的5m远处,所以尺寸不宜过大。小尺寸的模板图像在远距离的情况下匹配效果较好,但由于其包含的仪表特征比较少,其尺寸不能过小,经过大量实验测试分析,选取模板图像的初始尺寸为30×30。
(2)打开如图2所示高清变倍网络相机开始拍摄图像,该相机拥有2000万像素,最大分辨率可达1920×1080,同时拥有20倍光学变倍,聚焦即快又准确,满足仪表检测需要的要求。相机图像的默认尺寸为最大分辨率,当用原始图像进行处理时,计算量大,耗时长,实时性不好。首先将高清网络相机的默认尺寸设置为640×480,尺寸大小合适且不影响后续的仪表检测。接着将该图像生成20张尺寸依次递减的图像,直至下降至默认尺寸的0.2倍,即第1张相机图像的尺寸为640×480,第20张相机图像的尺寸为128×96,中间18张尺寸依次下降,介于两者之间。模板图像的初始尺寸和依次递减生成图像的次数随着相机像素的不同可以调整变化,不仅仅局限于本实施例中的最优取值。
(3)拍摄图像中设置有若干干扰因素,以验证识别准确度。图像的右上角为目标距离相机的垂直距离和当前相机的放大倍数,对20张不同尺寸的相机图像进行模板匹配,选取匹配相似度最大的矩形框作为仪表检测的结果。模板匹配是一种在一副图像中寻找一个特定目标的方法,这种方法的原理简单,遍历图像中的每一个可能的位置,比较各处与模板是否相似,当相似度足够高时,就认为找到了我们的目标,并用矩形框标出目标的坐标。对20张不同尺度的相机图像分别进行模板匹配,单幅图像在模板匹配完成后会返回两个结果,分别为maxval和maxloc,maxval表示最大相似度的值,maxloc表示匹配得到的矩形框在图像上的位置,接着从20副图像中筛选出相似度最高的匹配结果,确定出待识别仪表的类别,并计算对应图像的尺寸与默认相机尺寸的比例系数,设为k,计算
(4)利用检测出的仪表框,比较仪表框与图像中心区域的位置,根据位置偏差控制相机云台转动,使仪表框在图像位置居中。如图4所示,各相机图像中心区域是人工在相机图像上设置的一个矩形区域r,其左上角顶点的坐标为(xmin,ymin),右下角顶点的坐标为(xmax,ymax),仪表框的中心点为d(x,y),为使仪表框能处于整个相机图像的中间位置,最好的方法是使仪表框的中心点包含于该矩形框内,即d点满足xmin<d.x<xmax和ymin<d.y<ymax,若d点不满足该条件,则将相机云台进行转动,调整相机的朝向,使其中心正对仪表区域,控制云台转动的规则如式(3)所示。在本发明实施例中的图4中,矩形区域r宽度取值为30,高度取值为20。
(5)若仪表框在相机图像上居中,则开始对相机图像进行放大,直至仪表框在相机图像的面积占比达到30%。高清相机对图像的放大过程是间断的,每次只对图像放大一倍,然后进行仪表检测,计算仪表框的面积占比,如图4所示,其中(a)-(e)分别为1号仪表、2号仪表、3号仪表、4号仪表、5号仪表定位的效果图。各图中,仪表框(矩形框)中心所显示的小数(如图(a)中的1号仪表的0.083859)表示所占在相机图像的面积的比例(简称仪表框面积占比),右上角为目标仪表(1号仪表、2号仪表、3号仪表、4号仪表、5号仪表)分别距离相机的垂直距离和当前相机的放大倍数(如(a)中的距离为2.5m,倍率为6x),以此类推),若仪表框面积占比小于30%,则继续进行放大。在相机图像的放大过程中,仪表框不是一直处于居中位置,每次放大都会对仪表框在图像上的位置产生偏差,因此,每次放大后,还需判断仪表框中心点位置d与矩形区域r的位置关系,若d不在r内,则要调整相机云台的角度。但高清相机在放大一定倍数后,云台转动相同的角度,放大倍数越大,仪表框的位移越大,当仪表框一次的位移超过矩形区域r的宽度时,这将导致仪表框在矩形区域r的周围来回转动,无法居中。为此,本发明设置了两种不同的云台转动角度,当仪表框的面积占比小于20%时,相机云台每次转动的角度为1°,若面积占比超过20%且小于30%时,此时云台转动的角度为0.5°,通过降低转动角度的大小,使得仪表框能够快速在图像上居中。
(6)若仪表框面积占比大于等于30%时,保存当前相机图像,作为高质量仪表图片使用,整个过程结束。