计算机视觉的扔垃圾监控提示系统设计
2021-04-11北京信息科技大学胡顺顺
北京信息科技大学 崔 勇 胡顺顺
随着时代的进步,社会的发展,我们应提高自己的道德修养。但是有时候我们无法自律,随手丢垃圾的现象屡见不鲜,所以我们有了利用摄像头进行自动识别行人是否乱丢垃圾,及时督促违反者改正的错误的构想。我们分四个模块来完成,即预处理、对行人的特征识别、乱扔垃圾行为判定。
1 研究背景
当我们走在路上时,时常会看到一些人不顾环境卫生乱扔垃圾,甚至在垃圾箱附近也毫不收敛,以至于我们可以经常看见垃圾桶里空空如也,而其周围垃圾却堆积如山。随手丢垃圾或许很方便,但是你有没有想过,社区环境是大家的,你贪图了一时之快,却会影响整个社区的容貌。由此便引发出一个问题:如何减少人们这种随便扔垃圾的不良习惯?我们认为,当行人乱丢垃圾时,如果有检测系统发出声音进行警告,由于播放的声音比较大,能让周围的人听见,即使丢垃圾者没有看见提示标语或者没有意识到自己的行为是错误的,妄图蒙混过关,但碍于面子,也会强行制止他们丢垃圾的坏习惯。
2 当前社会的解决方法
社会上其他人难道对这种情况熟视无睹吗?我们在网上搜寻了有关此问题的解决方案,发现大多数的方案只是停留在纸面工作上,比如:制作禁止随便扔垃圾的标语纸板、贴一些保护环境的告示、极少的几个方案中写道派人监督。我们认为这种解决方法是不可行的,贴告示只是“防君子不防小人”,人们在随便扔垃圾时并不理会告示写了什么,当派人抓住他们时,他们也只会说“没看见,下次不扔了,对不起。”这样的话语,下次照扔不误。并且派人监督费时费力,当人们下班休息时,这段时间无法保证没人趁此机会乱丢垃圾。所以,我们认为当前社会在解决这一问题上并没有能够长期运作的解决方案。
为此,我们团队通过研发一种监测系统监督行人乱扔垃圾的系统,实时监控并提醒行人不要乱丢垃圾,保障环境卫生,提高国民素质。
3 基于计算机视觉的扔垃圾监控提示系统
本系统利用摄像头拍摄一组数据,当检测到视频内有行人时,系统会检测行人手中是否存在垃圾。如果检测到垃圾从行人手中掉落时,则会给出语音“请不要乱扔垃圾”给予路人警示。
制作系统的思路如图1所示。
图1 主要思路
本系统基于一些条件与假设。首先要求纯白色背景,其对比度高,更容易进行边缘检测。其次要求光照均匀,保证帧与帧之间的垃圾不会因为光线明暗导致系统判定失误。然后人与垃圾的要与摄像头保持合适距离,使得人与垃圾清晰可见。并且地面没有无关物体。无关物体比如秋季落叶,雪花、钱包之类的干扰因素;最后要求垃圾的颜色假设为红、绿、蓝。
本系统的创新性在于能够结合摄像头对目标物体进行定位,由计算机对当时人与垃圾的位置情况进行分析。能够满足实时监督行人的需求。有效地避免了行人乱丢垃圾却无人提醒的问题。垃圾与行人位置的模糊判断,也最大程度的精简了数据,有效地避免了运行过于麻烦导致无法及时提醒的问题。并且由于是机器工作,所以大大地减少了人工成本。
图2 行人测试效果
4 行人与垃圾检测
4.1 行人识别与轮廓提取
我们选择用图像差分法来进行行人检测。帧间差分法是一种通过对视频图像序列的连续两帧图像做差分运算获取运动目标轮廓的方法。当监控场景中出现异常目标运动时,相邻两帧图像之间会出现较为明显的差别,两帧相减,求得图像对应位置像素值差的绝对值,判断其是否大于某一阈值,再通过二值化处理进而分析视频或图像序列的物体运动特性。行人测试效果如图2所示。
图3 垃圾测试效果
根据差分法的特点,连续两帧相减后即可获得求得图像对应位置像素值差的绝对值。我们运用dilate函数膨胀图像,然后运用sobel算子分别检测水平边缘与垂直边缘的。Sobel算子对于象素的位置的影响做了加权,可以降低边缘模糊程度,使得效果更好。然后使用Canny函数进行边缘提取最后运用findContours检测轮廓。
分别提取轮廓中x、y的最大值与最小值,然后分别做差在相除即可得到此时行人的长宽比。当长宽比为<1时,此时矩形为长方形,以此为条件作为判断是否为行人的条件。
4.2 垃圾检测与轮廓获取
首先根据我们假定垃圾的颜色为:红、绿、蓝三个基本颜色。使用inRange函数根据颜色范围筛选提取垃圾物体。选用dilate函数膨胀图像,然后运用sobel算子分别检测水平边缘与垂直边缘的,最后使用Canny函数进行边缘提取最后运用findContours检测轮廓。垃圾测试效果如图3所示。
图4 效果图
4.3 检测人与垃圾的距离与判定
我们选取人与垃圾轮廓数组中纵坐标最小的的坐标信息作为二者的位置,当二者的位置大于40个像素点时判定为乱扔垃圾。
5 实验结果
我们在教学楼附近采集了一些结果,图为其中的一个影像,我们运用系统把人和垃圾识别出来并加以跟踪,如果其手中的垃圾掉落时,系统会进行判断并加以警告。测试效果如图4所示,框定垃圾与人之间的距离大于40个像素,系统判定存在乱扔垃圾行为。
本文设计并实现了一种基于计算机视觉的扔垃圾监控提示系统。利用了摄像头来拍摄行人,系统来判断是否为乱扔垃圾。在我们设定的条件下,系统可以完善的识别并运行判断。但是如果要运用于生活中,该系统还需要加以完善,克服一些干扰因素。