




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于OpenCV的模拟仪表指针读数识别系统设计学 院自动化学院专 业测控技术与仪器班 级14070102学 号2011040701057姓 名郑祎伊指导教师徐涛负责教师 徐涛沈阳航空航天大学2015年6月沈阳航空航天大学毕业设计(论文)摘 要随着时代发展,各类工业对于自动化水平以及机器智能化程度的要求不断提高,在这样的时代要求下,数字图像处理技术已经渐渐引入电力系统自动化中来,同时成为越来越重要的组成部分。在电力工业中,指针式仪表仍然由于其精度高,读取容易,可调控等优点占有大量比重。但是由于指针式仪表显示不同于数字信号,无法被计算机读取。在数据记录和指针校准时都是通过人工读取的方式进行,由于人为等外界不可避免的因素,导致读数精度不高,波动性大,这就大大降低了数据读取的准确性。故如何利用计算机图像技术对指针式仪表进行自动判读已经成为一个迫切的问题。尤其是在进行读数校正时。本论文主要研究的是计算机图像采集以及其相关技术,实现一种基于OpenCV的模拟指针仪表读数识别的系统。首先利用CMOS摄像头读取指针式仪表表盘图像,接下来对采集图像进行图像预处理,以便能更好的识别指针读数,最后采用边缘检测和霍夫变换以及相关角度算法,实现指针式仪表的读数的识别和显示记录。在上述算法研究的基础上,利用的是Microsoft VC+6.0开发平台和OpenCV1.0的视觉库联合编程的方式,同时设计了指针式仪表读数自动识别系统的整体软件,实现了指针读数识别这一功能,在进行相关实验时,达到了设定的要求。关键词:霍夫变化;图像处理;指针识别Analog meter pointer reading recognition system design based on OpenCVAbstractWith the development of the times, for various types of industrial automation and machine intelligence level requirements continue to increase, to achieve this era requires, digital image processing technology has been gradually introduced into the power system automation in the past, becoming an important part of increasingly at the same time .In the power industry, the pointer instrument still important due to its high accuracy, easy to read, adjustable, etc. occupy large proportion. However, due to pointer instrument display is different from the digital signals,it cant be read by a computer. When the data recording and pointer calibration are conducted by human-readable way, inevitable due to human and other external factors, leading to read accuracy is not high, large fluctuations, which greatly reduces the accuracy of the data record. Therefore, how to use computer graphics technology for automatic interpretation of the pointer instrument has become a pressing issue. Especially during the reading correction.In this thesis, we are talk about a computer image capture and its associated technology, based on OpenCV analog pointer instrument readings recognition system. Firstly CMOS camera reads the meter dial pointer image, the next image pre-processing of the acquired image in order to better identify pointer read.Finally, edge detection and Hough transform and the relevant angle algorithm, pointer instrument readings identification and display records.Based on the above algorithm the use of the Microsoft VC + 6.0 development platform and a visual library OpenCV1.0 joint programming approach, while the design of the overall software pointer meter readings automatic identification system to achieve function of recognition pointer recognize, during experiments, reaches to the innitial requirements.Keywords: Hough change; image processing; pointer identification目 录1 绪论11.1 课题的提出及研究意义11.1.1.课题的提出11.1.2.课题的研究意义11.2 课题研究背景及现状21.3 论文的主要工作22 模拟仪表指针识别系统的设计32.1 硬件部分32.1.1指针式仪表图像采集环境32.2 软件部分32.2.1软件系统分析32.2.2软件系统结构53 指针式仪表图像预处理63.1 彩色图像的灰度化63.2 图像平滑滤波73.2.1中值滤波法73.2.2邻域平均法94 指针式仪表识别的具体算法理论114.1 边缘检测算法的比较114.1.1梯度算子114.1.2 Canny算子144.2 指针式仪表识别算法154.3 OpenCV中的霍夫变换174.3.1 标准霍夫变换(SHT)174.3.2 概率霍夫变换(PPHT)184.4 表盘读数识别算法的实现195运行结果及分析215.1图像运行结果215.2数据误差及分析21结 论22参考文献23致 谢24附录 程序清单25251 绪论首先介绍指针式仪表读数识别系统的研究目的和现实意义,展示了计算机图像处理技术的发展对于工业检测,工业生产的重要作用。其次,表明课题的研究意义,同时描述课题的研究现状以及国内外发展情况,以强调研究指针式仪表识别系统的重要性。1.1 课题的提出及研究意义由于指针式仪表构造简单,使用方便,价格低廉。因此指针式仪表在工业生产中的应用非常普遍,不仅类型繁多,而且产量也非常巨大。尽管数字式仪表具有高精度,易读性好等特点,但是指针式仪表可以直观的反映出当前测量值变化范围以及变化趋势,并且价格优势明显,故这些指针式测量仪器在工业生产中发挥着不可替代的作用。1.1.1. 课题的提出仪表生产企业以及相关检定部门,需要在工业生产的过程中对仪表误差进行定期检测,以确保仪表符合国家质量规定,为正常生产做出保证。但是目前为止,多数工业生产中还在使用传统的人工检定方法进行检定,这类方法对检测人员提出了很高的要求,需要同时瞄准,读数,记录数据等多项工作,而且受操作员个人经验,水平以及外界因素等影响,存在着低效率高强度,可靠性差等问题。因此,对于我国现阶段所普遍通行的传统检定方法,尽快开发出一种针对指针式仪表的快速检定系统,利用数字图像处理技术,对指针的视觉信号进行处理,完成图像的采集,转换与存储,并定位指针以及计算读数等,同时利用计算机系统实现自动检测一体化,将大大提高我国的仪表生产和检定的水平和效率。1.1.2. 课题的研究意义对于指针式仪表的精度以及质量检测是一个典型的强度大,重复性高的检定过程。由于其简单的操作,检定工作容易在在一定环境中进行检测,因此为指针式仪表识别系统的自动化提供了广阔的前景。由于指针式仪表的人工检定效率非常低且误差大,需要提出新的仪表鉴定系统。此时利用计算机的数字图像处理技术,完成指针读数检定以及识别功能,对于不同仪表进行甄别筛选,以提高生产效率,减少人工消耗,降低生产成本,这对我国的工业水平会产生一个促进作用。1.2 课题研究背景及现状应用数字图像处理技术对指针式仪表读数进行识别和检定在国内外都早有先例,而且方法种类繁多,研究水平也比较成熟,德国、美国等公司已经研制出指针式仪表自动检定系统,可快速准确的对仪表读数进行识别与分析。但是价格颇贵,在国内前景并不被看好,同时也有产权方面的问题,故国内自主研究是将来的必然趋势。目前国内,指针式仪表图像识别的研究最先是由哈工大的李铁桥教授等开始的,研究方向是关于压力表读数的识别;而之后关于多刻度盘水表的读数识别系统是由武汉工业大学的王三武教授等展开的等等;还有对于汽车仪表,飞行器仪表等识别方案的设计和研究。现阶段,国内使用的最多的是光电法对指针式仪表进行读数识别检测,出发信号通过光电效应产生并被计算机接收,因此可获得检测时刻的指针的具体位置,最后经过对比后确定仪表读数。但是该方法稳定性不佳。但仪表的检测、校正在我国有着巨大又广阔的前景,故大力开展相关方面的研究,追赶国外技术,是我国目前发展的必然趋势。1.3 论文的主要工作本论文的研究目的,是应用计算机数字图像处理技术对指针式仪表的读数进行识别,并研究出一种可以代替人工检定的可行性的方案。最终实现指针式仪表的图像采集、预处理、读数判别,并进行数据记录和操作员信息录入等功能。主要研究内容:1.指针式仪表识别系统的总设计;2.图像采集系统的和软件开发平台的调试; 3.指针式仪表表盘的处理和读数识别算法的设计;4.实验数据分析和相关误差分析。2 模拟仪表指针识别系统的设计本论文设计的模拟仪表指针识别系统以软件部分为主体,采用硬件外连设备的方式进行图像采集。2.1 硬件部分采用罗技C310 CMOS摄像头,像素为500万,分辨率达1280*720,接口为usb2.0,支持Windows 7,Windows Vista,Windows XP 等系统,对焦方式为自动对焦,这就为表盘的读取提供了良好的视觉效果。罗技C310摄像头拍照和摄像功能都非常强大,画面分辨率高且清晰,同时具备降噪能力强,较少的画面拖影效果,稳定的图像性等优点。即使使用很长的时间也不会对图像质量和声音清晰度产生影响,另外摄像头可以根据环境的光线明暗自动调节图象明暗的能力,使图像更加清晰,个人比较中意这个功能,因此解决了其他摄像图像过亮或过暗的问题。同时,图像采集格式为RGB格式,通过驱动直接与电脑相连进行图像采集和调试,在摄像头运行的过程中,采集视频为彩色图像,直接被OpenCV的camera采集程序调用画面后完成一次采集过程。2.1.1指针式仪表图像采集环境 指针式仪表的硬件主要有,罗技C310摄像头,计算机一台,通信usb接口,待检测的表盘构成。在图像的采集过程中,摄像头和被检测指针位置需要相对固定以减小误差,位置的每一次变动都会造成采集图像的变形和误差,同时对外界环境如光线和背景的控制要求也颇高,每次条件的变化都会对采集到的图像产生很大的影响,故本文讨论的是,在摄像头无偏移的情况下,对摄像头采集到的指针式图像进行研究。2.2 软件部分2.2.1软件系统分析 软件设计采用的操作系统和软件开发平台:操作系统 采用Win7;编译器采用Visual C+。视觉库采用OpenCV。 OpenCV是一个开源的计算机视觉库,采用C/C+语言编写。OpenCV的设计目标是执行速度尽量快,主要关注实时应用。由于采用优化的C代码,能够充分利用多核处理器的优势。系统主要有表仪表图像采集模块,仪表图像处理模块,仪表示数计算模块三大模块组成。整体软件系统采用的是自上到下的结构,总体工作流程图入图2.1所示。系统软件设计流程如图2.1所示。开始 始系统初始化实时获取表盘图像图像预处理识别检定的指针读数读数显示数据记录图2.1 系统工作流程仪表图像采集系统:使用罗技C310 CMOS摄像头通过usb数据线与计算机连接,OpenCV调用相关的摄像头采集程序,进行图像采集。仪表图像预处理:将采集的图像送OpenCV进行灰度变换,平滑滤波等方式去除噪声,以便更好的进行读数识别。仪表示数计算:通过canny检测以及hough变换等一系列算法识别表盘读数。由以上描述可分析得知,指针式仪表读数的识别最关键的是如何实现读数的自动判读和分析,故本论文主要是针对指针式仪表读数识别方法进行研究,同时为误差计算提供数据。2.2.2软件系统结构指针式仪表读数识别系统由计算机,高分辨率CMOS摄像头,软件驱动,通信接口,数据存储等构成。系统结构入图2.2所示。该系统的控制中心是计算机。通过在计算机上的开发平台对摄像头实现数据采集,然后通过图像处理后,可计算出仪表盘当前的示数,并实时将数据保存到预备的txt文档中,以便后续的误差分析等工作的进行。计算机图像显示数据显示数据库图像采集设备图像处理软件键盘数据录入通信接口图 2.2 指针式仪表读数识别系统结构3 指针式仪表图像预处理本论文设计的模拟式指针仪表读数识别系统对图像做预处理,是整个图像处理过程的前提和先决条件。由于图像是由摄像机从外界直接采集,加上输入设备以及外部环境的干扰,导致采集的数据图像中含有噪声,造成图像的质量降低,清晰度降低等影响。若是从这样的图像中提取特征进行指针读数识别,将产生较大的误差且效率低下。故在对指针图像进行识别之前,必须通过预处理去除噪声、失真等影响。图像预处理包括图像的灰度化以及中值滤波等。3.1 彩色图像的灰度化摄像头采集的图像,在计算机中是以数字矩阵为存储形式记录的。即是,矩阵中的一个数字就代表着图像中的一个像素点。在灰度图像中,仅仅含有每个像素点的亮度信息,矩阵值仅仅表示像素的暗亮程度。同时灰度值的取值范围为0255,即灰度值为255表示白色,若是为0则代表黑色。可以看出,更具像素值等级的不同,被均匀的分为256个亮度等级。而由罗技C310摄像头采集的图像数据格式是以RGB彩色模型为基础的。同时在数字图像处理技术中,常用的是面向硬件的模型, RGB(红、绿、蓝)模型。这一类模型现在非常广泛的应用于摄像机和监视器中。在RGB 彩色模型中,图像像素点全部是由红(R)、绿(G)、蓝(B)三个图像的分量组合而成的,同时每一个分量图像都是其原色图像。三幅分量图像同时在荧光屏上混合显示将会产生出一幅合成的图像,这就是我们人眼所观察到的彩色图像。因此包含更多信息的彩色图像将在图像识别时消耗更多的资源和时间,严重降低了计算机识别系统的效率和准确性。因此为了提高指针式仪表的识别准确率以及效率,必须先对采集的图像进行灰度化。彩色图像的灰度化,常用方法是分解各个像素点中的像素信息,由此提取每个像素的R,G,B颜色单量值,然后利用公式(2-1)计算每点相应的灰度值: (2-1)其中,是转换后点的灰度值。这一公式所表示的方法称为加权法。其他方法还有诸如均值法,最值法等。综合以上:在数字图像处理技术中,使用灰度化对彩色图像进行处理,一方面减轻了计算机cpu负担,另一方面则减少了计算量以及处理时间,较大提升了图像识别的效率。故在图像处理中,一般优先将采集的彩色图像转化为灰度图像,这使得接下来的计算更加简便。图像灰度化前后效果对比如图3.1所示。图3.1 灰度化后图像3.2 图像平滑滤波由上一节介绍了对于图像进行灰度处理后,为了可以继续提高图像识别质量和准确度,依然需要其他的图像增强方法。如下面介绍的平滑滤波。平滑滤波即是对低频增强的空间域滤波技术。它有两个目的:一是模糊;另一是消除噪音。而空间域的平滑滤波算法,通常是应用平均法进行的,即是求出相近像素点的平均亮度值。因此,外部环境等各种因素的影响,在图像的采集过程会不可避免的产生各类噪声点。但是由于噪声的存在,会使得计算机在仪表读数识别过程中出现误差等问题,影响系统的正确率。故在灰度变换后,还需要对图像进行平滑处理。3.2.1中值滤波法 中值滤波是以排序统计理论为基础的,一类可以较好抑制噪声点的非线性信号的图像处理技术,其原理是把图像或序列者的一点的像素值用该点的一个邻域中,所有点值排列的中值代替。从而让相邻的像素接近的真实值,以此清除孤立的噪声点。具体的方法为利用某种结构的二维滑动模板,并将模板里像素按其像素值的大小进行排列,以此来产生单调的二维数据序列。所以利用中值滤波算法就可以较好的对图像进行平滑处理。对图像的中值滤波算法公式定义为: (3-1)在公式(3-1)中,图像平面的窗口定义为W;m为窗口的水平方向尺寸,n为窗口垂直方向尺寸;是图像目标中心点的像素值,坐标为;同时以为中心,平面窗口W范围内像素点灰度值的中间值,即的灰度值。中值滤波作为一类非线性的滤波器,并不依赖于邻域内与典型值差别较大的数值,故能有效的去除噪声,同时保持图像的细节。因此在识别过程中,中值滤波可以克服线性滤波方法带了的图像细节模糊等缺点,滤掉噪声点,有更好的应用效果。具体的算法实现步骤如下:(1) 首先建立一个的滤波窗口,其中为奇数,然后利用该窗口按先行后列的方式对像素点进行逐个滑动。(2) 每一次移动一个点,然后对窗口内的数字信息按值进行排序。(3) 用排序后得到的中间值代替窗口中心位置的原始值。(4) 继续滑动窗口,重复步骤(2)、(3)。指针式图像的噪声源主要是由于图像采集过程中,摄像头采集到表盘反光产生的光点和硬件图像采集中本身存在的不可避免的噪声。图3.2为经过中值滤波后得到的指针表盘图像。图3.2 中值滤波处理后的图像3.2.2邻域平均法 邻域平均法与简单的图像平滑操作不同,在它对邻域中不同像素点进行平滑处理的同时,将对不同位置的像素赋予不同的权值。具体的操作过程如下:(1) 在一个的窗口范围中,首先开始计算总共个像素灰度的加权均值。(2) 用该均值代替窗口中每一像素点的原灰度值。(3) 依次重复步骤(1)、(2)。邻域平均法的一般表达式为: (3-2)公式中, 是原像素值, 则是经过加权后的新的像素值, 为邻域像素点的灰度值, 则表示加权值。同时为了确保图像变换前后的一致性,需要保证所有加权值 的总和为1,即是: (3-3)在图像处理的过程中,加权值的合集一般以矩阵形式表示;而通常保存加权值序列的矩阵也称之为模板。本文采用的是高斯模板,模板矩阵如下: (3-4)图3.3为经过邻域平均滤波后得到的指针表盘图像。图3.3 邻域滤波后的图像4 指针式仪表识别的具体算法理论4.1 边缘检测算法的比较在数字图像处理的过程中,很多情况下都需要对图像进行计算分析。利用计算机处理图像的目的主要是为了更满足人眼的观察需求并且希望计算能够更好地识别图像。图像分割通常经过以下原理来实现:(1) 边缘检测法:首先对图像中的边缘像素点进行检测,然后将边缘点连接成轮廓。(2) 区域分割法:根据图像的数字特征,把各个像素分类到不同区域中,例如灰度阈值法。边缘是采集的图像上灰度变化最明显的地方,所以传统的边缘检测,就是利用了这个特点,因而对图像的各个像素点进行一阶微分或者求二阶微分,以此确定边缘的像素点。由基本的数学知识可知,一阶微分的图像的峰值正好处于自身图像的边缘点上;而二阶微分图像的过零点则处对应着图像的边缘点。又根据图像处理的特点,在处理图像的时候,经常采用差分的方法以替代导数的运算。因此对于图像的一阶导数运算,又同时具有固定的方向性,所以只能检测出某一特定方向的边缘,故不具有普适性。因而为了克服这一缺点,我们便定义图像的梯度为梯度算子。梯度算子是图像处理中最为普遍的一阶微分算法。其最基本的性质是其梯度的方向正好是在图像灰度最大变化率上,因此恰好能够反映图像边缘上灰度的变化。4.1.1梯度算子 1.Sobel算子该算子主要用于边缘检测方面,它是通过离散型的差分算子,从而计算出图像亮度函数的梯度近似值。同时,该算子是典型的一阶导数的边缘检测算子,因此该算子中便引入了于局部平均的运算类似的算法,故对噪声点也具有平滑作的用,该算子能够很好的消除噪声的影响。另外Sobel算子对不同象素的位置的影响做了加权,所以与Prewitt算子、Roberts算子相比较效果更佳。Sobel算子含有两组3x3的矩阵,即为为横向模板及纵向模板。将模板与图像作平面卷积,便可得出横向及纵向的亮度差分的近似值。在实际使用中,常用如下两个模板来检测图像边缘。 为了检测水平边沿,其横向模板为:(4-1)检测垂直平边沿,其纵向模板为: (4-2)图像每个像素的横向及纵向梯度近似值可用以下的公式结合,计算梯度的大小。 (4-3)然后可用以下公式计算梯度方向。 (4-4) 在以上公式中,如果角度等于零,则代表图像在此处有纵向边缘,即左边比右边更暗。所以Sobel算子的不足之处是没有把图像的主要部分和次要部分(背景)严格地分开来,因为Sobel算子并没有严格地遵循人的视觉特征,所以某些情况下提取的图像轮廓并不能令人满意。下图4.1为经过Sobel算子处理后的图像。图4.1 Sobel算子处理后的图像2.Roberts算子Roberts算子是一种最为简单的算子。是一种运用局部差分算子来寻找图像边缘的算子,它运用的是通过对角线方向相邻两像素之差来近似梯度幅值以达到检测边缘的目的。同时其检测垂直边缘时候的效果要较检测斜向边缘更好,且定位精度更高一些,但对噪声很敏感,无法消除噪声带来的影响。此算子是在1963年,由Roberts提出的寻找边缘的算子。Roberts边缘算子是一个非常简单的2x2的模板,运用的是在对角上挨着的两个像素的差值。从图像处理后的显示效果看来,边缘定位较为准确,但对噪声很敏感。该算子适用于噪声影响小且有明显边缘的图像进行分割。Roberts边缘检测算子也是一种运用局部差分算子以搜寻边缘的算子。但是Robert算子图像处理后结果边缘不是很平滑。惯例上来说,因为Robert算子经常会在图像边缘靠近的区域内产生较宽的影响,所以采用上述算子检测图像的时候,边缘图像常需做细化处理,因此其边缘定位的精度不是很高。3Prewitt算子Prewitt算子是一种简单的一阶微分算子的边缘检测,该算子利用的是像素点上下、左右相邻点的灰度之差,从而检测出达到极值的边缘,同时可以去掉部分所谓的假边缘,而且该算法对噪声还有平滑的作用。原理则是在选中的图像中运用两个方向的模板并与图像进行邻域卷积来完成的,其中一个是检测水平边缘的方向模板,而另一个是检测垂直边缘的。对数字图像,Prewitt算子的定义如下: (4-5) (4-6)则 。传统的Prewitt算子认为:凡灰度值大于或是等于阈值的像素点即为边缘点。那么阈值T就要选择合适的值以达到更好的处理效果,若,则(i,j)为边缘点,P(i,j)为边缘的图像。但是这种判定是不甚合理的,因此会对边缘点产生错误的的误判,因为很多噪声点的灰度值也很大,同时也有灰度值较小的边缘点,这种情况下图像的边缘反而会丢失。Prewitt算子对噪声有抑制作用,其原理是利用像素的平均,但是这种方法相当于对图像的进行低通滤波,故Prewitt算子对边缘的定位是不如Roberts算子的。但是平均能抑制或者消除噪声的影响,故Prewitt梯度算子法就是首先求出平均,接下来求差分以便于求出梯度。水平和垂直梯度模板分别为:检测水平边沿横向模板: (4-7)检测垂直平边沿 纵向模板: (4-8)该算子与Sobel算子相类似,仅仅是权值发生了改变,但是二者实现起来其功能还是有所不同的,一般来说Sobel算子要比Prewitt算子更好的检测图像边缘。4.1.2 Canny算子1986年,Jhon Canny提出了一个很好的边缘检测算法,即现在被称为Canny算法的边缘检测算子。Canny算子是一类比较新的边缘检测算法,边缘检测性能可以说是上述几类算法中最优的。Canny边缘检测是根据对信噪比与定位乘积进行测量,进而得到最优化的逼进算子,也就是Caany算子。这与LoG算法类似,也是属于平滑在先,求导在后的方法。使用Canny算法,必须满足两个条件:(1) 能够有效地抑制噪声点。(2) 能尽量精确定位边缘的位置。Canny边缘检测算法的步骤如下:(1) 求出高斯滤波器与图像的卷积:(2) 使用一阶有限差分来计算出两个阵列P和Q的偏导数:(4-9)(3)(3) 幅值和方位角: (4-10) (4-11)(4) 取阈值:将低于阈值的所有值幅值为零后,将得到图像的边缘阵列。若是阈值取得过低,得到过多的假边缘,肉眼即可发现本该非边缘的区域,被边缘检测的边界填满,若是阈值太高,则会丢失部分轮廓,不能找全所有的边缘,故选择用两个阈值,分别设为上下限,这样可以更好地进行边缘检测。图4.2 canny算法处理后的图像4.2 指针式仪表识别算法在计算机视觉识别的过程中,若需要识别指针读数时,则需要先识别出指针的位置以及刻度线。目前为止,国内外对于这一问题的解决算法主要有,最小二乘法、Hough变换法、中心投影法等,或是取其中两个或多个综合运用。本论文主要研究高效率、抗干扰力强的Hough变换。霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫变换于1962年由Paul Hough 首次提出,后于1972年由Richard Duda和Peter Hart推广使用,经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别,多为圆和椭圆。霍夫变换运用两个坐标空间之间的变换将在一个空间中具有相同形状的曲线或直线映射到另一个坐标空间的一个点上形成峰值,从而把检测任意形状的问题转化为统计峰值问题,本节中介绍hough变换检测直线的原理和检测结果。显然,一条直线在直角坐标系下满足方程: (4-12)其中,k为斜率,b为截距。 所以Hough变换的核心理念是将该方程的参数和变量进行对换,利用x、y作为已知量,k、b作为变量坐标,故在直角坐标系下的直线方程在参数空间则表示为点(k,b),即其中一个点在直角坐标系下可表示为一条直线,其中(k,b)则是该直线上的任意一点。于是为了方便数据计算,我们便将参数空间的坐标表示为极坐标下的和。因为同一条直线上的点,对应的极坐标(,)是一致的,故我们可以首先对图片进行边缘检测,然后对图像上每一个非零像素点,可以在参数坐标下变换成为一条直线,所以在直角坐标下分布在同一条直线的点,就可在参数空间产生多条直线,并同时内交于一点。因此该原理可以用于图像的直线检测。Hough变换的步骤如下:(1) 量化参数空间,在的极坐标中,定义域内分为m,n等份,同时的取值,并设定对应的而维族下标;(2) 运用Hough变换对图像中全部像素进行数据计算,在经过Hough变换后,若与相对应,则对该像素值加1;(3) 在所有获取的数组中,对其元素值大小进行比较,以便于寻找最大值,这个最大值则是直线上点对应的方程的参数。则直线方程表示为: (4-13)下图4.3为参数空间的变换结果:图4.3 参数空间的变换结果4.3 OpenCV中的霍夫变换在本文讨论的Hough变换是基于视觉库OpenCV的一类算法,OpenCV支持三种不同的霍夫线变换,它们分别是:标准霍夫变换(Standard Hough Transform,SHT)和多尺度霍夫变换(Multi-Scale Hough Transform,MSHT)累计概率霍夫变换(Progressive Probabilistic Hough Transform ,PPHT)。因此在OpenCV中可以使用同一个函数的两类不同算法。而HoughLinesP函数用于调用累计概率霍夫变换PPHT。累计概率霍夫变换执行效率很高,所有相比于HoughLines函数,我们更倾向于使用HoughLinesP函数。下面将对标准霍夫变换和累积概率霍夫变换进行算法比较。4.3.1 标准霍夫变换(SHT)OpenCV中使用函数cvHonghLines2进行函数调用。通过此函数即可找出经过标准霍夫变换的二值图像的线条。其调用代码如下。CvSeq* cvHonghLines2(CvArr* image, void* line_storage, double rho, double theta, int threshold,double param1 =0, double param2 =0 );Image:InputArray格式类型,输入8-比特、单通道的(二值)图像。line_storage:InputArray类型的lines,存储算法检测到的线段,格式是序列或者单行/单列矩阵。rho:double型,与像素相关单位的距离精度。theta:double型,弧度测量的角度精度。threshold:int类型,阈值参数。若相应的累计值大于 threshold,则函数便会返回的这个线段。param1 和param2则为与变换方法有关的参数,在标准变换中均为0。标准霍夫变换的优点是阈值可调以满足不同图像的直线检测需求,但是是对图像的全面检测,非常耗时,耗费计算机CPU资源,需要进行大量计算以比较后得出最后的直线,这种情况下,虽然准确度可靠度高,但是时间上会有所消耗,故对于指针式仪表盘这类不断变化的,需要快速检测的仪器来说,实用性就较低了。下图为经过标准霍夫变换后的指针式表盘的图像,图中4.4的直线线条即为标准霍夫检测出的直线线段。图4.4 标准霍夫变换检测4.3.2 概率霍夫变换(PPHT)OpenCV中使用函数cvHonghLinesP进行函数调用。此函数在HoughLines的基础上,在结尾处添加了一个代表Probabilistic(概率)的P,即表示它可以应用累计概率霍夫变换(PPHT)来画出二值图像中的直线。其调用代码如下:CvSeq* cvHoughLinesP(InputArray image, OutputArray lines, double rho, double theta, int threshold, double minLineLength=0, double maxLineGap=0 );前五个参数的含义与标准霍夫变换均一致。minLineLength:double类型,默认值为0,表示最短的线段长度,即这个设定参数短的线段就不会被显示出来。maxLineGap:double类型,默认值为0,可以将同一行点与点之间连接起来的最大的距离。本论文直线识别算法采用的即是累积概率霍夫变换,该算法主要是通过快速的小段的直线检测来达到直线是别的目的,并不是像标准霍夫变换那样遍历所有像素点进行比较找寻直线,而是以概率的方式寻找直线,这样大大提高了计算机的运算效率,找出的直线一般多而短,这时候就需要调节阈值来达到效果最优了。下图4.5为经过累积概率霍夫变换后的指针式表盘的图像,图中的直线线条即为累计霍夫检测出的直线线段。图4.5 概率霍夫变换检测4.4 表盘读数识别算法的实现上一节已经介绍了两种应用于OpenCV的基于霍夫变换的改良算法,即是标准霍夫变换和累积概率霍夫变换。这两种变换方式各有优劣,在指针识别的过程中,本文采用的是能够通过检测出的直线来区分上下象限的累计概率霍夫变换。读数识别算法则是利用霍夫变换后得到的直线上的点集,每个点集的坐标为,这些坐标存储在OpenCV函数的cvMemStorage中,在使用的时候,任意将两个点的纵坐标和横坐标之差的结果相除,即可得到被检测出直线的斜率。 (4-14)知道斜率后通过弧度角度公式换算可得出直线的偏向角,即指针的偏向角。 (4-15)到这里基本原理以全部介绍完了,但是仪表是一个圆盘,有不同的象限,对于霍夫变换来说,即使是不同的指针位置,但是只要是在一条线上,例如9点钟方向的指针和3点钟方向上的指针斜率是一样的,这种情况下就没法正确的识别正确的指针读数了。故下面将引入一种区分表盘图像上下限的方法。我们都知道,一副图像是由各个像素点构成的,比如说,本文采用的摄像头采集的图像分辨率是1280*720的,那么就是横向1280个像素点,纵向720个像素点,采集图像的时候,必定是纵向分辨率和表盘直径(表盘是圆形)相当,那么我们为了识别准确便将图像分成上下两部分,即纵方向上半部分0360像素,下半部分360720像素。利用区分公式如下: (4-16)若小于360,则图像为上半部分,反之则为下半部分。假设表盘为均匀的,可识别的示数为0100,识别角度为。1. 上半部分识别算法首先将上半部分分为左右两个象限,若指针出现在左象限,则斜率k大于0,那么读数c计算公式为: (4-17)若指针出现在右象限,则斜率k小于0,那么读数c计算公式为: (4-18)注意这里的为负值。2. 下半部分识别算法下半部分同样先分为左右两个象限,由于表盘是制的,故需要注意一下读数算法。指针出现在左象限,则斜率k小于0,读数c计算公式为: (4-19)注意这里的也为负值。若指针出现在右象限,则斜率k大于0,那么表盘读数为: (4-20)以上是读数识别的具体实现算法。那么为了达到读数识别的目的,两类霍夫变换哪一种能够实现设想的识别算法呢?下面的对比图4.6清晰的显示出了对同一图像,两类不同变换得出的结果:图4.6 两种霍夫变换的比较可以从以上二图看出,左图的标准霍夫变换检测的直线贯穿了整个图像,划过了表盘的中心点。而右边的累积概率霍夫变换仅仅只检测出指针所在的直线部位。由于上面介绍的识别算法用来区分上下部分的方法:是通过判断直线上纵像素点的均值是否大于图像纵坐标中点(即360像素点)来判断的。那么通过这个图,我们可以很容易得出需要的变换方法,累计概率霍夫变换。标准霍夫变换直线贯穿了整个表盘,故不具有识别价值。综上所述,本文采用的是与累积概率霍夫变换相结合的示数识别算法。5运行结果及分析5.1图像运行结果5.2数据误差及分析结 论本论文设计的基于OpenCV的模拟仪表的读数识别系统,整个设计流程包括系统整体思路分析、任务书要求的最终确定以及系统实现的软件平台的确定,还有整个具体搭建、连
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西安职业技术学院《软件设计V:软件工程导论》2023-2024学年第二学期期末试卷
- 南通大学《小学心理辅导设计》2023-2024学年第二学期期末试卷
- 新乡工程学院《大数据挖掘及应用》2023-2024学年第二学期期末试卷
- 宜昌科技职业学院《晶体光学实验》2023-2024学年第二学期期末试卷
- 四川体育职业学院《电工电子》2023-2024学年第二学期期末试卷
- 西安理工大学《虚拟仪器实践》2023-2024学年第二学期期末试卷
- 西安科技大学《实验诊断学见习》2023-2024学年第二学期期末试卷
- 广州美术学院《外科护理学(Ⅱ)》2023-2024学年第二学期期末试卷
- 中华女子学院《电子商务基础与应用》2023-2024学年第二学期期末试卷
- (高清版)DBJ 08-56-1996 建筑幕墙工程技术规程(玻璃幕墙分册)
- 浙江宁波镇海区2025届中考生物对点突破模拟试卷含解析
- 2025届八省联考语文试卷评析及备考策略 课件
- 脱硫塔拆除施工方案
- 北京二十中2025届高考英语二模试卷含解析
- 《高速公路电动汽车清障救援作业规范》
- 五年级下册异分母分数加减法练习200题有答案
- 急性心衰的急救护理与流程
- 我的家乡江西吉安
- 肺栓塞病人的术后护理
- 国开2024年秋《心理健康教育》形考任务1-9答案
- 电力运维管理平台方案设计
评论
0/150
提交评论