Blender V4.3
tracking_util.cc File Reference
#include <cstddef>
#include "MEM_guardedalloc.h"
#include "DNA_movieclip_types.h"
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "BLI_math_color.h"
#include "BLI_math_vector.h"
#include "BLI_string.h"
#include "BLI_string_utils.hh"
#include "BLI_threads.h"
#include "BLI_utildefines.h"
#include "BLT_translation.hh"
#include "BKE_movieclip.h"
#include "BKE_tracking.h"
#include "IMB_imbuf.hh"
#include "IMB_imbuf_types.hh"
#include "tracking_private.h"
#include "libmv-capi.h"

Go to the source code of this file.

Macros

#define CACHE_PRINTF(...)
 

Functions

Tracks Map
TracksMaptracks_map_new (const char *object_name, int num_tracks)
 
int tracks_map_get_size (TracksMap *map)
 
void tracks_map_insert (TracksMap *map, MovieTrackingTrack *track)
 
void tracks_map_merge (TracksMap *map, MovieTracking *tracking)
 
void tracks_map_free (TracksMap *map)
 
Space Transformation Functions
static void unified_to_pixel (int frame_width, int frame_height, const float unified_coords[2], float pixel_coords[2])
 
static void marker_to_frame_unified (const MovieTrackingMarker *marker, const float marker_unified_coords[2], float frame_unified_coords[2])
 
static void marker_unified_to_frame_pixel_coordinates (int frame_width, int frame_height, const MovieTrackingMarker *marker, const float marker_unified_coords[2], float frame_pixel_coords[2])
 
void tracking_get_search_origin_frame_pixel (int frame_width, int frame_height, const MovieTrackingMarker *marker, float frame_pixel[2])
 
static void pixel_to_unified (int frame_width, int frame_height, const float pixel_coords[2], float unified_coords[2])
 
static void marker_unified_to_search_pixel (int frame_width, int frame_height, const MovieTrackingMarker *marker, const float marker_unified[2], float search_pixel[2])
 
static void search_pixel_to_marker_unified (int frame_width, int frame_height, const MovieTrackingMarker *marker, const float search_pixel[2], float marker_unified[2])
 
void tracking_get_marker_coords_for_tracking (int frame_width, int frame_height, const MovieTrackingMarker *marker, double search_pixel_x[5], double search_pixel_y[5])
 
void tracking_set_marker_coords_from_tracking (int frame_width, int frame_height, MovieTrackingMarker *marker, const double search_pixel_x[5], const double search_pixel_y[5])
 
void tracking_principal_point_normalized_to_pixel (const float principal_point_normalized[2], const int frame_width, const int frame_height, float r_principal_point_pixel[2])
 
void tracking_principal_point_pixel_to_normalized (const float principal_point_pixel[2], const int frame_width, const int frame_height, float r_principal_point_normalized[2])
 
General Purpose Utility Functions
void tracking_marker_insert_disabled (MovieTrackingTrack *track, const MovieTrackingMarker *ref_marker, bool before, bool overwrite)
 
static void distortion_model_parameters_from_tracking (const MovieTrackingCamera *camera, libmv_CameraIntrinsicsOptions *camera_intrinsics_options)
 
static void distortion_model_parameters_from_options (const libmv_CameraIntrinsicsOptions *camera_intrinsics_options, MovieTrackingCamera *camera)
 
void tracking_cameraIntrinscisOptionsFromTracking (MovieTracking *tracking, const int calibration_width, const int calibration_height, libmv_CameraIntrinsicsOptions *camera_intrinsics_options)
 
void tracking_trackingCameraFromIntrinscisOptions (MovieTracking *tracking, const libmv_CameraIntrinsicsOptions *camera_intrinsics_options)
 
MovieTrackingMarkertracking_get_keyframed_marker (MovieTrackingTrack *track, int current_frame, bool backwards)
 
Frame Accessor
static ImBufaccessor_get_preprocessed_ibuf (TrackingImageAccessor *accessor, int clip_index, int frame)
 
static ImBufmake_grayscale_ibuf_copy (ImBuf *ibuf)
 
static void ibuf_to_float_image (const ImBuf *ibuf, libmv_FloatImage *float_image)
 
static ImBuffloat_image_to_ibuf (libmv_FloatImage *float_image)
 
static ImBufaccessor_get_ibuf (TrackingImageAccessor *accessor, int clip_index, int frame, libmv_InputMode input_mode, int downscale, const libmv_Region *region, const libmv_FrameTransform *transform)
 
static libmv_CacheKey accessor_get_image_callback (libmv_FrameAccessorUserData *user_data, int clip_index, int frame, libmv_InputMode input_mode, int downscale, const libmv_Region *region, const libmv_FrameTransform *transform, float **destination, int *width, int *height, int *channels)
 
static void accessor_release_image_callback (libmv_CacheKey cache_key)
 
static libmv_CacheKey accessor_get_mask_for_track_callback (libmv_FrameAccessorUserData *user_data, int clip_index, int frame, int track_index, const libmv_Region *region, float **r_destination, int *r_width, int *r_height)
 
static void accessor_release_mask_callback (libmv_CacheKey cache_key)
 
TrackingImageAccessortracking_image_accessor_new (MovieClip *clips[MAX_ACCESSOR_CLIP], int num_clips, MovieTrackingTrack **tracks, int num_tracks)
 
void tracking_image_accessor_destroy (TrackingImageAccessor *accessor)
 

Detailed Description

This file contains implementation of function which are used by multiple tracking files but which should not be public.

Definition in file tracking_util.cc.

Macro Definition Documentation

◆ CACHE_PRINTF

#define CACHE_PRINTF ( ...)

Definition at line 45 of file tracking_util.cc.

Referenced by accessor_get_ibuf().

Function Documentation

◆ accessor_get_ibuf()

◆ accessor_get_image_callback()

static libmv_CacheKey accessor_get_image_callback ( libmv_FrameAccessorUserData * user_data,
int clip_index,
int frame,
libmv_InputMode input_mode,
int downscale,
const libmv_Region * region,
const libmv_FrameTransform * transform,
float ** destination,
int * width,
int * height,
int * channels )
static

◆ accessor_get_mask_for_track_callback()

◆ accessor_get_preprocessed_ibuf()

◆ accessor_release_image_callback()

static void accessor_release_image_callback ( libmv_CacheKey cache_key)
static

Definition at line 823 of file tracking_util.cc.

References IMB_freeImBuf().

Referenced by tracking_image_accessor_new().

◆ accessor_release_mask_callback()

static void accessor_release_mask_callback ( libmv_CacheKey cache_key)
static

Definition at line 876 of file tracking_util.cc.

References MEM_freeN().

Referenced by tracking_image_accessor_new().

◆ distortion_model_parameters_from_options()

◆ distortion_model_parameters_from_tracking()

◆ float_image_to_ibuf()

◆ ibuf_to_float_image()

◆ make_grayscale_ibuf_copy()

static ImBuf * make_grayscale_ibuf_copy ( ImBuf * ibuf)
static

◆ marker_to_frame_unified()

static void marker_to_frame_unified ( const MovieTrackingMarker * marker,
const float marker_unified_coords[2],
float frame_unified_coords[2] )
static

Definition at line 214 of file tracking_util.cc.

References MovieTrackingMarker::pos.

Referenced by marker_unified_to_frame_pixel_coordinates().

◆ marker_unified_to_frame_pixel_coordinates()

static void marker_unified_to_frame_pixel_coordinates ( int frame_width,
int frame_height,
const MovieTrackingMarker * marker,
const float marker_unified_coords[2],
float frame_pixel_coords[2] )
static

◆ marker_unified_to_search_pixel()

static void marker_unified_to_search_pixel ( int frame_width,
int frame_height,
const MovieTrackingMarker * marker,
const float marker_unified[2],
float search_pixel[2] )
static

◆ pixel_to_unified()

static void pixel_to_unified ( int frame_width,
int frame_height,
const float pixel_coords[2],
float unified_coords[2] )
static

Definition at line 244 of file tracking_util.cc.

Referenced by search_pixel_to_marker_unified().

◆ search_pixel_to_marker_unified()

static void search_pixel_to_marker_unified ( int frame_width,
int frame_height,
const MovieTrackingMarker * marker,
const float search_pixel[2],
float marker_unified[2] )
static

◆ tracking_cameraIntrinscisOptionsFromTracking()

◆ tracking_get_keyframed_marker()

MovieTrackingMarker * tracking_get_keyframed_marker ( struct MovieTrackingTrack * track,
int current_frame,
bool backwards )

◆ tracking_get_marker_coords_for_tracking()

void tracking_get_marker_coords_for_tracking ( int frame_width,
int frame_height,
const MovieTrackingMarker * marker,
double search_pixel_x[5],
double search_pixel_y[5] )

◆ tracking_get_search_origin_frame_pixel()

void tracking_get_search_origin_frame_pixel ( int frame_width,
int frame_height,
const MovieTrackingMarker * marker,
float frame_pixel[2] )

◆ tracking_image_accessor_destroy()

◆ tracking_image_accessor_new()

TrackingImageAccessor * tracking_image_accessor_new ( MovieClip * clips[MAX_ACCESSOR_CLIP],
int num_clips,
MovieTrackingTrack ** tracks,
int num_tracks )

Clips are used to access images of an actual footage. Tracks are used to access masks associated with the tracks.

Note
Both clips and tracks arrays are copied into the image accessor. It means that the caller is allowed to pass temporary arrays which are only valid during initialization.

Definition at line 884 of file tracking_util.cc.

References accessor_get_image_callback(), accessor_get_mask_for_track_callback(), accessor_release_image_callback(), accessor_release_mask_callback(), BLI_assert, BLI_spin_init(), TrackingImageAccessor::cache_lock, TrackingImageAccessor::clips, TrackingImageAccessor::libmv_accessor, libmv_FrameAccessorNew(), MAX_ACCESSOR_CLIP, TrackingImageAccessor::num_clips, TrackingImageAccessor::num_tracks, and TrackingImageAccessor::tracks.

Referenced by autotrack_context_init_image_accessor().

◆ tracking_marker_insert_disabled()

◆ tracking_principal_point_normalized_to_pixel()

void tracking_principal_point_normalized_to_pixel ( const float principal_point_normalized[2],
int frame_width,
int frame_height,
float r_principal_point_pixel[2] )

Convert the lens principal point (optical center) between normalized and pixel spaces.

The normalized space stores principal point relative to the frame center which has normalized principal coordinate of (0, 0). The right top corner of the frame corresponds to a normalized principal coordinate of (1, 1), and the left bottom corner corresponds to coordinate of (-1, -1).

The pixel space is measured in pixels, with the reference being the left bottom corner of the frame.

Definition at line 348 of file tracking_util.cc.

References float.

Referenced by BKE_tracking_camera_principal_point_pixel_get(), BKE_tracking_camera_shift_get(), BKE_tracking_distort_v2(), BKE_tracking_distortion_new(), BKE_tracking_distortion_update(), BKE_tracking_undistort_v2(), and tracking_cameraIntrinscisOptionsFromTracking().

◆ tracking_principal_point_pixel_to_normalized()

void tracking_principal_point_pixel_to_normalized ( const float principal_point_pixel[2],
const int frame_width,
const int frame_height,
float r_principal_point_normalized[2] )

◆ tracking_set_marker_coords_from_tracking()

void tracking_set_marker_coords_from_tracking ( int frame_width,
int frame_height,
struct MovieTrackingMarker * marker,
const double search_pixel_x[5],
const double search_pixel_y[5] )

◆ tracking_trackingCameraFromIntrinscisOptions()

◆ tracks_map_free()

void tracks_map_free ( TracksMap * map)

◆ tracks_map_get_size()

int tracks_map_get_size ( TracksMap * map)

Definition at line 69 of file tracking_util.cc.

◆ tracks_map_insert()

void tracks_map_insert ( TracksMap * map,
MovieTrackingTrack * track )

◆ tracks_map_merge()

◆ tracks_map_new()

TracksMap * tracks_map_new ( const char * object_name,
int num_tracks )

Definition at line 52 of file tracking_util.cc.

References BLI_ghash_ptr_new(), BLI_spin_init(), and STRNCPY.

Referenced by BKE_tracking_reconstruction_context_new().

◆ unified_to_pixel()

static void unified_to_pixel ( int frame_width,
int frame_height,
const float unified_coords[2],
float pixel_coords[2] )
static

Definition at line 205 of file tracking_util.cc.

Referenced by marker_unified_to_frame_pixel_coordinates().