38
© 2011Frank Nielsen INF555 Fundamentals of 3D Lecture 4: Debriefing: ICP (kD-trees) Homography Graphics pipeline Frank Nielsen 5 octobre 2011 [email protected]

(slides 4) Visual Computing: Geometry, Graphics, and Vision

Embed Size (px)

DESCRIPTION

Those are the slides for the book: Visual Computing: Geometry, Graphics, and Vision. by Frank Nielsen (2005) http://www.sonycsl.co.jp/person/nielsen/visualcomputing/ http://www.amazon.com/Visual-Computing-Geometry-Graphics-Charles/dp/1584504277

Citation preview

Page 1: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

INF555

Fundamentals of 3DLecture 4:

Debriefing: ICP (kD-trees)HomographyGraphics pipeline Frank Nielsen

5 octobre [email protected]

Page 2: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

ICP: Iterative Closest PointAlgorithm at a glance

● Start from a not too far initial transformation

Do iterations until the mismatch error goes below a threshold: ● Match the point of the target to the source● Compute the best transformation from point correspondence

In practice, this is a very fast registration method...

A Method for Registration of 3-D Shapes.Paul J Besl, Neil D Mckay.IEEE Trans. Pattern Anal. Mach. Intell., Vol. 14, No. 2. (February 1992

Page 3: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

ICP is a generic methodExample for curve registrations:

Curves before registration

Curves after registration

Page 4: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

ICP: Finding the best rigid transformation

Given point correspondences, find the best rigid transformation.

Source/ModelObservation/Target

Find (R,t) that minimizes the squared euclidean error:

Page 5: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Align the center of mass of sets:

Page 6: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Finding the rotation matrix:

Compute the singular value decomposition

Optimal transformation:

Recover the translation once optimal rotation is found

Cross-covariance matrix:

Page 7: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

ICP: Monotonicity and convergenceThe average squared Euclidean distance decreases monotonously (→ convergence)

In fact (stronger result):Each correspondence pair distance decreases

Drawback:When does the local minimum is global?

Difficult to handle symmetry

(use texture, etc. to disambiguate)

Page 8: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Best 3D transformation (with quaternions)With respect to least squares...

SVD take into account reflections...

Minimize:

Page 9: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Best 3D transformation (with quaternions)

Cross-covariance matrix:

Anti-symmetric matrix

Page 10: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Best 3D transformation (with quaternions)

Take the unit eigenvector corresponding to the maximal eigenvalue:

Get the remaining translation (easy) as:

Page 11: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Time complexity of ICP

Linear (fixed dimension) to find least square transformationAt each iteration, perform n nearest neighbor queries

Naive implementation: O(l*n*n) => slow for large n

http://meshlab.sourceforge.net/

Page 12: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

kD-trees for fast NN queries

Nearest neighbor (NN) queries in small dimensions...

http://en.wikipedia.org/wiki/Kd-tree

Page 13: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Build time: O(dn log n) with O(dn) memory

Page 14: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Page 15: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Query complexity: From O(dlog n) to O(dn)

Page 16: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

kD-trees for fast NN queries

Kd-Trees are extremely useful data-structures (many applications)

But also: Approximate nearest neighborshttp://www.cs.umd.edu/~mount/ANN/

Page 17: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

http://donar.umiacs.umd.edu/quadtree/points/kdtree.html

Page 18: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Homography (also called collineation)

Page 19: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Homography (Collineation)

Assuming h33 is not zero, set it to 1 and get:

Page 20: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Homography (Collineation)

Page 21: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Homography (Collineation)

From 4 pairs of point correspondences:

Page 22: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Homography (Collineation)From n pairs of point correspondences:

Matrix pseudo-inverse

Page 23: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Page 24: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Homography (Collineation)

Matching planar surfaces...

Page 25: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Homography (Collineation)Matching perspective pictures acquired from the same nodal point

Page 26: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Homography (Collineation): Projective geometry

Play with duality point/line in projective spaceIt is more stable to select four pairs of lines instead of four points

Page 27: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Graphics pipeline

Page 28: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Graphics pipeline: Scene graph

Scaled rigid transformation:

High level API is Java3D:https://java3d.dev.java.net/

OpenGL in Processing

Page 29: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Graphics pipeline: ProjectionProjections are irreversible transformationsOrthographic projection

Page 30: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Perspective projection: Pinhole camera

Page 31: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Graphics pipeline: Perspective projection

Page 32: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Graphics pipeline: Perspective projection

Page 33: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Graphics pipeline: Perspective truncated pyramidPerspective frustrum

Page 34: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Graphics pipeline: Several viewports

Page 35: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Graphics pipeline (matrix concatenation):

Mv: positionning transformationV: viewing transformationC: clipping transformationMv: viewing transformation

Mv: positionning transformationV: viewing transformationC: clipping transformationMv: viewing transformation

Page 36: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

OpenGL in Java: Processing

Page 37: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

public void display(GLAutoDrawable gLDrawable) { final GL gl = gLDrawable.getGL(); gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); gl.glLoadIdentity(); gl.glTranslatef(-1.5f, 0.0f, -6.0f); gl.glBegin(GL.GL_TRIANGLES); // Drawing Using Triangles gl.glVertex3f(0.0f, 1.0f, 0.0f); // Top gl.glVertex3f(-1.0f, -1.0f, 0.0f); // Bottom Left gl.glVertex3f(1.0f, -1.0f, 0.0f); // Bottom Right gl.glEnd(); // Finished Drawing The Triangle gl.glTranslatef(3.0f, 0.0f, 0.0f); gl.glBegin(GL.GL_QUADS); // Draw A Quad gl.glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left gl.glVertex3f(1.0f, 1.0f, 0.0f); // Top Right gl.glVertex3f(1.0f, -1.0f, 0.0f); // Bottom Right gl.glVertex3f(-1.0f, -1.0f, 0.0f); // Bottom Left gl.glEnd(); // Done Drawing The Quad gl.glFlush(); }

Page 38: (slides 4) Visual Computing: Geometry, Graphics, and Vision

© 2011Frank Nielsen

Processing: 3D color shapes

GLU (Utility)GLUT (Utility Toolkit, including user interfaces.)

http://www.cs.umd.edu/~meesh/kmconroy/JOGLTutorial/