|
Paparazzi UAS
v5.12_stable-4-g9b43e9b
Paparazzi is a free software Unmanned Aircraft System.
|
#include <stdlib.h>#include <stdio.h>#include <math.h>#include <string.h>#include "linear_flow_fit.h"#include "math/pprz_algebra_float.h"#include "math/pprz_matrix_decomp_float.h"#include "math/pprz_simple_matrix.h"
Include dependency graph for linear_flow_fit.c:Go to the source code of this file.
Macros | |
| #define | MAX_COUNT_PT 50 |
| #define | MIN_SAMPLES_FIT 3 |
| #define | NO_FIT 0 |
| #define | FIT 1 |
Functions | |
| int | analyze_linear_flow_field (struct flow_t *vectors, int count, float error_threshold, int n_iterations, int n_samples, int im_width, int im_height, struct linear_flow_fit_info *info) |
| Analyze a linear flow field, retrieving information such as divergence, surface roughness, focus of expansion, etc. More... | |
| void | fit_linear_flow_field (struct flow_t *vectors, int count, float error_threshold, int n_iterations, int n_samples, float *parameters_u, float *parameters_v, float *fit_error, float *min_error_u, float *min_error_v, int *n_inliers_u, int *n_inliers_v) |
| Analyze a linear flow field, retrieving information such as divergence, surface roughness, focus of expansion, etc. More... | |
| void | extract_information_from_parameters (float *parameters_u, float *parameters_v, int im_width, int im_height, struct linear_flow_fit_info *info) |
| Extract information from the parameters that were fit to the optical flow field. More... | |
| #define FIT 1 |
Definition at line 51 of file linear_flow_fit.c.
Referenced by analyze_linear_flow_field().
| #define MAX_COUNT_PT 50 |
Definition at line 47 of file linear_flow_fit.c.
| #define MIN_SAMPLES_FIT 3 |
Definition at line 49 of file linear_flow_fit.c.
Referenced by analyze_linear_flow_field(), and fit_linear_flow_field().
| #define NO_FIT 0 |
Definition at line 50 of file linear_flow_fit.c.
Referenced by analyze_linear_flow_field().
| int analyze_linear_flow_field | ( | struct flow_t * | vectors, |
| int | count, | ||
| float | error_threshold, | ||
| int | n_iterations, | ||
| int | n_samples, | ||
| int | im_width, | ||
| int | im_height, | ||
| struct linear_flow_fit_info * | info | ||
| ) |
Analyze a linear flow field, retrieving information such as divergence, surface roughness, focus of expansion, etc.
| [out] | outcome | If 0, there were too few vectors for a fit. If 1, the fit was successful. |
| [in] | vectors | The optical flow vectors |
| [in] | count | The number of optical flow vectors |
| [in] | error_threshold | Error used to determine inliers / outliers. |
| [in] | n_iterations | Number of RANSAC iterations. |
| [in] | n_samples | Number of samples used for a single fit (min. 3). |
| [in] | im_width | Image width in pixels |
| [in] | im_height | Image height in pixels |
| [out] | info | Contains all info extracted from the linear flow fit. |
Definition at line 65 of file linear_flow_fit.c.
References linear_flow_fit_info::divergence, E, extract_information_from_parameters(), FIT, linear_flow_fit_info::fit_error, fit_linear_flow_field(), MIN_SAMPLES_FIT, linear_flow_fit_info::n_inliers_u, linear_flow_fit_info::n_inliers_v, NO_FIT, linear_flow_fit_info::relative_velocity_z, linear_flow_fit_info::surface_roughness, and linear_flow_fit_info::time_to_contact.
Referenced by calc_fast9_lukas_kanade().
Here is the call graph for this function:
Here is the caller graph for this function:| void extract_information_from_parameters | ( | float * | parameters_u, |
| float * | parameters_v, | ||
| int | im_width, | ||
| int | im_height, | ||
| struct linear_flow_fit_info * | info | ||
| ) |
Extract information from the parameters that were fit to the optical flow field.
| [in] | parameters_u* | Parameters of the horizontal flow field |
| [in] | parameters_v* | Parameters of the vertical flow field |
| [in] | im_width | Width of image in pixels |
| [in] | im_height | Height of image in pixels |
| [out] | info | Contains all info extracted from the linear flow fit |
Definition at line 315 of file linear_flow_fit.c.
References E, linear_flow_fit_info::focus_of_expansion_x, linear_flow_fit_info::focus_of_expansion_y, linear_flow_fit_info::relative_velocity_x, linear_flow_fit_info::relative_velocity_y, linear_flow_fit_info::relative_velocity_z, linear_flow_fit_info::slope_x, and linear_flow_fit_info::slope_y.
Referenced by analyze_linear_flow_field().
Here is the caller graph for this function:| void fit_linear_flow_field | ( | struct flow_t * | vectors, |
| int | count, | ||
| float | error_threshold, | ||
| int | n_iterations, | ||
| int | n_samples, | ||
| float * | parameters_u, | ||
| float * | parameters_v, | ||
| float * | fit_error, | ||
| float * | min_error_u, | ||
| float * | min_error_v, | ||
| int * | n_inliers_u, | ||
| int * | n_inliers_v | ||
| ) |
Analyze a linear flow field, retrieving information such as divergence, surface roughness, focus of expansion, etc.
| [in] | vectors | The optical flow vectors |
| [in] | count | The number of optical flow vectors |
| [in] | error_threshold | Error used to determine inliers / outliers. |
| [in] | n_iterations | Number of RANSAC iterations. |
| [in] | n_samples | Number of samples used for a single fit (min. 3). |
| [out] | parameters_u* | Parameters of the horizontal flow field |
| [out] | parameters_v* | Parameters of the vertical flow field |
| [out] | fit_error* | Total error of the finally selected fit |
| [out] | min_error_u* | Error fit horizontal flow field |
| [out] | min_error_v* | Error fit vertical flow field |
| [out] | n_inliers_u* | Number of inliers in the horizontal flow fit. |
| [out] | n_inliers_v* | Number of inliers in the vertical flow fit. |
Definition at line 105 of file linear_flow_fit.c.
References A, AA, MAKE_MATRIX_PTR, MAT_MUL, MAT_SUB, MIN_SAMPLES_FIT, p, flow_t::pos, pprz_svd_float(), pprz_svd_solve_float(), and point_t::y.
Referenced by analyze_linear_flow_field().
Here is the call graph for this function:
Here is the caller graph for this function: