基于Matlab刻度盘识别角度计算
- 整体算法步骤如下:
2.1 读取图像
2.2 图像预处理(见代码preprocess.m)
2.2.1 图像灰度化
2.2.2 图像滤波
2.2.3 图像增强
2.2.4 背景剔除,只保留仪表盘部分(见代码segmentImage)
2.2.5 图像二值化
2.2.6 图像边缘提取
2.3 图像直线提取并计算角度和读数(见代码compute.m)
2.3.1 对图像进行hough变换提取指针所在直线
2.3.2 计算直线的角度
2.3.3 根据角度求出读数
基于Matlab刻度盘识别角度计算
基于图像处理的指针式仪表读数识别系统包括仪表图像预处理、表盘的分割和定位、读数计算等部分。
利用MATLAB对指针式仪表读数识别系统中的仪表图像预处理、表盘的分割和定位、读数计算等核心部分进行研究,并提出一种基于图像处理的指针式仪表读数识别系统的实现方法,通过对一定数量的样本进行仿真实验,可以有效地实现指针式仪表读数的识别。
首先要确定指针式仪表读数识别系统的总体方案设计,包括仪表图像预处理、表盘的分割和定位、读数计算等核心部分的算法,并且通过MATLAB软件实现指针式仪表读数识别系统的仿真程序,最后还要通过图形化用户界面GUI设计,实现系统仿真、调试与结果分析。
1、图像预处理
图像预处理的目的是去除图像上的噪声,减少图像的信息,简化运算,为图像处理打好基础。图像预处理包括:图像滤波去噪,图像增强,图像二值化,边缘检测与图像检测。
2、图像增强
图像增强是以改善图像的视觉效果为根本目的的,在采集图像的过程中,特别是在工厂中,光照条件对图片质量的影响十分明显,而拍摄的过程中可能会出现曝光过度或者曝光不足的现象,这样得到的图像将会是模糊的,表盘上的指针刻度区域与背景区域的区分不是很明显,不利于仪表图像的识别。为了使表盘上指针刻度区域与背景区域的界限变得明显,需要对图像进行空间域的图像增强。空间域的的图像增强主要有两种方式,直方图的均衡化处理和灰度变换,本设计中采用的是灰度变换。灰度变换的变换函数有三种,包括线性变换、非线性变换以及分段线性变换,三种变换函数各有特点,应根据图像的特点已经应用的场合选择相应的函数。本设计中采用的是分段线性变换法进行图像灰度的对比度增强。
3、图像二值化
进行完图像增强后的图像是灰度图像,灰度图像的每个像素都可以在0-255之间取值,每个像素都可以有如此多的取值,这样的图像计算和处理起来十分的麻烦,而且容易出错,所以,就要对图像进行二值化处理,使图像的每个像素只能取0与1两个值,“0”作为目标区域,“1”作为背景区域,反之,亦可以,这样计算将变得相对简单,也不容易出错。用来划分背景区域和目标区域的那个灰度值就称作为阅值,大于阙值的像素值全部设为1,小于阙值的则全部设为0。
4、图像边缘检测
对于图像处理来说,边缘检测是必须的。因为从边缘的定义上就可以看出,边缘是图像的重要的基本特征。边缘蕴含着图像的方向、阶跃性质与形状重要的信息,而这些信息十分的重要,它可以应用在在图像分割、特征提取、图像分类、图像配准以及图像识别中。图像边缘可以分为两大类,一类是阶跃状边缘,另一类是屋顶状边缘,其中两边灰度值有明显的变化的是阶跃状边缘;而在灰度减小和增加的交界处的是屋顶状边缘。首先通过利用边缘增强算子,来突出图像中局边缘,然后再定义像素的“边缘强度”,最后通过设置阙值来提取边缘点集是边缘检测的基本的思想。边缘检测方法有Sobel算子法、Robert算子法、PreWltt算子法、LOG算子法、Canny算子法、Zerocross算子法以及二值图像边缘检测法等。这些算法各有特点,适用的条件也不一样。本设计中采用的是Sobel算子法。
5、指针识别
指针的识别可以说是识别读数最为重要的环节,仪表的读数都是由指针决定的,指针在采集图像的过程中会连续的变换指向,在摄像头与表盘无相对运动的情况下,摄像头采集到的指针位置不同的两幅图像,指针也可以看作一条直线,而且比其他刻度线都要长很多,所以可以采用霍夫变换来检测指针,以及识别其他的刻度。霍夫变换在图像处理中一种应用很广泛的识别几何形状的方法,以霍夫变换额、为原理,衍生出许多其他的算法,但是从黑白图像中检测直线或者线段是最基本的霍夫变换。本设计中指针检测的主要思路为,首先通过霍夫检测检测出所有的直线,包括所有的刻度和指针,而指针则是所有直线中最长的。
6、读数计算
仪表表盘的读数计算是整个系统中最为重要的部分,在现有的研究中,指针读数的计算方法有两种:距离法和角度法。
距离法首先会找到指针与刻度弧线的交点,然后计算该交点与其最近的刻度的距离来得到指针读数D。但是利用距离法计算指针读数的系统具有很强的局限性,且十分脆弱。所以本文将采用角度法进行读数计算。角度法通过计算指针直线的角度来计算指针读数。预先建立坐标系,以指零指针的方向为X轴正方向,测量指针指向最大刻度值M(可以用任意已知刻度值代替最大刻度值)时的方向与指针指零刻度线时方向的夹角β,然后计算指针直线与指零指针的夹角α,最后求得指针读数D。角度法相对于距离法要更加简单,且对噪声不敏感,即使刻度线有所缺失,也能进行精确的识别。