Paparazzi UAS
v5.17_devel24g2ae834f
Paparazzi is a free software Unmanned Aircraft System.

efficient fixedpoint opticalflow calculation More...
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include "lucas_kanade.h"
Go to the source code of this file.
Functions  
struct flow_t *  opticFlowLK (struct image_t *new_img, struct image_t *old_img, struct point_t *points, uint16_t *points_cnt, uint16_t half_window_size, uint16_t subpixel_factor, uint8_t max_iterations, uint8_t step_threshold, uint8_t max_points, uint8_t pyramid_level, uint8_t keep_bad_points) 
struct flow_t *  opticFlowLK_flat (struct image_t *new_img, struct image_t *old_img, struct point_t *points, uint16_t *points_cnt, uint16_t half_window_size, uint16_t subpixel_factor, uint8_t max_iterations, uint8_t step_threshold, uint16_t max_points, uint8_t keep_bad_points) 
Compute the optical flow of several points using the LucasKanade algorithm by Yves Bouguet The initial fixedpoint implementation is doen by G. More...  
efficient fixedpoint opticalflow calculation
Compute the optical flow of several points using the pyramidal LucasKanade algorithm by Yves Bouguet The initial fixedpoint implementation is done by G.
Publication: http://robots.stanford.edu/cs223b04/algo_tracking.pdf
de Croon and is adapted by Freek van Tienen for the implementation in Paparazzi. Pyramids implementation and related development done by Hrvoje Brezak.
[in]  *new_img  The newest grayscale image (TODO: fix YUV422 support) 
[in]  *old_img  The old grayscale image (TODO: fix YUV422 support) 
[in]  *points  Points to start tracking from 
[in,out]  points_cnt  The amount of points and it returns the amount of points tracked 
[in]  half_window_size  Half the window size (in both x and y direction) to search inside 
[in]  subpixel_factor  The subpixel factor which calculations should be based on 
[in]  max_iterations  Maximum amount of iterations to find the new point 
[in]  step_threshold  The threshold of additional subpixel flow at which the iterations should stop 
[in]  max_points  The maximum amount of points to track, we skip x points and then take a point. 
[in]  pyramid_level  Level of pyramid used in computation (0 == no pyramids used) 
[in]  keep_bad_points  Do not filter out bad points. The error field will be set accordingly. 
Pyramidal implementation of LucasKanade feature tracker.
Uses input images to build pyramid of padded images.
For every pyramid level:
For all points:
Definition in file lucas_kanade.c.
struct flow_t* opticFlowLK  (  struct image_t *  new_img, 
struct image_t *  old_img,  
struct point_t *  points,  
uint16_t *  points_cnt,  
uint16_t  half_window_size,  
uint16_t  subpixel_factor,  
uint8_t  max_iterations,  
uint8_t  step_threshold,  
uint8_t  max_points,  
uint8_t  pyramid_level,  
uint8_t  keep_bad_points  
) 
Definition at line 74 of file lucas_kanade.c.
References flow_t::error, flow_t::flow_x, flow_t::flow_y, image_t::h, image_calculate_g(), image_create(), image_difference(), image_free(), IMAGE_GRADIENT, image_gradients(), IMAGE_GRAYSCALE, image_multiply(), image_subpixel_window(), LARGE_FLOW_ERROR, opticFlowLK_flat(), p, patch_size, flow_t::pos, pyramid_build(), image_t::w, point_t::x, and point_t::y.
Referenced by calc_fast9_lukas_kanade().
struct flow_t* opticFlowLK_flat  (  struct image_t *  new_img, 
struct image_t *  old_img,  
struct point_t *  points,  
uint16_t *  points_cnt,  
uint16_t  half_window_size,  
uint16_t  subpixel_factor,  
uint8_t  max_iterations,  
uint8_t  step_threshold,  
uint16_t  max_points,  
uint8_t  keep_bad_points  
) 
Compute the optical flow of several points using the LucasKanade algorithm by Yves Bouguet The initial fixedpoint implementation is doen by G.
de Croon and is adapted by Freek van Tienen for the implementation in Paparazzi.
[in]  *new_img  The newest grayscale image (TODO: fix YUV422 support) 
[in]  *old_img  The old grayscale image (TODO: fix YUV422 support) 
[in]  *points  Points to start tracking from 
in/out]  points_cnt The amount of points and it returns the amount of points tracked  
[in]  half_window_size  Half the window size (in both x and y direction) to search inside 
[in]  subpixel_factor  The subpixel factor which calculations should be based on 
[in]  max_iteration  Maximum amount of iterations to find the new point 
[in]  step_threshold  The threshold at which the iterations should stop 
[in]  max_point  The maximum amount of points to track, we skip x points and then take a point. 
Definition at line 275 of file lucas_kanade.c.
References flow_t::error, FALSE, flow_t::flow_x, flow_t::flow_y, image_t::h, image_calculate_g(), image_create(), image_difference(), image_free(), IMAGE_GRADIENT, image_gradients(), IMAGE_GRAYSCALE, image_multiply(), image_subpixel_window(), LARGE_FLOW_ERROR, p, patch_size, flow_t::pos, TRUE, image_t::w, point_t::x, and point_t::y.
Referenced by opticFlowLK().