SlideShare a Scribd company logo
Registration   Iterative Closest Points (ICP)             Initial Alignment   Example/Tutorial Code




                                 PCL :: Registration
                       Initial alignment of point clouds
                          Refining initial alignments
                                         September 25, 2011
Registration      Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                                                      Outline



       1. Registration


       2. Registration using the Iterative Closest Points (ICP)


       3. Feature-Based Initial Alignment


       4. Example/Tutorial Code




                                                                       Dirk Holz / PCL :: Registration
Registration          Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                                              Registration

       Wanted: transformation that aligns one point cloud to another.




               for initially aligning point clouds (based on features)
               for refining initial alignments
               (using the Iterative Closest Point (ICP) Algorithm)
                                                                           Dirk Holz / PCL :: Registration
Registration        Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                                                   ICP (1/6)


       Registration using the Iterative Closest Point (ICP) Algorithm




       Given an input point cloud and a target point cloud
          1. determine pairs of corresponding points,
          2. estimate a transformation that minimizes the distances
             between the correspondences,
          3. apply the transformation to align input and target.

                                                                         Dirk Holz / PCL :: Registration
Registration          Iterative Closest Points (ICP)         Initial Alignment                  Example/Tutorial Code


                                                                                           ICP (2/6)

               Given:
               Two n-dimensional sets of points – the model set
                                  R
               M = {mi |mi ∈ n , i = 1, . . . , Nm } and the data set
                                 R
               D = {dj |dj ∈ n , j = 1, . . . Nd }
               Wanted:
               A rotation R and a translation ∆t that map D onto M.
               handled as an optimization problem =⇒ Minimizing
               mapping error E
                                          Nm Nd
                                                                                           2
                    E (R, ∆t) =                        wi,j mi − Rdj + ∆t                                 (1)
                                         i=1 j=1


               Weighting factor wi,j encodes point correspondences,
               wi,j = 1 for correspondence(mi , di ), 0 otherwise
               Correspondence from Neighbor Search
                                                                                 Dirk Holz / PCL :: Registration
Registration          Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                                                     ICP (3/6)


       The ICP API
        pcl::IterativeClosestPoint<InType, OutType> icp;
       Provide a pointer to the input point cloud
        icp.setInputCloud (input_cloud);
       Provide a pointer to the target point cloud
        icp.setInputTarget (target_cloud);
       Align input to target to obtain
        icp.align (aligned_cloud);
        Eigen::Matrix4f transformation = icp.
        getFinalTransformation ();

               the aligned cloud (transformed copy of input cloud),
               and transformation used for alignment.


                                                                           Dirk Holz / PCL :: Registration
Registration          Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                                                     ICP (4/6)



       The ICP API: Termination Criteria
               Max. number of iteration steps
               → set via setMaximumIterations(nr_iterations)
               Convergence: Estimated transformation doesn’t change
               (the sum of differences between current and last
               transformation is smaller than a user-defined threshold)
               → set via setTransformationEpsilon(epsilon)
               A solution was found (the sum of squared errors is smaller
               than a user-defined threshold)
               → set via setEuclideanFitnessEpsilon(distance)



                                                                           Dirk Holz / PCL :: Registration
Registration          Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                                                     ICP (5/6)


       The ICP API: Problems with ICP

       False correspondences negatively affect the alignment
       (the algorithms gets caught in local minima).
               Maximum distance between correspondences:
               icp.setMaxCorrespondenceDistance (distance);
               Use RANSAC to neglect false correspondences
               icp.setRANSACOutlierRejectionThreshold (distance);

                   Model: Transformation (estimated on 3 samples)
                   Inliers: Points whose distance to the corresponding is
                   below the given threshold



                                                                           Dirk Holz / PCL :: Registration
Registration          Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                                                     ICP (6/6)




       The ICP API: Problems with ICP

       The ICP algorithms needs a rough initial alignment.
               Use Features to get an initial alignment!

       → pcl::SampleConsensusInitialAlignment




                                                                           Dirk Holz / PCL :: Registration
Registration          Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                       Initial Alignment (1/7)

          1. Compute sets of keypoints
          2. Compute (local) feature descriptors (e.g. FPFH)
          3. Use SAC-based approach to find initial alignment
               3.1 Take 3 random correspondence pairs
               3.2 Compute transformation for these pairs
               3.3 Apply transformation to all source points, and determine
                   inliers
          4. Use best transformation for initial alignment, and ICP for
             refinement




                                                                                               *
                                                                           Dirk Holz / PCL :: Registration
Registration                                                            Iterative Closest Points (ICP)                                                                              Initial Alignment                                                                       Example/Tutorial Code


                                                                                                                                                                                    Initial Alignment (2/7)


                                                                                               points on similar surfaces




                                                                                                                                                                                                                                                                                                   *
                                                        Persistent Feature Points Histograms                                                           Persistent Feature Points Histograms                                                           Persistent Feature Points Histograms
                                           35                                                                                             35                                                                                             35
                                                                                               P1                                                                                             P2                                                                                             P3
          Ratio of points in one bin (%)




                                                                                                         Ratio of points in one bin (%)




                                                                                                                                                                                                        Ratio of points in one bin (%)
                                           30                                                                                             30                                                                                             30



                                           25
                                                                                               Q1                                         25
                                                                                                                                                                                              Q2                                         25
                                                                                                                                                                                                                                                                                             Q3

                                           20                                                                                             20                                                                                             20



                                           15                                                                                             15                                                                                             15



                                           10                                                                                             10                                                                                             10



                                            5                                                                                             5                                                                                              5



                                            0                                                                                             0                                                                                              0
                                                0   2       4     6      8      10     12      14   16                                         0   2       4     6      8      10     12      14   16                                         0   2       4     6      8      10     12      14   16
                                                                       Bins                                                                                           Bins                                                                                           Bins



                                                                                                                                                                                                                                                  Dirk Holz / PCL :: Registration
Registration   Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                Initial Alignment (3/7)




                                                                                                      *


                                                                    Dirk Holz / PCL :: Registration
Registration       Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                    Initial Alignment (4/7)
               Outdoor Example: Non-Linear Optimization




                                                                                          *
                                                                        Dirk Holz / PCL :: Registration
Registration   Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                Initial Alignment (5/7)




                                                                    Dirk Holz / PCL :: Registration
Registration   Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                Initial Alignment (6/7)




                                                                    Dirk Holz / PCL :: Registration
Registration       Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                    Initial Alignment (7/7)


       The SampleConsensusInitialAlignment API
        pcl::SampleConsensusInitialAlignment<PointT, PointT,
        DescriptorT> sac;
       Provide a pointer to the input point cloud and features
        sac.setInputCloud (source_points);
        sac.setSourceFeatures (source_descriptors);
       Provide a pointer to the target point cloud and features
        sac.setInputTarget (target_points);
        sac.setTargetFeatures (target_descriptors);
       Align input to target to obtain
        sac.align (aligned_cloud);
        Eigen::Matrix4f transformation = sac.
        getFinalTransformation ();


                                                                        Dirk Holz / PCL :: Registration
Registration          Iterative Closest Points (ICP)         Initial Alignment                  Example/Tutorial Code


                                                       Example/Tutorial Code (1/5)

       Initial alignment of point clouds
       1       pcl::SampleConsensusInitialAlignment<PointT, PointT,
                   DescriptorT> sac;
       2       sac.setMinSampleDistance (min_sample_distance);
       3       sac.setMaxCorrespondenceDistance (
                   max_correspondence_distance);
       4       sac.setMaximumIterations (nr_iterations);
       5
       6       sac.setInputCloud (source_points);
       7       sac.setSourceFeatures (source_descriptors);
       8
       9       sac.setInputTarget (target_points);
      10       sac.setTargetFeatures (target_descriptors);
      11
      12       PointCloudPtr aligned_source(new PointCloud);
      13       sac.align (*aligned_source);
      14       Eigen::Matrix4f initial_T = sac.getFinalTransformation
                    ());
                                                                                 Dirk Holz / PCL :: Registration
Registration          Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                         Example Code (2/5)


       Refining initial alignments using ICP
       1       pcl::IterativeClosestPoint<PointT, PointT> icp;
       2       icp.setMaxCorrespondenceDistance (distance);
       3       icp.setRANSACOutlierRejectionThreshold (distance);
       4       icp.setTransformationEpsilon (transformation_epsilon);
       5       icp.setMaximumIterations (max_iterations);
       6
       7       icp.setInputCloud (aligned_source); // from (1)
       8       icp.setInputTarget (target_points);
       9
      10       PointCloud registration_output;
      11       icp.align (registration_output);
      12
      13       Eigen::Matrix4f refined_T =
      14            icp.getFinalTransformation () * initial_T);


                                                                           Dirk Holz / PCL :: Registration
Registration      Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                     Example Code (3/5)

       Example: Correspondences in initial alignment
        $ ./correspondence_viewer ../../data/robot/robot0
        ../../data/robot/robot1 -n 5




                                                                       Dirk Holz / PCL :: Registration
Registration      Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                     Example Code (4/5)

       Example: Initial alignment + refinement
        $ ./test_registration ../../data/robot/robot0 ../../
        data/robot/robot1 -i 0.025,0.01,500 -r 0.05,0.05,0,100




                                                                       Dirk Holz / PCL :: Registration
Registration      Iterative Closest Points (ICP)   Initial Alignment                  Example/Tutorial Code


                                                     Example Code (5/5)

       Example: Final model = robot0 + robot1
        $ ./test_registration ... -s robot_registered.pcd
        $ pcd_viewer robot_registered.pcd




                                                                       Dirk Holz / PCL :: Registration

More Related Content

What's hot

K Nearest Neighbor Presentation
K Nearest Neighbor PresentationK Nearest Neighbor Presentation
K Nearest Neighbor Presentation
Dessy Amirudin
 
Image feature extraction
Image feature extractionImage feature extraction
Image feature extraction
Rushin Shah
 
Scale Invariant feature transform
Scale Invariant feature transformScale Invariant feature transform
Scale Invariant feature transform
Shanker Naik
 
Explanation methods for Artificial Intelligence Models
Explanation methods for Artificial Intelligence ModelsExplanation methods for Artificial Intelligence Models
Explanation methods for Artificial Intelligence Models
Deep Learning Italia
 
Pose estimation from RGB images by deep learning
Pose estimation from RGB images by deep learningPose estimation from RGB images by deep learning
Pose estimation from RGB images by deep learning
Yu Huang
 
Liang- Barsky Algorithm, Polygon clipping & pipeline clipping of polygons
Liang- Barsky Algorithm, Polygon clipping & pipeline clipping of polygonsLiang- Barsky Algorithm, Polygon clipping & pipeline clipping of polygons
Liang- Barsky Algorithm, Polygon clipping & pipeline clipping of polygons
Lahiru Danushka
 
Digital Image Processing Fundamental
Digital Image Processing FundamentalDigital Image Processing Fundamental
Digital Image Processing Fundamental
Thuong Nguyen Canh
 
zernike moments for image classification
zernike moments for image classificationzernike moments for image classification
zernike moments for image classification
Sandeep Kumar
 
Feature Extraction
Feature ExtractionFeature Extraction
Feature Extraction
skylian
 
Chain code in dip
Chain code in dipChain code in dip
Chain code in dip
Rishav Bhurtel
 
Virtual reality
Virtual realityVirtual reality
Virtual reality
ReachLocal Services India
 
[Mmlab seminar 2016] deep learning for human pose estimation
[Mmlab seminar 2016] deep learning for human pose estimation[Mmlab seminar 2016] deep learning for human pose estimation
[Mmlab seminar 2016] deep learning for human pose estimation
Wei Yang
 
Single Layer Rosenblatt Perceptron
Single Layer Rosenblatt PerceptronSingle Layer Rosenblatt Perceptron
Single Layer Rosenblatt Perceptron
AndriyOleksiuk
 
Region based segmentation
Region based segmentationRegion based segmentation
Region based segmentation
Inamul Hossain Imran
 
HEVC intra coding
HEVC intra codingHEVC intra coding
HEVC intra coding
Manohar Kuse
 
Sec 2.pdf
Sec 2.pdfSec 2.pdf
Sec 2.pdf
HebaSamy22
 
Diffusion Deformable Model for 4D Temporal Medical Image Generation
Diffusion Deformable Model for 4D Temporal Medical Image GenerationDiffusion Deformable Model for 4D Temporal Medical Image Generation
Diffusion Deformable Model for 4D Temporal Medical Image Generation
BoahKim2
 
ImageProcessing10-Segmentation(Thresholding) (1).ppt
ImageProcessing10-Segmentation(Thresholding) (1).pptImageProcessing10-Segmentation(Thresholding) (1).ppt
ImageProcessing10-Segmentation(Thresholding) (1).ppt
VikramBarapatre2
 
Object tracking
Object trackingObject tracking
Object tracking
Sri vidhya k
 
Self-Attention with Linear Complexity
Self-Attention with Linear ComplexitySelf-Attention with Linear Complexity
Self-Attention with Linear Complexity
Sangwoo Mo
 

What's hot (20)

K Nearest Neighbor Presentation
K Nearest Neighbor PresentationK Nearest Neighbor Presentation
K Nearest Neighbor Presentation
 
Image feature extraction
Image feature extractionImage feature extraction
Image feature extraction
 
Scale Invariant feature transform
Scale Invariant feature transformScale Invariant feature transform
Scale Invariant feature transform
 
Explanation methods for Artificial Intelligence Models
Explanation methods for Artificial Intelligence ModelsExplanation methods for Artificial Intelligence Models
Explanation methods for Artificial Intelligence Models
 
Pose estimation from RGB images by deep learning
Pose estimation from RGB images by deep learningPose estimation from RGB images by deep learning
Pose estimation from RGB images by deep learning
 
Liang- Barsky Algorithm, Polygon clipping & pipeline clipping of polygons
Liang- Barsky Algorithm, Polygon clipping & pipeline clipping of polygonsLiang- Barsky Algorithm, Polygon clipping & pipeline clipping of polygons
Liang- Barsky Algorithm, Polygon clipping & pipeline clipping of polygons
 
Digital Image Processing Fundamental
Digital Image Processing FundamentalDigital Image Processing Fundamental
Digital Image Processing Fundamental
 
zernike moments for image classification
zernike moments for image classificationzernike moments for image classification
zernike moments for image classification
 
Feature Extraction
Feature ExtractionFeature Extraction
Feature Extraction
 
Chain code in dip
Chain code in dipChain code in dip
Chain code in dip
 
Virtual reality
Virtual realityVirtual reality
Virtual reality
 
[Mmlab seminar 2016] deep learning for human pose estimation
[Mmlab seminar 2016] deep learning for human pose estimation[Mmlab seminar 2016] deep learning for human pose estimation
[Mmlab seminar 2016] deep learning for human pose estimation
 
Single Layer Rosenblatt Perceptron
Single Layer Rosenblatt PerceptronSingle Layer Rosenblatt Perceptron
Single Layer Rosenblatt Perceptron
 
Region based segmentation
Region based segmentationRegion based segmentation
Region based segmentation
 
HEVC intra coding
HEVC intra codingHEVC intra coding
HEVC intra coding
 
Sec 2.pdf
Sec 2.pdfSec 2.pdf
Sec 2.pdf
 
Diffusion Deformable Model for 4D Temporal Medical Image Generation
Diffusion Deformable Model for 4D Temporal Medical Image GenerationDiffusion Deformable Model for 4D Temporal Medical Image Generation
Diffusion Deformable Model for 4D Temporal Medical Image Generation
 
ImageProcessing10-Segmentation(Thresholding) (1).ppt
ImageProcessing10-Segmentation(Thresholding) (1).pptImageProcessing10-Segmentation(Thresholding) (1).ppt
ImageProcessing10-Segmentation(Thresholding) (1).ppt
 
Object tracking
Object trackingObject tracking
Object tracking
 
Self-Attention with Linear Complexity
Self-Attention with Linear ComplexitySelf-Attention with Linear Complexity
Self-Attention with Linear Complexity
 

Similar to Registration 3

Parallel Programming on the ANDC cluster
Parallel Programming on the ANDC clusterParallel Programming on the ANDC cluster
Parallel Programming on the ANDC cluster
Sudhang Shankar
 
Unmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeUnmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/Invoke
Dmitri Nesteruk
 
Programming basic computer
Programming basic computerProgramming basic computer
Programming basic computer
Martial Kouadio
 
מצגת פרויקט
מצגת פרויקטמצגת פרויקט
מצגת פרויקט
Yehezkel Padael
 
CAO-Unit-I.pptx
CAO-Unit-I.pptxCAO-Unit-I.pptx
CAO-Unit-I.pptx
ClassicFUKRA
 
Concept_of_NAN_IND_INF_DEN_Using_C++
Concept_of_NAN_IND_INF_DEN_Using_C++Concept_of_NAN_IND_INF_DEN_Using_C++
Concept_of_NAN_IND_INF_DEN_Using_C++
Mohammed Nisamudheen
 
Using Parallel Computing Platform - NHDNUG
Using Parallel Computing Platform - NHDNUGUsing Parallel Computing Platform - NHDNUG
Using Parallel Computing Platform - NHDNUG
North Houston .NET Users Group
 
On the Use of Burst Buffers for Accelerating Data-Intensive Scientific Workflows
On the Use of Burst Buffers for Accelerating Data-Intensive Scientific WorkflowsOn the Use of Burst Buffers for Accelerating Data-Intensive Scientific Workflows
On the Use of Burst Buffers for Accelerating Data-Intensive Scientific Workflows
Rafael Ferreira da Silva
 
Report on c and c++
Report on c and c++Report on c and c++
Report on c and c++
oggyrao
 
Two-level Just-in-Time Compilation with One Interpreter and One Engine
Two-level Just-in-Time Compilation with One Interpreter and One EngineTwo-level Just-in-Time Compilation with One Interpreter and One Engine
Two-level Just-in-Time Compilation with One Interpreter and One Engine
Yusuke Izawa
 
PPU Optimisation Lesson
PPU Optimisation LessonPPU Optimisation Lesson
PPU Optimisation Lesson
slantsixgames
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIA
Aiman Hud
 
MeCC: Memory Comparison-based Code Clone Detector
MeCC: Memory Comparison-based Code Clone DetectorMeCC: Memory Comparison-based Code Clone Detector
MeCC: Memory Comparison-based Code Clone Detector
영범 정
 
MeCC: Memory Comparison based Clone Detector
MeCC: Memory Comparison based Clone DetectorMeCC: Memory Comparison based Clone Detector
MeCC: Memory Comparison based Clone Detector
Sung Kim
 
Er24902905
Er24902905Er24902905
Er24902905
IJERA Editor
 
Introduction to Parallelization and performance optimization
Introduction to Parallelization and performance optimizationIntroduction to Parallelization and performance optimization
Introduction to Parallelization and performance optimization
CSUC - Consorci de Serveis Universitaris de Catalunya
 
Combining Phase Identification and Statistic Modeling for Automated Parallel ...
Combining Phase Identification and Statistic Modeling for Automated Parallel ...Combining Phase Identification and Statistic Modeling for Automated Parallel ...
Combining Phase Identification and Statistic Modeling for Automated Parallel ...
Mingliang Liu
 
Lec04
Lec04Lec04
Lec04
Lec04Lec04
Lp seminar
Lp seminarLp seminar
Lp seminar
guestdff961
 

Similar to Registration 3 (20)

Parallel Programming on the ANDC cluster
Parallel Programming on the ANDC clusterParallel Programming on the ANDC cluster
Parallel Programming on the ANDC cluster
 
Unmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeUnmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/Invoke
 
Programming basic computer
Programming basic computerProgramming basic computer
Programming basic computer
 
מצגת פרויקט
מצגת פרויקטמצגת פרויקט
מצגת פרויקט
 
CAO-Unit-I.pptx
CAO-Unit-I.pptxCAO-Unit-I.pptx
CAO-Unit-I.pptx
 
Concept_of_NAN_IND_INF_DEN_Using_C++
Concept_of_NAN_IND_INF_DEN_Using_C++Concept_of_NAN_IND_INF_DEN_Using_C++
Concept_of_NAN_IND_INF_DEN_Using_C++
 
Using Parallel Computing Platform - NHDNUG
Using Parallel Computing Platform - NHDNUGUsing Parallel Computing Platform - NHDNUG
Using Parallel Computing Platform - NHDNUG
 
On the Use of Burst Buffers for Accelerating Data-Intensive Scientific Workflows
On the Use of Burst Buffers for Accelerating Data-Intensive Scientific WorkflowsOn the Use of Burst Buffers for Accelerating Data-Intensive Scientific Workflows
On the Use of Burst Buffers for Accelerating Data-Intensive Scientific Workflows
 
Report on c and c++
Report on c and c++Report on c and c++
Report on c and c++
 
Two-level Just-in-Time Compilation with One Interpreter and One Engine
Two-level Just-in-Time Compilation with One Interpreter and One EngineTwo-level Just-in-Time Compilation with One Interpreter and One Engine
Two-level Just-in-Time Compilation with One Interpreter and One Engine
 
PPU Optimisation Lesson
PPU Optimisation LessonPPU Optimisation Lesson
PPU Optimisation Lesson
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIA
 
MeCC: Memory Comparison-based Code Clone Detector
MeCC: Memory Comparison-based Code Clone DetectorMeCC: Memory Comparison-based Code Clone Detector
MeCC: Memory Comparison-based Code Clone Detector
 
MeCC: Memory Comparison based Clone Detector
MeCC: Memory Comparison based Clone DetectorMeCC: Memory Comparison based Clone Detector
MeCC: Memory Comparison based Clone Detector
 
Er24902905
Er24902905Er24902905
Er24902905
 
Introduction to Parallelization and performance optimization
Introduction to Parallelization and performance optimizationIntroduction to Parallelization and performance optimization
Introduction to Parallelization and performance optimization
 
Combining Phase Identification and Statistic Modeling for Automated Parallel ...
Combining Phase Identification and Statistic Modeling for Automated Parallel ...Combining Phase Identification and Statistic Modeling for Automated Parallel ...
Combining Phase Identification and Statistic Modeling for Automated Parallel ...
 
Lec04
Lec04Lec04
Lec04
 
Lec04
Lec04Lec04
Lec04
 
Lp seminar
Lp seminarLp seminar
Lp seminar
 

Recently uploaded

Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
Pablo Gómez Abajo
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
zjhamm304
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
BibashShahi
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
Vadym Kazulkin
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
UiPathCommunity
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
Mydbops
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
DanBrown980551
 
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeckPoznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
FilipTomaszewski5
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
DianaGray10
 
"What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w..."What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w...
Fwdays
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 

Recently uploaded (20)

Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
 
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeckPoznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
 
"What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w..."What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w...
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 

Registration 3

  • 1. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code PCL :: Registration Initial alignment of point clouds Refining initial alignments September 25, 2011
  • 2. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Outline 1. Registration 2. Registration using the Iterative Closest Points (ICP) 3. Feature-Based Initial Alignment 4. Example/Tutorial Code Dirk Holz / PCL :: Registration
  • 3. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Registration Wanted: transformation that aligns one point cloud to another. for initially aligning point clouds (based on features) for refining initial alignments (using the Iterative Closest Point (ICP) Algorithm) Dirk Holz / PCL :: Registration
  • 4. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code ICP (1/6) Registration using the Iterative Closest Point (ICP) Algorithm Given an input point cloud and a target point cloud 1. determine pairs of corresponding points, 2. estimate a transformation that minimizes the distances between the correspondences, 3. apply the transformation to align input and target. Dirk Holz / PCL :: Registration
  • 5. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code ICP (2/6) Given: Two n-dimensional sets of points – the model set R M = {mi |mi ∈ n , i = 1, . . . , Nm } and the data set R D = {dj |dj ∈ n , j = 1, . . . Nd } Wanted: A rotation R and a translation ∆t that map D onto M. handled as an optimization problem =⇒ Minimizing mapping error E Nm Nd 2 E (R, ∆t) = wi,j mi − Rdj + ∆t (1) i=1 j=1 Weighting factor wi,j encodes point correspondences, wi,j = 1 for correspondence(mi , di ), 0 otherwise Correspondence from Neighbor Search Dirk Holz / PCL :: Registration
  • 6. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code ICP (3/6) The ICP API pcl::IterativeClosestPoint<InType, OutType> icp; Provide a pointer to the input point cloud icp.setInputCloud (input_cloud); Provide a pointer to the target point cloud icp.setInputTarget (target_cloud); Align input to target to obtain icp.align (aligned_cloud); Eigen::Matrix4f transformation = icp. getFinalTransformation (); the aligned cloud (transformed copy of input cloud), and transformation used for alignment. Dirk Holz / PCL :: Registration
  • 7. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code ICP (4/6) The ICP API: Termination Criteria Max. number of iteration steps → set via setMaximumIterations(nr_iterations) Convergence: Estimated transformation doesn’t change (the sum of differences between current and last transformation is smaller than a user-defined threshold) → set via setTransformationEpsilon(epsilon) A solution was found (the sum of squared errors is smaller than a user-defined threshold) → set via setEuclideanFitnessEpsilon(distance) Dirk Holz / PCL :: Registration
  • 8. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code ICP (5/6) The ICP API: Problems with ICP False correspondences negatively affect the alignment (the algorithms gets caught in local minima). Maximum distance between correspondences: icp.setMaxCorrespondenceDistance (distance); Use RANSAC to neglect false correspondences icp.setRANSACOutlierRejectionThreshold (distance); Model: Transformation (estimated on 3 samples) Inliers: Points whose distance to the corresponding is below the given threshold Dirk Holz / PCL :: Registration
  • 9. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code ICP (6/6) The ICP API: Problems with ICP The ICP algorithms needs a rough initial alignment. Use Features to get an initial alignment! → pcl::SampleConsensusInitialAlignment Dirk Holz / PCL :: Registration
  • 10. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Initial Alignment (1/7) 1. Compute sets of keypoints 2. Compute (local) feature descriptors (e.g. FPFH) 3. Use SAC-based approach to find initial alignment 3.1 Take 3 random correspondence pairs 3.2 Compute transformation for these pairs 3.3 Apply transformation to all source points, and determine inliers 4. Use best transformation for initial alignment, and ICP for refinement * Dirk Holz / PCL :: Registration
  • 11. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Initial Alignment (2/7) points on similar surfaces * Persistent Feature Points Histograms Persistent Feature Points Histograms Persistent Feature Points Histograms 35 35 35 P1 P2 P3 Ratio of points in one bin (%) Ratio of points in one bin (%) Ratio of points in one bin (%) 30 30 30 25 Q1 25 Q2 25 Q3 20 20 20 15 15 15 10 10 10 5 5 5 0 0 0 0 2 4 6 8 10 12 14 16 0 2 4 6 8 10 12 14 16 0 2 4 6 8 10 12 14 16 Bins Bins Bins Dirk Holz / PCL :: Registration
  • 12. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Initial Alignment (3/7) * Dirk Holz / PCL :: Registration
  • 13. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Initial Alignment (4/7) Outdoor Example: Non-Linear Optimization * Dirk Holz / PCL :: Registration
  • 14. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Initial Alignment (5/7) Dirk Holz / PCL :: Registration
  • 15. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Initial Alignment (6/7) Dirk Holz / PCL :: Registration
  • 16. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Initial Alignment (7/7) The SampleConsensusInitialAlignment API pcl::SampleConsensusInitialAlignment<PointT, PointT, DescriptorT> sac; Provide a pointer to the input point cloud and features sac.setInputCloud (source_points); sac.setSourceFeatures (source_descriptors); Provide a pointer to the target point cloud and features sac.setInputTarget (target_points); sac.setTargetFeatures (target_descriptors); Align input to target to obtain sac.align (aligned_cloud); Eigen::Matrix4f transformation = sac. getFinalTransformation (); Dirk Holz / PCL :: Registration
  • 17. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Example/Tutorial Code (1/5) Initial alignment of point clouds 1 pcl::SampleConsensusInitialAlignment<PointT, PointT, DescriptorT> sac; 2 sac.setMinSampleDistance (min_sample_distance); 3 sac.setMaxCorrespondenceDistance ( max_correspondence_distance); 4 sac.setMaximumIterations (nr_iterations); 5 6 sac.setInputCloud (source_points); 7 sac.setSourceFeatures (source_descriptors); 8 9 sac.setInputTarget (target_points); 10 sac.setTargetFeatures (target_descriptors); 11 12 PointCloudPtr aligned_source(new PointCloud); 13 sac.align (*aligned_source); 14 Eigen::Matrix4f initial_T = sac.getFinalTransformation ()); Dirk Holz / PCL :: Registration
  • 18. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Example Code (2/5) Refining initial alignments using ICP 1 pcl::IterativeClosestPoint<PointT, PointT> icp; 2 icp.setMaxCorrespondenceDistance (distance); 3 icp.setRANSACOutlierRejectionThreshold (distance); 4 icp.setTransformationEpsilon (transformation_epsilon); 5 icp.setMaximumIterations (max_iterations); 6 7 icp.setInputCloud (aligned_source); // from (1) 8 icp.setInputTarget (target_points); 9 10 PointCloud registration_output; 11 icp.align (registration_output); 12 13 Eigen::Matrix4f refined_T = 14 icp.getFinalTransformation () * initial_T); Dirk Holz / PCL :: Registration
  • 19. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Example Code (3/5) Example: Correspondences in initial alignment $ ./correspondence_viewer ../../data/robot/robot0 ../../data/robot/robot1 -n 5 Dirk Holz / PCL :: Registration
  • 20. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Example Code (4/5) Example: Initial alignment + refinement $ ./test_registration ../../data/robot/robot0 ../../ data/robot/robot1 -i 0.025,0.01,500 -r 0.05,0.05,0,100 Dirk Holz / PCL :: Registration
  • 21. Registration Iterative Closest Points (ICP) Initial Alignment Example/Tutorial Code Example Code (5/5) Example: Final model = robot0 + robot1 $ ./test_registration ... -s robot_registered.pcd $ pcd_viewer robot_registered.pcd Dirk Holz / PCL :: Registration