Mercurial Hosting > traffic-intelligence
annotate python/compute-object-from-features.py @ 104:13187af8622d
finally added the representation of intervals
author | Nicolas Saunier <nico@confins.net> |
---|---|
date | Thu, 14 Jul 2011 17:15:09 -0400 |
parents | 1621b46a1523 |
children | 9844c69d8fa2 |
rev | line source |
---|---|
103
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
2 |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
3 import sys |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
4 |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
5 import matplotlib.mlab as pylab |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
6 import matplotlib.pyplot as plt |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
7 import numpy as np |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
8 |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
9 import cv |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
10 import utils |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
11 import cvutils |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
12 import ubc_utils |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
13 import moving |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
14 |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
15 # use something like getopt to manage arguments if necessary |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
16 |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
17 if len(sys.argv) < 3: |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
18 print('Usage: {0} <video-filename> <n-objects>'.format(sys.argv[0])) |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
19 sys.exit() |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
20 |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
21 if sys.argv[1].endswith('.avi'): |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
22 videoFilenamePrefix = utils.removeExtension(sys.argv[1],'.') |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
23 else: |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
24 videoFilenamePrefix = sys.argv[1] |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
25 |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
26 objectNum = int(sys.argv[2]) |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
27 |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
28 objects = ubc_utils.loadTrajectories(videoFilenamePrefix+'-objects.txt', objectNum+1) |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
29 obj = objects[objectNum] |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
30 features = ubc_utils.loadTrajectories(videoFilenamePrefix+'-features.txt', max(obj.featureNumbers)+1) |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
31 h = np.loadtxt(videoFilenamePrefix+'-homography.txt') |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
32 |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
33 invh = cvutils.invertHomography(h) |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
34 |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
35 yCoordinates = -np.ones((len(obj.featureNumbers),int(obj.length()))) |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
36 for i,fnum in enumerate(obj.featureNumbers): |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
37 traj = features[fnum].getPositions().asArray() |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
38 imgTraj = cvutils.projectArray(invh, traj) |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
39 yCoordinates[i,features[fnum].getFirstInstant()-obj.getFirstInstant():features[fnum].getLastInstant()+1-obj.getFirstInstant()] = imgTraj[1,:] |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
40 |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
41 indices = argmax(yCoordinates,0) |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
42 newTraj = moving.Trajectory() |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
43 for j,idx in enumerate(indices): |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
44 newTraj.addPosition(features[obj.featureNumbers[idx]].getPositionAtInstant(j+obj.getFirstInstant())) |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
45 |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
46 # TODO |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
47 # use kalman filter over the resulting trajectory |
1621b46a1523
started python script to compute the moving object trajectory as the trajectory of the lowest of the features (ie closest to the ground)
Nicolas Saunier <nico@confins.net>
parents:
diff
changeset
|
48 # estimate the error terms using actual features |