540 likes | 645 Views
Searching for Structure in Geometry Processing. Misha Kazhdan. What do we want to compute? (What established theory can we apply?) How do we compute it effectively? (How do we implement efficiently/robustly?). Geometry Processing in Detail. Symmetry Detection Discrete Continuous
E N D
Searching for Structure in Geometry Processing Misha Kazhdan
What do we want to compute? (What established theory can we apply?) How do we compute it effectively? (How do we implement efficiently/robustly?)
Geometry Processing in Detail • Symmetry Detection • Discrete • Continuous • Solid Reconstruction • Computing the indicator function • Iso-surface extraction • Surface extension
Discrete Symmetry Detection Identify the rotational (and reflective) symmetries of a set of a shape 4-Fold Axial Reflective
What is a shape? A shape is a finite set of points .
What do we want to compute? Given , find and such that a rotation by angle about maps to itself. • Averaging commutes with affine maps: is the center of mass. • The rotation is a bijection: .
Naïve Implementation FindRotationalSymmetries( ) • Fix • For each • Sym[] = true • For each • If( ): Sym[] = false Naïve run-time complexity is .
How can we compute it effectively? Add structure to the problem: Sort/order points by angle: • Testing if is in is sub-linear time. • Rotations preserve circular order. Rotational symmetries act by circular shift. [Wolter et al., 1985] [Attalah, 1985]
Efficient Implementation FindRotationalSymmetries( ) • SortPolarCoordinatesByAngle( ) • FastSubstring( , ) Complexity is . [Wolter et al., 1985] [Attalah, 1985]
[Knuth, Morris, and Pratt, 1977] Given strings and , find all matches of in . FindSubstring( , ) • For : • For : • If( ) break • If( ) output Naïve run-time complexity is .
[Knuth, Morris, and Pratt, 1977] Example: • A shift of by 1 position could only match if the first and last 4 letters of are the same. • A shift of by 2 positions could only match if the first and last 3 letters of are the same. • A shift of by less than positions could only match if a suffix of is also a prefix of . Pre-compute the prefix/suffix structure of :* *a.k.a. the “partial matching table”.
What do we want to compute? Given , find and such that a rotation by angle about maps to itself. Only tells us about perfect matches. Doesn’t work for noisy data.
Continuous Symmetry Detection Measure the extent of rotational(and reflective) symmetries of a shape sym -fold 5 6 1 2 3 4 [Zabrodsky et al., 1995]
What is a shape? A shape is a function from the circle/diskinto the real values.* Examples: • Circular extent function • Arc-length curvature • Distance function • Etc. This imbues “shape” with the structure of an inner-product space: [Zahn et al., 1972] [Horn, 1984] [Ankerstet al., 1999] [Vranic and Saupe, 2001] … ∗ The representation needs to commute with the action of rotation.
What is symmetry? If is a symmetry of a shape, then is also a symmetry of the shape, for all .Symmetries are associated with groups.
What do we want to compute? Given (or ) and given a symmetry group , compute the distance from to the nearest -symmetric function. • Linear structure:-symmetric functions are a linear subspace. • Group + inner-product structure: Projection is averaging
What do we want to compute? Given (or ) and given a symmetry group , compute the distance from to the nearest -symmetric function.
Naïve Implementation • Naïve run-time complexity is: FindRotationalSymmetries( ) • = Function( ) • For each • For each • Circle: • Disk:
How can we compute it effectively? Computational Structure: • Memoization • is evaluated times but the set of values only has complexity . Pre-compute the values for every angle and perform constant-time look up at run-time.
How can we compute it effectively? Computational Structure: • Fast Correlation • The distance can be expressed as:with the auto-correlation of . Correlation in the spatial domain is multiplication in the frequency domain – . The change of basis to/from frequency space can be done with an FFT – [Gauss, 1805][Cooley and Tukey, 1965]
Efficient Implementation FindRotationalSymmetries( ) • = Function( ) • = AutoCorrelation( ) • For each • For each Run-time complexity is: • Circle: • Disk:
Geometry Processing in Detail • Symmetry Detection • Discrete • Continuous • Solid Reconstruction • Computing the indicator function • Iso-surface extraction • Surface extension
Solid Reconstruction Fit a solid to a set of sample points
[Input] What is a shape? A shape is a finite subset , corresponding to positions, normals, and area. Shape is an object over which you integrate 2-forms (i.e. a 2-current).
[Output] What is a shape? A shape is a function telling us whether apoint is inside or outside the solid:
What do we want to compute? Compute the (smoothed) indicator function: • Compute the gradients • Integrate the gradients [Kazhdan, 2005][Kazhdan et al., 2006]
Compute the Gradients Since the indicator function is discontinuous, we seek the gradient of the smoothed function: for some smoothing filter .
Compute the Gradients Convolution and differentiation commute:
Compute the Gradients The convolution at point is the integral of the signal times the shifted filter: with .
Compute the Gradients The convolution at point is the integral of the signal times the shifted filter, which is the solid integral of the shifted filter: with .
Compute the Gradients The partial is the divergence of a vector field:
Compute the Gradients The partial is the divergence of a vector field, so by Stokes’ Theorem:
Compute the Gradients Discretizing the integral, we get an estimate for the gradient at as a sum over the input points:
Integrate the Gradients Given a target gradient field , the best fit scalar function is the solution to the Poisson Equation: ∗ May be subject to appropriate boundary conditions.
Naïve Implementation ReconstructSolid( ) • ComputeNormalsAndArea*( ) • For : • : • SolvePoisson( ) Note: Since this holds for any (smooth) filter, we can choose to be compactly supported so only samples close to contribute. • If we discretize over an grid and : • Storage Complexity: • Computational Complexity: *[Rosenblatt, 1956] [Parzen, 1962] [Hoppe, 1994] [Mitra and Nguyen, 2003]
How can we compute it effectively? Structure of the Input/Output: • Points in should lie on a 2D manifold in . • should be constant away from the samples. Adapt a space-partition to . Use the same space partition to discretize .
Choosing a Space Partition • Supports discretization of the linear system: • Octrees: [Losasso et al., 2004] • Adapted Tetrahedralizations: [Alliez et al., 2007] • Supports efficient (hierarchical) solver: • Regular Grids: [Fedorenko, 1973] [Brandt, 1977] • Octrees: [Kazhdan and Hoppe, 2013]
Efficient Implementation ReconstructSolid( ) • ComputeNormalsAndArea( ) • ConstructOctree( ) • For : • s.t. • : • HierarchicallySolvePoisson( ) • Storage Complexity: • Computational Complexity:
Iso-Surface Extraction Extract the shape of the level-setof a discretely sampled function
What is a shape? A shape is a triangle mesh
What do we want to compute? Find a shape separating points with negative value from points with positive value. • Fit a function to the samples. • Find the level-set: . Inverse Function Theorem: The level-set will be manifold/water-tight if zero is not a singular value. In general, the level-set of a function cannot be represented by a triangle mesh.
How can we compute it effectively? • Adapt the function: For linear functions, the level-set is planar. Given the samples: • Tetrahedralize the positions • Fit the linear interpolantto each tet’s vertex values • Extract the level-set of theglobal function. Simplicial Structure: Adjacent tets share triangular faces. The global function is continuous. [Doi and Koide, 1991]
How can we compute it effectively? • Adapt the geometry: We need an approximate iso-surface that separates the samples. Given the samples: • Partition space into (convex) cells • Compute iso-edges on facesthat separate vertices with opposite signs • Extend the boundary curve to a surface in the interior Partition Structure: Faces/edges of the partition intersect trivially. Separating surface is water-tight/manifold. [Lorensen and Cline, 1987] [Schaefer and Warren, 2004]
Surface Extension Find a surface whose boundary interpolates a 3D curve
What is a shape? A shape is a mapping from the unit disk into .
What do we want to compute? Given a simple/closed curve , find the smooth parameterization that agrees with :* • If lies on a convex domain,the map is an embedding.[Meeks and Yau, 1980] • This is a minimal area surface,which is a fixed point of MCF.[Pinkall and Polthier, 1993] To discretize MCF, we need to refine the mesh, increasing the complexity of the shape. ∗ Gradients, norms, and measures defined w.r.t.
What do we want to compute? Fixing the position of the vertices, we want a triangulation that minimizes the area.
How can we compute it effectively? Fixing the position of the vertices, we want a triangulation that minimizes the area. Leverage the structure of the solution: • Sub-triangulations are minimal • Sub-triangulations recur Dynamic programming solution: • time • space [Klincesk, 1980] [Barequet and Sharir, 1995]
Searching for Structure What do we want to compute? What is the structure of the class we are working with? • Ordered set • Inner-product space • Group representation • Currents