-
Notifications
You must be signed in to change notification settings - Fork 86
/
Analytics.xml
executable file
·6429 lines (6426 loc) · 283 KB
/
Analytics.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0"?>
<?xml-stylesheet href="docbook.xsl" type="text/xsl" ?>
<book xmlns="http://docbook.org/ns/docbook" version="5.0">
<info>
<title>Analytics Service Specification</title>
<titleabbrev>Analytics</titleabbrev>
<releaseinfo>21.06</releaseinfo>
<author>
<orgname>ONVIF™</orgname>
<uri>www.onvif.org</uri>
</author>
<pubdate>June, 2021</pubdate>
<mediaobject>
<imageobject>
<imagedata fileref="media/logo.png" contentwidth="60mm"/>
</imageobject>
</mediaobject>
<copyright>
<year>2008-2020</year>
<holder>ONVIF™ All rights reserved.</holder>
</copyright>
<legalnotice>
<para>Recipients of this document may copy, distribute, publish, or display this document so
long as this copyright notice, license and disclaimer are retained with all copies of the
document. No license is granted to modify this document.</para>
<para>THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND THEIR
AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE;
OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS,
TRADEMARKS OR OTHER RIGHTS.</para>
<para>IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FOR ANY
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR
RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT, WHETHER OR NOT (1) THE CORPORATION,
MEMBERS OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2)
SUCH DAMAGES WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR
DISTRIBUTION OF THIS DOCUMENT. THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT
APPLY TO, INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS AND THEIR
RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN CERTAIN WRITTEN POLICIES OF
THE CORPORATION.</para>
</legalnotice>
<revhistory>
<revision>
<revnumber>2.1</revnumber>
<date>Jul-2011</date>
<author>
<personname>Hans Busch</personname>
</author>
<revremark>Split from Core 2.0 without change of content.</revremark>
</revision>
<revision>
<revnumber>2.1.1</revnumber>
<date>Jan-2012</date>
<author>
<personname>Hans Busch</personname>
</author>
<revremark>Change Requests 505, 535</revremark>
</revision>
<revision>
<revnumber>2.2</revnumber>
<date>May-2012</date>
<author>
<personname>Hasan T. Ozdemir</personname>
</author>
<revremark>Incorporated 2.2 enhancements</revremark>
</revision>
<revision>
<revnumber>2.2.1</revnumber>
<date>Dec-2012</date>
<author>
<personname>Hans Busch</personname>
</author>
<revremark>Change Request 708</revremark>
</revision>
<revision>
<revnumber>2.4</revnumber>
<date>Aug-2013</date>
<author>
<personname>Hasan T. Ozdemir</personname>
</author>
<revremark>Generalized from VideoAnalytics. Added Audio events.</revremark>
</revision>
<revision>
<revnumber>2.4.1</revnumber>
<date>Dec-2013</date>
<author>
<personname>Michio Hirai</personname>
</author>
<revremark>Change Request 1164, 1193</revremark>
</revision>
<revision>
<revnumber>2.4.2</revnumber>
<date>Jun-2014</date>
<author>
<personname>Michio Hirai</personname>
</author>
<revremark>Change Request 1305</revremark>
</revision>
<revision>
<revnumber>2.5</revnumber>
<date>Dec-2014</date>
<author>
<personname>Hasan T. Ozdemir</personname>
</author>
<author>
<personname>Michio Hirai</personname>
</author>
<revremark>Added A6 Query Rule Change Request 1559</revremark>
</revision>
<revision>
<revnumber>16.06</revnumber>
<date>Jun-2016</date>
<author>
<personname>Hiroyuki Sano</personname>
</author>
<revremark>Change Request 1821, 1825, 1844</revremark>
</revision>
<revision>
<revnumber>16.12</revnumber>
<date>Dec-2016</date>
<author>
<personname>Steven Dillingham</personname>
</author>
<author>
<personname>Hiroyuki Sano</personname>
</author>
<revremark>Added Motion Region Detection Rules: 5.2.3.6, Annex C Change Request
1871</revremark>
</revision>
<revision>
<revnumber>17.06</revnumber>
<date>Jun-2017</date>
<author>
<personname>Hans Busch</personname>
</author>
<author>
<personname>Hiroyuki Sano</personname>
</author>
<revremark>Updated method layouts. Apply 2089 Change Request 1843, 1984, 2042, 2052, 2072,
2114, 2137 Added GetAnalyticsModuleOptions & Annex D</revremark>
</revision>
<revision>
<revnumber>17.12</revnumber>
<date>Dec-2017</date>
<author>
<personname>Hiroyuki Sano</personname>
</author>
<revremark>Change Request 2177, 2204</revremark>
</revision>
<revision>
<revnumber>18.06</revnumber>
<date>Jun-2018</date>
<author>
<personname>Qian Zhou</personname>
</author>
<author>
<personname>Hiroyuki Sano</personname>
</author>
<revremark>Added Vehicle information, Speed, License plate information descriptor Change
Request 2234, 2235, 2245, 2305, 2306</revremark>
</revision>
<revision>
<revnumber>18.12</revnumber>
<date>Dec-2018</date>
<author>
<personname>Hiroyuki Sano</personname>
</author>
<revremark>Change Request 2322, 2354, 2363, 2376, 2385, 2437</revremark>
</revision>
<revision>
<revnumber>19.06</revnumber>
<date>Jun-2019</date>
<author>
<personname>Sujith Raman</personname>
</author>
<author>
<personname>Hiroyuki Sano</personname>
</author>
<author>
<personname>Hans Busch</personname>
</author>
<revremark>Added PTZ Motion Region Configuration, Tampering Configuration Change Request
2462, 2484 Change Request 2465</revremark>
</revision>
<revision>
<revnumber>19.12</revnumber>
<date>Dec-2019</date>
<author>
<personname>Haina Han</personname>
</author>
<author>
<personname>Hiroyuki Sano</personname>
</author>
<revremark>Added Image Sending, Object Classification, Face and Human body descriptor Change
Request 2504, 2527, 2528, 2555, 2556, 2565, 2566, 2567, 2578, 2628</revremark>
</revision>
<revision>
<revnumber>20.06</revnumber>
<date>Jun-2020</date>
<author>
<personname>Michio Hirai</personname>
</author>
<author>
<personname>Sujith Raman</personname>
</author>
<author>
<personname>Hainha Han, Sriram Bhetanabottla</personname>
</author>
<revremark>Change Request 2695, 2640, 2641, 2669, 2671, 2678, 2682, 2685, 2690, 2696, 2698,
2686 Added PolyLine and Polygon options Added Recognition rule engines</revremark>
</revision>
<revision>
<revnumber>20.12</revnumber>
<date>Dec-2020</date>
<author>
<personname>Hans Busch</personname>
</author>
<revremark>Add occurrence section. Refactor Annex A. Remove Query Rule and Declaritive
Motion Detector.</revremark>
</revision>
<revision>
<revnumber>21.06</revnumber>
<date>Jun-2021</date>
<author>
<personname>Hans Busch</personname>
</author>
<revremark>Update counting rule. Minor editorial fixes.</revremark>
</revision>
</revhistory>
</info>
<chapter>
<title>Scope</title>
<para>This document defines the web service interface for configuration and operation of video/audio analytics.</para>
<para>Web service usage is outside of the scope of this document. Please refer to the ONVIF core specification.</para>
<para>Since the scope of this service is extended to include audio data, the service is renamed from Video Analytics Service to Analytics Service.</para>
</chapter>
<chapter>
<title>Normative references</title>
<para>ONVIF Core Specification</para>
<para role="reference"><<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/specs/core/ONVIF-Core-Specification.pdf"></link>></para>
<para>ONVIF Media Service Specification</para>
<para role="reference"><<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/specs/srv/media/ONVIF-Media-Service-Spec.pdf"></link>></para>
<para>ONVIF Streaming Specification</para>
<para role="reference"><<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/specs/stream/ONVIF-Streaming-Spec.pdf"></link>></para>
<para>ISO 12639:2004. Graphic Technology -- Prepress digital data exchange -- Tag image file format for image technology (TIFF/IT). TIFF Revision 6.0</para>
<para role="reference"><<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=34342"></link>></para>
<para>ISO 3166-1:2013 Codes for the representation of names of countries and their subdivisions -- Part 1: Country codes</para>
<para role="reference"><<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.iso.org/standard/63545.html"></link>></para>
</chapter>
<chapter>
<title>Terms and Definitions</title>
<section>
<title>Definitions</title>
<informaltable>
<tgroup cols="2">
<colspec colname="c1" colwidth="24*" />
<colspec colname="c2" colwidth="76*" />
<tbody valign="top">
<row>
<entry align="left">
<para>
<emphasis role="bold">Video Analytics</emphasis>
</para>
</entry>
<entry align="left">
<para>Algorithms used to evaluate video data for meaning of content </para>
</entry>
</row>
<row>
<entry align="left">
<para>
<emphasis role="bold">Audio Analytics</emphasis>
</para>
</entry>
<entry align="left">
<para>Algorithms used to evaluate audio data for meaning of content</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section>
<title>Abbreviations</title>
<informaltable>
<tgroup cols="2">
<colspec colname="c1" colwidth="24*" />
<colspec colname="c2" colwidth="76*" />
<tbody valign="top">
<row>
<entry valign="middle">
<para>PTZ</para>
</entry>
<entry valign="middle">
<para>Pan Tilt Zoom</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section>
<title>Namespaces</title>
<para>
<xref linkend="_Ref515970930" /> lists the prefix and namespaces used in this specification. Listed prefixes are not part of the standard and an implementation can use any prefix.</para>
<table xml:id="_Ref515970930">
<title>Namespaces used in this specification</title>
<tgroup cols="3">
<colspec colname="c1" colwidth="8*" />
<colspec colname="c2" colwidth="44*" />
<colspec colname="c3" colwidth="48*" />
<thead>
<row>
<entry>
<para>Prefix</para>
</entry>
<entry>
<para>Namespace URI</para>
</entry>
<entry>
<para>Description</para>
</entry>
</row>
</thead>
<tbody valign="top">
<row>
<entry>
<para>tt</para>
</entry>
<entry>
<para>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/ver10/schema">http://www.onvif.org/ver10/schema</link>
</para>
</entry>
<entry>
<para>XML schema descriptions in this specification.</para>
</entry>
</row>
<row>
<entry>
<para>ter</para>
</entry>
<entry>
<para>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/ver10/error">http://www.onvif.org/ver10/error</link>
</para>
</entry>
<entry>
<para>The namespace for ONVIF defined faults.</para>
</entry>
</row>
<row>
<entry>
<para>tns1</para>
</entry>
<entry>
<para>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/ver10/topics">http://www.onvif.org/ver10/topics</link>
</para>
</entry>
<entry>
<para>The namespace for the ONVIF topic namespace</para>
</entry>
</row>
<row>
<entry>
<para>axt</para>
</entry>
<entry>
<para>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/ver20/analytics">http://www.onvif.org/ver20/analytics</link>
</para>
</entry>
<entry>
<para>XML schema descriptions for the analytics service</para>
</entry>
</row>
<row>
<entry>
<para>ttr</para>
</entry>
<entry>
<para>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/ver20/analytics/radiometry">http://www.onvif.org/ver20/analytics/radiometry</link>
</para>
</entry>
<entry>
<para>XML schema descriptions for Radiometry</para>
</entry>
</row>
<row>
<entry>
<para>fc</para>
</entry>
<entry>
<para>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/ver20/analytics/humanface">http://www.onvif.org/ver20/analytics/humanface</link>
</para>
</entry>
<entry>
<para>XML schema descriptions for human face metadata</para>
</entry>
</row>
<row>
<entry>
<para>bd</para>
</entry>
<entry>
<para>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/ver20/analytics/humanbody">http://www.onvif.org/ver20/analytics/humanbody</link>
</para>
</entry>
<entry>
<para>XML schema descriptions for human body metadata</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>This specification references to the following namespaces (listed in <xref linkend="_Ref11684852" />) by specified prefix.</para>
<table xml:id="_Ref11684852">
<title>Referenced namespaces </title>
<tgroup cols="3">
<colspec colname="c1" colwidth="11*" />
<colspec colname="c2" colwidth="39*" />
<colspec colname="c3" colwidth="50*" />
<thead>
<row>
<entry>
<para> Prefix </para>
</entry>
<entry>
<para> Namespace URI </para>
</entry>
<entry>
<para> Description </para>
</entry>
</row>
</thead>
<tbody valign="top">
<row>
<entry>
<para>xs </para>
</entry>
<entry>
<para>http://www.w3.org/2001/XMLSchema </para>
</entry>
<entry>
<para>Instance namespace as defined by XS [XML-Schema, Part1] and [XML-Schema, Part 2]</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</section>
</chapter>
<chapter>
<title>Overview</title>
<para>Analytic applications are divided into image/audio analysis and application-specific parts. The interface between these two parts produces an abstraction that describes the scene based on the objects present. The application specific part performs a comparison of the scene descriptions and of the scene rules (such as virtual lines that are prohibited to cross, or polygons that define a protected area). Other rules may represent intra-object behaviour such as objects following other objects (to form a tailgating detection). Such rules can also be used to describe prohibited object motion, which may be used to establish a speed limit.</para>
<para>These two separate parts, referred to as the video/audio analytics engine and as the rule engine, together with the events and actions, form the analytics architecture according to this specification as illustrated in <xref linkend="_Ref210463770" />.</para>
<para>The analytics architecture consists of elements and interfaces. Each element provides a functionality corresponding to a semantically unique entity of the complete video/audio analytics solution. Interfaces are unidirectional and define an information entity with a unique content. Only the Interfaces are subject to this specification. Central to this architecture is the ability to distribute any elements or sets of adjacent elements to any device in the network.</para>
<figure xml:id="_Ref210463770">
<title>Analytics architecture</title>
<mediaobject>
<imageobject>
<imagedata fileref="media/Analytics/image4.svg" contentwidth="128.24mm" />
</imageobject>
</mediaobject>
</figure>
<para>The following interfaces are defined in this standard:</para>
<itemizedlist>
<listitem>
<para>Analytics Configuration Interface</para>
</listitem>
<listitem>
<para>Scene Description</para>
</listitem>
<listitem>
<para>Rule Configuration Interface</para>
</listitem>
</itemizedlist>
<para>This specification defines a configuration framework for the analytics engine called ONVIF Analytics Service. This framework enables a client to contact a device implementing the ONVIF Analytics Service for supported analytics modules and their configurations. Configurations of such modules can be dynamically added, removed or modified by a client, allowing a client to run multiple Analytics Modules in parallel if supported by the device.</para>
<para>The output from the Analytics Engine is called a <emphasis>Scene Description</emphasis>. The Scene Description represents the abstraction of the scene in terms of metadata for the objects, either static or dynamic, that are part of the scene. This specification defines an XML-based Scene Description Interface including data types. </para>
<para>Rules describe how the scene description is interpreted and how to react on that information. The specification defines standard rule syntax and methods to communicate configuration of these rules from the application to the device. </para>
<para>A device supporting ONVIF Analytics Service shall implement the Scene Description Interface and allow events to be dispatched using the Event Service. If the device additionally supports a rule engine then it shall implement the Rules Analytics Modules Interface.</para>
<para>Event and action engine interfaces and configuration is out of scope of this specification. The event interface is handled through the Event Service as described in the ONVIF Core specification.</para>
<para>An analytics configuration can be attached to a Media Profile if the ONVIF Media Service is present. In that case the analytics configuration becomes connected to a specific source.</para>
<para>For server based analytics the ONVIF Analytics Device Service provides for the necessary configuration commands to bundle single analytic algorithm configurations represented as AnalyticsConfiguration to engines or application like processing chains (e.g. all algorithms and rules necessary to build a “lost baggage detector”).</para>
<para>Note that the Media 1 Service Specification uses the name VideoAnalyticsConfiguration for historic reasons which maps to the same entity as the AnalyticsConfiguration.</para>
<para>WSDL for the analytics service is part of the framework and provided in the Analytics WSDL file <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/ver20/analytics/wsdl/analytics.wsdl">http://www.onvif.org/ver20/analytics/wsdl/analytics.wsdl</link>. </para>
<para>Rule and Module description reference types that are not already defined in the [ONVIF Schema] are defined in the RULES Schema file <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/ver20/analytics/wsdl/rules.xsd">http://www.onvif.org/ver20/analytics/wsdl/rules.xsd</link>.</para>
<para>Radiometry types, modules and rules are defined in the RADIOMETRY Schema file <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/ver20/analytics/radiometry.xsd">http://www.onvif.org/ver20/analytics/radiometry.xsd</link>.</para>
</chapter>
<chapter>
<title>Service</title>
<para>This section covers the following main areas of this architecture:</para>
<itemizedlist>
<listitem>
<para>Analytics Module interface </para>
</listitem>
<listitem>
<para>Scene description</para>
</listitem>
<listitem>
<para>Rules interface</para>
</listitem>
</itemizedlist>
<para>The analytics service allows fine-grained configuration of individual rules and individual analytics modules (see <xref linkend="_Ref11057187" /> and <xref linkend="_Ref476820362" />). <xref linkend="_Toc213144786" /> introduces the XML-based scene description, which can be streamed as metadata to clients via RTP as defined in the ONVIF Streaming Specification.</para>
<section xml:id="_Toc213144786">
<title>Scene Description Interface</title>
<section>
<title>Overview</title>
<para>This specification defines the XML schema that shall be used to encode Scene Descriptions by a device. The scope of the Scene Description covers basic Scene Elements which can be displayed in a video overlay to the end-user as well as a framework for vendor-specific extensions. Annex A shows additional Scene Elements that may be used for processing vendor-specific rules.</para>
</section>
<section>
<title>Frame Related Content</title>
<para>The input of the analytics engine is images from a video source. The extracted scene elements are associated with the image from which they were extracted. An extracted scene is distinguished from the general description of the video source processed by the analytics engine (information such as video input line, video resolution, frame cropping, frame rate etc.), the temporal frame association within the input stream, and the spatial positioning of elements within a frame.</para>
<para>The temporal and spatial relation of scene elements with respect to the selected video source is discussed in sections <xref linkend="_Ref208711862" /> and <xref linkend="_Ref208712096" />. The appearance and behaviour of tracked objects is discussed in section <xref linkend="_Ref208712481" />. Interactions between objects like splits and merges are described in section <xref linkend="_Ref208712401" />. </para>
<para>A PTZ device can put information about the pan, tilt and zoom at the beginning of a frame, allowing a client to estimate the 3D coordinates of scene elements. Next, the image coordinate system can be adapted with an optional transformation node which is described in the next subsection. Finally, multiple object descriptions can be placed and their association can be specified within an ObjectTree node. Optionally SceneImageRef and SceneImage can also be included inside Frame. Below, the definitions are included for convenience<footnote xml:id="__FN1__"><para>Please note that the schema is included here for <emphasis>information only. </emphasis>[ONVIF Schema] contains the normative schema definition.</para></footnote>:</para>
<programlisting><![CDATA[<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:element name="SceneImageRef" type="tt:anyURI" minOccurs="0"/>
<xs:element name="SceneImage" type="xs:base64Binary" minOccurs="0"/>
...
</xs:sequence>
<xs:attribute name="UtcTime" type="xs:dateTime" use="required"/>
...
</xs:complexType>
<xs:element name="Frame" type="tt:Frame">
]]></programlisting>
<para>Subsection <xref linkend="_Ref208711862" /> describes how frames processed by the analytics algorithm are referenced within the analytics stream. </para>
<section xml:id="_Ref208711862">
<title>Temporal Relation</title>
<para>Since multiple scene elements can be extracted from the same image, scene elements are listed below a frame node that establishes the link to a specific image from the video input. The frame node contains a mandatory UtcTime attribute. This UtcTime timestamp shall enable a client to map the frame node exactly to one video frame. For example, the RTP timestamp of the corresponding encoded video frame shall result in the same UTC timestamp after conversion. The synchronization between video and metadata streams is further described in the ONVIF Streaming Specification. </para>
<para>Note that there is not necessarily a one to one relation between video and metadata frames. Typically an analytics module generates metadata at a lower frame rate. However when more than one analytics module generates metadata, multiple metadata frames may occur for the same video frame and also the temporal order may vary because different analytics modules may have differing computational delay.</para>
<para>When multiple analytics modules are streaming metadata in interleaved frames than the name of the originating analytics module shall be signaled via the Frame Source attribute.</para>
<para>Example:</para>
<programlisting><tt:Frame <emphasis role="bold">UtcTime=</emphasis>"2008-10-10T12:24:57.321">
...
</tt:Frame>
...
<tt:Frame <emphasis role="bold">UtcTime=</emphasis>"2008-10-10T12:24:57.521">
...
</tt:Frame>
</programlisting>
</section>
<section xml:id="_Ref208712096">
<title>Spatial Relation</title>
<para>Most scene elements refer to some part in an image from which information has been extracted. For instance, when tracking objects over time, their position within each frame shall be specified. These positions shall relate to a coordinate system. The normalized coordinate system is shown in <xref linkend="_Ref213224534" />.</para>
<figure xml:id="_Ref213224534">
<title>Normalized frame coordinate system</title>
<mediaobject>
<imageobject>
<imagedata fileref="media/Analytics/coordinates.svg" contentwidth="80mm" /> </imageobject>
</mediaobject>
</figure>
<para>This specification allows modification of the coordinate system for individual nodes of the XML tree. As a result, each frame node starts with the normalized coordinate system. Each child node inherits the most recent coordinate system of its parent. A transformation node modifies the most recent coordinate system of its parent. Coordinate specifications are always related to the most recent coordinate system of the parent node. </para>
<para>The specification defines transformation nodes for scaling and translation. The Scene Description contains placeholders where these transformation nodes are placed<footnote xml:id="__FN2__"><para>Please note that the schema is included here for <emphasis>information only. </emphasis>[ONVIF Schema] contains the normative schema definition.</para></footnote>.</para>
<programlisting><![CDATA[<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>
]]></programlisting>
<para>It follows a mathematical description of coordinate systems and transformations. A coordinate transformation consists of a translational vector <inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image5.svg" contentwidth="55" contentdepth="51" /></imageobject></inlinemediaobject> and scaling <inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image6.svg" contentwidth="59" contentdepth="51" /></imageobject></inlinemediaobject>. A point <inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image7.svg" contentwidth="65" contentdepth="51" /></imageobject></inlinemediaobject> given with respect to this coordinate system is transformed into the corresponding point <inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image8.svg" contentwidth="61" contentdepth="51" /></imageobject></inlinemediaobject> of the normalized coordinate system by the following formula: <inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image9.svg" contentwidth="139" contentdepth="51" /></imageobject></inlinemediaobject>. Similarly, a vector <emphasis role="bold"><emphasis>v</emphasis></emphasis> given with respect to the coordinate system is transformed into the corresponding vector <emphasis role="bold"><emphasis>w</emphasis></emphasis> of the normalized coordinate system by: <inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image10.svg" contentwidth="109" contentdepth="51" /></imageobject></inlinemediaobject>.</para>
<para>A transformation node has an optional scaling vector <inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image11.svg" contentwidth="61" contentdepth="51" /></imageobject></inlinemediaobject> and an optional translational vector <inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image12.svg" contentwidth="60" contentdepth="51" /></imageobject></inlinemediaobject>. If the scaling is not specified, its default value <inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image13.svg" contentwidth="51" contentdepth="48" /></imageobject></inlinemediaobject> is assumed. Similarly, the default value for the translation is <inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image14.svg" contentwidth="52" contentdepth="48" /></imageobject></inlinemediaobject>. The transformation node modifies the top-most coordinate system in the following way:</para>
<para><inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image15.svg" contentdepth="51" /></imageobject></inlinemediaobject>,
<inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image16.svg" contentdepth="51" /></imageobject></inlinemediaobject>, where
<inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image17.svg" contentdepth="51" /></imageobject></inlinemediaobject> and
<inlinemediaobject><imageobject><imagedata fileref="media/Analytics/image18.svg" contentdepth="51" /></imageobject></inlinemediaobject> replace the top-most coordinate system.
</para>
<para>For example, the coordinates of the scene description are given in a frame coordinate system, where the lower-left corner has coordinates (0,0) and the upper-right corner coordinates (320,240). The frame node resembles the following code where the scaling is set to the doubled reciprocal of the frame width and the frame height:</para>
<programlisting><![CDATA[<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>
]]></programlisting>
</section>
</section>
<section>
<title>Scene Elements</title>
<para>This section focuses on scene elements generated by object tracking algorithms and defines object handling and object shapes for them.</para>
<para>Frames where no objects have been detected can be skipped within the scene description to save bandwidth, as long as the last frame in the scene description is empty as well. . It is recommended that the device regularly sends the scene description even if it is empty. This is in order to indicate that the analytics engine is operational. The device shall send a scene description if a SynchronizationPoint is requested for the corresponding stream.</para>
<para>When the receiver of a scene description receives an empty frame, the receiver should assume that all subsequent frames are empty as well until the next non-empty frame is received. When the last received frame is non-empty, the receiver should assume that a description of the next processed frame will be transmitted.</para>
<section xml:id="_Ref208712481">
<title>Objects</title>
<para>Objects are identified via their ObjectID. Features relating to one particular object are collected in an object node with the corresponding ObjectID as an attribute. Associations of objects, such as Object Renaming, Object Splits, Object Merges and Object Deletions are expressed in a separate ObjectTree node. An ObjectID is implicitly created with the first appearance of the ObjectID within an object node<footnote xml:id="__FN3__"><para>Please note that the schema is included here for <emphasis>information only. </emphasis>[ONVIF Schema] contains the normative schema definition.</para></footnote>.</para>
<programlisting><![CDATA[<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:attribute name="Parent" type="xs:integer">
</xs:extension>
</xs:complexContent>
</xs:complexType>
]]></programlisting>
<para>The object node has two placeholders for appearance and behaviour information. The appearance node starts with an optional transformation node which can be used to change from a frame-centric coordinate system to an object-centric coordinate system. Next, the Shape of an object can be specified. If an object is detected in a frame, the shape information should be present in the appearance description. The analytics algorithm may add object nodes for currently not visible objects, if it is able to infer information for this object otherwise. In such cases, the shape description may be omitted.</para>
<para>Object features such as shape (see <xref linkend="_Ref208821074" />), colour (see <xref linkend="_Toc214944464" />) and object class (see <xref linkend="_Ref485906999" />) can be added to the appearance node. </para>
<para>This specification defines two standard behaviours for objects: Removed or Idle. These behaviours shall be listed as child nodes of the behaviour node of an object. The presence of a removed or idle node does not automatically delete the corresponding ObjectID, making it possible to reuse the same ObjectID when the object starts moving again.</para>
<para>An object marked with the removed behaviour specifies the place from where the real object was removed. The marker should not be used as the behaviour of the removed object. It is possible to detect the removal even if the action of taking away the object was not detected.</para>
<para>Objects previously in motion can be marked as Idle to indicate that the object stopped moving. As long as such objects don’t change, they will not be listed in the scene description anymore. When an Idle object appears again in the Scene Description, the Idle flag is removed automatically. </para>
<para>Example:</para>
<programlisting><![CDATA[ ...
<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="80.0" right="100.0" bottom="30.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="80.0" right="100.0" bottom="30.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="80.0" right="105.0" bottom="30.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="80.0" right="100.0" bottom="30.0"/>
<tt:CenterOfGravity x="60.0" y="50.0"/>
</tt:Shape>
</tt:Appearance>
<tt:Behaviour>
<tt:Removed/>
</tt:Behaviour>
</tt:Object>
</tt:Frame>
]]></programlisting>
<para>Objects can be related, for example, a LicensePlate object can be related to Vehicle Object to which it belongs, in this case LicensePlate object which is child has the Vehicle's ObjectId as Parent.</para>
<para>Example:</para>
<programlisting><![CDATA[ <tt:Frame UtcTime="2019-06-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="180.0" right="100.0" bottom="30.0"/>
<tt:CenterOfGravity x="60.0" y="80.0"/>
</tt:Shape>
<tt:Class>
<tt:Type Likelihood="0.9">Vehicle</tt:Type>
</tt:Class>
</tt:Appearance>
</tt:Object>
</tt:Frame>
<tt:Frame UtcTime="2019-06-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="14" Parent="12">
<tt:Appearance>
<tt:Shape>
<tt:BoundingBox left="40.0" top="150.0" right="70.0" bottom="100.0" />
<tt:CenterOfGravity x="57.0" y="130.0" />
</tt:Shape>
<tt:Class>
<tt:Type Likelihood="0.6">LicensePlate</tt:Type>
</tt:Class>
</tt:Appearance>
</tt:Object>
</tt:Frame>
]]></programlisting>
</section>
<section xml:id="_Ref208712401">
<title>Object Tree</title>
<para>When two objects come too close to each other, such that the analytics can no longer track them individually, an object merge should be signalled by adding a merge node to the ObjectTree node of the frame node. The merge node contains a From node listing the merging ObjectIds and a To node containing the ObjectId. The merged object is used in future frames as the tracking ID. If the analytics algorithm detects that one object is occluding the others and is able to track this object further, the occluding object should be put in the To node.</para>
<para>The separation of objects is indicated by a Split node. In this case, the From node contains a single ObjectId representing the object which is split in the current frame. The objects separating from this split object are listed in the To node. The ObjectId of the From node can reappear in the To node, if this object did occlude the others and the analytics algorithm was able to track this object during the occlusion.</para>
<para>An object does not need to be involved in a merge operation in order to be part of a split operation. For example, if an object is moving together with a person, and the person leaves the object somewhere, the object might be detected the first time by the analytics when the person moves away from the object left behind. In such cases, the first appearance of the object can be combined with a split operation.</para>
<para>When a merged object reappears as an object node in a later frame without a split indication, then this object is implicitly split. The analytics algorithm, however, could not determine where the split object came from.</para>
<para>An analytics algorithm can track and remember a limited number of objects. In order to indicate that a certain object has been removed from the memory of the algorithm and therefore never appear again, the scene description can contain a Delete node within the ObjectTree node.</para>
<para>If the analytics algorithm can not decide during a Split operation the identity of an object, it should use a new ObjectId. When the algorithm has collected sufficient evidence for the identity of this object, it can change the ObjectId via the Rename operation. The Rename operation can also be used when an object reenters the scene and the true identity is discovered after some time.</para>
<para>A deleted ObjectId shall not be reused within the scene description until the ObjectId container has wrapped around.</para>
<para>Example:</para>
<programlisting><![CDATA[<tt:Frame UtcTime="2008-10-10T12:24:57.321">
<tt:Object ObjectId="12">
...
</tt:Object>
<tt:Object ObjectId="17">
...
</tt:Object>
</tt:Frame>
<tt:Frame UtcTime="2008-10-10T12:24:57.421">
<tt:Object ObjectId="12">
...
</tt:Object>
<tt:ObjectTree>
<tt:Merge>
<tt:From ObjectId="12"/>
<tt:From ObjectId="17"/>
<tt:To ObjectId="12"/>
</tt:Merge>
</tt:ObjectTree>
</tt:Frame>
<tt:Frame UtcTime="2008-10-10T12:24:57.521">
<tt:Object ObjectId="12">
...
</tt:Object>
</tt:Frame>
<tt:Frame UtcTime="2008-10-10T12:24:57.621">
<tt:Object ObjectId="12">
...
</tt:Object>
<tt:Object ObjectId="17">
...
</tt:Object>
<tt:ObjectTree>
<tt:Split>
<tt:From ObjectId="12"/>
<tt:To ObjectId="17"/>
<tt:To ObjectId="12"/>
</tt:Split>
</tt:ObjectTree>
</tt:Frame>
]]></programlisting>
</section>
<section xml:id="_Ref208821074">
<title>Shape descriptor</title>
<para>Shape information shall be placed below the optional shape node of in an object appearance node. If present, the shape node holds information where the object under consideration has been detected in the specified frame. A shape node shall at least contain two nodes representing the BoundingBox and the CenterOfGravity of the detected object.</para>
<para>The coarse BoundingBox is further refined with additional child nodes, each representing a shape primitive. If multiple shape primitives are present, their union defines the object’s shape. In this specification, a generic polygon descriptor is provided.</para>
<para>Polygons that describe the shape of an object shall be simple polygons defined by a list of points.</para>
<para>Two consecutive points (where the last point is connected with the first one) in the list define a line segment. The order of the points shall be chosen such that the enclosed object region can be found on the left-hand side all line segments. The polyline defined by the list of points shall not be self-intersecting.</para>
<para>Example:</para>
<programlisting><![CDATA[<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="80.0" right="100.0" bottom="30.0"/>
<tt:CenterOfGravity x="60.0" y="50.0"/>
<tt:Polygon>
<tt:Point x="20.0" y="30.0"/>
<tt:Point x="100.0" y="30.0"/>
<tt:Point x="100.0" y="80.0"/>
<tt:Point x="20.0" y="80.0"/>
</tt:Polygon>
</tt:Shape>
</tt:Appearance>
</tt:Object>
</tt:Frame>
]]></programlisting>
</section>
<section xml:id="_Toc214944464">
<title>Colour descriptor</title>
<para>A colour descriptor is defined as an optional element of the appearance node of an object node. The colour descriptor is defined by a list of colour clusters, each consisting of a colour value, an optional weight and an optional covariance matrix. The colour descriptor does not specify, how the colour clusters are created. They can represent bins of a colour histogram or the result of a clustering algorithm.</para>
<para>Colours are represented by three-dimensional vectors. Additionally, the colourspace of each colour vector can be specified by a colourspace attribute. If the colourspace attribute is missing, the YcbCr colourspace is assumed. It refers to the 'sRGB' gamut with the RGB to YcbCr transformation as of ISO/IEC 10918-1 (Information technology -- Digital compression and coding of continuous-tone still images: Requirements and guidelines), a.k.a. JPEG. The Colourspace URI for the YcbCr colourspace is <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/ver10/colorspace/YCbCr"/>.</para>
<para>An example metadata containing colour information of the detected object is given below. </para>
<programlisting><![CDATA[<tt:Frame UtcTime="2010-09-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="34">
<tt:Appearance>
<tt:Shape>
<tt:BoundingBox left="20.0" top="80.0" right="100.0" bottom="30.0"/>
<tt:CenterOfGravity x="60.0" y="50.0"/>
</tt:Shape>
<tt:Color>
<tt:ColorCluster>
<tt:Color X=”58” Y=”105” Z=”212”/>
<tt:Covariance XX=”7.2” YY=”6” ZZ=”3”/>
<tt:Weight>90</tt:Weight>
</tt:ColorCluster>
<tt:ColorCluster>
<tt:Color X=”165” Y=”44” Z=”139”/>
<tt:Covariance XX=”4” YY=”4” ZZ=”4”/>
<tt:Weight>5</tt:Weight>
</tt:ColorCluster>
</tt:Color>
</tt:Appearance>
</tt:Object>
</tt:Frame>
]]></programlisting>
<para>Colour descriptor contains the representative colours in detected object/region. The representative colours are computed from image of detected object/region each time. Each representative colour value is a vector of specified colour space. The representative colour weight (Weight) denotes the fraction of pixels assigned to the representative colour. Colour covariance describes the variation of colour values around the representative colour value in colour space thus representative colour denotes a region in colour space. The following table lists the acceptable values for Colourspace attribute</para>
<table>
<title>Colourspace namespace values</title>
<tgroup cols="2">
<colspec colname="c1" colwidth="60*" />
<colspec colname="c2" colwidth="40*" />
<thead>
<row>
<entry>
<para>Namespace URI</para>
</entry>
<entry>
<para>Description</para>
</entry>
</row>
</thead>
<tbody valign="top">
<row>
<entry>
<para>http://www.onvif.org/ver10/colorspace/YcbCr</para>
</entry>
<entry>
<para>YcbCr colourspace</para>
</entry>
</row>
<row>
<entry>
<para>http://www.onvif.org/ver10/colorspace/CIELUV</para>
</entry>
<entry>
<para>CIE LUV</para>
</entry>
</row>
<row>
<entry>
<para>http://www.onvif.org/ver10/colorspace/CIELAB</para>
</entry>
<entry>
<para>CIE 1976 (L*a*b*)</para>
</entry>
</row>
<row>
<entry>
<para>http://www.onvif.org/ver10/colorspace/HSV</para>
</entry>
<entry>
<para>HSV colourspace</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</section>
<section xml:id="_Ref485906999">
<title>Object Class descriptor</title>
<para>A Class Descriptor is defined as an optional element of the appearance node of an object node. The class descriptor is defined by a list of object classes together with a likelihood that the corresponding object belongs to this class. The range of likelihood is [0..1].</para>
<para>The following example shows an object metadata sample that contains object class information about a detected object:</para>
<programlisting><![CDATA[<tt:Frame UtcTime="2010-11-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="22">
<tt:Appearance>
<tt:Shape>
<tt:BoundingBox left="20.0" top="80.0" right="100.0" bottom="30.0"/>
<tt:CenterOfGravity x="60.0" y="50.0"/>
</tt:Shape>
<tt:Class>
<tt:Type Likelihood=”0.8”>Vehicle</tt:Type>
<tt:Type Likelihood=”0.75”>Car</tt:Type>
<tt:Type Likelihood=”0.3”>Truck</tt:Type>
</tt:Class>
</tt:Appearance>
</tt:Object>
</tt:Frame>
]]></programlisting>
<para>Beside the small set of predefined class types free type definitions can be added using the Type member defined as StringLikelihood.</para>
</section>
<section>
<title>Motion In Cells descriptor</title>
<para>The scene description of a cell motion contains the cells where motion is detected. To decode base64Binary the columns and rows of the cell grid is provided. </para>
<para>For spatial relation the "Transformation" element is used, see section <xref linkend="_Ref208712096" />. The cell grid is starting from the upper left corner. The X dimension is going from left to right and the Y dimension is going from up to down, see <xref linkend="_Ref272497397" />.</para>
<para>This example contains a snippet of a metadata stream using the Cell Motion Detector.</para>
<programlisting><![CDATA[<?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>
]]></programlisting>
<table>
<title>Description of attributes of MotionInCells type</title>
<tgroup cols="2">
<colspec colname="c1" colwidth="22*" />
<colspec colname="c2" colwidth="78*" />
<thead>
<row>
<entry>
<para> Attribute </para>
</entry>
<entry>
<para> Description </para>
</entry>
</row>
</thead>
<tbody valign="top">
<row>
<entry>
<para>Columns</para>
</entry>
<entry>
<para>Number of columns of the cell grid (x dimension)</para>
</entry>
</row>
<row>
<entry>
<para>Rows</para>
</entry>
<entry>
<para>Number of rows of the cell grid (y dimension).</para>
</entry>
</row>