126 def update(self, mean, covariance, measurement):
127 """Run Kalman filter correction step.
130 mean (ndarray): The predicted state's mean vector (8 dimensional).
131 covariance (ndarray): The state's covariance matrix (8x8
133 measurement (ndarray): The 4 dimensional measurement vector
134 (x, y, a, h), where (x, y) is the center position, a the
135 aspect ratio, and h the height of the bounding box.
139 (ndarray, ndarray): Returns the measurement-corrected state
142 projected_mean, projected_cov = self.
project(mean, covariance)
144 chol_factor, lower = scipy.linalg.cho_factor(
145 projected_cov, lower=
True, check_finite=
False)
146 kalman_gain = scipy.linalg.cho_solve((chol_factor, lower),
149 check_finite=
False).T
150 innovation = measurement - projected_mean
152 new_mean = mean + np.dot(innovation, kalman_gain.T)
153 new_covariance = covariance - np.linalg.multi_dot(
154 (kalman_gain, projected_cov, kalman_gain.T))
155 return new_mean, new_covariance