|
Blender V4.3
|
#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 | |
| TracksMap * | tracks_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) |
| MovieTrackingMarker * | tracking_get_keyframed_marker (MovieTrackingTrack *track, int current_frame, bool backwards) |
Frame Accessor | |
| static ImBuf * | accessor_get_preprocessed_ibuf (TrackingImageAccessor *accessor, int clip_index, int frame) |
| static ImBuf * | make_grayscale_ibuf_copy (ImBuf *ibuf) |
| static void | ibuf_to_float_image (const ImBuf *ibuf, libmv_FloatImage *float_image) |
| static ImBuf * | float_image_to_ibuf (libmv_FloatImage *float_image) |
| static ImBuf * | accessor_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) |
| TrackingImageAccessor * | tracking_image_accessor_new (MovieClip *clips[MAX_ACCESSOR_CLIP], int num_clips, MovieTrackingTrack **tracks, int num_tracks) |
| void | tracking_image_accessor_destroy (TrackingImageAccessor *accessor) |
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.
| #define CACHE_PRINTF | ( | ... | ) |
Definition at line 45 of file tracking_util.cc.
Referenced by accessor_get_ibuf().
|
static |
Definition at line 666 of file tracking_util.cc.
References accessor_get_preprocessed_ibuf(), BLI_assert, BLI_thread_lock(), BLI_thread_unlock(), Box, ImBuf::byte_buffer, CACHE_PRINTF, ImBuf::channels, ImBufByteBuffer::data, ImBufFloatBuffer::data, ELEM, ImBuf::float_buffer, float_image_to_ibuf(), IB_rectfloat, ibuf_to_float_image(), IMB_allocImBuf(), IMB_dupImBuf(), IMB_float_from_rect(), IMB_freeImBuf(), IMB_rectcpy(), IMB_scale(), int, libmv_floatImageDestroy(), libmv_frameAccessorgetTransformRun(), LIBMV_IMAGE_MODE_MONO, LIBMV_IMAGE_MODE_RGBA, LOCK_MOVIECLIP, make_grayscale_ibuf_copy(), max_ii(), min_ii(), rgba_uchar_to_float(), ImBuf::x, and ImBuf::y.
Referenced by accessor_get_image_callback().
|
static |
Definition at line 788 of file tracking_util.cc.
References accessor_get_ibuf(), BLI_assert, ImBuf::channels, ImBufFloatBuffer::data, ImBuf::float_buffer, ImBuf::x, and ImBuf::y.
Referenced by tracking_image_accessor_new().
|
static |
Definition at line 829 of file tracking_util.cc.
References MovieTrackingTrack::algorithm_flag, BKE_movieclip_get_size(), BKE_movieclip_remap_clip_to_scene_frame(), BKE_movieclip_user_set_frame(), BKE_tracking_marker_get_exact(), BLI_assert, TrackingImageAccessor::clips, MCLIP_PROXY_RENDER_SIZE_FULL, MovieTrackingMarker::pos, MovieClipUser::render_flag, MovieClipUser::render_size, TRACK_ALGORITHM_FLAG_USE_MASK, tracking_track_get_mask_for_region(), and TrackingImageAccessor::tracks.
Referenced by tracking_image_accessor_new().
|
static |
Definition at line 595 of file tracking_util.cc.
References BKE_movieclip_get_ibuf(), BKE_movieclip_remap_clip_to_scene_frame(), BKE_movieclip_user_set_frame(), BLI_assert, TrackingImageAccessor::clips, MCLIP_PROXY_RENDER_SIZE_FULL, MovieClipUser::render_flag, and MovieClipUser::render_size.
Referenced by accessor_get_ibuf().
|
static |
Definition at line 823 of file tracking_util.cc.
References IMB_freeImBuf().
Referenced by tracking_image_accessor_new().
|
static |
Definition at line 876 of file tracking_util.cc.
References MEM_freeN().
Referenced by tracking_image_accessor_new().
|
static |
Definition at line 446 of file tracking_util.cc.
References BLI_assert_msg, libmv_CameraIntrinsicsOptions::brown_k1, libmv_CameraIntrinsicsOptions::brown_k2, libmv_CameraIntrinsicsOptions::brown_k3, libmv_CameraIntrinsicsOptions::brown_k4, libmv_CameraIntrinsicsOptions::brown_p1, libmv_CameraIntrinsicsOptions::brown_p2, libmv_CameraIntrinsicsOptions::distortion_model, libmv_CameraIntrinsicsOptions::division_k1, libmv_CameraIntrinsicsOptions::division_k2, LIBMV_DISTORTION_MODEL_BROWN, LIBMV_DISTORTION_MODEL_DIVISION, LIBMV_DISTORTION_MODEL_NUKE, LIBMV_DISTORTION_MODEL_POLYNOMIAL, libmv_CameraIntrinsicsOptions::nuke_k1, libmv_CameraIntrinsicsOptions::nuke_k2, libmv_CameraIntrinsicsOptions::polynomial_k1, libmv_CameraIntrinsicsOptions::polynomial_k2, libmv_CameraIntrinsicsOptions::polynomial_k3, TRACKING_DISTORTION_MODEL_BROWN, TRACKING_DISTORTION_MODEL_DIVISION, TRACKING_DISTORTION_MODEL_NUKE, and TRACKING_DISTORTION_MODEL_POLYNOMIAL.
Referenced by tracking_trackingCameraFromIntrinscisOptions().
|
static |
Definition at line 401 of file tracking_util.cc.
References libmv_CameraIntrinsicsOptions::brown_k1, libmv_CameraIntrinsicsOptions::brown_k2, libmv_CameraIntrinsicsOptions::brown_k3, libmv_CameraIntrinsicsOptions::brown_k4, libmv_CameraIntrinsicsOptions::brown_p1, libmv_CameraIntrinsicsOptions::brown_p2, libmv_CameraIntrinsicsOptions::distortion_model, libmv_CameraIntrinsicsOptions::division_k1, libmv_CameraIntrinsicsOptions::division_k2, LIBMV_DISTORTION_MODEL_BROWN, LIBMV_DISTORTION_MODEL_DIVISION, LIBMV_DISTORTION_MODEL_NUKE, LIBMV_DISTORTION_MODEL_POLYNOMIAL, libmv_CameraIntrinsicsOptions::nuke_k1, libmv_CameraIntrinsicsOptions::nuke_k2, libmv_CameraIntrinsicsOptions::polynomial_k1, libmv_CameraIntrinsicsOptions::polynomial_k2, libmv_CameraIntrinsicsOptions::polynomial_k3, libmv_CameraIntrinsicsOptions::polynomial_p1, libmv_CameraIntrinsicsOptions::polynomial_p2, TRACKING_DISTORTION_MODEL_BROWN, TRACKING_DISTORTION_MODEL_DIVISION, TRACKING_DISTORTION_MODEL_NUKE, and TRACKING_DISTORTION_MODEL_POLYNOMIAL.
Referenced by tracking_cameraIntrinscisOptionsFromTracking().
|
static |
Definition at line 652 of file tracking_util.cc.
References libmv_FloatImage::buffer, ImBuf::channels, libmv_FloatImage::channels, libmv_FloatImage::height, IB_TAKE_OWNERSHIP, IMB_allocImBuf(), IMB_assign_float_buffer(), libmv_FloatImage::width, ImBuf::x, and ImBuf::y.
Referenced by accessor_get_ibuf().
|
static |
Definition at line 643 of file tracking_util.cc.
References BLI_assert, libmv_FloatImage::buffer, ImBuf::channels, libmv_FloatImage::channels, ImBufFloatBuffer::data, ImBuf::float_buffer, libmv_FloatImage::height, libmv_FloatImage::width, ImBuf::x, and ImBuf::y.
Referenced by accessor_get_ibuf().
Definition at line 616 of file tracking_util.cc.
References BLI_assert, ImBuf::channels, ImBufFloatBuffer::data, ELEM, ImBuf::float_buffer, IB_TAKE_OWNERSHIP, IMB_allocImBuf(), IMB_assign_float_buffer(), ImBuf::x, and ImBuf::y.
Referenced by accessor_get_ibuf().
|
static |
Definition at line 214 of file tracking_util.cc.
References MovieTrackingMarker::pos.
Referenced by marker_unified_to_frame_pixel_coordinates().
|
static |
Definition at line 222 of file tracking_util.cc.
References marker_to_frame_unified(), and unified_to_pixel().
Referenced by marker_unified_to_search_pixel(), and tracking_get_search_origin_frame_pixel().
|
static |
Definition at line 253 of file tracking_util.cc.
References marker_unified_to_frame_pixel_coordinates(), sub_v2_v2v2(), and tracking_get_search_origin_frame_pixel().
Referenced by tracking_get_marker_coords_for_tracking().
|
static |
Definition at line 244 of file tracking_util.cc.
Referenced by search_pixel_to_marker_unified().
|
static |
Definition at line 269 of file tracking_util.cc.
References add_v2_v2v2(), pixel_to_unified(), MovieTrackingMarker::pos, sub_v2_v2v2(), and tracking_get_search_origin_frame_pixel().
Referenced by tracking_set_marker_coords_from_tracking().
| void tracking_cameraIntrinscisOptionsFromTracking | ( | struct MovieTracking * | tracking, |
| int | calibration_width, | ||
| int | calibration_height, | ||
| struct libmv_CameraIntrinsicsOptions * | camera_intrinsics_options ) |
Fill in Libmv C-API camera intrinsics options from tracking structure.
Definition at line 484 of file tracking_util.cc.
References BLI_system_thread_count(), distortion_model_parameters_from_tracking(), libmv_CameraIntrinsicsOptions::focal_length, libmv_CameraIntrinsicsOptions::image_height, libmv_CameraIntrinsicsOptions::image_width, int, libmv_CameraIntrinsicsOptions::num_threads, MovieTrackingCamera::pixel_aspect, libmv_CameraIntrinsicsOptions::principal_point_x, libmv_CameraIntrinsicsOptions::principal_point_y, and tracking_principal_point_normalized_to_pixel().
Referenced by BKE_tracking_distort_v2(), BKE_tracking_distortion_new(), BKE_tracking_distortion_update(), BKE_tracking_reconstruction_context_new(), and BKE_tracking_undistort_v2().
| MovieTrackingMarker * tracking_get_keyframed_marker | ( | struct MovieTrackingTrack * | track, |
| int | current_frame, | ||
| bool | backwards ) |
Get previous keyframed marker.
Definition at line 530 of file tracking_util.cc.
References BKE_tracking_marker_get(), MovieTrackingMarker::flag, MARKER_DISABLED, MARKER_TRACKED, MovieTrackingTrack::markers, and next.
Referenced by dna_marker_to_libmv_marker(), and tracking_context_get_keyframed_ibuf().
| 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] ) |
Definition at line 287 of file tracking_util.cc.
References marker_unified_to_search_pixel(), and MovieTrackingMarker::pattern_corners.
Referenced by BKE_tracking_sample_pattern(), and configure_and_run_tracker().
| void tracking_get_search_origin_frame_pixel | ( | int | frame_width, |
| int | frame_height, | ||
| const MovieTrackingMarker * | marker, | ||
| float | frame_pixel[2] ) |
Definition at line 232 of file tracking_util.cc.
References int, marker_unified_to_frame_pixel_coordinates(), and MovieTrackingMarker::search_min.
Referenced by BKE_tracking_get_search_imbuf(), marker_unified_to_search_pixel(), and search_pixel_to_marker_unified().
| void tracking_image_accessor_destroy | ( | TrackingImageAccessor * | accessor | ) |
Definition at line 911 of file tracking_util.cc.
References BLI_spin_end(), TrackingImageAccessor::cache_lock, TrackingImageAccessor::libmv_accessor, libmv_FrameAccessorDestroy(), MEM_freeN(), and TrackingImageAccessor::tracks.
Referenced by BKE_autotrack_context_free().
| 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.
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().
| void tracking_marker_insert_disabled | ( | MovieTrackingTrack * | track, |
| const MovieTrackingMarker * | ref_marker, | ||
| bool | before, | ||
| bool | overwrite ) |
Definition at line 378 of file tracking_util.cc.
References BKE_tracking_marker_insert(), BKE_tracking_track_has_marker_at_frame(), MovieTrackingMarker::flag, MovieTrackingMarker::framenr, and MARKER_DISABLED.
Referenced by BKE_autotrack_context_sync(), path_clear_all(), path_clear_remained(), and path_clear_up_to().
| 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().
| 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] ) |
Definition at line 360 of file tracking_util.cc.
References float.
Referenced by BKE_tracking_camera_principal_point_pixel_set(), and tracking_trackingCameraFromIntrinscisOptions().
| 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] ) |
Inverse of tracking_get_marker_coords_for_tracking.
Definition at line 313 of file tracking_util.cc.
References MovieTrackingMarker::pattern_corners, MovieTrackingMarker::pos, and search_pixel_to_marker_unified().
Referenced by BKE_tracking_refine_marker().
| void tracking_trackingCameraFromIntrinscisOptions | ( | MovieTracking * | tracking, |
| const libmv_CameraIntrinsicsOptions * | camera_intrinsics_options ) |
Definition at line 510 of file tracking_util.cc.
References distortion_model_parameters_from_options(), float, MovieTrackingCamera::focal, libmv_CameraIntrinsicsOptions::focal_length, libmv_CameraIntrinsicsOptions::image_height, libmv_CameraIntrinsicsOptions::image_width, libmv_CameraIntrinsicsOptions::principal_point_x, libmv_CameraIntrinsicsOptions::principal_point_y, and tracking_principal_point_pixel_to_normalized().
Referenced by reconstruct_retrieve_libmv_intrinsics().
| void tracks_map_free | ( | TracksMap * | map | ) |
Definition at line 178 of file tracking_util.cc.
References BKE_tracking_track_free(), BLI_ghash_free(), BLI_spin_end(), and MEM_freeN().
Referenced by BKE_tracking_reconstruction_context_free().
Definition at line 69 of file tracking_util.cc.
| void tracks_map_insert | ( | TracksMap * | map, |
| MovieTrackingTrack * | track ) |
Definition at line 74 of file tracking_util.cc.
References BLI_ghash_insert(), MovieTrackingTrack::markers, and MEM_dupallocN.
Referenced by BKE_tracking_reconstruction_context_new().
| void tracks_map_merge | ( | TracksMap * | map, |
| MovieTracking * | tracking ) |
Definition at line 87 of file tracking_util.cc.
References BKE_tracking_object_add(), BKE_tracking_object_get_named(), BKE_tracking_track_duplicate(), BLI_addtail(), BLI_findindex(), BLI_ghash_lookup(), BLI_ghash_reinsert(), BLI_remlink(), BLI_spin_lock(), BLI_spin_unlock(), BLI_uniquename(), BLT_I18NCONTEXT_ID_MOVIECLIP, CTX_DATA_, ListBase::first, MovieTrackingTrack::flag, MovieTrackingTrack::markers, MEM_dupallocN, MEM_freeN(), MovieTrackingTrack::name, MovieTrackingTrack::next, next, offsetof, MovieTrackingTrack::pat_flag, MovieTrackingTrack::prev, MovieTrackingTrack::search_flag, and MovieTrackingObject::tracks.
Referenced by BKE_tracking_reconstruction_finish().
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().
|
static |
Definition at line 205 of file tracking_util.cc.
Referenced by marker_unified_to_frame_pixel_coordinates().