仪表读数识别算法的开发——1. 整体思路

本专题导航,Click Me

文章目录

  • 仪表读数识别算法的开发——1. 整体思路
  • 前言
  • 一、目标是什么
  • 二、实现的思路
  • 总结

前言

前面两章内容已经完成了:

  1. 在树莓派和Ubuntu上配置Qt + OpenCV的交叉编译环境
  2. 各模块的基本实现

可以说是准备工作和硬件模块的驱动已经完成,地基已经打好了。接下来就进入到核心的图像识别算法部分,开始建楼。
这一节不介绍详细的算法实现,而是先看一下算法实现的整体思路(你也可以认为是“技术路线”)。

一、目标是什么

在解释算法实现之前,我们要先明确目标是什么,也就是要实现什么样的图像处理效果。
要做仪表读数识别,就是要在一张图片中,找到仪表的数字显示区域,然后把数字显示区域中的显示内容识别出来,最终得到一个与读数相同的字符串,像下面这张图这样。

二、实现的思路

基于图像处理的仪表读数识别主要包括图像预处理、数字显示区域分割、图像阈值分割、字符分割与字符识别五个步骤。处理的过程大概是这样的。

具体来说:

  1. 图像预处理
    图像预处理主要是对图像进行畸变校正、滤波、直方图均衡化、高低光修复等处理,以提高图像质量方便后续的图像分割与数字识别。
  2. 数字显示区域分割
    数字显示区域分割则是在已经检测到的仪表所在区域的基础上进行进一步分割,得到数码管或液晶屏的显示区域,其具体方法主要根据图像特点进行选择。
  3. 图像阈值分割
    图像阈值分割即图像二值化,其阈值可以是全局阈值也可以根据邻域计算局部阈值。
  4. 字符分割
    字符分割即在数字显示区域分割和图像阈值分割的基础上对每个字符进行分割。
  5. 字符识别
    对每个分割后的字符进行识别。

下面用表格直观、简要地给出每个步骤我所使用的方法,以及选择这个方法的原因。(由于图像预处理方法要根据获取到图像的质量确定,所以就不在表格中呈现了。)

步骤 现有方法 所用方法 选择原因
分割数字显示区域 利用图像的形状、颜色特征,基于边缘提取、筛选的传统图像处理方法;深度学习的方法。 传统的图像处理方法 用深度学习的方法跑网络、训练模型虽然方便,但其推理时间是我预期的2~3倍,树莓派的算力也确实有限,遂放弃;传统的方法所需要的处理时间能够完全满足我的需求,最后识别一张图片中3个仪表的数显内容可以控制在260ms以内。但是用传统的方法很难考虑到所有的情况,适配性欠佳,因此后期的现场调试就尤为重要。
图像二值化 全局阈值法(OTSU、三角法)和 局部阈值法 全局阈值法(三角法) 目前仅用全局阈值法就能够取得较好的效果,且现场光照条件较均匀稳定。
字符分割 投影法等 投影法 与手写字符不同,数码管显示的字符形状规则,但同时也具有笔画不连续的特点。针对这样的特点,投影法是是应用较多的一种方法。
字符识别 模板匹配法、穿线法、基于不变矩信息融合及神经网络分类器的方法、KNN算法、K-Means算法等 穿线法 数码管显示字符的一致性好,特点明确。

总结

今天的图片吃了可爱多。

三、仪表读数识别算法的开发——1. 整体思路相关推荐

  1. 巡检机器人中的指针式仪表读数识别系统

    巡检机器人中的指针式仪表读数识别[MATLAB,GUI,语音] 摘要:巡检机器人能自动识别仪表设备的状态,先准确定位图像中的仪表设备,在此基础上,实现了仪表读数的自动识别. 摘要:巡检机器人能自动识别 ...

  2. 毕业设计-基于深度学习的指针式仪表读数识别系统

    目录 前言 课题背景和意义 实现技术思路 一.指针式仪表读数识别算法的设计 二.指针和刻度线提取及仪表示数识别 实现效果图样例 最后 前言

  3. 3d人脸识别算法opencv_热招职位算法类

    1.资深算法工程师leader-AI平台 地点:深圳 工作职责 1.推进机器学习及计算机视觉领域的核心算法: 2.构建机器学习及计算机视觉领域的关键应用: 3.将算法于实际应用场景相结合,构建算法和应 ...

  4. 【华为云技术分享】人脸识别算法的训练之路(下)

    人脸识别算法的训练之路(上) 人脸识别 人脸识别问题本质是一个分类问题,即每一个人作为一类进行分类检测,但实际应用过程中会出现很多问题.第一,人脸类别很多,如果要识别一个城镇的所有人,那么分类类别就将 ...

  5. opencv中人脸识别算法的基本原理

    opencv中人脸识别算法的基本原理(一) 使用opencv中自带的三种人脸识别算法进行实验后,特意去了解学习了一下其基本原理,在这里记录下. opencv人脸识别 关于如何使用opencv实现人脸识 ...

  6. 人脸识别算法原理过程详解

    本文为转载内容,由于找不到源作者链接,故特此说明. 人脸识别各算法详解 最近,由于工作需要,为了找到一款高效的人脸识别算法,对各种人脸识别算法都研究了一番,以下记录的是各算法的理论基础. 一.MTCN ...

  7. 三种线性排序算法 计数排序、桶排序与基数排序-BYVoid

    转自:BYVoid [非基于比较的排序] 在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销.排序算法有非常多种,如我们最常用的快速排序和堆 ...

  8. 三种线性排序算法 计数排序、桶排序与基数排序—— 转自:BYVoid

    三种线性排序算法 计数排序.桶排序与基数排序 [非基于比较的排序] 在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销.排序算法有非常多种, ...

  9. 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记(2) - 识别当前i.MXRT型号

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记(2)之识别当前i.MXRT型号. 文接上篇 <超级下载算法(RT-UFL)开发笔记(1) - 执行在不同CM ...

最新文章

  1. 区块链BaaS云服务(31) 吉利 Concordium区块链
  2. Topic交换器-编写生产者
  3. gruntjs开发实例
  4. 《软件工程》课之-调查问卷的心得体会
  5. 碰上这种 Wi-Fi,iPhone 秒崩!
  6. XDebug的配置和使用(审计方法)
  7. 如何使用ant_从 0 开始,成为 Ant-Design Contributor
  8. 在AIX系统下查询硬件信息的方法
  9. MySQL 常用函数 日期和时间函数
  10. 闽院食堂管理系统分析
  11. 纯js实现数据导出excel表格
  12. N沟道和P沟道MOS管的四个不同点
  13. python遥控汽车玩具_ESP32MicroPython 手机遥控小车
  14. 如何定制App Store榜单优化策略?
  15. 蓝牙射频的杂散,谐波与FCC测试解密
  16. source insight 仿 vscode 主题 (GitHub免积分下载)
  17. 关于MaxCompute的基本了解
  18. Nginx 使用./nginx -s reload报错 [error] open() “/opt/nginx/logs/nginx.pid“ failed (2: No such file or di
  19. VisualStudio找不到Python.h
  20. 各种LED显示模组的技术分析

热门文章

  1. 每日打卡 2017.03.15 北大信科2017机试真题题解
  2. JavaScript中的元编程
  3. 模糊综合评价法各自的优点,缺点,应用范围
  4. Keil C251V557破解
  5. 大数据基础入门学习路线图
  6. 综合评价——银行效率评价和预测问题研究
  7. SVN里恢复到某一天的版本操作
  8. oracle中没有ctxsys用户,Oracle自带全文索引
  9. Redis面试连环15问
  10. C语言利用队列求解迷宫问题