MATLAB基于霍夫变换进行电流表表盘指针识别

        前段时间的《数字图像处理》课程,期末考核是做一个综合设计题,也就是做一个小项目。因为水平有限,在网上找了很多资料,还在taobao花了10块钱去咨询才完成。现在把这个小项目搬到网上,虽然我的这个程序简单且不具备普适性,但是作为一个参考还是不错的,希望可以帮助到一些人。

题目如下:

这是一幅电器柜上的电表图像,试采用图像处理与分析技术,设计适当的算法和程序,找出电流表所在的区域,提取其指针位置,计算指针与表盘与表盘下沿的夹角,进而判断当前电表的读数(提示:电流表的读数范围为0~400A)。

 

算法设计:

通过观察可以看出电流表边框区域特别黑(亮度很低),可以先通过全局阈值初步处理,再进行一些初步的处理。

然后利用 regionprops 算法,得到二值图像中每个 8 连通分量(对象)的属性集的测量值,其中包含的信息有三类:

①Area,面积,连通区域的面积

②Centroid,质心,连通区域的质心

③BoundingBox,矩形边界框,一个可以将连通区域包含在内的最小边界框

然后利用参数Area、BoundingBox的来筛选最有可能是电流表的连通区域。就可以得到电流表的连通区域的BoundingBox。

利用这个BoundingBox,创建一个Mask(遮罩)图像,BoundingBox内部的区域为1,外部的区域为0。再使用Mask图像与二值图像进行点乘(.*),就可以将电流表区域分割出来

然后使用 bwmorph 算法提取出图像的骨架。

然后使用算法 hough 、 houghpeaks 、 houghlines 这三个算法来提取出指针并标记出来,观察标记的直线是否是我们想要提取的指针。使用方法在帮助系统中 houghlines 的文档中有示例程序,对示例程序进行适当修改即可。

最后利用 houghlines 返回的结构体 lines 中的theta参数来求取读数。

霍夫变换的学习可以观看这个视频

3.hough transform(霍夫变换直线检测)_哔哩哔哩_bilibili

代码加上注释有些长,不方便直接贴出,这里给出包含源代码以及详细注释的PDF文件,有需要的朋友可以直接拿。

链接:https://pan.baidu.com/s/1tacae35B-rFOkvFEVVc11g 
提取码:0808

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值