VCA TaskScriptLanguage FW660 Technical Note
VCA TaskScriptLanguage FW660 Technical Note
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 2 | 15
Table of contents
2.1 Understanding the VCA task script language: Line Crossing, GUI ..................................................................... 7
2.2 Understanding the VCA task script language: Polygonal lines ........................................................................... 7
2.3 Understanding the VCA task script language: Line crossing with object filters .................................................. 8
2.6 Example: Alarm if object enters a field and afterwards crosses the line ............................................................. 9
2.7 Example: Alarm if object enters first one field and then the other....................................................................... 9
2.10 Example: Crossing line1 with 60km/h and line 2 with 20km/h .......................................................................... 10
2.13 Example: Alarm when object enters an area at least 4 times ........................................................................... 11
2.14 Example: Alarm when a second object crosses a line within 3 seconds of the first ......................................... 11
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 3 | 15
2.18 Example: Alarm if one queue is empty and the other has at least 3 persons ................................................... 13
2.19 Example: Virtual room for counting with one in and one out line ...................................................................... 13
2.20 Example: Virtual room for counting with two in and one out line ...................................................................... 13
2.24 Example: Give 30 sec alarm on any object (aggregation time) ........................................................................ 14
15
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 4 | 15
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 5 | 15
MOTION+:
Task Primitives Tasks
Field Motion in Field
Image
Intelligent Video Analytics & Essential Video Analytics (the latter w/o flow tasks):
Task Primitives Tasks Flow Tasks Object Filter
Line Detect any object Flow in field Object area
Field Crossing line Counterflow in field Aspect ratio
Route Object in field Crowd detection Speed
Image Entering field Tampering Direction
Leaving field Color
Following route Head
Loitering Object class
Removed object
Idle object
Condition change
Similarity search
Counter
BEV people counter
Occupancy
Crowd detection
Tampering
States can be, amongst others, spatial relations, object properties, tamper states, counter values
Up to 16 external states can be defined
Up to 32 states in total can be defined
Events and states can be internal or external. Only external events and states are outputted.
Simple states are used whenever a property has no corresponding objects. Examples are Motion+, Flow,
counter values and tamper states.
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 6 | 15
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 7 | 15
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 8 | 15
2.3 Understanding the VCA task script language: Line crossing with object filters
Events of Field:
EnteredField#x
LeftField#x
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 9 | 15
2.6 Example: Alarm if object enters a field and afterwards crosses the line
Application: Reduction of false alarms, especially for
//Definition of task primitives insects attracted by infrared illumination
Resolution := { Min(-1, -1) Max(1, 1) };
Field #1 := { Point(-0.6, 0.95) Point(-0.25, -0.95)
Point(0.25, -0.95) Point(0.6, 0.95)
DebounceTime(0.50) };
Line #1 := { Point(0.0, -0.95) Point(0.0, 0.95)
DebounceTime(0.50) };
//@Task T:0 V:0 I:1 "Enter Field and Line" {
external Event#1:={EnteredField #1 before(*,30) means the object needs to cross the line 0-
30 seconds after entering the field. As the object needs
before (*,30) CrossedLine #1 to enter the field in order to cross the line, the other
where first.oid == second.oid }; temporal direction is not checked.
//@}
The same object has to trigger both events. Thus using
where first.oid==second.oid
2.7 Example: Alarm if object enters first one field and then the other
//Definition of task primitives
Application: Reduction of false alarms, especially for
Resolution := { Min(-1, -1) Max(1, 1) }; insects attracted by infrared illumination
Field #1 := { Point(-0.6, 0.95) Point(-0.25, -0.95)
Point(-0.1, -0.95) Point(-0.1, 0.95)
DebounceTime(0.50) };
Field #2 := { Point(0.6, 0.95) Point(0.25, -0.95)
Point(0.1, -0.95) Point(0.1, 0.95)
DebounceTime(0.50) };
//@Task T:0 V:0 I:1 "Enter Field and Line" { before(*,30) means the object needs to cross the line 0-
external Event#1:={EnteredField #1 30 seconds after entering the field. As the object needs
before (*,30) EnteredField#2 to enter the field in order to cross the line, the other
temporal direction need not be checked.
where first.oid == second.oid };
//@}
The same object has to trigger both events. Thus using
where first.oid==second.oid
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 10 | 15
2.10 Example: Crossing line1 with 60km/h and line 2 with 20km/h
Actually alarming when velocity on first line between 50
//Definition of task primitives km/h and 70 km/h and on second line between 10 km/h
Line #1 := {Point(50,0) Point(50,144)}; and 30 km/h.
Line #2 := {Point(120,0) Point(120,144)};
//Definition of line crossing events The velocity range is not in km/h here, therefore the
Event#11 :={CrossedLine#1 where conditions were generated with GUI default line crossing
Velocity within(13.89,19.44) }; tasks
Event#12 :={CrossedLine#2 where
Velocity within(2.778,5.556) }; Approach:
(1) Defined two line crossings via GUI with velocity
//Combination of line crossing events filters
//@Task T:0 V:0 I:1 "Two Line Speed Check" { (2) Removed all external keywords and task
external Event#1 :={Event#11 before Event#12 definitions, keeping task primitives and event
where first.oid==second.oid}; definitions
(3) Added combination of both line crossing events
//@}
as user-defined task
//Definition of task primitives Using loitering instead of idle for demonstration purposes
Line #1 := { Point(130, 0) Point(130, 144) };
Field #2 := { Point(50, 0) Point(115, 0)
Point(115, 144) Point(50, 144)};
Note that only Event #1 is external and thus generating
alarms!
//@Task T:0 V:0 I:1 "Loitering after Line Crossing" {
Event#11 :={CrossedLine #1};
Loitering #13 := { Radius (15) Time (10) };
ObjectState #14 := InsideField #2 and IsLoitering #13; The same object has to trigger both the line crossing and
external Event #1 := {Event #11 before OnSet ObjectState #14 the loitering. Thus using where first.oid==second.oid
where first.oid==second.oid};
//@}
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 11 | 15
//@Task T:0 V:0 I:1 "Object Touches Field" { Events and States are enumerated separately, thus both
ObjectState and Event may have #1
ObjectState #1 := InsideField #1;
external Event #1 := OnSet ObjectState #1;
//@}
Using state InsideField when objects appearing in the
field shall also trigger the alarm
//Alternative, objects have to come from the outside of the field:
//@Task T:0 V:0 I:2 "Object Touches Field" {
external Event #2 := EnteredField #1; Using event EnteredField when alarming only on objects
//@} which have been outside before
2.14 Example: Alarm when a second object crosses a line within 3 seconds of the first
//Definition of task primitives
Resolution := { Min(-1, -1) Max(1, 1) };
Line #1 := { Point(-0.187, -0.967) Point(-0.156, 0.911)
DebounceTime(0.50) Direction(2) TriggerPoint(FootPoint) };
//@Task T:0 V:0 I:1 "Tailgaiting" {
Event#21:={CrossedLine#1}; Using before(0,3) for “within 3 seconds”
Event#22:={CrossedLine#1};
external Event#1:={Event#21 before(0,3) Event#22 Two different objects have to trigger the line crossing.
where first.oid!=second.oid}; Thus using where first.oid!=second.oid
//@}
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 12 | 15
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 13 | 15
2.18 Example: Alarm if one queue is empty and the other has at least 3 persons
2.19 Example: Virtual room for counting with one in and one out line
2.20 Example: Virtual room for counting with two in and one out line
//Definition of task primitives
Resolution:= { Min(-1, -1) Max(1, 1) };
Line #1 := { Point(-0.7, -0.7) Point(0.7, -0.7) DebounceTime(0.10) Direction(1) };
Line #2 := { Point(-0.7, -0.7) Point(-0.7, 0.7) DebounceTime(0.10) Direction(1) };
Line #3 := { Point(-0.7, 0.7) Point(0.7, 0.7) DebounceTime(0.10) Direction(1) };
//@Task T:0 V:0 I:1 "Virtual Room" {
Event#31:={CrossedLine#1};
Event#30:={CrossedLine#2};
Event#29:={CrossedLine#3};
external Counter#1 := { Event#31 Text("Linie 1:") TopLeft(4,4) };
external Counter#2 := { Event#30 Text("Linie 2:") TopLeft(4,14) }; Counters can be added and subtracted
external Counter#3 := { Event#29 Text("Linie 3:") TopLeft(4,24) };
Counter#32 := { Counter#1 + Counter#2};
external Counter#4 := { Counter#32 - Counter#3 Text("Virtual Room:") TopLeft(-0.9,-0.9) };
//@}
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 14 | 15
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems
Bosch Security Systems | Video Systems 15 | 15
Data subject to change without notice | September 10, 2018 Security Systems / Video Systems