Mercurial Hosting > traffic-intelligence
comparison python/utils.py @ 29:ca8e716cc231
added moving average filter
author | Nicolas Saunier <nico@confins.net> |
---|---|
date | Sat, 30 Jan 2010 21:43:07 -0500 |
parents | 44689029a86f |
children | c000f37c316d |
comparison
equal
deleted
inserted
replaced
28:9ae709a2e8d0 | 29:ca8e716cc231 |
---|---|
46 else: | 46 else: |
47 return None | 47 return None |
48 | 48 |
49 def crossProduct(l1, l2): | 49 def crossProduct(l1, l2): |
50 return l1[0]*l2[1]-l1[1]*l2[0] | 50 return l1[0]*l2[1]-l1[1]*l2[0] |
51 | |
52 def filterMovingWindow(input, halfWidth): | |
53 '''Returns an array obtained after the smoothing of the input by a moving average | |
54 The first and last points are copied from the original.''' | |
55 width = float(halfWidth*2+1) | |
56 win = ones(width,'d') | |
57 result = convolve(win/width,array(inputSignal),'same') | |
58 result[:halfWidth] = inputSignal[:halfWidth] | |
59 result[-halfWidth:] = inputSignal[-halfWidth:] | |
60 return result | |
51 | 61 |
52 ######################### | 62 ######################### |
53 # file I/O section | 63 # file I/O section |
54 ######################### | 64 ######################### |
55 | 65 |
111 from numpy.linalg.linalg import inv | 121 from numpy.linalg.linalg import inv |
112 invH = inv(homography) | 122 invH = inv(homography) |
113 invH /= invH[2,2] | 123 invH /= invH[2,2] |
114 return invH | 124 return invH |
115 | 125 |
116 def project(homography, p): | |
117 '''Returns the coordinates of the projection of the point p | |
118 through homography''' | |
119 from numpy.core._dotblas import dot | |
120 from numpy.core.multiarray import array | |
121 from numpy.lib.function_base import insert | |
122 if (homography!=None) and (len(homography)>0): | |
123 pAugmented = insert(array(p), [2],[1], axis=0) | |
124 projected = dot(homography, pAugmented) | |
125 projected[0] /= projected[2] | |
126 projected[1] /= projected[2] | |
127 else: | |
128 projected = p | |
129 return projected[:2] | |
130 | |
131 def projectTrajectory(homography, trajectory): | |
132 '''Projects a series of points in the format | |
133 [[x1, x2, ...], | |
134 [y1, y2, ...]] | |
135 | |
136 Warning: not optimized, calls project()''' | |
137 projected = [[],[]] | |
138 for x, y in zip(trajectory[0], trajectory[1]): | |
139 p = [x,y] | |
140 pp = project(homography, p) | |
141 projected[0].append(pp[0]) | |
142 projected[1].append(pp[1]) | |
143 return projected | |
144 | |
145 def plotPolygon(poly, options = ''): | 126 def plotPolygon(poly, options = ''): |
146 from numpy.core.multiarray import array | 127 from numpy.core.multiarray import array |
147 from matplotlib.pyplot import plot | 128 from matplotlib.pyplot import plot |
148 from shapely.geometry import Polygon | 129 from shapely.geometry import Polygon |
149 | 130 |