指针式仪表自动读数与识别(八):仪表自动读数系统设计与开发

前面几篇文章都是偏理论的,这篇文章则是偏实践的,本文使用C#+EmguCV开发一个仪表自动读数系统,目前该系统能够识别圆形的温度表、气压表以及方形的电流、电压表,误差控制在0.1%左右。

系统概述

仪表自动读数系统是指通过机器视觉等图像处理方法,对摄像头采集到的指针式仪表进行分析,自动识别仪表示数的系统。其主要目的是代替人工读数,减小工作量,提高工作效率,同时能够实施反应设备的工作状态,让其处于最佳的运行状态。故该系统应该满足以下要求:

(1) 实时性
能够实时读取输入图像,并分析计算仪表示数。

(2) 准确性
能够保证在误差允许的范围内准确的读取示数。

(3) 鲁棒性
够适应不同环境以及不同仪表种类的读数。

(4) 稳定性
系统应该保持长时间运行稳定,不会经常出现运行异常等意外而停止。

本篇文章在前面的理论研究以及对仪表图片进行测试的基础上,实现了一个仪表自动读数系统,该系统能够对视频图像以及摄像头采集到的图像进行实时读数。系统默认使用了本文提出的RSCD圆检测算法进行表盘定位,默认使用RGS指针检测算法进行指针的定位,同时支持Hough圆检测、Hough直线检测以及CTM进行定位,并针对刻度起始点的确定问题,提供自动检测和手动标记两种模式。

架构与流程

一个仪表自动读数系统,应该包含输入模块、图像处理模块、读数模块、配置模块以及UI模块。其中各个模块的用途如下:

**输入模块:**用于仪表图像的采集以及传输。本文使用无线摄像头作为输入设备,USB或者局域网作为传输媒介。

**图像处理模块:**对输入的图像进行预处理和分析,并定位表盘以及指针。

**读数模块:**用于计算仪表读数,误差评估。

**UI模块:**用于用户的输入以及对结果输出展示。

**配置模块:**用于配置仪表识别过程中的参数、过滤条件以及仪表类型等。

仪表自动读数系统的基本架构及工作流程如下:

你可能感兴趣的:(指针式仪表读数识别)