Skip to content

CQUT-handsomeboy/meter_reader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quick Start

git clone https://github.com/CQUT-handsomeboy/meter_reader.git
pip3 install -r requirements.txt
python3 main.py path/to/your/target/image ./LFS/thermometer_detect.pt ./LFS/tilt_correct.pt ./LFS/thermometer_read.pt

项目流程(第三版)

  • 使用YOLOv8检测出仪表盘ROI。

  • 对仪表盘ROI再次使用YOLOv8检测出三个特征点。

  • 对检测出的三个特征点运用仿射变换进行倾斜矫正。

  • 对倾斜校正后的仪表盘ROI再次使用YOLOv8检测出表针ROI。

  • 取表针ROI中心,与Standard图像(即放射变换目标矩阵的原图像)中的指针中心作差得到表针向量。

  • 将表针向量与Standard图像中的起始指针向量计算夹角,换算得到仪表读数。

项目流程(第二版)

  • 使用YOLOv8检测出仪表盘ROI表盘种类

  • 仪表盘ROI进行特征点匹配,使用仿射变换实现倾斜校正得到倾斜校正仪表盘ROI

  • 计算得倾斜校正仪表盘ROI中心坐标,并对其再次使用YOLOv8检测出指针ROI基准点

  • 通过倾斜校正仪表盘ROI中心坐标基准点计算出基准直线

  • 指针ROI 预处理后使用霍夫线检测得到霍夫线检测直线组

  • 霍夫线检测直线组reshape后得到点坐标,使用Kmeans聚类聚为2类

  • 将2类Kmeans聚类坐标分别使用最小二乘法拟合

  • 计算两个最小二乘法拟合直线 相交坐标

  • 连接相交坐标倾斜校正仪表盘ROI中心坐标,得出指针直线

  • 联系指针直线基准直线,求得指针偏转角度

  • 根据YOLOv8识别出的表盘种类,得出相应读数

项目流程(第一版)

  • 通过YOLOv3实现对表盘的分类

  • 通过特征点法获得透视矩阵

  • 利用透视矩阵对椭圆进行矫正,得到标准表盘

  • 通过霍夫圆检测得到表盘

  • 通过霍夫圆直线检测得到表针

  • 计算出表针偏移方向

  • 结合表盘分类实现读表

参考资料(第一版)

通过透视变换进行椭圆矫正

通过特征点法来获得透视矩阵

霍夫变换直线检测

基于SURF的表针矫正

基于Python的指针识别与表盘分析

OpenCV 视觉特征提取和匹配

About

基于YOLOv8的深度学习表盘识别。

Resources

License

Stars

Watchers

Forks

Languages