[问题]客户端访问ONVIF设备动检

客户端要访问ONVIF设备(IPC)的动检,一是事件,二是设置;

此处就是讨论如何设置动检区域的。

通过Video Analytics/Cell Motion Detection可以了解到关于动检的一些ONVIF配置。

参考Video Analytics.–    -34- Annex B. Cell Motion Detection

Video Analytics/Cell Motion Detection

参考Video Analytics.Annex B

Cell Motion Detector

规则定义

<tt:RuleDescription Name="tt:CellMotionDetector">
<tt:Parameters>
<tt:SimpleItemDescription Name="MinCount" Type="xs:integer"/>
<tt:SimpleItemDescription Name="AlarmOnDelay" Type="xs:integer"/>
<tt:SimpleItemDescription Name="AlarmOffDelay" Type="xs:integer"/>
<tt:SimpleItemDescription Name="ActiveCells" Type="xs:base64Binary"/>
</tt:Parameters>
<tt:MessageDescription IsProperty="true">
<tt:Source>
<tt:SimpleItemDescription
Name="VideoSourceConfigurationToken"
Type="tt:ReferenceToken"/>
<tt:SimpleItemDescription
Name="VideoAnalyticsConfigurationToken"
Type="tt:ReferenceToken"/>
<tt:SimpleItemDescription Name="Rule" Type="xs:string"/>
</tt:Source>
<tt:Data>
<tt:SimpleItemDescription Name="IsMotion" Type="xs:boolean"/>
</tt:Data>
<tt:ParentTopic>
tns1:RuleEngine/CellMotionDetector/Motion
</tt:ParentTopic>
</tt:MessageDescription>
</tt:RuleDescription>

Cell Motion Analytics Engine

<tt:AnalyticsModuleDescription Name="tt:CellMotionEngine">
<tt:Parameters>
<tt:SimpleItemDescription Name="Sensitivity"
Type="xs:integer"/>
<tt:ElementItemDescription Name="Layout" Type="tt:CellLayout"/>
</tt:Parameters>
</tt:AnalyticsModuleDescription>
<xs:complexType name="CellLayout">
<xs:sequence>
<xs:element name="Transformation" type="tt:Transformation"/>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Columns" type="xs:integer" use="required"/>
<xs:attribute name="Rows" type="xs:integer" use="required"/>
<xs:anyAttribute processContents="lax"/>
</xs:complexType>

参考示例

Cell Motion Detector rule configuration

<tt:VideoAnalyticsConfiguration>
<tt:RuleEngineConfiguration>
<tt:Rule Name="MyMotionDetector" Type="tt:CellMotionDetector">
<tt:Parameters>
<tt:SimpleItem Name="MinCount" Value="4"/>
<tt:SimpleItem Name="AlarmOnDelay" Value="1000"/>
<tt:SimpleItem Name="AlarmOffDelay" Value="1000"/>
<tt:SimpleItem Name="ActiveCells" Value="/v/+8A=="/>
</tt:Parameters>
</tt:Rule>
</tt:RuleEngineConfiguration>
</tt:VideoAnalyticsConfiguration>

ActiveCells : 灰色表示已选单元格,图示对其按位掩码表示的十六进制表示为: "ff ff ff f0 f0 f0".  再应用Packbit 算法压缩则得到的字节序列为: "fe ff fe f0". 最后,通过base64Binary编码该序列则得到这样一串值: "/v/+8A==";

提示:

  1. 已知掩码字节序列,然后需要应用Packbit算法来进行压缩,参见ISO
    12369 (TIFF, Revision 6.0)
    .
  2. base64编码,gsoap已经提供非常有益的支持;

CellMotionEngine configuration

<tt:VideoAnalyticsConfiguration>
<tt:AnalyticsEngineConfiguration>
<tt:AnalyticsModule Name="MyCellMotion" Type="tt:CellMotionEngine">
<tt:Parameters>
<tt:SimpleItem Name="Sensitivity" Value="90"/>
<tt:ElementItem Name=”Layout”>
<tt:CellLayout Columns="8" Rows="6">
<tt:Transformation>
<tt:Translate x="-0.66666" y="-0.6" />
<tt:Scale x="0.1666666" y="-0.2" />
</tt:Transformation>
</tt:CellLayout>
</tt:ElementItem>
</tt:Parameters>
</tt:AnalyticsModule>
</tt:AnalyticsEngineConfiguration>

我们主要需要理解的是Transformation信息。关键是这个数据是如何度量的。

ONVIF默认参考系是原点设在画面中央,参考5.1.2.2  Spatial Relation 的example, 所举例详述是将320*240分割成2*2形式,原点置中央,其中比例与原尺寸关系为

Image.Size*Scale = [2,2];

现在再来看当前举例,此时并非2*2,而是8*6,不过我们可以抓住上例关系。可以得知到,Image.Size*[Scale] = 2*Cell.Size.

此时,我们发现[Scale]和5.1.2.2中例是有差异的这个[Scale]是坐标单位转换的缩放尺度,我们需要从单元格的尺度来来度量这个坐标转换关系,因此,

Translate >平移

这个向量是平移的缩放度量,

因此,通过这个向量我们可以计算出原点在默认参考系中的坐标值;即Translate/Scale 得到原点在默认参考系的是坐标是(-4,3);

Scale >缩放

这个向量是比例的缩放度量。

根据Image.Size,通过该向量可以计算出单元格的像素大小。

[Client]动检参数讨论与ONVIF的更多相关文章

  1. Eureka参数配置->Client端参数

     1.基本参数配置列表: 参数 默认值 说明 eureka.client.availability-zones    告知client有哪些region及availability-zones,支持配置 ...

  2. 配置kubernetes.client的参数遇到的坑

    配置kubernetes.client遇到的一些坑: 一,job-name不能重名,如果job-name已经有了,再创建job,则会发生冲突cliflict 这样将会报以下错误:Reason : Co ...

  3. Hbase记录-client访问zookeeper大量断开以及参数调优分析(转载)

    1.hbase client配置参数 超时时间.重试次数.重试时间间隔的配置也比较重要,因为默认的配置的值都较大,如果出现hbase集群或者RegionServer以及ZK关掉,则对应用程序是灾难性的 ...

  4. 由hbase.client.scanner.caching参数引发的血案(转)

    转自:http://blog.csdn.net/rzhzhz/article/details/7536285 环境描述 Hadoop 0.20.203.0Hbase 0.90.3Hive 0.80.1 ...

  5. redis集群讨论

    一.生产应用场景 二.存储架构演变 三.应用最佳实践 四.运维经验总结 第1.2节:介绍redis cluster在唯品会的生产应用场景,以及存储架构的演变.第3节:redis cluster的稳定性 ...

  6. JVM参数(三)打印所有XX参数及值

    本篇文章基于Java 6(update 21oder 21之后)版本, HotSpot JVM 提供给了两个新的参数,在JVM启动后,在命令行中可以输出所有XX参数和值. -XX:+PrintFlag ...

  7. Struts2大约Action系统培训6大约action的接受三个参数的方法

    我们知道,action在web它在控制器的发展起到了一定作用,通过接收client来到参数,运行不同的模块只实现运营,因此,接收参数是非常重要的组成部分,有接收到的参数的仅前端.操作权限运行数据库后端 ...

  8. zookeeper client API实现(python kazoo 的实现)

    这里主要分析zookeeper client API的实现方式,以python kazoo的实现代码为蓝本进行逻辑分析. 一.代码框架及介绍 API分为同步模式和异步模式.同步模式是在异步模式的基础上 ...

  9. SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer);

    SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer); 第一种方法: 如果你 ...

随机推荐

  1. 【转】Linux命令之查看文件占用空间大小-du,df

    原文网址:http://blog.csdn.net/wangjunjun2008/article/details/19840671 du(disk usage),顾名思义,查看目录/文件占用空间大小 ...

  2. 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to

    警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 警告: [SetPro ...

  3. makefile 自动处理头文件的依赖关系 (zz)

    现在我们的Makefile写成这样: all: main main: main.o stack.o maze.ogcc $^ -o $@ main.o: main.h stack.h maze.hst ...

  4. vs默认的app.config是哪个?

    一:这次是进一步的三层构架,不过还是没有业务逻辑层,但有单独的层的文件夹,解决方案资源管理器图如下: 二:operatorDAl.cs代码: using System; using System.Co ...

  5. 【转】OpenGL基础图形编程(二)

    原文:http://blog.chinaunix.net/uid-20638550-id-1909184.html  分类: 十一.位图与图像 11.1.位图 11.1.1 位图(Bitmap)与字符 ...

  6. JavaScript的Date 方法

    js中Date 方法 Date (对象) Date 对象能够使你获得相对于国际标准时间(格林威治标准时间,现在被称为 UTC-Universal Coordinated Time)或者是 Flash ...

  7. 两种常用的MySQL官方客户端软件

    本博文的主要内容有 .命令行客户端软件---MySQL Command Line Client .MySQL-Workbench客户端软件 1.命令行客户端软件---MySQL Command Lin ...

  8. hdoj 3635 Dragon Balls【并查集求节点转移次数+节点数+某点根节点】

    Dragon Balls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  9. git问题 next fetch will store in remotes/origin

    项目在git的下无法查找到需要的Branch

  10. JavaScript实现简单的打印功能

    var printSetup = function(){ // 打印页面设置 wb.execwb(8,1); }; var printPreView = function(){ // 打印页面预览 w ...