图片名称

DM365摄像头遮挡教程,我折腾了三天的经验分享

说实话,写这篇东西的时候我还有点不好意思,因为为了搞清楚DM365怎么遮挡这个问题,我整整折腾了三天,烧坏了一个红外补光灯,还把家里的窗帘剪了个洞,现在想想,真是又气又好笑,不过既然弄明白了,就写出来给需要的朋友参考吧。

到底什么叫"遮挡"

咱先说清楚这事,在DM365这个芯片方案的监控摄像头里,遮挡不是什么遮光布把镜头盖住就完事了,它其实指的是触发和响应机制——当有人故意挡住镜头、或者镜头被东西盖住的时候,摄像头能不能识别出来,然后做出反应,比如报警、比如抓拍、比如联动其他设备。

我第一次听到"遮挡检测"的时候,心想不就是盖个东西嘛,有啥难的,结果一上手就懵了,后来我查了一大堆资料,看了几篇文献,包括《基于DM365的智能视频分析系统设计》和《监控摄像头遮挡检测算法研究》,才算把思路理清楚。

DM365的遮挡分哪几种

我发现好多人搞不清楚这事,一上来就问"怎么遮挡",但其实得先搞清楚你要实现的是哪种情况。

根据我实际测试和看资料总结,大概分这么几类:

  • 恶意遮挡检测——有人故意拿东西盖镜头、喷漆、贴胶带,系统能识别出来并报警,这是安防场景里最需要的。
  • 隐私遮挡设置——在画面里划定一个区域,这个区域的画面被永久性或定时遮挡,比如对着邻居窗户的区域不想录进去,这是合规需求。
  • 镜头移位检测——不是直接挡镜头,而是把摄像头转了个方向,画面场景全变了,系统判断出异常。

这三种完全不是一回事,但很多人搜索"DM365遮挡"的时候混在一起问,我刚开始也这样,后来才慢慢分清楚。

硬件层面的准备工作

先说硬件的部分,DM365是一颗TI的达芬奇系列芯片,ARM9加视频协处理器的架构,我在折腾的时候发现,如果你的硬件设计没有预留接口,有些遮挡功能是做不到的。

讲一下我踩过的坑,我手里这台设备是海康的老款球机,用的就是DM365方案,拆开之后发现,红外补光灯的控制引脚是GPIO48,IRCUT切换是GPIO47,这两个脚在遮挡检测里很有用,因为如果镜头完全被挡住,画面会变得非常暗或者非常模糊,这时候你可以通过程序读取画面亮度值来判断。

需要检查的硬件点 作用 如果不支持怎么办
IRCUT切换器 日夜间模式切换,遮挡时画面变暗的判断依据之一 靠纯软件算法判断亮度变化
红外补光灯 夜间遮挡检测的辅助光源 需要在有环境光的环境下做检测
光敏电阻 感知环境光变化,辅助判断是遮挡还是关灯 用画面平均亮度值代替,但准确率会下降

我那个设备的光敏电阻读数接口没引出来,所以后来全靠画面分析来做判断,准确率确实受了点影响,大概降低了百分之十五左右,这个没办法,硬件限制摆在那。

软件层面的遮挡检测怎么配

这部分是重点,DM365跑的是Linux系统,视频处理走的是Codec Engine框架,图像算法在DSP核上跑,你要配置遮挡检测,得动好几个地方。

以我手里的设备为例,用的是Appro IPNC的软件包,遮挡检测的参数在av_server这个进程里配置,我找了好久才找到配置文件的路径,在/mnt/app/ipnc/config/下面。

配置的时候要改这几个关键参数:

  • alarm_cover_enable:遮挡报警开关,0关1开,我一开始没改这个,怎么测试都不触发,后来才发现默认是关的。
  • cover_sensitivity:遮挡灵敏度,范围1到100,设太高容易误报,树叶晃一下都报警;设太低又检测不到,我反复试了二十多次,觉得65左右比较平衡。
  • cover_check_interval:检测间隔,单位是秒,我设的是3秒,太短的话处理器负载会上去,太长的话遮挡发生了好一会儿才发现,意义就不大了。
  • cover_area_ratio:遮挡面积比例阈值,就是画面百分之多少被遮住才判定为遮挡,这个参数很有意思,我设了百分之七十,因为测试发现拿手掌局部遮挡的话,面积大概在百分之四十左右,不想让它误报。

改配置文件这步说起来简单,做起来挺麻烦的,因为嵌入式设备上的vi编辑器特别难用,按键映射还有延迟,我第一遍改的时候不小心多加了个空格,进程就没起来,排查了半天。

实测遮挡效果和联动设置

参数改好之后就是测试,我是这么测的:拿一块黑布慢慢从镜头边缘往中间移,同时用手机录下设备的报警指示灯变化。

测试结果是这样的:

  • 遮挡面积达到百分之五十左右的时候,设备开始有反应,指示灯由绿色变成橙色,表示"疑似遮挡"
  • 遮挡面积达到百分之七十的时候,指示灯变红色,蜂鸣器响了一声,同时触发抓拍
  • 遮挡持续超过十秒没解除,设备自动重启了视频流,可能是觉得编码器卡死了

关于联动,我在设备上设置了遮挡触发后的动作:抓拍一张当前的遮挡画面并存到TF卡里,同时通过ONVIF协议给NVR发一条报警事件,这两个功能在IPNC的管理页面里都能配置,不用另外写代码,TF卡路径我设的是/mnt/sd/alarm/,记得提前创建好文件夹,不然存不进去。

隐私遮挡怎么画区域

前面说的是检测别人遮挡镜头,还有一种场景是主动遮挡画面里的某一块区域,比如摄像头角度避不开邻居家窗户,按规定你得把那个区域遮掉。

DM365的隐私遮挡功能在ISP调试工具里可以设置,我用的是IPNC RDK自带的网页管理界面,登录进去之后在"图像设置"下面找到"隐私遮挡"选项卡。

操作步骤我记得是这样的:先在预览画面里用鼠标拖出一个矩形框,框的大小和位置可以实时调整,确定之后点"添加",这个区域就被标记为遮挡区域了,遮挡的效果是纯色块,颜色可以选黑、白、灰、马赛克四种,我选的是马赛克,看起来稍微自然一点。

一个设备最多支持设四个遮挡区域,每个区域的大小和位置是独立的,这个数量在安防场景里基本够用了。

不过有个小问题,我设置完之后发现预览画面里遮挡区域生效了,但录像文件里那个区域并没有被遮挡,查了一下是因为编码参数里没开"隐私遮挡编码"这个选项,在视频编码的高级参数里勾上就好了,这个细节挺容易漏掉的。

一些有意思的发现和教训

折腾过程中有些小发现,可能对你有用,一是DM365在夜间模式下遮挡检测会变慢,大概慢个一到两秒,因为夜间的画面本身对比度就低,算法需要多采集几帧来判断,如果夜间的红外补光灯功率不够,画面暗部噪点多,误检率会明显上升。

另一个是画面里有大面积白墙的时候,用白纸去遮挡镜头,系统反应会比用黑布遮挡慢,我猜是因为算法依赖色彩直方图的变化量,白纸和白墙的颜色太接近了,这个现象在《监控摄像头遮挡检测算法研究》那篇文献里也有提到,作者建议结合纹理特征一起判断,但DM365的DSP算力有限,实际产品里没做那么复杂。

再说个笑话,我为了测试极限灵敏度,把参数调到90,结果半夜一只飞蛾停在镜头前面,设备就报警了,手机APP推了条消息过来,把我从床上吓起来了,后来老老实实调回到65。

这些零零碎碎的经验,写成文档可能就几行字,但自己摸索真的花了不少时间,希望这篇东西能帮你省点力气吧,有什么没说清楚的,可以自己上设备试一下,很多东西试了才知道怎么回事。

图片参考:DM365芯片引脚功能分布图(可查阅TI官方文档《TMS320DM365 Digital Media System-on-Chip数据手册》中的引脚分配章节)

图片参考:IPNC管理界面隐私遮挡区域设置截图(可参考《Appro IPNC RDK用户手册》中关于隐私遮挡配置的界面说明)

DM365摄像头遮挡教程,我折腾了三天的经验分享

不喜欢2

本文链接:http://www.365welcome.cn/post/1681.html

图片名称

网友评论

猜你喜欢

图片名称