指针式仪表自动读数与识别(四):非圆形表盘定位

老吴2019-04-02 13:02图像1544浏览


版权声明:本篇文章为原创文章,转载请注明出处。https://yao2san.com/article/2033

基于RSCD的非圆形表盘定位

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

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

使用刻度进行定位

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

1.定位刻度线

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

3.求这些圆的平均值(圆心,半径的平均值)

其中最重要的就是刻度线的定位,其主要使用的方法就是轮廓筛选。如果一个轮是一个刻度线的轮廓,那么它应当满足以下几个条件:

1.轮廓的面积大小在固定范围内

2.轮廓的长度在固定范围内

3.轮廓的旋转矩形的长宽比在固定范围内

4.轮廓的旋转矩形的方向是沿着圆的半径方向

根据以上4个条件进行轮廓过滤,注意计算第4条时要先计算出一个可能圆心的密集区域,然后在判断轮廓的旋转矩形的方向的射线是否穿过这个密集区域,是则为刻度轮廓否则不是。

下图是经过过滤后的刻度轮廓以及所求得的圆:

赞一个! (18)

文章评论(如需发表图片,请转至留言)