PCL - SURFACE RECONSTRUCTION



Similar documents
PCL Tutorial: The Point Cloud Library By Example. Jeff Delmerico. Vision and Perceptual Machines Lab 106 Davis Hall UB North Campus.

How To Create A Surface From Points On A Computer With A Marching Cube

Fast and Robust Normal Estimation for Point Clouds with Sharp Features

A Genetic Algorithm-Evolved 3D Point Cloud Descriptor

Point Cloud Simulation & Applications Maurice Fallon

Segmentation of building models from dense 3D point-clouds

Real-Time 3D Reconstruction Using a Kinect Sensor

Terrain Traversability Analysis using Organized Point Cloud, Superpixel Surface Normals-based segmentation and PCA-based Classification

CS277 - Experimental Haptics

Modelling 3D Avatar for Virtual Try on

A. OPENING POINT CLOUDS. (Notepad++ Text editor) (Cloud Compare Point cloud and mesh editor) (MeshLab Point cloud and mesh editor)

Removing Moving Objects from Point Cloud Scenes

Juha Hyvärinen SURFACE RECONSTRUCTION OF POINT CLOUDS CAPTURED WITH MICROSOFT KINECT

A technical overview of the Fuel3D system.

Using Photorealistic RenderMan for High-Quality Direct Volume Rendering

t t k t t tt t k

A Short Introduction to Computer Graphics

3D Face Modeling. Vuong Le. IFP group, Beckman Institute University of Illinois ECE417 Spring 2013

CUBE-MAP DATA STRUCTURE FOR INTERACTIVE GLOBAL ILLUMINATION COMPUTATION IN DYNAMIC DIFFUSE ENVIRONMENTS

Monash University Clayton s School of Information Technology CSE3313 Computer Graphics Sample Exam Questions 2007

On Fast Surface Reconstruction Methods for Large and Noisy Point Clouds

Deferred Shading & Screen Space Effects

PERFORMANCE ANALYSIS OF HIGH RESOLUTION IMAGES USING INTERPOLATION TECHNIQUES IN MULTIMEDIA COMMUNICATION SYSTEM

MeshLab and Arc3D: Photo-Reconstruction and Processing of 3D meshes

Multispectral stereo acquisition using 2 RGB cameras and color filters: color and disparity accuracy

Spatio-Temporally Coherent 3D Animation Reconstruction from Multi-view RGB-D Images using Landmark Sampling

Assessment. Presenter: Yupu Zhang, Guoliang Jin, Tuo Wang Computer Vision 2008 Fall

3D Object Recognition in Clutter with the Point Cloud Library

High Performance GPU-based Preprocessing for Time-of-Flight Imaging in Medical Applications

How To Fuse A Point Cloud With A Laser And Image Data From A Pointcloud

Dense Matching Methods for 3D Scene Reconstruction from Wide Baseline Images

PHOTOGRAMMETRIC TECHNIQUES FOR MEASUREMENTS IN WOODWORKING INDUSTRY

3D Scanner using Line Laser. 1. Introduction. 2. Theory

Neural Gas for Surface Reconstruction

Introduction to Computer Graphics

Water Flow in. Alex Vlachos, Valve July 28, 2010

Surface Curvature from Laser Triangulation Data. John Rugis ELECTRICAL & COMPUTER ENGINEERING

Colorado School of Mines Computer Vision Professor William Hoff

INTRODUCTION TO RENDERING TECHNIQUES

From Scattered Samples to Smooth Surfaces

DINAMIC AND STATIC CENTRE OF PRESSURE MEASUREMENT ON THE FORCEPLATE. F. R. Soha, I. A. Szabó, M. Budai. Abstract

TEXTURE AND BUMP MAPPING

Optical Digitizing by ATOS for Press Parts and Tools

Adaptive Neighborhood Selection for Real-Time Surface Normal Estimation from Organized Point Cloud Data Using Integral Images

Consolidated Visualization of Enormous 3D Scan Point Clouds with Scanopy

Surface Reconstruction from Point Clouds

Advanced Methods for Pedestrian and Bicyclist Sensing

A 3D OBJECT SCANNER An approach using Microsoft Kinect.

Data Visualization. Principles and Practice. Second Edition. Alexandru Telea

A Comparison of 3D Sensors for Wheeled Mobile Robots

Computing and Rendering Point Set Surfaces

Automatic Labeling of Lane Markings for Autonomous Vehicles

Alphacam Art combines Vectric s Aspire artistic design software with the market leading Alphacam manufacturing software.

Efficient Attendance Management: A Face Recognition Approach

COMP175: Computer Graphics. Lecture 1 Introduction and Display Technologies

The Visualization Pipeline

GUIDE TO POST-PROCESSING OF THE POINT CLOUD

Analecta Vol. 8, No. 2 ISSN

Computer Graphics. Introduction. Computer graphics. What is computer graphics? Yung-Yu Chuang

Image Processing and Computer Graphics. Rendering Pipeline. Matthias Teschner. Computer Science Department University of Freiburg

CAD and Creativity. Contents

A Prototype For Eye-Gaze Corrected

Model Repair. Leif Kobbelt RWTH Aachen University )NPUT $ATA 2EMOVAL OF TOPOLOGICAL AND GEOMETRICAL ERRORS !NALYSIS OF SURFACE QUALITY

VIRTUAL TRIAL ROOM USING AUGMENTED REALITY

Efficient Organized Point Cloud Segmentation with Connected Components

A Comprehensive Set of Image Quality Metrics

REALTIME 3D MAPPING, OPTIMIZATION, AND RENDERING BASED ON A DEPTH SENSOR CRAIG MOUSER. Bachelor of Science in Computer Engineering

Introduction to Computer Graphics. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

Lighting Estimation in Indoor Environments from Low-Quality Images

Sensor Modeling for a Walking Robot Simulation. 1 Introduction

1 Log visualization at CNES (Part II)

Efficient Storage, Compression and Transmission

Point Cloud Segmentation via Constrained Nonlinear Least Squares Surface Normal Estimates

Volume visualization I Elvins

Efficient Simplification of Point-Sampled Surfaces

Interactive Segmentation, Tracking, and Kinematic Modeling of Unknown 3D Articulated Objects

NVIDIA IndeX Enabling Interactive and Scalable Visualization for Large Data Marc Nienhaus, NVIDIA IndeX Engineering Manager and Chief Architect

Enhanced LIC Pencil Filter

The 3D rendering pipeline (our version for this class)

Normal Estimation for Point Clouds: A Comparison Study for a Voronoi Based Method

Computer Applications in Textile Engineering. Computer Applications in Textile Engineering

High speed 3D capture for Configuration Management DOE SBIR Phase II Paul Banks

How To Analyze Ball Blur On A Ball Image

Robust NURBS Surface Fitting from Unorganized 3D Point Clouds for Infrastructure As-Built Modeling

Application Example: Reverse Engineering

A Method for Controlling Mouse Movement using a Real- Time Camera

Automatic Building Facade Detection in Mobile Laser Scanner point Clouds

VEHICLE TRACKING USING ACOUSTIC AND VIDEO SENSORS

Software Manual. IDEA The Software Version 1.0

Manual for simulation of EB processing. Software ModeRTL

3D Vision An enabling Technology for Advanced Driver Assistance and Autonomous Offroad Driving

Blender Notes. Introduction to Digital Modelling and Animation in Design Blender Tutorial - week 9 The Game Engine

HIGH-PERFORMANCE INSPECTION VEHICLE FOR RAILWAYS AND TUNNEL LININGS. HIGH-PERFORMANCE INSPECTION VEHICLE FOR RAILWAY AND ROAD TUNNEL LININGS.

Transcription:

PCL - SURFACE RECONSTRUCTION TOYOTA CODE SPRINT Alexandru-Eugen Ichim Computer Graphics and Geometry Laboratory

PROBLEM DESCRIPTION 1/2 3D revolution due to cheap RGB-D cameras (Asus Xtion & Microsoft Kinect) Affordability comes with poor quality: high level of noise in both the depth and the color images quantization artifacts missing pixels various color image distortions, specific to webcam sensors and optics

PROBLEM DESCRIPTION 2/2 Incapability of the Kinect to record transparent or shiny objects

MOTIVATION 3D points are sampling surfaces - no dimension, orientation, etc. (see surflets) point neighborhoods and features capture some aspects of these surfaces in some cases we are interested in the actual surface Knowing the real surface enables: more accurate feature extraction smoothing and resampling (hole filling) collision and occlusion checks texture mapping fitting and recognition

DATASET COLLECTION 30 realistic situations that a personal robot might face in an undirected human environment captured so that to simulate a robot movement and to record all the known sensor artifacts all available at http://svn.pointclouds.org/data/toyota

pcl::surface REVAMP CloudSurfaceProcessing PointCloud to PointCloud for better surface approximation e.g., MovingLeastSquares, BilateralUpsampling MeshConstruction PointCloud to PolygonMesh, convert cloud to mesh without modifying vertex positions e.g., ConcaveHull, ConvexHull, OrganizedFastMesh, GreedyProjectionTriangulation SurfaceReconstruction PointCloud to PolygonMesh, generate mesh with a possibly modified underlying vertex set e.g., GridProjection, MarchingCubes, SurfelSmoothing, Poisson MeshProcessing PolygonMesh to PolygonMesh, improve input meshes by modifying connectivity and/or vertices e.g., EarClipping, MeshSmoothingLaplacianVTK, MeshSmoothingWindowedSincVTK, MeshSubdivisionVTK

MOVING LEAST SQUARES 1/2 Approximation of the underlying surface with an analytical function Based on a (weighted) neighborhood Height-map along a tangent normal onto which the query point is projected Complexity of the used function (and of the tangent estimation) define accuracy/runtime Having a function enables accurate computation of normals, surface curves, and up/down-sampling

MOVING LEAST SQUARES M. Levin, Mesh-independent surface interpolation,geometric Modeling for Scientific Visualization Springer-Verlag, 2003, 37-49 2/2 1. Fit plane to local surface (PCA) 2. Fit a polynomial function in the set of distances from the points to the surface. 3. Project points back to surface

MOVING LEAST SQUARES 1.SMOOTHING 1/3 MLS applied on the Bottles dataset Eliminates noise. from left to right: original scan MLS smoothed with search radius = 3 cm and second order polynomial fitting MLS smoothed with search radius = 5 cm and second order polynomial fitting

MOVING LEAST SQUARES 1.SMOOTHING 2/3 MLS applied on the Bed Sheets dataset from left to right: original scan MLS smoothed with search radius = 5 cm and second order polynomial fitting MLS smoothed with search radius = 3 cm and second order polynomial fitting Smoother surfaces.

MOVING LEAST SQUARES 1.SMOOTHING 3/3 3.4 x 10 3 3.2 3 2.8 order 0 order 1 order 2 order 3 RMS error 2.6 2.4 2.2 2 1.8 Adding noise to original Stanford Bunny dataset with standard deviation 0.001 (resulting in RMSE of 0.00173) 1.6 1.4 0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02 Algorithm search radius Best result at search_radius=0.005, improvement of RMSE with 15% (similarly for the Dragon dataset) Varying the order of the polynomial fitting: higher order beneficial when large surface/ curvature variance in neighborhood

MOVING LEAST SQUARES 2. UPSAMPLING 1/6 SAMPLE_LOCAL_PLANE Door Handle dataset After Before

MOVING LEAST SQUARES 2. UPSAMPLING 2/6 SAMPLE_LOCAL_PLANE More grippable surfaces. Tupperware dataset After Before

MOVING LEAST SQUARES 2. UPSAMPLING 3/6 VOXEL_GRID_DILATION

MOVING LEAST SQUARES 2. UPSAMPLING 4/6 VOXEL_GRID_DILATION Computer Screen dataset Fills relatively large holes. Before After

MOVING LEAST SQUARES 2. UPSAMPLING 5/6 Sample locally fitted polynomial in different ways.

MOVING LEAST SQUARES 2. UPSAMPLING 6/6 Plane fitting quality (images show inliers) original MLS, no upsampling SAMPLE_LOCAL_PLANE Best performer! RANDOM_UNIFORM_DENSITY VOXEL_GRID_DILATION

BILATERAL FILTERING UPSAMPLING 1/4 Kinect modes: 640x480 RGB image + 640x480 depth image at 30Hz 1280x1024 RGB image + 640x480 depth image at 15 Hz Why not use the better quality RGB image to enhance the depth map? J. Kopf, Joint Bilateral Upsampling, ACM Transactions on Graphics (Proceedings of SIGGRAPH 2007)

BILATERAL FILTERING UPSAMPLING 2/4 4x the amount of points. Smoother surfaces. original upsampled

Fills small holes. BILATERAL FILTERING UPSAMPLING 3/4 More iterations - fill larger holes - needs more computation time

BILATERAL FILTERING UPSAMPLING 4/4 Still, this does not solve for the problem of transparent objects...

MARCHING CUBES Have implementations of 2 classical methods: Hoppe et al.: RBF:

M. Kazhdan, Poisson Surface Reconstruction, Symposium on Geometry Processing (June 2006) POISSON SURFACE RECONSTRUCTION Sensitive to noise.

OTHER METHODS Mesh Operations from VTK MeshSmoothingLaplacianVTK MeshSmoothingWindowedSincVTK Need to convert between data types. MeshSubdivisionVTK OrganizedFastMesh (demo) ConcaveHull, ConvexHull - use QHull library GridProjection - work of WG intern, Rosie Li

RECONSTRUCTION PIPELINE EXAMPLE 1/4 #include <pcl/common/common.h> #include <pcl/io/pcd_io.h> #include <pcl/features/normal_3d_omp.h> #include <pcl/surface/mls.h> #include <pcl/surface/poisson.h> #include <pcl/io/vtk_io.h> using namespace pcl; int main (int argc, char **argv) { if (argc!= 3) { PCL_ERROR ("Syntax: %s input.pcd output.ply\n", argv[0]); return -1; } PointCloud<PointXYZ>::Ptr cloud (new PointCloud<PointXYZ> ()); io::loadpcdfile (argv[1], *cloud);

RECONSTRUCTION PIPELINE EXAMPLE 2/4 MovingLeastSquares<PointXYZ, PointXYZ> mls; mls.setinputcloud (cloud); mls.setsearchradius (0.01); mls.setpolynomialfit (true); mls.setpolynomialorder (2); mls.setupsamplingmethod (MovingLeastSquares<PointXYZ, PointXYZ>::SAMPLE_LOCAL_PLANE); mls.setupsamplingradius (0.005); mls.setupsamplingstepsize (0.003); PointCloud<PointXYZ>::Ptr cloud_smoothed (new PointCloud<PointXYZ> ()); mls.process (*cloud_smoothed); NormalEstimationOMP<PointXYZ, Normal> ne; ne.setnumberofthreads (8); ne.setinputcloud (cloud_smoothed); ne.setradiussearch (0.01); Eigen::Vector4f centroid; compute3dcentroid (*cloud_smoothed, centroid); ne.setviewpoint (centroid[0], centroid[1], centroid[2]); PointCloud<Normal>::Ptr cloud_normals (new PointCloud<Normal> ()); ne.compute (*cloud_normals); for (size_t i = 0; i < cloud_normals->size (); ++i) { cloud_normals->points[i].normal_x *= -1; cloud_normals->points[i].normal_y *= -1; cloud_normals->points[i].normal_z *= -1; } PointCloud<PointNormal>::Ptr cloud_smoothed_normals (new PointCloud<PointNormal> ()); concatenatefields (*cloud_smoothed, *cloud_normals, *cloud_smoothed_normals);

RECONSTRUCTION PIPELINE EXAMPLE 3/4

RECONSTRUCTION PIPELINE EXAMPLE 4/4 Poisson<PointNormal> poisson; poisson.setdepth (9); poisson.setinputcloud (cloud_smoothed_normals); PolygonMesh mesh; poisson.reconstruct (mesh); io::savevtkfile (argv[2], mesh); } return 0;

THANKS!