CN108564085A - 一种自动读取指针式仪表读数的方法 - Google Patents
一种自动读取指针式仪表读数的方法 Download PDFInfo
- Publication number
- CN108564085A CN108564085A CN201810203368.6A CN201810203368A CN108564085A CN 108564085 A CN108564085 A CN 108564085A CN 201810203368 A CN201810203368 A CN 201810203368A CN 108564085 A CN108564085 A CN 108564085A
- Authority
- CN
- China
- Prior art keywords
- image
- gray
- angle
- window
- pixel
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000012549 training Methods 0.000 claims abstract description 19
- 239000000284 extract Substances 0.000 claims abstract description 13
- 238000000605 extraction Methods 0.000 claims abstract description 7
- 239000013598 vector Substances 0.000 claims description 35
- 230000008859 change Effects 0.000 claims description 17
- 238000001514 detection method Methods 0.000 claims description 16
- 238000001914 filtration Methods 0.000 claims description 15
- 238000009499 grossing Methods 0.000 claims description 15
- 238000005457 optimization Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 230000002146 bilateral effect Effects 0.000 claims description 8
- 238000003708 edge detection Methods 0.000 claims description 7
- 230000009466 transformation Effects 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 5
- 230000009467 reduction Effects 0.000 claims description 5
- 238000003491 array Methods 0.000 claims description 4
- 230000014509 gene expression Effects 0.000 claims description 4
- 230000001629 suppression Effects 0.000 claims description 4
- 238000009825 accumulation Methods 0.000 claims description 3
- 230000003321 amplification Effects 0.000 claims description 3
- 230000000903 blocking effect Effects 0.000 claims description 3
- 238000011156 evaluation Methods 0.000 claims description 3
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 3
- 238000007689 inspection Methods 0.000 claims description 2
- 230000001186 cumulative effect Effects 0.000 claims 1
- 238000007781 pre-processing Methods 0.000 abstract description 2
- 210000004027 cell Anatomy 0.000 description 9
- 238000005286 illumination Methods 0.000 description 8
- 238000010801 machine learning Methods 0.000 description 5
- 238000012706 support-vector machine Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- GJJFMKBJSRMPLA-HIFRSBDPSA-N (1R,2S)-2-(aminomethyl)-N,N-diethyl-1-phenyl-1-cyclopropanecarboxamide Chemical compound C=1C=CC=CC=1[C@@]1(C(=O)N(CC)CC)C[C@@H]1CN GJJFMKBJSRMPLA-HIFRSBDPSA-N 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 210000000130 stem cell Anatomy 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/14—Image acquisition
- G06V30/148—Segmentation of character regions
- G06V30/153—Segmentation of character regions using recognition of characters or words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2411—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Multimedia (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种自动读取指针式仪表读数的方法,包括:图像采集,利用拍照设备拍摄含有仪表正面的图像作为训练样本;样本制作,将采集的图像通过人为标定制作出仪表部分的图像作为正样本,并随机生成背景部分的图像作为负样本;图像特征提取,从正负样本中提取出数字特征作为训练集;训练分类器,基于训练集得到训练后的分类器,对于新输入的图像,利用分类器SVM预测仪表最可能的位置并提取出仪表图像;图像预处理,将提取到的仪表图像通过图像处理的方法去除掉阴影等干扰;识别仪表的指针和表盘,获取指针的角度和位置信息;利用指针的信息获取读数值。
Description
技术领域
本发明属于机器学习和计算机视觉技术领域,尤其涉及一种自动读取指针式仪表读数的方法。
背景技术
随着机器学习和机器视觉的快速发展,如今计算机理解图像内容变得越来越重要。2016年,图像数据占据了整个互联网的85%。而庞大的信息量依靠人力去处理无疑是一项花费大而收益小的工作,让计算机自己能够识别图像内容才是合理的处理方式。在电力设备中,对仪表读数的监控很重要,仪器如果处于非正常状态会产生严重后果。但是如果单单靠人员去巡检、读数则在效率上和人力消耗上都很成问题。如果能找到一种方法能够通过计算机直接识别含有仪表的照片中仪表的读数,那么巡检人员只需要拍摄到含有仪表的照片就可以自动获取读数,而不需要走到近处再人工去读数。
指针仪表的结构简单,方便维修,精度较高,且可抗电磁等干扰,在如今的测试和控制系统中广泛应用,因为其没有数据接口功能,所以一般都使用人工读数的方法,但是这样无疑是一种劳神费力的工作,人工读数的方式效率低下,而且长时间读数会产生视觉疲劳,容易产生误判,所以对于指针式仪表的自动读数识别一直是一个被长期研究的问题。目前很多方法方法都逃脱不了对仪表图像要求的严格,首先是要求图像清晰度高,而且没有要有合适的光照以及很少的背景干扰,可以很容易将指针和表盘分开,并且可以获取刻度,但是实际应用中很难达到这种条件。但是目前很多研究都是基于精心准备的实验数据,而很少有研究在真实现场的指针式仪表读数识别问题。
所以为了实用性,减轻指针式仪表读数的人力消耗,急需一种能够应用在现实场景中的自动读取指针式仪表读数的方法。
发明内容
发明目的:针对现有技术中存在的问题,本发明提供一种自动读取指针式仪表读数的方法。
通过本发明方法构建的指针式仪表读数方法,旨在通过一种自动化的手段,将传统的人工读取指针式仪表读数转化为采集包含仪表的图像,并基于特征提取、SVM(支持向量机)分类和图像处理的方法进行自动读数的问题。
技术方案:一种自动读取指针式仪表读数的方法,提出了一种在采集到包含仪表正面部分的图像的情况下通过机器学习和机器视觉方法自动化读数的解决方案,具体包括以下步骤:
步骤1,图像采集及预处理:采集含有仪表正面的图像作为输入图像,读取图像中仪表的示数,并对图像进行颜色空间转换和尺寸变化;
步骤2,分类器的训练:通过预先采集的含有仪表正面部分的图像,人工选取正好含有完整仪表的窗口为正样本,再随机生成若干不含仪表部分的背景窗口作为负样本,由于图像是由庞大的像素点信息构成,为了利用图像进行训练和对图像分类,需要对图像提取数字特征。将正负样本尺寸归一化并提取梯度方向直方图HOG(Histogram of Gradient)特征,作为输入向量,使用线性支持向量机C-SVM(Support Vector Machine,支持向量机)进行训练获得分类器;
步骤3,获取仪表部分图像:对步骤1中采集的图像使用滑动窗口,提取每个窗口的梯度方向直方图HOG特征,并使用训练完成的分类器评估每个窗口的得分,选择最优的窗口作为仪表部分的窗口输出,从而得到仪表部分图像;
步骤4,图像的预处理:从步骤3获取的仪表部分的图受到光照、阴影等干扰因素影响,增加了读数的困难,对步骤3得到的仪表部分图像进行直方图均衡化和滤波等操作,得到灰度图,获取更加容易读数的图像;
步骤5,仪表指针和表盘的识别:将步骤4得到的灰度图通过canny边缘检测得到边缘图,检测其中的最大圆形即为表盘边缘,获取圆心坐标。再以圆心坐标为基准点检测步骤4得到的灰度图中最有可能的指针点,作为指针所在的直线,得到指针角度;
步骤6,获取指针的读数:根据步骤5得到的指针角度,结合表盘数值信息,计算读数。
本发明步骤1包括:
载入采集到的含有仪表正面的图像作为原图像,将原图像按照颜色值转换为灰度图减少通道数可以显著减少检测的耗时,将原图像RGB(RGB即红绿蓝)三通道图像转换为单通道的灰度图。由于原图像尺寸过大,会产生很多待选窗口,而这对检测仪表窗口的帮助不大,所以再进行尺寸等比例缩小,转换比col_pre和row_pre分别表示变换尺寸前的图像的列尺寸和行尺寸,col_cur和row_cur分别表示变换尺寸后的图像的列尺寸和行尺寸,这样可以显著增加检测效率。
在进行颜色空间转换和尺寸变换之后,得到了易于操作的含有指针仪表部分的真实场景图像。由于图像是有庞大的像素点信息组成,要进行分类处理,首先是要用更为简短的特征来表示,一般选用dim维特征向量来表示图像信息,表示第n个样本的dim维特征向量的1到dim个分量,并利用分类器加以识别分类,因此步骤2包括:
步骤2-1,样本制作:过预先采集含有仪表正面部分的图像,人工选取正好含有完整仪表的窗口为正样本,再随机生成若干不含仪表部分的背景窗口作为负样本;
步骤2-2,将正负样本归一到相同行尺寸row_win和列尺寸col_win,提取改变尺寸后的图像的梯度方向直方图HOG特征,将图像像素组织成块结构block,每个块结构由细胞单元cell组成,cell也由若干像素点组成,设定梯度方向直方图HOG特征的参数,包括block块的步长winstride,组成block块的cell数cells,统计方向数nbins,block块的列尺寸col_block和行尺寸row_block,每个样本会得到一个维数为的特征向量;
步骤2-3,将正负样本的标签label分别设定为1和-1,利用步骤2-2所述的每个样本对应的n维梯度方向直方图HOG特征向量和标签label作为训练样本,表示第n个样本的dim维特征向量的1到dim个分量,通过解约束条件yn(wTxn+b)≥1-ξn,ξn≥0,=1,…,|D|下的最优化问题其中|D|是训练数据集的大小,yn是第n个样本的标记,如果样本图像包含仪表则为1,否则为-1;w是权重参数,b是偏置参数,w和b是优化问题求解的目标;ξn是第n个样本的松弛变量,表示样本不满足约束条件yn(wTxn+b)≥1的程度;C是惩罚参数,表示对不满足约束的样本的惩罚值;
求解上述的最优化问题即是训练线性支持向量机C-SVM,最终得到一个最优超平面作为分类平面:wTx+b=0,w和b是求解出的参数,x是样本的HOG特征向量。
得到了分类器之后,要利用训练好的分类器对图像中存在的仪表进行识别并提取相应部分的图像,因为仪表只占用图像中的小部分,所以采用滑动窗口进行检测仪表所在的窗口位置,并且由于仪表的尺寸不一,而分类器的特征向量维数是固定的,所以要改变图像的尺寸来进行窗口滑动,因此步骤3包括:
步骤3-1,用拍照设备获取待检测图像,通过步骤1所述的方法,将待检测的图像进行尺寸变换和颜色空间转换;
步骤3-2,建立行尺寸为row_win、列尺寸为col_win的滑动窗口,利用滑动窗口,根据步长stride改变窗口位置,从左至右从上至下遍历步骤3-1中得到的图像,根据步长和大小在每一步的位置生成一个窗口,并对步骤3-1中得到的图像进行放大和缩小的尺度变换,在放大缩小后不同大小的多张图像用相同的步长和窗口大小在每一步的位置生成一个窗口,从而在滑动窗口大小不变的情况下检测不同大小的仪表,记每次的缩小或放大比例为scale,记每次的缩小或放大比例为scale(比如1.1),如进行一次放大变换后的图像行数和列数大小分别为row_cur*scale和col_cur*scale,进行一次缩小变换后的图像行数和列数大小分别为row_cur/scale和col_cur/scale;
步骤3-3,根据步骤2所述的方法,对步骤3-2生成的每个窗口提取梯度方向直方图HOG特征向量x=[x1,x2,...,xdim],x1,x2,...,xdim表示样本的dim维特征向量的1到dim个分量,并送入训练好的svm分类器进行分类y=wTx+b,w和b即步骤2-3中求解的参数,x是窗口图像的特征向量,y是预测值,其值越大,该窗口包含仪表的概率越大,选择其中最大y值的窗口作为仪表所在的窗口。由于多尺度下遍历复杂度很高,在第一次的尺度下得到最优的窗口位置之后,后续改变尺度的图像上检测窗口不再遍历全图,而是只在第一次得到的位置的上下左右30个像素的范围内进行窗口滑动与检测进行窗口滑动与检测。最终得到所有放缩后尺度的图像上最优窗口的左上角坐标(col_retbest,row_retbest),以横纵坐标顺序;
步骤3-4,获取最优窗口位置之后,窗口对应步骤3-1得到的未缩放的输入的待检测图像图像中的位置为纵坐标和横坐标(scalebest表示最优窗口对应的图像的放缩比例,是原图多次根据scale缩放后的结果,如最优窗口出现在按scale放大5次的图像中,则scalebest为scale5,如最优窗口出现在按scale缩小5次的图像中,则scalebest为scale-5),行列尺寸为根据位置和尺寸在输入的待检测图像的对应位置截取对应尺寸大小 的图像部分作为待检测图像中仪表图像的输出结果。
从输入的包含背景的图像中提取到只包含仪表的窗口后,需要对仪表中的表盘轮廓和指针进行识别,但是因为图像实在真实场景中采集的,而非实验室中的良好环境,所以图像会有阴影、光照都因素的干扰,影响读数,因此步骤4包括:
步骤4-1,步骤3获取的仪表部分的图像由于受到到光照、阴影等干扰因素影响,增加了读数的困难。对步骤3得到的仪表部分图像进行灰度化得到灰度图像,以减少颜色干扰和减少运算量,对灰度图像进行直方图均衡化,对于灰度值为g的像素点,映射后的灰度为其中Numm是灰度值为m的像素点数目,Num是图像总像素数目;
步骤4-2,进行滤波处理:先进行简单的小邻域中值滤波,灰度图像中像素点A中值滤波后的灰度值为D(A)=med[A1,A2,…,AN],A1…AN是像素点A邻域内的像素点,med表示取中位数,AN表示第N个像素点,再进行双边滤波,位置(i,j)处像素点双边滤波输出灰度为求和像素是在坐标(i,j)的设定的邻域内,其中ω是权系数k,l分别表示像素点(i,j)邻域像素的横坐标的取值和纵坐标的取值,In(i,j)表示位置(i,j)处的像素点的灰度值,σd和σr分别表示空间位置远近上的平滑参数和灰度值上的平滑参数,结合了空间距离和灰度差,平滑的同时会保留边缘信息。
得到预处理之后的仪表图像后,需要识别其中的表盘和指针位置信息,从而推断出读数,因此步骤5包括:
步骤5-1,对步骤4中获得的灰度图进行canny边缘检测:利用高斯平滑,根据高斯分布的特点对像素点灰度值进行变换,X、Y分别表示图像中一个像素的横坐标和纵坐标,σ是平滑参数。再用梯度算子计算水平方向的梯度Gx和竖直方向的梯度Gy,算出每个像素点的梯度值和角度值在每个像素点和其梯度方向上的前后两个像素点进行非极大值抑制,然后根据设定的高阈值(如150)进行二值化得到边缘图像,再设定一个低阈值(如50),如果断点的8邻域内有高于低阈值的点,则将其也记为边缘,最终得到边缘图像;
步骤5-2,遍历5-1得到的边缘图像的每一个坐标点(x_img,y_img),以每个点为预设圆心,以步长为1遍历半径为radius,检测四个点(x_img-radius,y_img),(x_img+radius,y_img),(x_img,y_img-radius),(x_img,y_img+radius)四个点,如果这些点附近没有找到边缘点,执行步骤5-3,如果所有radius不成立,表示(x_img,y_img)不属于圆心点,如果满足四个点附近有边缘点,执行步骤5-4;
步骤5-3,将radius更新为radius+1,返回步骤5-2;
步骤5-4,搜索(x_img,y_img)以radius为半径的16个点附近是否有边缘点,分别是x_img,x_img±radius/4,x_img±radius/2,x_img±3*radius/4,x_img±radius对应的圆上的点,如果不满足圆的条件则执行步骤5-5;如果找到满足条件的(x_img,y_img,radius),则记录下这组圆参数,最后选择半径最大的圆作为表盘,得到圆心坐标(c_col,c_row);
步骤5-5,将radius更新为radius+1,返回步骤5-4,
步骤5-6,以圆心为中心搜索步骤4得到的灰度图像360°范围的每个角度上的灰度累计值,建立对应圆心的灰度数组acc_gray,即将圆心角1°到360°每个度数圆心角上的累加灰度值,其中acc_gray[a]指圆心角为a的情况下,当前圆心对应角度a上的像素点的累计灰度值,建立acc_ptr为对应圆心的累计像素点数组,记录每个度数上的像素点总数,其中acc_ptr[a]指圆心角为a的情况下,当前圆心对应角度a上的像素点个数,acc_gray和acc_ptr每个元素初始化为0,遍历步骤4中得到的灰度图中的每一个像素点pt,计算pt与圆心坐标所在的直线的取整角度大小为angle,acc_gray[angle]即角度angle上的累积灰度值,累计加上pt的灰度值,acc_ptr[angle]即角度angle上的总像素点数,累计加1,遍历完步骤4得到的灰度图像的所有像素点后,建立平均灰度数组acc,acc[a]指对应圆心坐标的圆心角为a的方向上所有像素点的平均灰度值,计算acc[a]=acc_gray[a]/acc_ptr[a],然后计算数组acc最大值的下标a_max,即为要找的指针角度;
步骤5-7,在获取的圆心小邻域内遍历所有像素点作为圆心重新执行步骤5-6,得到每个像素点对应的三个数组,acc_gray、acc_ptr、acc,为了区分,以坐标(i,j)为圆心建立的数组记为acc_gray(i,j),acc_ptr(i,j),acc(i,j),从而得到平均灰度最大的圆心像素点和对应的最大的平均灰度值对应角度angle_max=maxi,ja_max(i,j),a_max(i,j)是以(i,j)为圆心执行步骤5-6得到的指针角度,angle_max作为最终识别出的指针的角度。
得到指针的角度之后,由于仪表的量程确定,并且刻度是均匀分布的,那么得知指针的角度之后,就可以根据角度信息计算出读数,因此步骤6包括:
根据步骤5得到的指针对应圆心角angle_max,结合表盘的量程,由于仪表的刻度是均匀间隔的,利用角度比例关系得到读数值其中start表示仪表刻度开始的角度,end表示刻度终止的角度,total表示仪表的量程。
有益效果:指针式仪表具有结构简单,抗电磁干扰强都优点,广泛应用于工业领域,但是其缺少数据接口,读数常常通过人工来完成。本方法通过机器学习和图像处理的方法,只需要采集包含仪表正面的图像,就可以自动获取读数,大大减少了人力消耗,并且具有高效性和准确性,有较高的实用价值。本发明在机器学习模型SVM的基础上,结合图像处理的方法,提供了一种自动化的手段,大大提高读取指针式仪表读数的效率和降低了成本,并在一定程度上保证了结果的准确性与有效性。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。
图1为本发明实施例的仪表位置检测和提取过程的流程图。
图2为本发明实施例的指针读数的流程图。
图3a为本发明实施例的输入图像。
图3b为本发明实施例的仪表提取效果图。
图4为本发明实施例的指针识别效果图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
如图1和图2所示,本发明方法所构建的仪表式指针自动读数的工作流程大致分为三大阶段:第一阶段,准备工作,包括数据采集和样本制作与数据预处理;第二阶段,识别工作,包括模型训练、仪表图像部分提取;第三阶段,输出工作,包括仪表、指针识别及获取读数并输出。本发明实施例中仪表式指针自动读数系统的具体构建步骤如下:
步骤1,图像采集及预处理:采集含有仪表正面的图像作为输入图像读取图像中仪表的示数,并对图像进行颜色空间转换和尺寸变化,得到如图3a所示的图像;
步骤2,分类器的训练:通过预先采集的含有仪表正面部分的图像,人工选取正好含有完整仪表的窗口为正样本,再随机生成若干不含仪表部分的背景窗口作为负样本,由于图像是由庞大的像素点信息构成,为了利用图像进行训练和对图像分类,需要对图像提取数字特征。将正负样本尺寸归一化并提取梯度方向直方图HOG(Histogram of Gradient)特征,作为输入向量,使用C-SVM(Support Vector Machine,支持向量机)进行训练获得分类器;
步骤3,获取仪表部分图像:对采集的待读数的图像使用滑动窗口,提取每个窗口的梯度方向直方图HOG特征,并使用训练好的分类器评估每个窗口的得分,选择最优的窗口作为仪表部分的窗口输出,从而得到仪表部分图像;
步骤4,图像的预处理:从步骤3获取的仪表部分的图(如图3b所示)受到光照、阴影等干扰因素影响,增加了读数的困难,对步骤3得到的仪表部分图像进行直方图均衡化和滤波等操作,得到灰度图,获取更加容易读数的图像;
步骤5,仪表指针和表盘的识别:将步骤4得到的灰度图进行canny边缘检测得到边缘图,检测其中的最大圆形即为表盘边缘,获取圆心坐标。再以圆心坐标为基准点检测步骤4得到的灰度图中最有可能的指针点,作为指针所在的直线,得到指针角度,如图4灰色直线标记的指针;
步骤6,获取指针的读数:根据步骤5得到的指针角度,结合表盘数值信息,计算读数。
本发明步骤1包括:
载入采集到的含有仪表正面的图像作为原图像,将原图像按照颜色值转换为灰度图减少通道数可以显著减少检测的耗时,将原图像RGB(RGB即红绿蓝)三通道图像转换为单通道的灰度图。由于原图像尺寸过大,会产生很多待选窗口,而这对检测仪表窗口的帮助不大,所以再进行尺寸等比例缩小,转换比col_pre和row_pre分别表示变换尺寸前的图像的列尺寸和行尺寸,col_cur和row_cur分别表示变换尺寸后的图像的列尺寸和行尺寸,这样可以显著增加检测效率。
在进行颜色空间转换和尺寸变换之后,得到了易于操作的含有指针仪表部分的真实场景图像。由于图像是有庞大的像素点信息组成,要进行分类处理,首先是要用更为简短的特征来表示,一般选用dim维特征向量来表示图像信息,表示第n个样本的dim维特征向量的1到dim个分量,并利用分类器加以识别分类,因此步骤2包括:
步骤2-1,样本制作:过预先采集含有仪表正面部分的图像,人工选取正好含有完整仪表的窗口为正样本,再随机生成若干不含仪表部分的背景窗口作为负样本;
步骤2-2,将正负样本归一(resize)到相同行尺寸row_win和列尺寸col_win,提取改变尺寸后的图像的梯度方向直方图HOG,将图像像素组织成块结构(block),每个块结构由若干细胞单元(cell)组成,设定梯度方向直方图HOG特征的参数,包括block块的步长winstride,组成block块的cell数cells,统计方向数nbins,block块的行尺寸row_block和列尺寸col_block,每个样本会得到一个维数为的特征向量;
步骤2-3,将正负样本的标签label分别设定为1和-1,利用步骤2-2所述的每个样本对应的dim维梯度方向直方图HOG特征向量量和标签label作为训练样本,表示第n个样本的dim维特征向量的1到dim个分量,xn是第n个样本的特征向量,以及label作为训练样本,通过解约束条件yn(wTxn+b)≥1-ξn,ξn≥0,n=1,…,|D|下的最优化问题其中|D|是训练数据集的大小,yn是第n个样本的标记,如果样本图像包含仪表则为1,否则为-1,w是权重参数,b是偏置参数,w和b是优化问题求解的目标,xn是第n个样本的特征向量,即步骤2-2得到的HOG特征向量,ξn是第n个样本的松弛变量,表示样本不满足约束条件yn(wTxn+b)≥1的程度,而C是惩罚参数,表示对不满足约束的样本的惩罚值。求解上述的最优化问题即是训练线性支持向量机(C-SVM),最终得到一个最优超平面作为分类平面:wTx+b=0,w和b是求解出的参数,x是样本的HOG特征向量。
得到了分类器之后,要利用训练好的分类器对图像中存在的仪表进行识别并提取相应部分的图像,因为仪表只占用图像中的小部分,所以采用滑动窗口进行检测仪表所在的窗口位置,并且由于仪表的尺寸不一,而分类器的特征向量维数是固定的,所以要改变图像的尺寸来进行窗口滑动,因此步骤3包括:
步骤3-1,通过步骤1所述的方法,用拍照设备获取待检测图像,将待检测的图像进行尺寸变换和颜色空间转换;
步骤3-2,建立行尺寸为row_win、列尺寸为col_win的滑动窗口,利用滑动窗口,根据步长stride改变窗口位置,从左至右从上至下遍历3-1中得到的图像,根据步长和大小在每一步的位置生成一个窗口,考虑到指针的多尺度问题,使对步骤3-1中得到的图像进行放大和缩小的尺度变换,并在放大缩小后不同的小的图像用相同的步长和大小在每一步的位置生成一个窗口,记每次的缩小或放大比例为scale,保证窗口尺寸不变的情况下,可以检测不同大小的仪表。
步骤3-3,根据步骤2所述的方法,对步骤3-2生成的每个窗口提取梯度方向直方图HOG特征向量x=[x1,x2,...,xdim],x1,x2,...,xdim表示样本的dim维特征向量的1到dim个分量,并送入训练好的svm(支持向量机)分类器根据y=wTx+b进行分类,w和b即步骤2-3中求解的参数,x是窗口图像的特征向量,y是预测值,其值越大,该窗口包含仪表的概率越大,选择其中最大y值的窗口作为仪表所在的窗口。由于多尺度下遍历复杂度很高,在第一次的尺度下得到最优的窗口位置之后,后续改变尺度的图像上检测窗口不再遍历全图,而是只在第一次得到的位置的上下左右30个像素的范围内进行窗口滑动与检测。最终得到所有放缩后尺度上最优窗口的左上角坐标(col_retbest,row_retbest),以横纵坐标顺序;。
步骤3-4,获取最优窗口位置之后,窗口对应步骤3-1得到的未缩放的输入的待检测图像图像中的位置为和(scalebest表示最优窗口对应的图像的放缩比例,是原图多次根据scale缩放后的结果,如最优窗口出现在按scale放大5次的图像中,则scalebest为scale5,如最优窗口出现在按scale缩小5次的图像中,则scalebest为scale-5),行列尺寸为根据位置和尺寸在输入的待检测图像的对应位置截取对应尺寸大小的图像部分作为待检测图像中仪表图像的输出结果。从输入的包含背景的图像中提取到只包含仪表的窗口后,需要对仪表中的表盘轮廓和指针进行识别,但是因为图像实在真实场景中采集的,而非实验室中的良好环境,所以图像会有阴影、光照都因素的干扰,影响读数,因此步骤4包括:
步骤4-1,步骤3获取的仪表部分的图像由于受到到光照、阴影等干扰因素影响,增加了读数的困难。对步骤3得到的仪表部分图像进行灰度化得到灰度图像,以减少颜色干扰和减少运算量,对灰度图像进行直方图均衡化,对于灰度值为g的像素点,映射后的灰度为其中Numm是灰度值为g的像素点数目,Num是图像总像素数目;
步骤4-2,进行滤波处理:先进行简单的小邻域中值滤波,灰度图像中像素点A中值滤波后的灰度值为D(A)=med[A1,A2,…,AN],A1…AN是像素点A邻域内的像素点(通常取A为中心3*3的邻域),med表示取中位数,AN表示第N个像素点,再进行双边滤波,双边滤波输出灰度为求和像素是在位置(i,j)的设定的邻域内,其中ω是权系数k,l分别表示像素点(i,j)邻域像素的横坐标的取值和纵坐标的取值,In(i,j)表示位置(i,j)处的像素点的灰度值。σd和σr是空间位置远近上的平滑参数和灰度值上的平滑参数(如取值150,150),结合了空间距离和灰度差,平滑的同时会保留边缘信息。
执行上述操作得到预处理之后的仪表图像后,需要识别其中的表盘和指针位置信息,从而推断出读数,因此步骤5包括:
步骤5-1,对步骤4中获得的灰度图进行canny边缘检测:利用高斯平滑,根据高斯分布的特点对像素点灰度值进行变换,X是图像中某个像素的横坐标,Y是纵坐标,σ是平滑参数。再用梯度算子计算水平方向梯度Gx和竖直方向梯度Gy,算出每个像素点的梯度值和角度值在每个像素点和其梯度方向上的前后两个像素点进行非极大值抑制,然后根据设定的高阈值(如150)进行二值化得到边缘图像,再设定一个低阈值(如50),如果断点的8邻域内有高于低阈值的点,则将其也记为边缘,最终得到边缘图像;
步骤5-2,遍历5-1得到的边缘图像的每一个坐标点(x_img,y_img),以每个点为预设圆心,以步长为1遍历半径为radius,检测四个点(x_img-radius,y_img),(x_img+radius,y_img),(x_img,y_img-radius),(x_img,y_img+radius)四个点,如果这些点附近没有找到边缘点,执行步骤5-3,如果所有radius不成立,表示(x_img,y_img)不属于圆心点,如果满足四个点附近有边缘点,执行步骤5-4;
步骤5-3,将radius更新为radius+1,返回步骤5-2;
步骤5-4,搜索(x_img,y_img)以radius为半径的16个点附近是否有边缘点,分别是x_img,x_img±radius/4,x_img±radius/2,x_img±3*radius/4,x_img±radius对应的圆上的点,如果不满足圆的条件则执行步骤5-5;如果找到满足条件的(x_img,y_img,radius),则记录下这组圆参数,最后选择半径最大的圆作为表盘,得到圆心坐标(c_col,c_row);
步骤5-5,将radius更新为radius+1,返回步骤5-4,
步骤5-6,以圆心为中心搜索步骤4得到的灰度图像360°范围的每个角度上的灰度累计值,建立对应圆心的灰度数组acc_gray,即将圆心角1°到360等份,其中acc_gray[a]指圆心角为a的情况下,当前圆心对应角度a上的像素点的累计灰度值,建立acc_ptr为对应圆心的累计像素点数组,记录每个度数上的像素点总数,其中acc_ptr[a]指圆心角为a的情况下,当前圆心对应角度a上的像素点个数,acc_gray和acc_ptr每个元素初始化为0,遍历步骤4中得到的灰度图中的每一个像素点pt,计算pt与圆心坐标所在的直线的取整角度大小为angle,acc_gray[angle]即角度angle上的累积灰度值,累计加上pt的灰度值,acc_ptr[angle]即角度angle上的总像素点数,累计加1,遍历完步骤4得到的灰度图像的所有像素点后,计算acc[a]=acc_gray[a]/acc_ptr[a],然后计算数组acc最大值的下标a_max,即为当前圆心为标准找到的指针角度;
步骤5-7,为避免获取的圆心位置不准的情况,在获取的圆心小邻域内遍历所有像素点作为圆心重新执行步骤5-6,会得到每个像素点对应的三个数组,acc_gray、acc_ptr、acc,为了区分,以坐标(i,j)为圆心建立的数组记为acc_gray(i,j),acc_ptr(i,j),acc(i,j),从而得到平均灰度最大的像素点和对应的最大的平均灰度值对应角度angle_max=maxi,ja_max(i,j),a_max(i,j)是以(i,j)为圆心执行步骤5-6得到的指针角度,angle_max作为最终识别出的指针的角度。
得到指针的角度之后,由于仪表的量程确定,并且刻度是均匀分布的,那么得知指针的角度之后,就可以根据角度信息计算出读数,因此步骤6包括:
根据步骤5得到的指针对应圆心角angle_max,结合表盘的量程,由于仪表的刻度是均匀间隔的,利用角度比例关系得到读数值其中start表示刻度开始的角度,end表示刻度终止的角度,total表示仪表的量程。
实施例
本实施例包括以下部分:
步骤1,图像采集及预处理。
载入采集到的含有仪表正面的图像作为作为原图像,将原图像按照颜色值转换为灰度图减少通道数可以显著减少检测的耗时,利用公式将RGB三通道图像转换为单通道的灰度图。由于原图像尺寸过大,会产生很多待选窗口,而这对检测仪表窗口的帮助不大,所以再进行尺寸等比例缩小,将原图按照原来的长宽关系resize到row_cur*row_col=640*480或480*640,转换比col_pre和row_pre表示变换尺寸前的图像列尺寸和行尺寸。
步骤2,分类器的训练。
通过预先采集的含有仪表正面部分的图像,人工选取正好含有完整仪表的窗口为正样本,再随机生成若干不含仪表部分的背景窗口作为负样本,由于图像是由庞大的像素点信息构成,为了利用图像进行训练和对图像分类,需要对图像提取数字特征。将正负样本尺寸归一化为row_win*col_win=64*64大小,并提取梯度方向直方图特征,选取的block大小为row_block*col_block=16*16,cell大小为8*8,块步长winstride为8个像素,梯度方向数sbins选取的5,会得到一个 维的特征向量,作为输入向量,结合其对应的标签label,使用C-SVM进行训练获得分类器,SVM是经典的分类算法,它的优化目标是在yn(wTxn+b)≥1-ξn,ξn≥0,n=1,…,|D|下解其中|D|是训练数据集的大小,C选取为1.0,通过拉格朗日对偶与Karush-Kuhn-Tucker(KKT)条件将其转变为凸优化问题,最终通过序列最小化算法(SMO)求出分割超平面的最优解。
步骤3,获取仪表部分图像。
训练好分类器之后,要对新输入的待读数图片提取只有仪表部分而只含有极少背景的区域,具体算法过程如下:
(1)利用步骤1所述的方法,将待检测的图像进行尺寸变换和颜色空间转换。
(2)建立行列尺寸为(row_win,col_win)的滑动窗口,利用滑动窗口,根据步长stride从左至右从上至下遍历(1)得到的处理后图片。根据步骤2所述的方法,对每个窗口提取HOG特征向量x=[x1,x2,...,xdim],x1,x2,...,xdim表示样本的dim维特征向量的1到dim个分量,并送入步骤2中训练好的svm分类器进行分类y=wTx+b,选择其中最大y值y1max得到最优窗口左上角坐标(col_ret1,row_ret1),以横纵坐标顺序。
(3)考虑到指针的多尺度问题,对原图进行放大和缩小的尺度变换,从而在滑动窗口大小不变的情况下可以检测不同大小的仪表,取每次放大缩小率scale为1.1,如进行一次放大变换后的图像大小为row_cur*scale和col_cur*scale,进行一次缩小变换后的图像大小为row_cur/scale和col_cur/scale。在第一次的尺度下最优的窗口位置(row_ret1,col_ret1)的邻域范围内(上下左右各30个像素点)而非全图用(2)中方法进行滑动检测。最终得到所有尺寸下最优的ybest和最优窗口左上角坐标(col_retbest,row_retbest)。
(4)获取最优窗口位置之后,窗口对应输入图像中的行和列的位置为 和行列尺寸为在输入原始图像中截取对应部分作为检测图像中仪表图像的输出结果img。
步骤4,图像的预处理。
从输入的包含背景的图像中提取到只包含仪表的窗口后,需要对仪表中的表盘轮廓和指针进行识别,但是因为图像实在真实场景中采集的,而非实验室中的良好环境,所以图像会有阴影、光照都因素的干扰,影响读数,图像预处理的算法过程如下:
(1)首先对图像进行灰度化处理以减少颜色干扰和减少运算量,对灰度图像进行直方图均衡化,对于灰度值为g的像素点映射后灰度为Numm是灰度值为m的像素点数目,Num是图像总像素pixel数目。
(2)进行滤波处理,首先进行简单的小邻域中值滤波,即像素点A的灰度值为D(A)=med[A1,A2,…,AN],A1…AN是A邻域内的像素点,取A为中心3*3的邻域,med表示取中位数。
(3)之后进行双边滤波,双边滤波输出灰度为求和像素是在坐标(i,j)的设定的邻域内(邻域设定为以(i,j)为中心5*5的区域),其中ω是权系数σd和σr是空间位置远近上的平滑参数和灰度值上的平滑参数,都取150,结合了空间距离和灰度差,平滑的同时会保留边缘信息。
步骤5,仪表指针和表盘的识别。
从上面步骤得到的预处理之后的灰度图包含了仪表的表盘和指针,需要定位到表盘和指针的位置信息,才能获取读数,具体的算法过程如下:
(1)对步骤4中获得的预处理图进行canny边缘检测,首先利用高斯平滑,根据高斯分布的特点对像素点灰度值进行变换,然后用梯度算子计算水平方向梯度Gx和竖直方向梯度Gy,可以算出每个像素点的梯度值和角度值在每个点和其梯度方向上的前后两个点进行非极大值抑制,然后根据设定的高阈值T1(150)进行二值化得到边缘图像,将非边缘置位0,边缘点置位255,之后再设定一个低阈值T2(50),如果断点的8邻域内有高于T2的点,则将其也记为边缘,最终得到边缘图像。
(2)遍历(1)得到的边缘图像图像的每一个坐标点(x_img,y_img),以每个点为预设圆心,以步长为1遍历半径radius,检测四个点(x_img-radius,y_img),(x_img+radius,y_img),(x_img,y_img-radius),(x_img,y_img+radius)四个点。
(3)如果这些点附近没有找到边缘点,那么radius=radius+1再搜索,如果所有radius不成立,说明(x_img,y_img)不属于圆心点;
(4)如果满足四个点附近有边缘点,那么再细致搜索(x,y)以radius为半径的16个点附近是否有边缘点,分别是x_img,x_img±radius/4,x_img±radius/2,x_img±3*radius/4,x_img±radius对应的圆上的点,可以事先计算纵坐标的比例值以减少计算量,如x_img±radius/4的纵坐标是事先存储开方计算结果,可以在多次循环下节省很多时间。
(5)如果不满足圆的条件则取radius=radius+1,重复(2)-(4)的步骤。如果找到满足条件的(x_img,y_img,radius),则记录下这组圆参数。最后选择半径最大的圆作为表盘,得到圆心坐标(c_col,c_row)。
(6)以圆心为中心搜索步骤4得到的灰度图像360°范围的每个角度上的灰度累计值,建立对应圆心的灰度数组acc_gray,其中acc_gray[a]指圆心角为a的情况下,当前圆心对应角度a上的像素点的累计灰度值(将圆心角分为360等份)。acc_ptr为对应圆心的累计像素点数组。其中acc_ptr[a]指圆心角为a的情况下,当前圆心对应角度a上的像素点个数,acc_gray和acc_ptr每个元素初始化为0。遍历步骤4中得到的灰度图像中的每一个像素点pt,计算pt与圆心坐标所在的直线的取整角度大小为angle。acc_gray[angle]累计加上pt的灰度值,acc_ptr[angle]累计加1。遍历完图像的所有像素点后,计算acc[a]=acc_gray[a]/acc_ptr[a]。然后计算数组acc最大值的下标a_max,即为当前圆心为标准找到的指针角度。
(7)为避免获取的圆心位置不准的情况,在获取的圆心小邻域内遍历所有点作为圆心重复(2)至(6)的工作,会得到图像的每个像素点对应的三个数组,acc_gray、acc_ptr、acc,为了区分,以坐标(i,j)为圆心建立的数组记为acc_gray(i,j),acc_ptr(i,j),acc(i,j),从而得到平均灰度最大的圆心坐标和对应的最大的平均灰度值对应角度angle_max=maxi,ja_max(i,j),angle_max作为最终识别出的指针的角度。
步骤6,获取指针的读数。
根据步骤5得到的指针对应圆心角angle_max,结合表盘的量程,由于仪表的刻度是均匀间隔的,利用角度比例关系得到读数值其中start表示刻度开始的角度,end表示刻度终止的角度,total表示仪表的量程。
本发明提供了一种自动读取指针式仪表读数的方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (7)
1.一种自动读取指针式仪表读数的方法,其特征在于,包括以下步骤:
步骤1,图像采集及预处理:采集含有仪表正面的图像作为输入图像,读取图像中仪表的示数,并对图像进行颜色空间转换和尺寸变化;
步骤2,分类器的训练:通过预先采集的含有仪表正面的图像,选取含有完整仪表的窗口为正样本,再随机生成不含仪表部分的背景窗口作为负样本,将正负样本尺寸归一化并提取梯度方向直方图HOG特征,作为输入向量,使用线性支持向量机C-SVM进行训练获得分类器;
步骤3,获取仪表部分图像:对步骤1中采集的图像使用滑动窗口,提取每个窗口的梯度方向直方图HOG特征,并使用训练完成的分类器评估每个窗口的得分,选择最优的窗口作为仪表部分的窗口输出,从而得到仪表部分图像;
步骤4,图像的预处理:对步骤3得到的仪表部分图像进行直方图均衡化和滤波操作,得到灰度图;
步骤5,仪表指针和表盘的识别:将步骤4得到的灰度图边缘检测得到边缘图,检测其中的最大圆形即为表盘边缘,获取圆心坐标,再以圆心坐标为基准点检测步骤4得到的灰度图中最有可能的指针点,作为指针所在的直线,得到指针角度;
步骤6,获取指针的读数:根据步骤5得到的指针角度,结合表盘数值信息,计算读数。
2.根据权利要求1所述的方法,其特征在于,步骤1包括:
载入采集到的含有仪表正面的图像作为原图像,将原图像RGB红绿蓝三通道图像转换为单通道的灰度图,并进行尺寸等比例缩小,转换比col_pre和row_pre分别表示变换尺寸前的图像的列尺寸和行尺寸,col_cur和row_cur分别表示变换尺寸后的图像的列尺寸和行尺寸。
3.根据权利要求2所述的方法,其特征在于,步骤2包括如下步骤:
步骤2-1,样本制作:预先采集含有仪表正面部分的图像,选取正好含有完整仪表的窗口为正样本,再随机生成不含仪表部分的背景窗口作为负样本;
步骤2-2,将正负样本归一到相同行尺寸row_win和列尺寸col_win,提取改变尺寸后的图像的梯度方向直方图HOG特征,将图像像素组织成块结构block,每个块结构由细胞单元cell组成,设定梯度方向直方图HOG特征的参数,包括block块的步长winstride,组成block块的cell数cells,统计方向数nbins,block块的列尺寸col_block和行尺寸row_block,每个样本会得到一个维数为 的特征向量;
步骤2-3,将正负样本的标签label分别设定为1和-1,利用步骤2-2所述的每个样本对应的n维梯度方向直方图HOG特征向量和标签label作为训练样本,表示第n个样本的dim维特征向量的1到dim个分量,通过解约束条件yn(wTxn+b)≥1-ξn,ξn≥0,n=1,…,|D|下的最优化问题其中|D|是训练数据集的大小,yn是第n个样本的标记,如果样本图像包含仪表则为1,否则为-1;w是权重参数,b是偏置参数,w和b是优化问题求解的目标;ξn是第n个样本的松弛变量,表示样本不满足约束条件yn(wTxn+b)≥1的程度;C是惩罚参数,表示对不满足约束的样本的惩罚值,常选取一个固定的小常数如1.0;
求解上述的最优化问题即是训练线性支持向量机C-SVM,最终得到一个最优超平面作为分类平面:wTx+b=0,w和b是求解出的参数,x是样本的HOG特征向量。
4.根据权利要求3所述的方法,其特征在于,步骤3包括如下步骤:
步骤3-1,获取待检测图像,将待检测的图像进行尺寸变换和颜色空间转换;
步骤3-2,建立行尺寸为row_win、列尺寸为col_win的滑动窗口,利用滑动窗口,根据步长stride改变窗口位置,从左至右从上至下遍历步骤3-1中得到的图像,根据步长和大小在每一步的位置生成一个窗口,并对步骤3-1中得到的图像进行放大和缩小的尺度变换,在放大缩小后不同大小的图像用相同的步长和窗口大小在每一步长移动后的位置生成一个窗口,从而在滑动窗口大小不变的情况下检测不同大小的仪表,记每次的缩小或放大比例为scale,进行一次放大变换后的图像行数和列数的大小分别为row_cur*scale和col_cur*scale,进行一次缩小变换后的图像行数和列数的大小分别为row_cur/scale和col_cur/scale;
步骤3-3,对步骤3-2生成的每个窗口提取梯度方向直方图HOG特征向量,并送入训练好的分类器根据y=wTx+b进行分类,w和b即步骤2-3中求解的参数,x是窗口图像的特征向量,y是预测值,其值越大,该窗口包含仪表的概率越大,选择其中最大y值的窗口作为仪表所在的窗口,在第一次的尺度下得到最优的窗口位置之后,后续改变尺度的图像上检测窗口不再遍历全图,而只在第一次得到的位置的上下左右30个像素的范围内进行窗口滑动与检测,最终得到所有放缩后尺度的图像上最优窗口的左上角坐标(col_retbest,row_retbest),以横纵坐标顺序;
步骤3-4,获取最优窗口位置之后,窗口对应步骤3-1得到的未缩放的输入的待检测图像图像中的位置为和行列尺寸为 scalebest表示最优窗口对应的图像的放缩比例,根据位置和尺寸在输入的待检测图像的对应位置截取对应尺寸大小的图像部分作为待检测图像中仪表图像的输出结果。
5.根据权利要求4所述的方法,其特征在于,步骤4包括:
步骤4-1,对步骤3得到的仪表部分图像进行灰度化得到灰度图像,对灰度图像进行直方图均衡化,对于灰度值为g的像素点,映射后的灰度为其中Numm是灰度值为m的像素点数目,Num是图像总像素数目;
步骤4-2,进行滤波处理:先进行小邻域中值滤波,灰度图像中像素点A中值滤波后的灰度值为D(A)=med[A1,A2,…,AN],A1…AN是像素点A邻域内的像素点,med表示取中位数,AN表示第N个像素点,再进行双边滤波,双边滤波输出灰度为 求和像素是在坐标(i,j)的设定的邻域内,其中ω是权系数 k,l分别表示像素点(i,j)邻域像素的横坐标的取值和纵坐标的取值即对应行和列的位置,In(i,j)表示位置(i,j)处的像素点的灰度值,σd和σr分别表示空间位置远近上的平滑参数和灰度值上的平滑参数。
6.根据权利要求5所述的方法,其特征在于,步骤5包括如下步骤:
步骤5-1,对步骤4中获得的灰度图进行canny边缘检测:利用高斯平滑,根据高斯分布的特点对像素点灰度值进行变换,X、Y分别表示图像中一个像素的横坐标和纵坐标,σ是平滑参数;再用梯度算子计算水平方向的梯度Gx和竖直方向的梯度Gy,算出每个像素点的梯度值和角度值在每个像素点和其梯度方向上的前后两个像素点进行非极大值抑制,然后根据设定的高阈值进行二值化得到边缘图像,再设定一个低阈值,如果断点的8邻域内有高于低阈值的点,则将其也记为边缘,最终得到边缘图像;
步骤5-2,遍历5-1得到的边缘图像的每一个坐标点(x_img,y_img),以每个点为预设圆心,以步长为1遍历半径为radius,检测四个点(x_img-radius,y_img),(x_img+radius,y_img),(x_img,y_img-radius),(x_img,y_img+radius)四个点,如果这些点附近没有找到边缘点,执行步骤5-3,如果所有radius不成立,表示(x_img,y_img)不属于圆心点,如果满足四个点附近有边缘点,执行步骤5-4;
步骤5-3,将radius更新为radius+1,返回步骤5-2;
步骤5-4,搜索(x_img,y_img)以radius为半径的16个点附近是否有边缘点,分别是x_img,x_img±radius/4,x_img±radius/2,x_img±3*radius/4,x_img±radius对应的圆上的点,如果不满足圆的条件则执行步骤5-5;如果找到满足条件的(x_img,y_img,radius),则记录下这组圆参数,最后选择半径最大的圆作为表盘,得到圆心坐标(c_col,c_row);
步骤5-5,将radius更新为radius+1,返回步骤5-4,
步骤5-6,以圆心为中心搜索步骤4得到的灰度图像360°范围的每个角度上的灰度累计值,建立对应圆心的灰度数组acc_gray,即将圆心角1°到360°每个度数圆心角上的累加灰度值,其中acc_gray[a]指圆心角为a的情况下,当前圆心对应角度a上的像素点的累计灰度值,建立acc_ptr为对应圆心的累计像素点数组,记录每个度数上的像素点总数,其中acc_ptr[a]指圆心角为a的情况下,当前圆心对应角度a上的像素点个数,acc_gray和acc_ptr每个元素初始化为0,遍历步骤4中得到的灰度图中的每一个像素点pt,计算pt与圆心坐标所在的直线的取整角度大小为angle,acc_gray[angle]即角度angle上的累积灰度值,累计加上pt的灰度值,acc_ptr[angle]即角度angle上的总像素点数,累计加1,遍历完步骤4得到的灰度图像的所有像素点后,建立平均灰度数组acc,acc[a]指对应圆心坐标的圆心角为a的方向上所有像素点的平均灰度值,计算acc[a]=acc_gray[a]/acc_ptr[a],然后计算数组acc最大值的下标a_max,即为要找的指针角度;
步骤5-7,在获取的圆心小邻域内遍历所有像素点作为圆心重新执行步骤5-6,得到每个像素点对应的三个数组,acc_gray、acc_ptr、acc,为了区分,以坐标(i,j)为圆心建立的数组记为acc_gray(i,j),acc_ptr(i,j),acc(i,j),从而遍历图像所有像素点得到平均灰度最大的圆心像素点和对应的最大的平均灰度值对应角度angle_max=maxi,ja_max(i,j),a_max(i,j)是以(i,j)为圆心执行步骤5-6得到的指针角度,angle_max作为最终识别出的指针的角度。
7.根据权利要求6所述的方法,其特征在于,步骤6包括:根据步骤5得到的指针对应圆心角angle_max,结合表盘的量程,利用角度比例关系得到读数值其中start表示仪表刻度开始的角度,end表示刻度终止的角度,total表示仪表的量程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810203368.6A CN108564085B (zh) | 2018-03-13 | 2018-03-13 | 一种自动读取指针式仪表读数的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810203368.6A CN108564085B (zh) | 2018-03-13 | 2018-03-13 | 一种自动读取指针式仪表读数的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108564085A true CN108564085A (zh) | 2018-09-21 |
CN108564085B CN108564085B (zh) | 2020-07-14 |
Family
ID=63532506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810203368.6A Active CN108564085B (zh) | 2018-03-13 | 2018-03-13 | 一种自动读取指针式仪表读数的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108564085B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109086763A (zh) * | 2018-07-23 | 2018-12-25 | 国网辽宁省电力有限公司信息通信分公司 | 一种指针式仪表读取方法及装置 |
CN109492573A (zh) * | 2018-11-05 | 2019-03-19 | 四川华雁信息产业股份有限公司 | 一种指针读取方法及装置 |
CN109711400A (zh) * | 2018-11-06 | 2019-05-03 | 华中科技大学 | 一种识别模拟指针式仪表读数的电力巡检方法和装置 |
CN110874596A (zh) * | 2019-11-06 | 2020-03-10 | 中国石油大学(北京) | 一种仪表智能识别预警方法及系统 |
CN112560837A (zh) * | 2020-12-02 | 2021-03-26 | 南方电网电力科技股份有限公司 | 一种指针式仪表的读数方法、装置、设备和存储介质 |
US20210174085A1 (en) * | 2019-12-05 | 2021-06-10 | Saudi Arabian Oil Company | Method and system for obtaining information from analog instruments using a digital retrofit |
CN113639836A (zh) * | 2021-08-11 | 2021-11-12 | 国网河北省电力有限公司电力科学研究院 | 电气设备内六氟化硫气体重量在线测定系统 |
CN113743397A (zh) * | 2021-11-08 | 2021-12-03 | 深圳市信润富联数字科技有限公司 | 工业仪表的数据处理方法、系统、终端设备及存储介质 |
CN114821044A (zh) * | 2022-05-31 | 2022-07-29 | 中煤科工机器人科技有限公司 | 一种基于梯度变换的方形指针式仪表示数识别方法 |
CN115690756A (zh) * | 2022-10-31 | 2023-02-03 | 复亚智能科技(太仓)有限公司 | 一种基于表盘分类和部件颜色、形状特征的仪表读数方法 |
CN118707839A (zh) * | 2024-08-28 | 2024-09-27 | 宝捷时计电子(深圳)有限公司 | 一种指针机芯的自动同步系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007304996A (ja) * | 2006-05-12 | 2007-11-22 | Denso Corp | 入力システム |
CN103528617A (zh) * | 2013-09-27 | 2014-01-22 | 中国人民解放军空军工程大学 | 一种座舱仪表自动识别和检测方法及装置 |
-
2018
- 2018-03-13 CN CN201810203368.6A patent/CN108564085B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007304996A (ja) * | 2006-05-12 | 2007-11-22 | Denso Corp | 入力システム |
CN103528617A (zh) * | 2013-09-27 | 2014-01-22 | 中国人民解放军空军工程大学 | 一种座舱仪表自动识别和检测方法及装置 |
Non-Patent Citations (1)
Title |
---|
吕露: "基于自动识别技术的水表检定系统研究", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109086763A (zh) * | 2018-07-23 | 2018-12-25 | 国网辽宁省电力有限公司信息通信分公司 | 一种指针式仪表读取方法及装置 |
CN109086763B (zh) * | 2018-07-23 | 2021-11-26 | 国网辽宁省电力有限公司信息通信分公司 | 一种指针式仪表读取方法及装置 |
CN109492573A (zh) * | 2018-11-05 | 2019-03-19 | 四川华雁信息产业股份有限公司 | 一种指针读取方法及装置 |
CN109711400A (zh) * | 2018-11-06 | 2019-05-03 | 华中科技大学 | 一种识别模拟指针式仪表读数的电力巡检方法和装置 |
CN110874596B (zh) * | 2019-11-06 | 2023-02-28 | 中国石油大学(北京) | 一种仪表智能识别预警方法及系统 |
CN110874596A (zh) * | 2019-11-06 | 2020-03-10 | 中国石油大学(北京) | 一种仪表智能识别预警方法及系统 |
US20210174085A1 (en) * | 2019-12-05 | 2021-06-10 | Saudi Arabian Oil Company | Method and system for obtaining information from analog instruments using a digital retrofit |
CN112560837A (zh) * | 2020-12-02 | 2021-03-26 | 南方电网电力科技股份有限公司 | 一种指针式仪表的读数方法、装置、设备和存储介质 |
CN113639836A (zh) * | 2021-08-11 | 2021-11-12 | 国网河北省电力有限公司电力科学研究院 | 电气设备内六氟化硫气体重量在线测定系统 |
CN113743397A (zh) * | 2021-11-08 | 2021-12-03 | 深圳市信润富联数字科技有限公司 | 工业仪表的数据处理方法、系统、终端设备及存储介质 |
CN114821044A (zh) * | 2022-05-31 | 2022-07-29 | 中煤科工机器人科技有限公司 | 一种基于梯度变换的方形指针式仪表示数识别方法 |
CN114821044B (zh) * | 2022-05-31 | 2024-05-03 | 中煤科工机器人科技有限公司 | 一种基于梯度变换的方形指针式仪表示数识别方法 |
CN115690756A (zh) * | 2022-10-31 | 2023-02-03 | 复亚智能科技(太仓)有限公司 | 一种基于表盘分类和部件颜色、形状特征的仪表读数方法 |
CN115690756B (zh) * | 2022-10-31 | 2024-01-30 | 复亚智能科技(太仓)有限公司 | 一种基于表盘分类和部件颜色、形状特征的仪表读数方法 |
CN118707839A (zh) * | 2024-08-28 | 2024-09-27 | 宝捷时计电子(深圳)有限公司 | 一种指针机芯的自动同步系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108564085B (zh) | 2020-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108564085A (zh) | 一种自动读取指针式仪表读数的方法 | |
CN109800736B (zh) | 一种基于遥感影像和深度学习的道路提取方法 | |
CN110287932B (zh) | 基于深度学习图像语义分割的道路阻断信息提取方法 | |
Lechner et al. | Remote sensing of small and linear features: Quantifying the effects of patch size and length, grid position and detectability on land cover mapping | |
CN109409190A (zh) | 基于梯度直方图和Canny边缘检测器的行人检测方法 | |
CN111598098B (zh) | 一种基于全卷积神经网络的水尺水位线检测及有效性识别方法 | |
CN108898047A (zh) | 基于分块遮挡感知的行人检测方法及系统 | |
CN110766058B (zh) | 一种基于优化rpn网络的战场目标检测方法 | |
CN110879982B (zh) | 一种人群计数系统及方法 | |
CN105069818A (zh) | 一种基于图像分析的皮肤毛孔识别方法 | |
CN108830331A (zh) | 一种基于全卷积网络的探地雷达目标检测方法 | |
CN108447055A (zh) | 基于spl和ccn的sar图像变化检测方法 | |
CN113177456B (zh) | 基于单阶段全卷积网络和多特征融合的遥感目标检测方法 | |
CN110232387A (zh) | 一种基于kaze-hog算法的异源图像匹配方法 | |
CN107392929A (zh) | 一种基于人眼视觉模型的智能化目标检测及尺寸测量方法 | |
CN109858547A (zh) | 一种基于bssd的目标检测方法与装置 | |
CN103377468A (zh) | 图像处理装置及图像处理方法 | |
CN108428220A (zh) | 静止轨道卫星序列遥感影像海岛礁区域自动几何校正方法 | |
CN109035227A (zh) | 对ct图像进行肺部肿瘤检测与诊断的系统 | |
CN105046701A (zh) | 一种基于构图线的多尺度显著目标检测方法 | |
CN109035300A (zh) | 一种基于深度特征与平均峰值相关能量的目标跟踪方法 | |
CN109191418A (zh) | 一种基于收缩自编码器特征学习的遥感图像变化检测方法 | |
CN109708658A (zh) | 一种基于卷积神经网络的视觉里程计方法 | |
CN108734200A (zh) | 基于bing特征的人体目标视觉检测方法和装置 | |
CN107578424A (zh) | 一种基于时空分类的动态背景差分检测方法、系统及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |