public void SetupSolve(CalibrationInfo ci, bool useConstraints, bool radialDistortion) { foreach (ProjectorEntry pe in ci.Projectors) { SolveProjector sp = new SolveProjector(pe, ci.DomeSize, ci.ScreenType == ScreenTypes.FishEye ? ProjectionType.FishEye : ProjectionType.Projector, ScreenTypes.Spherical, ci.ScreenType == ScreenTypes.FishEye ? SolveParameters.FishEye : (SolveParameters)ci.SolveParameters); sp.RadialDistorion = radialDistortion; projectors.Add(sp); if (useConstraints) { foreach (GroundTruthPoint gt in pe.Constraints) { SolveList.Add(new Constraint(sp, gt)); } } } foreach (Edge edge in ci.Edges) { foreach (EdgePoint pnt in edge.Points) { SolveList.Add(new Coorespondence(projectors[edge.Left - 1], projectors[edge.Right - 1], pnt)); } } foreach (SolveProjector sp in projectors) { regressionParameters.AddRange(sp.Parameters); } int count = SolveList.Count; double[,] data = new double[2, count]; for (int i = 0; i < count; i++) { data[0, i] = i; data[1, i] = 0; } Parameter[] observed = new Parameter[] { ParmeterIndex }; lm = new LevenbergMarquardt(new functionDelegate(SolveFunction), regressionParameters.ToArray(), observed, data); }
public void SetupSolve(CalibrationInfo ci, bool useConstraints, bool radialDistortion) { foreach (var pe in ci.Projectors) { var sp = new SolveProjector(pe, ci.DomeSize, ci.ScreenType == ScreenTypes.FishEye ? ProjectionType.FishEye : ProjectionType.Projector, ScreenTypes.Spherical, ci.ScreenType == ScreenTypes.FishEye ? SolveParameters.FishEye : (SolveParameters)ci.SolveParameters) { RadialDistorion = radialDistortion }; projectors.Add(sp); if (useConstraints) { foreach (var gt in pe.Constraints) { SolveList.Add(new Constraint(sp, gt)); } } } foreach (var edge in ci.Edges) { foreach (var pnt in edge.Points) { SolveList.Add( new Coorespondence(projectors[edge.Left-1],projectors[edge.Right-1],pnt)); } } foreach (var sp in projectors) { regressionParameters.AddRange(sp.Parameters); } var count = SolveList.Count; var data = new double[2, count]; for (var i = 0; i < count; i++) { data[0, i] = i; data[1, i] = 0; } var observed = new[] { ParmeterIndex }; lm = new LevenbergMarquardt(SolveFunction, regressionParameters.ToArray(), observed, data); }
public void SetupSolve(CalibrationInfo ci, bool useConstraints, bool radialDistortion) { foreach (ProjectorEntry pe in ci.Projectors) { SolveProjector sp = new SolveProjector(pe, ci.DomeSize, ci.ScreenType == ScreenTypes.FishEye ? ProjectionType.FishEye : ProjectionType.Projector, ScreenTypes.Spherical, ci.ScreenType == ScreenTypes.FishEye ? SolveParameters.FishEye : (SolveParameters)ci.SolveParameters); sp.RadialDistorion = radialDistortion; projectors.Add(sp); if (useConstraints) { foreach (GroundTruthPoint gt in pe.Constraints) { SolveList.Add(new Constraint(sp, gt)); } } } foreach (Edge edge in ci.Edges) { foreach (EdgePoint pnt in edge.Points) { SolveList.Add( new Coorespondence(projectors[edge.Left-1],projectors[edge.Right-1],pnt)); } } foreach (SolveProjector sp in projectors) { regressionParameters.AddRange(sp.Parameters); } int count = SolveList.Count; double[,] data = new double[2, count]; for (int i = 0; i < count; i++) { data[0, i] = i; data[1, i] = 0; } Parameter[] observed = new Parameter[] { ParmeterIndex }; lm = new LevenbergMarquardt(new functionDelegate(SolveFunction), regressionParameters.ToArray(), observed, data); }
private void OpenConfigFile(string fileName) { try { var serializer = new XmlSerializer(typeof(CalibrationInfo)); var fs = new FileStream(fileName, FileMode.Open); CalibrationInfo = (CalibrationInfo)serializer.Deserialize(fs); fs.Close(); CalibrationInfo.SyncLookupsAndOwners(); ReloadListBox(); Properties.Settings.Default.LastDomeConfigFile = fileName; } catch { UiTools.ShowMessageBox(Language.GetLocalizedText(697, "Could not open the file. Ensure it is a valid WorldWide Telescope configuration file."), Language.GetLocalizedText(698, "Open Configuration File")); } }