1.范围



Module configuration 参数:

此文档定义了音频和视频的配置和操作的web函数接口,web服务可参考onvif core 规范。
此规范所用到的名称空间的前缀如下所示
另外所参考到的名称空间如下:
4.概述
Analytic应用被分成 image/audio Analytic和application-specific两部分。 这两部分的接口函数依据实际的情况对其进行了抽象描述。应用规范部分对scene描述和scne rule进行了对比。rules或许在内部表现出来(遮挡检测)。这些rule可用用来描述移动侦测。
这两个独立的部分,使用 video/audio engine作为rule engine将事件和动作结合在一起,并据下图形成了analytics的架构。
在此规范中定义了如下函数接口:
Analytics Configuration 函数接口 Scene Description 接口 Rule Configuration 函数接口
此规范定义了一个名为ONVIF Analytics Serice的配置框架。使用此框架的client可以从使用框架实现Onvif Analytics的设备获取配置信息进行设置。配置信息可由client进行动态添加,删除、修改,如果设备支持的话,client可以同时运行多个Analytics
Modules。
Analytics Engine的输出被称为Scene Description。Scene Description代表着对象元数据的抽象描述。此文档定义了一个包含数据类型Type的基于Scene Description的XML以此形式来传输数据。
Rules对Scene Description以及回应消息做了详细解释说明。此标准对于如何于设备交互定义了标准的语法和方法。
实现了Onvif Analytics 服务的设备必须实现Scene Description接口并且允许使用Event服务去发送事件消息。如果设备另外支持了一个rule engine,那么其必须要实现Rules
Analytics Modules接口。
Event,action engine接口,以及配置接口已经超出了本规范的范围。事件的处理是参照Onvif core中定义的处理方式。
video analytics configuration 是依附于Media Profile ,在此种情况下video analytics configuration 就是连接到指定的视频源。
为基于analytics的server端提供必要的设备参数配置命令算法:videoanalyticsconfiguration为engines或者应用处理工具链。
5.服务:
本节覆盖下述三个接口主要信息介绍:Analytics Module 接口 ;Scene description ;Rules 接口
analytics服务允许采用独立的rules,或者独立的analytics(见5.1.3.4以及5.3)。5.1介绍了XML格式的数据组织形式,xml可以如onvif streaming规范中描述的那样通过rtp流的形式将元数据传输到client.
5.1 Scene 描述接口
5.1.1概述
本规范定义设备将scene 描述信息进行编码并以XML的形式传输。scene描述的范围包括了scene的基本元素,并且它的可显示范围覆盖终端用户以及供应商所提供的特定扩展框架。附件A 描述的另外一种可以用于处理供应商提供的待定的规则的scene元素。
5.1.2内容框架
Analytics engine的输入是来自视频源的图像。提取现场元素是从所提取的图像中提取与之相关的现场元素。 提取出来的一个场景是与analtics engine处理的视频源是是有区别的例如(像信息输入行,分辨率,帧裁剪,以及帧率),输入流中的时间框架协议,以及空间框架中的元素定位等是不同的。
关于所选中的视频源的场景元素的时空关系将在5.1.2.1和5.1.2.2中讨论。5.1.3.1中讨论被跟踪对象的外观与行为,5.1.3.2中讨论拆分与合并对象之间的相互作用。
PTZ装置的倾斜以及缩放信息会放在一帧的起始位置。以便客户端去估算场景元素的3D坐标。紧接着一个带有可选转换节点的图像坐标系统会在下节进行讨论。最终,多个对象描述可被所制定的对象树节点所确定。为了 方便有如下定义:
<xs:complexType name="Frame">
<xs:sequence>
<xs:element name="PTZStatus" type="tt:PTZStatus"
minOccurs="0"/><xs:element name="Transformation" type="tt:Transformation"
minOccurs="0"/><xs:element name="Object" type="tt:Object" minOccurs="0"
maxOccurs="unbounded"/><xs:element name="ObjectTree" type="tt:ObjectTree" minOccurs="0"/>
...
</xs:sequence>
<xs:attribute name="UtcTime" type="xs:dateTime" use="required"/>
...
</xs:complexType>
<xs:element name="Frame" type="tt:Frame">
第5.1.2.1描述帧视频分析算法是如何处理分析视频流的。
5.1.2.1 时间关系
由于可在同一图像中提取出多个场景元素,场景元素放置在框架节点上,此框架是在特顶图像从视频源输入便开始建立。帧节点属性包括强制的UTC时间戳。此时间戳可以让client将帧节点准确地映射为一个视频帧。例如,相应的视频帧编码的RTP时间戳经过转换后会出现一样的UTC时间戳。视频流与元数据流之间的时间同步在onvif streaming规范中有详细的介绍。
实例:

5.1.3 场景元素
以及ActiveCells
<tt:Frame UtcTime="2008-10-10T12:24:57.321">
...
</tt:Frame>
...
<tt:Frame UtcTime="2008-10-10T12:24:57.521">
...
</tt:Frame>
5.1.2.2 空间关系
大多数场景元素引用了所提取的图像的信息的一部分。例如,在跟踪对象的时候,随着时间的推移,对象在每一帧中的位置应该被指定。这些位置信息与坐标系有关。默认的坐标系统如下图:
此规范允许为了独立的XML树节点去修改坐标系。这就会导致每一个帧节点都会伴随一个默认坐标系。每个子节点继承与其最近的父节点的坐标系。每个转换节点修改器父节点的坐标系。坐标规范总是与之最近的父节点的坐标系相关。此规范定义了缩放和平移转换节点。场景描述包含了放置转换节点的占位符。
<xs:complexType name="Transformation">
<xs:sequence>
<xs:element name="Translate" type="Vector" minOccurs="0"/>
<xs:element name="Scale" type="Vector" minOccurs="0"/>
...
</xs:sequence>
</xs:complexType>
坐标系转换遵循一个数学表述。一个坐标系包含平移向量T=(Tx,Ty)和缩放向量S=(Sx,Sy)。一个坐标系中的点P(Px,Py)经过公式Q(Qx,Qy)=(Px*Sx+Tx,Py*Sy+Ty)处理后转换为默认坐标系中的另外一个点Q(Qx,Qy).相似的,一个坐标系统中的向量V转换为默认坐标系统中的向量W也是用这样的算法(Wx,Wy)
= (Vx * Sx , Vy * Sy)。
一个转换节点都有一个可选的缩放向量U(Ux,Uy),以及一个可选的转换向量V(Vx,Vy),如果缩放参数并未明确,则缩放向量的默认值是U(1,1)。相似的转换向量的默认值是V(0,0).转换节点以以下方式修改最顶层的坐标系。(Tx,Ty)=(Vx*Sx+Tx,Vy*Sy+Ty)*(Sx,Sy)=(Ux*Sx,Uy*Sy).其中T,S代替最顶层的坐标系统。
例如所给出了场景的坐标系统,在左下角的坐标是(0,0),右上角的坐标是(320,240)。框架节点类似于下面的代码框架,缩放设置为框架框架高度和宽度的2倍。
将场景坐标系(320X240)分成4块,中间是(0,0)---------
<tt:Frame UtcTime="2008-10-10T12:24:57.321">
<tt:Transformation>
<tt:Translate x="-1.0" y="-1.0"/>
<tt:Scale x="0.00625" y="0.00834"/>
</tt:Transformation>
...
</tt:Frame>
本节重点介绍场景元素产生的 目标跟踪算法以及对象处理,对象定义。
如果一帧中没有检测到对象则其场景描述可以忽略,则只要场景描述中的最后一帧为空即可。表明设备会规则的发送场景描述信息,即使此信息为空,但是为了表示分析引擎正在运行依然需要发送场景描述。如果一个同步点被用于请求流,则设备将发出场景描述信息。当一个接收器接收到一个空帧的时候它应该假设后续的所有帧都为空直至其收到一个非空帧。如果上一帧是非空的,则接收器应该认为,接下来的信息描述需要转交。
5.1.3.1 对象(Objects)
对象(Objects)通过对象id(Objects ID)来识别。通过相应的对象ID来收集有关某特定对象的特征作为对象的属性。对象结合,对象重命名,对象分割,对象合并对象删除是分别在一个对象树文件节点中表述的。对象ID是在创建一个对象节点的时候隐式创建的。
5.2 Rules 接口
<xs:complexType name="ObjectId">
<xs:attribute name="ObjectId" type="xs:integer"/>
</xs:complexType>
<xs:complexType name="Object">
<xs:complexContent>
<xs:extension base="ObjectId">
<xs:sequence>
<xs:element name="Appearance" type="Appearance" minOccurs="0"/>
<xs:element name="Behaviour" type="Behaviour" minOccurs="0"/>
...
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
对象节点有Apperance以及Behavour两个属性信息。Apperance从一个可选的转换节点开始。此转换节点可以将一个以帧为中心的坐标系改为以对象为中心的坐标系。紧接着可以确定对像的外形等信息。如果一个对象在帧中被检测到了,其外形信息应该呈现在Apperance属性中。视频分析算法可为当前不可见的并且其信息可由算法推算出来的对象创建节点。在此种情况下外形信息可被忽略。像对象颜色,类别等信息也可添加到属性节点中。此规范在5.1.3.3节详细介绍外形描述相关信息。对象颜色以及类别的定义可在附录B.1中找到。
此规范为对象定义了两种行为(Behavour):Remove(删除),idle(闲置)。这些行为信息会列在行为节点的子节点上。Remove(删除),idle(闲置)属性的存在也不会自动删除相应的对象ID。而是为了在对象开始移动的时候可以重复使用此ID。
对象的行为属性被设置为remove就确定了这块空间被移除。remove属性并不一定用于删除空间,它可以检测到删除虽说删除炒作没有检测到。
之前如果运动的物体不动了可以将其设置为idle.只要没有任何对象变化,则就不会i将其列入到场景描述中。当idle再次出现在场景描述中,则idle标志会被自动删除。
实例:
...
<tt:Frame UtcTime="2008-10-10T12:24:57.321">
<tt:Transformation>
<tt:Translate x="-1.0" y="-1.0"/>
<tt:Scale x="0.003125" y="0.00416667"/>
</tt:Transformation>
<tt:Object ObjectId="12">
<tt:Appearance>
<tt:Shape>
<tt:BoundingBox left="20.0" top="30.0" right="100.0" bottom="80.0"/>
<tt:CenterOfGravity x="60.0" y="50.0"/>
</tt:Shape>
</tt:Appearance>
</tt:Object>
</tt:Frame>
...
<tt:Frame UtcTime="2008-10-10T12:24:57.421">
<tt:Transformation>
<tt:Translate x="-1.0" y="-1.0"/>
<tt:Scale x="0.003125" y="0.00416667"/>
</tt:Transformation>
<tt:Object ObjectId="12">
<tt:Appearance>
- <tt:Shape>
- <tt:BoundingBox left="20.0" top="30.0" right="100.0" bottom="80.0"/>
- <tt:CenterOfGravity x="60.0" y="50.0"/>
- </tt:Shape>
- </tt:Appearance>
- <tt:Behaviour>
- <tt:Idle/>
</tt:Behaviour>
</tt:Object>
</tt:Frame>
...
<tt:Frame UtcTime="2008-10-10T12:24:57.521">
<tt:Transformation>
<tt:Translate x="-1.0" y="-1.0"/>
<tt:Scale x="0.003125" y="0.00416667"/>
</tt:Transformation>
- </tt:Frame>
- ...
- <tt:Frame UtcTime="2008-10-10T12:24:57.621">
- <tt:Transformation>
- <tt:Translate x="-1.0" y="-1.0"/>
- <tt:Scale x="0.003125" y="0.00416667"/>
- </tt:Transformation>
- <tt:Object ObjectId="12">
- <tt:Appearance>
- <tt:Shape>
- <tt:BoundingBox left="25.0" top="30.0" right="105.0" bottom="80.0"/>
- <tt:CenterOfGravity x="65.0" y="50.0"/>
- </tt:Shape>
- </tt:Appearance>
- </tt:Object>
</tt:Frame>
...
<tt:Frame UtcTime="2008-10-10T12:24:57.721">
<tt:Transformation>
<tt:Translate x="-1.0" y="-1.0"/>
<tt:Scale x="0.003125" y="0.00416667"/>
</tt:Transformation>
<tt:Object ObjectId="19">
<tt:Appearance>
<tt:Shape>
<tt:BoundingBox left="20.0" top="30.0" right="100.0" bottom="80.0"/>
<tt:CenterOfGravity x="60.0" y="50.0"/>
</tt:Shape>
</tt:Appearance>
<tt:Behaviour>
<tt:Removed/>
</tt:Behaviour>
</tt:Object>
</tt:Frame>
5.1.3.2 对象树
当两个对象靠的比较近的时候,视频分析器便不再独立跟踪这两个对象。当对象融合的时候应该在框架节点的树节点上增加融合节点。
5.1.3.6 单元格中移动
单元格移动包含移动是在哪里产生的,并对base64Binary编码的激活态单元格进行解码出 行和列数。空间关系tranformation的使用详见5.3.4.1.单元格从左上角开始,X方向为从左到右,Y方向为从上到下。
下面的实例是使用 了单元格侦测实例:
<?xml version="1.0" encoding="UTF-8"?>
<tt:MetaDataStream
xmlns:tt="http://www.onvif.org/ver10/schema">
<tt:VideoAnalytics>
<tt:Frame UtcTime="2010-10-20T12:24:57.321">
<tt:Transformation>
<tt:Translate x="-0.66666" y="-0.6"/>
<tt:Scale x="0.1666666" y="-0.2"/>
</tt:Transformation>
<tt:Extension>
<tt:MotionInCells Columns="8" Rows="6" Cells="AAD8AA=="/>
</tt:Extension>
</tt:Frame>
<tt:Frame UtcTime="2010-10-20T12:24:57.621">
...
</tt:Frame>
</tt:VideoAnalytics>
<tt:Event>
<wsnt:NotficationMessage>
<wsnt:Topic Dialect="...Concrete">
tns1:RuleEngine/CellMotionDetector/Motion
</wsnt:Topic>
<wsnt:Message>
<tt:Message UtcTime= "2010-10-20T12:24:57.628">
<tt:Source>
<tt:SimpleItem Name="VideoSourceConfigurationToken" Value="1"/>
<tt:SimpleItem Name="VideoAnalyticsConfigurationToken" Value="1"/>
<tt:SimpleItem Name="Rule" Value="MotionInDefinedCells"/>
</tt:Source>
<tt:Data>
<tt:SimpleItem Name="IsMotion" Value="true"/>
</tt:Data>
</tt:Message>
</wsnt:Message>
</wsnt:NotficationMessage>
</tt:Event>
</tt:MetaDataStream>
XML结构在5.2.1进行介绍。5.2.2采用了一种指定语言描述特定的规则类型。实现了rule 引擎的设备可以用附录A来表述。5.2.3管理规则。如果设备支持rule引擎,则必须支持完整的rule接口
5.2.1 Rule 表述
rule的配置有两个必须属性:一个是name,另一个是规则类型(type)。下面列出了不同rule规则的配置参数。每一个参数不是simpleitem就是elementitem。每个item的名字属性在参数列表中必须是独一无二的。simpleitem拥有额外的value属性。而elementitem元素的值属性是以子元素的形式给出。simpleitem应尽可能多的包含参数。
下面给出了以个rule配置完整信息。
<tt:VideoAnalyticsConfiguration>
<tt:AnalyticsEngineConfiguration>
...
</tt:AnalyticsEngineConfiguration>
<tt:RuleEngineConfiguration>
<tt:Rule Name="MyLineDetector" Type="tt:LineDetector">
<tt:Parameters>
<tt:SimpleItem Name="Direction" Value="Any"/>
<tt:ElementItem Name="Segments">
<tt:Polyline>
<tt:Point x="10.0" y="50.0"/>
<tt:Point x="100.0" y="50.0"/>
</tt:Polyline>
</tt:ElementItem>
</tt:Parameters>
</tt:Rule>
<tt:Rule Name="MyFieldDetector" Type="tt:FieldDetector">
<tt:Parameters>
<tt:ElementItem Name="Field">
<tt:Polygon>
<tt:Point x="10.0" y="50.0"/>
<tt:Point x="100.0" y="50.0"/>
<tt:Point x="100.0" y="150.0"/>
</tt:Polygon>
</tt:ElementItem>
</tt:Parameters>
</tt:Rule>
</tt:RuleEngineConfiguration>
</tt:VideoAnalyticsConfig
5.2.2规则描述语言
规则描述信息包含某种类型规则的规则类型以及所包含的所有参数信息。规则引擎的输出是事件,事件要不是事件引擎要不就是客户端的一个订阅。
为了方便有如下定义:
<xs:element name="RuleDescription" type="tt:ConfigDescription"/>
<xs:complexType name="ConfigDescription">
<xs:sequence>
<xs:element name="ParameterDescription"
type="tt:ItemListDescription"/>
<xs:element name="MessageDescription" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="tt:MessageDescription">
<xs:sequence>
<xs:element name="ParentTopic" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
...
</xs:sequence>
<xs:attribute name="Name" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="ItemListDescription">
<xs:sequence>
<xs:element name="SimpleItemDescription" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Name" type="xs:string" use="required"/>
<xs:attribute name="Type" type="xs:Qname" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="ElementItemDescription" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Name" type="xs:string" use="required"/>
<xs:attribute name="Type" type="xs:Qname" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
确定规则的参数在参数描述列表中列出。所有的参数是simpleitem或者Elementitem。所有的item描述都包含name,type属性这些属性残开XML结构。在simpleitem描述中type属性的定义必须参考SimpleType的定义 而Elementitem的type属性必须参考在XML框架机构中的全局元素声明。
对应类型的规则的输出是多个Message表述。每个message描述中都有依据和新规范存在的信息载荷等描述信息。另外信息描述必须包含对应订阅的
B.2 Cell Motion Detector
Cell Motion Detector 规则去处理 cell Motion Analytics Engine的输出。规则类型是:“tt:CelMotionDetector”,包含4个参数:MinCount AlarmOnDelay AlarmOffDelay
MinCount:确定在移动侦测产生的时候,产生移动侦测的对象同时覆盖的Cell的最小个数。
AlarmOnDelay:产生的移动侦测信号必须在这个时间内激活移动侦测报警信号。单位ms
AlarmOffDelay: 已经产生的报警信号至少在AlarmOffDelay时间内不活跃才把这个移动侦测信号设置为不活跃状态。
采用 “tt:CellLayout”类型定义的Cell,均可以独立的设置激活或者停用。如果想排除由于连续运动引起的一部分区域,则可将这部分的cell设置为不活跃。对cell的激活与停用采用一个位掩码来表示。如果有1000个cell需要设置为激活则需要设置1000 个位掩码。为了对这些位掩码进行有效的编码采用了ISO12369(TIFF 6.0版本的)的一种运行长度编码器"Packbits".使用此编码器后的输出存储为base64binary。
关于base64的编解码参考:http://blog.csdn.net/irwin_chen/article/details/9360845
规则如下:
<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>
对此部分代码中的MinCount AlarmOnDelay AlarmOffDelay 不再介绍
ActiveCells: 1表示此cell为激活态,0表示此cell为停用态
第一个cell位于左上角,接着从左到右,一行一行的对cell进行编号。如果cell的个数不是8的倍数则最后一个字节用0补充
IsMotion :如果检测到移动侦测则置1
Cell Motion Detector 规则配置样例:
<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>
B.2 Cell Motion Analytics Engine
Cell Motion detector确定移动侦测。并将图像细分为多个正方形或者矩形的单元格cell。每个单元格是一定的像素数,5x5的cell的像素数是25.Cell Motion detector.在每个单元格中估算移动信号。 一个Cell Motion detector包含了两个单元即AnalyticsModule以及Rule.
AnalyticsModule包含:CellLayout 以及Sensitivity。
Rule可以根据摄像机去适应调整Cell Motion detector。
设置的灵敏度越低,则亮度值变化越高,才能被认为是一个移动侦测。低灵敏度可以去抑制误触发。
感应区域的再细分取决于Analytics Engine,而不是由用户设置的。“tt:CellLayout”类型从 columns,rows, 以及Transfoprmation几个部分描述了cell框架。columns以及rows分别从x和Y方向描述cell的个数。第一个cell在左上角,最后一个cell在右下角。Transfoprmation将5.1.2.2所述的框架坐标系转换为cell网格。新坐标系的起点是左上角的cell。在x方向的尺寸对应于cel的宽度,在y方向的尺寸对应于cell的高度。
B.2.1 Module configuration
cell Motion Analytics Engine moduleconfiguration 通过 Analytics Module 描述语言来描述:
<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>
Sensitivity:灵敏度。范围 0--100; int
layout: 类型通常由motion dector的硬件类型来定。无法修改。layout的结构框架定义cell组的大小以及与视频图像的映射关系。定义如下:
<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>
columns:x方向上的cell单元格的个数
rows:y方向上的cell单元格的个数
transformation:cell单元格与视频帧的映射。
下面是一个cellMotionEngine配置8X6cell Motion Dector描述的位置。视频对象被假定为180x150像素大小。cell具有15X15的尺寸以及cell Motion Dectord 的工作区大小是120X90像素。
<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" />????(-0.66666,0.6) 15/180
<tt:Scale x="0.1666666" y="-0.2" />
????(0.1666666,-0.2)</tt:Transformation>
</tt:CellLayout>
</tt:ElementItem>
</tt:Parameters>
</tt:AnalyticsModule>
</tt:AnalyticsEngineConfiguration>