电表图像中电表计数区域定位算法

算法四 先根据底色粗定位再扫描精确定位

此算法程序的操作顺序是:“读入图像”—“灰度化”—“直方图均衡化”—“二值化”—“粗定位”—“反色操作”—“形态学处理”—“精确定位”。

1、             先去掉电表图像的下半部分,保留上半部分用于定位

条件:

(1)       拍照时下对电表且图像刚好包含电表的所有区域;

(2)       电表计数区域都在电表的上半部分(椐观察6个电表,它们的计数区域都在电表的上半部分)。

     方法:

           使用了OpenCV中的LoadRect()函数来对原图像进行截取。

2、             图像预处理

1)图像灰度化

在这里使用加权值法:R=G=B=0.299R + 0.587G + 0.114B

加权值法可以得到最适合的灰度图像

2)直方图均衡化

      

3)中值滤波

因环境光照及照相机闪光灯等原因,拍摄出来的照片可能会存在反光现象,所以要

   用中值滤波去掉一些噪声,方便后续处理。

 

4)图像二值化

 

采用全局阈值的方法T = Gmax (Gmax - Gmin)/3

 

   二值化电表灰度图像时暗一点的地方就一片黑色,而白的地方又一片白色。

   用此方法来进行电表图像的二值化,效果得不到保证。

当运用公式T = Gmax (Gmax - Gmin)/2时,在某一些图片可行,但是在其他图片不行,不具有普遍性。

 

3、             粗定位

在预处理得到的图像中从下到上扫描,当扫描到一行有等于或大于RMIN的连续的灰度值为0的点时记录此行,然后再继续向下扫描,当又扫描了N行或者超过N行且此行为刚刚有小于RMIN个连续的灰度值为0的点的行时记录此行。上两行间的区域为候选区域。

因为在读入电表图像时,已经截去了电表图像的上部分中的个像素的部分和下半部分,所以自下向上扫描得到的第一个区域就应该是电表读数区域。

4、             对上一步中得到的候选区域进行精确定位

(1)      反色处理

对由粗定位得到的区域进行反色操作,为后面的数学形态学操作做准备。反色处理

   是指把二值图像数据中的灰度为0的像素改为255,把灰度为255的像素改为0

(2)      数学形态学操作

对经过反色处理后的图像进行数学形态学操作,以使电表读区域连成一片,以用作

   后面的精确定位。在程序中所用到的数学形态学操作是先进行闭运算操作,再进行腐蚀操作,连续执行这样的操作几次,以达到所要求的效果。

(3)      精确定位

对由数学形态学操作后的图像进行精确定位。

首先把图像数据中第行的三个信息存到一个数组中:一是是否有大于行阈值的连续白点;二是连续白点的开始端点,如果无则为-1;三是连续白点的结束端点,如果无则为-1

然后遍历这个数组,按如下规则:

    1、向下扫描,当当前行没有大于阈值的连续白点时,继续向下扫描;

    2、当遇到大于阈值的行时,将此行的行号记于变量m_iCPHeightTop中,继续向下扫描;

    3、当遇到小于阈值的行且行距小于行距阈值时,m_iCPHeightTop记为,返回到;

    4、当遇到大于阈值的行且行距大于行距阈值时,不作处理,继续向下扫描;

    5、当遇到大于阈值且行距大于行距阈值时,不作处理,继续向下扫描;

    6、当遇到小于阈值肖行距大于行距阈值时,将此行的行号记于m_iCPHeightBottom中;

7、当扫描完成后,确定左右边界。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值