目录

前言

课题背景和意义

实现技术思路

一、方法设计

二、表盘定位方法

二、表盘定位方法

三、CTPN+CRNN网络读取数值与位置

四、示数识别模块

五、实验与分析

六、总结

实现效果图样例

最后


前言

    📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

选题指导:

大家好,这里是海浪学长毕设专题,本次分享的课题是

🎯毕业设计-基于计算机视觉技术的指针式仪表智能识别系统

课题背景和意义

在变电站等有强磁干扰的环境中,数显式、电子式仪表 无法正常工作,因此指针式仪表在此类工作环境中发挥着重 要作用,但指针式仪表读数复杂且人工读数存在一定误差, 所以指针式仪表适用的工业场景并不适合人工读取仪表示 数。综上所述,研究指针式仪表的智能读数具有重要意义。 近年来,国内外研究者针对指针式仪表示数识别提出许 多方法,例如基于 ICM 的指针式仪表读数方 法,利用加权最大类间方差法提取指针表圆弧,最后通过 距离法对极坐标变换后的图像进行读数。利用 Hough 变换裁剪表盘区域,查找刻度线轮廓,并利用最小二 乘法进行拟合,再利用随机采样一致性拟合指针中心,最后 通过指针的回转角度得到示数。基于深度学 习算法检测指针,在指针图像的基础上进行二值化、细化、 霍夫变换检测直线、最小二乘法拟合直线等步骤识别仪表最 终读数。虽然这些研究者对指针式仪表智能读取做出了许多 研究,但仍然面临指针式仪表识别过程复杂,智能读取普适 性低,实时性差等问题。

实现技术思路

一、方法设计

针对上述指针表自动读数方法的不足,本文提出一种基 于计算机视觉技术的指针式仪表示数的快速读取方法,首先 对输入图像应用均值偏移滤波,降低后续计算量 , 再通过改 进的 Canny 边缘检测算法二值化图像,然后利用基于 Hough 梯度法的 Hough 圆检测定位仪表盘质心,其次通过 CTPN +  CRNN 网络读取开始刻度和最大量程的数值与位置,并且基 于区域选择的概率 Hough 直线检测算法提取指针,最后利 用角度法得到仪表示数,完成高精度自动读数,方法的系统 架构与数据流图如图所示。

二、表盘定位方法

为实现指针仪表示数的读取,首先需要对指针式仪表表 盘进行定位,表盘定位由均值偏移过滤、改进的 Canny 边缘 检测算法、应用 Hough 梯度法的 Hough 圆检测三部分组成。

模拟指针 java 模拟指针表 ai识别_python

二、表盘定位方法

为实现指针仪表示数的读取,首先需要对指针式仪表表 盘进行定位,表盘定位由均值偏移过滤、改进的 Canny 边缘 检测算法、应用 Hough 梯度法的 Hough 圆检测三部分组成。

均值偏移过滤

指针仪表表盘定位之前需要借助 Mean Shift 算法的分 割特性将色彩分布相近的元素进行聚类,即收敛到同一点的 起始点归为一类,然后把这一类的标号赋给这些起始点,同 时把包含像素点少的类去掉,这样可以平滑色彩细节,经过 Mean Shift 算法分割后的图像将大幅减少后续的计算量。

本方法应用 Mean Shift 算法在 d 维空间中 n 个取样点 xi 的向量数学形式定义如式(1)

模拟指针 java 模拟指针表 ai识别_课程设计_02

 其中 k 表示落在高维球 形区域所有的取样点,(xi -x) 表示取样点对于 x 的偏移量, Sh 表示以 h 为半径的高维球形区域,Sh 满足关系式(2)。

模拟指针 java 模拟指针表 ai识别_课程设计_03

输入图像的长宽为物理空间,输入图像的 RGB 信息为色彩 空间,图像任取一点作为中心点,构建 5 维球形空间,求得 5 维球形空间中所有取样点相对于中心点的向量之和,移动 迭代空间的中心点到新的位置,此位置可表示如式(3)其中 Mt 为 t 状态下求得的偏移均值, xt 为 t 状态下的中心点。

模拟指针 java 模拟指针表 ai识别_课程设计_04

遍历所有取样点,可以通过计算得到所有种类,收敛到 同一点的点归为一类,将与此类中心点接近的取样点都赋值 为此类中心点的像素值,实现指针式仪表图像的模糊处理。

改进的Canny边缘检测算法二值化图像

传统 Canny 边缘检测算法在对图像二值化时需要人工选 取高低阈值,并且会使得图像边缘变得模糊。所以本文就指 针式仪表示数读取时图像二值化问题,对传统 Canny 边缘检 测算法进行改进,本文改进的 Canny 边缘检测算法流程图如 图所示。

模拟指针 java 模拟指针表 ai识别_python_05

1、双边滤波保边去噪

针对传统 Canny 算法进行边缘检测时易丢失边缘细节 的缺陷,本文使用同时考虑值域与空间域的非线性双边滤波 代替高斯滤波 , 以实现图像去除噪声的同时很好的保留边缘 信息。假设 G(i,j) 为像素点最终输出,I(k,l) 表示中心点像素 值,I(i,j) 表示空间领域内 (i,j) 的像素值,双边滤波的权系数 W(i,j,k,l)最终表示形式为式(4)

模拟指针 java 模拟指针表 ai识别_python_06

最终像素点输出为式(5)

模拟指针 java 模拟指针表 ai识别_计算机视觉_07

2、八领域计算梯度幅值和方向

本文对图像进行双边滤波后,在 3×3 邻域内计算梯度幅 值,即通过图像某一像素的 8 邻域即 x 方向,y 方向,45°方 向和 135°方向的一阶偏导数的有限差分来确定像素的梯度幅 值及方向。 各方向的梯度计算模板使用 Sober 算子,如图所示。

模拟指针 java 模拟指针表 ai识别_python_08

由图的方向模板与双边滤波后的图像做卷积,分别得 到四个方向的一阶梯度分量,根据这四个方向的梯度分量, 重新求得水平方向和垂直方向的差分,从而获得像素点的梯 度幅值和方向。其中水平方向的差分如式(6)

模拟指针 java 模拟指针表 ai识别_模拟指针 java_09

垂直方向 的差分如式(7)

模拟指针 java 模拟指针表 ai识别_课程设计_10

再使用式(8)和式(9)和计算梯度幅 值和方向。

模拟指针 java 模拟指针表 ai识别_python_11

3、非极大值抑制与 Otsu 算法选取阈值

得到梯度幅值与方向后,接着对边缘信息进行非极大值 抑制(NMS),达到边缘细化的效果。之后在 Canny 边缘 检测的基础上加入最大类间方差法,即通过统计图像中像 素点的灰度分布,分割出图像的背景和前景,将区域内灰度 的类间方差最大化,找到使方差最大的阈值,该阈值可以实 现最佳的分割效果。假设最佳阈值为 t,输入图像灰度级为 [0,L-1] ,根据阈值将图像进行灰度级的划分 C0={0,1,…,t} 和 C1={t+1,t+2,…,L-1}, 每个灰度级的比例如式(10)

模拟指针 java 模拟指针表 ai识别_计算机视觉_12

  C0 类出 现的概率如式(11)

模拟指针 java 模拟指针表 ai识别_课程设计_13

 C1 类出现的概率如式(12)

模拟指针 java 模拟指针表 ai识别_模拟指针 java_14

整个 图像以及 C0 和 C1 类出现的均值如式(13)

模拟指针 java 模拟指针表 ai识别_模拟指针 java_15

C0 和 C1 类间 方差 σ2 如式(14)。

模拟指针 java 模拟指针表 ai识别_计算机视觉_16

 找到使方差最大的阈值,将此阈值定义为高阈值,低阈 值为 k 倍的高阈值 kϵ[0.5,0.8]。最后进行边缘连接,当某一 像素点幅值超过高阈值时,则判断该像素点为边缘;当某一 像素点幅值低于低阈值时,则判断该像素点不是边缘点;当 像素点幅值处于高阈值与低阈值之间时,如果该像素点与高 阈值相连则判断该像素点为边缘,否则不是边缘。

应用Hough圆检测定位表盘

得到二值化图像后需要进一步确定圆形仪表盘质心与半 径。圆检测常使用 Hough 圆检测算法,但由于传统的 Hough  变换方法计算量大,计算时间长,并不适合于要求实时性强 的圆检测中。为提高圆检测的速度,本文应用 Hough 梯度 的 Hough 圆检测定位仪表盘质心。通过基于 Hough 梯度 法的 Hough 圆检测,可以将传统 Hough 圆检测计算的三维 空间降到二维空间,大大减低了计算量,使得最终结果可以 满足实时性的要求。主要分为以下几个步骤:

S1. 进行本文改进的 Canny 边缘检测;

S2. 遍历所有边缘,将沿边缘梯度方向的垂直线段所形 成的交点在二维累加器中累加;

S3. 对累计器中计数从大到小排序,只保留计数最多的 位置为圆心;

S4. 计算圆心到边缘点的距离,得到半径。

三、CTPN+CRNN网络读取数值与位置

为适应不同量程的仪表,本文将指针式仪表图像输入到 CTPN+CRNN 网络中进行文字区域的检测与识别。CTPN 网 络可以进行指针式仪表盘横向文本检测,从而得到指针 式仪表所有文字位置,CTPN 网络总体结构与检测效果如图所示。

模拟指针 java 模拟指针表 ai识别_人工智能_17

使用 CTPN 将指针式仪表文字图像进行分割之后,将分 割的文字输入到 CRNN 网络对文本进行识别,CRNN 主 要由 3 部分构成:

CNN:首先将文字区域进行统一放缩,经过一系列卷 积与池化,通过 Map-to-Sequence 提取特征序列,最终输出 Feature Sequence;

 RNN:将 Feature Sequence 输入到两层各 256 单元的双 向 LSTM 网络中,可以得到每个特征向量对应的概率分布 向量,输出由概率分布向量组成的概率矩阵;

CTC:将概率矩阵转化为实际输出的字符,概率矩阵中 每一列的最大值对应的字符作为该列标签,并且对识别的结 果进行合并去冗。

CRNN 网络的总体结构如图所示。

模拟指针 java 模拟指针表 ai识别_模拟指针 java_18

 CTPN+CRNN 网络读取指针式仪表的文本信息以后,只 保留数字进行排序,最小值对应开始刻度的数值与位置,最 大值对应最大量程的数值与位置,CTPN+CRNN 网络检测效 果如图所示。

模拟指针 java 模拟指针表 ai识别_python_19

四、示数识别模块

指针的提取

本文使用改进的 Hough 直线检测进行指针的提取,传 统 Hough 直线检测对每个像素点都进行计数和三角函数运算,运算量大,运行速度慢。为提高指针检测的速度,本文 对传统Hough直线检测进行改进,根据指针式仪表盘的特征, 指针只会落在开始刻度与最大量程刻度夹角之外的区域,可 以选择常数 K 确定所占半径比例,从而减少 Hough 直线检 测的区域面积。

选定区域如图所示,仅将规定区域像 素点带入 Hough 变换,不仅大幅减少了 Hough 直线的计 算量,同时提高了指针检测的准确性和实时性。

模拟指针 java 模拟指针表 ai识别_课程设计_20

 Hough 圆检测的圆半径为 R,开始刻度与最大量程刻度 夹角为 α,K 为选择圆区域的常数,可求得概率霍夫直线检 测的区域面积 S 为式。

模拟指针 java 模拟指针表 ai识别_python_21

基于区域选择的 Hough 直线检测算法流程如图所示, 通过直线检测算法选定区域内所有的线段后,计算所有线段 的长度,找到最长的线段即为指针。 

模拟指针 java 模拟指针表 ai识别_人工智能_22

仪表读数计算

本文仪表读数计算使用了角度法,通过计算仪表开 始刻度和最大量程刻度之间的角度,以及指针与开始刻度之间的角度,计算指针和开始刻度形成夹角在总量程角度的占 比,最后结合仪表的最大量程,计算出仪表的读数,角度法 仪表示数计算示意如图所示。

模拟指针 java 模拟指针表 ai识别_计算机视觉_23

假设开始刻度为点 A,仪表盘的圆心为点 O,最大量程 刻度为点 C,开始刻度与圆心的连线为向量 OA,指针为向 量OB ,指针与开始刻度所成角度 θ 为式(16)

模拟指针 java 模拟指针表 ai识别_计算机视觉_24

开始刻度 与圆心的连线斜率 kA 为式(17)

模拟指针 java 模拟指针表 ai识别_人工智能_25

开始刻度与圆心的连线 截距 bA 为式(18)

模拟指针 java 模拟指针表 ai识别_模拟指针 java_26

指针与圆心的连线截距 bB 为式(19)

模拟指针 java 模拟指针表 ai识别_模拟指针 java_27

若 bA 小于等于 bB,则所求角度为 θ,若 bA 大于 bB,则所 求角度 θ 为 π-θ。同理可求得开始刻度和最大量程刻度之 间的最大角度 φ,结合 CTPN+CRNN 网络可得最大量程 MaxRange,可求得示数 Res 如式(20)

模拟指针 java 模拟指针表 ai识别_人工智能_28

五、实验与分析

实验测试对象为 150℃ 量程的指针式温度表,在实验过 程中将控制温度不断增大,进行多次识别。实验包括正常环 境下指针表读数识别结果与分析、干扰环境下读数识别结果 与分析。

正常环境下指针表读数识别结果分析

正常环境下指针表图像的处理过程如图所示,

模拟指针 java 模拟指针表 ai识别_计算机视觉_29

正常 环境下识别示数实验数据统计见表。

模拟指针 java 模拟指针表 ai识别_python_30

由表可见,在不考虑仪表基本误差和附加误差影响的 情况下,自动读数算法处理结果与实际值的最大相对误差在 0.5% 以内 , 最慢识别时间为 0.45 秒。该误差值与延迟时间 对本实验中所用指针式仪表盘是可以接受的。

干扰环境下指针表读数识别结果分析

在真实的工业环境中,指针表读数可能会受光斑、污点 和暗光等因素干扰。为了测试本文算法的稳定性,模拟真实环境中可能存在的干扰,并进行了实验。干扰环境下 指针表图像的处理过程如图所示。

模拟指针 java 模拟指针表 ai识别_人工智能_31

干扰环境下识别示数 实验数据统计见表。

模拟指针 java 模拟指针表 ai识别_python_32

 由表可见,最大相对误差为 0.59%,最慢识别时间为 0.48 秒。实验表明,对比无干扰情况,干扰环境下本方法的 识别误差有所增加,其中暗光环境下的读数误差较大,但最 大相对误差仍低于 0.6%,说明该方法在一定干扰情况下仍 有较好性能,具有鲁棒性。 由上述可知,本文所设计渐进式指针式仪表盘示数读取 方法已基本满足一定误差范围内的指针式仪表盘示数读取要 求。

六、总结

针对指针式仪表识别过程复杂,智能读取普适性低、实 时性差等问题,本文提出了基于计算机视觉技术的指针式 仪表快速读取示数方法。首先对输入图像进行均值偏移过 滤,再使用本文改进的 Canny 边缘检测算法,然后应用基于 Hough 梯度法的 Hough 圆检测定位仪表盘质心 ; 其次通过 CTPN+CRNN 网络读取开始刻度和最大量程的数值与位置, 并且基于区域选择的概率 Hough 直线检测算法减少了搜索 范围与计算量,取得了较好的检测结果 ; 最后利用角度法得 到仪表示数。

实现效果图样例

 指针式仪表智能识别系统:

模拟指针 java 模拟指针表 ai识别_python_33