zoukankan      html  css  js  c++  java
  • 指针式仪表自动读数与识别(四):非圆形表盘定位

    基于RSCD的非圆形表盘定位

    非圆形表盘外观一般为方形,常见于电流表和电压表。这些仪表没有明显的圆形表盘,因此无法通过直接Hough圆检测来定位表盘圆。观察仪表特点,可以发现虽然表盘不是圆形,但是表盘上的刻度均在同一个圆弧上,所以可以通过刻度线所在圆弧来确定圆弧所在圆的圆心和半径。检测方法可以使用Hough变换和RSCD。
    理论上,Hough变换可以检测任意形状的目标,所以也可以检测圆弧,但是由于圆弧特征不明显,没有足够多的特征点来确定圆心,故选择RSCD来进行圆弧检测。
    基于RSCD检测圆弧的主要步骤如下:
    (1) 预处理图像
    对图像进行预处理操作,这些操作包括:缩放图像减小运算量、灰度化图像、中值滤波去除较验噪声、高斯滤波平滑图像等。
    (2) 计算图像纵向梯度
    由于圆弧特征不明显,易受其他线条的干扰,且考虑到仪表方向一般为向上,因此,通过计算图像的纵向梯度来减小或消除噪声影响,提高圆弧特征在图像中的权重。
    (3) 二值化
    对纵向梯度图像进行二值化操作。
    (4) 轮廓提取
    对二值化后的图像提取轮廓,这些轮廓数据将用于计算刻度圆弧所在圆。
    (5) RSCD还原圆弧所在圆
    由于RSCD是随机的从轮廓上选取三个点来作为一个可能圆,并通过一个密度区域来确定圆心,所以,圆弧的断裂、少许错位并不影响最终定位结果(在人眼误差范围内)。

    下图是非圆形表盘定位的过程:

    使用刻度进行定位

    由于非圆形表盘的刻度仍然为圆形,所以,根据三点确定一个圆的原理,可以先找出刻度,再根据刻度必定在一个圆上来确定表盘。主要步骤如下:

    1.定位刻度线

    2.根据三点定圆,多次随机选取刻度轮廓上的三个

  • 相关阅读:
    python读取excel保存到mysql
    python读取mysql返回json
    在C#后台使用MD5值对文件进行加
    使用文件流的形式上传大文件
    IE8兼容性问题
    解决 CentOS 下找不到库文件的问题
    openssl/ossl_typ.h:没有那个文件或目录
    解决 VSCode 进行 C/C++ 开发时 gcc 依赖缺失问题
    VSCode 中进行 C/C++ 开发需要的配置文件
    记一下使用 WeBASE 搭建自己的联盟链过程
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286600.html
Copyright © 2011-2022 走看看