private void Clouds_ICP() { if (!GetFirstTwoCloudsFromOpenGLControl()) { return; } //------------------ //ICP ICPLib.IterativeClosestPointTransform icp = new ICPLib.IterativeClosestPointTransform(); icp.Reset_RealData(); icp.ICPSettings.ICPVersion = ICP_VersionUsed.Zinsser; icp.ICPSettings.MaximumNumberOfIterations = 50; PointCloud pointCloudResult = icp.PerformICP(this.pSource, this.pTarget); pointCloudResult.AddPointCloud(this.pTarget); SaveResultCloudAndShow(pointCloudResult); this.registrationMatrix = icp.Matrix; registrationMatrix.Save(GLSettings.Path + GLSettings.PathPointClouds, "registrationMatrix.txt"); }
private void Clouds_AlignPCAAxes() { if (!GetFirstTwoCloudsFromOpenGLControl()) { return; } PointCloud pointCloudTarget = this.pSource; pointCloudTarget = PCA.RotateToOriginAxes(pointCloudTarget); PointCloud pointCloudSource = this.pTarget; PointCloud pointCloudResult = PCA.RotateToOriginAxes(pointCloudSource); pResult = pointCloudResult; //pResult.SetColor(new OpenTK.Vector3(1, 0, 0)); pointCloudResult.AddPointCloud(this.pTarget); SaveResultCloudAndShow(pointCloudResult); //DisplayResultPointCloud(); //DisplayObjects(); }
private void Clouds_PCA() { if (!GetFirstTwoCloudsFromOpenGLControl()) { return; } PCA pca = new PCA(); pca.MaxmimumIterations = 1; PointCloud pointCloudResult = pca.AlignPointClouds_SVD(this.pSource, this.pTarget); pointCloudResult.AddPointCloud(this.pTarget); SaveResultCloudAndShow(pointCloudResult); this.registrationMatrix = pca.Matrix; registrationMatrix.Save(GLSettings.Path + GLSettings.PathPointClouds, "registrationMatrix.txt"); }