public void Translation_Horn() { Reset(); IterativeClosestPointTransform.ICPVersion = ICP_VersionUsed.Horn; meanDistance = ICPTestData.Test1_Translation(ref verticesTarget, ref verticesSource, ref verticesResult); Assert.IsTrue(ICPTestData.CheckResult(verticesTarget, verticesResult, 1e-10)); }
public void Scale_AllAxes_Du() { IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Du; IterativeClosestPointTransform.Instance.ICPSettings.FixedTestPoints = true; meanDistance = ICPTestData.Test3_Scale(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); Assert.IsTrue(this.threshold > meanDistance); }
public void RotationXYZ_Zinsser() { IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Zinsser; IterativeClosestPointTransform.Instance.ICPSettings.FixedTestPoints = true; meanDistance = ICPTestData.Test2_RotationXYZ(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); Assert.IsTrue(this.threshold > meanDistance); }
public void Cube_RotateTranslate_ScaleUniform_Du() { this.icp.Settings_Reset_GeometricObject(); IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Du; meanDistance = ICPTestData.Test5_CubeRotateTranslate_ScaleUniform(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); Assert.IsTrue(this.threshold > meanDistance); }
public void Prespective_Zinsser() { IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Zinsser; IterativeClosestPointTransform.Instance.ICPSettings.FixedTestPoints = true; meanDistance = ICPTestData.Test9_Inhomogenous(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); this.ShowResultsInWindow_CubeLines(false); CheckResult_MeanDistance(1e-3f); }
public void Scale_Umeyama() { IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Umeyama; IterativeClosestPointTransform.Instance.ICPSettings.FixedTestPoints = true; meanDistance = ICPTestData.Test3_Scale(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); Performance_Stop("Scale_Umeyama");//7 miliseconds on i3_2121 (3.3 GHz) Assert.IsTrue(this.threshold > meanDistance); }
public void Scale_AllAxes_Du() { Reset(); IterativeClosestPointTransform.ICPVersion = ICP_VersionUsed.Scaling_Du; IterativeClosestPointTransform.FixedTestPoints = true; meanDistance = ICPTestData.Test3_Scale(ref verticesTarget, ref verticesSource, ref verticesResult); Assert.IsTrue(ICPTestData.CheckResult(verticesTarget, verticesResult, 1e-10)); }
public void Zinsser() { this.icp.Reset_RealData(); IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Zinsser; meanDistance = ICPTestData.Test7_Face_KnownTransformation_15000(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); Show3PointCloudsInWindow(false); CheckResult_MeanDistance(1e-7f); }
public void RotationXYZ_Horn() { IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Horn; IterativeClosestPointTransform.Instance.ICPSettings.FixedTestPoints = true; meanDistance = ICPTestData.Test2_RotationXYZ(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); //this.ShowResultsInWindowIncludingLines(false); Assert.IsTrue(this.threshold > meanDistance); }
public void RotationXYZ_Zinsser() { Reset(); IterativeClosestPointTransform.ICPVersion = ICP_VersionUsed.Scaling_Zinsser; IterativeClosestPointTransform.FixedTestPoints = true; meanDistance = ICPTestData.Test2_RotationXYZ(ref verticesTarget, ref verticesSource, ref verticesResult); Assert.IsTrue(ICPTestData.CheckResult(verticesTarget, verticesResult, 1e-10)); }
public void Scale_Horn() { Reset(); IterativeClosestPointTransform.ICPVersion = ICP_VersionUsed.Horn; IterativeClosestPointTransform.FixedTestPoints = true; meanDistance = ICPTestData.Test3_Scale(ref verticesTarget, ref verticesSource, ref verticesResult); //this.ShowResultsInWindowIncludingLines(false); Assert.IsTrue(ICPTestData.CheckResult(verticesTarget, verticesResult, 1e-10)); }
public void Translation_Zinsser() { IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Zinsser; meanDistance = ICPTestData.Test1_Translation(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); if (!(this.threshold > meanDistance)) { System.Diagnostics.Debug.WriteLine("Translation Zinsser failed"); Assert.Fail("Translation Zinsser failed"); } }
public void Zinsser() { Reset(); SettingsRealData(); IterativeClosestPointTransform.ICPVersion = ICP_VersionUsed.Scaling_Zinsser; meanDistance = ICPTestData.Test7_Face_KnownTransformation(ref verticesTarget, ref verticesSource, ref verticesResult); ShowResultsInWindow(false); CheckResult_MeanDistance(1e-10); }
public void Outliers_CubeTranslate_NotGood() { IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Horn; IterativeClosestPointTransform.Instance.ICPSettings.MaximumNumberOfIterations = 10; meanDistance = ICPTestData.Test8_CubeOutliers_Translate(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); this.ShowResultsInWindow_CubeLines(false); Assert.IsTrue(1e-3f > PointCloud.MeanDistance(pointCloudTarget, pointCloudResult)); }
public void Prespective_Zinsser() { Reset(); IterativeClosestPointTransform.ICPVersion = ICP_VersionUsed.Scaling_Zinsser; IterativeClosestPointTransform.FixedTestPoints = true; meanDistance = ICPTestData.Test9_Inhomogenous(ref verticesTarget, ref verticesSource, ref verticesResult); this.ShowResultsInWindow_CubeLines(false); CheckResult_MeanDistance(1e-3); }
public void Umeyama_New() { this.icp.Reset_RealData(); IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Umeyama; meanDistance = ICPTestData.Test6_Bunny_ExpectedError(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); Show3PointCloudsInWindow(true); CheckResult_MeanDistance(1e-3f); }
public void Cube_RotateScaleTranslate_KDTreeBruteForce() { IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Du; this.icp.ICPSettings.ResetVector3ToOrigin = true; meanDistance = ICPTestData.Test5_CubeRotateTranslate_ScaleUniform(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); this.ShowResultsInWindow_CubeLines(false); // Assert.IsTrue(this.threshold > meanDistance); }
public void Translation_Zinsser() { Reset(); IterativeClosestPointTransform.ICPVersion = ICP_VersionUsed.Scaling_Zinsser; meanDistance = ICPTestData.Test1_Translation(ref verticesTarget, ref verticesSource, ref verticesResult); if (!ICPTestData.CheckResult(verticesTarget, verticesResult, 1e-10)) { System.Diagnostics.Debug.WriteLine("Translation Zinsser failed"); Assert.Fail("Translation Zinsser failed"); } }
public void Umeyama() { Reset(); SettingsRealData(); IterativeClosestPointTransform.ICPVersion = ICP_VersionUsed.Scaling_Umeyama; meanDistance = ICPTestData.Test6_Bunny(ref verticesTarget, ref verticesSource, ref verticesResult); ShowResultsInWindow(true); CheckResult_MeanDistance(1e-3); }
public void Cube_ScaleInhomogenous_Horn() { this.icp.Settings_Reset_GeometricObject(); IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Horn; meanDistance = ICPTestData.Test5_CubeScale_Inhomogenous(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); this.ShowResultsInWindow_CubeLines(true); CheckResult_MeanDistance(this.threshold); }
public void Translation_Umeyama() { IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Umeyama; meanDistance = ICPTestData.Test1_Translation(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); //have to check why Umeyama is not exact to e-10 - perhaps because of diagonalization lib (for the scale factor) if (!(this.threshold > meanDistance)) { System.Diagnostics.Debug.WriteLine("Translation Umeyama failed"); Assert.Fail("Translation Umeyama failed"); } }
public void Du() { this.icp.Reset_RealData(); IterativeClosestPointTransform.Instance.ICPSettings.MaximumNumberOfIterations = 100; IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Du; meanDistance = ICPTestData.Test9_Face_Stitch(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); Show3PointCloudsInWindow(true); Assert.IsTrue(1e-3f > PointCloud.MeanDistance(pointCloudTarget, pointCloudResult)); }
public void Face_NormalsCheck() { IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Horn; IterativeClosestPointTransform.Instance.ICPSettings.MaximumNumberOfIterations = 10; this.icp.ICPSettings.Normal_RemovePoints = true; meanDistance = ICPTestData.Test9_Face_Stitch(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); Show3PointCloudsInWindow(false); Assert.IsTrue(1e-3f > PointCloud.MeanDistance(pointCloudTarget, pointCloudResult)); }
public void Translation_Umeyama() { Reset(); IterativeClosestPointTransform.ICPVersion = ICP_VersionUsed.Scaling_Umeyama; meanDistance = ICPTestData.Test1_Translation(ref verticesTarget, ref verticesSource, ref verticesResult); //have to check why Umeyama is not exact to e-10 - perhaps because of diagonalization lib (for the scale factor) if (!ICPTestData.CheckResult(verticesTarget, verticesResult, 1e-5)) { System.Diagnostics.Debug.WriteLine("Translation Umeyama failed"); Assert.Fail("Translation Umeyama failed"); } }
public void Cube8_TranslateRotateShuffle() { this.icp.Settings_Reset_GeometricObject(); IterativeClosestPointTransform.Instance.ICPSettings.FixedTestPoints = false; meanDistance = ICPTestData.Test10_Cube8pRotateTranslateShuffle(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult, cubeSizeX); this.ShowResultsInWindow_Cube(true); CheckResult_MeanDistance(1e-7f); }
public void Cube_ScaleInhomogenous_Du() { Reset(); IterativeClosestPointTransform.ICPVersion = ICP_VersionUsed.Scaling_Du; IterativeClosestPointTransform.FixedTestPoints = true; meanDistance = ICPTestData.Test5_CubeScale_Inhomogenous(ref verticesTarget, ref verticesSource, ref verticesResult); this.ShowResultsInWindow_CubeLines(false); // Assert.IsTrue(ICPTestData.CheckResult(verticesTarget, verticesResult, 1e-10)); }
public void Cube_ScaleInhomogenous_Du() { this.icp.Settings_Reset_GeometricObject(); IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Du; meanDistance = ICPTestData.Test5_CubeScale_Inhomogenous(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); this.ShowResultsInWindow_CubeLines(false); // Assert.IsTrue(this.threshold > meanDistance); }
public void Outliers_CubeRotate() { IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Horn; IterativeClosestPointTransform.Instance.ICPSettings.MaximumNumberOfIterations = 10; this.icp.ICPSettings.SimulatedAnnealing = true; meanDistance = ICPTestData.Test8_CubeOutliers_Rotate(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); Show3PointCloudsInWindow(true); Assert.IsTrue(2e-1f < PointCloud.MeanDistance(pointCloudTarget, pointCloudResult)); }
public void Translation_Horn_Old() { IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Horn; meanDistance = ICPTestData.Test1_Translation(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); Assert.IsTrue(this.threshold > meanDistance); TestForm fOTK = new TestForm(); fOTK.Show3PointClouds(pointCloudSource, pointCloudTarget, pointCloudResult, true); fOTK.ShowDialog(); }
public void Umeyama_SA() { this.icp.Reset_RealData(); IterativeClosestPointTransform.Instance.ICPSettings.ICPVersion = ICP_VersionUsed.Umeyama; IterativeClosestPointTransform.Instance.ICPSettings.SimulatedAnnealing = true; meanDistance = ICPTestData.Test9_Face_Stitch(ref pointCloudTarget, ref pointCloudSource, ref pointCloudResult); Show3PointCloudsInWindow(true); Assert.IsTrue(1e-3f > PointCloud.MeanDistance(pointCloudTarget, pointCloudResult)); }