Mercurial Hosting > traffic-intelligence
annotate samples/TTC/computeTTC.py @ 729:dad99b86a104 dev
merge with default
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Mon, 10 Aug 2015 17:52:19 -0400 |
parents | dcc821b98efc |
children |
rev | line source |
---|---|
462
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
1 def computeTTC(databaseFilename,homography,framePerSecond,videoX,videoY,collisionDistanceThreshold,bikAreaOri,bikAreaDes,carAreaOri,carAreaDes): |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
2 |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
3 import numpy as np |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
4 import sys |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
5 sys.path.append('/home/sohail/trafficintelligence/python/') |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
6 import moving, cvutils, storage |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
7 import timeToCollision |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
8 |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
9 print 'Loading database...' |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
10 objects = storage.loadTrajectoriesFromSqlite(databaseFilename, 'object') |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
11 |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
12 bikCount=0 |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
13 carCount=0 |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
14 bik=[] |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
15 car=[] |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
16 bikSpeed=[] |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
17 carSpeed=[] |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
18 |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
19 for obj in objects: |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
20 inCarAreaOri = False |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
21 inBikAreaOri = False |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
22 for time in obj.getTimeInterval(): |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
23 x=int(obj.getPositionAtInstant(time).project(homography).x) |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
24 y=int(obj.getPositionAtInstant(time).project(homography).y) |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
25 x=min(videoX-1,x) |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
26 y=min(videoY-1,y) |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
27 if bikAreaOri[y,x] == 1 and obj.userType == moving.userType2Num['bicycle']: |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
28 inBikAreaOri = True |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
29 if bikAreaDes[y,x] == 1 and inBikAreaOri == True: |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
30 bikCount += 1 |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
31 bik.append(obj) |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
32 bikSpeed.append(framePerSecond*3.6*np.median(obj.getSpeeds())) |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
33 break |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
34 if carAreaOri[y,x] == 1 and obj.userType == moving.userType2Num['car']: |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
35 inCarAreaOri = True |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
36 if carAreaDes[y,x] == 1 and inCarAreaOri == True: |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
37 carCount += 1 |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
38 car.append(obj) |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
39 carSpeed.append(framePerSecond*3.6*np.median(obj.getSpeeds())) |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
40 break |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
41 |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
42 print 'Computing TTC...' |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
43 TTC=[] |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
44 potCollision=0 |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
45 for obj1 in bik: |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
46 for obj2 in car: |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
47 ti1=obj1.getTimeInterval() |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
48 ti2=obj2.getTimeInterval() |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
49 if ti1.first < ti2.last and ti2.first < ti1.last: |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
50 potCollision += 1 |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
51 ttc=[] |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
52 for frameNum in range(max(ti1.first,ti2.first),min(ti1.last,ti2.last)): |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
53 ttcp=timeToCollision.timeToCollision(obj1,obj2,collisionDistanceThreshold,frameNum,framePerSecond) |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
54 if ttcp < 100: |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
55 ttc.append(ttcp) |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
56 if ttc != []: |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
57 ttc.sort() |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
58 TTC.append(ttc[int(.15*len(ttc))]) |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
59 |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
60 return bikCount,carCount,bikSpeed,carSpeed,TTC,potCollision |
af2222c0c9c0
TTC tested and updatet!
Sohail Zangenehpour <sohail.zangenehpour@mail.mcgill.ca>
parents:
diff
changeset
|
61 |