论文部分内容阅读
指针式仪表是一种较为常用的计量仪器。它不仅结构简单、价格低廉、安装便捷、可靠性高,而且能够较为直观地显示待测数据的变化,因此,在工业生产、国防军工等领域依然被大量使用。常用的指针式仪表包括了温度表、压力表、湿度表、流量表等。指针式仪表通常需要由人工读数来获取数据,这种读数方式存在很大的局限性:1)人工读数得到的数据需手动输入计算机,才能存储和传输;2)读数的准确性和精确性依赖于读数人员的主观意识;3)读数人员可能被置于高危、有毒的环境中。因此,需要克服人工读数的局限性,采用自动识别的方法实现指针式仪表的读数。本文提出了一种基于图像处理的指针式仪表自动读数识别算法。其具体算法如下:(1)通过工业摄像机或手持终端设备获取仪表图像,对图像进行预处理操作,通过轮廓跟踪算法检测得到可能的表盘轮廓,然后由形状特征判断得到表盘区域位置。(2)在表盘区域内采用LSD(Line Segment Detector)算法检测直线段,由最小二乘法拟合直线段中点所在圆来寻找表盘圆心O和半径R。由直线段中点到圆心的距离筛选刻度线段。由线段长度和半径决定刻度线环带区域大小。在刻度线环带区域内,计算每个黑色像素点到圆心O之间的连线与X轴的夹角并对其取整。因为主刻度线区域包含的黑色像素点比细分刻度线多,采用中心投影法提取主刻度线。在表盘区域位置内采用霍夫变换检测指针两侧边缘线,求两侧边缘线交点记为指针端点P,P与圆心O相连记为指针线段。(3)在刻度线环带区域内寻找指针左右两边主刻度线字符位置,并通过数字识别算法获取指针左右两边主刻度线读数。计算指针到左、右两边主刻度线的距离,然后基于距离法计算指针示数X。该算法的主要创新点如下:(1)采用LSD算法准确检测刻度线段。(2)由霍夫变换获取指针左右两侧边缘线位置,求两侧边缘线交点记为指针端点,指针端点与圆心连线作为指针直线。(3)现有的方法将量程、零刻度线等作为已知条件。本算法采用无先验知识的方法进行读数识别。本文提出的指针式仪表自动读数算法能够准确、快速的定位刻度线及刻度数字,并且能够准确的完成刻度线与刻度数字的一一对应。该算法在霍夫变换检测指针线段的基础上进行改进,提高了指针定位的准确性。该算法在OpenCV库和boost库支持的基础上,借助Visual Studio开发平台验证了该算法的可行性。利用Microsoft Visual Studio 2013集成开发环境里的MFC模块创建对话框,通过添加不同的按钮来完成指针式仪表自动读数算法的逐步运行。该方法不仅鲁棒性高,而且能够准确、快速的识别指针示数。