求教用图像识别水表的算法

2019-09-09 16:11:58 +08:00
 msmmbl

自从用上了 homeassistant,总是想着把家里的各种东西集成进去。上次把总电量接入了(参考我的贴子: https://bbs.hassbian.com/thread-6410-1-1.html )。

这次又想着把用水量也接进去。收集这些数据,期望可以发现:

  1. 每天的用水习惯是怎样的
  2. 是不是存在漏水的情况(水表一直缓慢转动,或者在家没有人的情况下发生转动,说明有地方漏水了)
  3. 是不是忘记关水了(水表一直长时间转动)

家里的水表是放在门外的公共水表间里面的。大概就是在楼道里面有一个门,门里面排着很多水表,门一关里面黑黑的。水表就是普通的塑料水表了。

为了低调,在水表间房顶安装了 raspberry zero w 和 pi camera,用 gpio 控制当拍摄时,打开 8 颗红外 led 闪光照明。把所有的东西放在一个 3d 打印的盒子里面。用细线引直流电源供电。3d 打印的外壳为黑色,并且没有可见光照片,在黑漆漆的水表间中很没有存在感。pi camera 是 1 代的 500W 像素,距离水表表盘大概 4 米。表盘大小为 8cm 的样子。为了得到足够大的图,给 pi camera 换了一个焦距大概是 10mm 左右的监控镜头。

这是第一版的图:画了块 PCB,上面有白光 led、dc-dc 电路、一个电机驱动(想后期接机械臂用来远程开关水阀)、光照度传感器、时钟芯片、还有块液晶屏。这一版没有最终采用,因为白光 led 实在是太高调了,夜晚楼道里一闪一闪的很是吓人。

第二版就去掉了不少东西,led 换成了红外的,电机驱动、屏幕光照啥的全部去掉,这一版给直接安屋顶了没拍照片,不过 3d 打印外壳的时候,为了得到尺寸,做了个 3d 效果图。

这样搞了一波后,在 respberry 中用 crontab 每隔 30s 跑脚本拍照,拍出来的照片大概是这样子的。最右边的那个表盘是咱家的。

经过一波 opencv 各种心态学、边界操作后(这图的特征是表盘比表盘的边暗很多,这特征很容易分开表盘)。找到了表盘。

在经过一波 opencv 的模板匹配(我只关心这种样子的水表,那做一个模板把对应的区域切出来)。得到了数字和指针。

其中数字还是挺清晰的,0342,边缘增强,二值化也容易,然后四等分后,跑一个分类器,再考虑写边界条件,估计就 ok 了。

指针有点模糊,但是肉眼还是可以分辨是指向下面的。分析:本身指针是红颜色的,表盘是白色的,在红外 led 的照射下,红色指针能反射红外光,表盘能反射红外光,所以两者的区别就不是很大。要二值化分离出来找形态特征似乎不是很容易。放 tensorflow 里面跑一跑(初学只是看了一些书),用了普通的回归做出来效果也不怎样。这块我就卡在这里不知道怎么办了,没有任何思路,求指点。

7365 次点击
所在节点    分享创造
37 条回复
ziding
2019-09-10 16:19:14 +08:00
我说个我们原来水表上用过的方案,在最小的指针上嵌入一小块磁铁,然后外面用霍尔进而感应计数。
deorth
2019-09-10 18:05:03 +08:00
楼主这头像让我以为是要防查水表
piaochen0
2019-09-10 22:27:01 +08:00
我只知道有一个朋友的公司做这套算法,让一个程序员什么事情都没干,专研了半年搞出来了...
classyk
2019-09-11 08:20:19 +08:00
是否可以考虑加一点光源,在拍摄的时候打开光源,以提升图像质量
msmmbl
2019-09-11 10:27:10 +08:00
@koala9527 @ty89 我们这边水表以及附近的设备的物权属于自来水公司,而且管路都预埋在墙里了,我做不了什么,下次装修回考虑。
@qping 3d 打印机现在基本从硬件到软件都开源了,我参考了这个贴子 https://post.smzdm.com/p/332896/组了台,外观丑了点但是效果还行。整个过程还是很有意思的,考虑组个?
![未标题-1.jpg]( https://i.loli.net/2019/09/11/maGrN9ROiUuHL52.jpg)
@ziding 霍尔是个挺不错的方案,可以做到很低的功耗。用霍尔传感器检测磁性唤醒 MCU 计数就行。然而我这水表全塑料的,一点磁性都没。
@piaochen0 原来这东西这么难啊
@classyk 嗯,后期实在不行有个计划,在表盘附近按一个用电池驱动的绿光 led,和摄像头无线联动拍摄时候同步照亮指针区域,因为区域小可以用很小的 led,应该不会太高调。
qping
2019-09-11 10:33:30 +08:00
@msmmbl #25 我仿佛看到了一个很深的坑。。。而且我还想跳进去。。。。
msmmbl
2019-09-11 10:39:36 +08:00
@qping 干起来干起来
ziding
2019-09-11 11:47:48 +08:00
@piaochen0 太长了吧,基础的图形学应用啊
webshe11
2019-09-12 05:48:53 +08:00
头像 + 标题 = cha 水表
tmsdy0404
2019-09-13 00:17:04 +08:00
执行力 max!!

也想入 3D 打印的坑。。。。
zomco
2019-09-13 13:55:05 +08:00
就用 OCR,不要用 tensorflow
msmmbl
2019-09-14 23:43:54 +08:00
@tmsdy0404 支持入坑,可以用了做一些 DIY,很不错的。
@zomco ok,记住啦,我试试。
ZeroW
2019-09-16 22:02:26 +08:00
大哥,你网站挂了
1314258
2019-09-28 14:32:07 +08:00
@msmmbl 请问是红外灯摄像头还红外+普通 25mm 摄像头?淘宝关键字可以给一下吗
msmmbl
2019-10-01 15:50:00 +08:00
@1314258 目前树莓派有出两个版本的摄像头,一个是 500W 像素的,一个是 800W 像素的。800W 像素那个硬件上带了一个加密芯片,导致市场上没有第三方生产,而官方的那个又不能换镜头,所以不选用。500W 像素那个,随便淘宝上找下就好了,选有 M12 镜头座不带红外滤光片的那种,比如"树莓派 红外 夜视 调焦"这样的关键字。镜头可以去看看卖监控的店,M12 的小镜头,我最后选了 25mm 的镜头。
msmmbl
2019-10-02 11:32:06 +08:00
@1314258 红外+普通 25mm 摄像头
1314258
2019-10-03 05:01:08 +08:00
@msmmbl 谢谢,太奇怪,我说楼主应该很热心的人,为什么没回复。原来是 V2EX 没有发回复提醒

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/599348

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX