使用高效的MCUs开发强大的事件驱动视频监控系统
视频监控时,设计师和他们的客户一直被迫接受极其低效的系统,依靠“哑巴”大部分图像捕捉和存档,与绝大多数的记录内容不感兴趣,和感兴趣的内容本身太难以查明的存档,假设已经存档。然而,现在,强大的、高效的、性价比高的处理器、图像传感器和存储设备,再加上越来越复杂的软件,为系统开发者提供了将有价值的计算机视觉处理能力纳入到从消费者监视系统到可穿戴的“生活博客”相机等应用程序的机会。
智能的,事件驱动的,视频监控只记录图像,例如,一个人或其他兴趣对象进入框架,并且只有在对象仍然在框架中。这样的自主智能或许只能在政府、军方和其他高端客户使用的昂贵、笨重、耗电的设备中使用,现在它可以以消费者友好的价格,电池寿命长,并且以一种小而轻的形式,以美观的方式摆放在架子上。
在今天的视觉处理硬件和软件的帮助下,你能做些什么呢?以下是一些基于消费者监视系统案例研究的观点:
一种基本的设计可以开始记录当它在帧中感觉到运动,并且在固定的时间内。一个稍微复杂一点的方法会变长记录,直到它被识别出物体运动停止了,或者物体从框架中消失了。
然而,这种方法可能会产生大量的“假阳性”,这是由吹树叶、交通工具等造成的。如果温血动物是唯一感兴趣的对象,那么你可能想用红外探测器或其他热传感器来补充可见光相机。更普遍的是,可用的算法会让你对对象的大小、颜色、距离、移动速度和其他阈值参数进行微调。
如果你关心的都是人类,那该怎么办?人脸检测功能可以帮助这方面的工作。当一个人进入框架时,你甚至可能对触发相机感兴趣……除非那个人是你自己,你的配偶,你的一个孩子,邮递员等等。为此,你需要更强健的面部识别设备。
OpenCV计算机视觉图书馆
这个项目,作为一个典型的项目,从它的软件定义和开发计划开始(并从根本上受到限制)。计算机视觉在过去的几十年里一直是学术研究的一个领域;因此,在这个领域还没有一个大型的、成熟的行业专家知识库。此外,学术实验往往不能广泛适用于现实世界的实现,例如,环境照明和天气条件在不同的使用情况下会有很大的差异,同时也会偏离研究实验室中所发现的更可控的条件。
幸运的是,像往常一样,开放源码社区通过资源帮助来实现。OpenCV(开源电脑视觉)图书馆起源于英特尔的研究部门;该公司在2000年的CVPR (IEEE计算机视觉和模式识别,一个著名的计算机视觉会议)正式移交给公众。在第一个五年的测试中,OpenCV在2006年获得了v1.0“黄金”的地位,随后是v2.0和2015年中期的v3.0 (v3.1是去年12月发布的最新版本)。
OpenCV是在BSD许可下发布的,对于学术和商业使用都是免费的。它有c++、C、Python和Java接口,支持Windows、Linux、Mac OS、iOS和Android操作系统。值得注意的是,在这个特殊的监控摄像头项目中,该库包含了超过2500种算法,包括那些可以在识别对象和跟踪对象时使用的算法,以及检测和识别人脸和对人类行为进行分类的算法。
微芯片技术的PIC32MZ EF系列MCUs
然而,使用OpenCV有一个潜在的缺点,值得一提。库的Intel和pc中心的起源反映在它的大部分基础代码都是浮点型的,这对于一些固定的嵌入式系统设计来说是有问题的。说实话,大多数计算机视觉功能甚至不需要浮点精度。因此,一些处理器供应商开发了一些或全部OpenCV库的定制版本,解决了代码的浮点转换和其他优化问题。但是,如果你自己坚持做转换,那么你的努力可能是成本和时间限制的。
Microchip的新PIC32MZ EF MCUs提供了一个简单的解决OpenCV浮点问题的解决方案(图1),其核心是一个高性能的32位MIPS微处理器,其运行速度高达200兆赫,能够处理多种计算机视觉功能。同时,在48个成员的产品家族名称中,Microchip还嵌入了一个32位和64位的IEEE 754兼容的7级FPU,与整数CPU一起,能够运行浮点OpenCV代码,而且速度非常快。
在使用开放源代码时,高性能CPU和32位和64位FPU协处理器的组合使Microchip的PIC32MZ EF MCUs成为引人注目的候选对象。(图片由微芯片技术提供)
图1:在使用开放源代码时,高性能CPU和32位和64位FPU协处理器的组合使得Microchip的PIC32MZ EF MCUs成为引人注目的候选对象。(图片由微芯片技术提供)
PIC32MZ EF的其他有用的方面包括它集成的10/100 Mbit以太网MAC和大量的系统接口(不同的种类和数量在某种程度上是包的)和依赖的…MCU家族有多种选择。MAC电脑与外部设备相结合,可以直接支持监控摄像头的网络连接需求(如果有线以太网是你选择的网络技术),或者通过外部无线到无线网桥来间接支持。或者,您可以通过连接到PIC32MZ EF USB 2.0或其他接口端口的外部收发器来实现无线蜂窝和/或以太网连接。
图像传感器的选择
前面提到的MCU界面多样性不仅有利于实现网络连接的多样性,而且有利于图像传感器的灵活性。将相机连接到PIC32MZ EF的一种简单方法是在设计中包含一个OmniVision技术OVM7690 VGA-resolution摄像机模块,通过8位I/O端口连接到MCU(图2)。OVM7690已经包含wafer-level光学的形式64°的视野(对角线),F / 3.0镜头,例如,所以你不需要处理添加一个单独的光学子系统设计。此外,OVM7690还嵌入了一个专用的图像处理器,从而使PIC32MZ EF从图像预处理任务中恢复,比如去噪、重新扫描、格式转换和曝光控制。
一个集成的相机模块图设计简单(顶部),但它提供的图像,虽然悦目,但可能比传统图像传感器(底部)未处理的输出更不适合计算机视觉处理。(由凯利讯半导体提供的图片)
一个集成的相机模块图设计简单(顶部),但它提供的图像,虽然悦目,但可能比传统图像传感器(底部)未处理的输出更不适合计算机视觉处理。(由凯利讯半导体提供的图片)
图2:一个集成的相机模块图设计简单(顶部),但它提供的图像,虽然悦目,但可能比传统图像传感器(底部)未处理的输出更不适合计算机视觉处理。(由凯利讯半导体提供的图片)
然而,有可能的场景可能迫使你转而使用传统的图像传感器,比如半导体的VGA-resolution NOIL1SM0300A和你自己设计的镜头,通过它的SPI端口连接到PIC32MZ EF。首先最重要的是,对人眼愉悦的图像可能反过来被认为对计算机视觉处理算法有害。例如,图像预处理程序自动完成的边缘增强可能会导致工件使区分对象与背景的任务复杂化。自动曝光控制、白、黑水平平衡、颜色校正和类似的任务通常由图像协处理器默认设置成摄像机模块。
例如,你可能需要不同的镜头焦距和/或光圈,而不是传感器模块制造商提供的。不管你是使用集成的相机模块还是独立的图像传感器,你可能会发现性价比高的VGA分辨率产品选项就足够了;有时,一个更便宜的QVGA或CIF分辨率产品甚至是你所需要的。如果您试图在距离很远的地方,或者在特别糟糕的环境观察条件下,从更大的源图像细节中获益,那么您可能需要在分辨率中超过3个m像素的时间。你也可以选择更高分辨率的图像传感器或摄像头,如果你的目标客户坚持观看“高清”视频,不管电脑视觉软件是否需要它。
当地的大容量存储器
回想一下,这个项目的基本目标是,只有当一个发生兴趣的事件发生时,它才会被摄像机记录下来,而且只有在这个事件持续的时候才会发生。这样,实现最小化了设计所需的闪存或其他存储技术所需的容量(更不必说在流程中节省宝贵的电池寿命)。不过,尽管512 kb的2 mb的闪存,连同128 kb到512 kb的内存集成在各种PIC32MZ EF单片机家庭成员,可能满足非易失性代码存储和瞬态数据存储的目的,高容量的外部存储视频剪辑自己仍是必要的。
当然,您可以使用独立的NAND闪存设备(或其中的一些),当然,通过I/O总线与MCU进行配对。然而,您需要开发自己的媒体管理软件,来处理背景“垃圾收集”清理闪存擦除块已经满是有效的和/或退休的视频数据,例如,以及耗损媒体为了防止“热”over-cycling一些擦除块与他人。此外,这种媒体管理需要由MCU本身来处理,从而消耗宝贵的处理器周期,否则将用于计算机视觉处理和其他任务。
相反,考虑使用包含它自己的媒体管理控制器的闪存容量存储解决方案。选项包括可移动SD卡(以及较小的迷你SD和micro SD兄弟),以及美光科技的bga包装的e。MMC NAND闪存;这两个选项接口都可以通过一个few-pin I/O总线(图3)来连接PIC32MZ EF MCU(图3)。具体取决于所捕获的帧分辨率、帧速率和压缩格式,例如,微米的32字节e。MMC应该能让你存储几十分钟到多个小时的视频。此外,通过电子邮件、短信或其他警报,您可以向监视系统所有者传递新视频的捕获状态(可选,可选地,与视频本身的某些内容);该视频将保留在摄像机内,供后续审查、存档和/或删除。
一个具有集成媒体管理控制器的闪存海量存储解决方案可以释放系统处理器来处理其他任务,并简化软件开发工作。(图片由凯利讯半导体提供)
图3:一个集成的媒体管理控制器的闪存海量存储解决方案,它可以释放系统处理器来处理其他任务,并简化软件开发工作。(图片凯利讯半导体提供)
结论
诚然,这个项目描述并不是包罗万象的;例如,还需要添加AC/DC和DC-step的power子系统,您可能还需要包括一个麦克风和ADC,以便将音频与图像一起录制。但是,它涵盖了设计的一些关键部分。每个算法越复杂,结合的越多,就越有可能超载PIC32MZ EF的CPU和FPU的处理潜力。说到这一点,新的算法,如新兴的卷积神经网络“深度学习”的对象识别技术(图4),以及现有算法的优化一直在出现。
卷积神经网络(CNNs)和其他“深度学习”方法,一旦经过一系列参考图像的训练,就能在大量的处理和记忆需求的权衡下提供令人印象深刻的物体识别结果。(图片由维基百科)
图4:卷积神经网络(CNNs)和其他“深度学习”方法,一旦经过一系列参考图像的训练,就会得到令人印象深刻的目标识别结果,这是在大量的处理和内存需求的权衡下产生的。
强烈建议在生产前进行大量现场试验;不可避免地,您将遇到您在产品开发过程中没有考虑到的环境条件和使用场景,这将需要算法的微调。
使用高效的MCUs开发强大的事件驱动视频监控系统相关推荐
- 音视频开发(13)---视频监控系统必须知道的一些基础知识
视频监控系统必须知道的一些基础知识 前言: 在视频监控系统中,视频文件的传输带宽很重要,那视频文件的传输带宽怎么计算呢?首先给大家介绍几个名词. 正文: (1)比特率 比特率是指每秒传送的比特(bit ...
- 数字视频监控系统开发及应用
前言 第1章 概述 1.1 模拟视频监控现状 1.1.1 模拟视频监控系统简介 1.1.2 模拟视频监控系统存在的问题 1.2 数字视频监控系统 1.2.1 数字视频监控系统的组成 1. ...
- OpenCV3.2+Qt5.8.0+Win10开发视频监控系统----Qt之设置应用程序图标
一.图标设置效果 (1)未设置前 (2)设置后 二.设置步骤 1.首先,创建一个图标格式的位图文件,其中包含图标的图像. (1)这可以用例如微软Visual Studio,选择:文件 -> 新建 ...
- 音视频开发(12)---视频监控三大标准比较 ONVIF不负众望
视频监控三大标准比较 ONVIF不负众望 111.推行标准的过程也是净化市场 没有规矩不成方圆,任何行业的发展都要有一个评判的标准,不是为了限制其发展而是要让其在发展中能站住脚.没有统一的标准,一方面 ...
- 视频直播系统开发架构分析,视频直播系统架构技术应用层面
正当兴隆的直播行业如火如荼的发展,得益于手机的便利,手机直播APP也得以快速的推广.等手机直播APP用的多了,自然而然有人问了,视频直播系统软件怎么开发? 其实回答这个问题,还是得回到基础的东西--直 ...
- 音视频开发(18)---视频监控客户端开发(IP Camera)总结
视频监控客户端开发(IP Camera)总结 首先看下项目需求: 1.最多同时支持16路高清音视频同时显示. 2.窗口模式,全屏,1窗口,4窗口,9窗口,16窗口. 3.播放控制,开始播放 ...
- java 开源监控_推荐一款强大的国产开源监控系统!
项目简介 集监控点监控.日志监控.数据可视化以及监控告警为一体的国产开源监控系统,直接部署即可使用. 监控数据类型丰富,提供多种富有表现力的图表,满足对数据可视化的需要,目前支持折线图.饼图.地理位置 ...
- ESP32 SDK 开发(四)——ESP32-CAM局域网视频监控
ESP32 CAMERA QR使用教程 环境要求: ESP_IDF 版本:V4.3 环境搭建参考教程:https://blog.csdn.net/FourLeafCloverLLLS/article/ ...
- 开发视频监控系统纪实 四 开康开发dll 修正
再搞了3个小时,终于发现网上给的SDK是针对网络硬盘的.靠!!! 为什么会发现?因为sdk里面有个login,我死活想不明白为什么要login. 短暂思考后,决定再去官方网站看看,果然被我发现了针对板 ...
最新文章
- struts2 标签问题----escape=false 这个属性
- Python3.x和Python2.x的区别
- 机房管理系统——vb与excel链接2
- 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第4章-具有扰动的混沌系统主-从同步
- ERROR: ORA-01033: ORACLE initialization or shutdown in progress Oracle无法启动的解决
- 《京东商业化数据分析师培养计划》
- 这本《Python+TensorFlow机器学习实战》给你送到家!
- c语言send方法,高效编写代码的方法(九):了解objc_msgSend
- python爬取正确但不出文件_使用BeautifulSoup进行Python抓取时不显示所有行
- phpstorm 新建拉取项目_Flink1.8实时数仓项目实战
- oracle减法函数mius_Oracle常用函数及其用法
- 单片机的串口实验 串口介绍 串口原理
- vba手机号码归属_国庆献礼-EXCEL自定义函数获取手机号码归属地及运营商信息 | Excel实例教学网 微信公众号EXCEL880...
- C#微信公众号开发实践--通过控制台程序发布图文消息(2020/8/4实测可用)
- 夜天之书 #68 开源码力圆桌文字稿
- echarts引入省份地图 失败原因
- Oracle PURGE子句清除回收站中的对象
- Android studio占用C盘资源的解决方法
- Volley传入请求体不成功的解决方案
- vue 实现鼠标悬浮展示