annotate samples/TTC/computeTTC.py @ 464:dcc821b98efc

integrated and reorganized Sohail s work on exact ttc computation
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Sun, 23 Feb 2014 23:18:08 -0500
parents TTC Sample/computeTTC.py@af2222c0c9c0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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