User-assisted Segmentation and 3D Motion Tracking
Michael Fleder Sudeep Pillai Jeremy Scott
User-assisted Segmentation and 3D Motion Tracking Michael Fleder - - PowerPoint PPT Presentation
User-assisted Segmentation and 3D Motion Tracking Michael Fleder Sudeep Pillai Jeremy Scott 3D Object Tracking Virtual reality and animation Imitation in robotics Autonomous driving Augmented reality Motivation Want low-cost
Michael Fleder Sudeep Pillai Jeremy Scott
Iterative Closest Point (ICP) for 3D tracking
Color Histogram 2D tracking to seed ICP
– Low resolution – Signal-to-noise ratio not particularly good
– Doesn't cope well with motion blur – Actively learn new features of the object – Correspondence requires rigid object tracking
– Base color representative over multiple views
– Relatively faster to compute
– Robust to motion blur – Eliminates false positives that have same color
distribution
– Measure of the amount of overlap between two
statistical samples i.e. between histograms
– Imposes a metric structure – Invariant to object size (number of pixels) – Valid for arbitrary distributions
N
Given: Two point-sets A (object to track), B (new point cloud) R ⊆
3
Goal: Find a one-to-one matching function μ : A B that minimizes the → root mean squared distance (RMSD) between A and B Incorporating rotation R and translation t:
ICP(A,B) : //A,B point sets. R = rotation matrix. t = translation vector.
//Find μ one-to-one matching function.
minμ RMSD(A, B, μ).
minR,t RMSD(RA − t, B, μ).
Problems: (1) Can’t handle large displacement between frames (2) Computationally intense (3) Ambiguous for geometrically-symmetric objects Benefits: (1) Resolve 3D orientation (2) Accurate for small-displacements
Tracking Benefits: 2D (Histogram): (1) Handles large displacements between frames (2) Accurate small-patch tracking (3) Fast 3D (ICP): (1) Accurate for small-displacements (2) Resolves 3D orientation Combined: Seed 3D ICP with result of 2D tracking
Initialize_Tracker(Segmented_Object, out trackedObject): (1) 2D_Segment_Points 3dTo2D(Segmented_Object) ← (2) Init_Histogram_Tracker(2D_Segment_Points) (3) trackedObject Segmented_Object ← Run_Tracker(lastKnownObject3D, latest_Image, latest_Cloud): (1) 2D_Points = run2DTracker(latest_image) (2) 3D_Search_Cloud = 2dTo3d(2D_Points) (3) lastKnownObject3D ICP(lastKnownObject3D, 3D_Search_Cloud) ←